feat(llm-serving): serve clef-flash on candle-vllm
Adds clef-candle.yaml: clef-flash (hybrid Qwen3_5, 8 attention + 24 GDN layers) on one V100 via candle-vllm, and repoints the clef-serve Service selector at it. The Service name and ClusterIP do not move, so no client changes. Runs on one card because the GDN recurrent state is per-sequence and cannot be sharded the way attention KV can. --kv-fraction 0.30 gives about 66.8K KV tokens, which is ample for a single-shot classifier-style endpoint. The image is candle-vllm:sm70, built by .gitea/workflows/candle-vllm-sm70.yaml on every merge to main. It must be a build containing the GDN conv fix: older images zero the key channel band in causal_conv1d_fwd, starve the delta rule and make every linear-attention layer return zero. That failure is silent - the response is well formed, just wrong. Verified against the reference implementation: token ids 420/420 identical, beta 8647.021 vs 8646.982, delta-rule and gated-norm absmax equal to six decimals, all three head answers agree.
This commit is contained in:
@@ -127,8 +127,11 @@ metadata:
|
||||
labels:
|
||||
app.kubernetes.io/part-of: llm-serving
|
||||
spec:
|
||||
# Points at the candle-vllm implementation (clef-candle.yaml). Switching back
|
||||
# to the reference pytorch server is this line plus that Deployment's replicas;
|
||||
# no client changes, because the Service name and ClusterIP do not move.
|
||||
selector:
|
||||
app: clef-serve
|
||||
app: clef-candle
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
|
||||
Reference in New Issue
Block a user