Skip to content

[MoonEP] Kimi-K3 production integration roadmap #35783

Description

@wirybeaver

Motivation

Track MoonEP integration for Kimi-K3 as a small set of independently reviewable changes under the broader Kimi-K3 roadmap in #32607.

MoonEP uses static-shape dispatch/combine plus dynamic redundant experts and remote expert prefetch to balance expert-parallel traffic. The first completion boundary is a reproducible Kimi-K3 MXFP4 configuration; broader runtime and model capabilities can follow independently.

Related roadmap: vllm-project/vllm#52095.

Current implementation

The merged BF16 path remains intentionally diagnostic: eager-only, replicated/global BF16 weights, and a correctness-first expert loop.

Roadmap

Productionization

  • Land and pin the compatible MoonEP dependency
    Merge or supersede update prefetch api and support rotating local to first MoonshotAI/MoonEP#32, then provide an exact commit, wheel, or container build. The integration must not depend on an undocumented development checkout.
  • Rebase and land [MoonEP] MXFP4 experts for Kimi K3 on the DeepGEMM runner in symmetric memory #34874
    Rebase onto the latest moonep, isolate the MXFP4/DeepGEMM/symmetric-memory delta, fix pre-commit, and run the required SGLang CPU/GPU CI.
  • Close correctness and support-contract gaps @charliechenye
    Remove silent rank-0 fallback; keep padded routes out of planner statistics; reject unsupported bias; and fail fast for unsupported overlap/CUDA-graph combinations. [MoonEP] Fix BF16 physical row semantics and unsupported config checks #36133
  • Add focused automated coverage
    Cover symmetric-pool row mapping and lifecycle, MXFP4 weight/scale residency, remote-prefetch remapping, MoonEP-to-DeepGEMM pre/post-permute, empty/padded groups, route weights, and capacity boundaries.
  • Add a real Kimi-K3 integration test
    Instantiate the actual FusedMoE/MXFP4 loading path without import stubs and exercise dispatch → prefetch → DeepGEMM → combine. Keep the BF16 harness as a component test.
  • Run reproducible acceptance validation
    Record exact SGLang/MoonEP/DeepGEMM revisions, image and launch command, topology, TP/EP, memory, correctness, prefill/decode coverage, capacity failures, and stability.
  • Benchmark against DeepEP
    Compare identical Kimi-K3 MXFP4 configurations across decode/small-batch and larger-batch workloads. Report TTFT, ITL, throughput, memory, and dispatch/planning/prefetch/GEMM/combine breakdown against a pre-agreed success threshold.
  • Package and document the supported configuration
    Provide installation, hardware/fabric prerequisite checks, launch recipe, support matrix, and troubleshooting guidance.

Follow-up capabilities

Each capability should be independently designed, benchmarked, and reviewed. They should not block the first narrow Kimi-K3 production configuration unless explicitly moved into its acceptance contract.

  • Async communication and scheduler overlap
    Use MoonEP's communication stream and async_finish=True event chain across dispatch, prefetch, compute, and combine. Define buffer/plan ownership for multiple in-flight batches, then integrate SBO/TBO rather than inheriting DeepEP overlap semantics accidentally.

  • CUDA graph support and static-capacity classes
    Capture stable prefill/decode capacity buckets, eliminate capture-time allocations and host synchronization, and guarantee rank-consistent bucket selection. Capacity policy should minimize padding without permitting collective disagreement.

  • Zero-copy dispatch and combine
    Integrate MoonEP's zero-copy controls with SGLang-owned static buffers so dispatch/combine can avoid avoidable allocation and copies. Coordinate this with CUDA graphs and output-buffer ownership. — [MoonEP] Add zero-copy eager expert output path #35934

  • Quantized communication and additional expert formats
    MXFP4 expert weights are the first target, but dispatched activations are still BF16. Scope FP8/other communication formats and additional expert-weight formats such as FP8 or NVFP4, including scale layout and remote-prefetch contracts.

  • Tuned expert compute and kernel fusion
    Tune the DeepGEMM contiguous grouped path over MoonEP cu_seqlens; evaluate Hopper and Blackwell separately. Consider fusing activation quantization, route-weight application, skipped-row zeroing, and other adapter work only when profiling identifies a meaningful boundary.

  • EPLB and expert-placement interaction
    MoonEP's dynamic redundant experts and SGLang EPLB both alter where expert work executes. Define compose-or-exclude semantics, placement-versioning, and how plans/prefetch row mappings react to expert relocation.

  • General EP groups and topology support
    Remove Kimi-K3's current EP=TP/TP-group assumptions where practical. Cover independent EP groups, multi-node NVLink fabric/IMEX domains, mixed DP+EP, and topology-aware capability probing.

  • Serving-mode compatibility
    Validate pipeline parallelism, PD disaggregation, speculative decoding/MTP, overlap scheduling, and memory-saver/offload behavior. Each combination needs an explicit support contract rather than inheriting generic MoE behavior.

  • Broader model semantics
    Support or explicitly reject fused/shared experts, expert bias, alternative gated activations, different gate/up layouts, router top-k values, and non-Kimi expert shapes. Promote MoonEP from a Kimi-K3 path to a generic backend only after these semantics are separated from model-specific assumptions.

  • Resource lifecycle, observability, and autotuning
    Integrate buffer and symmetric-pool teardown with model reload and runtime reset. Expose capacity utilization, padding, duplicated experts, prefetch volume/bandwidth, and per-stage timing; use those signals to tune capacity buckets, prefetch slots, and communication SMs.

Initial completion boundary

The Kimi-K3 productionization item is complete when:

Follow-up capabilities remain open roadmap items and may graduate into their own tracking issues as designs and owners become clear.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions