Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)

如果电脑配置不够可以参考文章《学AI-撸羊毛-免费GPU服务器-kaggle-每周30小时-可以进行数据训练,大模型微调》 申请免费服务器执行代码。

什么是Pipelines

  • 将数据预处理、模型调用、结果后处理三部分组装成的流水线
  • 使我们能够直接输入文本便获得最终的答案

Pipelines实现原理

Pipeline类的实现原理,是将多个模型串联起来,形成一个NLP任务的流水线。在流水线的不同位置,使用不同的模型完成不同的子任务。具体而言,Pipeline类将用户输入的文本进行预处理,然后使用预训练模型进行特征提取、模型训练和推理,最终得出任务的结果。Pipeline类支持的任务种类非常广泛,包括但不限于文本分类、命名实体识别、情感分析、问答系统等。

Pipelines 参数

参数名 类型 含义 说明
task str 定义任务类型 常见任务类型: "text-classification": 文本分类任务(如情感分析、主题分类)。 "ner": 命名实体识别(Named Entity Recognition)。 "sentiment-analysis": 情感分析。 "summarization": 文本摘要。 "question-answering": 问答任务。 "zero-shot-classification": 零样本分类。 "translation": 翻译任务。 "text-generation": 文本生成。 "fill-mask": 填空任务(如 Masked Language Model)。 其他任务类型根据模型的不同也有所不同。
model PreTrainedModel 要加载的预训练模型,通常是通过 AutoModelFor 类来加载。例如,AutoModelForSequenceClassification 用于文本分类任务。 你可以直接提供 model 参数,或从 from_pretrained() 方法加载模型。
tokenizer PreTrainedTokenizer 与模型匹配的分词器,用于将文本转换为模型可以理解的输入格式(如 input_ids) 可以通过 AutoTokenizer.from_pretrained 来加载对应模型的分词器。
device int 或 str 设备 ID,用于选择计算设备。 -1 表示使用 CPU。 0 表示使用第一个 GPU。如果系统中有多个 GPU,可以指定为其他数值(如 1 为第二个 GPU,2 为第三个 GPU)。 "cuda" 或 "cpu" 也可以作为参数指定设备。 说明: 如果设备选择的是 GPU,需要确保系统已安装 CUDA 并配置正确。
framework str 模型使用的框架类型。支持 pt(PyTorch)和 tf(TensorFlow)。 说明: 如果不指定,pipeline 会自动根据加载的模型推断框架类型。 如果不指定,pipeline 会自动根据加载的模型推断框架类型。
batch_size int 批处理大小,表示一次处理多少样本。 默认情况下会根据硬件自动选择批量大小,设置 batch_size 可以帮助提高效率,尤其在有多个输入时。
num_return_sequences int 生成返回条数 默认:1
max_length int 设置文本生成的最大长度

如何快速使用Hugging Face上的模型

首先进去模型主页

左手边是模型的任务类型 ,可以选择类型然后找到对应的模型

进去模型页面

如下图,进去模型页面后按步骤点击:

可以看到使用transformers调用的代码:

实例

Text classification(文本分类)

Text classification(文本分类)与任何模态中的分类任务一样,文本分类将一个文本序列(可以是句子级别、段落或者整篇文章)标记为预定义的类别集合之一。文本分类有许多实际应用,其中包括:

情感分析:根据某种极性(如积极或消极)对文本进行标记,以在政治、金融和市场等领域支持决策制定。

内容分类:根据某个主题对文本进行标记,以帮助组织和过滤新闻和社交媒体信息流中的信息(天气、体育、金融等)。

python 复制代码
from transformers import pipeline
text_classification = pipeline('sentiment-analysis', model="uer/roberta-base-finetuned-dianping-chinese")
text_classification("北京上个月召开了两会")

在这里插入图片描述

Token Classification(Token分类)

在任何NLP任务中,文本都经过预处理,将文本序列分成单个单词或子词。这些被称为tokens。

