pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型
今天介绍多模态的第二篇:特征抽取(feature-extraction),在huggingface库内有1万个文档特征抽取(feature-extraction)模型。
特征抽取(feature-extraction)用途非常广泛,指将文本、语音、图片、视频抽帧等多模态内容向量化,在内容相似比对、推荐模型、迁移学习、检索排序、RAG等场景非常常用。
BART(Bidirectional and Auto-Regressive Transformers),一种用于预训练序列到序列模型的去噪自动编码器。BART 的训练方式是 (1) 使用任意噪声函数破坏文本,以及 (2) 学习模型以重建原始文本。它使用基于标准 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是 BERT(由于双向编码器)、GPT(使用从左到右的解码器)和许多其他较新的预训练方案的泛化。
str
或ModelCard
,可选) — 属于此管道模型的模型卡。str
,可选)— 要使用的框架,"pt"
适用于 PyTorch 或"tf"
TensorFlow。必须安装指定的框架。str
,默认为""
)— 管道的任务标识符。int
,可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。int
,可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。int
,可选,默认为 -1)— CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.device
或str
太str
或torch.dtype
,可选) - 直接发送model_kwargs
(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16
,,torch.bfloat16
...或"auto"
)dict
,可选) - 传递给标记器 (tokenizer) 的关键字参数的附加词典。bool
,可选) — 如果True
,则根据指定的框架返回一个张量,否则返回一个列表。str
或List[str]
)—— 要获取特征的一个或多个文本(或一个文本列表)。 基于pipeline的特征抽取(feature-extraction)任务,采用facebook/bart-base进行文本特征抽取,代码如下:
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline
feature_extractor = pipeline("feature-extraction", framework="pt", model="facebook/bart-base")
text = "Transformers is an awesome library!"
output=feature_extractor(text,return_tensors = "pt")
print(output)
执行后,自动下载模型文件并进行识别:
在huggingface上,我们将文本特征抽取(feature-extraction)模型按下载量从高到低排序,总计1万个模型,bart排名第三。
本文对transformers之pipeline的文本特征抽取(feature-extraction)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用多模态中的文本特征抽取(feature-extraction)模型。