C贸mo solucionar que Ollama use CPU en lugar de GPU

Gu铆a pr谩ctica para diagnosticar Ollama cuando se ejecuta en CPU en lugar de GPU: detecci贸n de GPU, configuraci贸n ROCm o CUDA, reinicio del servicio, l铆mites de VRAM y problemas comunes de compatibilidad AMD.

Al ejecutar LLMs locales, uno de los problemas más frustrantes es este: tu máquina claramente tiene una GPU, sin embargo, Ollama sigue apoyándose en gran medida en la CPU, y el rendimiento es dolorosamente lento.

La versión corta es que esto generalmente no se debe a un único problema. Las causas más comunes son:

  • Ollama no está detectando ninguna GPU utilizable
  • El driver, el entorno ROCm o CUDA no están configurados correctamente
  • El servicio Ollama se inició sin las variables de entorno adecuadas
  • El modelo es demasiado grande y ha recurrido a la CPU o tiene una carga mixta de CPU/GPU
  • En plataformas AMD, puede haber problemas de compatibilidad adicionales, como una incompatibilidad de versión de ROCm, ajustes gfx, o problemas de visibilidad del dispositivo

La forma más rápida de solucionar el problema es seguir las comprobaciones a continuación en orden.

false

1. Primero, confirma si Ollama realmente no está usando la GPU

La comprobación más directa es:

1
ollama ps

Concéntrate en la columna PROCESSOR.

  • 100% GPU: el modelo se está ejecutando completamente en la GPU
  • 100% CPU: la GPU no se está usando en absoluto
  • Resultados como 48%/52% CPU/GPU: parte del modelo está en VRAM, y parte se ha volcado a la memoria del sistema

Si ves 100% CPU, el siguiente paso es centrarse en la configuración del entorno y del servicio. Si ves una carga mixta, eso no significa necesariamente que la GPU esté rota. En muchos casos, simplemente significa que la VRAM no es suficiente.

false

2. Descartar primero el malentendido más común: el modelo no cabe en VRAM

Mucha gente asume que una vez que se instala una GPU, Ollama siempre funcionará completamente en ella. Eso no es así.

Si el modelo es demasiado grande, el contexto es demasiado largo, o algún otro modelo cargado ya está ocupando VRAM, Ollama puede recurrir a:

  • GPU parcial + CPU parcial
  • 100% CPU completo

En este punto, las dos pruebas más sencillas son:

  1. Intentar un modelo más pequeño primero Por ejemplo, pruébalo con un modelo 4B o 7B antes de saltar directamente a modelos mucho más grandes.
  2. Descargar otros modelos activos y probar de nuevo Ejecuta ollama ps primero y asegúrate de que nada más esté ocupando VRAM.

Si los modelos más pequeños usan la GPU, pero los más grandes no, el problema real suele ser la capacidad de VRAM, y no el driver.

false

3. Comprobar si el driver de la GPU y el runtime de bajo nivel están funcionando realmente

Si incluso modelos pequeños se ejecutan solo en CPU, el siguiente paso es revisar el entorno subyacente.

NVIDIA

Primero, confirma que el driver está funcionando y que el sistema puede ver la GPU. Una comprobación común es:

1
nvidia-smi

Si esto ya falla, es muy poco probable que Ollama use la GPU correctamente.

AMD / ROCm

Si estás usando una AMD GPU, especialmente con ROCm, empieza con:

1
2
rocminfo
rocm-smi

Si estas herramientas no pueden listar el dispositivo correctamente, el problema sigue estando por debajo de Ollama, por lo que no tiene sentido depurar la capa de la aplicación todavía.

En AMD, el problema más común no es simplemente ¿está instalado el driver?, sino más bien:

  • La versión de ROCm no coincide con la versión del OS
  • La arquitectura actual de la GPU tiene soporte incompleto
  • El dispositivo existe, pero el runtime no se está exponiendo correctamente a Ollama

false

4. Reinicia el servicio de Ollama, no solo tu terminal

Esta es una trampa muy común.

Muchas personas instalan drivers, cambian variables de entorno, arreglan ROCm, y luego simplemente abren una nueva terminal y continúan con ollama run. Pero si Ollama se está ejecutando como un servicio en segundo plano, aún puede estar usando el entorno antiguo.

Por lo tanto, el enfoque más seguro es:

  • Reiniciar completamente el servicio Ollama
  • Reiniciar la máquina si es necesario

Si lo estás ejecutando como un servicio en Linux, asegúrate de que el proceso del servicio fue realmente reiniciado en lugar de reutilizar el antiguo.

false

5. Comprobar si las variables de entorno están llegando realmente al servicio

Esto es especialmente importante en sistemas AMD ROCm.

