ollama: activa el backend Vulkan y declara el paso de la iGPU

La GPU nunca se usaba: ollama/ollama:0.20.7 no trae ROCm, asi que
HSA_OVERRIDE_GFX_VERSION/HIP_VISIBLE_DEVICES eran inertes. La imagen si
trae el backend Vulkan y el driver RADV, que cubre las iGPU AMD.

De paso se declara la deriva: todo el paso de dispositivos vivia solo en
el objeto del cluster, no en git, y sobrevivia por el merge de tres vias.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 20:47:52 +00:00
co-authored by Claude Fable 5
parent ee539e572d
commit 2a5717e683
+67 -1
View File
@@ -1,3 +1,16 @@
# Ollama en chemavx-k8, bajo ArgoCD (selfHeal).
#
# 2026-07-22 — DERIVA CORREGIDA. Todo el paso de la iGPU (los 3 hostPath de
# /dev/dri, /dev/kfd y /sys/devices/virtual/kfd, sus montajes, los grupos
# suplementarios 44/109, el securityContext y las 4 variables AMD) estaba puesto
# A MANO en el objeto vivo y NO en este fichero. Sobrevivía sólo por el merge de
# tres vías: `kubectl diff` no lo borraba porque no figura en la
# last-applied-configuration, y ArgoCD lo daba por Synced. Cualquier
# reconstrucción desde git se lo habría llevado en silencio. Ahora está
# declarado: lo que se lee aquí es lo que hay.
#
# Y el motivo de que la GPU no se usara: la imagen no trae ROCm (ver el
# comentario del bloque env). Se activa el backend Vulkan, que sí viene dentro.
---
apiVersion: v1
kind: Namespace
@@ -55,7 +68,7 @@ spec:
until ollama list >/dev/null 2>&1; do
sleep 2
done
echo "Pulling llama3.1:8b..."
echo "Pulling qwen2.5:3b..."
ollama pull qwen2.5:3b
echo "Model ready."
wait $SERVE_PID
@@ -66,19 +79,54 @@ spec:
env:
- name: OLLAMA_MODELS
value: /root/.ollama/models
# El default (131072) reventaba la iGPU con un KV cache enorme.
- name: OLLAMA_NUM_CTX
value: "8192"
- name: OLLAMA_KEEP_ALIVE
value: "-1"
- name: OLLAMA_METRICS
value: "1"
# --- aceleración por la iGPU (Radeon 780M, Hawk Point) ---
# Estas tres son de ROCm y HOY NO HACEN NADA: la imagen
# ollama/ollama:0.20.7 no trae ROCm (en /usr/lib/ollama sólo hay
# cuda_v12, cuda_v13, mlx_cuda_v13, vulkan y los backends de CPU;
# no existe rocBLAS ni hipBLAS). El soporte AMD va en la etiqueta
# aparte con sufijo -rocm. Se dejan porque describen la intención y
# porque volverían a servir si algún día se pasa a esa imagen.
- name: HSA_OVERRIDE_GFX_VERSION
value: "11.0.0" # la gfx1103 de la 780M no está soportada; se hace pasar por gfx1100
- name: HIP_VISIBLE_DEVICES
value: "0"
- name: OLLAMA_GPU
value: "1"
# El camino que SÍ funciona con esta imagen: backend Vulkan
# (experimental desde ollama 0.12.6, pensado para iGPUs AMD/Intel
# donde ROCm no llega). La imagen ya trae libggml-vulkan.so y el
# driver Mesa RADV (radeon_icd.json), así que no hace falta cambiarla.
- name: OLLAMA_VULKAN
value: "1"
resources:
requests:
memory: 4Gi
cpu: "500m"
limits:
memory: 8Gi
securityContext:
privileged: false
allowPrivilegeEscalation: false
capabilities:
add: ["SYS_PTRACE"]
volumeMounts:
- name: ollama-data
mountPath: /root/.ollama
# Paso de la iGPU sin privileged: los dispositivos del kernel amdgpu.
- name: dev-dri
mountPath: /dev/dri
- name: dev-kfd
mountPath: /dev/kfd
- name: sys-kfd
mountPath: /sys/devices/virtual/kfd
readOnly: true
livenessProbe:
httpGet:
path: /api/tags
@@ -93,10 +141,28 @@ spec:
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 15
# 44=video, 109=render en chemavx-k8. Sin estos grupos el proceso no
# puede abrir /dev/kfd ni renderD128 aunque estén montados.
securityContext:
supplementalGroups: [44, 109]
seccompProfile:
type: Unconfined
volumes:
- name: ollama-data
persistentVolumeClaim:
claimName: ollama-models
- name: dev-dri
hostPath:
path: /dev/dri
type: Directory
- name: dev-kfd
hostPath:
path: /dev/kfd
type: CharDevice
- name: sys-kfd
hostPath:
path: /sys/devices/virtual/kfd
type: Directory
---
apiVersion: v1