Hugging Face Transformers 入门与实战:从概念到你的电脑能不能跑

这玩意儿到底是啥?

如果你最近在搞 AI,尤其是自然语言处理,那一定绕不开 Hugging Face Transformers。简单说,它是一个开源库,把那些最先进的预训练模型(BERT、GPT、T5、LLaMA 等等)打包好,让你不用从零训练就能直接用。以前想跑个情感分析,得自己搭网络、调参、训练好几天;现在几行代码就能搞定。

它的核心价值就一个词:省事。Hugging Face 提供了统一的 API,不管你用的是 PyTorch 还是 TensorFlow,加载模型、分词、推理的写法几乎一样。而且它背后有个巨大的模型仓库(Model Hub),社区上传了成千上万的预训练模型,覆盖文本、图像、音频、多模态。你只需要根据任务挑一个,下载下来就能用。

几个核心概念,别被术语吓到

  • Pipeline(流水线):最傻瓜的用法。你告诉它要干什么(比如情感分析),它自动帮你选模型、处理输入、输出结果。一行代码的事。
  • AutoClass(自动类):稍微灵活一点。主要是 AutoTokenizer 和 AutoModel。分词器负责把文本转成数字,模型负责计算。你想自己控制预处理或者换模型,就用这套。
  • Trainer:要微调模型的时候用。它把训练循环、评估、保存这些脏活累活都封装好了,你只需要准备数据、设几个参数。
  • Model Hub:模型仓库。可以理解为 AI 模型的“应用商店”,大部分模型免费下载。

手把手:从安装到跑起来

环境准备

Python 3.8 以上,建议用虚拟环境。安装核心库:

pip install transformers datasets
# 如果你用 PyTorch,可以装这个
pip install "transformers[torch]"

国内下载模型慢的话,设置一下镜像:

import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

或者直接在终端 export HF_ENDPOINT=https://hf-mirror.com,速度会快很多。

最快上手:Pipeline

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("I love using Hugging Face Transformers!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]

换个任务只需要改 task 参数,比如 "text-generation"、"ner"、"question-answering"、"summarization" 等等。具体支持哪些,官方文档有列表。

想自己控制?用 AutoClass

from transformers import AutoTokenizer, AutoModel
import torch

model_name = "bert-base-chinese"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)

inputs = tokenizer("这是一段测试文本", return_tensors="pt")
with torch.no_grad():
    outputs = model(**inputs)

# outputs.last_hidden_state 就是最后一层的隐藏状态

如果是分类任务,换成 AutoModelForSequenceClassification,问答换成 AutoModelForQuestionAnswering,以此类推。

微调模型:Trainer 登场

假设你想用自己的数据训练一个文本分类器。流程大概是:加载数据集 → 分词 → 加载预训练模型 → 配置训练参数 → 训练 → 保存。

from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import TrainingArguments, Trainer

# 1. 加载数据
dataset = load_dataset('imdb')

# 2. 分词
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
def tokenize_fn(examples):
    return tokenizer(examples['text'], padding='max_length', truncation=True)
tokenized = dataset.map(tokenize_fn, batched=True)

# 3. 加载模型
model = AutoModelForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)

# 4. 训练参数
args = TrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=8,
    num_train_epochs=3,
    learning_rate=2e-5,
    evaluation_strategy="epoch",
    fp16=True,  # 有 GPU 的话开混合精度
)

# 5. 训练
trainer = Trainer(model=model, args=args,
                  train_dataset=tokenized['train'],
                  eval_dataset=tokenized['test'],
                  tokenizer=tokenizer)
trainer.train()
trainer.save_model("./fine_tuned_model")

大模型(比如 7B 以上)全量微调显存吃不消,可以用 LoRA 做参数高效微调:

from peft import LoraConfig, get_peft_model

lora_config = LoraConfig(
    r=8, lora_alpha=16,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05, bias="none",
    task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()  # 可训练参数从几十亿降到几百万

部署:本地起个服务

Transformers 自带了一个轻量服务,能兼容 OpenAI 的 API 格式:

pip install "transformers[serving]"
transformers serve Qwen/Qwen2.5-0.5B-Instruct --port 8000

然后就能用 curl 调用:

curl -X POST http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "你好"}], "model": "Qwen/Qwen2.5-0.5B-Instruct"}'

生产环境的话,建议上 vLLM、TGI 或者 SGLang,吞吐量和延迟会好很多。

你的电脑能跑吗?——以 AMD Ryzen 7 7730U + 16GB 为例

有朋友问:我这台机器,AMD Ryzen 7 7730U(8 核 16 线程),16GB 内存(可用 13.9GB),显卡是 AMD Radeon 集成显卡(2GB 共享显存),能跑 Hugging Face Transformers 吗?

结论:能跑,但只能靠 CPU,而且适合小模型。

为什么 GPU 用不上?

Transformers 默认走 NVIDIA 的 CUDA。AMD 的显卡,尤其是集成显卡,没有 CUDA 支持。虽然可以通过 ROCm 或者 DirectML 折腾,但 2GB 显存限制太大,配置也麻烦,不推荐。所以你这台机器基本上就是纯 CPU 推理。

能跑哪些模型?

模型规模内存占用(大概)能不能跑
BERT-base(110M)0.5 GB✅ 轻松
DistilBERT / GPT-20.5–1 GB✅ 轻松
T5-small / 中文 BERT1–2 GB✅ 没问题
0.5B–1B 语言模型2–4 GB✅ 可以,但生成速度一般
3B 模型6–8 GB⚠️ 勉强,慢
7B 全精度14 GB❌ 内存不够
7B 4-bit 量化3.5–4 GB✅ 但要用 llama.cpp / Ollama,不是原生 Transformers

简单说,学习 API、跑 BERT 做分类、问答,完全够用。微调 BERT-base 也行,就是 CPU 训练慢,得有点耐心。想跑 7B 大语言模型,别用原生 Transformers,换 Ollama 或者 llama.cpp 的量化版本,16GB 内存勉强能跑,但速度也就每秒几个 token。

安装和使用建议

装 CPU 版 PyTorch:

pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install transformers datasets accelerate

用 pipeline 时指定 CPU:

classifier = pipeline("sentiment-analysis", device=-1)

手动加载模型默认就在 CPU 上。想快一点,可以设置线程数:

import torch
torch.set_num_threads(8)  # 你的 7730U 有 8 核

还可以用 optimum + ONNX Runtime 加速:

pip install optimum[onnxruntime]

大模型想都别想?

也不是。用 Ollama 跑 7B 的 4-bit 量化模型,16GB 内存能撑住,但体验就是“能跑,但别指望流畅”。如果只是玩玩,可以试试;真要干活,还是租个云 GPU 吧,Colab、Kaggle 都有免费的。

总结

Hugging Face Transformers 把 AI 模型的门槛拉低了很多。你不需要是深度学习专家,也能用上最先进的模型。从 pipeline 一行代码开始,慢慢深入 AutoClass、Trainer,最后部署成服务,这条路很顺。

至于硬件,别被“必须要有 NVIDIA 显卡”吓到。CPU 也能跑,只是模型别选太大。像你这台 Ryzen 7 7730U + 16GB 的笔记本,拿来入门、做小项目、跑跑 BERT,完全足够了。等真的遇到瓶颈,再考虑上云或者换设备。

动手试试吧,第一个 pipeline 跑通的时候,还是挺有成就感的。

更多推荐