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-classification、text-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 件事
- 设备配置:Pipeline 默认跑 CPU(
device=-1),有卡就设device=0,Apple Silicon 也支持。 - 显存与速度:加载时用半精度权重可显著降显存,推理侧可启用 FlashAttention;分布式训练再看 torch.compile 与 DeepSpeed 这类进阶项。
- 输入边界:长文本必须显式设置
max_length并确定截断策略,否则超长输入既慢又容易 OOM。 - 容错兜底:对不可控输入做 try/except,模型加载失败、返回空结果时要有降级逻辑。
- 版本与迁移: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),仅供参考