Token Classification(Token分类)将每个token分配一个来自预定义类别集的标签。

两种常见的 Token 分类是:

命名实体识别(NER):根据实体类别(如组织、人员、位置或日期)对token进行标记。NER在生物医学设置中特别受欢迎,可以标记基因、蛋白质和药物名称。

词性标注(POS):根据其词性(如名词、动词或形容词)对标记进行标记。POS对于帮助翻译系统了解两个相同的单词如何在语法上不同很有用(作为名词的银行与作为动词的银行)。

python 复制代码
from transformers import pipeline

classifier = pipeline(task="ner")
python 复制代码
preds = classifier("Hugging Face is a French company based in New York City.")
preds = [
    {
        "entity": pred["entity"],
        "score": round(pred["score"], 4),
        "index": pred["index"],
        "word": pred["word"],
        "start": pred["start"],
        "end": pred["end"],
    }
    for pred in preds
]
print(*preds, sep="\n")

合并实体:

python 复制代码
classifier = pipeline(task="ner", grouped_entities=True)
classifier("Hugging Face is a French company based in New York City.")

Question Answering(问答)

Question Answering(问答)是另一个token-level的任务,返回一个问题的答案,有时带有上下文(开放领域),有时不带上下文(封闭领域)。每当我们向虚拟助手提出问题时,例如询问一家餐厅是否营业,就会发生这种情况。它还可以提供客户或技术支持,并帮助搜索引擎检索您要求的相关信息。

有两种常见的问答类型:

提取式:给定一个问题和一些上下文,模型必须从上下文中提取出一段文字作为答案,例如:QuestionAnsweringPipeline

生成式:给定一个问题和一些上下文,答案是根据上下文生成的;这种方法由Text2TextGenerationPipeline处理

python 复制代码
from transformers import pipeline
question_answerer = pipeline (task = "question-answering")
python 复制代码
preds = question_answerer(
    question="What is the capital of China?",
    context="On 1 October 1949, CCP Chairman Mao Zedong formally proclaimed the People's Republic of China in Tiananmen Square, Beijing.",
)
print(preds)

Summarization(文本摘要)

Summarization(文本摘要)从较长的文本中创建一个较短的版本,同时尽可能保留原始文档的大部分含义。摘要是一个序列到序列的任务;它输出比输入更短的文本序列。有许多长篇文档可以进行摘要,以帮助读者快速了解主要要点。法案、法律和财务文件、专利和科学论文等文档可以摘要,以节省读者的时间并作为阅读辅助工具。

与问答类似,摘要有两种类型:

提取式:从原始文本中识别和提取最重要的句子

生成式:从原始文本中生成目标摘要(可能包括输入文件中没有的新单词);SummarizationPipeline使用生成式方法

python 复制代码
from transformers import pipeline
summarizer = pipeline (
    task = "summarization",
    model = "t5-base",
    min_length = 8,
    max_length = 32,
)
python 复制代码
summarizer("On your Kaggle journey, we mark certain milestones with tiers. Everyone starts as a "Novice," but with these four actions, you can get better oriented with Kaggle and move up to the Contributor tier.")

Audio classification(音频分类)

Audio classification(音频分类)是一项将音频数据从预定义的类别集合中进行标记的任务。这是一个广泛的类别,具有许多具体的应用,其中一些包括:

声学场景分类:使用场景标签("办公室"、"海滩"、"体育场")对音频进行标记。

声学事件检测:使用声音事件标签("汽车喇叭声"、"鲸鱼叫声"、"玻璃破碎声")对音频进行标记。

标记:对包含多种声音的音频进行标记(鸟鸣、会议中的说话人识别)。

音乐分类:使用流派标签("金属"、"嘻哈"、"乡村")对音乐进行标记。

情感识别(ER)为每个话语预测一个情感类别。我们采用了最广泛使用的ER数据集IEMOCAP,并遵循传统的评估协议:我们删除不平衡的情感类别,只保留最后四个具有相似数量数据点的类别,并在标准分割的五折交叉验证上进行评估。评估指标是准确率(ACC)。

