Hugging Face Transformers:完整开发者指南(2025 版)
掌握 Hugging Face Transformers。学习管道 API、模型微调、分词、优化、部署。附实践代码示例。
- ⭐ 83000
- Python
- MIT
- 更新于 2026-05-18
什么是 Hugging Face Transformers? #
Hugging Face Transformers 是开源 Python 库,为自然语言处理、计算机视觉、音频处理和多模态任务提供预训练模型和工具。该库已从 NLP 起步,支持几乎所有机器学习模态。
库核心价值:一键下载领先模型,五分钟内用于你的任务。这让 transformer 模型民主化——曾需要 PhD 和数月工程才能实现的工作,现在只需几分钟。
生态系统:Hub、Datasets、Accelerate #
| 工具 | 作用 | 重要性 |
|---|---|---|
| Transformers | 预训练模型、训练 API | 核心模型库 |
| Hub | 模型、数据集托管 | 500,000+ 模型 |
| Datasets | 标准化数据集库 | 20,000+ 数据集 |
| Accelerate | 分布式训练 | 多 GPU/TPU |
| PEFT | 参数效率微调 | 70B 模型 |
| TRL | 人类反馈强化学习 | RLHF 训练 |
这套工具链意味着:从想法到微调模型,可无缝衔接。
安装与环境设置 #
安装 Transformers #
pip install transformers torch
完整生态:
pip install transformers datasets accelerate peft trl
GPU 支持(CUDA) #
pip install torch --index-url https://download.pytorch.org/whl/cu121
验证 GPU:
import torch
print(torch.cuda.is_available()) # True
管道 API:最简单的入门方式 #
文本分类 #
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("这部电影太棒了!")
# [{'label': 'POSITIVE', 'score': 0.9998}]
命名实体识别 #
ner = pipeline("ner", aggregation_strategy="simple")
result = ner("苹果公司由史蒂夫·乔布斯在加州创立。")
# [{'entity_group': 'ORG', 'word': '苹果公司'}, ...]
问答 #
qa = pipeline("question-answering")
result = qa(
question="法国的首都是哪里?",
context="巴黎是法国的首都。"
)
# {'answer': '巴黎', 'score': 0.99}
文本生成 #
generator = pipeline("text-generation", model="gpt2")
result = generator("人工智能的未来是", max_length=30)
翻译 #
translator = pipeline("translation_en_to_de", model="t5-base")
result = translator("你好,最近怎么样?")
预训练模型使用 #
加载模型与分词器 #
from transformers import AutoModel, AutoTokenizer
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
模型类型 #
| 类型 | 例子 | 用途 |
|---|---|---|
| Encoder-only | BERT、RoBERTa | 分类、NER、相似度 |
| Decoder-only | GPT、LLaMA | 文本生成 |
| Encoder-decoder | T5、BART | 翻译、摘要 |
微调模型 #
数据准备 #
from datasets import load_dataset
dataset = load_dataset("imdb")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized = dataset.map(tokenize_function, batched=True)
使用 LoRA 微调 #
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
模型优化 #
量化(INT8、INT4) #
from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(load_in_4bit=True)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b",
quantization_config=bnb_config
)
ONNX 导出 #
torch.onnx.export(
model,
(torch.zeros(1, 128, dtype=torch.long),),
"model.onnx",
input_names=["input_ids"],
output_names=["logits"]
)
热门模型(2025) #
| 模型 | 架构 | 用途 | 大小 |
|---|---|---|---|
| BERT-base | Encoder | 分类 | 110M |
| RoBERTa-large | Encoder | 分类 | 355M |
| GPT-2 | Decoder | 生成 | 124M-1.5B |
| T5-base | Encoder-decoder | 翻译 | 220M |
| LLaMA-3-8B | Decoder | 通用 | 8B |
| Mistral-7B | Decoder | 推理 | 7B |
常见问题 #
Q: 训练时 CUDA 内存不足怎么办?
答:减小 batch size,启用梯度累积,开模型梯度检查点,或使用 LoRA 微调。
Q: 如何选择合适的模型?
答:文本分类用 encoder(BERT);生成用 decoder(GPT);翻译/摘要用 encoder-decoder(T5)。
总结 #
Hugging Face Transformers 已成为 NLP 标杆。500,000+ 模型、完整生态、从本地到云端的全链路支持。2025 年继续深化,适合从研究到生产的全场景使用。
参考:HuggingFace 官方文档 | GitHub transformers 更新:2026-05-18
💬 留言讨论