Skip to content

Commit 8d220a5

Browse files
author
Eric Hartford
committed
Merge remote-tracking branch 'origin/main'
2 parents 0464130 + 470a782 commit 8d220a5

260 files changed

Lines changed: 57173 additions & 846 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎AGENTS.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ behavior:
120120

121121
- Live validation must discover every registry profile compatible with the
122122
current machine. Do not substitute one tensor-parallel size for another.
123+
It covers LLM (`kind: "llm"`) profiles by serving and smoking each one;
124+
video profiles are validated by `perf/ltx25_harness/n6_serve_check.py`
125+
run on a Mac against the real profile.
123126
- Every supported profile must run with its registered DSpark drafter and
124127
registered draft KV configuration. FP8 is the only permitted KV cache
125128
quantization; TurboQuant is prohibited for targets and drafters.
@@ -128,6 +131,26 @@ behavior:
128131
- For vision profiles, test both text and image requests. For text-only
129132
profiles, test text requests.
130133

134+
## Non-LLM generation engines
135+
136+
- SlimServe also hosts non-LLM generation engines. A source declares its
137+
engine with `kind`: `"llm"` (the default, served by vLLM) or `"video"`
138+
(LTX-2.5 audio+video generation on Metal, `slimserve/video/`). The
139+
registry rejects any other kind, and every non-LLM kind must dispatch to
140+
a registered non-vLLM engine; a test enforces both.
141+
- The LLM serving policies (prefix caching, tool calling, thinking,
142+
non-greedy sampling, KV cache dtype, default context, drafters, KV tiers)
143+
apply to `kind: "llm"` sources and are not meaningful for video sources.
144+
The LLM policy tests assert a non-zero count of LLM profiles so a mass
145+
exemption is visible.
146+
- Video profiles still follow every other rule: one record per platform,
147+
pinned revisions for every download, no deployment configuration in the
148+
repo, and notebook entries with raw-artifact evidence for every measured
149+
claim.
150+
- The LTX-2.5 prompt enhancer (Gemma) decodes greedily because the upstream
151+
pipeline does; that is a model-level exception for the enhancer, not a
152+
precedent for any chat model.
153+
131154
## Commit authorship
132155

133156
- AI is never an author. Never attribute authorship to an AI agent: no

‎CLAUDE.md‎

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,9 @@ behavior:
160160

161161
- Live validation must discover every registry profile compatible with the
162162
current machine. Do not substitute one tensor-parallel size for another.
163+
It covers LLM (`kind: "llm"`) profiles by serving and smoking each one;
164+
video profiles are validated by `perf/ltx25_harness/n6_serve_check.py`
165+
run on a Mac against the real profile.
163166
- Every supported profile must run with its registered DSpark drafter and
164167
registered draft KV configuration. FP8 is the only permitted KV cache
165168
quantization; TurboQuant is prohibited for targets and drafters.
@@ -168,6 +171,26 @@ behavior:
168171
- For vision profiles, test both text and image requests. For text-only
169172
profiles, test text requests.
170173

174+
## Non-LLM generation engines
175+
176+
- SlimServe also hosts non-LLM generation engines. A source declares its
177+
engine with `kind`: `"llm"` (the default, served by vLLM) or `"video"`
178+
(LTX-2.5 audio+video generation on Metal, `slimserve/video/`). The
179+
registry rejects any other kind, and every non-LLM kind must dispatch to
180+
a registered non-vLLM engine; a test enforces both.
181+
- The LLM serving policies (prefix caching, tool calling, thinking,
182+
non-greedy sampling, KV cache dtype, default context, drafters, KV tiers)
183+
apply to `kind: "llm"` sources and are not meaningful for video sources.
184+
The LLM policy tests assert a non-zero count of LLM profiles so a mass
185+
exemption is visible.
186+
- Video profiles still follow every other rule: one record per platform,
187+
pinned revisions for every download, no deployment configuration in the
188+
repo, and notebook entries with raw-artifact evidence for every measured
189+
claim.
190+
- The LTX-2.5 prompt enhancer (Gemma) decodes greedily because the upstream
191+
pipeline does; that is a model-level exception for the enhancer, not a
192+
precedent for any chat model.
193+
171194
## Commit authorship
172195

173196
- AI is never an author. Never attribute authorship to an AI agent: no
@@ -185,8 +208,9 @@ behavior:
185208
calling, and thinking enabled, and NEVER uses greedy sampling. These are
186209
enforced as registry-level `_SERVING_DEFAULTS` plus explicit per-profile
187210
values and a registry test. Prefix caching admits NO opt-out: every
188-
platform record states `enable_prefix_caching: true` and the registry
189-
test rejects anything else (operator directive 2026-08-30). For the
211+
LLM (`kind: "llm"`) platform record states `enable_prefix_caching: true`
212+
and the registry test rejects anything else (operator directive
213+
2026-08-30). For the
190214
others, a profile may opt out only for a model-level impossibility,
191215
stated in a note.
192216
- Never rely on engine-layer defaults for these: vLLM silently defaults

‎CMakeLists.txt‎

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,17 @@ if(VLLM_GPU_LANG STREQUAL "CUDA" OR VLLM_GPU_LANG STREQUAL "HIP")
611611
else()
612612
cuda_archs_loose_intersection(MARLIN_FP8_ARCHS "8.9;12.0a;12.1a" "${CUDA_ARCHS}")
613613
endif()
614-
# marlin arches for other files
615-
cuda_archs_loose_intersection(MARLIN_OTHER_ARCHS "7.5;8.0+PTX" "${CUDA_ARCHS}")
614+
# marlin arches for other files (marlin.cu, the int4/fp8 preprocess and the
615+
# gptq/awq repack kernels). These must carry SASS for every family the
616+
# template kernels above are built for: with only 8.0+PTX an SM12x GPU has
617+
# to JIT the compute_80 PTX at first launch, which fails with
618+
# cudaErrorUnsupportedPtxVersion whenever the toolkit is newer than the
619+
# driver (CUDA 13.3 build on an R595/13.2 driver).
620+
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 13.0)
621+
cuda_archs_loose_intersection(MARLIN_OTHER_ARCHS "7.5;8.0+PTX;12.0f" "${CUDA_ARCHS}")
622+
else()
623+
cuda_archs_loose_intersection(MARLIN_OTHER_ARCHS "7.5;8.0+PTX;12.0a;12.1a" "${CUDA_ARCHS}")
624+
endif()
616625

617626
if (MARLIN_OTHER_ARCHS)
618627

@@ -1098,7 +1107,13 @@ if(VLLM_GPU_LANG STREQUAL "CUDA" OR VLLM_GPU_LANG STREQUAL "HIP")
10981107
endif()
10991108

11001109
# Hadacore kernels
1101-
cuda_archs_loose_intersection(HADACORE_ARCHS "8.0+PTX;9.0+PTX" "${CUDA_ARCHS}")
1110+
# SM12x gets SASS so it does not depend on JIT of the 9.0 PTX (see
1111+
# MARLIN_OTHER_ARCHS).
1112+
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 13.0)
1113+
cuda_archs_loose_intersection(HADACORE_ARCHS "8.0+PTX;9.0+PTX;12.0f" "${CUDA_ARCHS}")
1114+
else()
1115+
cuda_archs_loose_intersection(HADACORE_ARCHS "8.0+PTX;9.0+PTX;12.0a;12.1a" "${CUDA_ARCHS}")
1116+
endif()
11021117
if(HADACORE_ARCHS)
11031118
set(HADACORE_SRCS "csrc/libtorch_stable/quantization/hadamard/hadacore/hadamard_transform_cuda.cu")
11041119
set_gencode_flags_for_srcs(
@@ -1225,8 +1240,13 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
12251240
else()
12261241
cuda_archs_loose_intersection(MARLIN_MOE_FP8_ARCHS "8.9;12.0a;12.1a" "${CUDA_ARCHS}")
12271242
endif()
1228-
# moe marlin arches for other files
1229-
cuda_archs_loose_intersection(MARLIN_MOE_OTHER_ARCHS "7.5;8.0+PTX" "${CUDA_ARCHS}")
1243+
# moe marlin arches for other files (ops.cu: dispatch and permute_cols).
1244+
# SASS for SM12x, not just 8.0 PTX, for the same reason as MARLIN_OTHER_ARCHS.
1245+
if(${CMAKE_CUDA_COMPILER_VERSION} VERSION_GREATER_EQUAL 13.0)
1246+
cuda_archs_loose_intersection(MARLIN_MOE_OTHER_ARCHS "7.5;8.0+PTX;12.0f" "${CUDA_ARCHS}")
1247+
else()
1248+
cuda_archs_loose_intersection(MARLIN_MOE_OTHER_ARCHS "7.5;8.0+PTX;12.0a;12.1a" "${CUDA_ARCHS}")
1249+
endif()
12301250
if (MARLIN_MOE_OTHER_ARCHS)
12311251

12321252
#

0 commit comments

Comments
 (0)