Transformers 模型推理与训练完整指南:3 步跑通 Pipeline 实战
2026/9/21 13:21:19 网站建设 项目流程

Transformers 模型推理与训练完整指南:3 步跑通 Pipeline 实战

【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers

Transformers 是 Hugging Face 推出的模型定义框架,覆盖文本、视觉、音频与多模态领域的模型推理和训练。对刚接触它的人来说,最顺手的切入点是 Pipeline:一行代码加载预训练模型,直接对文本或图片做推理,无需手写前向计算。全文按由浅入深的顺序组织:先认识它的三个核心数据结构,再装好环境跑通第一次推理,然后完成图像分类、文本生成、微调三个真实任务,最后给一份工程化避坑清单。

先搞懂核心概念:Config、Model、Preprocessor 三件套

把 Transformers 里的一个模型想象成一家餐厅:Config 是菜单规格,Model 是厨房,Preprocessor 是前台服务员。你调用的 Pipeline 则是"一站式柜台",把三者打包好,你只管递上食材(输入)。

核心结构类比职责
Config(configuration)模型的"体检单"存储层数、隐层维度、词表大小等架构超参数
Model(modeling)实体本身真正执行前向计算的神经网络
Preprocessor(tokenizer / image processor)"翻译官"把文本或图片转成模型能吃的张量
Pipeline一站式柜台将三者打包,暴露统一的可调用接口

每个任务对应一个 task 标识符,比如image-classificationtext-generation,具体清单可以看 src/transformers/pipelines/ 目录下的任务模块。以图像分类为例,把上面那张仓库测试图喂给 Pipeline,返回的是"标签 + 置信度"列表:

[{'label': 'tabby, tabby cat', 'score': 0.6641}, {'label': 'tiger cat', 'score': 0.1327}]

这就是 Transformers 推理的基本输出形态:一个带分数的预测结果列表。

从零到一:一键安装并跑通第一次推理

安装只要一行(需要已装好 Python 3.9+):

pip install transformers torch

下面是最短可运行示例,输入直接指向仓库内的本地测试图片:

from transformers import pipeline pipe = pipeline(task="image-classification", model="google/vit-base-patch16-224") pipe("tests/fixtures/tests_samples/COCO/000000039769.png")

首次运行会自动下载模型权重并缓存到本地,之后每次启动都是秒级加载。看到上面那样的[{'label': ..., 'score': ...}]输出,说明你的 Transformers 模型推理链路已经通了。

💡 换任务只需改task参数:同一套调用方式覆盖文本、图像、音频三大类几十个任务。

真实任务实操:按难度递进的三个例子

任务一(入门):对本地图片做分类

要解决的问题:批量确认一批图片各是什么。关键实现就是上面的 Pipeline 调用,输入换成另一张仓库测试图:

pipe("tests/fixtures/tests_samples/COCO/apple.jpg") # [{'label': 'apple', 'score': 0.9997}, ...]

效果:置信度 0.9997,直接可用于建图像标签库。若需要逐像素级别的理解,可切到image-segmentation任务,仓库里就配好了对应的标注样例:

任务二(进阶):LLM 文本生成与参数控制

要解决的问题:用大模型续写或补全文本。关键实现是text-generation任务加生成参数,do_sample=False保证结果可复现,max_new_tokens限制长度防止失控:

gen = pipeline(task="text-generation", model="google/gemma-2-2b") gen("the secret to baking a really good cake is", max_new_tokens=16, do_sample=False) # [{'generated_text': 'the secret to baking a really good cake is 1. the right ingredients 2. the'}]

效果:输入是字符串列表就返回字符串列表,天然支持批量请求。

任务三(高阶):用 Trainer 微调一个文本分类器

要解决的问题:预训练模型不认识你的业务文本,需要微调。仓库里带了完整示例脚本 examples/pytorch/text-classification/run_classification.py,核心就是一条命令:

python run_classification.py \ --model_name_or_path google/distilbert-base-uncased \ --dataset_name imdb --max_length 128 \ --output_dir ./imdb \ --per_device_train_batch_size 16 --num_train_epochs 3

效果:训练完的模型自动保存到./imdb,用AutoModelForSequenceClassification.from_pretrained("./imdb")即可加载上线,推理端依然走 Pipeline。

工程化考量:上生产前检查这 5 件事

  1. 设备配置:Pipeline 默认跑 CPU(device=-1),有卡就设device=0,Apple Silicon 也支持。
  2. 显存与速度:加载时用半精度权重可显著降显存,推理侧可启用 FlashAttention;分布式训练再看 torch.compile 与 DeepSpeed 这类进阶项。
  3. 输入边界:长文本必须显式设置max_length并确定截断策略,否则超长输入既慢又容易 OOM。
  4. 容错兜底:对不可控输入做 try/except,模型加载失败、返回空结果时要有降级逻辑。
  5. 版本与迁移:transformers 对 torch、accelate 版本耦合较紧,升级到 v5 前先看仓库根目录的 MIGRATION_GUIDE_V5.md 与依赖版本表。

收尾:Transformers 到底能帮你干什么

Transformers 把"模型定义—预训练权重—推理训练"收敛成一套统一 API:推理用 Pipeline 几行代码搞定,训练用 Trainer 一条命令跑完,且同一套模型定义可无缝对接 vLLM、llama.cpp 等周边生态。想深入细节,建议从 docs/source/en/index.md 入门,Pipeline 参数看 docs/source/en/pipeline_tutorial.md,动手训练则直接改 examples/pytorch/ 下的脚本。

【免费下载链接】transformers🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询