更新时间:2025-10-22 GMT+08:00
分享

执行训练任务

准备工作

确认模型权重文件、训练数据集已经上传,准备软件包、权重、训练数据集

步骤一:生成训练command命令并修改

  1. 进入调试模式。
    修改config.yaml中的${command}进行调试,本示例中使用sleep命令启动pod,便于进入pod调试。
    command: ["/bin/bash", "-c"]       
      args:   
       - sleep 1000000000000000000

    根据config.yaml创建pod。

    kubectl apply -f config.yaml

    进入容器,{pod_name}替换为实际pod名字(get pod中显示的名字),{namespace}替换为实际命名空间(默认为default)。

    kubectl exec -it {pod_name} bash -n {namespace}
  2. 生成初始化训练yaml。生成后的yaml文件具体信息内容可以参考参数配置说明章节。
    每个容器模型训练的config配置yaml文件的生成方式分为交互式、传参式两种,建议参考以下命令使用交互式生成。
    ascendfactory-cli config  --output_file_path=<output_file_path> 
  3. 生成启动训练命令,容器中执行训练的命令如下。

    初始化环境变量

    source /usr/local/Ascend/ascend-toolkit/set_env.sh
    source /usr/local/Ascend/nnal/atb/set_env.sh
    训练命令
    # 默认8卡
    ascendfactory-cli train <cfgs_yaml_file>
    # 指定设备卡数,如2卡
    ASCEND_RT_VISIBLE_DEVICES=0,1 ascendfactory-cli train <cfgs_yaml_file> 
    # 指定修改yaml中某个参数内容,如af_output_dir等值,使用超参命令传递形式:
    ASCEND_RT_VISIBLE_DEVICES=0,1 ascendfactory-cli train <cfgs_yaml_file> --af_output_dir=xxx 

关于容器中的${command}示例如下,修改时可参考。

步骤二:根据config.yaml启动训练

启动作业命令如下。首先会根据config.yaml创建pod,继而在pod容器内自动启动训练作业。

kubectl apply -f config.yaml

启动后,可通过以下命令获取所有已创建的pod信息。若pod已全部启动,则状态为:Running。

kubectl get pod -A -o wide

若查看启动作业日志信息,可通过以下命令打印正在启动的日志信息。其中${pod_name}为上述pod信息中的NAME,例如vcjob-main-0。

kubectl logs -f ${pod_name}

等待模型载入

执行训练启动命令后,等待模型载入,当出现“training”关键字时,表示开始训练。训练过程中,训练日志会在最后的Rank节点打印。

图1 等待模型载入

训练完成后,生成的权重文件保存路径为:/mnt/sfs_turbo/llm_train/saved_dir_for_output/llama2-13b/saved_models/

最后,请参考训练结果输出章节查看预训练的日志和性能。

步骤三:删除config.yaml创建出的所有工作负载Pod

若要删除config.yaml创建出的所有工作负载Pod,需要先找到config.yaml所在路径,并执行以下命令。

kubectl delete -f config.yaml

相关文档