recipe.toml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # SparkRing shared image — TP4 SWITCHED profile
  2. # (`/opt/sparkring/profiles/glm53-flash-spark-tp4-switched/profile.json`,
  3. # "glm53-flash-spark-tp4-switched-mtp3", status: research-only — "not validated
  4. # on switched hardware"). Plain NCCL (RoCEnante OFF), NCCL_ALGO=Ring,
  5. # KV 24 GiB fp8, max-len 1M, MTP3 with draft TP4. Structural flags
  6. # (--tp/--pp/--nnodes/--node-rank/--master-addr/--master-port/--host/--port)
  7. # come from the launcher (master-port: 25000 vs their 29795 — cosmetic).
  8. # Model: local-inference-lab/GLM-5.3-Flash-NVFP4-Spark @ df116c4f from the
  9. # shared NFS cache, mounted read-only at /models/target as the profile expects.
  10. engine = "vllm"
  11. name = "GLM-5.3-Flash NVFP4-Spark (SparkRing shared img, TP4 switched profile)"
  12. docker_image = "sparkring-shared:local"
  13. docker_image_dir = "sparkring-shared"
  14. model = "local-inference-lab/GLM-5.3-Flash-NVFP4-Spark"
  15. parent_model = "zai-org/GLM-5.3-Flash"
  16. port = 8000
  17. required_nodes = 4
  18. tensor_parallel_size = 4
  19. pipeline_parallel_size = 1
  20. distributed_backend = "mp"
  21. args = [
  22. "--decode-context-parallel-size", "1",
  23. "--cp-kv-cache-interleave-size", "1",
  24. "--disable-custom-all-reduce",
  25. "--mamba-cache-mode", "align",
  26. "--limit-mm-per-prompt", "{\"image\":4,\"video\":1}",
  27. "--enable-chunked-prefill",
  28. "--dtype", "bfloat16",
  29. "--kv-cache-dtype", "fp8",
  30. "--quantization", "modelopt_mixed",
  31. "--attention-backend", "B12X",
  32. "--block-size", "512",
  33. "--mamba-block-size", "512",
  34. "--recurrent-checkpoint-policy", "aligned",
  35. "--prefix-cache-retention-interval", "0",
  36. "--moe-backend", "b12x",
  37. "--linear-backend", "b12x",
  38. "--no-enable-flashinfer-autotune",
  39. "--load-format", "fastsafetensors",
  40. "--enable-auto-tool-choice",
  41. "--tool-call-parser", "glm47",
  42. "--reasoning-parser", "glm45",
  43. "--kda-prefill-backend", "b12x",
  44. "--gpu-memory-utilization", "0.80",
  45. "--kv-cache-memory-bytes", "25769803776",
  46. "--max-model-len", "1048576",
  47. "--max-num-seqs", "16",
  48. "--max-num-batched-tokens", "8192",
  49. "--prefill-schedule-interval", "2",
  50. "--speculative-config", "{\"method\":\"mtp\",\"num_speculative_tokens\":3,\"draft_tensor_parallel_size\":4,\"kv_cache_dtype\":\"auto\",\"draft_sample_method\":\"probabilistic\",\"rejection_sample_method\":\"standard\",\"draft_load_config\":{\"load_format\":\"safetensors\"},\"attention_backend\":\"B12X\"}",
  51. "--compilation-config", "{\"cudagraph_mode\":\"FULL_AND_PIECEWISE\",\"cudagraph_capture_sizes\":[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64],\"custom_ops\":[\"all\"],\"pass_config\":{\"fuse_allreduce_rms\":false}}",
  52. "--max-cudagraph-capture-size", "64",
  53. "--async-scheduling",
  54. "--enable-prefix-caching",
  55. "--cudagraph-metrics",
  56. "--enable-prompt-tokens-details",
  57. "--served-model-name", "glm-5.3-flash-spark",
  58. ]
  59. [env]
  60. PYTHONDONTWRITEBYTECODE = "1"
  61. VLLM_SPARK_SHARED_CAPTURE_STREAM = "0"
  62. SPARK_TP4_HEALTH_GATE = "0"
  63. SPARK_CUDAGRAPH_REPLAY_TIMING = "0"
  64. SPARK_TP4_DCP_COLLECTIVE_AUDIT = "0"
  65. SPARK_GDN_PREFILL_CHECKPOINTS = "0"
  66. SPARK_GDN_CONTINUATION_CHECKPOINTS = "0"
  67. SPARK_MHC_PREFILL_SHARD = "0"
  68. SPARK_MTP_CAPTURE_TAIL_MAX_REQS = "0"
  69. VLLM_ENABLE_PCIE_ALLREDUCE = "0"
  70. VLLM_ENABLE_ROCE_ALLREDUCE = "0"
  71. VLLM_ALLREDUCE_USE_FLASHINFER = "0"
  72. VLLM_ALLREDUCE_USE_SYMM_MEM = "0"
  73. VLLM_USE_NCCL_SYMM_MEM = "0"
  74. NCCL_SWITCHLESS_RING_ONLY = "0"
  75. NCCL_IB_SUBNET_AWARE_ROUTING = "0"
  76. NCCL_IB_EXTENDED_IPV4_GIDS = "1"
  77. NCCL_IB_PRESERVE_PCI_DOMAIN = "1"
  78. NCCL_IB_ROUTE_DIAGNOSTICS = "0"
  79. NCCL_NET = "IB"
  80. NCCL_NET_PLUGIN = "none"
  81. NCCL_IB_DISABLE = "0"
  82. NCCL_ALGO = "Ring"
  83. NCCL_PROTO = "LL,LL128,Simple"
  84. NCCL_DEBUG = "WARN"
  85. NCCL_CUMEM_ENABLE = "0"
  86. NCCL_IB_MERGE_NICS = "0"
  87. NCCL_CROSS_NIC = "1"
  88. VLLM_NCCL_SO_PATH = "/opt/sparkring/nccl-pci/libnccl.so.2.30.7"
  89. LD_PRELOAD = "/opt/sparkring/nccl-pci/libnccl.so.2.30.7"
  90. VLLM_USE_V2_MODEL_RUNNER = "1"
  91. VLLM_B12X_KDA_PREFILL_COALESCING = "1"
  92. VLLM_GLM53_MHC_PREFILL_SHARD = "1"
  93. VLLM_GLM53_MHC_PREFILL_DIAGNOSTICS = "1"
  94. VLLM_GLM53_KDA_GATE_SIDE_STREAM = "1"
  95. VLLM_DCP_TOPK_OWNER_MERGE = "0"
  96. VLLM_DCP_OWNER_FUSED_ENDPOINTS = "0"
  97. VLLM_DCP_COMPACT_INDEX_CACHE_OWNER = "0"
  98. VLLM_DCP_COMPACT_INDEX_TENSOR_VOTE = "0"
  99. VLLM_DCP_COMPACT_INDEX_LOCAL_WIDTHS = "0"
  100. VLLM_DCP_COMPACT_INDEX_PROFILE = "0"
  101. SPARKCACHE_ENABLED = "0"
  102. SPARKCACHE_ASYNC_PAGE_CAPTURE = "0"
  103. VLLM_GLM53_SPLIT_TARGET_BLOCK_SIZE = "512"
  104. VLLM_GLM53_SPLIT_MAMBA_BLOCK_SIZE = "512"
  105. VLLM_B12X_MLA_CKV_GATHER = "1"
  106. VLLM_MTP_NVFP4_LM_HEAD = "1"
  107. VLLM_LM_HEAD_A16 = "1"
  108. VLLM_MXFP8_LM_HEAD = "0"
  109. VLLM_B12X_MOE_FP4_FORCE_A16 = "0"
  110. VLLM_GDN_SPEC_DECODE_METADATA_FASTPATH = "1"
  111. VLLM_FASTSAFETENSORS_QUEUE_SIZE = "1"
  112. VLLM_WORKER_MULTIPROC_METHOD = "spawn"
  113. VLLM_NO_USAGE_STATS = "1"
  114. HF_HUB_OFFLINE = "1"
  115. TRANSFORMERS_OFFLINE = "1"
  116. # The serve-with-warmup wrapper polls the API at 127.0.0.1:$PORT — the value
  117. # resolves from the recipe's `port` field, so the two can't drift apart.
  118. PORT = { from = "port" }
  119. SERVED_MODEL_NAME = "glm-5.3-flash-spark"
  120. DFLASH_WARMUP = "1"
  121. DFLASH_WARMUP_CONCURRENCIES = "1"
  122. DFLASH_WARMUP_SHAPE_WORDS = "8"
  123. DFLASH_WARMUP_MAX_TOKENS = "16"
  124. DFLASH_WARMUP_TIMEOUT_SECONDS = "1800"
  125. SPARKRING_WARMUP_TEMPERATURE = "1"
  126. SPARKRING_LIVENESS_ENABLED = "1"
  127. SPARKRING_LIVENESS_PORT = "8001"