Algunas máquinas funcionan bien cuando se ejecutan comandos manualmente en un shell, pero el servicio Ollama sigue usando solo CPU. En ese caso, la razón habitual es que el proceso del servicio nunca recibió las variables que estableciste en tu shell.

Las variables comunes a revisar incluyen:

1
2
ROCR_VISIBLE_DEVICES
HSA_OVERRIDE_GFX_VERSION

Específicamente:

  • ROCR_VISIBLE_DEVICES limita o selecciona qué GPUs puede ver ROCm
  • HSA_OVERRIDE_GFX_VERSION se usa a menudo como solución de compatibilidad en algunas plataformas AMD

Si solo exportas estas variables en la terminal actual, pero Ollama es iniciado por systemd, un servicio de fondo de escritorio u otro demonio, es posible que no surtan efecto.

En otras palabras, que “parece estar establecido en mi terminal” no significa que Ollama lo esté usando realmente.

false

6. En plataformas AMD, céntrate en la compatibilidad de ROCm

Según los metadatos de la página pública, el video original sobre este tema está vinculado a AMD Max+ 395, strix halo, y AMD ROCm. En configuraciones como estas, que Ollama no logre usar la GPU a menudo depende más de la coincidencia de versiones que de los sistemas NVIDIA.

Empieza revisando lo siguiente:

  1. Si la versión instalada de ROCm es compatible con el OS y la GPU actuales
  2. Si la GPU pertenece a una arquitectura con soporte sólido de ROCm
  3. Si necesitas establecer HSA_OVERRIDE_GFX_VERSION
  4. Si una versión anterior de Ollama o un runtime de inferencia antiguo está causando problemas de compatibilidad

Si rocminfo funciona y la GPU es visible para el sistema, pero Ollama sigue ejecutándose solo en CPU, el problema a menudo radica en la combinación de versiones en lugar de en los parámetros del modelo.

false

7. En Docker, WSL o entornos remotos, comprueba también el mapeo de dispositivos

Si no estás ejecutando en hardware físico (bare metal) sino dentro de:

  • Docker
  • WSL
  • Contenedores remotos (Remote containers)
  • Entornos virtualizados

entonces necesitas comprobar una capa más: si el dispositivo GPU realmente se está exponiendo dentro de ese entorno.

Un síntoma típico se ve así:

  • La máquina anfitriona (host machine) puede ver la GPU
  • Ollama dentro del contenedor o subsistema sigue usando solo CPU

En ese caso, el problema puede no ser Ollama en sí. El contenedor o subsistema simplemente puede no tener acceso a la GPU.

false

8. Revisar los registros al final, pero revisarlos por la razón correcta

Si ya has pasado por los pasos anteriores, el siguiente movimiento más efectivo no es reinstalar sin parar, sino mirar directamente los registros de inicio y tiempo de ejecución de Ollama.

Concéntrate en dos tipos de mensajes:

  • Si se detectó una GPU
  • Si hay errores de controlador, carga de bibliotecas o inicialización de dispositivos

Si los registros dicen claramente algo como “no compatible GPU found” o “failed to initialize ROCm/CUDA”, la dirección de la solución de problemas se vuelve mucho más clara de inmediato.

false

Orden de Solución de Problemas

Si solo quieres el camino más corto, usa este orden:

  1. Ejecuta ollama ps y confirma si está usando GPU, CPU o carga mixta.
  2. Intenta con un modelo más pequeño para descartar límites de VRAM.
  3. Utiliza nvidia-smi, rocminfo y rocm-smi para verificar primero el entorno de bajo nivel.
  4. Reinicia completamente el servicio Ollama.
  5. Revisa las variables de entorno del servicio, especialmente ROCR_VISIBLE_DEVICES y HSA_OVERRIDE_GFX_VERSION en AMD.
  6. Si estás en Docker o WSL, verifica el mapeo de dispositivos.
  7. Finalmente, inspecciona los logs para encontrar el error exacto.

false

Conclusión

Cuando Ollama utiliza CPU en lugar de GPU, la causa raíz generalmente cae en uno de tres grupos:

  • La GPU no está siendo detectada en absoluto
  • La GPU es detectable, pero el entorno de ejecución no está alcanzando a Ollama
  • La GPU está funcionando, pero el modelo es demasiado grande y retrocede a CPU o memoria mixta

Una vez que se separan esos tres casos, la solución de problemas se vuelve mucho más rápida. Si estás en una plataforma AMD, presta especial atención a la coincidencia de versiones de ROCm, la visibilidad del dispositivo y las variables de compatibilidad, en lugar de centrarte solo en el comando Ollama en sí.

Original video: https://www.bilibili.com/video/BV1cHoYBqE8k/ false

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy