【Hugging Face】transformers 库中 Trainer 常用方法和属性

Hugging Face transformers 库中 Trainer 常用方法和属性

Trainer 是 Hugging Face transformers 提供的 高层 API,用于 简化 PyTorch Transformer 模型的训练、评估和推理,支持 多 GPU 训练、梯度累积、混合精度训练 等。


1. Trainer 的常见属性

Trainer 初始化后,可以访问以下常见属性:

from transformers import Trainer

trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset)
属性作用
trainer.model训练的 Transformer 模型
trainer.argsTrainingArguments 训练参数
trainer.train_dataset训练数据集
trainer.eval_dataset评估数据集
trainer.tokenizer使用的 tokenizer
trainer.state训练状态,包括当前 epoch、global_step
trainer.control训练控制参数
trainer.log_history训练日志历史

2. Trainer 的常用方法

方法作用
trainer.train()训练模型
trainer.evaluate()评估模型
trainer.predict(test_dataset)进行推理
trainer.save_model(path)保存模型
trainer.save_state()保存训练状态
trainer.load_state_dict(state_dict)加载训练状态
trainer.log(metrics)记录日志
trainer.add_callback(callback)添加训练回调
trainer.remove_callback(callback)移除训练回调

3. Trainer 详细用法

3.1. 训练模型

trainer.train()
  • 训练日志默认每 logging_steps 步打印一次
  • 可以在 TrainingArguments 中调整 evaluation_strategy="epoch" 让训练每个 epoch 进行评估

3.2. 评估模型

trainer.evaluate()

返回 评估指标(如 lossaccuracy)。


3.3. 进行推理

predictions = trainer.predict(test_dataset)
print(predictions)
  • predictions.predictions:模型输出的 logits
  • predictions.label_ids:真实标签

3.4. 保存和加载模型

保存模型
trainer.save_model("./saved_model")
重新加载模型
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained("./saved_model")

3.5. 记录日志

trainer.log({"loss": 0.1, "accuracy": 0.95})

3.6. 获取训练状态

print(trainer.state)

3.7. 添加回调

from transformers import EarlyStoppingCallback

trainer.add_callback(EarlyStoppingCallback(early_stopping_patience=3))

4. Trainer 在不同任务中的应用

4.1. 文本分类

from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)

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,
    logging_dir="./logs",
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)
trainer.train()

4.2. 命名实体识别(NER)

from transformers import AutoModelForTokenClassification

model = AutoModelForTokenClassification.from_pretrained("bert-base-cased", num_labels=9)
trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset)
trainer.train()

4.3. 机器翻译

from transformers import AutoModelForSeq2SeqLM

model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-fr")
trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset)
trainer.train()

5. 总结

Trainertransformers 提供的 高效训练工具,适用于 文本分类、NER、翻译、摘要等任务

常用方法:

  • trainer.train() 进行 训练
  • trainer.evaluate() 进行 评估
  • trainer.predict(test_dataset) 进行 推理
  • trainer.save_model(path) 保存模型
  • trainer.log(metrics) 记录日志
  • trainer.add_callback(callback) 添加回调
Hugging Face Transformers中,使用AWD-QAModel(即Abridged Wasserstein Distance Quantization Model)通常涉及到将预训练的大型语言模型进行量化,以便于部署到资源有限的设备上,如手机或嵌入式系统。AWD量化是通过Quantization-Aware Training (QAT) 过程实现的,它允许模型训练过程中就考虑到量化的影响。 以下是使用Hugging Face Transformers进行AWD量化模型的基本步骤: 1. **安装依赖**: 首先,你需要安装`transformers`及其相关的量化工具包,例如`transformers quantization`。可以使用pip安装: ``` pip install transformers[quantization] ``` 2. **加载模型**: 导入需要的模块并加载预训练模型,比如BERT、GPT-2等: ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification, is_apex_available, AWDQConfig model_name = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) ``` 3. **量化配置**: 创建一个AWD量化配置对象: ```python config = AWDQConfig(model=model) ``` 4. **准备数据**: 将数据转换成模型接受的格式,并分割成小批次,这对于量化过程很重要。 5. **量化训练**: 使用`Trainer` API进行量化训练,这会自动在训练过程中应用量化技巧: ```python trainer = Trainer( model=model, args=..., data_collator=..., train_dataset=..., eval_dataset=..., # 可选 tokenizer=tokenizer, config=config, compute_metrics=..., ) trainer.train() ``` 6. **保存量化模型**: 训练完成后,你可以保存量化后的模型: ```python trainer.save_model("path/to/save/awd_quantized_model") ``` 7. **部署**: 现在可以将这个量化模型用于推理任务,相比未量化模型,它的内存占用更小,速度更快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值