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-onlyBERT、RoBERTa分类、NER、相似度
Decoder-onlyGPT、LLaMA文本生成
Encoder-decoderT5、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-baseEncoder分类110M
RoBERTa-largeEncoder分类355M
GPT-2Decoder生成124M-1.5B
T5-baseEncoder-decoder翻译220M
LLaMA-3-8BDecoder通用8B
Mistral-7BDecoder推理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

💬 留言讨论