训练作业动态路由加速
在分布式训练场景下,由于多节点之间的数据交互频繁,网络通信效率往往成为性能瓶颈。传统方式下,训练作业的网络通信存在带宽利用率低、数据传输延迟高等问题,这会直接影响训练效率和资源利用率。针对这一技术挑战,用户可能会问:如何有效优化分布式训练中的网络通信性能?ModelArts提供了一项动态路由加速功能,通过智能优化训练作业的网络通信路径,显著提升分布式训练的性能表现。本文档将详细介绍如何在ModelArts平台上启用这一功能,涵盖使用预置训练框架和自定义镜像两种典型场景,并提供详细的配置要求和实用的操作建议,帮助用户充分释放分布式训练的性能潜力。
约束限制
- 只有以下2种训练场景支持启用动态路由加速。
- 训练作业使用的Python版本必须是3.7、3.8或3.9。
- 在启用动态路由加速之前,请联系ModelArts技术支持,确保集群的cabinet插件和调度权限已开启。
场景一:使用Ascend-Powered-Engine预置框架+ Mindspore+NPU训练
当使用Ascend-Powered-Engine预置框架创建训练作业时,可以参考表1创建训练作业实现动态路由加速。表中仅提供了关键参数的配置说明,其他参数请根据业务需要配置。
配置阶段 |
参数名称 |
说明 |
---|---|---|
环境配置 |
创建方式 |
选择“自定义算法”。 |
启动方式 |
选择“预置框架”。 |
|
引擎及版本 |
引擎选择“Ascend-Powered-Engine”,引擎版本选择Mindspore相关的版本。 |
|
代码目录 |
选择训练代码文件所在的OBS目录。 动态路由加速通过改变rank编号来优化网络通信,因此代码中对rank的使用必须统一,避免因rank编号不一致导致通信异常。 |
|
启动文件 |
选择代码目录中训练作业的Python启动脚本。 |
|
训练配置 |
环境变量 |
添加如下环境变量。 ROUTE_PLAN = true 不能配置环境变量“MA_RUN_METHOD”,确保是使用rank table file(RTF)文件启动训练作业的“启动文件”。 |
资源配置 |
资源池 |
选择专属资源池。 |
实例规格 |
选择的实例规格必须满足以下条件:
|
|
实例数 |
选择的实例数必须大于或等于3。 |
场景二:使用自定义镜像+Pytorch+NPU训练
当使用自定义镜像和Ascend资源池创建训练作业时,可以参考表2创建训练作业实现动态路由加速。表中仅提供了关键参数的配置说明,其他参数请根据业务需要配置。
配置阶段 |
参数名称 |
说明 |
---|---|---|
环境配置 |
创建方式 |
选择“自定义算法”。 |
启动方式 |
选择“自定义”。 |
|
镜像 |
选择用于训练的自定义镜像。必须是使用Pytorch框架的训练镜像。 |
|
代码目录(可选) |
选择训练代码文件所在的OBS目录。 动态路由加速通过改变rank编号来优化网络通信,因此代码中对rank的使用必须统一,避免因rank编号不一致导致通信异常。 |
|
启动命令 |
输入镜像的Python启动命令。 其中,要修改训练启动脚本中的如下代码,不同NPU硬件的修改值有差异。
|
|
训练配置 |
环境变量 |
添加如下环境变量。 ROUTE_PLAN = true |
资源配置 |
资源池 |
选择专属资源池。 |
实例规格 |
选择的实例规格必须满足以下条件:
|
|
实例数 |
选择的实例数必须大于或等于3。 |
查看动态路由加速的训练日志
当使用Ascend资源池训练时,训练过程中可以在训练作业详情页的“日志”页签中查看路由状态是否启用,以及查询各个Rank的日志信息。
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择 。
- 在训练作业列表中,单击目标作业,进入训练作业详情页。
- 选择“日志”页签。
如图1所示,可以查看训练作业已启用动态路由,还可以根据Rank-ID搜索日志。