Hugging Face Transformers 教程
欢迎学习 Hugging Face Transformers!本教程将带你从零开始,深入理解 Transformer 模型架构,掌握使用 Transformers 库进行自然语言处理、计算机视觉和多模态任务开发的完整技能。
什么是 Hugging Face Transformers?
Hugging Face Transformers 是一个开源的 Python 库,提供了大量基于 Transformer 架构的预训练模型,支持文本、图像、音频、视频和多模态任务。它是目前最流行的预训练模型库之一,在学术研究和工业应用中都有广泛应用。
Transformers 的核心定位
Transformers 库在整个 AI 生态系统中扮演着模型定义框架的核心角色:
┌─────────────────────────────────────────────────────────────────────────┐
│ AI 生态系统架构 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 训练框架 Transformers 推理引擎 │
│ ┌──────────┐ ┌─────────────┐ ┌──────────┐ │
│ │ Axolotl │ │ │ │ vLLM │ │
│ │ Unsloth │◄────────────►│ 模型定义 │◄────────────►│ SGLang │ │
│ │DeepSpeed │ │ 标准中心 │ │ TGI │ │
│ │ FSDP │ │ │ │ llama.cpp│ │
│ │PyTorch- │ │ 100万+模型 │ │ mlx │ │
│ │ Lightning│ │ checkpoints│ │ │ │
│ └──────────┘ └─────────────┘ └──────────┘ │
│ │
│ 核心功能 │
│ ┌─────────────────────────┐ │
│ │ • Pipeline 推理 │ │
│ │ • Trainer 训练 │ │
│ │ • generate 文本生成 │ │
│ │ • 模型导出与部署 │ │
│ └─────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Transformers 的核心特点
| 特点 | 说明 |
|---|---|
| 统一的模型架构 | 所有模型都基于 Config + Model + Preprocessor 三类核心类 |
| 跨框架支持 | 支持 PyTorch、TensorFlow、JAX 三大深度学习框架 |
| 丰富的预训练模型 | 超过 100 万个模型 checkpoint 可在 Hugging Face Hub 使用 |
| 多模态能力 | 支持文本、图像、音频、视频和多模态任务 |
| 易用性设计 | Pipeline 和 Trainer 简化推理和训练流程 |
| 生态兼容性 | 与 vLLM、DeepSpeed、Axolotl 等工具无缝集成 |
支持的模型类型
Transformers 库支持多种 Transformer 架构模型:
编码器模型(Encoder-only)
- BERT、RoBERTa、ALBERT、DistilBERT、ELECTRA
- 适用于:文本分类、命名实体识别、问答
解码器模型(Decoder-only)
- GPT 系列、LLaMA、Mistral、Claude、Qwen
- 适用于:文本生成、对话、代码生成
编码器-解码器模型(Encoder-Decoder)
- T5、BART、Pegasus、Marian
- 适用于:翻译、摘要、文本生成
视觉模型
- ViT、Swin Transformer、DETR、SAM
- 适用于:图像分类、目标检测、分割
多模态模型
- CLIP、LLaVA、BLIP、Qwen-VL
- 适用于:图文理解、视觉问答
为什么学习 Transformers?
1. 行业标准工具
- 学术界:顶会论文中超过 80% 的 NLP 研究使用 Transformers
- 工业界:OpenAI、Google、Meta、Microsoft 等公司广泛使用
- 开源社区:GitHub 上最受欢迎的预训练模型库
2. 降低开发门槛
# 使用 Pipeline 只需几行代码即可完成复杂任务
from transformers import pipeline
# 情感分析
classifier = pipeline("sentiment-analysis")
result = classifier("I love using Transformers!")
# [{'label': 'POSITIVE', 'score': 0.9998}]
# 文本生成
generator = pipeline("text-generation", model="gpt2")
result = generator("The future of AI is")
3. 完整的工具链
┌─────────────────────────────────────────────────────────────┐
│ Hugging Face 生态系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ transformers datasets tokenizers │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 预训练模型 │ │ 数据集加载 │ │ 高效分词 │ │
│ │ 推理训练 │ │ 数据处理 │ │ 多语言支持 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
│ accelerate peft trl │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 分布式训练 │ │ 参数高效微调│ │ RLHF训练 │ │
│ │ 混合精度 │ │ LoRA/QLoRA│ │ DPO训练 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
│ huggingface_hub evaluate optimum │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 模型托管 │ │ 模型评估 │ │ 推理优化 │ │
│ │ 版本管理 │ │ 指标计算 │ │ ONNX导出 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
安装配置
系统要求
- Python 3.8 或更高版本
- PyTorch 2.0+ 或 TensorFlow 2.0+
- (可选)CUDA 11.8+ 用于 GPU 加速
安装 Transformers
基础安装:
pip install transformers
完整安装(推荐):
# 安装 PyTorch(根据 CUDA 版本选择)
pip install torch torchvision torchaudio
# 安装 Transformers 及生态工具
pip install transformers datasets evaluate accelerate
# 图像处理支持
pip install pillow
# 音频处理支持
pip install librosa
使用 conda 安装:
conda install -c huggingface transformers
conda install -c huggingface datasets
验证安装
import transformers
print(f"Transformers 版本: {transformers.__version__}")
# 测试基本功能
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
print(classifier("Hello, World!"))
Hugging Face Hub 登录
访问 Hugging Face 创建账号,然后登录:
# 命令行登录
huggingface-cli login
# 或在代码中登录
from huggingface_hub import login
login() # 会提示输入 access token
核心概念
1. 三类核心类
每个预训练模型都由三个基础类组成:
┌─────────────────────────────────────────────────────────────┐
│ 预训练模型结构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ Configuration │ 模型配置:层数、隐藏维度、注意力头数等 │
│ │ (Config) │ 例:BertConfig, GPT2Config │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ PreTrainedModel│ 模型架构:Transformer 层实现 │
│ │ (Model) │ 例:BertModel, GPT2LMHeadModel │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Preprocessor │ 预处理器:Tokenizer、ImageProcessor │
│ │ (Tokenizer) │ 例:BertTokenizer, AutoTokenizer │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
2. AutoClass 自动推断
使用 AutoClass 自动识别模型架构:
from transformers import AutoModel, AutoTokenizer, AutoConfig
# 自动加载对应架构的模型和分词器
model = AutoModel.from_pretrained("bert-base-chinese")
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
config = AutoConfig.from_pretrained("bert-base-chinese")
3. 任务特定模型头
根据任务类型选择对应的模型类:
| 任务类型 | 模型类后缀 | 示例 |
|---|---|---|
| 特征提取 | Model | BertModel |
| 文本分类 | ForSequenceClassification | BertForSequenceClassification |
| Token 分类 | ForTokenClassification | BertForTokenClassification |
| 问答 | ForQuestionAnswering | BertForQuestionAnswering |
| 文本生成 | ForCausalLM | GPT2LMHeadModel |
| 序列到序列 | ForSeq2SeqLM | T5ForConditionalGeneration |
| 掩码语言模型 | ForMaskedLM | BertForMaskedLM |
教程目录
本教程涵盖从入门到精通的完整内容:
基础入门
- 环境配置 - 安装与环境设置
- Pipeline 快速入门 - 最简单的模型使用方式
- 模型加载与使用 - 理解模型架构和加载机制
- 分词器详解 - 文本预处理和 Tokenization
核心技能
经典模型详解
- BERT 模型 - 双向编码器表示(敬请期待)
- GPT 模型 - 生成式预训练 Transformer(敬请期待)
- T5 模型 - 文本到文本转换 Transformer(敬请期待)
进阶应用
- 多模态模型 - 视觉-语言模型应用(敬请期待)
- 模型部署 - 导出与生产部署(敬请期待)
知识速查
- 速查表 - 常用 API 和代码片段
学习建议
1. 前置知识
学习 Transformers 前建议掌握:
- Python 基础:面向对象编程、函数式编程
- 深度学习基础:神经网络、反向传播、优化器
- PyTorch/TensorFlow:至少熟悉其中一个框架
- Transformer 架构:自注意力机制、位置编码
2. 学习路径
基础阶段 核心阶段 进阶阶段 实战阶段
│ │ │ │
▼ ▼ ▼ ▼
环境配置 → Pipeline → 模型微调 → 项目实战
理解架构 → 模型加载 → 参数高效微调 → 模型部署
分词器使用 → 训练流程 → 多模态应用 → 性能优化
3. 实践建议
- 从 Pipeline 开始:先掌握高层 API,再深入底层
- 阅读官方文档:Hugging Face 官方文档 是最权威的学习资源
- 动手实验:在 Google Colab 上免费使用 GPU 实验
- 参与社区:关注 Hugging Face 论坛 和 GitHub Issues
参考资源
官方资源
学习资源
- NLP Course - 官方 NLP 课程
- LLM Course - 大语言模型课程
- Paper Reading - 最新论文解读
准备好了吗?
准备好开始学习 Hugging Face Transformers 了吗?本教程将带你深入理解 Transformer 模型,掌握从简单推理到复杂微调的完整技能。点击下一章开始你的学习之旅!