在使用前要确保 已经安装了音频数据处理包:ffmpeg

bash 复制代码
$apt update & apt upgrade
$apt install -y ffmpeg
$pip install ffmpeg ffmpeg-python
python 复制代码
from transformers import pipeline

classifier = pipeline(task="audio-classification", model="superb/hubert-base-superb-er")
python 复制代码
preds = classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac") 
preds

Automatic speech recognition(ASR 自动语音识别)

Automatic speech recognition(自动语音识别)将语音转录为文本。这是最常见的音频任务之一,部分原因是因为语音是人类交流的自然形式。如今,ASR系统嵌入在智能技术产品中,如扬声器、电话和汽车。我们可以要求虚拟助手播放音乐、设置提醒和告诉我们天气。

python 复制代码
from transformers import pipeline
transcriber = pipeline( task = "automatic-speech-recognition", model = "openai/whisper-small")
python 复制代码
preds = transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac") 
preds

Image Classificaiton(图像分类)

Image Classificaiton(图像分类)将整个图像从预定义的类别集合中进行标记。像大多数分类任务一样,图像分类有许多实际用例,其中一些包括:

  • 医疗保健:标记医学图像以检测疾病或监测患者健康状况
  • 环境:标记卫星图像以监测森林砍伐、提供野外管理信息或检测野火
  • 农业:标记农作物图像以监测植物健康或用于土地使用监测的卫星图像
  • 生态学:标记动物或植物物种的图像以监测野生动物种群或跟踪濒危物种
python 复制代码
from transformers import pipeline
classifier = pipeline( task = "image-classification" ) 
python 复制代码
preds = classifier ("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")
preds = [{"score": round(pred["score"],4) , "label": pred["label"]} for pred in preds ]
print(*preds, sep = "\n")

Object Detection(目标检测)

与图像分类不同,目标检测在图像中识别多个对象以及这些对象在图像中的位置(由边界框定义)。目标检测的一些示例应用包括:

自动驾驶车辆:检测日常交通对象,如其他车辆、行人和红绿灯

遥感:灾害监测、城市规划和天气预报

缺陷检测:检测建筑物中的裂缝或结构损坏,以及制造业产品缺陷

python 复制代码
from transformers import pipeline
detector = pipeline (task = "object-detection")
python 复制代码
preds = detector ("https://inews.gtimg.com/om_bt/ORUA2A1fXPkHl_u6JYOzHphTFd6OLaF4Kaofdc1Bc9DUAAA/1000")
print(*preds, sep = "\n")
相关推荐
沸点小助手30 分钟前
Remote-SSH × 自定义模型 | Trae 体验活动 No.1
人工智能
꧁༺△再临ཊ࿈ཏTSC△༻꧂35 分钟前
【数码科技】文心一言4.0 VS DEEPSEEK V3
人工智能·文心一言
明月与玄武39 分钟前
AI把汽车变成“移动硅基生命体“
人工智能·汽车
阿噜噜小栈1 小时前
如何用AI制作我们记忆中的乡村夜景
人工智能·经验分享·笔记
ylfhpy1 小时前
Manus 演示案例:自动完成小说编写并生成最终 PDF 文档
人工智能·深度学习·机器学习·自然语言处理·manus
科菲科技1 小时前
引领未来,智享便捷——中世美达科技NFC+deepseek:开启智能生活新篇章
人工智能·科技·生活
皮皮虾12341 小时前
什么是AI?AI能对我们生活产生哪些影响?
人工智能·生活
jiemidashi1 小时前
科技创新:改变生活的力量与未来趋势
人工智能·经验分享·科技·生活
Archie_IT1 小时前
使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏
前端·人工智能·大模型·html·aigc·deepseek
码上飞扬1 小时前
深入解析AI PPT实现原理及用到的人工智能技术
人工智能·powerpoint·ai ppt