赞
踩
飞桨(PaddlePaddle)的NLP库PaddleNLP中的Trainer
类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer
类简化了训练过程,提供了自动的批处理、模型保存、日志记录等特性。
以下是Trainer
类的主要参数和功能:
model
:可以是一个预训练的模型或一个自定义的paddle.nn.Layer
。如果使用自定义模型,它需要与PaddleNLP提供的模型工作方式相同。args
:用于调整训练的参数。如果未提供,将默认使用一个具有output_dir
设置为当前目录中名为tmp_trainer
的目录的基本TrainingArguments
实例。data_collator
:用于从train_dataset
或eval_dataset
的列表中形成一批数据的功能。如果没有提供tokenizer
,将默认使用default_data_collator
;否则,将使用DataCollatorWithPadding
的实例。train_dataset
和eval_dataset
:用于训练和评估的数据集。如果数据集是datasets.Dataset
的实例,则不会接受model.forward()
方法不接受的字段。tokenizer
:用于预处理数据的分词器。如果提供了,将在批量输入时自动将输入填充到最大长度,并在中断训练或重用模型时保存分词器。compute_metrics
:用于在评估时计算指标的函数。它必须接受一个EvalPrediction
对象并返回一个字典,字典中的字符串表示指标名称,对应的值表示指标值。callbacks
:一个回调函数列表,用于自定义训练循环。可以将这些回调函数添加到默认回调函数列表中。如果想要移除默认使用的回调函数,可以使用Trainer.remove_callback
方法。optimizers
:一个包含优化器和调度器的元组。如果没有提供,将默认使用AdamW
优化器,并根据args
使用get_linear_schedule_with_warmup
调度器。preprocess_logits_for_metrics
:一个函数,用于在每次评估步骤后预处理logits。它必须接受两个张量,即logits和labels,并返回处理后的logits。此函数的修改将在compute_metrics
中反映在接收到的预测值上。Trainer
类简化了训练流程,让用户可以更加专注于模型的设计和训练策略,而不必担心底层的训练细节。通过提供这些参数和功能,用户可以轻松地训练、评估和部署模型。TrainingArguments
类是 PaddleNLP 中用于定义与训练循环相关的命令行参数的子集。这些参数用于配置训练过程的各种方面,例如输出目录、训练和评估的批处理大小、学习率、训练周期数等。通过 PdArgumentParser
,可以将这个类转换为 argparse
参数,以便在命令行上指定。
以下是 TrainingArguments
类中一些关键参数的详细介绍:
True
,将覆盖输出目录中的内容。TrainingArguments
类可以被转换为命令行参数,使用户能够轻松地在运行脚本时指定这些参数。TrainingArguments
类中的剩余参数用于进一步控制训练过程的高级特性,如混合精度训练、并行训练策略等。以下是对这些参数的详细介绍:save_strategy="steps"
,则在达到指定的步数之前保存两次检查点。output_dir
中删除较旧的检查点。'O2'
,是否使用 float32 权重梯度进行计算。TrainingArguments
类的参数说明中,涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍:num_train_epochs
。logging_strategy="steps"
,则两次日志之间的更新步数。save_strategy="steps"
,则在两次检查点保存之间的更新步数。在您提供的TrainingArguments
类的参数说明中,涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍:
enable_mp_async_allreduce
:支持在列并行线性反向传播期间的all_reduce(dx)与matmul(dw)重叠,可以加速模型并行性能。enable_mp_skip_c_identity
:支持在列并行线性和行并行线性中跳过c_identity,当与mp_async_allreduce
一起设置时,可以进一步加速模型并行。enable_mp_fused_linear_param_grad_add
:支持在列并行线性中融合线性参数梯度添加,当与mp_async_allreduce
一起设置时,可以进一步加速模型并行。enable_delay_scale_loss
:在优化器步骤累积梯度,所有梯度除以累积步数,而不是直接在损失上除以累积步数。disable_p2p_cache_shape
:如果您使用的最大序列长度变化,请设置此选项。disable_partial_send_recv
:优化tensor并行的发送速度。enable_delay_scale_loss
:在优化器步骤累积梯度,所有梯度除以内部流水线累积步数,而不是直接在损失上除以累积步数。enable_dp_comm_overlap
:融合数据并行梯度通信。enable_sharding_comm_overlap
:融合sharding stage 1并行梯度通信。enable_release_grads
:在每次迭代后释放梯度,以减少峰值内存使用。梯度的创建将推迟到下一迭代的反向传播。enable_stage1_tensor_fusion
:将小张量融合成大的张量块来加速通信,可能会增加内存占用。enable_stage1_overlap
:在回传计算之前,将小张量融合成大的张量块来加速通信,可能会损害回传速度。enable_stage2_overlap
:重叠stage2 NCCL通信与计算。重叠有一些约束,例如,对于广播重叠,logging_step
应该大于1,在训练期间不应调用其他同步操作。evaluation_strategy="steps"
,则两次评估之间的更新步数。Trainer
将使用相应的输出(通常是索引2)作为过去状态,并在下一次训练步骤中将其提供给模型,作为关键字参数mems
。datasets.Dataset
数据集,是否自动删除模型前向方法未使用的列。TrainingArguments
类的参数说明中,涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍:load_best_model_at_end
配合使用,指定用于比较两个不同模型的度量。必须是评估返回的度量名称,可以是带前缀"eval_"
或不带前缀。如果未指定且load_best_model_at_end=True
,则默认为"loss"
(使用评估损失)。load_best_model_at_end
和metric_for_best_model
配合使用,指定更好的模型是否应该有更大的度量。默认为:
metric_for_best_model
设置为不是"loss"
或"eval_loss"
的值,则默认为True
。metric_for_best_model
未设置,或设置为"loss"
或"eval_loss"
,则默认为False
。True
,训练将更快开始,但结果可能与中断的训练结果不同。adamw
或adafactor
。group_by_length
为True
且数据集是Dataset
的实例。"visualdl"
/"wandb"
/"tensorboard"
。"none"
表示不使用任何集成。Trainer
使用,而是由您的训练/评估脚本使用。flatten_param_grads
方法,仅用于 NPU 设备。默认为False
。False
。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。