Преглед изворни кода

mimo-vllm: reopen lane on eugr/spark-vllm-b12x nightly (karmic-kraken: MiMo aux, BLHNC layouts, b12x noncausal, eagle3 unwrap) + b12x linear/moe, CUTE_DSL_ARCH=sm_121a

Alexander Korolev пре 3 недеља
родитељ
комит
c4668aa86f
1 измењених фајлова са 26 додато и 16 уклоњено
  1. 26 16
      recipes/mimo26-flash-mopd-4x-vllm/recipe.toml

+ 26 - 16
recipes/mimo26-flash-mopd-4x-vllm/recipe.toml

@@ -30,13 +30,20 @@
 # qualified for GLM-5.3, never for MiMo; lil-catalog itself marks their MiMo
 # qualified for GLM-5.3, never for MiMo; lil-catalog itself marks their MiMo
 # DFlash "runtime qualification unverified". Reopening recipe + external
 # DFlash "runtime qualification unverified". Reopening recipe + external
 # intel (madeby561 amd64-only rc4, eugr spark-vllm-b12x nightlies, lil-catalog
 # intel (madeby561 amd64-only rc4, eugr spark-vllm-b12x nightlies, lil-catalog
-# flags): specs/bugs/BUG-2026-09-28-vllm-mimo-dflash-parked.md. Production
-# stays sglang mimo26-flash-mopd-4x.
+# flags): specs/bugs/BUG-2026-09-28-vllm-mimo-dflash-parked.md.
+#
+# REOPENED 2026-09-28 same evening: the eugr/spark-vllm-b12x nightly (source
+# local-inference-lab/vllm@dev/karmic-kraken) landed all four missing pieces
+# on 2026-09-22 — MiMo aux-state loading, block-outermost KV layouts for
+# mixed page sizes, b12x non-causal attention (so the DFlash draft runs B12X
+# too), and the eagle3 language-model unwrap. It also ships cached
+# serve-launchers (serve-mimo26-flash.sh) that define the canonical MiMo
+# flag set; we mirror them. No local image build: docker_image is the
+# nightly tag, distributed to nodes by save/load.
 
 
 engine = "vllm"
 engine = "vllm"
-name = "MiMo-V2.6-Flash-MOPD (vLLM B12X, 4x Spark, DFlash-7, r39)"
-docker_image = "mimo26-spark-vllm:local"
-docker_image_dir = "mimo26-spark-vllm"
+name = "MiMo-V2.6-Flash-MOPD (vLLM B12X, 4x Spark, DFlash-7, b12x-nightly)"
+docker_image = "eugr/spark-vllm-b12x:latest"
 entrypoint = ["vllm", "serve"]
 entrypoint = ["vllm", "serve"]
 model = "XiaomiMiMo/MiMo-V2.6-Flash-MOPD"
 model = "XiaomiMiMo/MiMo-V2.6-Flash-MOPD"
 parent_model = "XiaomiMiMo/MiMo-V2.6-Flash-MOPD"
 parent_model = "XiaomiMiMo/MiMo-V2.6-Flash-MOPD"
@@ -61,22 +68,23 @@ args = [
     "--enable-chunked-prefill",
     "--enable-chunked-prefill",
     "--async-scheduling",
     "--async-scheduling",
     "--enable-prefix-caching",
     "--enable-prefix-caching",
-    # B12X attention (lab-qualified on MiMo's 192/128 heads) + their kernel
-    # config: no flashinfer autotune, no CuTe-DSL warmup.
+    # B12X attention (lab-qualified on MiMo's 192/128 heads; non-causal now
+    # supported by the nightly's b12x — the DFlash draft runs on B12X too).
     "--attention-backend", "B12X",
     "--attention-backend", "B12X",
+    # Mirror of the lab's serve-mimo26-flash.sh: b12x linear + MoE backends.
+    "--linear-backend", "b12x",
+    "--moe-backend", "b12x",
     "--load-format", "instanttensor",
     "--load-format", "instanttensor",
     "--kernel-config", """
     "--kernel-config", """
 '{"enable_cutedsl_warmup":false,"enable_flashinfer_autotune":false}'""",
 '{"enable_cutedsl_warmup":false,"enable_flashinfer_autotune":false}'""",
-    # DFlash draft from the checkpoint's dflash/ subfolder (7 tokens). Draft
-    # attention must be TRITON_ATTN, NOT B12X: the block-diffusion draft runs
-    # NON-CAUSAL attention and b12x (r39) rejects that ("non-causal attention
-    # not supported") — verified in boot log. The draft is two layers over an
-    # 8-token block (speed irrelevant); the target keeps B12X everywhere.
+    # DFlash draft from the checkpoint's dflash/ subfolder (7 tokens). The
+    # karmic-kraken b12x supports non-causal attention, so the draft runs
+    # B12X as well (the TRITON_ATTN workaround was only needed on r39).
     "--speculative-config", """
     "--speculative-config", """
-'{"method":"dflash","model":"{{dflash}}","num_speculative_tokens":7,"attention_backend":"TRITON_ATTN"}'""",
-    # vLLM resolves this checkpoint to MiMoV2OmniForCausalLM (the multimodal
-    # wrapper); the eagle3-hook fix lives in docker-images/mimo26-spark-vllm
-    # (patched image), which is what this lane runs.
+'{"method":"dflash","model":"{{dflash}}","num_speculative_tokens":7,"attention_backend":"B12X"}'""",
+    # Nightly resolves the Omni wrapper's eagle3 hook on the inner language
+    # model natively (no image patch needed); --language-model-only keeps
+    # the visual/audio towers out of the memory budget.
     "--language-model-only",
     "--language-model-only",
     "--reasoning-parser", "mimo",
     "--reasoning-parser", "mimo",
     "--tool-call-parser", "mimo",
     "--tool-call-parser", "mimo",
@@ -123,6 +131,8 @@ TORCH_USE_RTLD_GLOBAL = "1"
 VLLM_NO_USAGE_STATS = "1"
 VLLM_NO_USAGE_STATS = "1"
 TORCH_CUDA_ARCH_LIST = "12.1a"
 TORCH_CUDA_ARCH_LIST = "12.1a"
 FLASHINFER_CUDA_ARCH_LIST = "12.1f"
 FLASHINFER_CUDA_ARCH_LIST = "12.1f"
+# b12x CuTe kernels target sm_121a on GB10 (the lab launcher defaults to
+# sm_120a = RTX PRO; eugr's own recipes override it the same way).
 CUTE_DSL_ARCH = "sm_121a"
 CUTE_DSL_ARCH = "sm_121a"
 CMAKE_CUDA_ARCHITECTURES = "121"
 CMAKE_CUDA_ARCHITECTURES = "121"
 OMP_NUM_THREADS = "2"
 OMP_NUM_THREADS = "2"