什么网站需要数据库,做网站搜索排名的公司工作怎么样,品牌推广方案范文,网站开发研究的方法与技术路线飞桨#xff08;PaddlePaddle#xff09;的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程#xff0c;提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…飞桨PaddlePaddle的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数和功能
模型 model可以是一个预训练的模型或一个自定义的paddle.nn.Layer。如果使用自定义模型它需要与PaddleNLP提供的模型工作方式相同。 criterion 如果模型只输出logits并且您想对模型的输出进行更多的计算可以添加criterion层。 args args用于调整训练的参数。如果未提供将默认使用一个具有output_dir设置为当前目录中名为tmp_trainer的目录的基本TrainingArguments实例。 数据整理器DataCollator data_collator用于从train_dataset或eval_dataset的列表中形成一批数据的功能。如果没有提供tokenizer将默认使用default_data_collator否则将使用DataCollatorWithPadding的实例。 训练数据集和评估数据集 train_dataset和eval_dataset用于训练和评估的数据集。如果数据集是datasets.Dataset的实例则不会接受model.forward()方法不接受的字段。 分词器Tokenizer tokenizer用于预处理数据的分词器。如果提供了将在批量输入时自动将输入填充到最大长度并在中断训练或重用模型时保存分词器。 计算指标compute_metrics compute_metrics用于在评估时计算指标的函数。它必须接受一个EvalPrediction对象并返回一个字典字典中的字符串表示指标名称对应的值表示指标值。 回调函数callbacks callbacks一个回调函数列表用于自定义训练循环。可以将这些回调函数添加到默认回调函数列表中。如果想要移除默认使用的回调函数可以使用Trainer.remove_callback方法。 优化器optimizers optimizers一个包含优化器和调度器的元组。如果没有提供将默认使用AdamW优化器并根据args使用get_linear_schedule_with_warmup调度器。 预处理logits用于指标preprocess_logits_for_metrics preprocess_logits_for_metrics一个函数用于在每次评估步骤后预处理logits。它必须接受两个张量即logits和labels并返回处理后的logits。此函数的修改将在compute_metrics中反映在接收到的预测值上。 Trainer类简化了训练流程让用户可以更加专注于模型的设计和训练策略而不必担心底层的训练细节。通过提供这些参数和功能用户可以轻松地训练、评估和部署模型。 paddlenlp/trainer/training_args.py
TrainingArguments 类是 PaddleNLP 中用于定义与训练循环相关的命令行参数的子集。这些参数用于配置训练过程的各种方面例如输出目录、训练和评估的批处理大小、学习率、训练周期数等。通过 PdArgumentParser可以将这个类转换为 argparse 参数以便在命令行上指定。 以下是 TrainingArguments 类中一些关键参数的详细介绍
output_dir模型预测和检查点的输出目录。overwrite_output_dir如果为 True将覆盖输出目录中的内容。do_train是否运行训练。do_eval是否在验证集上评估模型。do_predict是否在测试集上进行预测。evaluation_strategy训练期间采用的评估策略可以是 “no”不评估、“steps”每指定步数评估一次或 “epoch”每轮训练结束后评估。per_device_train_batch_size训练时的每个 GPU 核心/CPU 的批处理大小。per_device_eval_batch_size评估时的每个 GPU 核心/CPU 的批处理大小。learning_rateAdamW 优化器的初始学习率。num_train_epochs要执行的总训练周期数。max_steps要执行的总训练步数。log_on_each_node在多节点分布式训练中是否每个节点都进行日志记录。logging_dir日志目录。logging_strategy训练期间采用的日志策略可以是 “no”不记录日志、“epoch”每轮训练结束后记录日志或 “steps”每指定步数记录一次日志。save_strategy训练期间采用的检查点保存策略可以是 “no”不保存检查点、“epoch”每轮训练结束后保存检查点或 “steps”每指定步数保存一次检查点。 这些参数可以在您的训练脚本中使用以配置和控制训练过程。TrainingArguments 类可以被转换为命令行参数使用户能够轻松地在运行脚本时指定这些参数。 TrainingArguments 类中的剩余参数用于进一步控制训练过程的高级特性如混合精度训练、并行训练策略等。以下是对这些参数的详细介绍save_steps如果 save_strategysteps则在达到指定的步数之前保存两次检查点。save_total_limit如果指定了值将限制保存的检查点总数并在 output_dir 中删除较旧的检查点。save_on_each_node在多节点分布式训练中是否在每个节点上保存模型和检查点。如果不同节点使用相同的存储则不应激活此选项因为文件名将相同。no_cuda是否即使可用也禁用 CUDA。seed训练开始时设置的随机种子用于确保跨运行的可重复性。fp16是否使用 16 位混合精度训练而不是 32 位训练。fp16_opt_level对于 16 位训练选择的 AMP 优化级别。amp_custom_black_list自定义黑名单用于指定哪些操作不应转换为 16 位或 32 位。amp_custom_white_list自定义白名单用于指定哪些操作应转换为 16 位或 32 位。amp_master_grad对于 AMP 优化级别 O2是否使用 float32 权重梯度进行计算。sharding是否使用 Paddle Sharding Data Parallel 训练。sharding_parallel_degree在特定卡组中的 Sharding 参数。tensor_parallel_degree张量并行度用于指定将 Transformer 层分割成多少部分。pipeline_parallel_degree流水线并行度用于指定将所有 Transformer 层分割成多少阶段。sep_parallel_degreePaddle 序列并行策略可以减少激活 GPU 内存。tensor_parallel_config一些影响模型并行性能的额外配置。pipeline_parallel_config一些影响流水线并行使用的额外配置。sharding_parallel_config一些影响 Sharding 并行的额外配置。recompute是否在训练过程中重新计算梯度。num_workers数据加载过程中使用的线程数。max_predictions_per_batch每个批处理中最大预测的数量。prediction_loss_only在评估和生成预测时是否只返回损失。 这些参数提供了对训练过程的细粒度控制允许用户根据他们的需求和硬件配置来优化训练。在实际应用中这些参数可能需要根据具体情况进行调整以达到最佳的训练效果。 在您提供的TrainingArguments类的参数说明中涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍per_device_train_batch_size指定每个GPU核心/CPU在训练时使用的批处理大小。per_device_eval_batch_size指定每个GPU核心/CPU在评估时使用的批处理大小。gradient_accumulation_steps在执行反向传播和更新参数之前累积梯度的步数。使用梯度累积时一次步数对应一次反向传播。eval_accumulation_steps在将预测结果移动到CPU之前累积的预测步数。如果未设置则整个预测结果将在GPU/TPU上累积后再移动到CPU。learning_rate指定AdamW优化器的初始学习率。weight_decay对AdamW优化器中的所有层除偏置和LayerNorm层应用的权重衰减。adam_beta1AdamW优化器的beta1超参数。adam_beta2AdamW优化器的beta2超参数。adam_epsilonAdamW优化器的epsilon超参数。max_grad_norm用于梯度裁剪的最大梯度范数。num_train_epochs要执行的总训练周期数。max_steps要执行的总训练步数。如果设置为正数将覆盖num_train_epochs。lr_scheduler_type指定的学习率调度器类型。warmup_ratio用于线性预热的总训练步数的比例。warmup_steps用于从0到学习率进行线性预热的步数。num_cycles余弦调度器中的波数。lr_end多项式调度器中的结束学习率。power多项式调度器中的幂因子。 在训练过程的其他方面还提供了以下配置选项log_on_each_node在多节点分布式训练中是否每个节点都进行日志记录。logging_dir日志目录。logging_strategy训练期间采用的日志策略。logging_first_step是否记录和评估第一个全局步骤。logging_steps如果logging_strategysteps则两次日志之间的更新步数。save_strategy训练期间采用的检查点保存策略。save_steps如果save_strategysteps则在两次检查点保存之间的更新步数。save_total_limit限制保存的检查点总数。save_on_each_node在多节点分布式训练中是否每个节点都保存模型和检查点。no_cuda是否禁用CUDA。seed训练开始时设置的随机种子。fp16是否使用16位混合精度训练。fp16_opt_level16位训练的AMP优化级别。amp_custom_black_list自定义黑名单用于指定哪些操作不应转换为16位或32位。amp_custom_white_list自定义白名单用于指定哪些操作应转换为16位或32位。amp_master_grad是否使用float32权重梯度进行计算。sharding是否使用Paddle Sharding Data Parallel训练。sharding_parallel_degreeSharding参数用于指定在特定卡组中的并行度。tensor_parallel_degree张量并行度用于指定将Transformer层分割成多少部分。pipeline_parallel_degree流水线并行度用于指定将所有Transformer层分割成多少阶段。
在您提供的TrainingArguments类的参数说明中涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍
tensor_parallel_config影响模型并行性能的一些额外配置例如 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在优化器步骤累积梯度所有梯度除以累积步数而不是直接在损失上除以累积步数。 pipeline_parallel_config影响流水线并行使用的额外配置例如 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在每次迭代后释放梯度以减少峰值内存使用。梯度的创建将推迟到下一迭代的反向传播。 sharding_parallel_config影响Sharding并行的额外配置例如 enable_stage1_tensor_fusion将小张量融合成大的张量块来加速通信可能会增加内存占用。enable_stage1_overlap在回传计算之前将小张量融合成大的张量块来加速通信可能会损害回传速度。enable_stage2_overlap重叠stage2 NCCL通信与计算。重叠有一些约束例如对于广播重叠logging_step应该大于1在训练期间不应调用其他同步操作。 recompute是否重新计算前向传播以计算梯度。用于节省内存。仅支持具有transformer块的网络。scale_lossfp16的初始scale_loss值。local_rank分布式训练过程中的进程排名。dataloader_drop_last是否丢弃最后一个不完整的批处理如果数据集的长度不能被批处理大小整除。eval_steps如果evaluation_strategysteps则两次评估之间的更新步数。max_evaluate_steps要执行的总评估步数。dataloader_num_workers数据加载过程中使用的子进程数。past_index一些模型如TransformerXL或XLNet可以使用过去的隐状态为其预测。如果此参数设置为正整数Trainer将使用相应的输出通常是索引2作为过去状态并在下一次训练步骤中将其提供给模型作为关键字参数mems。run_name运行的描述符。通常用于日志记录。disable_tqdm是否禁用tqdm进度条和指标表。remove_unused_columns如果使用datasets.Dataset数据集是否自动删除模型前向方法未使用的列。label_names输入字典中对应于标签的键的列表。load_best_model_at_end是否在训练结束时加载找到的最佳模型。 在您提供的TrainingArguments类的参数说明中涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍metric_for_best_model与load_best_model_at_end配合使用指定用于比较两个不同模型的度量。必须是评估返回的度量名称可以是带前缀eval_或不带前缀。如果未指定且load_best_model_at_endTrue则默认为loss使用评估损失。greater_is_better与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。 ignore_data_skip在继续训练时是否跳过某些 epochs 和 batches 以确保数据加载与之前训练的数据加载阶段相同。如果设置为True训练将更快开始但结果可能与中断的训练结果不同。optim要使用的优化器adamw或adafactor。length_column_name预计算长度的列名。如果该列存在则按长度分组将使用这些值而不是在训练启动时计算它们。除非group_by_length为True且数据集是Dataset的实例。report_to报告结果和日志的集成列表。支持的平台是visualdl/wandb/tensorboard。none表示不使用任何集成。wandb_api_keyWeights Biases (WandB) API 密钥用于与 WandB 服务进行身份验证。resume_from_checkpoint要从中恢复的模型检查点的路径。此参数不直接由Trainer使用而是由您的训练/评估脚本使用。flatten_param_grads是否在优化器中使用flatten_param_grads方法仅用于 NPU 设备。默认为False。skip_profile_timer是否跳过分析时间计时器计时器将记录前向/反向/步等的时间使用情况。distributed_dataloader是否使用分布式数据加载器。默认为False。 这些参数提供了对训练过程的细粒度控制允许用户根据他们的需求和硬件配置来优化训练。在实际应用中这些参数可能需要根据具体情况进行调整以达到最佳的训练效果。