在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。
⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:
在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。
<TOKEN>
例如: - 操作系统 - 昇腾硬件信息 - CANN软件版本 - 安装的对应软件版本
torchtitan GraphTrainer 在捕获 forward/backward FX 图时,unpermute 的反向生成失败:
RuntimeError: when unpacking SymInt, expected int but got u43 + u44 + u45 + u46 + u47 + u48 + u49 + u50
这是由各 EP rank token count 组合得到的 unbacked symbolic shape,trace 时没有具体整数值。 异常发生在 GraphTrainer 捕获联合 forward/backward 图期间,核心调用关系是:
GraphTrainer make_fx / AOTAutograd trace -> npu_moe_token_unpermute backward formula -> npu_moe_token_unpermute_grad_v2 -> permuted_tokens.sym_size(0).expect_int() -> RuntimeError: when unpacking SymInt, expected int but got <unbacked expression>
根因:
模型训练时 backward 中失败:
RuntimeError: npu_moe_token_unpermute_grad ... call aclnnMoeTokenUnpermuteGrad failed, error code is 561002 [ERROR] ... ERR00100 PTA call acl api failed. EZ9999: Inner Error! [MoeTokenUnpermuteGrad] input shape has 0. MoeTokenUnpermuteGrad do tiling failed Check NnopbaseExecutorDoTiling(executor) failed Check NnopbaseExecutorTilingAndUpdateBinInfo(executor) failed Check NnopbaseExecutorMatchCache(executor) failed Check NnopbaseRunForWorkspace(*executor, workspaceSize) failed
FX GraphModule 中的失败节点为:
torch.ops.npu.npu_moe_token_unpermute_grad.default( permuted_tokens, grad_unpermuted_tokens, sorted_indices, None, )
触发条件:MoE 在某个 EP rank 上收到 0 个 routed token, permuted_tokens 形成类似动态 shape:[0, hidden_size] 。
[0, hidden_size]
这个空 tensor 会直接传给 aclnnMoeTokenUnpermuteGrad。当前 CANN tiling 不接受包含 0 的输入 shape,因此在执行算子前失败。
aclnnMoeTokenUnpermuteGrad
欢迎加入社区,感谢您对社区的贡献 🎉!
在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。
⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:
在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用
<TOKEN>等占位符替代原有内容。环境信息
🐛 问题描述
unpermute backward 无法 trace 动态 shape
torchtitan GraphTrainer 在捕获 forward/backward FX 图时,unpermute 的反向生成失败:
这是由各 EP rank token count 组合得到的 unbacked symbolic shape,trace 时没有具体整数值。 异常发生在 GraphTrainer 捕获联合 forward/backward 图期间,核心调用关系是:
根因:
MoE routed token shape 为 0 时 backward 失败
模型训练时 backward 中失败:
FX GraphModule 中的失败节点为:
触发条件:MoE 在某个 EP rank 上收到 0 个 routed token, permuted_tokens 形成类似动态 shape:
[0, hidden_size]。这个空 tensor 会直接传给
aclnnMoeTokenUnpermuteGrad。当前 CANN tiling 不接受包含 0 的输入 shape,因此在执行算子前失败。欢迎加入社区,感谢您对社区的贡献 🎉!