AI开发平台MODELARTS-开发用于自定义镜像训练的代码:使用Ascend自定义镜像训练时的训练代码适配规范

时间:2025-03-04 20:53:08

使用Ascend 自定义镜像 训练时的训练代码适配规范

使用NPU资源创建训练作业时,系统会在训练容器里自动生成Ascend HCCL RANK_TABLE_FILE文件。当使用预置框架创建训练作业时,在训练过程中预置框架会自动解析Ascend HCCL RANK_TABLE_FILE文件,当使用自定义镜像创建训练作业时,就要适配训练代码使得训练过程中在代码里读取解析Ascend HCCL RANK_TABLE_FILE文件。

Ascend HCCL RANK_TABLE_FILE文件说明

Ascend HCCL RANK_TABLE_FILE文件提供Ascend分布式训练作业的集群信息,用于Ascend芯片分布式通信,可以被HCCL集合通信库解析。该文件格式有模板一和模板二两个版本。

  • ModelArts提供的是模板二格式。ModelArts训练环境的Ascend HCCL RANK_TABLE_FILE文件名为jobstart_hccl.json,获取方式可以通过预置的RANK_TABLE_FILE环境变量实现。
    表1 RANK_TABLE_FILE环境变量说明

    环境变量

    说明

    RANK_TABLE_FILE

    该环境变量指示Ascend HCCL RANK_TABLE_FILE文件所在目录,值为/user/config。

    算法开发者可通过 “${RANK_TABLE_FILE}/jobstart_hccl.json”,路径获取该文件。

    ModelArts训练环境jobstart_hccl.json文件内容(模板二)示例:
    {
    	"group_count": "1",
    	"group_list": [{
    		"device_count": "1",
    		"group_name": "job-trainjob",
    		"instance_count": "1",
    		"instance_list": [{
    			"devices": [{
    				"device_id": "4",
    				"device_ip": "192.1.10.254"
    			}],
    			"pod_name": "jobxxxxxxxx-job-trainjob-0",
    			"server_id": "192.168.0.25"
    		}]
    	}],
    	"status": "completed"
    }

    jobstart_hccl.json文件中的status字段的值在训练脚本启动时,并不一定为completed状态。因此需要训练脚本等待status字段的值等于completed之后,再去读取文件的剩余内容。

  • 通过训练脚本,可以使用模板一格式的jobstart_hccl.json文件,在等待status字段的值等于completed之后,将模板二格式jobstart_hccl.json文件转换为模板一格式的jobstart_hccl.json文件。
    转换后的jobstart_hccl.json文件格式(模板一)示例:
    {
    	"server_count": "1",
    	"server_list": [{
    		"device": [{
    			"device_id": "4",
    			"device_ip": "192.1.10.254",
    			"rank_id": "0"
    		}],
    		"server_id": "192.168.0.25"
    	}],
    	"status": "completed",
    	"version": "1.0"
    }

转换功能的实现,可参考从0制作自定义镜像用于创建训练作业(MindSpore+Ascend)中所述的Ascend训练脚本的启动脚本。

support.huaweicloud.com/usermanual-standard-modelarts/develop-modelarts-1416.html