正在打开工具详情…
正在打开工具详情…
Python 里跑预训练模型的通用层:一个 pipeline 覆盖文本、视觉、音频与多模态,Hub 上百万级 checkpoint 直接加载。适合要推理或微调的人;不适合想拿它拼神经网络积木的人——它刻意不做模块化抽象。
要在 Python 里做推理或微调的研究者、算法工程师,以及需要换模型、换框架而不想重写代码的人。
想要一套可自由拼装的神经网络积木、或要写通用训练循环的人——官方自己说该用 Accelerate;也别指望它做高并发服务,那是推理引擎的活。
Transformers 是「模型定义层」:同一个模型定义被 Axolotl、Unsloth、DeepSpeed、FSDP、PyTorch-Lightning 这些训练框架,vLLM、SGLang、TGI 这些推理引擎,以及 llama.cpp、mlx 这些相邻库共用。你现在用的几乎所有开源模型,定义都在这一层。
上手只要三个类,核心是 pipeline:pipeline(task="text-generation", model="Qwen/Qwen2.5-1.5B") 一句话就能生成,换成 automatic-speech-recognition + Whisper 就是语音识别,换成 image-classification + DINOv2 就是图像分类,接口一致。Hub 上有百万级 checkpoint 可直接拉。
README 里最有价值的是「什么时候不该用 Transformers」那一节,值得照抄:它不是神经网络的积木盒——模型文件故意不做额外抽象,为的是研究者能快速迭代单个模型;训练 API 也是围绕它自己的 PyTorch 模型优化的,通用的机器学习循环该用 Accelerate。
环境要求 Python 3.10+ 与 PyTorch 2.6+。装要用带 torch 的变体 pip install "transformers[torch]",从源码装能拿最新改动但可能不稳定。另外它只负责模型本身,服务化、高并发这些不在它的职责里。
上手步骤之外的具体做法:常见场景怎么配、命令怎么写、报错怎么处理。
按第一次用会卡在哪讲:环境与虚拟环境怎么搭、pipeline 这一个 API 怎么覆盖多模态、聊天和命令行怎么走、以及官方明说「别用它做什么」。
要求 Python 3.10+ 与 PyTorch 2.6+。先建虚拟环境,别污染系统 Python:
bashpython -m venv .my-env
source .my-env/bin/activate
pip install "transformers[torch]"用 uv 的话是 uv venv .my-env 加 uv pip install "transformers[torch]"。
想要 main 分支的最新改动(比如刚支持的新架构)就从源码装:
bashgit clone https://github.com/huggingface/transformers.git
cd transformers
pip install '.[torch]'代价是不稳定,出问题直接去仓库开 issue。
pipeline 处理预处理并返回对应输出,换 task 和 model 就换模态,代码形状不变:
pythonfrom transformers import pipeline
pipe = pipeline(task="text-generation", model="Qwen/Qwen2.5-1.5B")
pipe("the secret to baking a really good cake is ")语音识别:
pythonpipe = pipeline(task="automatic-speech-recognition", model="openai/whisper-large-v3")
pipe("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")图像分类:
pythonpipe = pipeline(task="image-classification", model="facebook/dinov2-small-imagenet1k-1-layer")
pipe("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")第一次跑会下载权重并缓存,之后复用。磁盘不够会在这里卡住。
和生成接口完全一样,只是输入变成对话列表:
pythonimport torch
from transformers import pipeline
chat = [
{"role": "system", "content": "You are a sassy, wise-cracking robot."},
{"role": "user", "content": "Hey, can you tell me any fun things to do in New York?"},
]
pipe = pipeline(task="text-generation", model="meta-llama/Meta-Llama-3-8B-Instruct",
dtype=torch.bfloat16, device_map="auto")
response = pipe(chat, max_new_tokens=512)不想写代码,命令行也行——前提是 transformers serve 已经在跑:
bashtransformers chat Qwen/Qwen2.5-0.5B-Instruct这一节比功能列表更重要,原文两条:
补一条实践结论:Transformers 负责「定义和跑模型」,不负责「服务」。要并发、要吞吐、要生产级接口,把模型交给 vLLM 这类推理引擎,它们直接吃 Transformers 的模型定义。