1、介绍
-
提供训练的函数,内部封装了完整的训练,评估逻辑,并集成了多种后端,如deepspped,pytorch FSDP,搭配TrainingArguments对训练过程中的各项参数进行配置,可以非常方便快捷的启动模型单机/分布式训练
-
trainer对模型的输入输出是有限制的,要求模型返回元组或者ModelOutput的子类
-
如果输入中提供了labels,模型要能返回loss结果,如果是元组,要求loss为元组的第一个
本小节介绍的内容在【Foundation】(三)transformers之Model已经使用过一次,想看全部代码请跳转【Foundation】(三)transformers之Model;
from transformers import Trainer, TrainingArguments
2、创建TrainArguments
train_args = TrainingArguments(output_dir="./checkpoints", # 输出文件夹
per_device_train_batch_size=64, # 训练时的batch_size
per_device_eval_batch_size=128, # 验证时的batch_size
logging_steps=10, # log 打印的频率
evaluation_strategy="epoch", # 评估策略
save_strategy="epoch", # 保存策略
save_total_limit=3, # 最大保存数
learning_rate=2e-5, # 学习率
weight_decay=0.01, # weight_decay
metric_for_best_model="f1", # 设定评估指标
load_best_model_at_end=True) # 训练完成后加载最优模型
train_args
3、创建Trainer
from transformers import DataCollatorWithPadding
trainer = Trainer(model=model,
args=train_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
data_collator=DataCollatorWithPadding(tokenizer=tokenizer),
compute_metrics=eval_metric)
4、训练
trainer.train()