使用 AIAK-Training 部署分布式训练任务
更新时间:2026-03-20
前提条件
- 已开通 CCE 云原生 AI 服务,且账号状态正常。
- 训练环境需满足
CUDA 11.2、PyTorch 1.8.1、TensorFlow 2.5.0、MXNet 1.8.0;若 AI 应用使用其他版本,请提交工单。
注意: 使用 CCE 集群及提交训练任务会产生相关资源费用,请在操作前确认账号状态和资源配额满足要求。## 操作流程
1.选择训练镜像
在CCR公共镜像的“百度智能云AI镜像” 中选择“Halo”加速镜像,作为训练基础镜像,该镜像内已安装了 CUDA、Python 3、PyTorch、Tensorflow、MxNet和AIAK-Training加速软件等。

2.组件安装
点击集群名称进入,点击组件管理->云原生AI,点击安装CCE Deep Learning Frameworks Operator组件和CCE AI Job Scheduler,点击确定。

3.任务提交
导航路径:容器引擎 CCE->集群管理->集群列表->目标集群->云原生 AI->任务管理
点击 【新建任务】,完成训练任务基础配置。
| 参数 | 必填 | 说明 |
|---|---|---|
| 任务类型 | 是 | 选择 AITrainingJob。 |
| 训练框架 | 是 | 选择 Horovod。 |
| 训练方式 | 是 | 选择分布式。 |
| 角色 | 是 | 选择 Launcher,并设置 Pod 的弹性范围。 |
在 容器组配置 的 生命周期 中配置启动命令。
启用优化版分层Allreduce
Plain Text
1 horovodrun --nccl-hierarchical-allreduce [other-horovod-args] python [executable] [app-args]
在 horovodrun 命令行中传递 --nccl-hierarchical-allreduce 参数即可启用。
启用DGC稀疏化通信压缩算法
Plain Text
1horovodrun --dgc \
2 --compress-ratio 0.001 \
3 --sample-ratio 0.01 \
4 --clip-grad-func norm/value\
5 --clip-grad-func-params 0.01 \
6 ... ...
7 [other-horovod-args] python [executable] [app-args]
可配置的 DGC 参数如下:
| 参数 | 必填 | 说明 |
|---|---|---|
compress_ratio |
是 | 压缩率,类型为 float,默认值为 0.001。值越小,梯度通信量越少,建议手动配置。 |
sample_ratio |
否 | 样本采集比率,类型为 float,默认值为 0.01。 |
strided_sample |
否 | 类型为 bool,默认值为 True,用于控制是否按步幅采集样本。 |
compress_upper_bound |
否 | 压缩上限,默认值为 1.3。 |
compress_lower_bound |
否 | 压缩下限,默认值为 0.8。 |
max_adaptation_iters |
否 | 最大自适应次数。 |
resample |
否 | 类型为 bool,默认值为 True,用于控制是否重新采样。 |
fp16_values |
否 | 类型为 bool,默认值为 False,用于控制是否将梯度元素值转换为 fp16。 |
int32_indices |
否 | 类型为 bool,默认值为 False,用于控制是否将梯度元素索引转换为 int32。 |
warmup_epochs |
否 | 预热阶段的 epoch 数。 |
warmup_coeff |
否 | 模型预热阶段的压缩率列表。若配置多个值,请在命令行中以空格分隔,并与 warmup_epochs 对应。 |
clip_grad_func |
否 | 梯度裁剪方式,可选 norm 或 value,分别对应 PyTorch 中的 clip_grad_norm_ 和 clip_grad_value_。 |
clip_grad_func_params |
否 | 梯度裁剪方法的参数。 |
momentum_masking |
否 | 类型为 bool,默认值为 True,用于启用动量隐藏,避免梯度过时更新问题。 |
说明: DGC 压缩算法目前仅支持
SGD优化器。
启用参数更新和梯度通信重叠
用户启用参数更新和梯度通信重叠功能时,可在 horovodrun 命令行中进行如下配置:
Bash
1horovodrun --overlap-backward-and-step \
2 --clip-grad-func norm/value \
3 --clip-grad-func-params 0.01 \
4 ... \
5 [other-horovod-args] python [executable] [app-args]
- 若用户在参数更新之前需要进行梯度裁剪操作,可通过设置
clip_grad_func和clip_grad_func_params两个参数来指定,此时用户需要移除代码中的梯度裁剪调用。 - 若用户同时开启 DGC 和参数更新与梯度通信重叠功能,并指定了梯度裁剪方法,则梯度裁剪操作会在 DGC 中进行,重叠过程中不进行梯度裁剪。
- 如果用户不开启参数更新和梯度通信重叠,则无需指定梯度裁剪相关参数,指定后也不会生效。
启用FusedOptimizer
用户启用优化器融合功能时,可在 horovodrun 命令行中进行如下配置:
Bash
1horovodrun --fuse-optimizer [other-horovod-args] python [executable] [app-args]
说明: 目前
FusedOptimizer与参数更新和梯度通信重叠两个功能暂不兼容。
评价此篇文章
