
# 断点续训
断点续训功能允许用户在训练过程中断后，从上次训练保存的最新中间权重继续训练，避免重复计算，提高训练效率。在训练由于外部原因中断后，可通过以下步骤进行断点续训。
#### MindSpeed-LLM
1. 进入训练结果输出目录，确认存在已保存的权重。
   ```
   cd ${af_output_dir}
   ```
   {af_output_dir}为训练启动脚本中通过--save参数配置的输出目录，该目录下会存在多个iter_xx权重目录和一个记录最新权重保存步数的文件latest_checkpointed_iteration.txt。可以修改latest_checkpointed_iteration.txt文件的内容指定续训加载权重目录。
   
2. 修改训练配置yaml文件以下断点续训配置。
   ```
   backend_config.training.no-load-optim: false
   backend_config.training.no-load-rng: false
   backend_config.training.finetune: false
   ```
   
3. 重新启动训练任务，具体参考[步骤二：启动训练任务](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590610.html#ZH-CN_TOPIC_0000002397406830__section766474131818)，在原有命令的ascendfactory-cli train 命令的基础上增加如下超参。
   ```
   --load ${af_output_dir}/saved_checkpoints
   ```
   
 
#### Llama-Factory
1. 进入训练结果输出目录，获取指定的checkpoint目录。
   ```
   cd ${af_output_dir}
   ```
   {af_output_dir}为训练yaml文件中配置的输出目录，该目录下会存在多个checkpoint-xx权重目录。该目录生成的频率由配置backend_config.training.max_steps、backend_config.training.save_steps影响。
   
2. 修改训练配置yaml文件中以下断点续训配置。
   ```
   backend_config.training.resume_from_checkpoint: ${af_output_dir}/checkpoint-xx
   ```
   
3. 重新启动训练任务，具体参考[步骤二：启动训练任务](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590610.html#ZH-CN_TOPIC_0000002397406830__section766474131818)。
 
#### VeRL
1. 进入训练结果输出目录，获取指定的checkpoint目录。
   ```
   cd ${af_output_dir}/checkpoint_${af_model_name}
   ```
   对应生成checkpoint目录为训练yaml文件配置项backend_config.trainer.default_local_dir，该目录下会存在多个global_step_XX权重目录，可选择最新的权重目录。
   
2. 修改训练配置yaml文件，设置为从"指定断点续训"或从"最新的断点进行续训"。
   ```
   方法1：从指定断点续训
   backend_config.trainer.resume_mode：resume_path   
   backend_config.trainer.resume_from_path: ${af_output_dir}/checkpoint_${af_model_name}/global_step_xx
   方法2：从最新的断点进行续训
   backend_config.trainer.resume_mode：auto
   ```
   
3. 重新启动训练任务，具体参考[步骤二：启动训练任务](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590610.html#ZH-CN_TOPIC_0000002397406830__section766474131818)。
 
#### MindSpeed-RL
1. 进入训练结果输出目录，获取指定的checkpoint目录。
   ```
   cd ${af_output_dir}/checkpoint_${af_model_name}
   ```
   配置项backend_config.trainer.default_local_dir，该目录下会存在多个global_step_XX权重目录，可选择最新的权重目录。
   
2. 修改训练配置yaml文件以下断点续训配置。
   ```
   actor_config:
     finetune: false # 断点续训时 finetune 参数设置为 false
     load: ./ckpt-32b # 断点续训时 load 路径应为之前保存的权重路径
     save: ./ckpt
     no_load_optim: false # 断点续训时no_load_optim 应为 false  
     no_load_rng: false # 断点续训时 no_load_rng 应为 false
   rf_config:
     integrated_mode_config:
       ref_model_load_path: ./Qwen2.5-7B-tp4 # 断点续训时，应在 ref_model_load_path 中配置原始模型权重路径，供 reference model 加载
   ```
   
3. 重新启动训练任务，具体参考[步骤二：启动训练任务](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590610.html#ZH-CN_TOPIC_0000002397406830__section766474131818)。
 
#### MindSpeed-MM
1. 进入训练结果输出目录，确认存在已保存的权重。
   ```
   cd ${af_output_dir}
   ```
   {af_output_dir}为训练启动脚本中通过--save参数配置的输出目录，该目录下会存在多个iter_xx权重目录和一个记录最新权重保存步数的文件latest_checkpointed_iteration.txt。可以修改latest_checkpointed_iteration.txt文件的内容指定续训加载权重目录。
   
2. 修改训练配置yaml文件以下断点续训配置。
   ```
   backend_config.training.no-load-optim: false
   backend_config.training.no-load-rng: false
   ```
   
3. 重新启动训练任务，具体参考[步骤二：启动训练任务](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_590610.html#ZH-CN_TOPIC_0000002397406830__section766474131818)，在原有命令的ascendfactory-cli train 命令的基础上增加如下超参。
   ```
   --load ${af_output_dir}/saved_checkpoints
   ```
   
 
