recipe.toml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Beam-1.0-501B-A23B (NVFP4) on 4x DGX Spark — Reflection's 501B/23B-active MoE.
  2. #
  3. # From the official vLLM recipe (vllm-project/vllm,
  4. # recipes/models/reflection/Beam-1.0-501B-A23B.yaml, 2026-10-16):
  5. # * image `vllm/vllm-openai:reflection-beam` — Beam support has not landed in
  6. # a vLLM release yet (min_vllm_version 0.33.0), so it ships only in this
  7. # Docker image. arm64 published (16.8 GB), which is what we need.
  8. # * NVFP4 default variant: ModelOpt NVFP4 on the routed experts, everything
  9. # else BF16 -> 353 GB of VRAM at TP4 (4 x ~88 GB per rank + KV).
  10. # * `--kv-cache-dtype fp8` for the NVFP4 variant.
  11. # * reasoning parser `beam` (Harmony `analysis` channel -> reasoning_content)
  12. # and tool-call parser `beam` with auto tool choice.
  13. # * the first NVFP4 start spends ~10 min autotuning FlashInfer MoE kernels —
  14. # well past vLLM's 600 s engine-ready default, hence the env bump.
  15. #
  16. # Weights live in the shared NAS HF cache (53 shards, 274 GB); the launcher
  17. # mounts it at /root/.cache/huggingface so the repo id resolves offline.
  18. #
  19. # DFlash2 speculation (drafter reflection/Beam-1.0-501B-A23B-DFlash2, 7 tokens,
  20. # FLASH_ATTN) — MEASURED 2026-10-21 and LEFT OFF: on GB10 (sm_121) fp8 KV is
  21. # rejected by FlashAttention (needs FA3/SM90 or FA4/SM100 — the same wall as
  22. # the GLM-5.3 DFlash2 A/B), so the lane can only run the drafter with BF16 KV
  23. # (pool halves to 2.77M tokens), and adaptive verification conflicts with the
  24. # FlashAttention cudagraph replay ("pass enable_adaptive_verification=false").
  25. # With that forced off, decode was 23.6-27.1 tok/s vs 26.2 without any
  26. # speculation — i.e. neutral, for half the KV. Not worth it here.
  27. engine = "vllm"
  28. name = "Beam-1.0-501B-A23B NVFP4 (4x Spark, TP4, beam parsers)"
  29. docker_image = "vllm/vllm-openai:reflection-beam"
  30. model = "reflection/Beam-1.0-501B-A23B-NVFP4"
  31. parent_model = "reflection/Beam-1.0-501B-A23B"
  32. port = 30000
  33. required_nodes = 4
  34. # dgx5-8: the experiment cluster (dgx1-4 runs the production 1017 lane).
  35. cluster = "dgx58-switch"
  36. tensor_parallel_size = 4
  37. pipeline_parallel_size = 1
  38. distributed_backend = "mp"
  39. shm_size = "32gb"
  40. # The launcher must know the process to exec: with an EMPTY entrypoint it
  41. # renders `--entrypoint <model>` (the known "model executed as a command"
  42. # trap). vllm/vllm-openai ships `vllm serve` as the image entrypoint.
  43. entrypoint = ["vllm", "serve"]
  44. args = [
  45. "--served-model-name", "beam",
  46. # Vendor default (fp8 KV) and MEASURED BEST on GB10: 6.8M-token KV pool,
  47. # 26 tok/s c1 / 41 c2 / 62 c4 decode, 90/100 quality.
  48. "--kv-cache-dtype", "fp8",
  49. # vendor: automatic tool choice, grammar derived from the checkpoint's
  50. # response_template; the reasoning parser splits the Harmony analysis channel
  51. "--enable-auto-tool-choice",
  52. "--tool-call-parser", "beam",
  53. "--reasoning-parser", "beam",
  54. # 384K of the model's 1M window: the measured KV pool is 5.27M tokens, so
  55. # this still allows ~13 concurrent full-length requests, and it leaves room
  56. # for the bench depth suite's 256K point (a 264K prompt does not fit a
  57. # 262144 cap — 2026-10-21 depth run).
  58. "--max-model-len", "393216",
  59. "--gpu-memory-utilization", "0.85",
  60. "--max-num-seqs", "8",
  61. "--trust-remote-code",
  62. "--speculative-config", """
  63. '{"method":"dflash","model":"reflection/Beam-1.0-501B-A23B-DFlash2","num_speculative_tokens":7,"attention_backend":"FLASHINFER","enable_adaptive_verification":false}'""",
  64. ]
  65. [env]
  66. # First NVFP4 start autotunes FlashInfer MoE kernels (~10 min) — the default
  67. # 600 s engine-ready timeout would kill the boot.
  68. VLLM_ENGINE_READY_TIMEOUT_S = "3600"