流水线
流水线是使用模型进行推理的一种出色且简单的方法。这些流水线是抽象了库中大部分复杂代码的对象,提供了一个简单的 API,专用于多个任务,包括命名实体识别、掩码语言建模、情感分析、特征提取和问答。有关使用示例,请参阅任务摘要。
需要注意两类流水线抽象
- pipeline()是最强大的对象,封装了所有其他流水线。
- 特定于任务的流水线可用于音频、计算机视觉、自然语言处理和多模态任务。
流水线抽象
流水线抽象是所有其他可用流水线的包装器。它像任何其他流水线一样实例化,但可以提供额外的生活质量。
对一项进行简单调用
>>> pipe = pipeline("text-classification")
>>> pipe("This restaurant is awesome")
[{'label': 'POSITIVE', 'score': 0.9998743534088135}]
如果要使用中心中的特定模型,如果中心上的模型已经定义了任务,则可以忽略该任务
>>> pipe = pipeline(model="FacebookAI/roberta-large-mnli")
>>> pipe("This restaurant is awesome")
[{'label': 'NEUTRAL', 'score': 0.7313136458396912}]
要对多个项目调用流水线,可以使用列表调用它。
>>> pipe = pipeline("text-classification")
>>> pipe(["This restaurant is awesome", "This restaurant is awful"])
[{'label': 'POSITIVE', 'score': 0.9998743534088135},
{'label': 'NEGATIVE', 'score': 0.9996669292449951}]
要迭代完整的数据集,建议直接使用 dataset
。这意味着您不需要一次性分配整个数据集,也不需要自己进行批处理。这应该与 GPU 上的自定义循环一样快。如果没有,请随时创建问题。
import datasets
from transformers import pipeline
from transformers.pipelines.pt_utils import KeyDataset
from tqdm.auto import tqdm
pipe = pipeline("automatic-speech-recognition", model="facebook/wav2vec2-base-960h", device=0)
dataset = datasets.load_dataset("superb", name="asr", split="test")
# KeyDataset (only *pt*) will simply return the item in the dict returned by the dataset item
# as we're not interested in the *target* part of the dataset. For sentence pair use KeyPairDataset
for out in tqdm(pipe(KeyDataset(dataset, "file"))):
print(out)
# {"text": "NUMBER TEN FRESH NELLY IS WAITING ON YOU GOOD NIGHT HUSBAND"}
# {"text": ....}
# ....
为了便于使用,也可以使用生成器
from transformers import pipeline
pipe = pipeline("text-classification")
def data():
while True:
# This could come from a dataset, a database, a queue or HTTP request
# in a server
# Caveat: because this is iterative, you cannot use `num_workers > 1` variable
# to use multiple threads to preprocess data. You can still have 1 thread that
# does the preprocessing while the main runs the big inference
yield "This is a test"
for out in pipe(data()):
print(out)
# {"text": "NUMBER TEN FRESH NELLY IS WAITING ON YOU GOOD NIGHT HUSBAND"}
# {"text": ....}
# ....
transformers.pipeline
< 源代码 >( task: str = None model: Union = None config: Union = None tokenizer: Union = None feature_extractor: Union = None image_processor: Union = None framework: Optional = None revision: Optional = None use_fast: bool = True token: Union = None device: Union = None device_map = None torch_dtype = None trust_remote_code: Optional = None model_kwargs: Dict = None pipeline_class: Optional = None **kwargs ) → 流水线
参数
- task (
str
) — 定义将返回哪个管道的任务。当前接受的任务有:"audio-classification"
:将返回一个 AudioClassificationPipeline。"automatic-speech-recognition"
:将返回一个 AutomaticSpeechRecognitionPipeline。"depth-estimation"
:将返回一个 DepthEstimationPipeline。"document-question-answering"
:将返回一个 DocumentQuestionAnsweringPipeline。"feature-extraction"
:将返回一个 FeatureExtractionPipeline。"fill-mask"
:将返回一个 FillMaskPipeline。"image-classification"
:将返回一个 ImageClassificationPipeline。"image-feature-extraction"
:将返回一个 ImageFeatureExtractionPipeline。"image-segmentation"
:将返回一个 ImageSegmentationPipeline。"image-to-image"
:将返回一个 ImageToImagePipeline。"image-to-text"
:将返回一个 ImageToTextPipeline。"mask-generation"
:将返回一个 MaskGenerationPipeline。"object-detection"
:将返回一个 ObjectDetectionPipeline。"question-answering"
:将返回一个 QuestionAnsweringPipeline。"summarization"
:将返回一个 SummarizationPipeline。"table-question-answering"
:将返回一个 TableQuestionAnsweringPipeline。"text2text-generation"
:将返回一个 Text2TextGenerationPipeline。"text-classification"
(可用别名"sentiment-analysis"
):将返回一个 TextClassificationPipeline。"text-generation"
:将返回一个 TextGenerationPipeline。"text-to-audio"
(可用别名"text-to-speech"
):将返回一个 TextToAudioPipeline。"token-classification"
(可用别名"ner"
):将返回一个 TokenClassificationPipeline。"translation"
:将返回一个 TranslationPipeline。"translation_xx_to_yy"
:将返回一个 TranslationPipeline。"video-classification"
:将返回一个 VideoClassificationPipeline。"visual-question-answering"
:将返回一个 VisualQuestionAnsweringPipeline。"zero-shot-classification"
:将返回一个 ZeroShotClassificationPipeline。"zero-shot-image-classification"
:将返回一个 ZeroShotImageClassificationPipeline。"zero-shot-audio-classification"
: 将返回一个 ZeroShotAudioClassificationPipeline。"zero-shot-object-detection"
: 将返回一个 ZeroShotObjectDetectionPipeline。
- model (
str
或 PreTrainedModel 或 TFPreTrainedModel, 可选) — 管道将用于进行预测的模型。这可以是模型标识符,也可以是继承自 PreTrainedModel(对于 PyTorch)或 TFPreTrainedModel(对于 TensorFlow)的预训练模型的实际实例。如果未提供,将加载
task
的默认值。 - config (
str
或 PretrainedConfig, 可选) — 管道将用于实例化模型的配置。这可以是模型标识符,也可以是继承自 PretrainedConfig 的实际预训练模型配置。如果未提供,将使用请求模型的默认配置文件。这意味着如果给定了
model
,将使用其默认配置。但是,如果未提供model
,则将使用此task
的默认模型的配置。 - tokenizer (
str
或 PreTrainedTokenizer,可选) — 流水线将用于为模型编码数据的分词器。这可以是模型标识符或继承自 PreTrainedTokenizer 的实际预训练分词器。如果未提供,将加载给定
model
的默认分词器(如果它是字符串)。如果未指定model
或不是字符串,则加载config
的默认分词器(如果它是字符串)。但是,如果也未给出config
或不是字符串,则将加载给定task
的默认分词器。 - feature_extractor (
str
或PreTrainedFeatureExtractor
,可选) — 流水线将用于为模型编码数据的特征提取器。这可以是模型标识符或继承自PreTrainedFeatureExtractor
的实际预训练特征提取器。特征提取器用于非 NLP 模型,例如语音或视觉模型以及多模态模型。多模态模型还需要传递分词器。
如果未提供,将加载给定
model
的默认特征提取器(如果它是字符串)。如果未指定model
或不是字符串,则加载config
的默认特征提取器(如果它是字符串)。但是,如果也未给出config
或不是字符串,则将加载给定task
的默认特征提取器。 - framework (
str
,可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,将默认使用当前安装的框架。如果未指定框架且安装了两个框架,将默认使用
model
的框架,如果未提供模型,则默认使用 PyTorch。 - revision (
str
,可选,默认为"main"
) — 传递任务名称或字符串模型标识符时:要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统在 huggingface.co 上存储模型和其他工件,因此revision
可以是 git 允许的任何标识符。 - use_fast (
bool
,可选,默认为True
) — 是否尽可能使用快速分词器(PreTrainedTokenizerFast)。 - use_auth_token (
str
或 bool,可选) — 用作远程文件 HTTP 持有者授权的令牌。如果为True
,将使用运行huggingface-cli login
生成的令牌(存储在~/.huggingface
中)。 - device (
int
或str
或torch.device
) — 定义将在其上分配此流水线的设备(*例如*,"cpu"
、"cuda:1"
、"mps"
或 GPU 序号等级,如1
)。 - device_map (
str
或Dict[str, Union[int, str, torch.device]
,*可选*) — 直接作为model_kwargs
发送(只是一个更简单的快捷方式)。当存在accelerate
库时,设置device_map="auto"
以自动计算最优化的device_map
(有关详细信息,请参见此处)。不要同时使用
device_map
和device
,因为它们会冲突 - torch_dtype (
str
或torch.dtype
,*可选*) — 直接作为model_kwargs
发送(只是一个更简单的快捷方式),以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
)。 - trust_remote_code (
bool
,*可选*,默认为False
) — 是否允许在其自己的建模、配置、标记化甚至流水线文件中使用 Hub 上定义的自定义代码。此选项仅应为你信任的并且你已阅读过代码的存储库设置为True
,因为它将在你的本地机器上执行 Hub 上存在的代码。 - model_kwargs (
Dict[str, Any]
,*可选*) — 传递给模型的from_pretrained(..., **model_kwargs)
函数的附加关键字参数字典。 - kwargs (
Dict[str, Any]
,*可选*) — 传递给特定流水线初始化的附加关键字参数(有关可能的值,请参阅相应流水线类的文档)。
返回值
适合该任务的流水线。
用于构建 流水线 的实用工厂方法。
流水线由以下部分组成
示例
>>> from transformers import pipeline, AutoModelForTokenClassification, AutoTokenizer
>>> # Sentiment analysis pipeline
>>> analyzer = pipeline("sentiment-analysis")
>>> # Question answering pipeline, specifying the checkpoint identifier
>>> oracle = pipeline(
... "question-answering", model="distilbert/distilbert-base-cased-distilled-squad", tokenizer="google-bert/bert-base-cased"
... )
>>> # Named entity recognition pipeline, passing in a specific model and tokenizer
>>> model = AutoModelForTokenClassification.from_pretrained("dbmdz/bert-large-cased-finetuned-conll03-english")
>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> recognizer = pipeline("ner", model=model, tokenizer=tokenizer)
流水线批处理
所有流水线都可以使用批处理。只要流水线使用其流式传输功能(因此在传递列表或 Dataset
或 generator
时),这就会起作用)。
from transformers import pipeline
from transformers.pipelines.pt_utils import KeyDataset
import datasets
dataset = datasets.load_dataset("imdb", name="plain_text", split="unsupervised")
pipe = pipeline("text-classification", device=0)
for out in pipe(KeyDataset(dataset, "text"), batch_size=8, truncation="only_first"):
print(out)
# [{'label': 'POSITIVE', 'score': 0.9998743534088135}]
# Exactly the same output as before, but the content are passed
# as batches to the model
然而,这并不一定意味着性能的提升。根据硬件、数据和实际使用的模型,它可能是 10 倍的加速或 5 倍的减速。
主要加速的例子
from transformers import pipeline
from torch.utils.data import Dataset
from tqdm.auto import tqdm
pipe = pipeline("text-classification", device=0)
class MyDataset(Dataset):
def __len__(self):
return 5000
def __getitem__(self, i):
return "This is a test"
dataset = MyDataset()
for batch_size in [1, 8, 64, 256]:
print("-" * 30)
print(f"Streaming batch_size={batch_size}")
for out in tqdm(pipe(dataset, batch_size=batch_size), total=len(dataset)):
pass
# On GTX 970
------------------------------
Streaming no batching
100%|██████████████████████████████████████████████████████████████████████| 5000/5000 [00:26<00:00, 187.52it/s]
------------------------------
Streaming batch_size=8
100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:04<00:00, 1205.95it/s]
------------------------------
Streaming batch_size=64
100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:02<00:00, 2478.24it/s]
------------------------------
Streaming batch_size=256
100%|█████████████████████████████████████████████████████████████████████| 5000/5000 [00:01<00:00, 2554.43it/s]
(diminishing returns, saturated the GPU)
主要减速的例子
class MyDataset(Dataset):
def __len__(self):
return 5000
def __getitem__(self, i):
if i % 64 == 0:
n = 100
else:
n = 1
return "This is a test" * n
与其他句子相比,这是一个偶尔出现的非常长的句子。在这种情况下,整个批次需要有 400 个标记的长度,因此整个批次将是 [64, 400] 而不是 [64, 4],从而导致严重的减速。更糟糕的是,在更大的批次上,程序会直接崩溃。
------------------------------
Streaming no batching
100%|█████████████████████████████████████████████████████████████████████| 1000/1000 [00:05<00:00, 183.69it/s]
------------------------------
Streaming batch_size=8
100%|█████████████████████████████████████████████████████████████████████| 1000/1000 [00:03<00:00, 265.74it/s]
------------------------------
Streaming batch_size=64
100%|██████████████████████████████████████████████████████████████████████| 1000/1000 [00:26<00:00, 37.80it/s]
------------------------------
Streaming batch_size=256
0%| | 0/1000 [00:00<?, ?it/s]
Traceback (most recent call last):
File "/home/nicolas/src/transformers/test.py", line 42, in <module>
for out in tqdm(pipe(dataset, batch_size=256), total=len(dataset)):
....
q = q / math.sqrt(dim_per_head) # (bs, n_heads, q_length, dim_per_head)
RuntimeError: CUDA out of memory. Tried to allocate 376.00 MiB (GPU 0; 3.95 GiB total capacity; 1.72 GiB already allocated; 354.88 MiB free; 2.46 GiB reserved in total by PyTorch)
这个问题没有好的(通用的)解决方案,您的结果可能会因您的用例而异。经验法则
对于用户来说,经验法则是
使用您的硬件,在您的负载上测量性能。测量,测量,不断测量。真实的数字是唯一的方法。
如果您受限于延迟(实时产品进行推理),请不要进行批处理。
如果您使用的是 CPU,请不要进行批处理。
如果您使用的是吞吐量(您想在一堆静态数据上运行您的模型),在 GPU 上,那么
- 如果您对序列长度(“自然”数据)的大小一无所知,默认情况下不要进行批处理,测量并尝试暂时添加它,添加 OOM 检查以在失败时恢复(如果您不控制序列长度,它最终会在某个时候失败。)
- 如果您的序列长度非常规则,那么批处理更有可能非常有用,请进行测量并推动它,直到您遇到 OOM。
- GPU 越大,批处理就越有可能更有用
一旦您启用了批处理,请确保您可以很好地处理 OOM。
流水线块批处理
从某种意义上说,zero-shot-classification
和 question-answering
略微特殊,因为单个输入可能会产生模型的多次前向传递。在正常情况下,这会导致 batch_size
参数出现问题。
为了解决这个问题,这两个流水线都有些特殊,它们是 ChunkPipeline
而不是常规的 Pipeline
。简而言之
preprocessed = pipe.preprocess(inputs) model_outputs = pipe.forward(preprocessed) outputs = pipe.postprocess(model_outputs)
现在变成
all_model_outputs = []
for preprocessed in pipe.preprocess(inputs):
model_outputs = pipe.forward(preprocessed)
all_model_outputs.append(model_outputs)
outputs = pipe.postprocess(all_model_outputs)
这对您的代码来说应该是非常透明的,因为流水线的使用方式是相同的。
这是一个简化的视图,因为流水线可以自动处理到!这意味着您不必关心您的输入实际上会触发多少次前向传递,您可以独立于输入优化 batch_size
。上一节的注意事项仍然适用。
流水线 FP16 推理
模型可以使用 FP16 运行,这在 GPU 上可以显著提高速度并节省内存。大多数模型都不会因此遭受明显的性能损失。模型越大,性能损失的可能性就越小。
要启用 FP16 推理,您只需将 torch_dtype=torch.float16
或 torch_dtype='float16'
传递给流水线构造函数。请注意,这只适用于具有 PyTorch 后端的模型。您的输入将在内部转换为 FP16。
流水线自定义代码
如果您想覆盖特定的流水线。
请随时为您的任务创建一个问题,流水线的目标是易于使用并支持大多数情况,因此 transformers
或许可以支持您的用例。
如果您想简单地尝试,您可以
- 将您选择的流水线子类化
class MyPipeline(TextClassificationPipeline):
def postprocess():
# Your code goes here
scores = scores * 100
# And here
my_pipeline = MyPipeline(model=model, tokenizer=tokenizer, ...)
# or if you use *pipeline* function, then:
my_pipeline = pipeline(model="xxxx", pipeline_class=MyPipeline)
这应该可以让您执行所有您想要的自定义代码。
实现流水线
音频
可用于音频任务的流水线包括以下内容。
AudioClassificationPipeline
类 transformers.AudioClassificationPipeline
< 源代码 >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是一个继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- feature_extractor (SequenceFeatureExtractor) — 管道将用于为模型编码数据的特征提取器。此对象继承自 SequenceFeatureExtractor。
- modelcard (
str
或ModelCard
, 可选) — 归属于此管道模型的模型卡片。 - framework (
str
, 可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认使用当前安装的框架。如果未指定框架并且安装了两个框架,则默认使用
model
的框架,如果未提供模型,则默认使用 PyTorch。 - task (
str
, 默认值""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理,这并不总是有益的,请阅读使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 对负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。 将此设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。 你也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
…或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)发生的标志。
使用任何 AutoModelForAudioClassification
的音频分类管道。 此管道预测原始波形或音频文件的类别。 对于音频文件,应安装 ffmpeg 以支持多种音频格式。
示例
>>> from transformers import pipeline
>>> classifier = pipeline(model="superb/wav2vec2-base-superb-ks")
>>> classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
[{'score': 0.997, 'label': '_unknown_'}, {'score': 0.002, 'label': 'left'}, {'score': 0.0, 'label': 'yes'}, {'score': 0.0, 'label': 'down'}, {'score': 0.0, 'label': 'stop'}]
在管道教程中了解有关使用管道的基础知识的更多信息
此管道当前可以使用以下任务标识符从 pipeline() 加载:"audio-classification"
。
在huggingface.co/models 上查看可用模型列表。
__call__
< source >( inputs: Union **kwargs ) → 包含以下键的 `dict` 列表
参数
- inputs (
np.ndarray
或bytes
或str
或dict
) — 输入可以是:str
,表示音频文件的名称,将使用 *ffmpeg* 以正确的采样率读取文件以获取波形。这需要在系统上安装 *ffmpeg*。bytes
,它应该是音频文件的内容,并由 *ffmpeg* 以相同的方式解释。- (形状为 (n, ) 的
np.ndarray
,类型为np.float32
或np.float64
)以正确采样率获取的原始音频(不会进行进一步检查) dict
形式可用于传递以任意 `sampling_rate` 采样的原始音频,并让此管道进行重采样。dict 必须采用{"sampling_rate": int, "raw": np.array}
或{"sampling_rate": int, "array": np.array}
格式,其中键 `“raw”` 或 `“array”` 用于表示原始音频波形。
- top_k (
int
, *可选*, 默认值: None) — 管道将返回的顶部标签数量。如果提供的数字为 `None` 或高于模型配置中可用的标签数量,则默认为标签数量。
返回值
包含以下键的 `dict` 列表
- label (
str
) — 预测的标签。 - score (
float
) — 相应的概率。
将作为输入给出的序列分类。有关更多信息,请参阅 AutomaticSpeechRecognitionPipeline 文档。
AutomaticSpeechRecognitionPipeline
类 transformers.AutomaticSpeechRecognitionPipeline
< source >( model: PreTrainedModel feature_extractor: Union = None tokenizer: Optional = None decoder: Union = None device: Union = None torch_dtype: Union = None **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是一个继承自 PreTrainedModel(针对 PyTorch)和 TFPreTrainedModel(针对 TensorFlow)的模型。
- feature_extractor (SequenceFeatureExtractor) — 管道将用于为模型编码波形的特征提取器。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。该对象继承自 PreTrainedTokenizer。
- decoder (
pyctcdecode.BeamSearchDecoderCTC
, 可选) — 可以传递 PyCTCDecode 的 BeamSearchDecoderCTC 以进行语言模型增强的解码。有关更多信息,请参阅 Wav2Vec2ProcessorWithLM。 - chunk_length_s (
float
, 可选, 默认为 0) — 每个块的输入长度(以秒为单位)。如果chunk_length_s = 0
,则禁用分块(默认)。有关如何有效使用
chunk_length_s
的更多信息,请参阅 ASR 分块博客文章。 - stride_length_s (
float
, 可选, 默认为chunk_length_s / 6
) — 每个块左右两侧的步幅长度(以秒为单位)。仅在chunk_length_s > 0
时使用。这使得模型能够_看到_更多上下文并更好地推断字母,但管道会丢弃末尾的步幅位,以使最终的重构尽可能完美。有关如何有效使用
stride_length_s
的更多信息,请参阅 ASR 分块博客文章。 - framework (
str
, 可选) — 要使用的框架,对于 PyTorch 为"pt"
,对于 TensorFlow 为"tf"
。必须安装指定的框架。如果没有指定框架,将默认使用当前安装的框架。如果没有指定框架并且安装了两个框架,将默认使用model
的框架,如果没有提供模型,则默认使用 PyTorch。 - device (Union[
int
,torch.device
], 可选) — 用于 CPU/GPU 支持的设备序号。将其设置为None
将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。 - torch_dtype (Union[
int
,torch.dtype
], 可选) — 计算的数据类型 (dtype)。将其设置为None
将使用 float32 精度。设置为torch.float16
或torch.bfloat16
可分别使用半精度。
旨在提取某些音频中包含的口语文本的管道。
输入可以是原始波形或音频文件。如果是音频文件,则应安装 ffmpeg 以支持多种音频格式
示例
>>> from transformers import pipeline
>>> transcriber = pipeline(model="openai/whisper-base")
>>> transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
{'text': ' He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered flour-fatten sauce.'}
在管道教程中了解有关使用管道的基础知识的更多信息
__call__
< source >( inputs: Union **kwargs ) → Dict
参数
- inputs (
np.ndarray
或bytes
或str
或dict
) — 输入可以是:str
,它是本地音频文件的文件名,或用于下载音频文件的公共 URL 地址。将以正确的采样率读取文件,以使用 *ffmpeg* 获取波形。这需要在系统上安装 *ffmpeg*。bytes
,它应该是音频文件的内容,并由 *ffmpeg* 以相同的方式解释。- (形状为 (n,) 的
np.ndarray
,类型为np.float32
或np.float64
) 以正确采样率采样的原始音频(不会进行进一步检查) - 可以使用
dict
形式传递以任意sampling_rate
采样的原始音频,并让此管道进行重采样。字典必须采用格式{"sampling_rate": int, "raw": np.array}
,可选地使用"stride": (left: int, right: int)
,这可以要求管道在解码时忽略前left
个样本和最后right
个样本(但在推理时使用以向模型提供更多上下文)。仅将stride
与 CTC 模型一起使用。
- return_timestamps (可选,
str
或bool
) — 仅适用于纯 CTC 模型(Wav2Vec2、HuBERT 等)和 Whisper 模型。不适用于其他序列到序列模型。对于 CTC 模型,时间戳可以采用以下两种格式之一:
"char"
:流水线将返回文本中每个字符的时间戳。例如,如果您得到[{"text": "h", "timestamp": (0.5, 0.6)}, {"text": "i", "timestamp": (0.7, 0.9)}]
,则意味着模型预测字母“h”在0.5
秒后和0.6
秒之前被说出。"word"
:流水线将返回文本中每个单词的时间戳。例如,如果您得到[{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}]
,则意味着模型预测单词“hi”在0.5
秒后和0.9
秒之前被说出。
对于 Whisper 模型,时间戳可以采用以下两种格式之一:
"word"
:与上述单词级 CTC 时间戳相同。单词级时间戳是通过 *动态时间规整 (DTW)* 算法预测的,该算法通过检查交叉注意力权重来近似单词级时间戳。True
:流水线将返回文本中单词 *段* 的时间戳。例如,如果您得到[{"text": " Hi there!", "timestamp": (0.5, 1.5)}]
,则意味着模型预测“Hi there!”段是在0.5
秒后和1.5
秒之前被说出的。请注意,文本段是指一个或多个单词的序列,而不是像单词级时间戳那样是单个单词。
- generate_kwargs (
dict
, 可选) — 用于生成调用的generate_config
特殊参数化字典。有关生成的完整概述,请查看 以下指南。 - max_new_tokens (
int
, 可选) — 要生成的最多标记数,忽略提示中的标记数。
返回值
字典
具有以下键的字典
- text (
str
):识别的文本。 - chunks (可选(,
List[Dict]
) 使用return_timestamps
时,chunks
将变为一个列表,其中包含模型标识的所有各种文本块,例如*[{"text": "hi ", "timestamp": (0.5, 0.9)}, {"text": "there", "timestamp": (1.0, 1.5)}]
。原始完整文本可以通过执行"".join(chunk["text"] for chunk in output["chunks"])
来大致恢复。
将作为输入给出的音频序列转录为文本。有关更多信息,请参阅 AutomaticSpeechRecognitionPipeline 文档。
TextToAudioPipeline
类 transformers.TextToAudioPipeline
< source >( *args vocoder = None sampling_rate = None **kwargs )
使用任何 AutoModelForTextToWaveform
或 AutoModelForTextToSpectrogram
的文本到音频生成流水线。此流水线根据输入文本和可选的其他条件输入生成音频文件。
示例
>>> from transformers import pipeline
>>> pipe = pipeline(model="suno/bark-small")
>>> output = pipe("Hey it's HuggingFace on the phone!")
>>> audio = output["audio"]
>>> sampling_rate = output["sampling_rate"]
在管道教程中了解有关使用管道的基础知识的更多信息
您可以使用 TextToAudioPipeline.__call__.forward_params
或 TextToAudioPipeline.__call__.generate_kwargs
指定传递给模型的参数。
示例
>>> from transformers import pipeline
>>> music_generator = pipeline(task="text-to-audio", model="facebook/musicgen-small", framework="pt")
>>> # diversify the music generation by adding randomness with a high temperature and set a maximum music length
>>> generate_kwargs = {
... "do_sample": True,
... "temperature": 0.7,
... "max_new_tokens": 35,
... }
>>> outputs = music_generator("Techno music with high melodic riffs", generate_kwargs=generate_kwargs)
此流水线目前可以使用以下任务标识符从 pipeline() 加载:"text-to-speech"
或 "text-to-audio"
。
请在 huggingface.co/models 上查看可用模型列表。
__call__
< source >( text_inputs: Union **forward_params ) → 一个 dict
或 dict
列表
参数
- text_inputs (
str
或List[str]
) — 要生成的文本。 - forward_params (
dict
, 可选) — 传递给模型生成/前向方法的参数。forward_params
始终传递给底层模型。 - generate_kwargs (
dict
, 可选) — 用于生成调用的generate_config
特殊参数化字典。有关生成的完整概述,请查看 以下指南。仅当后者是生成模型时,才会将generate_kwargs
传递给底层模型。
返回值
一个 dict
或 dict
列表
字典有两个键
- audio (形状为
(nb_channels, audio_length)
的np.ndarray
) — 生成的音频波形。 - sampling_rate (
int
) — 生成的音频波形的采样率。
从输入生成语音/音频。有关更多信息,请参阅 TextToAudioPipeline 文档。
ZeroShotAudioClassificationPipeline
class transformers.ZeroShotAudioClassificationPipeline
< source >( **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- feature_extractor (SequenceFeatureExtractor) — 管道将用于为模型编码数据的特征提取器。此对象继承自 SequenceFeatureExtractor。
- modelcard (
str
或ModelCard
,可选) — 此管道模型对应的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的worker数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道将使用 DataLoader 时(当传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批次大小,对于推理,这并不总是有益的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以便为此模型使用可用的精度(torch.float16
、torch.bfloat16
等或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用 ClapModel
的零样本音频分类管道。当您提供音频和一组 candidate_labels
时,此管道会预测音频的类别。
默认的 hypothesis_template
是: "This is a sound of {}."
。请确保您已更新它以供使用。
示例
>>> from transformers import pipeline
>>> from datasets import load_dataset
>>> dataset = load_dataset("ashraq/esc50")
>>> audio = next(iter(dataset["train"]["audio"]))["array"]
>>> classifier = pipeline(task="zero-shot-audio-classification", model="laion/clap-htsat-unfused")
>>> classifier(audio, candidate_labels=["Sound of a dog", "Sound of vaccum cleaner"])
[{'score': 0.9996, 'label': 'Sound of a dog'}, {'score': 0.0004, 'label': 'Sound of vaccum cleaner'}]
在 管道教程 中了解更多关于使用管道的基础知识 此音频分类管道目前可以从 pipeline() 使用以下任务标识符加载: "zero-shot-audio-classification"
。请参阅 huggingface.co/models 上的可用模型列表。
__call__
< source >( audios: Union **kwargs )
参数
- audios (
str
,List[str]
,np.array
或List[np.array]
) — 该管道处理三种类型的输入:- 包含指向音频的 http 链接的字符串
- 包含音频本地路径的字符串
- 加载到 numpy 中的音频
- candidate_labels (
List[str]
) — 此音频的候选标签。它们将使用 *hypothesis_template* 进行格式化。 - hypothesis_template (
str
, 可选, 默认为"This is a sound of {}"
) — 与 *candidate_labels* 结合使用的格式,通过将占位符替换为 candidate_labels 来尝试进行音频分类。如果 *candidate_labels* 已经格式化,则传递 “{}”。
为作为输入传递的音频分配标签。
计算机视觉
可用于计算机视觉任务的管道包括以下内容。
DepthEstimationPipeline
类 transformers.DepthEstimationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- image_processor (BaseImageProcessor) — 管道将使用的图像处理器,用于为模型编码数据。 该对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
, 可选) — 归属于此管道模型的模型卡片。 - framework (
str
, 可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且安装了两个框架,将默认使用
model
的框架,或者在未提供模型的情况下默认使用 PyTorch。 - task (
str
, 默认为""
) — 管道的任务标识符。 - num_workers (
int
, 可选, 默认为 8) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批次大小。对于推理来说,这并不总是有益的,请阅读 使用管道的批处理 。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — 支持 CPU/GPU 的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
……或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用任何 AutoModelForDepthEstimation
的深度估计管道。此管道预测图像的深度。
示例
>>> from transformers import pipeline
>>> depth_estimator = pipeline(task="depth-estimation", model="LiheYoung/depth-anything-base-hf")
>>> output = depth_estimator("http://images.cocodataset.org/val2017/000000039769.jpg")
>>> # This is a tensor with the values being the depth expressed in meters for each pixel
>>> output["predicted_depth"].shape
torch.Size([1, 384, 384])
在管道教程中了解有关使用管道的基础知识的更多信息
此深度估计管道目前可以使用以下任务标识符从 pipeline() 加载:"depth-estimation"
。
有关可用模型列表,请参阅 huggingface.co/models。
__call__
< 源代码 >( images: Union **kwargs )
预测作为输入传递的图像的深度。
ImageClassificationPipeline
class transformers.ImageClassificationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PreTrainedModel (对于 PyTorch) 和 TFPreTrainedModel (对于 TensorFlow) 的模型。
- image_processor (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。该对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架并且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当流水线使用 DataLoader 时(传递数据集时,在 GPU 上运行 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当流水线使用 DataLoader 时(传递数据集时,在 GPU 上运行 Pytorch 模型),要使用的批大小,对于推理来说,这并不总是有益的,请阅读使用流水线进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
,可选,默认为 -1) — 用于 CPU/GPU 支持的设备序号。将其设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
。 - torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
……或"auto"
)。 - binary_output (
bool
,可选,默认为False
) — 指示流水线输出是否应采用序列化格式(例如,pickle)或原始输出数据(例如,文本)的标志。 - function_to_apply (
str
,可选,默认为"default"
) — 应用于模型输出以检索分数的函数。接受四个不同的值:"default"
:如果模型只有一个标签,将对输出应用 sigmoid 函数。如果模型有多个标签,将对输出应用 softmax 函数。"sigmoid"
:对输出应用 sigmoid 函数。"softmax"
:对输出应用 softmax 函数。"none"
:不对输出应用任何函数。
使用任何 AutoModelForImageClassification
的图像分类流水线。此流水线预测图像的类别。
示例
>>> from transformers import pipeline
>>> classifier = pipeline(model="microsoft/beit-base-patch16-224-pt22k-ft22k")
>>> classifier("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
[{'score': 0.442, 'label': 'macaw'}, {'score': 0.088, 'label': 'popinjay'}, {'score': 0.075, 'label': 'parrot'}, {'score': 0.073, 'label': 'parodist, lampooner'}, {'score': 0.046, 'label': 'poll, poll_parrot'}]
在管道教程中了解有关使用管道的基础知识的更多信息
当前可以使用以下任务标识符从 pipeline() 加载此图像分类流水线: "image-classification"
。
请在 huggingface.co/models 上查看可用模型列表。
__call__
< 源代码 >( images: Union **kwargs )
参数
- images (
str
,List[str]
,PIL.Image
或List[PIL.Image]
) — 该流水线处理三种类型的图像:- 包含指向图像的 http 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
该流水线接受单张图像或一批图像,然后必须将其作为字符串传递。一批图像中的所有图像必须采用相同的格式:全部为 http 链接、全部为本地路径或全部为 PIL 图像。
- function_to_apply (
str
, 可选, 默认为"default"
) — 要应用于模型输出以检索得分的函数。接受四个不同的值:如果未指定此参数,则将根据标签数量应用以下函数:
- 如果模型具有单个标签,则将对输出应用 sigmoid 函数。
- 如果模型具有多个标签,则将对输出应用 softmax 函数。
可能的值为:
"sigmoid"
:对输出应用 sigmoid 函数。"softmax"
:对输出应用 softmax 函数。"none"
:不对输出应用任何函数。
- top_k (
int
, 可选, 默认为 5) — 流水线将返回的顶部标签数量。如果提供的数量高于模型配置中可用的标签数量,则默认为标签数量。 - timeout (
float
, 可选, 默认为 None) — 从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。
将标签分配给作为输入传递的图像。
ImageSegmentationPipeline
类 transformers.ImageSegmentationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的模型。
- image_processor (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。该对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道的模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,PyTorch 为"pt"
或 TensorFlow 为"tf"
。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,或者在未提供模型的情况下默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当 pipeline 使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),使用的批次大小,对于推理,这并不总是有益的,请阅读使用 pipeline 进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的 pipeline 参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
。 - torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度 (torch.float16
、torch.bfloat16
、… 或"auto"
)。 - binary_output (
bool
,可选,默认为False
) — 指示 pipeline 输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用任何 AutoModelForXXXSegmentation
的图像分割 pipeline。此 pipeline 预测对象及其类别的掩码。
示例
>>> from transformers import pipeline
>>> segmenter = pipeline(model="facebook/detr-resnet-50-panoptic")
>>> segments = segmenter("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
>>> len(segments)
2
>>> segments[0]["label"]
'bird'
>>> segments[1]["label"]
'bird'
>>> type(segments[0]["mask"]) # This is a black and white mask showing where is the bird on the original image.
<class 'PIL.Image.Image'>
>>> segments[0]["mask"].size
(768, 512)
此图像分割 pipeline 目前可以从 pipeline() 使用以下任务标识符加载:"image-segmentation"
。
请参阅 huggingface.co/models 上的可用模型列表。
__call__
< 源代码 >( images **kwargs )
参数
- images (
str
,List[str]
,PIL.Image
或List[PIL.Image]
) — 该流水线处理三种类型的图像:- 包含指向图像的 HTTP(S) 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
该流水线接受单个图像或一批图像。一批图像必须采用相同的格式:全部为 HTTP(S) 链接、全部为本地路径或全部为 PIL 图像。
- subtask (
str
,可选) — 要执行的分割任务,根据模型功能选择 [semantic
、instance
和panoptic
]。如果未设置,流水线将尝试按以下顺序解析:panoptic
、instance
、semantic
。 - threshold (
float
,可选,默认为 0.9) — 用于过滤掉预测掩码的概率阈值。 - mask_threshold (
float
,可选,默认为 0.5) — 将预测掩码转换为二进制值时使用的阈值。 - overlap_mask_area_threshold (
float
,可选,默认为 0.5) — 用于消除小的、不连续段的掩码重叠阈值。 - timeout (
float
,可选,默认为 None) — 从网络获取图像的最长等待时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会一直阻塞。
对作为输入传递的图像执行分割(检测掩码和类别)。
ImageToImagePipeline
类 transformers.ImageToImagePipeline
< 源代码 >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的模型。
- image_processor (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。该对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,将默认使用当前安装的框架。如果未指定框架并且安装了两个框架,将默认使用
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当流水线将使用 DataLoader 时(在传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理,这并不总是有益的,请阅读使用流水线进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示流水线输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用任何 AutoModelForImageToImage
的图像到图像流水线。此流水线根据先前的图像输入生成图像。
示例
>>> from PIL import Image
>>> import requests
>>> from transformers import pipeline
>>> upscaler = pipeline("image-to-image", model="caidas/swin2SR-classical-sr-x2-64")
>>> img = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)
>>> img = img.resize((64, 64))
>>> upscaled_img = upscaler(img)
>>> img.size
(64, 64)
>>> upscaled_img.size
(144, 144)
此图像到图像流水线目前可以从 pipeline() 使用以下任务标识符加载:"image-to-image"
。
请参阅 huggingface.co/models 上的可用模型列表。
__call__
< source >( images: Union **kwargs )
转换作为输入传递的图像。
ObjectDetectionPipeline
class transformers.ObjectDetectionPipeline
< source >( *args **kwargs )
参数
- **model** (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的模型。
- **image_processor** (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。此对象继承自 BaseImageProcessor。
- **modelcard** (``str`` 或 ``ModelCard``, *可选*) — 此管道模型对应的模型卡片。
- **framework** (``str``, *可选*) — 要使用的框架,``"pt"`` 表示 PyTorch,``"tf"`` 表示 TensorFlow。必须安装指定的框架。
如果未指定框架,则默认为当前安装的框架。如果未指定框架并且安装了两个框架,则默认为 ``model`` 的框架,如果未提供模型,则默认为 PyTorch。
- task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 DataLoader 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批次大小,对于推理,这并不总是有益的,请阅读使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应以序列化格式(即 pickle)或作为原始输出数据(例如文本)发生的标志。
使用任何 AutoModelForObjectDetection
的目标检测管道。此管道预测目标的边界框及其类别。
示例
>>> from transformers import pipeline
>>> detector = pipeline(model="facebook/detr-resnet-50")
>>> detector("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
[{'score': 0.997, 'label': 'bird', 'box': {'xmin': 69, 'ymin': 171, 'xmax': 396, 'ymax': 507}}, {'score': 0.999, 'label': 'bird', 'box': {'xmin': 398, 'ymin': 105, 'xmax': 767, 'ymax': 507}}]
>>> # x, y are expressed relative to the top left hand corner.
在管道教程中了解有关使用管道的基础知识的更多信息
此目标检测管道目前可以从pipeline() 使用以下任务标识符加载:"object-detection"
。
请参阅huggingface.co/models 上的可用模型列表。
__call__
< source >( *args **kwargs )
参数
- images (
str
,List[str]
,PIL.Image
或List[PIL.Image]
) — 此流水线处理三种类型的图像:- 包含指向图像的 HTTP(S) 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
此流水线接受单个图像或一批图像。一批图像中的图像必须采用相同的格式:全部为 HTTP(S) 链接、全部为本地路径或全部为 PIL 图像。
- threshold (
float
, 可选, 默认值: 0.5) — 进行预测所需的概率。 - timeout (
float
, 可选, 默认值: None) — 从网络获取图像的最长等待时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。
检测作为输入传递的图像中的对象(边界框和类别)。
VideoClassificationPipeline
类 transformers.VideoClassificationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 流水线将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型;对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- image_processor (BaseImageProcessor) — 流水线将使用该图像处理器对模型的数据进行编码。 该对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此流水线模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,对于 PyTorch 为"pt"
,对于 TensorFlow 为"tf"
。 必须安装指定的框架。如果未指定框架,将默认为当前安装的框架。 如果未指定框架并且安装了两个框架,将默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 流水线的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当流水线使用 *DataLoader* 时(在传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当流水线使用 *DataLoader* 时(在传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批大小,对于推理,这并不总是有益的,请阅读 使用流水线进行批处理 . - args_parser (ArgumentHandler, 可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序号。设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 标志,指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)。
使用任何 AutoModelForVideoClassification
的视频分类管道。此管道预测视频的类别。
此视频分类管道目前可以使用以下任务标识符从 pipeline() 加载:"video-classification"
。
请参阅 huggingface.co/models 上的可用模型列表。
__call__
< source >( videos: Union **kwargs )
参数
- videos (
str
,List[str]
) — 管道处理三种类型的视频:- 包含指向视频的 http 链接的字符串
- 包含视频本地路径的字符串
管道接受单个视频或一批视频,然后必须将其作为字符串传递。一批视频中的所有视频必须格式相同:全部为 http 链接或全部为本地路径。
- top_k (
int
, 可选, 默认为 5) — 管道将返回的前几个标签的数量。如果提供的数量高于模型配置中可用的标签数量,则默认为标签数量。 - **num_frames** (``int``,*可选*,默认为 ``self.model.config.num_frames``) — 用于运行分类的视频帧数。如果未提供,则默认为模型配置中指定的帧数。
- **frame_sampling_rate** (``int``,*可选*,默认为 1) — 用于从视频中选择帧的采样率。如果未提供,则默认为 1,即使用每一帧。
为作为输入传递的视频分配标签。
ZeroShotImageClassificationPipeline
类 transformers.ZeroShotImageClassificationPipeline
< 源代码 >( **kwargs )
参数
- **model** ( PreTrainedModel 或 TFPreTrainedModel ) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow,这需要是继承自 TFPreTrainedModel 的模型。
- **image_processor** ( BaseImageProcessor ) — 管道将用于对模型的数据进行编码的图像处理器。此对象继承自 BaseImageProcessor 。
- **modelcard** (``str`` 或 ``ModelCard``,*可选*) — 归属于此管道的模型的模型卡。
- framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架并且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 流水线的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当流水线将使用 DataLoader 时(在传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当流水线将使用 DataLoader 时(在传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批处理大小,对于推理来说,这并不总是有益的,请阅读使用流水线进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
。 - torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度 (torch.float16
、torch.bfloat16
... 或"auto"
) 。 - binary_output (
bool
,可选,默认为False
) — 指示流水线输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用 CLIPModel
的零样本图像分类流水线。当您提供一张图像和一组 candidate_labels
时,此流水线会预测图像的类别。
示例
>>> from transformers import pipeline
>>> classifier = pipeline(model="google/siglip-so400m-patch14-384")
>>> classifier(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["animals", "humans", "landscape"],
... )
[{'score': 0.965, 'label': 'animals'}, {'score': 0.03, 'label': 'humans'}, {'score': 0.005, 'label': 'landscape'}]
>>> classifier(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["black and white", "photorealist", "painting"],
... )
[{'score': 0.996, 'label': 'black and white'}, {'score': 0.003, 'label': 'photorealist'}, {'score': 0.0, 'label': 'painting'}]
在管道教程中了解有关使用管道的基础知识的更多信息
此图像分类流水线当前可以使用以下任务标识符从 pipeline() 加载:"zero-shot-image-classification"
。
请在 huggingface.co/models 上查看可用模型列表。
__call__
< source >( images: Union **kwargs )
参数
- images (
str
、List[str]
、PIL.Image
或List[PIL.Image]
) — 该流水线处理三种类型的图像:- 包含指向图像的 http 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
- candidate_labels (
List[str]
) — 此图像的候选标签。它们将使用 hypothesis_template 格式化。 - hypothesis_template (
str
,可选,默认为"This is a photo of {}"
) — 与 candidate_labels 结合使用的格式,用于尝试通过将占位符替换为 candidate_labels 来进行图像分类。如果 candidate_labels 已经格式化,则传递“{}”。 - timeout (
float
,可选,默认为 None) — 从网络获取图像的最长等待时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。 - tokenizer_kwargs (
dict
,可选) — 传递给分词器的其他关键字参数字典。
将标签分配给作为输入传递的图像。
ZeroShotObjectDetectionPipeline
类 transformers.ZeroShotObjectDetectionPipeline
< 来源 >( **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- image_processor (BaseImageProcessor) — 管道将用于对模型数据进行编码的图像处理器。此对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
, 可选) — 此管道模型归属的模型卡片。 - framework (
str
, 可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架并且同时安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
, 默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 对负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — 用于 CPU/GPU 支持的设备序号。 将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。 您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度 (torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 标志,指示管道的输出是否应采用序列化格式(即 pickle)或作为原始输出数据(例如文本)。
使用 OwlViTForObjectDetection
的零样本目标检测管道。 当您提供图像和一组 candidate_labels
时,此管道会预测对象的边界框。
示例
>>> from transformers import pipeline
>>> detector = pipeline(model="google/owlvit-base-patch32", task="zero-shot-object-detection")
>>> detector(
... "http://images.cocodataset.org/val2017/000000039769.jpg",
... candidate_labels=["cat", "couch"],
... )
[{'score': 0.287, 'label': 'cat', 'box': {'xmin': 324, 'ymin': 20, 'xmax': 640, 'ymax': 373}}, {'score': 0.254, 'label': 'cat', 'box': {'xmin': 1, 'ymin': 55, 'xmax': 315, 'ymax': 472}}, {'score': 0.121, 'label': 'couch', 'box': {'xmin': 4, 'ymin': 0, 'xmax': 642, 'ymax': 476}}]
>>> detector(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png",
... candidate_labels=["head", "bird"],
... )
[{'score': 0.119, 'label': 'bird', 'box': {'xmin': 71, 'ymin': 170, 'xmax': 410, 'ymax': 508}}]
在管道教程中了解有关使用管道的基础知识的更多信息
此目标检测管道目前可以从 pipeline() 使用以下任务标识符加载:"zero-shot-object-detection"
。
请参阅 huggingface.co/models 上的可用模型列表。
__call__
< source >( image: Union candidate_labels: Union = None **kwargs )
检测作为输入传递的图像中的对象(边界框和类别)。
自然语言处理
可用于自然语言处理任务的管道包括以下内容。
FillMaskPipeline
类 transformers.FillMaskPipeline
< source >( model: Union tokenizer: Optional = None feature_extractor: Optional = None image_processor: Optional = None modelcard: Optional = None framework: Optional = None task: str = '' args_parser: ArgumentHandler = None device: Union = None torch_dtype: Union = None binary_output: bool = False **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。 对于 PyTorch,这需要是继承自 PreTrainedModel 的模型; 对于 TensorFlow,这需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于对模型数据进行编码的分词器。 该对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
, 可选) — 模型卡归属于该管道的模型。 - framework (
str
, 可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。 必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。 如果未指定框架并且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
, 默认为""
) — 管道的任务标识符。 - num_workers (
int
, 可选, 默认为 8) — 当管道将使用 DataLoader 时(当传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的worker数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道将使用 DataLoader 时(当传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的批次大小,对于推理,这并不总是有益的,请阅读 使用管道进行批处理 . - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 指示管道输出是否应采用序列化格式(例如,pickle)或原始输出数据(例如,文本)的标志。 - top_k (
int
, 可选, 默认为 5) — 要返回的预测数量。 - targets (
str
或List[str]
, 可选) — 传递时,模型会将分数限制为传递的目标,而不是在整个词汇表中查找。如果提供的目标不在模型词汇表中,它们将被标记化,并且将使用第一个结果标记(带有警告,这可能会比较慢)。 - tokenizer_kwargs (
dict
, 可选) — 传递给分词器的其他关键字参数字典。
使用任何 ModelWithLMHead
的掩码语言建模预测管道。有关详细信息,请参阅掩码语言建模示例。
示例
>>> from transformers import pipeline
>>> fill_masker = pipeline(model="google-bert/bert-base-uncased")
>>> fill_masker("This is a simple [MASK].")
[{'score': 0.042, 'token': 3291, 'token_str': 'problem', 'sequence': 'this is a simple problem.'}, {'score': 0.031, 'token': 3160, 'token_str': 'question', 'sequence': 'this is a simple question.'}, {'score': 0.03, 'token': 8522, 'token_str': 'equation', 'sequence': 'this is a simple equation.'}, {'score': 0.027, 'token': 2028, 'token_str': 'one', 'sequence': 'this is a simple one.'}, {'score': 0.024, 'token': 3627, 'token_str': 'rule', 'sequence': 'this is a simple rule.'}]
在管道教程中了解有关使用管道的基础知识的更多信息
此掩码填充管道目前可以使用以下任务标识符从 pipeline() 加载:"fill-mask"
。
此管道可以使用的模型是使用掩码语言建模目标训练的模型,包括库中的双向模型。请参阅 huggingface.co/models 上最新的可用模型列表。
此管道仅适用于只有一个标记被掩码的输入。实验性:我们添加了对多个掩码的支持。返回值是原始模型输出,对应于不相交概率,其中人们可能期望联合概率(请参阅 讨论)。
此管道现在支持 tokenizer_kwargs。例如,请尝试
>>> from transformers import pipeline
>>> fill_masker = pipeline(model="google-bert/bert-base-uncased")
>>> tokenizer_kwargs = {"truncation": True}
>>> fill_masker(
... "This is a simple [MASK]. " + "...with a large amount of repeated text appended. " * 100,
... tokenizer_kwargs=tokenizer_kwargs,
... )
__call__
< source >( inputs *args **kwargs ) → 列表或列表的列表,其中包含 dict
参数
- args (
str
或List[str]
) — 一个或多个带有掩码标记的文本(或一个提示列表)。 - targets (
str
或List[str]
, 可选) — 传递时,模型会将分数限制在传递的目标,而不是在整个词汇表中查找。如果提供的目标不在模型词汇表中,它们将被标记化,并将使用第一个结果标记(会发出警告,并且速度可能会变慢)。 - top_k (
int
, 可选) — 传递时,覆盖要返回的预测数量。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典列表的形式出现,包含以下键
- sequence (
str
) — 带有掩码标记预测的相应输入。 - score (
float
) — 相应的概率。 - token (
int
) — 预测的标记 ID(用于替换被掩码的标记)。 - token_str (
str
) — 预测的标记(用于替换被掩码的标记)。
填充作为输入给出的文本中的掩码标记。
QuestionAnsweringPipeline
类 transformers.QuestionAnsweringPipeline
< 源代码 >( model: Union tokenizer: PreTrainedTokenizer modelcard: Optional = None framework: Optional = None task: str = '' **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是一个继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 *DataLoader* 时(当传递数据集时,在 GPU 上为 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 *DataLoader* 时(当传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认值为 -1) — CPU/GPU 支持的设备序号。 将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。 您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
, 可选, 默认值为False
) — 标志,指示管道输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。
使用任何 ModelForQuestionAnswering
的问答管道。 有关更多信息,请参阅问答示例。
示例
>>> from transformers import pipeline
>>> oracle = pipeline(model="deepset/roberta-base-squad2")
>>> oracle(question="Where do I live?", context="My name is Wolfgang and I live in Berlin")
{'score': 0.9191, 'start': 34, 'end': 40, 'answer': 'Berlin'}
在管道教程中了解有关使用管道的基础知识的更多信息
此问答管道当前可以使用以下任务标识符从 pipeline() 加载:"question-answering"
。
此管道可以使用的模型是在问答任务上微调过的模型。 有关可用模型的最新列表,请参阅 huggingface.co/models。
__call__
< source >( *args **kwargs ) → 一个 dict
或一个 dict
列表
参数
- args (
SquadExample
或SquadExample
列表) — 包含问题和上下文的SquadExample
或多个SquadExample
。 - X (
SquadExample
或SquadExample
的列表,可选) — 包含问题和上下文的单个或多个SquadExample
(将以与作为第一个位置参数传递时相同的方式处理)。 - data (
SquadExample
或SquadExample
的列表,可选) — 包含问题和上下文的单个或多个SquadExample
(将以与作为第一个位置参数传递时相同的方式处理)。 - question (
str
或List[str]
) — 一个或多个问题(必须与context
参数结合使用)。 - context (
str
或List[str]
) — 与问题关联的一个或多个上下文(必须与question
参数结合使用)。 - topk (
int
, 可选, 默认值为 1) — 要返回的答案数量(将按可能性顺序选择)。 请注意,如果上下文中没有足够的选项可用,我们将返回少于 topk 个答案。 - doc_stride (
int
, 可选, 默认值为 128) — 如果上下文太长而无法与模型的问题相匹配,它将被拆分为几块,并带有一些重叠。 此参数控制该重叠的大小。 - max_answer_len (
int
, 可选, 默认值为 15) — 预测答案的最大长度(例如,仅考虑长度较短的答案)。 - max_seq_len (
int
, 可选, 默认为 384) — 传递给模型的每个块中句子总长度(上下文 + 问题)的最大长度(以标记为单位)。如果需要,上下文将被分割成几个块(使用doc_stride
作为重叠)。 - max_question_len (
int
, 可选, 默认为 64) — 问题标记化后的最大长度。如果需要,它将被截断。 - handle_impossible_answer (
bool
, 可选, 默认为False
) — 是否接受“不可能”作为答案。 - align_to_words (
bool
, 可选, 默认为True
) — 尝试将答案与真实单词对齐。提高空格分隔语言的质量。可能会对非空格分隔语言(如日语或中文)产生负面影响
返回值
一个 dict
或 dict
列表
每个结果都以字典的形式返回,包含以下键
- score (
float
) — 与答案相关的概率。 - start (
int
) — 答案的字符起始索引(在输入的标记化版本中)。 - end (
int
) — 答案的字符结束索引(在输入的标记化版本中)。 - answer (
str
) — 问题的答案。
使用上下文回答给定的问题。
create_sample
< source >( question: Union context: Union ) → 一个或多个 SquadExample
QuestionAnsweringPipeline 在内部利用了 SquadExample
。这个辅助方法封装了将问题和上下文转换为 SquadExample
的所有逻辑。
我们目前支持抽取式问答。
span_to_answer
< source >( text: str start: int end: int ) → 像 `{‘answer’
当从标记概率解码时,此方法将标记索引映射到初始上下文中的实际单词。
SummarizationPipeline
类 transformers.SummarizationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是一个继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。该对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
, 可选) — 归属于该管道模型的模型卡片。 - framework (
str
, 可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果没有指定框架,则默认为当前安装的框架。如果没有指定框架并且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
, 默认为""
) — 管道的任务标识符。 - num_workers (
int
, 可选, 默认为 8) — 当管道将使用 *DataLoader* 时(当传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道将使用 *DataLoader* 时(当传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的批次大小,对于推理来说,这并不总是 beneficial 的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认值 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。你也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
…… 或"auto"
) - binary_output (
bool
, 可选, 默认值False
) — 标志,指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)。
对新闻文章和其他文档进行摘要。
此摘要管道目前可以使用以下任务标识符从 pipeline() 加载:"summarization"
。
此管道可以使用的模型是在摘要任务上微调的模型,目前是“*bart-large-cnn*”、“*google-t5/t5-small*”、“*google-t5/t5-base*”、“*google-t5/t5-large*”、“*google-t5/t5-3b*”、“*google-t5/t5-11b*”。有关可用模型的最新列表,请参阅 huggingface.co/models。有关可用参数的列表,请参阅 以下文档
用法
# use bart in pytorch
summarizer = pipeline("summarization")
summarizer("An apple a day, keeps the doctor away", min_length=5, max_length=20)
# use t5 in tf
summarizer = pipeline("summarization", model="google-t5/t5-base", tokenizer="google-t5/t5-base", framework="tf")
summarizer("An apple a day, keeps the doctor away", min_length=5, max_length=20)
__call__
< 源代码 >( *args **kwargs ) → 列表或 dict
列表的列表
参数
- documents (str 或
List[str]
) — 要进行摘要的一篇或多篇文章(或一篇文章列表)。 - return_text (
bool
, 可选, 默认值True
) — 是否在输出中包含解码后的文本 - return_tensors (
bool
, 可选, 默认值为False
) — 是否在输出中包含预测的张量(作为标记索引)。 - clean_up_tokenization_spaces (
bool
, 可选, 默认值为False
) — 是否清除文本输出中潜在的额外空格。 generate_kwargs — 要传递给模型的 generate 方法的附加关键字参数(请参阅此处的框架对应的 generate 方法)。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典的形式返回,包含以下键
- summary_text (
str
, 当return_text=True
时出现) — 对应输入的摘要。 - summary_token_ids (
torch.Tensor
或tf.Tensor
, 当return_tensors=True
时出现) — 摘要的标记 ID。
总结作为输入给出的文本。
TableQuestionAnsweringPipeline
class transformers.TableQuestionAnsweringPipeline
< source >( args_parser = <transformers.pipelines.table_question_answering.TableQuestionAnsweringArgumentHandler object at 0x7f52082caf50> *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型;对于 TensorFlow,这需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型对应的模型卡片。 - framework (
str
,可选) — 要使用的框架,对于 PyTorch 为"pt"
,对于 TensorFlow 为"tf"
。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架并且安装了两个框架,则默认为
model
的框架,或者在未提供模型的情况下默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小。对于推理,这并不总是有益的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生的torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式) 发送,以便使用此模型可用的精度 (torch.float16
、torch.bfloat16
...或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用 ModelForTableQuestionAnswering
的表格问答管道。此管道仅在 PyTorch 中可用。
示例
>>> from transformers import pipeline
>>> oracle = pipeline(model="google/tapas-base-finetuned-wtq")
>>> table = {
... "Repository": ["Transformers", "Datasets", "Tokenizers"],
... "Stars": ["36542", "4512", "3934"],
... "Contributors": ["651", "77", "34"],
... "Programming language": ["Python", "Python", "Rust, Python and NodeJS"],
... }
>>> oracle(query="How many stars does the transformers repository have?", table=table)
{'answer': 'AVERAGE > 36542', 'coordinates': [(0, 1)], 'cells': ['36542'], 'aggregator': 'AVERAGE'}
在管道教程中了解有关使用管道的基础知识的更多信息
此表格问答管道目前可以使用以下任务标识符从 pipeline() 加载:"table-question-answering"
。
此管道可以使用的模型是在表格问答任务上微调过的模型。请参阅 huggingface.co/models 上最新的可用模型列表。
__call__
< source >( *args **kwargs ) → 包含结果的字典或字典列表
参数
- table (
pd.DataFrame
或Dict
) — Pandas DataFrame 或将转换为包含所有表格值的 DataFrame 的字典。有关字典示例,请参见上文。 - query (
str
或List[str]
) — 将与表格一起发送到模型的查询或查询列表。 - sequential (
bool
, 可选, 默认为False
) — 是否按顺序或批量进行推理。批量处理速度更快,但像 SQA 这样的模型需要按顺序进行推理,才能在其对话性质的情况下提取序列内的关系。 - **padding** (``bool``, ``str`` 或 PaddingStrategy, *可选*, 默认值: ``False``) — 激活并控制填充。接受以下值:
- ``True`` 或 ``'longest'``:填充到批次中最长序列的长度(如果只提供单个序列,则不进行填充)。
- ``'max_length'``:填充到使用参数 ``max_length`` 指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。
- ``False`` 或 ``'do_not_pad'``(默认值):不填充(即,可以输出包含不同长度序列的批次)。
- **truncation** (``bool``, ``str`` 或 ``TapasTruncationStrategy``, *可选*, 默认值: ``False``) — 激活并控制截断。接受以下值:
- ``True`` 或 ``'drop_rows_to_fit'``:截断到使用参数 ``max_length`` 指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。这将逐行截断,从表格中删除行。
- ``False`` 或 ``'do_not_truncate'``(默认值):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
返回值
包含结果的字典或字典列表
每个结果都是一个包含以下键的字典
- **answer** (``str``) — 给定表格的查询答案。如果有聚合器,则答案前面将加上 ``AGGREGATOR >``。
- **coordinates** (``List[Tuple[int, int]]``) — 答案单元格的坐标。
- **cells** (``List[str]``) — 由答案单元格值组成的字符串列表。
- **aggregator** (``str``) — 如果模型有聚合器,则返回聚合器。
根据表格回答查询。该流水线接受几种类型的输入,如下所述
pipeline(table, query)
pipeline(table, [query])
pipeline(table=table, query=query)
pipeline(table=table, query=[query])
pipeline({"table": table, "query": query})
pipeline({"table": table, "query": [query]})
pipeline([{"table": table, "query": query}, {"table": table, "query": query}])
``table`` 参数应该是一个字典或由该字典构建的 DataFrame,包含整个表格
示例
data = {
"actors": ["brad pitt", "leonardo di caprio", "george clooney"],
"age": ["56", "45", "59"],
"number of movies": ["87", "53", "69"],
"date of birth": ["7 february 1967", "10 june 1996", "28 november 1967"],
}
此字典可以按原样传递,也可以转换为 pandas DataFrame
TextClassificationPipeline
类 transformers.TextClassificationPipeline
< source >( **kwargs )
参数
- **model** (PreTrainedModel 或 TFPreTrainedModel) — 流水线将使用的模型来进行预测。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型所属的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的worker数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理,这并不总是有益的,请阅读使用管道进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — 支持 CPU/GPU 的设备序号。将其设置为 -1 将利用 CPU,正值将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
... 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)发生的标志。 - return_all_scores (
bool
,可选,默认为False
) — 是否返回所有预测得分或仅返回预测类的得分。 - function_to_apply (
str
,可选,默认为"default"
) — 要应用于模型输出以检索得分的函数。接受四个不同的值:"default"
:如果模型具有单个标签,则将在输出上应用 sigmoid 函数。如果模型有多个标签,则将在输出上应用 softmax 函数。"sigmoid"
:在输出上应用 sigmoid 函数。"softmax"
:在输出上应用 softmax 函数。"none"
:不对输出应用任何函数。
使用任何 ModelForSequenceClassification
的文本分类管道。有关更多信息,请参阅序列分类示例。
示例
>>> from transformers import pipeline
>>> classifier = pipeline(model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
>>> classifier("This movie is disgustingly good !")
[{'label': 'POSITIVE', 'score': 1.0}]
>>> classifier("Director tried too much.")
[{'label': 'NEGATIVE', 'score': 0.996}]
在管道教程中了解有关使用管道的基础知识的更多信息
此文本分类管道目前可以使用以下任务标识符从 pipeline() 加载:"sentiment-analysis"
(用于根据正面或负面情绪对序列进行分类)。
如果有多个分类标签可用 (model.config.num_labels >= 2
),则管道将在结果上运行 softmax。如果只有一个标签,则管道将在结果上运行 sigmoid。
此管道可以使用的模型是在序列分类任务上微调过的模型。请参阅 huggingface.co/models 上最新的可用模型列表。
__call__
< source >( inputs **kwargs ) → dict
列表或 dict
列表的列表
参数
- inputs (
str
或List[str]
或Dict[str]
,或List[Dict[str]]
) — 要分类的一个或多个文本。为了使用文本对进行分类,您可以发送包含{"text", "text_pair"}
键的字典,或者发送这些字典的列表。 - top_k (
int
, 可选, 默认值:1
) — 返回的结果数量。 - function_to_apply (
str
, 可选, 默认值:"default"
) — 应用于模型输出以检索分数的函数。接受四个不同的值:如果未指定此参数,则将根据标签数量应用以下函数:
- 如果模型只有一个标签,则将对输出应用 sigmoid 函数。
- 如果模型有多个标签,则将对输出应用 softmax 函数。
可能的值有:
"sigmoid"
:对输出应用 sigmoid 函数。"softmax"
:对输出应用 softmax 函数。"none"
:不对输出应用任何函数。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典列表的形式出现,包含以下键
- label (
str
) — 预测的标签。 - score (
float
) — 相应的概率。
如果使用了 top_k
,则每个标签将返回一个这样的字典。
对作为输入给出的文本进行分类。
TextGenerationPipeline
类 transformers.TextGenerationPipeline
< 源代码 >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的继承模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型的模型卡片属性。 - framework (
str
,可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,将默认为当前安装的框架。如果未指定框架并且安装了两个框架,则将默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批大小,对于推理,这并不总是有益的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — 支持 CPU/GPU 的设备序号。设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 标志,指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)。
使用任何 ModelWithLMHead
的语言生成管道。此管道预测将跟随指定文本提示的单词。当底层模型是对话模型时,它也可以接受一个或多个聊天,在这种情况下,管道将在聊天模式下运行,并通过添加其响应来继续聊天。每个聊天都采用字典列表的形式,其中每个字典都包含“角色”和“内容”键。
示例
>>> from transformers import pipeline
>>> generator = pipeline(model="openai-community/gpt2")
>>> generator("I can't believe you did such a ", do_sample=False)
[{'generated_text': "I can't believe you did such a icky thing to me. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I'm so sorry. I"}]
>>> # These parameters will return suggestions, and only the newly created text making it easier for prompting suggestions.
>>> outputs = generator("My tart needs some", num_return_sequences=4, return_full_text=False)
>>> from transformers import pipeline
>>> generator = pipeline(model="HuggingFaceH4/zephyr-7b-beta")
>>> # Zephyr-beta is a conversational model, so let's pass it a chat instead of a single string
>>> generator([{"role": "user", "content": "What is the capital of France? Answer in one word."}], do_sample=False, max_new_tokens=2)
[{'generated_text': [{'role': 'user', 'content': 'What is the capital of France? Answer in one word.'}, {'role': 'assistant', 'content': 'Paris'}]}]
在管道教程中了解更多关于使用管道的基础知识。您可以将文本生成参数传递给此管道,以控制停止条件、解码策略等。在文本生成策略和文本生成中了解更多关于文本生成参数的信息。
此语言生成管道目前可以从pipeline()使用以下任务标识符加载:"text-generation"
。
此管道可以使用的模型是使用自回归语言建模目标训练的模型。请参阅 [huggingface.co/models] 上可用的文本补全模型列表和对话模型列表。
__call__
< source >( text_inputs **kwargs ) → dict
的列表或列表列表
参数
- text_inputs (
str
,List[str]
,List[Dict[str, str]]
, 或List[List[Dict[str, str]]]
) — 要完成的一个或多个提示(或提示列表)。如果传递字符串或字符串列表,则此管道将继续每个提示。或者,可以传递“聊天”(采用字典列表的形式,其中包含“角色”和“内容”键)或此类聊天列表。传递聊天时,将使用模型的聊天模板对其进行格式化,然后再将其传递给模型。 - return_tensors (
bool
, 可选, 默认值False
) — 是否在输出中返回预测的张量(作为标记索引)。如果设置为True
,则不返回解码后的文本。 - return_text (
bool
, 可选, 默认值True
) — 是否在输出中返回解码后的文本。 - return_full_text (
bool
, 可选, 默认值True
) — 如果设置为False
,则仅返回添加的文本,否则返回全文。仅当 return_text 设置为 True 时才有意义。 - clean_up_tokenization_spaces (
bool
, 可选, 默认值True
) — 是否清除文本输出中潜在的多余空格。 - continue_final_message(
bool
, 可选) — 这表明您希望模型继续输入聊天中的最后一条消息,而不是开始一条新消息,从而允许您“预先填写”其回复。默认情况下,当输入聊天中的最后一条消息具有assistant
角色时,此值为True
,否则为False
,但您可以通过设置此标志手动覆盖该行为。 - prefix (
str
, 可选) — 添加到提示的开头。 - handle_long_generation (
str
, 可选) — 默认情况下,此管道不处理长生成(以一种或另一种形式超过模型最大长度的生成)。没有完美的方法可以解决这个问题(更多信息:https://github.com/huggingface/transformers/issues/14033#issuecomment-948385227)。这提供了一些常见的策略来解决这个问题,具体取决于您的用例。None
:默认策略,不做任何特殊处理"hole"
:截断输入的左侧,并留出足够宽的间隙以进行生成(可能会截断很多提示,并且不适合生成超过模型容量的情况)
- generate_kwargs (
dict
, *可选*) — 将传递给模型的 generate 方法的附加关键字参数(请参阅此处与您的框架对应的 generate 方法)。
返回值
一个列表或一个字典列表
返回以下字典之一(不能同时返回 generated_text
和 generated_token_ids
)
- generated_text (
str
, 当return_text=True
时存在) — 生成的文本。 - generated_token_ids (
torch.Tensor
或tf.Tensor
, 当return_tensors=True
时存在) — 生成的文本的标记 ID。
完成作为输入给出的提示。
Text2TextGenerationPipeline
class transformers.Text2TextGenerationPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型;对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的标记器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
, *可选*) — 归属于此管道模型的模型卡片。 - framework (
str
, *可选*) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(在传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 DataLoader 时(在传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的批处理大小,对于推理来说,这并不总是有效的,请阅读 使用管道进行批处理 . - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 标志,指示管道输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。
使用 seq2seq 模型进行文本到文本生成的管道。
示例
>>> from transformers import pipeline
>>> generator = pipeline(model="mrm8488/t5-base-finetuned-question-generation-ap")
>>> generator(
... "answer: Manuel context: Manuel has created RuPERTa-base with the support of HF-Transformers and Google"
... )
[{'generated_text': 'question: Who created the RuPERTa-base?'}]
在管道教程中了解更多关于使用管道的基础知识。您可以将文本生成参数传递给此管道,以控制停止条件、解码策略等。在文本生成策略和文本生成中了解更多关于文本生成参数的信息。
此 Text2TextGenerationPipeline 管道目前可以使用以下任务标识符从 pipeline() 加载:"text2text-generation"
。
此管道可以使用的模型是在翻译任务上进行微调的模型。请参阅 huggingface.co/models 上最新的可用模型列表。有关可用参数列表,请参阅 以下文档
用法
text2text_generator = pipeline("text2text-generation")
text2text_generator("question: What is 42 ? context: 42 is the answer to life, the universe and everything")
__call__
< source >( *args **kwargs ) → 列表或 dict
列表的列表
参数
- args (
str
或List[str]
) — 用于编码器的输入文本。 - return_tensors (
bool
, 可选, 默认为False
) — 是否在输出中包含预测的张量(作为标记索引)。 - return_text (
bool
, 可选, 默认为True
) — 是否在输出中包含解码后的文本。 - clean_up_tokenization_spaces (
bool
, 可选, 默认为False
) — 是否清除文本输出中潜在的多余空格。 - truncation (
TruncationStrategy
, 可选, 默认为TruncationStrategy.DO_NOT_TRUNCATE
) — 管道内分词的截断策略。TruncationStrategy.DO_NOT_TRUNCATE
(默认)永远不会截断,但有时希望截断输入以适应模型的 max_length 而不是抛出错误。generate_kwargs — 传递给模型的 generate 方法的附加关键字参数(请参阅此处与您的框架相对应的 generate 方法)。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典的形式返回,包含以下键
- generated_text (
str
, 当return_text=True
时存在) — 生成的文本。 - generated_token_ids (
torch.Tensor
或tf.Tensor
, 当return_tensors=True
时存在) — 生成的文本的标记 ID。
使用作为输入给出的文本生成输出文本。
检查给定输入是否可能存在与模型相关的问题。
TokenClassificationPipeline
类 transformers.TokenClassificationPipeline
< 来源 >( args_parser = <transformers.pipelines.token_classification.TokenClassificationArgumentHandler object at 0x7f52082828f0> *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型,对于 TensorFlow,则需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道模型的模型卡。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架均已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
, 默认为""
) — 管道的任务标识符。 - num_workers (
int
, 可选, 默认为 8) — 当管道使用 *DataLoader* 时(传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道使用 *DataLoader* 时(传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的批次大小。对于推理而言,这并不总是有益的,请阅读使用管道进行批处理。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — 用于 CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递本机 ``torch.device`` 或 ``str`` - torch_dtype (
str
或torch.dtype
, 可选) — 直接作为 ``model_kwargs``(只是一个简单的快捷方式)发送,以使用此模型可用的精度(``torch.float16``、``torch.bfloat16``… 或 ``"auto"``) - binary_output (
bool
, 可选, 默认为 ``False``) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。 - ignore_labels (
List[str]
, 默认为["O"]
) — 要忽略的标签列表。 - grouped_entities (
bool
, 可选, 默认为False
) — 已弃用,请改用aggregation_strategy
。是否将与同一实体对应的标记分组到预测中。 - stride (
int
, 可选) — 如果提供了 stride,则管道将应用于所有文本。文本将被拆分为大小为 model_max_length 的块。仅适用于快速分词器和不同于NONE
的aggregation_strategy
。此参数的值定义了块之间重叠标记的数量。换句话说,模型将在每一步向前移动tokenizer.model_max_length - stride
个标记。 - aggregation_strategy (
str
, 可选, 默认为"none"
) — 根据模型预测融合(或不融合)标记的策略。- “none”:将不会进行任何聚合,只是简单地返回模型的原始结果
- “simple”:将尝试按照默认模式对实体进行分组。(A, B-TAG), (B, I-TAG), (C, I-TAG), (D, B-TAG2) (E, B-TAG2) 最终将变为 [{“word”: ABC, “entity”: “TAG”}, {“word”: “D”, “entity”: “TAG2”}, {“word”: “E”, “entity”: “TAG2”}] 请注意,两个连续的 B 标记最终将成为不同的实体。在基于词的语言上,我们最终可能会将词语不希望地拆分:想象一下 Microsoft 被标记为 [{“word”: “Micro”, “entity”: “ENTERPRISE”}, {“word”: “soft”, “entity”: “NAME”}]. 寻找 FIRST、MAX、AVERAGE 来减轻这种情况并消除单词的歧义(在支持该含义的语言上,基本上是空格分隔的标记)。这些缓解措施仅适用于真实单词,“New york”可能仍然会被标记为两个不同的实体。
- “first”:(仅适用于基于词的模型)将使用
SIMPLE
策略,但词语不能以不同的标记结束。当存在歧义时,词语将简单地使用该词第一个标记的标记。 - “average”:(仅适用于基于词的模型)将使用
SIMPLE
策略,但词语不能以不同的标记结束。分数将首先在标记之间平均,然后应用最大标签。 - “max”:(仅适用于基于词的模型)将使用
SIMPLE
策略,但词语不能以不同的标记结束。词实体将简单地是得分最高的标记。
使用任何 ModelForTokenClassification
的命名实体识别管道。有关更多信息,请参阅命名实体识别示例。
示例
>>> from transformers import pipeline
>>> token_classifier = pipeline(model="Jean-Baptiste/camembert-ner", aggregation_strategy="simple")
>>> sentence = "Je m'appelle jean-baptiste et je vis à montréal"
>>> tokens = token_classifier(sentence)
>>> tokens
[{'entity_group': 'PER', 'score': 0.9931, 'word': 'jean-baptiste', 'start': 12, 'end': 26}, {'entity_group': 'LOC', 'score': 0.998, 'word': 'montréal', 'start': 38, 'end': 47}]
>>> token = tokens[0]
>>> # Start and end provide an easy way to highlight words in the original text.
>>> sentence[token["start"] : token["end"]]
' jean-baptiste'
>>> # Some models use the same idea to do part of speech.
>>> syntaxer = pipeline(model="vblagoje/bert-english-uncased-finetuned-pos", aggregation_strategy="simple")
>>> syntaxer("My name is Sarah and I live in London")
[{'entity_group': 'PRON', 'score': 0.999, 'word': 'my', 'start': 0, 'end': 2}, {'entity_group': 'NOUN', 'score': 0.997, 'word': 'name', 'start': 3, 'end': 7}, {'entity_group': 'AUX', 'score': 0.994, 'word': 'is', 'start': 8, 'end': 10}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'sarah', 'start': 11, 'end': 16}, {'entity_group': 'CCONJ', 'score': 0.999, 'word': 'and', 'start': 17, 'end': 20}, {'entity_group': 'PRON', 'score': 0.999, 'word': 'i', 'start': 21, 'end': 22}, {'entity_group': 'VERB', 'score': 0.998, 'word': 'live', 'start': 23, 'end': 27}, {'entity_group': 'ADP', 'score': 0.999, 'word': 'in', 'start': 28, 'end': 30}, {'entity_group': 'PROPN', 'score': 0.999, 'word': 'london', 'start': 31, 'end': 37}]
在管道教程中了解有关使用管道的基础知识的更多信息
此标记识别管道目前可以通过以下任务标识符从 pipeline() 加载:"ner"
(用于预测序列中标记的类别:人、组织、位置或其他)。
此管道可以使用的模型是在标记分类任务上经过微调的模型。请在 huggingface.co/models 上查看可用的最新模型列表。
__call__
< source >( inputs: Union **kwargs ) → 一个列表或一个包含 dict
列表的列表
参数
返回值
列表或列表的列表,其中包含 dict
每个结果都是一个字典列表(对应输入中的每个标记一个字典,如果此管道是用 aggregation_strategy 实例化的,则每个实体一个字典),包含以下键
- word (
str
) — 已分类的标记/单词。这是通过解码选定的标记获得的。如果您想获得原始句子中的确切字符串,请使用start
和end
。 - score (
float
) —entity
的对应概率。 - entity (
str
) — 为该标记/单词预测的实体(当 aggregation_strategy 不是"none"
时,它被命名为 entity_group)。 - index (
int
,仅在aggregation_strategy="none"
时出现) — 句子中对应标记的索引。 - start (
int
,可选) — 句子中对应实体开始处的索引。仅当标记器中提供了偏移量时才存在 - end (
int
,可选) — 句子中对应实体结束处的索引。仅当标记器中提供了偏移量时才存在
将作为输入给出的文本的每个标记进行分类。
覆盖来自给定单词的不同意标记,以强制在单词边界上达成一致。
示例:micro|soft| com|pany| B-ENT I-NAME I-ENT I-ENT 将使用第一个策略重写为 microsoft| company| B-ENT I-ENT
gather_pre_entities
< source >( sentence: str input_ids: ndarray scores: ndarray offset_mapping: Optional special_tokens_mask: ndarray aggregation_strategy: AggregationStrategy )
将各种 numpy 数组融合到包含聚合所需所有信息的字典中
查找并分组预测为相同实体的相邻标记。
将预测为相同实体的相邻标记分组在一起。
TranslationPipeline
class transformers.TranslationPipeline
< source >( *args **kwargs )
参数
- **model** (PreTrainedModel 或 TFPreTrainedModel) — 流水线将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型;对于 TensorFlow,这需要是继承自 TFPreTrainedModel 的模型。
- **tokenizer** (PreTrainedTokenizer) — 流水线将用于为模型编码数据的标记器。该对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型对应的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,将默认使用当前安装的框架。如果未指定框架且两个框架都已安装,将默认使用
model
的框架,如果未提供模型,则默认使用 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理 . - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
... 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 标志,指示管道的输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)。
将一种语言翻译成另一种语言。
此翻译管道目前可以使用以下任务标识符从 pipeline() 加载:"translation_xx_to_yy"
。
此管道可以使用的模型是在翻译任务上进行微调的模型。请参阅 huggingface.co/models 上最新的可用模型列表。有关可用参数列表,请参阅以下文档
__call__
< source >( *args **kwargs ) → 列表或 dict
列表的列表
参数
- args (
str
或List[str]
) — 要翻译的文本。 - return_tensors (
bool
,可选,默认为False
) — 是否在输出中包含预测的张量(作为标记索引)。 - return_text (
bool
,可选,默认为True
) — 是否在输出中包含解码后的文本。 - clean_up_tokenization_spaces (
bool
,可选,默认为False
) — 是否清除文本输出中潜在的额外空格。 - src_lang (
str
,可选) — 输入文本的语言。可能对多语言模型是必需的。对单一双语翻译模型没有影响。 - tgt_lang (
str
,可选) — 期望输出文本的语言。可能对多语言模型是必需的。对单一双语翻译模型没有影响。generate_kwargs — 传递给模型的 generate 方法的附加关键字参数(请参阅此处对应于您框架的 generate 方法)。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典的形式返回,包含以下键
- translation_text (
str
,当return_text=True
时存在) — 翻译结果。 - translation_token_ids (
torch.Tensor
或tf.Tensor
,当return_tensors=True
时存在) — 翻译结果的标记 ID。
翻译作为输入给出的文本。
ZeroShotClassificationPipeline
类 transformers.ZeroShotClassificationPipeline
< 源代码 >( args_parser = <transformers.pipelines.zero_shot_classification.ZeroShotClassificationArgumentHandler object at 0x7f5208283f70> *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于编码模型数据的 tokenizer。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是 beneficial 的,请阅读使用管道进行批处理。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
。 - torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以便为此模型使用可用的精度(torch.float16
、torch.bfloat16
… 或"auto"
)。 - binary_output (
bool
, 可选, 默认值False
) — 指示流水线输出是否应采用序列化格式(例如,pickle)或原始输出数据(例如,文本)的标志。
基于 NLI 的零样本分类流水线,使用在 NLI(自然语言推理)任务上训练的 ModelForSequenceClassification
。与 text-classification
流水线等效,但这些模型不需要硬编码的潜在类别数量,可以在运行时选择。这通常意味着它更慢,但更加灵活。
可以传递任何序列和标签的组合,每个组合都将被视为前提/假设对并传递给预训练模型。然后,将 *蕴含* 的逻辑值作为候选标签有效的逻辑值。可以使用任何 NLI 模型,但 *蕴含* 标签的 ID 必须包含在模型配置的 :attr:~transformers.PretrainedConfig.label2id 中。
示例
>>> from transformers import pipeline
>>> oracle = pipeline(model="facebook/bart-large-mnli")
>>> oracle(
... "I have a problem with my iphone that needs to be resolved asap!!",
... candidate_labels=["urgent", "not urgent", "phone", "tablet", "computer"],
... )
{'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['urgent', 'phone', 'computer', 'not urgent', 'tablet'], 'scores': [0.504, 0.479, 0.013, 0.003, 0.002]}
>>> oracle(
... "I have a problem with my iphone that needs to be resolved asap!!",
... candidate_labels=["english", "german"],
... )
{'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['english', 'german'], 'scores': [0.814, 0.186]}
在管道教程中了解有关使用管道的基础知识的更多信息
此 NLI 流水线目前可以使用以下任务标识符从 pipeline() 加载:"zero-shot-classification"
。
此流水线可以使用的模型是在 NLI 任务上微调的模型。请参阅 huggingface.co/models 上最新的可用模型列表。
__call__
< source >( sequences: Union *args **kwargs ) → 一个 dict
或 dict
的列表
参数
- sequences (
str
或List[str]
) — 要分类的序列,如果模型输入太大,将被截断。 - candidate_labels (
str
或List[str]
) — 一组可能的类别标签,用于将每个序列分类到其中。可以是单个标签、逗号分隔的标签字符串或标签列表。 - hypothesis_template (
str
, 可选, 默认值"This example is {}."
) — 用于将每个标签转换为 NLI 风格假设的模板。此模板必须包含 {} 或类似语法,以便将候选标签插入到模板中。例如,默认模板为"This example is {}."
。对于候选标签"sports"
,这将被馈送到模型中,如"<cls> sequence to classify <sep> This example is sports . <sep>"
。默认模板在许多情况下都能很好地工作,但根据任务设置,尝试不同的模板可能是值得的。 - multi_label (
bool
,可选,默认为False
) — 是否多个候选标签可以为真。如果为False
,则对分数进行归一化,使每个序列的标签似然总和为 1。如果为True
,则将标签视为独立的,并通过对蕴涵分数与矛盾分数进行 softmax 来对每个候选标签的概率进行归一化。
返回值
一个 dict
或 dict
列表
每个结果都以字典的形式返回,包含以下键
- sequence (
str
) — 输出对应的序列。 - labels (
List[str]
) — 按似然顺序排序的标签。 - scores (
List[float]
) — 每个标签的概率。
对作为输入给出的序列进行分类。有关更多信息,请参阅 ZeroShotClassificationPipeline 文档。
多模态
可用于多模态任务的管道包括以下内容。
DocumentQuestionAnsweringPipeline
类 transformers.DocumentQuestionAnsweringPipeline
< 源代码 >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是 PyTorch 中继承自 PreTrainedModel 的模型和 TensorFlow 中继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于对模型数据进行编码的分词器。该对象继承自 PreTrainedTokenizer。
- **image_processor** (BaseImageProcessor) — 管道将使用的图像处理器,用于为模型编码数据。 该对象继承自 BaseImageProcessor。
- **modelcard** (
str
或ModelCard
, *可选*) — 此管道模型归属的模型卡。 - **framework** (
str
, *可选*) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。 必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。 如果未指定框架并且同时安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - **task** (
str
, 默认值""
) — 管道的任务标识符。 - **num_workers** (
int
, *可选*, 默认值 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - **batch_size** (
int
, *可选*, 默认值 1) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理 。 - **args_parser** (ArgumentHandler, *可选*) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — 支持 CPU/GPU 的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 指示流水线输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用任何 AutoModelForDocumentQuestionAnswering
的文档问答流水线。输入/输出类似于(提取式)问答流水线;但是,流水线将图像(以及可选的 OCR 处理的单词/框)作为输入,而不是文本上下文。
示例
>>> from transformers import pipeline
>>> document_qa = pipeline(model="impira/layoutlm-document-qa")
>>> document_qa(
... image="https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png",
... question="What is the invoice number?",
... )
[{'score': 0.425, 'answer': 'us-001', 'start': 16, 'end': 16}]
在管道教程中了解有关使用管道的基础知识的更多信息
此文档问答流水线目前可以使用以下任务标识符从 pipeline() 加载:"document-question-answering"
。
此流水线可以使用的模型是在文档问答任务上进行微调的模型。请参阅 huggingface.co/models 上最新的可用模型列表。
__call__
< 源代码 >( image: Union question: Optional = None word_boxes: Tuple = None **kwargs ) → 一个 dict
或 dict
的列表
参数
- image (
str
或PIL.Image
) — 流水线处理三种类型的图像:- 包含指向图像的 http 链接的字符串
- 包含图像本地路径的字符串
- 直接在 PIL 中加载的图像
流水线接受单个图像或一批图像。如果给定单个图像,则可以将其广播到多个问题。
- question (
str
) — 要询问文档的问题。 - word_boxes (
List[str, Tuple[float, float, float, float]]
,可选) — 单词和边界框列表(标准化 0->1000)。如果提供此可选输入,则管道将使用这些单词和边界框,而不是在图像上运行 OCR 来为需要它们的模型(例如 LayoutLM)派生它们。这允许您在管道的多次调用中重复使用 OCR 结果,而无需每次都重新运行它。 - top_k (
int
,可选,默认为 1) — 要返回的答案数(将按可能性顺序选择)。请注意,如果上下文中没有足够的选项可用,我们返回的答案少于 top_k 个。 - doc_stride (
int
,可选,默认为 128) — 如果文档中的单词太长,无法与模型的问题匹配,它将被分成几个块,并带有一些重叠。此参数控制该重叠的大小。 - max_answer_len (
int
,可选,默认为 15) — 预测答案的最大长度(例如,只考虑长度较短的答案)。 - max_seq_len (
int
,可选,默认为 384) — 传递给模型的每个块的句子(上下文 + 问题)的总长度(以标记为单位)的最大长度。如果需要,上下文将被分成几个块(使用doc_stride
作为重叠)。 - max_question_len (
int
,可选,默认为 64) — 问题在标记化后的最大长度。如果需要,它将被截断。 - handle_impossible_answer (
bool
,可选,默认为False
) — 我们是否接受 impossible 作为答案。 - lang (
str
, 可选) — 运行 OCR 时使用的语言。默认为英语。 - tesseract_config (
str
, 可选) — 在运行 OCR 时传递给 tesseract 的附加标志。 - timeout (
float
, 可选, 默认值为 None) — 从网络获取图像的最长等待时间(以秒为单位)。如果为 None,则不设置超时,调用可能会一直阻塞。
返回值
一个 dict
或 dict
列表
每个结果都以字典的形式返回,包含以下键
- score (
float
) — 与答案相关的概率。 - start (
int
) — 答案的起始词索引(在输入的 OCR 版本或提供的word_boxes
中)。 - end (
int
) — 答案的结束词索引(在输入的 OCR 版本或提供的word_boxes
中)。 - answer (
str
) — 问题的答案。 - words (
list[int]
) — 答案中每个单词/框对的索引
使用文档回答作为输入给出的问题。文档定义为一个图像和一个可选的 (word, box) 元组列表,这些元组表示文档中的文本。如果没有提供 word_boxes
,它将使用 Tesseract OCR 引擎(如果可用)自动提取单词和框,用于需要将它们作为输入的类似 LayoutLM 的模型。对于 Donut,不运行 OCR。
您可以通过多种方式调用管道
pipeline(image=image, question=question)
pipeline(image=image, question=question, word_boxes=word_boxes)
pipeline([{"image": image, "question": question}])
pipeline([{"image": image, "question": question, "word_boxes": word_boxes}])
FeatureExtractionPipeline
class transformers.FeatureExtractionPipeline
< source >( model: Union tokenizer: Optional = None feature_extractor: Optional = None image_processor: Optional = None modelcard: Optional = None framework: Optional = None task: str = '' args_parser: ArgumentHandler = None device: Union = None torch_dtype: Union = None binary_output: bool = False **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是一个继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的分词器。此对象继承自 PreTrainedTokenizer。
- modelcard (
str
或ModelCard
,可选) — 此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道使用 *DataLoader* 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道使用 *DataLoader* 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
, 可选, 默认值为 -1) — 用于支持 CPU/GPU 的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生的torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以便为此模型使用可用的精度(torch.float16
、torch.bfloat16
……或"auto"
) - tokenize_kwargs (
dict
, 可选) — 传递给分词器的其他关键字参数字典。 - return_tensors (
bool
, 可选) — 如果为True
,则根据指定的框架返回张量,否则返回列表。
特征提取流水线不使用模型头。此流水线从基本转换器中提取隐藏状态,这些状态可用作下游任务中的特征。
示例
>>> from transformers import pipeline
>>> extractor = pipeline(model="google-bert/bert-base-uncased", task="feature-extraction")
>>> result = extractor("This is a simple test.", return_tensors=True)
>>> result.shape # This is a tensor of shape [1, sequence_length, hidden_dimension] representing the input string.
torch.Size([1, 8, 768])
在管道教程中了解有关使用管道的基础知识的更多信息
此特征提取流水线目前可以使用任务标识符 "feature-extraction"
从 pipeline() 加载。
所有模型均可用于此流水线。请参阅 huggingface.co/models 上的所有模型列表,包括社区贡献的模型。
__call__
< source >( *args **kwargs ) → float
的嵌套列表
提取输入的特征。
ImageFeatureExtractionPipeline
class transformers.ImageFeatureExtractionPipeline
< source >( model: Union tokenizer: Optional = None feature_extractor: Optional = None image_processor: Optional = None modelcard: Optional = None framework: Optional = None task: str = '' args_parser: ArgumentHandler = None device: Union = None torch_dtype: Union = None binary_output: bool = False **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 将由流水线用于进行预测的模型。这需要是 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的继承模型。
- image_processor (BaseImageProcessor) — 将由流水线用于编码模型数据的图像处理器。此对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此流水线模型的模型卡。 - framework (
str
,可选) — 要使用的框架,"pt"
代表 PyTorch,"tf"
代表 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 流水线的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当流水线使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当流水线使用 DataLoader 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用流水线进行批处理 。 - args_parser (ArgumentHandler,可选) — 负责解析提供的流水线参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以便为此模型使用可用的精度(torch.float16
、torch.bfloat16
、… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。 - image_processor_kwargs (
dict
,可选) — 传递给图像处理器的附加关键字参数字典,例如 {“size”: {“height”: 100, “width”: 100}} - pool (
bool
,可选,默认为False
) — 是否返回池化输出。如果为False
,模型将返回原始隐藏状态。
图像特征提取管道不使用模型头。此管道从基本 Transformer 中提取隐藏状态,这些状态可用作下游任务中的特征。
示例
>>> from transformers import pipeline
>>> extractor = pipeline(model="google/vit-base-patch16-224", task="image-feature-extraction")
>>> result = extractor("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", return_tensors=True)
>>> result.shape # This is a tensor of shape [1, sequence_lenth, hidden_dimension] representing the input image.
torch.Size([1, 197, 768])
在管道教程中了解有关使用管道的基础知识的更多信息
此图像特征提取管道目前可以从 pipeline() 使用任务标识符 "image-feature-extraction"
加载。
所有视觉模型均可用于此管道。请参阅 huggingface.co/models 上的所有模型列表,包括社区贡献的模型。
__call__
< source >( *args **kwargs ) → float
的嵌套列表
提取输入的特征。
ImageToTextPipeline
类 transformers.ImageToTextPipeline
< source >( *args **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是 PyTorch 的 PreTrainedModel 和 TensorFlow 的 TFPreTrainedModel 的继承模型。
- tokenizer (PreTrainedTokenizer) — 管道将用于为模型编码数据的标记器。此对象继承自 PreTrainedTokenizer。
- image_processor (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。此对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
, 可选) — 归因于此管道模型的模型卡。 - framework (
str
, 可选) — 要使用的框架,PyTorch 为"pt"
或 TensorFlow 为"tf"
。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) - 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) - 当管道使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) - 当管道使用 *DataLoader* 时(传递数据集时,在 GPU 上使用 Pytorch 模型),要使用的批处理大小,对于推理而言,这并不总是有益的,请阅读使用管道进行批处理。 - args_parser (ArgumentHandler,可选) - 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) - 用于 CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) - 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
…或"auto"
) - binary_output (
bool
,可选,默认为False
) - 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用 AutoModelForVision2Seq
的图像到文本管道。此管道可预测给定图像的标题。
示例
>>> from transformers import pipeline
>>> captioner = pipeline(model="ydshieh/vit-gpt2-coco-en")
>>> captioner("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
[{'generated_text': 'two birds are standing next to each other '}]
在管道教程中了解有关使用管道的基础知识的更多信息
此图像到文本管道目前可以使用以下任务标识符从 pipeline() 加载:“image-to-text”。
有关可用模型列表,请参见 huggingface.co/models。
__call__
< source >( images: Union **kwargs ) → 列表或字典列表的列表 dict
参数
- images (
str
,List[str]
,PIL.Image
或List[PIL.Image]
) — 此管道处理三种类型的图像:- 包含指向图像的 HTTP(s) 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
此管道接受单个图像或一批图像。
- max_new_tokens (
int
, 可选) — 要生成的最大标记数量。默认情况下,它将使用generate
默认值。 - generate_kwargs (
Dict
, 可选) — 将其传递给generate
,以便将所有这些参数直接发送到generate
,从而完全控制此函数。 - timeout (
float
, 可选, 默认值为 None) — 从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。
返回值
列表或列表的列表,其中包含 dict
每个结果都以字典形式返回,包含以下键
- generated_text (
str
) — 生成的文本。
将标签分配给作为输入传递的图像。
MaskGenerationPipeline
class transformers.MaskGenerationPipeline
< source >( **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。这需要是继承自 PreTrainedModel(对于 PyTorch)和 TFPreTrainedModel(对于 TensorFlow)的模型。
- image_processor (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。此对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
,可选) — 归属于此管道模型的模型卡片。 - framework (
str
,可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
,默认为""
) — 管道的任务标识符。 - num_workers (
int
,可选,默认为 8) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的worker数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上用于 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — 用于 CPU/GPU 支持的设备序号。将其设置为 -1 将使用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
……或"auto"
) - binary_output (
bool
, 可选, 默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。 - points_per_batch (可选, int, 默认为 64) — 设置模型同时运行的点数。数字越大可能速度越快,但会使用更多 GPU 内存。
- output_bboxes_mask (
bool
, 可选, 默认为False
) — 是否输出边界框预测。 - output_rle_masks (
bool
, 可选, 默认为False
) — 是否以RLE
格式输出掩码
使用 SamForMaskGeneration
对图像进行自动掩码生成。给定图像,此管道会预测图像的二进制掩码。它是一个 ChunkPipeline
,因为您可以将小批量中的点分开,以避免出现 OOM 问题。使用 points_per_batch
参数来控制将同时处理的点数。默认为 64
。
该管道分 3 步工作
preprocess
:生成一个包含 1024 个均匀分布的点的网格,以及边界框和点标签。有关如何创建点和边界框的更多详细信息,请查看_generate_crop_boxes
函数。图像也会使用image_processor
进行预处理。此函数yields
一个包含points_per_batch
个点的小批量。forward
:将preprocess
的输出提供给模型。图像嵌入仅计算一次。调用self.model.get_image_embeddings
并确保不计算梯度,并且张量和模型位于同一设备上。postprocess
:自动掩码生成最重要的部分在这里发生。它包含三个步骤- image_processor.postprocess_masks(在每个 minibatch 循环上运行):接收原始输出掩码,根据图像大小调整大小,并将其转换为二进制掩码。
- image_processor.filter_masks(在每个 minibatch 循环上):使用
pred_iou_thresh
和stability_scores
。它还应用基于非极大值抑制的各种滤波器来去除错误的掩码。 - image_processor.postprocess_masks_for_amg 对掩码应用 NSM 以仅保留相关的掩码。
示例
>>> from transformers import pipeline
>>> generator = pipeline(model="facebook/sam-vit-base", task="mask-generation")
>>> outputs = generator(
... "http://images.cocodataset.org/val2017/000000039769.jpg",
... )
>>> outputs = generator(
... "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png", points_per_batch=128
... )
在管道教程中了解有关使用管道的基础知识的更多信息
目前,可以使用以下任务标识符从 pipeline() 加载此分割管道:"mask-generation"
。
请参阅 huggingface.co/models 上的可用模型列表。
__call__
< source >( image *args num_workers = None batch_size = None **kwargs ) → Dict
参数
- 输入 (
np.ndarray
或bytes
或str
或dict
) — 图像或图像列表。 - mask_threshold (
float
,可选,默认为 0.0) — 将预测的掩码转换为二进制值时使用的阈值。 - pred_iou_thresh (
float
,可选,默认为 0.88) — 应用于模型预测掩码质量的过滤阈值,范围为[0,1]
。 - stability_score_thresh (
float
,可选,默认为 0.95) — 过滤阈值,范围为[0,1]
,使用掩码在更改用于对模型掩码预测进行二值化的阈值下的稳定性。 - stability_score_offset (
int
,可选,默认为 1) — 计算稳定性分数时阈值的偏移量。 - **crops_nms_thresh** (
float
,*可选*,默认为 0.7) — 用于非极大值抑制以过滤重复掩码的边界框 IoU 截止值。 - **crops_n_layers** (
int
,*可选*,默认为 0) — 如果 `crops_n_layers>0`,则将在图像的裁剪区域再次运行掩码预测。设置要运行的层数,其中每一层都有 2**i_layer 个图像裁剪区域。 - **crop_overlap_ratio** (
float
,*可选*,默认为 `512 / 1500`) — 设置裁剪区域重叠的程度。在第一个裁剪层中,裁剪区域将按图像长度的此分数重叠。具有更多裁剪区域的后续层将按比例缩小此重叠。 - **crop_n_points_downscale_factor** (
int
,*可选*,默认为 `1`) — 第 n 层中采样的每边点数按 crop_n_points_downscale_factor**n 缩小。 - **timeout** (
float
,*可选*,默认为 None) — 从网络获取图像的最长等待时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。
返回值
字典
具有以下键的字典
- **mask** (
PIL.Image
) — 检测到的对象的二进制掩码,作为原始图像形状为 `(width, height)` 的 PIL 图像。如果未找到对象,则返回填充零的掩码。 - **score** (*可选*
float
) — 可选,当模型能够估计由标签和掩码描述的“对象”的置信度时。
生成二进制分割掩码
VisualQuestionAnsweringPipeline
class transformers.VisualQuestionAnsweringPipeline
< source >( *args **kwargs )
参数
- **model** (PreTrainedModel 或 TFPreTrainedModel) — 管道将用于进行预测的模型。 这需要是 PyTorch 继承自 PreTrainedModel 和 TensorFlow 继承自 TFPreTrainedModel 的模型。
- **tokenizer** (PreTrainedTokenizer) — 管道将用于为模型编码数据的标记器。 此对象继承自 PreTrainedTokenizer。
- **image_processor** (BaseImageProcessor) — 管道将用于为模型编码数据的图像处理器。 此对象继承自 BaseImageProcessor。
- **modelcard** (
str
或ModelCard
,*可选*) — 归属于此管道模型的模型卡片。 - **framework** (
str
,*可选*) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。 必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。 如果未指定框架并且安装了两个框架,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - **task** (
str
,默认为""
) — 管道的任务标识符。 - **num_workers** (
int
,*可选*,默认为 8) — 当管道将使用 *DataLoader* 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的worker数量。 - batch_size (
int
, 可选, 默认为 1) — 当管道将使用 DataLoader 时(传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理,这并不总是有益的,请阅读 使用管道进行批处理。 - args_parser (ArgumentHandler, 可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
, 可选, 默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
。 - torch_dtype (
str
或torch.dtype
, 可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型可用的精度(torch.float16
、torch.bfloat16
... 或"auto"
)。 - binary_output (
bool
, 可选, 默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或原始输出数据(例如文本)的标志。
使用 AutoModelForVisualQuestionAnswering
的视觉问答管道。此管道目前仅在 PyTorch 中可用。
示例
>>> from transformers import pipeline
>>> oracle = pipeline(model="dandelin/vilt-b32-finetuned-vqa")
>>> image_url = "https://huggingface.co/datasets/Narsil/image_dummy/raw/main/lena.png"
>>> oracle(question="What is she wearing ?", image=image_url)
[{'score': 0.948, 'answer': 'hat'}, {'score': 0.009, 'answer': 'fedora'}, {'score': 0.003, 'answer': 'clothes'}, {'score': 0.003, 'answer': 'sun hat'}, {'score': 0.002, 'answer': 'nothing'}]
>>> oracle(question="What is she wearing ?", image=image_url, top_k=1)
[{'score': 0.948, 'answer': 'hat'}]
>>> oracle(question="Is this a person ?", image=image_url, top_k=1)
[{'score': 0.993, 'answer': 'yes'}]
>>> oracle(question="Is this a man ?", image=image_url, top_k=1)
[{'score': 0.996, 'answer': 'no'}]
在管道教程中了解有关使用管道的基础知识的更多信息
此视觉问答管道目前可以使用以下任务标识符从 pipeline() 加载:"visual-question-answering", "vqa"
。
此管道可以使用的模型是在视觉问答任务上进行微调的模型。有关可用模型的最新列表,请参阅 huggingface.co/models。
__call__
< source >( image: Union question: Union = None **kwargs ) → 包含结果的字典或字典列表。字典包含以下键
参数
- image (
str
、List[str]
、PIL.Image
、List[PIL.Image]
或KeyDataset
) — 此流水线处理三种类型的图像:- 包含指向图像的 http 链接的字符串
- 包含图像本地路径的字符串
- 直接加载到 PIL 中的图像
该流水线接受单个图像或一批图像。如果给定单个图像,则可以将其广播到多个问题。对于数据集:传入的数据集类型必须为
transformers.pipelines.pt_utils.KeyDataset
示例:
返回值
包含结果的字典或字典列表。字典包含以下键
- label (
str
) — 模型识别的标签。 - score (
int
) — 模型为此标签赋予的分数。
回答有关图像的开放式问题。该流水线接受几种类型的输入,详情如下
pipeline(image=image, question=question)
pipeline({"image": image, "question": question})
pipeline([{"image": image, "question": question}])
pipeline([{"image": image, "question": question}, {"image": image, "question": question}])
父类:Pipeline
class transformers.Pipeline
< source >( model: Union tokenizer: Optional = None feature_extractor: Optional = None image_processor: Optional = None modelcard: Optional = None framework: Optional = None task: str = '' args_parser: ArgumentHandler = None device: Union = None torch_dtype: Union = None binary_output: bool = False **kwargs )
参数
- model (PreTrainedModel 或 TFPreTrainedModel) — 流水线将用于进行预测的模型。对于 PyTorch,这需要是继承自 PreTrainedModel 的模型;对于 TensorFlow,这需要是继承自 TFPreTrainedModel 的模型。
- tokenizer (PreTrainedTokenizer) — 流水线将要用来对模型数据进行编码的分词器。此对象继承自 PreTrainedTokenizer。
- feature_extractor (SequenceFeatureExtractor) — 流水线将要用来对模型数据进行编码的特征提取器。此对象继承自 SequenceFeatureExtractor。
- image_processor (BaseImageProcessor) — 流水线将要用来对模型数据进行编码的图像处理器。此对象继承自 BaseImageProcessor。
- modelcard (
str
或ModelCard
, 可选) — 此流水线模型归属的模型卡片。 - framework (
str
, 可选) — 要使用的框架,"pt"
表示 PyTorch,"tf"
表示 TensorFlow。必须安装指定的框架。如果未指定框架,则默认为当前安装的框架。如果未指定框架且两个框架都已安装,则默认为
model
的框架,如果未提供模型,则默认为 PyTorch。 - task (
str
, 默认为""
) — 流水线的任务标识符。 - num_workers (
int
, 可选, 默认为 8) — 当流水线将使用 *DataLoader* 时(传递数据集时,在 Pytorch 模型的 GPU 上),要使用的 worker 数量。 - batch_size (
int
,可选,默认为 1) — 当管道将使用 *DataLoader* 时(在传递数据集时,在 GPU 上为 Pytorch 模型),要使用的批次大小,对于推理而言,这并不总是有益的,请阅读 使用管道进行批处理 。 - args_parser (ArgumentHandler,可选) — 负责解析提供的管道参数的对象的引用。
- device (
int
,可选,默认为 -1) — CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,正数将在关联的 CUDA 设备 ID 上运行模型。您也可以传递原生torch.device
或str
- torch_dtype (
str
或torch.dtype
,可选) — 直接作为model_kwargs
(只是一个更简单的快捷方式)发送,以使用此模型的可用精度(torch.float16
、torch.bfloat16
…… 或"auto"
) - binary_output (
bool
,可选,默认为False
) — 指示管道输出是否应采用序列化格式(即 pickle)或作为原始输出数据(例如文本)的标志。
Pipeline 类是所有管道继承的类。有关不同管道之间共享的方法,请参阅此类。
实现流水线操作的基类。Pipeline 工作流定义为以下操作的序列
输入 -> 分词 -> 模型推理 -> 后处理(取决于任务) -> 输出
Pipeline 支持通过 device 参数在 CPU 或 GPU 上运行(见下文)。
某些管道,例如 FeatureExtractionPipeline ('feature-extraction'
) 将大型张量对象输出为嵌套列表。为了避免将这种大型结构作为文本数据转储,我们提供了 binary_output
构造函数参数。如果设置为 True
,输出将以 pickle 格式存储。
check_model_type
< source >( supported_models: Union )
检查模型类是否受流水线支持。
上下文管理器,允许以框架无关的方式在用户指定的设备上分配张量。
确保张量在设备上
< source >( **inputs ) → Dict[str, torch.Tensor]
确保 PyTorch 张量位于指定的设备上。
后处理将接收 _forward
方法的原始输出(通常是张量),并将其重新格式化为更友好的格式。通常,它将输出结果列表、字典或结果(仅包含字符串和数字)。
Scikit / Keras 与 transformers 流水线的接口。此方法将转发到 call()。
Preprocess 将获取特定流水线的 input_
并返回 _forward
正确运行所需的所有内容的字典。它应该至少包含一个张量,但可能包含任意其他项目。
push_to_hub
< source >( repo_id: str use_temp_dir: Optional = None commit_message: Optional = None private: Optional = None token: Union = None max_shard_size: Union = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: Optional = None **deprecated_kwargs )
参数
- repo_id (
str
) — 要将流水线推送到哪个存储库的名称。当推送到给定组织时,它应该包含您的组织名称。 - use_temp_dir (
bool
, 可选) — 是否使用临时目录来存储保存的文件,然后再将它们推送到 Hub。如果没有任何目录的名称像repo_id
,则默认为True
,否则为False
。 - commit_message (
str
,可选) — 推送时提交的信息。默认为"Upload pipe"
。 - private (
bool
,可选) — 创建的仓库是否应该是私有的。 - token (
bool
或str
,可选) — 用作远程文件 HTTP 持有者授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
,可选,默认为"5GB"
) — 仅适用于模型。检查点分片前的最大大小。然后,每个检查点分片的大小都将小于此大小。如果表示为字符串,则需要是数字后跟单位(例如"5MB"
)。我们默认将其设置为"5GB"
,以便用户可以在免费的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。 - create_pr (
bool
,可选,默认为False
) — 是否使用上传的文件创建 PR 或直接提交。 - safe_serialization (
bool
,可选,默认为True
) — 是否将模型权重转换为 safetensors 格式以实现更安全的序列化。 - revision (
str
,可选) — 要将上传的文件推送到哪个分支。 - commit_description (
str
,可选) — 将创建的提交的描述 - tags (
List[str]
,可选) — 要推送到 Hub 的标签列表。
将流水线文件上传到 🤗 模型中心。
示例
from transformers import pipeline
pipe = pipeline("google-bert/bert-base-cased")
# Push the pipe to your namespace with the name "my-finetuned-bert".
pipe.push_to_hub("my-finetuned-bert")
# Push the pipe to an organization with the name "my-finetuned-bert".
pipe.push_to_hub("huggingface/my-finetuned-bert")
save_pretrained
< source >( save_directory: Union safe_serialization: bool = True **kwargs )
参数
- save_directory (
str
或os.PathLike
) — 要保存到的目录的路径。如果它不存在,则将创建它。 - safe_serialization (
str
) — 是否使用safetensors
还是 PyTorch 或 Tensorflow 的传统方式保存模型。 - kwargs (
Dict[str, Any]
,可选) — 传递给 push_to_hub() 方法的其他关键字参数。
保存流水线的模型和分词器。
Scikit / Keras 与 transformers 流水线的接口。此方法将转发到 call()。