Files
DeepGEMM/MEGAMOE_SM90_DEV.md
2026-06-18 00:01:30 +08:00

7.2 KiB
Raw Blame History

SM90 MegaMoE 开发日志

2026-06-17 23:55:32 CST

  • 对应 clean 工作 commit1dafd0f17376d8730bebb472dc8e15d9645c6b52
  • 用户请求摘要:重做 Phase 1 接口/基础设施提交,保证它作为独立 clean commit 在线性历史中出现,并通过远端测试。
  • 本次提交的核心改动:
    • 新增 SM90 MegaMoE host APIget_symm_buffer_size_for_sm90_mega_moeget_token_alignment_for_sm90_mega_moefp8_mega_moe
    • 新增 SM90 MegaMoE JIT heuristics、runtime launch glue、scheduler 和空 kernel stub。
    • Python MegaMoE wrapper 支持按当前 CUDA device 区分 SM90/SM100SM90 使用 (1, 128, 128) recipe 和 float SF 路径。
    • SM90 symmetric buffer Phase 1 接口返回 8 个常规 viewxx_sftopk_idxtopk_weightsl1_actsl1_acts_sfl2_actsl2_acts_sf
    • 新增 Phase 1 smoke 测试脚本:megamoe_dev_test_scripts/phase1/interface_smoke.py
    • 更新 AGENTS.md,记录 phase 测试脚本提交规范、开发日志规范和 60 秒左右 timeout 规则。
    • 更新 MEGAMOE_SM90_DESIGN.md,将 Dispatch 与 L1 TMA/WGMMA 拆成独立 phase。
  • 关键文件列表:
    • AGENTS.md
    • MEGAMOE_SM90_DESIGN.md
    • csrc/apis/sm90_mega.hpp
    • csrc/jit_kernels/heuristics/sm90_mega_moe.hpp
    • csrc/jit_kernels/impls/sm90_fp8_mega_moe.hpp
    • csrc/python_api.cpp
    • deep_gemm/__init__.py
    • deep_gemm/mega/__init__.py
    • deep_gemm/include/deep_gemm/impls/sm90_fp8_mega_moe.cuh
    • deep_gemm/include/deep_gemm/layout/mega_moe.cuh
    • deep_gemm/include/deep_gemm/scheduler/sm90_mega_moe.cuh
    • megamoe_dev_test_scripts/phase1/interface_smoke.py
  • 详细开发流程:
    • 本地从原混合 Phase 1/Phase 2 commit 回退到 Phase 0 基线,保留工作区改动并重新拆分 commit。
    • 本地将 SM90 kernel 降到 Phase 1 空 kernel stub仅保留 ABI、JIT 模板参数和 launch 静态检查。
    • 本地将 get_symm_buffer_size_for_sm90_mega_moe 降到 Phase 1 接口,返回 8 个常规 buffer views不暴露 Phase 2 dispatch 内部状态。
    • 本地新增 megamoe_dev_test_scripts/phase1/interface_smoke.py,验证 SM90 buffer views、float SF dtype、weight transform 和空 kernel launch。
    • 本地静态检查:git diff --checkpython3 -m py_compile megamoe_dev_test_scripts/phase1/interface_smoke.py
    • 远端同步:rsync -avR AGENTS.md MEGAMOE_SM90_DESIGN.md csrc/python_api.cpp deep_gemm/__init__.py deep_gemm/mega/__init__.py deep_gemm/include/deep_gemm/layout/mega_moe.cuh csrc/apis/sm90_mega.hpp csrc/jit_kernels/heuristics/sm90_mega_moe.hpp csrc/jit_kernels/impls/sm90_fp8_mega_moe.hpp deep_gemm/include/deep_gemm/impls/sm90_fp8_mega_moe.cuh deep_gemm/include/deep_gemm/scheduler/sm90_mega_moe.cuh megamoe_dev_test_scripts/phase1/interface_smoke.py g0034:/mnt/beegfs/lxy/DeepGEMM/
    • 远端 buildssh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && timeout 60s bash develop.sh'",通过。
    • 远端 single-rank smokessh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && timeout 60s python3 megamoe_dev_test_scripts/phase1/interface_smoke.py'",通过。
    • 远端 2-rank smokessh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && CUDA_VISIBLE_DEVICES=0,1 timeout 60s torchrun --standalone --nproc_per_node=2 megamoe_dev_test_scripts/phase1/interface_smoke.py'",通过。
  • 测试结果和已知问题:
    • Phase 1 build 和 smoke 测试均通过。
    • single-rank 仍出现 PyTorch symmetric memory warningcuMulticastCreate failed with: "invalid argument",当前不影响 smoke。
    • Phase 1 kernel 是空 kernel不产生 dispatch/GEMM 输出正确性只覆盖接口、buffer views、JIT 编译与 launch。
  • 后续待办:
    • 在线性历史中继续提交 Phase 2 dispatch-only 实现。
    • Phase 3 开始实现 L1 TMA + 单 tile WGMMA并增加 accumulator/reference 对比。

