Python Transformers 库使用指南
Transformers 是由 Hugging Face 开发的开源 Python 库,提供统一接口使用预训练 Transformer 模型。支持 PyTorch 和 TensorFlow,涵盖文本分类、问答、生成等多种任务。通过 Pipeline 可快速上手,也支持自定义微调。优势在于易用性和丰富生态,局限在于资源消耗和推理延迟。适合构建语言理解系统。

Transformers 是由 Hugging Face 开发的开源 Python 库,提供统一接口使用预训练 Transformer 模型。支持 PyTorch 和 TensorFlow,涵盖文本分类、问答、生成等多种任务。通过 Pipeline 可快速上手,也支持自定义微调。优势在于易用性和丰富生态,局限在于资源消耗和推理延迟。适合构建语言理解系统。

Transformers 是一个由 Hugging Face 开发并维护的开源 Python 库,旨在为开发者提供简单、统一的接口来使用预训练的 Transformer 模型。它支持超过 300 种预训练模型(如 BERT、RoBERTa、GPT-2、T5、DistilBERT、XLM-R 等),适用于多种语言和任务。
该库的主要特点包括:
要使用 Transformers,首先需要安装它。推荐使用 pip 安装:
pip install transformers
如果你还希望使用 PyTorch 或 TensorFlow,也需单独安装:
# 安装 PyTorch(推荐)
pip install torch
# 或者安装 TensorFlow
pip install tensorflow
此外,许多任务还需要分词器(Tokenizer),通常会自动随模型一起下载,但你也可以手动安装相关依赖。
Transformers 中的模型是执行具体 NLP 任务的核心。例如:
BertForSequenceClassification:用于文本分类。BertForQuestionAnswering:用于问答任务。GPT2LMHeadModel:用于文本生成。你可以通过模型名称从 Hugging Face 模型中心加载预训练模型。
分词器负责将原始文本转换为模型可理解的数字输入(token IDs)。每个模型都有对应的分词器。
例如,BERT 使用 WordPiece 分词,而 GPT 使用 Byte-Pair Encoding(BPE)。
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
tokens = tokenizer("Hello, how are you?", return_tensors='pt')
print(tokens)
输出示例:
{
'input_ids': tensor([[101, 7592, 1010, 2129, 2024, 2017, 102]]),
'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1]])
}
其中 101 和 102 分别代表 [CLS] 和 [SEP] 特殊标记。
pipeline 是 Transformers 提供的高级 API,允许用户无需编写复杂代码即可完成常见任务。
示例 1:情感分析
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("I love using the Transformers library!")
print(result) # 输出:[{'label': 'POSITIVE', 'score': 0.9998}]
示例 2:命名实体识别(NER)
ner_pipeline = pipeline("ner", grouped_entities=True)
entities = ner_pipeline("Apple is looking at buying a U.K. startup for $1 billion.")
print(entities)
示例 3:文本生成
generator = pipeline("text-generation", model="gpt2")
texts = generator("Once upon a time,", max_length=50, num_return_sequences=2)
for text in texts:
print(text['generated_text'])
虽然预训练模型已经很强大,但在特定数据集上微调通常能获得更好的性能。
以下是一个简单的文本分类微调示例(使用 PyTorch):
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer
import torch
from datasets import load_dataset
# 加载数据集(以 IMDb 电影评论为例)
dataset = load_dataset('imdb')
# 加载分词器和模型
model_name = 'distilbert-base-uncased'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
# 分词函数
def tokenize_function(examples):
return tokenizer(examples['text'], truncation=True, padding=True, max_length=512)
# 对数据集进行分词
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# 训练参数
training_args = TrainingArguments(
output_dir='./results',
evaluation_strategy="epoch",
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
)
# 创建 Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets['train'],
eval_dataset=tokenized_datasets['test']
)
# 开始训练
trainer.train()
注意:上述代码需要额外安装
datasets库:pip install datasets
Transformers 支持广泛的任务,包括但不限于:
| 任务类型 | 示例模型 |
|---|---|
| 文本分类 | BERT, DistilBERT |
| 命名实体识别(NER) | BERT, RoBERTa |
| 问答(QA) | BERT, ALBERT |
| 文本生成 | GPT-2, GPT-Neo |
| 机器翻译 | T5, MarianMT |
| 文本摘要 | BART, Pegasus |
| 句子相似度 | Sentence-BERT |
pipeline 接口让新手也能快速上手。Datasets、Accelerate、Evaluate 等库无缝集成。Transformers 不仅是一个 Python 库,更是一个推动 NLP 民主化的重要平台。它让研究人员和开发者能够以前所未有的速度构建强大的语言理解系统。无论你是想快速实现一个情感分析工具,还是在专业场景下微调模型解决实际问题,Transformers 都是一个不可或缺的工具。
未来,随着模型小型化、多模态融合(如图像 + 文本)的发展,Transformers 也将持续进化,继续引领 AI 技术的前沿。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online