From 2a5717e6833ea086e9acf94c70029fe4898d3ea2 Mon Sep 17 00:00:00 2001 From: chemavx Date: Wed, 22 Jul 2026 20:47:52 +0000 Subject: [PATCH] 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 --- ollama/ollama.yaml | 68 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/ollama/ollama.yaml b/ollama/ollama.yaml index 2bf583d..2b2a01f 100644 --- a/ollama/ollama.yaml +++ b/ollama/ollama.yaml @@ -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