更新时间:2025-11-17 GMT+08:00
分享

配置算子重执行

什么是算子重执行

算子重执行是指当因为通信链路故障导致训练作业中通信算子报错,借助HCCL能力实现失败算子重新执行,保障训练作业不失败。在超节点大模型训练场景,集群通信链路存在闪断的情况,此时通信算子会执行报错,算子重执行可以很好的避免由于链路闪断故障造成的整个作业失败,提升训练作业的通信稳定性。

场景描述

在昇腾新一代硬件Snt9b23构建的超节点集群中,每个超节点内部的服务器的NPU通过灵衢总线实现HCCS协议互联,形成一个高效的“超平面”网络。同时,两个超节点之间的服务器通过“参数面”网络实现互联。然而,运行在超节点集群中的作业需要依赖这两个网络进行分布式通信,而任何一个网络的闪断都会导致通信失败,进而引发业务失败的问题。为了解决这一问题,ModelArts推出了算子重执行的可配置能力,为用户提供了一个可靠的解决方案。

主要涉及“超平面”和“参数面”两种场景网络故障的算子重执行能力:

场景一:“参数面”网络故障

硬件Snt9b32是一张卡两个DIE的硬件结构,而且两个DIE之间是通过SIO快速通道连接,如果DIE-1设备“参数面”链路彻底故障,DIE-1可以通过SIO链路借用DIE-0的“参数面”链路进行通信,开启算子重执行,可以借轨进行通信。如果DIE-1设备“参数面”链路出现闪断,开启算子重执行可以基于现有链路进行通信。

图1 借轨通信

场景二:“超平面”网络故障

昇腾硬件Snt9b23组成的超节点集群中“超平面”网络是通过两层交换机实现NPU互联,如果L1-L2链路故障,可以借助交换机的BGP切路算法进行通信链路重新规划,从而保证算子重执行成功,业务不中断。

图2 BGP路径切换

约束限制

  • 仅支持昇腾Snt9b32超节点的专属资源池。
  • 仅支持使用PyTorch框架的预置镜像环境。
  • 仅支持使用满卡配置的训练作业。
  • 依赖昇腾组件,版本约束为:HDK版本大于等于24.1.RC3.5,CANN版本大于等于8.1.RC1。
  • MindSpore框架暂不支持算子重执行。

性能影响说明

只要开启算子重执行,就会带来性能影响且无法关闭!您可以先开启算子重执行评估业务模型性能影响后,再选择是否开启。

开启算子重执行对业务的性能有影响,基于部分开源大模型测试的性能影响如下表所示,具体的影响跟训练模型通信算子有关,如果业务模型性能影响较大,请谨慎开启。

表1 开启算子重执行对业务的性能影响参考(两个超节点测试)

模型类型

用例名

未开启算子重执行时FPS

开启算子重执行时FPS

性能下降

LLama_7B_FastChat

LLama_7B_FastChat_ID4324_for_PyTorch_bs2_2X16P_FA_bf16_RT2_PT21_perf

3629.17

3627.27

-0.05%

BLOOM_ID3985

BLOOM_ID3985_for_PyTorch_bs2048_2x16p_RT2_176B_bf16_FA_perf

7699.445

7659.4295

-0.52%

BLOOM_ID3985(带mc2)

BLOOM_ID3985_for_PyTorch_bs2048_2x16p_RT2_176B_bf16_FA_mc2_perf

7692.59876

7663.907871

-0.37%

LLAMA2_ID4421

LLAMA2_ID4421_for_PyTorch_bs16_2x16p_RT2_7B_bf16_FA_NOMC2_perf

1586

1591.3

0.33%

LLama31_70B

train_llama3_405b_server2_tp8_pp2_perf

6.29

6.29

0.00%

GPT_Moe_8K

gpt_moe_server2_tp4_pp2_perf

20.92

20.89

-0.14%

LLAMA2_70B

LLAMA2_ID0039_for_PyTorch_bs1_2x16p_RT2_70B_bf16_fa_tp2_pp1_perf

