Files
k3s-cluster/llamacpp/deployment-qwen38-27b.yaml
2026-08-18 18:56:07 +02:00

118 lines
2.6 KiB
YAML

# Qwen3.8-27B with MTP speculative decoding served by llama.cpp.
# The primary and draft GGUFs are downloaded by llama-server into the shared
# persistent llama.cpp cache on the NUCBox Radeon 8060S.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: llamacpp-qwen38-27b
namespace: llamacpp
labels:
app: llamacpp
model: qwen3.8-27b
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: llamacpp
model: qwen3.8-27b
template:
metadata:
labels:
app: llamacpp
model: qwen3.8-27b
spec:
nodeSelector:
kubernetes.io/arch: amd64
hardware: high-memory
containers:
- name: llama-server
image: ghcr.io/ggml-org/llama.cpp:server-vulkan
imagePullPolicy: IfNotPresent
args:
- -hf
- ggml-org/Qwen3.8-27B-GGUF:Q4_K_M
- -hfd
- ggml-org/Qwen3.8-27B-GGUF:Q4_0
- --spec-default
- --spec-type
- draft-mtp
- --ctx-size
- "196608"
- --cache-type-k
- q8_0
- --cache-type-v
- q8_0
- --reasoning-preserve
- --fit
- off
- --agent
- --chat-template-kwargs
- '{"reasoning_effort":"medium"}'
- --alias
- qwen3.8-27b
- --host
- 0.0.0.0
- --port
- "8080"
- --jinja
ports:
- name: http
containerPort: 8080
resources:
requests:
cpu: "1000m"
memory: 2Gi
limits:
cpu: "4000m"
memory: 24Gi
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 6
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 180
periodSeconds: 30
failureThreshold: 5
securityContext:
privileged: true
volumeMounts:
- name: models
mountPath: /root/.cache/llama.cpp
- name: dri
mountPath: /dev/dri
volumes:
- name: models
persistentVolumeClaim:
claimName: llamacpp-models
- name: dri
hostPath:
path: /dev/dri
type: Directory
---
apiVersion: v1
kind: Service
metadata:
name: llamacpp-qwen38-27b
namespace: llamacpp
labels:
app: llamacpp
model: qwen3.8-27b
spec:
type: ClusterIP
selector:
app: llamacpp
model: qwen3.8-27b
ports:
- name: http
port: 80
targetPort: 8080