Bläddra i källkod

feat(recipes): add Qwen3.8-Flash-Next-FP8 and GLM-5.3-Flash SGLang day-0 recipes

Both models (released 2026-08-26) have no vLLM support anywhere: qwen4_exp
is open PR #53896, glm5_next is absent from the b12x fork family (aidendle94 /
eugr / local-inference-lab all pre-release). SGLang day-0 multi-arch arm64
tags are the only servable path on sm121.
- qwen38-flash-next-fp8: 2x Spark TP=2 (2nodes-dac), 172.8 GiB FP8
- glm53-flash: 4x Spark TP=4 (4nodes-switch), 305.8 GiB FP8
Alexander Korolev 1 månad sedan
förälder
incheckning
e9212feb72
2 ändrade filer med 139 tillägg och 0 borttagningar
  1. 67 0
      recipes/glm53-flash/recipe.toml
  2. 72 0
      recipes/qwen38-flash-next-fp8/recipe.toml

+ 67 - 0
recipes/glm53-flash/recipe.toml

@@ -0,0 +1,67 @@
+# GLM-5.3-Flash (SGLang day-0) — 4× DGX Spark / GB10 (sm_121), TP=4.
+#
+# 320B-A18B native FP8, hybrid sparse + linear attention + mHC. First
+# natively multimodal GLM-5 (text + vision). No MTP/DFlash draft shipped —
+# plain decode until a drafter lands. Model:
+# https://huggingface.co/zai-org/GLM-5.3-Flash
+#
+# Engine: SGLang day-0 — no vLLM has glm5_next: local-inference-lab fork
+# idle since Aug 11; aidendle94 / eugr images all pre-release.
+#
+# Image: lmsysorg/sglang:glm-5.3-flash — multi-arch incl. arm64 (digest
+# sha256:989e2fff0…; re-verify at serve time). Day-0 = boots, not tuned.
+#
+# Memory: 305.8 GiB → 76.5 GiB/node on 4× Spark; ~43 GiB/node left for KV.
+# Sparse+linear attention keeps KV small, so long context should be feasible.
+#
+# PREREQUISITES:
+#   Weights cached on every node (~/.cache/huggingface → NAS, 328 GB):
+#       huggingface-cli download zai-org/GLM-5.3-Flash
+#
+# REFERENCE:
+#   https://forums.developer.nvidia.com/t/glm-5-3-flash-320b-total-parameters-18b-active/381350
+
+engine = "sglang"
+name = "GLM-5.3-Flash (SGLang day-0)"
+docker_image = "lmsysorg/sglang:glm-5.3-flash"
+model = "zai-org/GLM-5.3-Flash"
+required_nodes = 4
+tensor_parallel_size = 4
+pipeline_parallel_size = 1
+distributed_backend = "mp"
+shm_size = "64gb"
+
+entrypoint = ["python3", "-m", "sglang.launch_server"]
+
+args = [
+    # Memory — weights ~76.5 GiB of 119.6 GiB/node; KV gets the rest.
+    "--mem-fraction-static", "0.87",
+    "--max-running-requests", "10",
+    # Context — 262K start; model card claims up to 1M, scale after measuring.
+    "--max-model-len", "262144",
+    # Attention / KV
+    "--attention-backend", "flashinfer",
+    "--kv-cache-dtype", "fp8_e4m3",
+    # Chunked prefill
+    "--chunked-prefill-size", "8192",
+    # Compile + decode graphs
+    "--enable-torch-compile", "--torch-compile-max-bs", "4",
+    "--cuda-graph-max-bs-decode", "4",
+    "--num-continuous-decode-steps", "2",
+    # Tokenizer / reasoning / tool calling (GLM family; parser names carry
+    # over from the vLLM glm52 recipes — verify they exist in this SGLang)
+    "--reasoning-parser", "glm45",
+    "--tool-call-parser", "glm47",
+    # Observability
+    "--enable-metrics",
+    "--enable-cache-report",
+]
+
+[env]
+# Offline — weights must be cached on each node
+HF_HUB_OFFLINE = "1"
+
+# Architecture
+TORCH_CUDA_ARCH_LIST = "12.1a"
+CUTE_DSL_ARCH = "sm_121a"
+OMP_NUM_THREADS = "4"

