# 配置文件说明

[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.4.10/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/r2.4.10/docs/mindformers/docs/source_zh_cn/appendix/conf_files.md)

## 概述

在模型的训练和推理过程中通常需要配置不同的参数,MindFormers支持使用`YAML`文件集中管理和调整可配置项,使模型的配置更加结构化,同时提高了其可维护性。

## YAML文件内容说明

MindFormers提供的`YAML`文件中包含对于不同功能的配置项,下面按照配置项的内容对其进行说明。

### 基础配置

基础配置主要用于指定MindSpore随机种子以及加载权重的相关设置。

| 参数              | 说明                                                                                                                                                                                                                   | 类型   |
|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
| seed            | 设置全局种子,详情可参考[mindspore.set_seed](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/mindspore/mindspore.set_seed.html)                                                                                            | int  |
| run_mode        | 设置模型的运行模式,可选`train`、`finetune`、`eval`或`predict`                                                                                                                                                                      | str  |
| output_dir      | 设置保存log、checkpoint、strategy等文件的路径                                                                                                                                                                                    | str  |
| load_checkpoint | 加载权重的文件或文件夹路径,目前有3个应用场景:<br/>1. 支持传入完整权重文件路径<br/>2. 支持传入离线切分后的权重文件夹路径<br/>3. 支持传入包含lora权重和base权重的文件夹路径<br/>各种权重的获取途径可参考[权重转换功能](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/function/weight_conversion.html) | str  |
| auto_trans_ckpt | 是否开启在线权重自动转换功能,详情可参考[权重转换功能](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/function/weight_conversion.html)                                                                                                    | bool |
| resume_training | 是否开启断点续训功能,详情可参考[断点续训功能](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/function/resume_training.html#%E6%96%AD%E7%82%B9%E7%BB%AD%E8%AE%AD)                                                                     | bool |

### Context配置

Context配置主要用于指定[mindspore.set_context](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/mindspore/mindspore.set_context.html)中的相关参数。

| 参数                        | 说明                                                         | 类型     |
| --------------------------- | ------------------------------------------------------------ | -------- |
| context.mode                | 设置后端执行模式,`0`表示GRAPH_MODE,MindFormers目前仅支持在GRAPH_MODE模式下运行 | int      |
| context.device_target       | 设置后端执行设备,MindFormers仅支持在`Ascend`设备上运行      | str      |
| context.device_id           | 设置执行设备ID,其值必须在可用设备范围内,默认值为`0`        | int      |
| context.enable_graph_kernel | 是否开启图算融合去优化网络执行性能, 默认值为`False`,详情可参考[图算融合](https://www.mindspore.cn/docs/zh-CN/r2.4.10/model_train/optimize/graph_fusion_engine.html) | bool     |
| context.max_call_depth      | 设置函数调用的最大深度,其值必须为正整数,默认值为`1000`     | int      |
| context.max_device_memory   | 设置设备可用的最大内存,格式为"xxGB",默认值为`1024GB`       | str      |
| context.mempool_block_size  | 设置内存块大小,格式为"xxGB",默认值为`1GB`                  | str      |
| context.save_graphs         | 在执行过程中保存编译图。<br/>1. `False`或`0`表示不保存中间编译图。<br/>2. `1`表示运行时会输出图编译过程中生成的一些中间文件。<br/>3. `True`或`2`表示生成更多后端流程相关的IR文件。<br/>4. `3`表示生成可视化计算图和更多详细的前端IR图。 | bool/int |
| context.save_graphs_path    | 保存编译图的路径                                             | str      |

### 模型配置

由于不同的模型配置会有差异,这里仅对MindFormers中模型的通用配置进行说明。

| 参数                                         | 说明                                                                                               | 类型   |
|--------------------------------------------|--------------------------------------------------------------------------------------------------|------|
| model.arch.type                            | 设置模型类,构建模型时可以根据模型类对模型进行实例化                                                                       | str  |
| model.model_config.type                    | 设置模型配置类,模型配置类需要与模型类匹配使用,即模型配置类中应包含所有模型类使用的参数                                                     | str  |
| model.model_config.num_layers              | 设置模型层数,通常指模型Decoder Layer的层数                                                                     | int  |
| model.model_config.seq_length              | 设置模型序列长度,该参数表示模型所支持的最大序列长度                                                                       | int  |
| model.model_config.hidden_size             | 设置模型隐藏状态的维数                                                                                      | int  |
| model.model_config.vocab_size              | 设置模型词表大小                                                                                         | int  |
| model.model_config.top_k                   | 设置推理时从概率最大的`top_k`个tokens中采样                                                                     | int  |
| model.model_config.top_p                   | 设置推理时从概率最大且概率累计不超过`top_p`的tokens中采样                                                              | int  |
| model.model_config.use_past                | 是否开启模型增量推理,开启后可使用Paged Attention提升推理性能,在模型训练时必须设置为`False`                                        | bool |
| model.model_config.max_decode_length       | 设置生成文本的最大长度,包括输入长度                                                                               | int  |
| model.model_config.max_length              | 同`max_decode_length`,与`max_decode_length`同时设置时,`max_length`生效                                    | int  |
| model.model_config.max_new_tokens          | 设置生成新文本的最大长度,不包括输入长度,与`max_length`同时设置时,`max_new_tokens`生效                                       | int  |
| model.model_config.min_length              | 设置生成文本的最小长度,包括输入长度                                                                               | int  |
| model.model_config.min_new_tokens          | 设置生成新文本的最小长度,不包括输入长度,与`min_length`同时设置时,`min_new_tokens`生效                                       | int  |
| model.model_config.repetition_penalty      | 设置生成重复文本的惩罚系数,`repetition_penalty`不小于1,等于1时不对重复输出进行惩罚                                            | int  |
| model.model_config.block_size              | 设置Paged Attention中block的大小,仅`use_past=True`时生效                                                   | int  |
| model.model_config.num_blocks              | 设置Paged Attention中block的总数,仅`use_past=True`时生效,应满足`batch_size×seq_length<=block_size×num_blocks` | int  |
| model.model_config.return_dict_in_generate | 是否以字典形式返回`generate`接口的推理结果,默认为`False`                                                            | bool |
| model.model_config.output_scores           | 是否以字典形式返回结果时,包含每次前向生成时的输入softmax前的分数,默认为`False`                                                  | bool |
| model.model_config.output_logits           | 是否以字典形式返回结果时,包含每次前向生成时模型输出的logits,默认为`False`                                                     | bool |

### MoE配置

除了上述模型的基本配置,MoE模型需要单独配置一些moe模块的超参,由于不同模型使用的参数会有不同,仅对通用配置进行说明:

| 参数                                         | 说明                                                                                               | 类型   |
|--------------------------------------------|--------------------------------------------------------------------------------------------------|------|
| moe_config.expert_num                    | 设置路由专家数量                                                     | int  |
| moe_config.shared_expert_num                    | 设置共享专家数量                                                     | int  |
| moe_config.moe_intermediate_size                    | 设置专家层中间维度大小                                                     | int  |
| moe_config.capacity_factor              | 设置专家容量因子                                                                     | int  |
| moe_config.num_experts_chosen             | 设置每个token选择专家数目                                                                                      | int  |
| moe_config.enable_sdrop              | 设置是否使能token丢弃策略`sdrop`,由于MindFormers的MoE是静态shape实现所以不能保留所有token                                                                       | bool  |
| moe_config.aux_loss_factor              | 设置均衡性loss的权重                                                                       | list[float]  |
| moe_config.first_k_dense_replace              | 设置moe层的使能block,一般设置为1,表示第一个block不使能moe                                                                       | int  |

### 模型训练配置

启动模型训练时,除了模型相关参数,还需要设置trainer、runner_config、学习率以及优化器等训练所需模块的参数,MindFormers提供了如下配置项。

| 参数                                          | 说明                                                                                                                                                                  | 类型    |
|---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------|
| trainer.type                                | 设置trainer类,通常不同应用场景的模型会设置不同的trainer类                                                                                                                                | str   |
| trainer.model_name                          | 设置模型名称,格式为'{name}_xxb',表示模型的某一规格                                                                                                                                    | str   |
| runner_config.epochs                        | 设置模型训练的轮数                                                                                                                                                           | int   |
| runner_config.batch_size                    | 设置批处理数据的样本数,该配置会覆盖数据集配置中的`batch_size`                                                                                                                               | int   |
| runner_config.sink_mode                     | 是否开启数据下沉模式,详情可参考[下沉模式](https://www.mindspore.cn/docs/zh-CN/r2.4.10/model_train/train_process/optimize/sink_mode.html)                                                | bool  |
| runner_config.sink_size                     | 设置每次从Host下发到Device的迭代数量,仅`sink_mode=True`时生效                                                                                                                        | int   |
| runner_config.gradient_accumulation_steps   | 设置梯度累积步数,默认值为1,表示不开启梯度累积                                                                                                                                            | int   |
| runner_wrapper.type                         | 设置wrapper类,一般设置'MFTrainOneStepCell'即可                                                                                                                               | str   |
| runner_wrapper.scale_sense.type             | 设置梯度缩放类,一般设置'DynamicLossScaleUpdateCell'即可                                                                                                                          | str   |
| runner_wrapper.scale_sense.use_clip_grad    | 是否开启梯度剪裁,开启可避免反向梯度过大导致训练无法收敛的情况                                                                                                                                     | bool  |
| runner_wrapper.scale_sense.loss_scale_value | 设置loss动态尺度系数,模型loss可以根据该参数配置动态变化                                                                                                                                    | int   |
| lr_schedule.type                            | 设置lr_schedule类,lr_schedule主要用于调整模型训练中的学习率                                                                                                                           | str   |
| lr_schedule.learning_rate                   | 设置初始化学习率大小                                                                                                                                                          | float |
| lr_scale                                    | 是否开启学习率缩放                                                                                                                                                           | bool  |
| lr_scale_factor                             | 设置学习率缩放系数                                                                                                                                                           | int   |
| layer_scale                                 | 是否开启层衰减                                                                                                                                                             | bool  |
| layer_decay                                 | 设置层衰减系数                                                                                                                                                             | float |
| optimizer.type                              | 设置优化器类,优化器主要用于计算模型训练的梯度                                                                                                                                             | str   |
| optimizer.weight_decay                      | 设置优化器权重衰减系数                                                                                                                                                         | float |
| train_dataset.batch_size                    | 同`runner_config.batch_size`                                                                                                                                         | int   |
| train_dataset.input_columns                 | 设置训练数据集输入的数据列                                                                                                                                                       | list  |
| train_dataset.output_columns                | 设置训练数据集输出的数据列                                                                                                                                                       | list  |
| train_dataset.column_order                  | 设置训练数据集输出数据列的顺序                                                                                                                                                     | list  |
| train_dataset.num_parallel_workers          | 设置读取训练数据集的进程数                                                                                                                                                       | int   |
| train_dataset.python_multiprocessing        | 是否开启Python多进程模式提升数据处理性能                                                                                                                                             | bool  |
| train_dataset.drop_remainder                | 是否在最后一个批处理数据包含样本数小于batch_size时,丢弃该批处理数据                                                                                                                             | bool  |
| train_dataset.repeat                        | 设置数据集重复数据次数                                                                                                                                                         | int   |
| train_dataset.numa_enable                   | 设置NUMA的默认状态为数据读取启动状态                                                                                                                                                | bool  |
| train_dataset.prefetch_size                 | 设置预读取数据量                                                                                                                                                            | int   |
| train_dataset.data_loader.type              | 设置数据加载类                                                                                                                                                             | str   |
| train_dataset.data_loader.dataset_dir       | 设置加载数据的路径                                                                                                                                                           | str   |
| train_dataset.data_loader.shuffle           | 是否在读取数据集时对数据进行随机排序                                                                                                                                                  | bool  |
| train_dataset.transforms                    | 设置数据增强相关选项                                                                                                                                                          | -     |
| train_dataset_task.type                     | 设置dataset类,该类用于对数据加载类以及其他相关配置进行封装                                                                                                                                   | str   |
| train_dataset_task.dataset_config           | 通常设置为`train_dataset`的引用,包含`train_dataset`的所有配置项                                                                                                                     | -     |
| auto_tune                                   | 是否开启数据处理参数自动调优,详情可参考[set_enable_autotune](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/dataset/mindspore.dataset.config.set_enable_autotune.html)          | bool  |
| filepath_prefix                             | 设置数据优化后的参数配置的保存路径                                                                                                                                                   | str   |
| autotune_per_step                           | 设置自动数据加速的配置调整step间隔,详情可参考[set_autotune_interval](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/dataset/mindspore.dataset.config.set_autotune_interval.html) | int   |

### 并行配置

为了提升模型的性能,在大规模集群的使用场景中通常需要为模型配置并行策略,详情可参考[分布式并行](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/function/distributed_parallel.html),MindFormers中的并行配置如下。

| 参数                                                              | 说明                                                                                                                                                                                               | 类型   |
|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|
| use_parallel                                                    | 是否开启并行模式                                                                                                                                                                                         | bool |
| parallel_config.data_parallel                                   | 设置数据并行数                                                                                                                                                                                          | int  |
| parallel_config.model_parallel                                  | 设置模型并行数                                                                                                                                                                                          | int  |
| parallel_config.context_parallel                                | 设置序列并行数                                                                                                                                                                                          | int  |
| parallel_config.pipeline_stage                                  | 设置流水线并行数                                                                                                                                                                                         | int  |
| parallel_config.micro_batch_num                                 | 设置流水线并行的微批次大小,在`parallel_config.pipeline_stage`大于1时,应满足`parallel_config.micro_batch_num` >= `parallel_config.pipeline_stage`                                                                     | int  |
| parallel_config.gradient_aggregation_group                      | 设置梯度通信算子融合组的大小                                                                                                                                                                                   | int  |
| micro_batch_interleave_num                                      | 设置多副本并行数,大于1时开启多副本并行。通常在使用模型并行时开启,主要用于优化模型并行产生的通信损耗,仅使用流水并行时不建议开启。详情可参考[MicroBatchInterleaved](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/nn/mindspore.nn.MicroBatchInterleaved.html) | int  |
| parallel.parallel_mode                                          | 设置并行模式,`0`表示数据并行模式, `1`表示半自动并行模式, `2`表示自动并行模式, `3`表示混合并行模式,一般设置为半自动并行模式                                                                                                                          | int  |
| parallel.gradients_mean                                         | 是否在梯度AllReduce后执行平均算子。通常半自动并行模式下设为`False`,数据并行模式下设为`True`                                                                                                                                        | bool |
| parallel.enable_alltoall                                        | 是否在通信期间生成AllToAll通信算子。通常仅在MOE场景下设为`True`,默认值为`False`                                                                                                                                             | bool |
| parallel.full_batch                                             | 是否在并行模式下加载完整batch的数据集,在自动并行模式和半自动并行模式下设置为`True`,在数据并行模式下设置为`False`                                                                                                                               | bool |
| parallel.search_mode                                            | 设置全自动并行策略搜索模式,可选`recursive_programming`, `dynamic_programming`和`sharding_propagation`,仅在全自动并行模式下生效,实验性接口                                                                                         | str  |
| parallel.strategy_ckpt_save_file                                | 设置并行切分策略文件的保存路径                                                                                                                                                                                  | str  |
| parallel.strategy_ckpt_config.only_trainable_params             | 是否仅保存(或加载)可训练参数的切分策略信息,默认为`True`,当网络中存在冻结的参数但又需要切分时将该参数设为`False`                                                                                                                                 | bool |
| parallel.enable_parallel_optimizer                              | 是否开启优化器并行。<br/>1. 在数据并行模式下将模型权重参数按device数进行切分<br/>2. 在半自动并行模式下将模型权重参数按`parallel_config.data_parallel`进行切分                                                                                        | bool |
| parallel.parallel_optimizer_config.gradient_accumulation_shard  | 设置累计的梯度变量是否在数据并行的维度上进行切分,仅`enable_parallel_optimizer=True`时生效                                                                                                                                    | bool |
| parallel.parallel_optimizer_config.parallel_optimizer_threshold | 设置优化器权重参数切分的阈值,仅`enable_parallel_optimizer=True`时生效。                                                                                                                                             | int  |
| parallel.parallel_optimizer_config.optimizer_weight_shard_size  | 设置优化器权重参数切分通信域的大小,要求该值可以整除`parallel_config.data_parallel`,仅`enable_parallel_optimizer=True`时生效。                                                                                                  | int  |

> 配置并行策略时应满足device_num = data_parallel × model_parallel × context_parallel × pipeline_stage

### 模型优化配置

MindFormers提供重计算相关配置,以降低模型在训练时的内存占用,详情可参考[重计算](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/perf_optimize/perf_optimize.html#重计算)。

| 参数                                                 | 说明                            | 类型        |
|----------------------------------------------------|-------------------------------|-----------|
| recompute_config.recompute                         | 是否开启重计算                       | bool/list/tuple      |
| recompute_config.select_recompute                  | 开启选择重计算,只针对attention层的算子进行重计算 | bool/list |
| recompute_config.parallel_optimizer_comm_recompute | 是否对由优化器并行引入的AllGather通信进行重计算  | bool/list |
| recompute_config.mp_comm_recompute                 | 是否对由模型并行引入的通信进行重计算            | bool      |
| recompute_config.recompute_slice_activation        | 是否对保留在内存中的Cell输出切片            | bool      |

### Callbacks配置

MindFormers提供封装后的Callbacks函数类,主要实现在模型训练过程中返回模型的训练状态并输出、保存模型权重文件等一些操作,目前支持以下几个Callbacks函数类。

1. MFLossMonitor

   该回调函数类主要用于在训练过程中对训练进度、模型Loss、学习率等信息进行打印,有如下几个可配置项:

   | 参数                             | 说明                                                                                      | 类型    |
   |--------------------------------|-----------------------------------------------------------------------------------------|-------|
   | learning_rate                  | 设置`MFLossMonitor`中初始化学习率,默认值为`None`                                                     | float |
   | per_print_times                | 设置`MFLossMonitor`中日志信息打印间隔,默认值为`1`,即每一步打印一次日志信息                                         | int   |
   | micro_batch_num                | 设置训练中每一步的批数据大小,用于计算实际的loss值,若不配置该参数,则与[并行配置](#并行配置)中`parallel_config.micro_batch_num`一致 | int   |
   | micro_batch_interleave_num     | 设置训练中每一步的多副本批数据大小,用于计算实际的loss值,若不配置该参数,则与[并行配置](#并行配置)中`micro_batch_interleave_num`一致   | int   |
   | origin_epochs                  | 设置`MFLossMonitor`中训练的轮数,若不配置该参数,则与[模型训练配置](#模型训练配置)中`runner_config.epochs`一致            | int   |
   | dataset_size                   | 设置`MFLossMonitor`中初始化数据集大小,若不配置该参数,则与实际训练使用的数据集大小一致                                     | int   |
   | initial_epoch                  | 设置`MFLossMonitor`中训练起始轮数,默认值为`0`                                                        | int   |
   | initial_step                   | 设置`MFLossMonitor`中训练起始步数,默认值为`0`                                                        | int   |
   | global_batch_size              | 设置`MFLossMonitor`中全局批数据样本数,若不配置该参数,则会根据数据集大小以及并行策略自动计算                                  | int   |
   | gradient_accumulation_steps    | 设置`MFLossMonitor`中梯度累计步数,若不配置该参数,则与[模型训练配置](#模型训练配置)中`gradient_accumulation_steps`一致    | int   |
   | enable_tensorboard             | 设置是否在`MFLossMonitor`中开启TensorBoard记录日志信息,默认值为`False`                                    | bool  |
   | tensorboard_path               | 设置`MFLossMonitor`中设置TensorBoard日志保存路径,仅在`enable_tensorboard=True`时生效                    | str   |
   | check_for_nan_in_loss_and_grad | 设置是否在`MFLossMonitor`中开启溢出检测,开启后在模型训练过程中出现溢出则退出训练,默认值为`False`                            | bool  |

   > 若无需开启TensorBoard记录日志信息或溢出检测,则推荐用户使用默认配置即可。

2. SummaryMonitor

   该回调函数类主要用于收集Summary数据,详情可参考[mindspore.SummaryCollector](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/mindspore/mindspore.SummaryCollector.html)。

3. CheckpointMonitor

   该回调函数类主要用于在模型训练过程中保存模型权重文件,有如下几个可配置项:

   | 参数                            | 说明                                                                                                                                             | 类型   |
   |-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|------|
   | prefix                        | 设置保存文件名称的前缀                                                                                                                                    | str  |
   | directory                     | 设置保存文件名称的目录                                                                                                                                    | str  |
   | save_checkpoint_seconds       | 设置保存模型权重的间隔秒数                                                                                                                                  | int  |
   | save_checkpoint_steps         | 设置保存模型权重的间隔steps数                                                                                                                              | int  |
   | keep_checkpoint_max           | 设置保存模型权重文件的最大数量,如果保存路径内存在超出数量的模型权重文件,会从创建时间最早的文件开始删除,以保证文件总数不超过`keep_checkpoint_max`                                                           | int  |
   | keep_checkpoint_per_n_minutes | 设置保存模型权重的间隔分钟数                                                                                                                                 | int  |
   | integrated_save               | 开启聚合保存权重文件。<br/>1. 设为True时表示在保存权重文件时聚合所有device的权重,即所有device权重一致<br/>2. 设为False时表示所有device各自保存自己的权重<br/>使用半自动并行模式时通常需要设置为False,以避免保存权重文件时出现内存问题 | bool |
   | save_network_params           | 是否仅保存模型权重,默认值为`False`                                                                                                                          | bool |
   | save_trainable_params         | 是否额外保存可训练的参数权重,即部分微调时模型的参数权重,默认为`False`。                                                                                                       | bool |
   | async_save                    | 是否异步执行保存模型权重文件                                                                                                                                 | bool |

在`callbacks`字段下可同时配置多个Callbacks函数类,以下是`callbacks`配置示例。

```yaml
callbacks:
  - type: MFLossMonitor
  - type: CheckpointMonitor
    prefix: "name_xxb"
    save_checkpoint_steps: 1000
    integrated_save: False
    async_save: False
```

### Processor配置

Processor主要用于对输入模型的推理数据进行预处理,由于Processor配置项不固定,这里仅对MindFormers中的Processor通用配置项进行说明。

| 参数                             | 说明                                   | 类型  |
|--------------------------------|--------------------------------------|-----|
| processor.type                 | 设置数据处理类                              | str |
| processor.return_tensors       | 设置数据处理类返回的张量类型,一般使用'ms'              | str |
| processor.image_processor.type | 设置图像数据处理类                            | str |
| processor.tokenizer.type       | 设置文本tokenizer类                       | str |
| processor.tokenizer.vocab_file | 设置文本tokenizer读取文件路径,需要与tokenizer类相对应 | str |

### 模型评估配置

MindFormers提供模型评估功能,同时支持模型边训练边评估功能,以下是模型评估相关配置。

| 参数                  | 说明                                                         | 类型   |
|---------------------|------------------------------------------------------------|------|
| eval_dataset        | 使用方式与`train_dataset`相同                                     | -    |
| eval_dataset_task   | 使用方式与`eval_dataset_task`相同                                 | -    |
| metric.type         | 使用方式与`callbacks`相同                                         | -    |
| do_eval             | 是否开启边训练边评估功能                                               | bool |
| eval_step_interval  | 设置评估的step间隔,默认值为100,设置小于0表示关闭根据step间隔评估功能                  | int  |
| eval_epoch_interval | 设置评估的epoch间隔,默认值为-1,设置小于0表示关闭根据epoch间隔评估功能,不建议在数据下沉模式使用该配置 | int  |
| metric.type         | 设置评估的类型                                                    | str  |

### Profile配置

MindFormers提供Profile作为模型性能调优的主要工具,详情可参考[性能调优指南](https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.2/perf_optimize/perf_optimize.html),以下是Profile相关配置。

| 参数                    | 说明                                                                                                                            | 类型   |
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------|------|
| profile               | 是否开启性能采集工具,详情可参考[mindspore.Profiler](https://www.mindspore.cn/docs/zh-CN/r2.4.10/api_python/mindspore/mindspore.Profiler.html) | bool |
| profile_start_step    | 设置开始采集性能数据的step数                                                                                                              | int  |
| profile_stop_step     | 设置停止采集性能数据的step数                                                                                                              | int  |
| profile_communication | 设置是否在多设备训练中收集通信性能数据,使用单卡训练时,该参数无效,默认值为`False`                                                                                 | bool |
| profile_memory        | 设置是否收集Tensor内存数据                                                                                                              | bool |
| init_start_profile    | 设置是否在Profiler初始化时开启采集性能数据,设置`profile_start_step`时该参数不生效。开启`profile_memory`时需要将该参数设为`True`。                                    | bool |