recipe.toml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # eugr b12x lane (2026-09-10) — verbatim mirror of eugr/spark-vllm-docker
  2. # recipes/glm-5.3-flash.yaml (their cluster_only dual-Spark B12X recipe),
  3. # run on the eugr/prebuilt image instead of their build-and-copy.sh flow.
  4. #
  5. # Image: eugr/spark-vllm-b12x:nightly-20260909 (Docker Hub, ~11 GB). Built
  6. # by their --exp-b12x path from the FLOATING refs: vLLM
  7. # local-inference-lab/vllm @ dev/jovian-judgement (41ea64ae at 09-10, the
  8. # mainline line — NOT the integration/glm53-r31 release cut) + b12x master.
  9. # Provenance: https://github.com/eugr/spark-vllm-docker (MIT).
  10. #
  11. # This is a third-party independent b12x stack, A/B'd against our r28/r31
  12. # lanes on the SAME model (GLM-5.3-Flash-NVFP4-Spark) and fabric. Their
  13. # notable deviations vs our stack:
  14. # * --load-format b12x (their experimental b12x loader, 09-06: "faster and
  15. # more memory efficient than Instanttensor") — NOT instanttensor
  16. # * --moe-backend b12x + --linear-backend b12x (W4A4 linear kernels — our
  17. # r17 bisect found these destructive on the r17 stack; their new loader
  18. # may have fixed numerics, the bench decides)
  19. # * MTP k=5 with moe_backend "humming" (vs our k=3)
  20. # * 1M ctx, max-num-seqs 4 (vs our 512K/16), KV pinned 8 GiB, GMU 0.87
  21. # * V2 model runner + AOT/MEGA-AOT on, spawn workers, PCIE AR off
  22. #
  23. # Baseline for the A/B: glm53-flash-r31-2x / glm53-flash-r28-spark on
  24. # 2nodes-dac (r28: 158/176, 1475 pp / 27.2 tg / 1362 ms d0 c1).
  25. engine = "vllm"
  26. name = "GLM-5.3-Flash NVFP4-Spark (eugr b12x img, 2x)"
  27. docker_image = "eugr/spark-vllm-b12x:nightly-20260909" # prebuilt (no build: no docker_image_dir)
  28. model = "local-inference-lab/GLM-5.3-Flash-NVFP4-Spark"
  29. required_nodes = 2
  30. tensor_parallel_size = 2
  31. pipeline_parallel_size = 1
  32. distributed_backend = "mp"
  33. shm_size = "32gb"
  34. entrypoint = ["vllm", "serve"]
  35. args = [
  36. "--served-model-name", "glm53",
  37. "--trust-remote-code",
  38. "--distributed-executor-backend", "mp",
  39. "--mamba-cache-mode", "align",
  40. "--enable-prefix-caching",
  41. "--enable-chunked-prefill",
  42. "--dtype", "bfloat16",
  43. "--kv-cache-dtype", "fp8",
  44. "--quantization", "modelopt_mixed",
  45. "--attention-backend", "B12X",
  46. "--block-size", "256",
  47. "--moe-backend", "b12x",
  48. "--linear-backend", "b12x",
  49. "--no-enable-flashinfer-autotune",
  50. "--load-format", "b12x",
  51. "--max-model-len", "1048576",
  52. "--max-num-seqs", "4",
  53. "--max-num-batched-tokens", "4096",
  54. "--speculative-config", """
  55. '{"method":"mtp","num_speculative_tokens":5,"moe_backend":"humming","attention_backend":"B12X"}'""",
  56. "--reasoning-parser", "glm45",
  57. "--tool-call-parser", "glm47",
  58. "--enable-auto-tool-choice",
  59. "--kv-cache-memory-bytes", "8589934592",
  60. "--gpu-memory-utilization", "0.87",
  61. # Their launcher bakes these envs into the image; kept explicit here so
  62. # the recipe stays self-documenting (the image's own env is the default,
  63. # ours overrides with identical values).
  64. ]
  65. [env]
  66. HF_HUB_OFFLINE = "1"
  67. CUTE_DSL_ARCH = "sm_121a"
  68. SAFETENSORS_FAST_GPU = "1"
  69. VLLM_ENABLE_ROCE_ALLREDUCE = "1"
  70. VLLM_ROCE_ALLREDUCE_MAX_SIZE = "2MB"
  71. VLLM_WORKER_MULTIPROC_METHOD = "spawn"
  72. VLLM_SSM_CONV_STATE_LAYOUT = "DS"
  73. VLLM_USE_AOT_COMPILE = "1"
  74. VLLM_USE_MEGA_AOT_ARTIFACT = "1"
  75. VLLM_USE_V2_MODEL_RUNNER = "1"
  76. VLLM_ENABLE_PCIE_ALLREDUCE = "0"
  77. B12X_POLICY_MODE = "auto"
  78. INSTANTTENSOR_BACKEND = "BUFFERED"
  79. INSTANTTENSOR_BUFFER_SIZE = "67108864"
  80. INSTANTTENSOR_CHUNK_SIZE = "8388608"
  81. INSTANTTENSOR_CONCURRENCY = "1"
  82. INSTANTTENSOR_IO_DEPTH = "3"
  83. # JIT caches persist per-node (self-namespace by engine version key)
  84. OMP_NUM_THREADS = "2"
  85. MAX_JOBS = "2"
  86. VLLM_ENGINE_READY_TIMEOUT_S = "3600"
  87. [[extra_mounts]]
  88. host = "~/sm121-cache/glm53-jit-121f/b12x"
  89. container = "/root/.cache/b12x"
  90. [[extra_mounts]]
  91. host = "~/sm121-cache/jit-121f/flashinfer"
  92. container = "/root/.cache/flashinfer"
  93. [[extra_mounts]]
  94. host = "~/sm121-cache/jit-121f/torchinductor"
  95. container = "/root/.cache/torchinductor"
  96. [[extra_mounts]]
  97. host = "~/sm121-cache/jit-121f/vllm"
  98. container = "/root/.cache/vllm"