菜单

流水线系统

相关源文件

流水线系统为在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问答文本 + 问题
摘要SummarizationPipelineSeq2Seq文本
翻译TranslationPipelineSeq2Seq文本
填充掩码FillMaskPipeline掩码语言模型带有掩码令牌的文本
图像分类ImageClassificationPipeline图像分类图像
视觉问答VisualQuestionAnsweringPipelineVQA图像 + 问题
自动语音识别AutomaticSpeechRecognitionPipelineCTC/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模型,同时保持了对高级用例和自定义实现的灵活性。