2229.5

2219.86

-0.43%

LLAMA2_ID0039_for_PyTorch_bs1_2x16p_RT2_70B_bf16_fa_tp2_pp2_perf

1218.54

1214.84

-0.30%

LLAMA2_ID0039_for_PyTorch_bs1_2x16p_RT2_70B_bf16_fa_tp8_pp2_perf

360.59

359.02

-0.44%

LLAMA2_ID0039_for_PyTorch_bs1_2x16p_RT2_70B_bf16_fa_tp2_pp4_perf

591.95

589.94

-0.34%

Open-Sora_ID4574

Open-Sora_ID4574_for_PyTorch_2x16p_bf16_bs1_120x256x256_perf

9.77

10.02

2.56%

beit2

Beit2_ID3448_for_Pytorch_False_bs120_2x16p_perf

929858.63

935647.44

0.62%

Megablocks

Megablocks_ID4363_for_PyTorch_bs40_32p_mt03_perf

1235.41

1220.49

-1.21%

Qwen_ID4341_for_PyTorch

Qwen_ID4341_for_PyTorch_bs64_32p_tp8_pp1_14b_perf

783.89644

784.993139

0.14%

Baichuan2_13B_ID4446_for_PyTorch

Baichuan2_13B_ID4446_for_PyTorch_RT2_bs8_32p_tp8_pp1_fp16_perf

801.84

802.51

0.08%

开启算子重执行

开启算子重执行有2种方式:控制台设置或API接口设置。

  • 控制台设置

    在创建训练作业界面,当训练作业配置满足约束限制的条件时,才能开启(勾选)“算子重执行”。

    开启算子重执行时,在创建训练作业的确认界面和训练作业详情页显示“已开启”。未配置或未开启时不展示此项。

    请勿使用配置环境变量HCCL_OP_RETRY_ENABLE的方式开启算子重执行。因为平台组件无法感知是否开启,会导致算子重执行开启失败。

    只要开启算子重执行,就会带来性能影响且无法关闭!您可以先开启算子重执行评估业务模型性能影响后,再选择是否开启。

    图3 算子重执行-旧版创建训练作业
    图4 算子重执行-新版创建训练作业
  • API接口设置

    通过API接口创建训练作业时,在“metadata”字段的“annotations”中传入fault-tolerance/hccl_op_retry字段。fault-tolerance/hccl_op_retry可取值为"true"或"false",当赋值为"true"时,表示开启算子重执行。参数值填写参考表2

    表2 参数说明

    参数

    是否必选

    参数类型

    描述

    kind

    String

    参数解释:训练作业类型。

    约束限制:不涉及。

    取值范围

    • job:普通作业。

    • edge_job:边缘作业。

    • hetero_job:异构作业。

    • mrs_job:MRS作业。

    • autosearch_job:自动化搜索作业。

    • diag_job:诊断作业。

    • visualization_job:可视化作业。

    默认取值:job。

    annotations

    Map<String,String>

    参数解释:训练作业高级功能配置。

    约束限制:可选取值如下:

    • "job_template": "Template RL"(异构作业)。

    • "fault-tolerance/job-retry-num": "3"(故障自动重启次数)。

    • "fault-tolerance/job-unconditional-retry": "true"(无条件重启)。

    • "fault-tolerance/hang-retry": "true"(卡死重启)。

    • "jupyter-lab/enable": "true"(JupyterLab训练应用程序)。

    • "tensorboard/enable": "true"(TensorBoard训练应用程序)。

    • "mindstudio-insight/enable": "true"(MindStudio Insight训练应用程序)。

    • "fault-tolerance/hccl_op_retry":"true"(算子重执行)。

    请求参数填写参考如下样例。已开启算子重执行的训练作业,在查询训练作业详情时,也会返回"fault-tolerance/hccl_op_retry":"true"的字段。

    {
        "kind": "job",
        "metadata": {
            "annotations": {
                "fault-tolerance/hccl_op_retry": "true"
            }
        }
    }

相关文档