from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch.nn.functional as F
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
inputs = tokenizer("I love this product!", return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
probs = F.softmax(logits, dim=-1)
print(probs)
from transformers import pipeline
classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
print(classifier("This movie is amazing!"))
8. Trainer
作用:Hugging Face 提供的通用训练循环封装,支持训练、评估、保存、日志、分布式训练、混合精度等。
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
import torch
tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad")
model = AutoModelForQuestionAnswering.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad")
context = "The capital of France is Paris."
question = "What is the capital of France?"
inputs = tokenizer(question, context, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
answer_start = torch.argmax(outputs.start_logits)
answer_end = torch.argmax(outputs.end_logits) + 1
answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0][answer_start:answer_end]))
print(answer)
from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch
tokenizer = AutoTokenizer.from_pretrained("dslim/bert-base-NER")
model = AutoModelForTokenClassification.from_pretrained("dslim/bert-base-NER")
inputs = tokenizer("My name is Wolfgang and I live in Berlin.", return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
predictions = torch.argmax(logits, dim=2)
17. AutoModelForSeq2SeqLM
作用:加载带有序列到序列语言模型头的模型,如 T5、BART、mT5,用于翻译、摘要、文本生成等。
常用场景:
机器翻译、文本摘要、text-to-text 统一框架任务。
核心方法:
AutoModelForSeq2SeqLM.from_pretrained("t5-small")
model.generate(input_ids, max_new_tokens=100)
示例:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("t5-small")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-small")
inputs = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
18. AutoModelForMaskedLM
作用:加载带有掩码语言模型头的模型,如 BERT、RoBERTa,用于完形填空和 further pre-training。
1.
AutoTokenizer作用:根据模型名称自动选择并加载对应的分词器(Tokenizer)。Tokenizer 负责将原始文本转换为模型可接受的
input_ids、attention_mask、token_type_ids等张量。常用场景:
核心方法:
AutoTokenizer.from_pretrained(model_name):从 Hugging Face Hub 或本地路径加载。tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512):对文本编码。tokenizer.decode(input_ids):将 token ID 转回文本。tokenizer.batch_decode(...):批量解码。tokenizer.pad_token = tokenizer.eos_token:当模型没有 pad token 时手动设置(如 GPT-2)。示例:
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese") inputs = tokenizer("这是一个测试句子。", return_tensors="pt") print(inputs) # {'input_ids': tensor(...), 'attention_mask': tensor(...), 'token_type_ids': tensor(...)}2.
AutoModel作用:自动加载指定模型的基础 Transformer 编码器(没有任务头),输出最后一层隐藏状态(hidden states)。
常用场景:
核心方法:
AutoModel.from_pretrained(model_name):加载基础模型。model(**inputs):前向传播,返回last_hidden_state、pooler_output等。model.config:查看模型配置。示例:
from transformers import AutoTokenizer, AutoModel import torch tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese") model = AutoModel.from_pretrained("bert-base-chinese") inputs = tokenizer("你好,世界。", return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) print(outputs.last_hidden_state.shape) # [batch, seq_len, hidden_size]3.
AutoModelForCausalLM作用:加载带有因果语言模型头(Causal LM Head)的模型,用于文本生成,如 GPT、LLaMA、Qwen 等。
常用场景:
核心方法:
AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto", device_map="auto")model.generate(input_ids, max_new_tokens=100, temperature=0.7, do_sample=True):生成文本。model.config.is_decoder = True示例:
from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("gpt2") model = AutoModelForCausalLM.from_pretrained("gpt2") inputs = tokenizer("Once upon a time", return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0]))4.
AutoModelForSequenceClassification作用:加载带有序列分类头(Sequence Classification Head)的模型,用于情感分析、文本分类、主题分类等。
常用场景:
核心方法:
AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2):可指定标签数。model(**inputs):返回logits,经过 softmax 得到概率。示例:
from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch.nn.functional as F tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") inputs = tokenizer("I love this product!", return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits probs = F.softmax(logits, dim=-1) print(probs)5.
AutoConfig作用:根据模型名自动加载模型的配置对象(Config),包含 hidden_size、num_layers、num_attention_heads、vocab_size 等超参数。
常用场景:
AutoModel.from_pretrained(..., config=config)配合使用。核心方法:
AutoConfig.from_pretrained(model_name)config.hidden_size、config.num_hidden_layersconfig.update({"num_labels": 3})示例:
from transformers import AutoConfig, AutoModelForSequenceClassification config = AutoConfig.from_pretrained("bert-base-chinese") config.num_labels = 5 model = AutoModelForSequenceClassification.from_config(config)6.
AutoProcessor作用:自动加载多模态任务的 Processor,通常封装了 tokenizer、image processor、feature extractor 等。
常用场景:
核心方法:
AutoProcessor.from_pretrained(model_name)processor(text=text, images=image, return_tensors="pt")示例:
from transformers import AutoProcessor from PIL import Image processor = AutoProcessor.from_pretrained("openai/clip-vit-base-patch32") inputs = processor(text=["a cat", "a dog"], images=Image.open("cat.jpg"), return_tensors="pt", padding=True)7.
pipeline作用:高层端到端 API,一行代码完成 tokenizer + model + 后处理,适合快速原型和推理。
常用场景:
核心用法:
pipeline(task, model=model_name, device=0)text-classification、token-classification、question-answering、text-generation、summarization、translation、image-classification、automatic-speech-recognition等。示例:
from transformers import pipeline classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") print(classifier("This movie is amazing!"))8.
Trainer作用:Hugging Face 提供的通用训练循环封装,支持训练、评估、保存、日志、分布式训练、混合精度等。
常用场景:
核心方法:
Trainer(model, args, train_dataset, eval_dataset, tokenizer, data_collator, compute_metrics)trainer.train()trainer.evaluate()trainer.save_model(output_dir)trainer.predict(test_dataset)示例:
from transformers import Trainer, TrainingArguments training_args = TrainingArguments(output_dir="./results", num_train_epochs=3, per_device_train_batch_size=8) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, tokenizer=tokenizer, data_collator=data_collator, compute_metrics=compute_metrics, ) trainer.train()9.
TrainingArguments作用:配置
Trainer的训练超参数和运行行为,是训练流程的“控制中心”。常用参数:
output_dir:输出目录。num_train_epochs:训练轮数。per_device_train_batch_size/per_device_eval_batch_size:每个设备的 batch size。learning_rate:学习率。warmup_steps/warmup_ratio:warmup 步数/比例。weight_decay:权重衰减。logging_steps:日志打印间隔。eval_strategy:评估策略(no/steps/epoch)。save_strategy:保存策略。fp16/bf16:混合精度。gradient_accumulation_steps:梯度累积。deepspeed:DeepSpeed 配置文件路径。示例:
from transformers import TrainingArguments args = TrainingArguments( output_dir="./output", num_train_epochs=3, per_device_train_batch_size=16, learning_rate=2e-5, eval_strategy="epoch", save_strategy="epoch", logging_steps=10, fp16=True, )10.
DataCollatorWithPadding作用:将不同长度的序列**动态填充(padding)**到同一 batch 内的最大长度,而不是固定 max_length,节省计算。
常用场景:
Trainer配合处理变长文本输入。核心参数:
tokenizer:指定 tokenizer 以使用其 pad token。padding=True:动态 padding(默认)。max_length:可限制最大长度。示例:
from transformers import DataCollatorWithPadding data_collator = DataCollatorWithPadding(tokenizer=tokenizer) # 在 Trainer 中传入11.
GenerationConfig作用:集中管理文本生成参数,如最大长度、采样策略、温度、top-k、top-p、重复惩罚等。
常用场景:
generate()都传大量参数。核心参数:
max_new_tokens/max_lengthdo_sample:是否采样,False 则为贪心解码。temperature:温度,控制随机性。top_k、top_p:采样过滤。repetition_penalty:重复惩罚。pad_token_id、eos_token_id、bos_token_id示例:
from transformers import GenerationConfig gen_config = GenerationConfig( max_new_tokens=200, do_sample=True, temperature=0.7, top_p=0.9, repetition_penalty=1.1, ) model.generate(**inputs, generation_config=gen_config)12.
PreTrainedModel作用:所有 PyTorch 预训练模型的基类。提供
from_pretrained、save_pretrained、push_to_hub、参数统计、设备管理、梯度检查点等通用能力。常用场景:
核心方法:
model.save_pretrained(path)model.from_pretrained(path)model.named_parameters()model.gradient_checkpointing_enable()model.eval()/model.train()示例:
from transformers import PreTrainedModel print(isinstance(model, PreTrainedModel)) # True model.save_pretrained("./my_model")13.
PreTrainedTokenizer/PreTrainedTokenizerFast作用:
PreTrainedTokenizer:纯 Python 实现的慢 tokenizer,可高度自定义。PreTrainedTokenizerFast:基于 Rusttokenizers库,速度快,支持 offsets 映射。常用场景:
AutoTokenizer内部会根据配置选择其一。核心方法(两者共有):
encode/encode_plus/batch_encode_plustokenizeconvert_tokens_to_idsconvert_ids_to_tokensbuild_inputs_with_special_tokens14.
PreTrainedConfig作用:所有模型配置的基类,定义了模型架构参数(vocab_size、hidden_size、num_attention_heads、intermediate_size 等)。
常用场景:
核心方法:
config.to_dict()config.to_json_string()config.save_pretrained(path)config.update({...})示例:
from transformers import PreTrainedConfig config = model.config print(config.hidden_size, config.num_hidden_layers) config.save_pretrained("./my_config")15.
AutoModelForQuestionAnswering作用:加载带有抽取式问答头的模型(通常为两个线性层,分别预测答案起始位置和结束位置)。
常用场景:
核心方法:
AutoModelForQuestionAnswering.from_pretrained(model_name)outputs.start_logits、outputs.end_logits示例:
from transformers import AutoTokenizer, AutoModelForQuestionAnswering import torch tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") model = AutoModelForQuestionAnswering.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") context = "The capital of France is Paris." question = "What is the capital of France?" inputs = tokenizer(question, context, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) answer_start = torch.argmax(outputs.start_logits) answer_end = torch.argmax(outputs.end_logits) + 1 answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0][answer_start:answer_end])) print(answer)16.
AutoModelForTokenClassification作用:加载带有Token 级分类头的模型,用于命名实体识别(NER)、词性标注(POS)、分词等。
常用场景:
核心方法:
AutoModelForTokenClassification.from_pretrained(model_name, num_labels=9)outputs.logits形状为[batch, seq_len, num_labels]。示例:
from transformers import AutoTokenizer, AutoModelForTokenClassification import torch tokenizer = AutoTokenizer.from_pretrained("dslim/bert-base-NER") model = AutoModelForTokenClassification.from_pretrained("dslim/bert-base-NER") inputs = tokenizer("My name is Wolfgang and I live in Berlin.", return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits predictions = torch.argmax(logits, dim=2)17.
AutoModelForSeq2SeqLM作用:加载带有序列到序列语言模型头的模型,如 T5、BART、mT5,用于翻译、摘要、文本生成等。
常用场景:
核心方法:
AutoModelForSeq2SeqLM.from_pretrained("t5-small")model.generate(input_ids, max_new_tokens=100)示例:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("t5-small") model = AutoModelForSeq2SeqLM.from_pretrained("t5-small") inputs = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True))18.
AutoModelForMaskedLM作用:加载带有掩码语言模型头的模型,如 BERT、RoBERTa,用于完形填空和 further pre-training。
常用场景:
核心方法:
AutoModelForMaskedLM.from_pretrained("bert-base-uncased")pipeline("fill-mask", model="...")示例:
from transformers import AutoTokenizer, AutoModelForMaskedLM import torch tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") model = AutoModelForMaskedLM.from_pretrained("bert-base-uncased") inputs = tokenizer("The capital of France is [MASK].", return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits mask_token_index = (inputs.input_ids == tokenizer.mask_token_id).nonzero(as_tuple=True)[1] predicted_token_id = logits[0, mask_token_index].argmax(dim=-1) print(tokenizer.decode(predicted_token_id))19.
set_seed作用:设置 Python、
numpy、PyTorch、CUDA 等所有相关随机种子,保证实验可复现。常用场景:
示例:
from transformers import set_seed set_seed(42)20.
EarlyStoppingCallback作用:在
Trainer中实现早停(Early Stopping),当验证指标不再提升时自动停止训练,防止过拟合。常用场景:
核心参数:
early_stopping_patience:允许指标不提升的轮数。early_stopping_threshold:提升阈值。TrainingArguments中设置load_best_model_at_end=True、metric_for_best_model="eval_loss"、greater_is_better=False。示例:
from transformers import TrainingArguments, Trainer, EarlyStoppingCallback args = TrainingArguments( output_dir="./output", eval_strategy="epoch", save_strategy="epoch", load_best_model_at_end=True, metric_for_best_model="eval_loss", greater_is_better=False, ) trainer = Trainer( model=model, args=args, train_dataset=train_dataset, eval_dataset=eval_dataset, callbacks=[EarlyStoppingCallback(early_stopping_patience=3)], ) trainer.train()附:20 个接口速查表
AutoTokenizerAutoModelAutoModelForCausalLMAutoModelForSequenceClassificationAutoConfigAutoProcessorpipelineTrainerTrainingArgumentsDataCollatorWithPaddingGenerationConfigPreTrainedModelPreTrainedTokenizer/PreTrainedTokenizerFastPreTrainedConfigAutoModelForQuestionAnsweringAutoModelForTokenClassificationAutoModelForSeq2SeqLMAutoModelForMaskedLMset_seedEarlyStoppingCallback