当前位置: 首页 > article >正文

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

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

什么是Pipelines

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

在这里插入图片描述

Pipelines实现原理

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

Pipelines 参数

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

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

首先进去模型主页

在这里插入图片描述
左手边是模型的任务类型 ,可以选择类型然后找到对应的模型

进去模型页面

如下图,进去模型页面后按步骤点击:
在这里插入图片描述
可以看到使用transformers调用的代码:
在这里插入图片描述

实例

Text classification(文本分类)

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

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

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

from transformers import pipeline

classifier = pipeline(task="ner")

在这里插入图片描述

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

在这里插入图片描述
合并实体:

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处理

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

在这里插入图片描述

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使用生成式方法

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

在这里插入图片描述

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

$apt update & apt upgrade
$apt install -y ffmpeg
$pip install ffmpeg ffmpeg-python
from transformers import pipeline

classifier = pipeline(task="audio-classification", model="superb/hubert-base-superb-er")

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

Image Classificaiton(图像分类)

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

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

在这里插入图片描述

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(目标检测)

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

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

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

在这里插入图片描述

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

在这里插入图片描述


http://www.kler.cn/a/581971.html

相关文章:

  • 第十一届蓝桥杯单片机国赛
  • 最后一个单词的长度(js实现,LeetCode58)
  • 简单工厂 、工厂方法模式和抽象工厂模式
  • Spring-事务
  • Qt测试程序经过的时间
  • UI自动化:Python + Selenium4.6以前的版本 环境搭建
  • 熬夜肝,如何免邀请码使用Manus(全套教程)
  • Vite为什么选用Rollup打包?
  • 开源数字人模型Heygem
  • Matlab中快速查找元素索引号
  • 涨薪技术|Kubernetes(k8s)之Service服务类型
  • Epoch 和 Batch Size的设计 + 模型的早停策略(基于上篇)
  • 物联网中如何增加其可扩展性 协议 网络 设备 还包括软件层面上的
  • 内存检测工具——Qt Creator
  • 2.装饰器模式
  • 基于深度学习的医学图像分割算法研究——结合MRI/CT图像的肿瘤区域自动分割与三维重建
  • STM32全系大阅兵(2)
  • rust语言match模式匹配涉及转移所有权Error Case
  • Flutter中stream学习
  • 【threejs实战教程一】初识Three.js,场景Scene、相机Camera、渲染器Renderer