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

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


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

什么是Pipelines

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

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

Pipelines实现原理

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

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上的模型

首先进去模型主页

Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)_huggingfacepipeline
左手边是模型的任务类型 ,可以选择类型然后找到对应的模型

进去模型页面

如下图,进去模型页面后按步骤点击:
Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)_huggingfacepipeline
可以看到使用transformers调用的代码:
Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)_huggingfacepipeline

实例

Text classification(文本分类)

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

情感分析:根据某种极性(如积极或消极)对文本进行标记,以在政治、金融和市场等地方支持决策制定。
内容分类:根据某个主题对文本进行标记,以帮助组织和过滤新闻和社交媒体信息流中的信息(天气、体育、金融等)。

from transformers import pipelinetext_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对于帮助翻译系统了解两个相同的单词如何在语法上不同很有用(作为名词的银行与作为动词的银行)。

from transformers import pipelineclassifier = pipeline(task=\"ner\")

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

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\")

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

classifier = pipeline(task=\"ner\", grouped_entities=True)classifier(\"Hugging Face is a French company based in New York City.\")

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

Question Answering(问答)

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

有两种常见的问答类型:

提取式:给定一个问题和一些上下文,模型必须从上下文中提取出一段文字作为答案,例如:QuestionAnsweringPipeline
生成式:给定一个问题和一些上下文,答案是根据上下文生成的;这种方法由Text2TextGenerationPipeline处理

from transformers import pipelinequestion_answerer = pipeline (task = \"question-answering\")

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

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)

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

Summarization(文本摘要)

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

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

提取式:从原始文本中识别和提取最重要的句子
生成式:从原始文本中生成目标摘要(可能包括输入文件中没有的新单词);SummarizationPipeline使用生成式方法

from transformers import pipelinesummarizer = pipeline ( task = \"summarization\", model = \"t5-base\", min_length = 8, max_length = 32,)

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

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.\")

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

Audio classification(音频分类)

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

声学场景分类:使用场景标签(“办公室”、“海滩”、“体育场”)对音频进行标记。
声学事件检测:使用声音事件标签(“汽车喇叭声”、“鲸鱼叫声”、“玻璃破碎声”)对音频进行标记。
标记:对包含多种声音的音频进行标记(鸟鸣、会议中的说话人识别)。
音乐分类:使用流派标签(“金属”、“嘻哈”、“乡村”)对音乐进行标记。
情感识别(ER)为每个话语预测一个情感类别。我们采用了最广泛使用的ER数据集IEMOCAP,并遵循传统的评估协议:我们删除不平衡的情感类别,只保留最后四个具有相似数量数据点的类别,并在标准分割的五折交叉验证上进行评估。评估指标是准确率(ACC)。
在使用前要确保 已经安装了音频数据处理包:ffmpeg

$apt update & apt upgrade$apt install -y ffmpeg$pip install ffmpeg ffmpeg-python
from transformers import pipelineclassifier = pipeline(task=\"audio-classification\", model=\"superb/hubert-base-superb-er\")

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

preds = classifier(\"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac\") preds

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

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

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

from transformers import pipelinetranscriber = pipeline( task = \"automatic-speech-recognition\", model = \"openai/whisper-small\")

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

preds = transcriber(\"https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac\") preds

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

Image Classificaiton(图像分类)

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

  • 医疗保健:标记医学图像以检测疾病或监测患者健康状况
  • 环境:标记卫星图像以监测森林砍伐、提供野外管理信息或检测野火
  • 农业:标记农作物图像以监测植物健康或用于土地使用监测的卫星图像
  • 生态学:标记动物或植物物种的图像以监测野生动物种群或跟踪濒危物种
from transformers import pipelineclassifier = pipeline( task = \"image-classification\" ) 

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

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\")

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

Object Detection(目标检测)

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

自动驾驶车辆:检测日常交通对象,如其他车辆、行人和红绿灯
遥感:灾害监测、城市规划和天气预报
缺陷检测:检测建筑物中的裂缝或结构损坏,以及制造业产品缺陷

from transformers import pipelinedetector = pipeline (task = \"object-detection\")

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

preds = detector (\"https://inews.gtimg.com/om_bt/ORUA2A1fXPkHl_u6JYOzHphTFd6OLaF4Kaofdc1Bc9DUAAA/1000\")print(*preds, sep = \"\\n\")

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