+ 72 - 0
recipes/qwen38-flash-next-fp8/recipe.toml

@@ -0,0 +1,72 @@
+# Qwen3.8-Flash-Next-FP8 (SGLang day-0) — 2× DGX Spark / GB10 (sm_121), TP=2.
+#
+# Qwen4-architecture preview: 125B-A6B MoE (512 experts, 10 routed + 1 shared),
+# Gated DeltaNet + Qwen Sparse Attention, 51B n-gram "engram" table, 4B
+# in-checkpoint MTP. FP8 fine-grained (block 128). Text + vision. Native 262K
+# ctx (YaRN to 1M). Model: https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8
+#
+# Engine: SGLang day-0 — the ONLY engine with qwen4_exp today. vLLM support
+# is an open PR (#53896), merged into no GB10 fork image (aidendle94 / eugr /
+# local-inference-lab are all pre-release pins).
+#
+# Image: lmsysorg/sglang:qwen38flashnext — multi-arch incl. arm64 (digest
+# sha256:14ed58251…; re-verify at serve time). Day-0 = boots, not tuned.
+#
+# Memory: 172.8 GiB weights → 86.4 GiB/node. SGLang claims the 51B engram
+# table offloads to host RAM (async prefetch) — if active, the GPU budget
+# shrinks and a larger KV pool / longer ctx is possible.
+#
+# PREREQUISITES:
+#   Weights cached on every node (dgx1/dgx2 ~/.cache/huggingface → NAS):
+#       huggingface-cli download Qwen/Qwen3.8-Flash-Next-FP8
+#
+# REFERENCE:
+#   https://forums.developer.nvidia.com/t/qwen3-8-flash-next/381228
+
+engine = "sglang"
+name = "Qwen3.8-Flash-Next FP8 (SGLang day-0)"
+docker_image = "lmsysorg/sglang:qwen38flashnext"
+model = "Qwen/Qwen3.8-Flash-Next-FP8"
+required_nodes = 2
+tensor_parallel_size = 2
+pipeline_parallel_size = 1
+distributed_backend = "mp"
+shm_size = "32gb"
+
+entrypoint = ["python3", "-m", "sglang.launch_server"]
+
+args = [
+    # Memory — weights ~86.4 GiB of 119.6 GiB/node; the rest goes to KV +
+    # activations. Undervalue to be safe on day-0; raise after measuring.
+    "--mem-fraction-static", "0.80",
+    "--max-running-requests", "10",
+    # GDN (DeltaNet) hybrid state pool
+    "--max-mamba-cache-size", "30",
+    # Attention / KV
+    "--attention-backend", "flashinfer",
+    "--kv-cache-dtype", "fp8_e4m3",
+    "--mamba-ssm-dtype", "bfloat16",
+    "--mamba-full-memory-ratio", "4.21",
+    "--mamba-radix-cache-strategy", "extra_buffer_lazy",
+    # Chunked prefill
+    "--chunked-prefill-size", "8192",
+    # Compile + decode graphs
+    "--enable-torch-compile", "--torch-compile-max-bs", "4",
+    "--cuda-graph-max-bs-decode", "4",
+    "--num-continuous-decode-steps", "2",
+    # Tokenizer / reasoning / tool calling (Qwen3 family)
+    "--reasoning-parser", "qwen3",
+    "--tool-call-parser", "qwen3_coder",
+    # Observability
+    "--enable-metrics",
+    "--enable-cache-report",
+]
+
+[env]
+# Offline — weights must be cached on each node
+HF_HUB_OFFLINE = "1"
+
+# Architecture
+TORCH_CUDA_ARCH_LIST = "12.1a"
+CUTE_DSL_ARCH = "sm_121a"
+OMP_NUM_THREADS = "4"