开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口说明:
    • 对Token数据进行量化(可选),根据token选择的topK专家在EP(Expert Parallelism)域的AllToAllV通信,只进行数据发送和通信状态发送,通信指令发出后算子即刻退出,无需等待通信完成。数据的接收和后处理由aclnnMoeDistributeDispatchTeardown接口完成。

    • 注意该接口必须与aclnnMoeDistributeDispatchTeardown,aclnnMoeDistributeCombineSetup,aclnnMoeDistributeCombineTeardown配套使用。

[object Object]

每个算子分为两段式接口,必须先调用 “aclnnMoeDistributeDispatchSetupGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeDistributeDispatchSetup”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object][object Object]
    • Atlas 350 加速卡:

      • scalesOptional 非量化场景传空指针,动态量化可选择传入有效数据或传入空指针。
      • xActiveMaskOptional 可选择传入有效数据或传入空指针,传入空指针时表示所有token都会参与通信。
      • groupEp 字符串长度范围为[1, 128)。
      • epWorldSize 取值范围[2, 384]。当前仅支持2、8。
      • epRankId 取值范围[0, epWorldSize)。同一个EP通信域中各卡的epRankId不能重复。
      • moeExpertNum 取值范围(0, 512]。
      • expertShardType 当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
      • sharedExpertNum 当前取值范围[0, 4]。
      • sharedExpertRankNum 取值范围[0, epWorldSize / 2]。
      • globalBs 当每个rank的Bs数一致场景下,globalBs = Bs * epWorldSize 或 globalBs = 0;当每个rank的Bs数不一致场景下,globalBs = maxBs * epWorldSize,其中maxBs表示单卡Bs最大值。
      • commType 当前仅支持2。
      • commAlg 当前版本不支持,传空指针即可。
    • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

      • scalesOptional 非量化场景传空指针,动态量化可选择传入有效数据或传入空指针。
      • xActiveMaskOptional 可选择传入有效数据或传入空指针,传入空指针时表示所有token都会参与通信。
      • groupEp 字符串长度范围为[1, 128)。
      • epWorldSize 取值范围[2, 384]。当前仅支持2、8。
      • epRankId 取值范围[0, epWorldSize)。同一个EP通信域中各卡的epRankId不能重复。
      • moeExpertNum 取值范围(0, 512]。
      • expertShardType 当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
      • sharedExpertNum 当前取值范围[0, 4]。
      • sharedExpertRankNum 取值范围[0, epWorldSize / 2]。
      • globalBs 当每个rank的Bs数一致场景下,globalBs = Bs * epWorldSize 或 globalBs = 0;当每个rank的Bs数不一致场景下,globalBs = maxBs * epWorldSize,其中maxBs表示单卡Bs最大值。
      • commType 当前仅支持0。
      • commAlg 当前版本不支持,传空指针即可。
  • 返回值:

    返回aclnnStatus状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

[object Object]
  1. 确定性计算:

    • aclnnMoeDistributeDispatchSetup默认确定性实现。
  2. aclnnMoeDistributeDispatchSetup接口与aclnnMoeDistributeDispatchTeardown,aclnnMoeDistributeCombineSetup,aclnnMoeDistributeCombineTeardown接口必须配套使用。

  3. 调用接口过程中使用的[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]参数取值所有卡需保持一致,[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]参数取值在网络中不同层中也需保持一致,且和[object Object][object Object][object Object]对应参数也保持一致。

  4. [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:该场景下单卡包含双DIE(简称为“晶粒”或“裸片”),因此参数说明里的“本卡”均表示单DIE。

  5. 参数说明里shape格式说明:

    • A:表示本卡可能接收的最大token数量,取值范围如下:

      • 对于MoE专家,当[object Object]为0时,要满足A >= [object Object] * [object Object] * min([object Object], [object Object]);当[object Object]非0时,要满足A >= [object Object] * min([object Object], [object Object])。
      • 对于共享专家,当[object Object]为0时,要满足A = [object Object] * [object Object] * [object Object] / [object Object];当[object Object]非0时,要满足A = [object Object] * [object Object] / [object Object]
    • H:表示hidden size隐藏层大小,取值范围[1024, 8192]。当前仅支持4096、7168。

    • BS:表示batch sequence size,即本卡最终输出的token数量,取值范围为0 < BS ≤ 512。当前仅支持8、16、256。

    • K:表示选取topK个专家,取值范围为0 < [object Object] ≤ 16同时满足0 < [object Object][object Object]。当前仅支持6、8。

    • localExpertNum:表示本卡专家数量。

      • 对于共享专家卡,localExpertNum = 1
      • 对于MoE专家卡,localExpertNum = [object Object] / ([object Object] - [object Object])。moeExpertNum当前仅支持32。
    • tokenMsgSize:表示每个token在数据通信时的维度信息。

      • 非量化场景下,tokenMsgSize = Align256(H)。
      • 量化场景下,tokenMsgSize = Align512(Align32(H) + 4 ),其中AlignN(x) = ((x + N - 1) / N) * N。
    • 当前版本暂不支持共享专家。sharedExpertNum和sharedExpertRankNum当前仅支持0。

  6. HCCL_BUFFSIZE:

    调用本接口前需检查[object Object]环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求 >= 2且满足>= 4 * ([object Object] * [object Object] * [object Object] * Align512(Align32(2 * H) + 44) + ([object Object] + [object Object]) * [object Object] * Align512(2 * [object Object])),[object Object]代表使用MoE专家卡的本卡专家数,其中Align512(x) = ((x + 512 - 1) / 512) * 512,Align32(x) = ((x + 32 - 1) / 32) * 32。

  7. 通信域使用约束:

    • 一个模型中的aclnnMoeDistributeDispatchSetup接口,aclnnMoeDistributeDispatchTeardown接口,aclnnMoeDistributeCombineSetup接口,aclnnMoeDistributeCombineTeardown接口仅支持相同EP通信域,且该通信域中不允许有其他算子。
[object Object]
  • 文件准备:

    1. 按照下方指导创建rank_table_m2.json文件并修改。

    2. 将项目拷贝到两台服务器中,并根据机器的device ip配置rank_table_m2.json文件内容。注意两机rank_table_m2.json文件保持一致。

    3. 安装cann包,并根据编译运行。

  • 关于rankTable:

    1. 开发者可以通过ranktable文件配置参与集合通信的NPU资源信息,详细配置请参考中“通信功能开发>集群信息配置>ranktable文件配置资源信息”。

    2. 使用[object Object] 或者[object Object]查询机器的device ip。然后参考集合通信文档填写json文件。

    [object Object]
  • 环境变量配置:

    [object Object]
  • 机器数量设置:

    两机16卡场景中,需将参数MACHINE_NUM设置为2,即

    [object Object]

    单机16卡场景则无需修改。

  • Atlas 350 加速卡:

    • 环境变量配置:

      [object Object]

    示例代码如下,仅供参考,具体编译和执行过程请参考

    [object Object]