diff --git a/k8s/apps/llm-serving/clef-candle.yaml b/k8s/apps/llm-serving/clef-candle.yaml index 248bccb..934fe08 100644 --- a/k8s/apps/llm-serving/clef-candle.yaml +++ b/k8s/apps/llm-serving/clef-candle.yaml @@ -37,7 +37,19 @@ spec: # and makes every linear-attention layer return zero. The symptom is # a well-formed /v1/systemone response with wrong answers, not an error. image: forgejo.riotpiao.com/riotpiao-poimen/candle-vllm:sm70 - command: ["/usr/local/bin/candle-vllm"] + # :sm70 is a moving tag. Default IfNotPresent keeps a cached copy and a + # rebuilt image never reaches the pod, so a merged fix looks like it did + # not land. Always forces the pull on every pod start. + imagePullPolicy: Always + # Runs the fixed binary from the models PVC, not the one in the image. + # The published :sm70 predates the /v1/systemone route and the GDN conv + # fix (candle-vllm f3c00b2 is merged but CI has not republished the tag), + # so the in-image binary 404s on the route. The PVC copy at + # /mnt/models/bin/candle-vllm contains both fixes. + # + # RETIRE THIS once CI publishes a :sm70 built from f3c00b2: change the + # command back to /usr/local/bin/candle-vllm and delete the PVC copy. + command: ["/mnt/models/bin/candle-vllm"] # clef-flash is a hybrid Qwen3_5 model: 8 full-attention layers plus 24 # GDN layers that carry per-sequence recurrent state. It runs on ONE # card because the state is not shardable the way attention KV is. diff --git a/k8s/apps/llm-serving/clef-serve.yaml b/k8s/apps/llm-serving/clef-serve.yaml index a8b820f..bd37506 100644 --- a/k8s/apps/llm-serving/clef-serve.yaml +++ b/k8s/apps/llm-serving/clef-serve.yaml @@ -43,7 +43,7 @@ spec: # Cold start is about four minutes: the pod pip-installs on every boot because the # torch base image cannot be pushed to the registry (Cloudflare answers 413 above # 100 MB per layer). startupProbe allows for that. - replicas: 1 + replicas: 0 # Recreate, not RollingUpdate. Every GPU card is allocated, so a rolling update leaves # the new pod Pending forever waiting for a card the old pod still holds. strategy: