Transformers(常被简称为 🤗 Transformers)是 Hugging Face 开源的业界标杆级深度学习库 ,核心定位是:封装了海量基于 Transformer 架构的预训练模型,让开发者无需从零实现 Transformer 底层逻辑,就能快速调用、微调各类大模型,完成 NLP、多模态(图文/语音)等任务。
它支持 PyTorch、TensorFlow、JAX 三大框架,覆盖 100+ 语言、数千个预训练模型(如 BERT、GPT、LLaMA、ViT、Whisper 等),是当前大模型开发最常用的工具之一。
一、核心功能(附实战示例)
1. 开箱即用的预训练模型库(核心价值)
Transformers 内置了几乎所有主流 Transformer 衍生模型,覆盖不同任务、规模和语言,无需自己训练基础模型:
- NLP 基础模型:BERT(文本理解)、GPT(文本生成)、RoBERTa、ALBERT、T5(多任务统一)、LLaMA/LLaMA 2(开源大语言模型);
- 多模态模型:ViT(图像分类)、BLIP(图文生成)、Whisper(语音转文字)、CLIP(图文匹配);
- 垂直领域模型:CodeLlama(代码生成)、MedBERT(医疗文本)、XLM-RoBERTa(多语言)。
2. 极简的 Pipeline API(新手首选)
Pipeline 是封装最上层的接口,一行代码就能完成"输入处理→模型推理→结果解析"全流程,支持 20+ 常见任务:
python
# 第一步:安装Transformers(带PyTorch依赖,推荐)
# pip install transformers[torch] torch
from transformers import pipeline
# 1. 文本分类(情感分析)
classifier = pipeline("sentiment-analysis")
result = classifier("I love using Hugging Face Transformers!")
print(result) # 输出:[{'label': 'POSITIVE', 'score': 0.9998}]
# 2. 文本生成(续写/创作)
generator = pipeline("text-generation", model="gpt2")
result = generator("Hugging Face is", max_length=30, num_return_sequences=1)
print(result[0]['generated_text']) # 输出:Hugging Face is a leading AI company focused on NLP...
# 3. 问答(基于上下文)
question_answerer = pipeline("question-answering")
result = question_answerer(
question="What is Transformers?",
context="Transformers is a library for using pre-trained Transformer models in NLP tasks."
)
print(result) # 输出:{'answer': 'a library for using pre-trained Transformer models in NLP tasks', ...}
# 4. 语音转文字(Whisper模型)
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
result = asr("audio_file.mp3") # 输入音频文件路径
print(result["text"]) # 输出识别后的文字
3. 灵活的 Model + Tokenizer 底层调用(进阶定制)
当需要自定义输入处理、修改模型输出或微调时,可手动加载 Tokenizer(文本编码)和 Model(模型推理),这是开发的核心模式:
python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 1. 加载预训练的Tokenizer和模型(Auto类自动匹配模型类型,无需指定具体类)
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
# 2. 文本编码(转换为模型可识别的tensor)
text = "Transformers is easy to use!"
inputs = tokenizer(
text,
return_tensors="pt", # 返回PyTorch tensor(tf为TensorFlow tensor)
padding=True, # 补全到最长序列长度
truncation=True # 截断超长文本
)
# 3. 模型推理
with torch.no_grad(): # 禁用梯度计算,提升速度
outputs = model(**inputs)
# 4. 解析结果(分类任务输出logits,需转概率)
logits = outputs.logits
predictions = torch.softmax(logits, dim=-1)
print(f"Positive score: {predictions[0][1].item():.4f}") # 输出正向情感概率
4. 便捷的模型微调(Fine-tuning)
Transformers 提供 Trainer API 和 TrainingArguments,无需手写训练循环,就能快速微调预训练模型:
python
from transformers import Trainer, TrainingArguments
from datasets import load_dataset # 需安装datasets: pip install datasets
# 1. 加载示例数据集(IMDB情感分类)
dataset = load_dataset("imdb")
# 2. 数据预处理(编码文本)
def preprocess_function(examples):
return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=128)
encoded_dataset = dataset.map(preprocess_function, batched=True)
# 3. 定义训练参数
training_args = TrainingArguments(
output_dir="./results", # 输出目录
per_device_train_batch_size=8, # 单GPU批次大小
num_train_epochs=3, # 训练轮数
logging_dir="./logs", # 日志目录
logging_steps=10, # 每10步打印日志
)
# 4. 初始化Trainer并训练
trainer = Trainer(
model=model, # 待微调的模型
args=training_args, # 训练参数
train_dataset=encoded_dataset["train"], # 训练集
eval_dataset=encoded_dataset["test"], # 验证集
)
# 5. 开始训练
trainer.train()
5. 模型优化与部署
- 量化加速 :支持
bitsandbytes实现4/8位量化,降低显存占用(适合低算力设备); - 跨框架转换:可将模型导出为 ONNX、TorchScript 格式,适配生产环境部署;
- 分布式训练:兼容 PyTorch DDP/torchrun,支持多GPU/多节点微调;
- 模型推送 :一键将自定义模型推送到 Hugging Face Hub(
model.push_to_hub("my-model")),方便共享。
二、核心组件解析
| 组件 | 作用 | 常用类 |
|---|---|---|
Tokenizer |
文本→Token(词汇片段)→数字编码,处理分词、padding、truncation | AutoTokenizer、BertTokenizer、GPT2Tokenizer |
Model |
核心模型,不同任务对应不同子类 | AutoModel(基础特征提取)、AutoModelForSequenceClassification(分类)、AutoModelForCausalLM(生成) |
Pipeline |
封装好的端到端流水线,适合快速验证 | pipeline("task_name") |
Trainer |
训练/微调模型的高级接口 | Trainer、TrainingArguments |
AutoClasses |
自动匹配模型/Tokenizer类型,无需记忆具体类名 | AutoModel、AutoTokenizer、AutoConfig |
三、典型应用场景
- NLP 基础任务:文本分类、命名实体识别(NER)、机器翻译、文本摘要、关键词提取、语义相似度计算;
- 生成式任务:对话机器人、文案创作、代码生成、邮件撰写;
- 多模态任务:图文生成(文生图/图生文)、图像分类、语音转文字、语音合成;
- 垂直领域定制:基于行业语料微调模型(如金融文本分析、医疗报告解读)。
总结
Transformers是 Hugging Face 核心开源库,封装了海量预训练 Transformer 模型,支持 NLP/多模态任务,兼容 PyTorch/TensorFlow;- 新手优先用
PipelineAPI 快速验证需求,进阶开发用AutoTokenizer + AutoModel做定制化; - 内置
TrainerAPI 简化模型微调,还支持量化、跨框架导出等生产级优化,是大模型开发的首选工具。