GuidesModels
用 Transformers 跑通第一次模型推理
按 Transformers Quickstart:用 pipeline 做 text-generation,再用 AutoModel / AutoTokenizer 走一遍手动推理路径。
基于 Hugging Face Docs 整理 · 官方资料 ↗
Transformers 对外抽象很少:配置、模型、预处理器,再加上推理用的 Pipeline 和训练用的 Trainer。
这篇只把推理路径跑通:先用 pipeline 最快出结果,再拆开 AutoModelForCausalLM / AutoTokenizer,看清输入如何变成 tensor、如何 generate。训练只点到 Trainer 入口,不在这里假装你已经完成一次完整微调。
Transformers 最快的入口是 pipeline
Pipeline 把预处理、模型前向和后处理串在一起。你选一个任务名(如 text-generation),它会下载默认或你指定的预训练模型,然后直接吃原始文本。
官方 Quickstart 强调:用户面对的类很少;推理优先 Pipeline,需要更细控制时再落到 AutoClass + generate。
安装
建议先有 Hugging Face 账号并登录,以便访问 Hub 上的模型与数据集。CLI 登录使用 hf auth login。
登录 Hub(官方 CLI)
hf auth login安装 PyTorch 与 Transformers 生态包(官方 Quickstart)
pip install torch
pip install -U transformers datasets evaluate accelerate timmgated 模型(文档示例里的 Llama-2 等)还需要你在 Hub 上申请访问权限;否则 from_pretrained / pipeline 会在下载阶段失败。
跑第一次 inference
用 Accelerator 自动选择可用设备,再创建 text-generation pipeline。官方示例模型是 meta-llama/Llama-2-7b-hf。
Pipeline text-generation(官方 Quickstart)
from transformers import pipeline
from accelerate import Accelerator
device = Accelerator().device
pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)
pipe("The secret to baking a good cake is ", max_length=50)成功时返回含 generated_text 的列表。若下载或授权失败,先确认 hf auth login 与模型访问权限;本地资源不足时再换你有权限且更小的公开生成模型,但接口用法相同。
不用 pipeline 时怎么加载 model/tokenizer
AutoClass 会根据权重与配置自动推断架构。推理常用 AutoModelForCausalLM + AutoTokenizer,并用 from_pretrained 从 Hub 加载。
- device_map="auto":尽量把权重放到最快设备
- dtype="auto":按权重存储精度初始化,避免默认 float32 二次加载
官方 AutoModel / AutoTokenizer 加载
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
dtype="auto",
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")输入如何变成 tensor
Tokenizer 把文本变成模型能吃的数值输入。官方要求 return_tensors="pt",并 .to(model.device),保证输入与模型在同一设备。
tokenize → generate → decode
model_inputs = tokenizer(
["The secret to baking a good cake is "],
return_tensors="pt",
).to(model.device)
generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]到这里,推理主路径已经闭环:加载 → 编码 → generate → 解码。Pipeline 只是把这几步封装起来。
如果要训练,从 Trainer 入口开始
Quickstart 后半段介绍 Trainer:它封装 PyTorch 训练与评估循环。你需要模型、数据集、预处理器和 data collator;用 TrainingArguments 配超参,再 trainer.train()。
这篇不把完整微调当作完成标准。若下一步要练手,官方示例用 distilbert + rotten_tomatoes;先读懂下面入口,再按文档补全数据集切片与资源限制。
Trainer 入口形态(官方 Quickstart,完整训练另需足够资源)
from transformers import (
AutoModelForSequenceClassification,
AutoTokenizer,
DataCollatorWithPadding,
Trainer,
TrainingArguments,
)
from datasets import load_dataset
model = AutoModelForSequenceClassification.from_pretrained(
"distilbert/distilbert-base-uncased"
)
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("rotten_tomatoes")
def tokenize_dataset(batch):
return tokenizer(batch["text"])
dataset = dataset.map(tokenize_dataset, batched=True)
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
training_args = TrainingArguments(
output_dir="distilbert-rotten-tomatoes",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=2,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
processing_class=tokenizer,
data_collator=data_collator,
)
# trainer.train() # 确认资源足够后再启动最容易踩的坑
模型下载或 401 / gated 错误
先 hf auth login;在 Hub 页面确认已申请该模型访问。可先换公开小模型验证 pipeline 语法。
CUDA / 内存不足
换更小模型,或确认 device_map / dtype 设置;训练路径还要减小 batch size 与数据集切片。
tensor 设备不一致
tokenize 后必须 .to(model.device);Pipeline 路径则依赖创建时传入的 device。
Quickstart 短链跳到版本说明
打开 Transformers 文档当前 main 版 Quickstart 继续;以页面现用 API 为准。
官方资料
Hugging Face Docs
Quickstart ↗