开发者
资源
[object Object][object Object]

在MOE(Mixture-of-Experts )架构中,不同专家所接收的输入tokens数量存在显著差异,这直接导致了AlltoAll通信和专家计算负载的不均衡。热门专家所在的NPU卡会面临算力和通信资源紧张,而冷门专家所在的NPU卡则会出现算力和通信资源的浪费,从而导致性能的损失。负载均衡特性旨在降低NPU卡间的不均衡度,从而提升模型推理的性能。

MindIE当前支持两种负载均衡特性:静态冗余负载均衡和强制负载均衡。

  • 静态冗余负载均衡:采用部署额外的冗余专家方式,减少热点专家的负载,将热点专家的负载分散到冗余专家上,以达到负载均衡的效果。

  • 强制负载均衡:采用让专家负载绝对均衡的“假”tensor替换原始topk的输出,对专家topk算子的输出进行mock。强制负载均衡只是为负载均衡提供了理论上限,改变了模型专家实际路由,不能在正式业务中使用。

[object Object]
  • Atlas 800I A2/A3 推理服务器支持此特性。
  • DeepSeek R1/V3、Qwen-moe模型支持此特性。
  • 当前只支持在MOE为All2All集合通信场景下使用(模型配置文件中的“ep_level”参数为“2”)。PD分离场景,由于Prefill和Decode通常采用不同的集合通信方式,负载均衡的配置参数需分别设置。
  • 强制负载均衡只能作为负载均衡的理论上限,不能在正式业务中使用。
  • 静态冗余负载均衡采用在路由专家的NPU卡额外部署冗余专家方案,每卡多部署一个冗余专家,需额外占用2.4GB显存。
[object Object]

静态冗余负载均衡使用流程为:专家热点信息采集、冗余专家部署表生成和负载均衡参数配置。

  • 强制负载均衡无需进行专家热点信息采集和冗余专家部署表生成,直接进行负载均衡参数配置即可开启。
[object Object]

专家热点信息采集,为获取用户实际业务数据或数据集下的专家的热点分布。

  1. 用户需在不开启负载均衡时,通过设置“MINDIE_ENABLE_EXPERT_HOTPOT_GATHER”和“MINDIE_EXPERT_HOTPOT_DUMP_PATH”两个环境变量,导出实际业务场景下专家热点信息的.csv文件。Prefill和Decode热点信息会分别保存,以便分别生成Prefill和Decode的冗余专家部署表。

    设置方法如下:

    分别在“examples/kubernetes_deploy_scripts/conf/mindie_env(_a3).json”文件的“mindie_server_prefill_env”和“mindie_server_decode_env”字段中,增加环境变量如下:

    • "MINDIE_ENABLE_EXPERT_HOTPOT_GATHER": 1,

    • "MINDIE_EXPERT_HOTPOT_DUMP_PATH": "单个实例可选择共享盘路径,否则必须存储在非共享盘"

  2. 执行模型推理业务,生成热点信息文件。

    [object Object]
  3. 热点信息生成后,需手动将所有机器上的专家热点信息汇总至同一个文件夹,也可直接将所有机器上的导出文件路径设置为共享磁盘路径。

[object Object]

采集热点信息后,每个NPU会生成一个.csv文件,文件中包含一个矩阵(num_moe_layer * 单NPU专家数)。矩阵中的每个数字代表该layer中该专家所计算的token数,每8个token会在采集文件中追加该矩阵。

根据采集的专家热点信息,可使用的“elb”组件生成冗余专家部署表。

  1. 安装“elb”组件,安装方法如下所示。

    [object Object]
  2. 显示如下回显信息,表示安装成功。

    [object Object]
  3. 参见,使用“elb”组件生成冗余专家部署表。8机64卡典型配置如下:

    [object Object]

    msit工具提供两种负载均衡算法:计算通信负载均衡算法(C2LB)和speculative-moe interface algorithm。当前speculative-moe level 2 混置算法(al 5)取得最优.

    [object Object]
[object Object]

负载均衡参数,可通过修改atb-models安装目录下的“{ATB安装路径}/atb-models/atb_llm/conf/config.json”进行配置。修改“models/deepseekv2/eplb”字段里的“level”、“expert_map_file”、“rep_per_rank”、"aggregate_threshold"、"buffer_expert_layer_num"、"num_expert_update_ready_countdown"参数,默认配置为不开启负载均衡。典型配置如下:

[object Object]

参数说明如下:

[object Object]undefined