Pārlūkot izejas kodu

glm53-full-tp4-gr8: first-class gr8-engine recipe (engine=gr8, TP=4 switched, --tp/--peers generated, fixed API :8100)

Alexander Korolev 1 nedēļu atpakaļ
vecāks
revīzija
541c5f6dc4
1 mainītis faili ar 48 papildinājumiem un 0 dzēšanām
  1. 48 0
      recipes/glm53-full-tp4-gr8/recipe.toml

+ 48 - 0
recipes/glm53-full-tp4-gr8/recipe.toml

@@ -0,0 +1,48 @@
+# GLM-5.3 (full) on 4x DGX Spark — the gr8 engine lane.
+#
+# gr8 (github.com/kindlingai/gr8) is a from-scratch CUDA inference engine for
+# the FULL GLM-5.3 (256-expert MoE, MLA + sparse indexer, one MTP layer) on
+# 3/4/6 Sparks, tensor-parallel across all of them. No vLLM/PyTorch/NCCL at
+# serve time: each box runs one `g6m4` process, ranks talk over RoCE v2, and an
+# OpenAI-compatible API runs on the first box (port 8100).
+#
+# First-class `engine = "gr8"`: the launcher generates the per-node
+# `gr8 glm53 up --tp <N> --peers <mgmt-LAN-ips>` (each rank finds itself in
+# --peers), passes the model via --model, and skips --host/--port (gr8's API
+# port is fixed at 8100). Readiness is the uniform /v1/models probe on :8100.
+#
+# Image: ghcr.io/kindlingai/gr8 (CI-published; TP is a runtime --tp flag, one
+# image for all shapes). No docker_image_dir — prebuilt external image.
+#
+# Prereqs (gr8 README): a RoCE v2 2-rail fabric (the switch clusters have it;
+# `--shape ring` runs switchless at TP3/4), TCP 7340/7341 open on the LAN,
+# ~90 GB disk/box, and proactive memory compaction OFF on every box (a rank
+# fills the box to ~2 GB under its limit; kernel compaction bursts delay every
+# collective). The sysctl is a before_serve host hook below.
+#
+# The DFlash2 drafter (incoai/GLM-5.3-DFlash2, CC BY-NC-ND) is TP=4-only (its 8
+# KV heads don't split 3/6 ways); each box downloads + converts its own rank.
+
+engine = "gr8"
+name = "GLM-5.3 full (gr8 engine, TP=4 switched)"
+docker_image = "ghcr.io/kindlingai/gr8"
+entrypoint = ["/opt/gr8/gr8", "glm53", "up"]
+# gr8 fetches its own per-rank slice into --model-cache (below); the model is
+# passed via --model, not the HF cache mount.
+model = "kindlingai/glm-5.3-exlr8-k2-k3-k4"
+parent_model = "ZhipuAI/GLM-5.3"
+port = 8100
+required_nodes = 4
+tensor_parallel_size = 4
+distributed_backend = "mp"
+# --tp and --peers are generated by the gr8 driver; --model comes from `model`.
+args = [
+    "--model-cache", "/opt/gr8/cache",
+    "--drafter", "https://huggingface.co/incoai/GLM-5.3-DFlash2",
+]
+
+# gr8 requires proactive memory compaction off on every box (holds across
+# reboots; idempotent). See gr8 README "What you need".
+before_serve = [
+    { command = "sudo sysctl -w vm.compaction_proactiveness=0", on_failure = "warn" },
+]