2026-06-18 00:00:45 CST

  • 对应 clean 工作 commit540e5aeadc1b21dca8222a838ed6e5b6c4de93e8
  • 用户请求摘要:在线性 Phase 1 commit 之后提交 Phase 2 dispatch-only 实现,并重新通过远端 single-rank、2-rank、8-rank correctness 测试。
  • 本次提交的核心改动:
    • 将 SM90 kernel 从 Phase 1 空 kernel 扩展为 Phase 2 dispatch-only kernel。
    • 实现 dispatch workspace 清理、expert count、source token-topk index 写入、NVLink barrier、remote/local token/SF/top-k weight pull、token source metadata 写入、l1_arrival_count release。
    • 扩展 SM90 symmetric buffer views额外暴露 l1_topk_weightsexpert_recv_count_suml1_arrival_counttoken_src_metadata 供 Phase 2 correctness 检查。
    • 更新 Python SymmBufferSM90 分支解包 12 个 viewsSM100 分支保持 8 个 views。
    • 新增 Phase 2 correctness 脚本 megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py,使用 torchrun-compatible distributed init。
  • 关键文件列表:
    • csrc/apis/sm90_mega.hpp
    • deep_gemm/mega/__init__.py
    • deep_gemm/include/deep_gemm/impls/sm90_fp8_mega_moe.cuh
    • megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py
  • 详细开发流程:
    • 在 Phase 1 commit 和 Phase 1 日志 commit 之后,从原 dispatch-only 实现恢复 Phase 2 相关文件,保证历史顺序为 Phase 1 -> Phase 1 log -> Phase 2。
    • 本地静态检查:python3 -m py_compile megamoe_dev_test_scripts/phase2/dispatch_only_correctness.pygit diff --check
    • 远端同步:rsync -avR csrc/apis/sm90_mega.hpp deep_gemm/mega/__init__.py deep_gemm/include/deep_gemm/impls/sm90_fp8_mega_moe.cuh megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py g0034:/mnt/beegfs/lxy/DeepGEMM/
    • 远端 buildssh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && timeout 60s bash develop.sh'",通过。
    • 远端 single-rank correctnessssh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && timeout 60s python3 megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py --tokens-list 0,8,48,192'",通过。
    • 远端 2-rank correctnessssh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && CUDA_VISIBLE_DEVICES=0,1 timeout 60s torchrun --standalone --nproc_per_node=2 megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py --tokens-list 0,8,48,192'",通过。
    • 远端 8-rank correctnessssh g0034 "docker exec sglang-lxy bash -lc 'cd /mnt/beegfs/lxy/DeepGEMM && CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 timeout 60s torchrun --standalone --nproc_per_node=8 megamoe_dev_test_scripts/phase2/dispatch_only_correctness.py --tokens-list 0,8,48,192'",通过。
    • 确认远端无残留 dispatch_only_correctness / interface_smoke / torchrun 进程。
  • 测试结果和已知问题:
    • Phase 2 build 通过。
    • Phase 2 dispatch-only correctness 在 single-rank、2-rank、8-rank 下通过。
    • 覆盖 num_tokens=0,8,48,192,并覆盖 BLOCK_M=32/64/128
    • single-rank 仍出现 PyTorch symmetric memory warningcuMulticastCreate failed with: "invalid argument",当前不影响 correctness。
  • 后续待办:
    • Phase 3在 Phase 2 dispatch 产物上实现 L1 TMA + 单 tile WGMMA。
    • 为 Phase 3 增加 accumulator / scaled GEMM reference 对比测试。