recipe.toml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # RETIRED 2026-09-29 (operator): RL lanes are no longer used —
  2. # RL keeps training artifacts. Kept as history; use the MOPD lanes.
  3. # MiMo-V2.6-Pro-RL (Xiaomi, 1.02T/42B-active MoE, MXFP4 experts, hybrid SWA)
  4. # on 8x DGX Spark with SGLang + DFlash speculative decoding.
  5. #
  6. # Source: github.com/rhys101/MiMo-V2.6-Pro-RL-Spark-8 @ 2f3e5fd (2026-09-24,
  7. # build a14) — the SGLang variant of the NVIDIA forum thread 384064
  8. # ("MiMo V2.6 Pro RL on 8x DGX Spark: 17.8 -> 68.3 tok/s with DFlash").
  9. # Image: docker-images/mimo26-spark (pinned base digest + 12 patches + b12x
  10. # RoCEnante + GB10 FP8 tile tables).
  11. #
  12. # Flags are the repo's SERVE_ENV profile (a13/a14 numbers: C1 mean 69.1
  13. # tok/s, C8 aggregate 190.8, long extraction C1 104.6 / C8 306.7).
  14. # TP8 + the rendezvous flags are launcher-generated (distributed_backend
  15. # "mp"); the model path is launcher-resolved.
  16. #
  17. # Model: XiaomiMiMo/MiMo-V2.6-Pro-RL @ 73875d00 (on the NAS at
  18. # /mnt/nas/ai/huggingface). The dflash/ subfolder carries the DFlash draft
  19. # weights — wired as a {{dflash}} path ref.
  20. #
  21. # PREREQUISITES: the model must be readable from every launch node's HF
  22. # cache. It currently lives on the NAS only, so serve with
  23. # `--hf-cache /mnt/nas/ai/huggingface` (all 8 nodes read from the NAS at
  24. # load; ~535 GB each). For fast re-boots, fan the model out node-to-node
  25. # first and drop the flag.
  26. engine = "sglang"
  27. name = "MiMo-V2.6-Pro-RL (SGLang DFlash, 8x Spark TP8)"
  28. docker_image = "mimo26-spark:a15"
  29. docker_image_dir = "mimo26-spark"
  30. model = "XiaomiMiMo/MiMo-V2.6-Pro-RL"
  31. parent_model = "XiaomiMiMo/MiMo-V2.6-Pro-RL"
  32. port = 30000
  33. required_nodes = 8
  34. tensor_parallel_size = 8
  35. distributed_backend = "mp"
  36. shm_size = "16gb"
  37. entrypoint = ["python3", "-m", "sglang.launch_server"]
  38. args = [
  39. "--trust-remote-code",
  40. "--served-model-name", "mimo-v2.6-pro",
  41. # Attention / MoE backends (a13 profile)
  42. "--attention-backend", "triton",
  43. "--prefill-attention-backend", "fa4",
  44. "--mm-attention-backend", "triton_attn",
  45. "--enable-multimodal",
  46. "--moe-runner-backend", "marlin",
  47. "--moe-a2a-backend", "none",
  48. # Memory / scheduling (128 GB unified per node)
  49. "--mem-fraction-static", "0.85",
  50. # KV pool at a14 defaults: 2,197,568 tokens cluster-wide (TP8, DFlash
  51. # accounted) — a 512K request uses ~23% of it, so the context limit is a
  52. # declaration, not a memory wall. The model is natively 1M
  53. # (max_position_embeddings, no rope_scaling; 70 layers, mostly SWA-128).
  54. # 1M is also pool-feasible (45% per request) if ever needed.
  55. "--context-length", "524288",
  56. "--max-running-requests", "8",
  57. "--chunked-prefill-size", "8192",
  58. "--page-size", "64",
  59. # MiMo hybrid SWA attention
  60. "--swa-full-tokens-ratio", "0.1",
  61. # Reasoning / tool parsers
  62. "--reasoning-parser", "mimo",
  63. "--tool-call-parser", "mimo",
  64. # DFlash speculative decoding (draft weights ship inside the model repo)
  65. "--speculative-algorithm", "DFLASH",
  66. "--speculative-draft-model-path", "{{dflash}}",
  67. "--speculative-num-draft-tokens", "8",
  68. # CUDA graphs
  69. "--cuda-graph-max-bs-decode", "8",
  70. "--disable-prefill-cuda-graph",
  71. # Unified memory: page cache from weight loading competes with the KV pool
  72. "--weight-loader-drop-cache-after-load",
  73. # Observability
  74. "--enable-metrics",
  75. "--enable-cache-report",
  76. "--watchdog-timeout", "1800",
  77. ]
  78. archived = true
  79. # DFlash draft weights: a subfolder of the main model repo, resolved per node
  80. # (later in the file — bare keys must come before table headers).
  81. [[extra_mounts]]
  82. repo = "XiaomiMiMo/MiMo-V2.6-Pro-RL"
  83. subfolder = "dflash"
  84. container = "dflash"
  85. [env]
  86. # RoCEnante one-shot all-reduce over b12x (baked into the image, PYTHONPATH set)
  87. SGLANG8_ROCE_ALLREDUCE = "1"
  88. # a13/a14 tuning switches
  89. MIMO26_FP8_OPROJ = "1"
  90. MIMO26_FP8_DRAFT = "1"
  91. MIMO26_DFLASH_ADAPTIVE = "1"
  92. # NCCL extras from the reference deployment (HCAs/ifname from [nccl."8nodes-switch"])
  93. NCCL_CUMEM_ENABLE = "0"
  94. NCCL_NVLS_ENABLE = "0"
  95. NCCL_PROTO = "^LL128"
  96. NCCL_BUFFSIZE = "1048576"
  97. NCCL_LL128_BUFFSIZE = "262144"
  98. NCCL_MAX_NCHANNELS = "8"
  99. NCCL_DEBUG = "WARN"