流水线系统为在transformers库中使用预训练模型提供了一个高级的、面向任务的API。它抽象了模型加载、预处理和后处理的复杂性,允许用户以最少的代码执行常见的自然语言处理(NLP)、计算机视觉和音频任务。
本文档涵盖了流水线架构、工厂模式和任务实现。有关底层模型加载基础设施的信息,请参阅基础类和模型加载。有关流水线中分词的详细信息,请参阅分词系统。
流水线系统围绕一个工厂模式构建,该模式根据指定任务自动选择和配置适当的模型、分词器和处理组件。
来源: src/transformers/pipelines/__init__.py567-862 src/transformers/pipelines/base.py209-350
该系统维护着一个支持任务及其相应实现的注册表
来源: src/transformers/pipelines/__init__.py154-442 src/transformers/pipelines/__init__.py466
pipeline() 函数作为主要入口点,实现任务和模型的自动解析
来源: src/transformers/pipelines/__init__.py567-862 src/transformers/pipelines/__init__.py476-501 src/transformers/pipelines/__init__.py503-549
| 任务 | 流水线类 | 模型类型 | 输入类型 |
|---|---|---|---|
文本生成 | TextGenerationPipeline | 因果语言模型 | 文本,聊天 |
文本分类 | TextClassificationPipeline | 序列分类 | 文本 |
问答 | QuestionAnsweringPipeline | 问答 | 文本 + 问题 |
摘要 | SummarizationPipeline | Seq2Seq | 文本 |
翻译 | TranslationPipeline | Seq2Seq | 文本 |
填充掩码 | FillMaskPipeline | 掩码语言模型 | 带有掩码令牌的文本 |
图像分类 | ImageClassificationPipeline | 图像分类 | 图像 |
视觉问答 | VisualQuestionAnsweringPipeline | VQA | 图像 + 问题 |
自动语音识别 | AutomaticSpeechRecognitionPipeline | CTC/Seq2Seq | 音频 |
来源: src/transformers/pipelines/__init__.py160-442
Pipeline 基类定义了所有特定任务流水线的通用接口和执行模式
来源: src/transformers/pipelines/base.py820-1200 src/transformers/pipelines/base.py1309-1450
来源: src/transformers/pipelines/base.py1309-1450
TextGenerationPipeline 处理因果语言建模任务和聊天补全
来源: src/transformers/pipelines/text_generation.py42-513
DocumentQuestionAnsweringPipeline 结合了光学字符识别(OCR)和问答,用于文档理解
来源: src/transformers/pipelines/document_question_answering.py103-581
来源: src/transformers/pipelines/visual_question_answering.py21-207
来源: src/transformers/pipelines/base.py209-350 src/transformers/pipelines/base.py1651-1700
流水线系统提供自动批处理,并支持填充和整理
来源: src/transformers/pipelines/base.py146-206 src/transformers/pipelines/base.py87-144
来源: src/transformers/pipelines/base.py489-504
该系统通过注册表模式支持自定义流水线实现
来源: src/transformers/pipelines/base.py1850-1920 src/transformers/pipelines/__init__.py466
该流水线系统提供了一个统一、用户友好的接口,用于访问全系列的transformers模型,同时保持了对高级用例和自定义实现的灵活性。