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:
Ollamano está detectando ninguna GPU utilizable- El driver, el entorno
ROCmoCUDAno están configurados correctamente - El servicio
Ollamase inició sin las variables de entorno adecuadas - El modelo es demasiado grande y ha recurrido a la
CPUo tiene una carga mixta deCPU/GPU - En plataformas AMD, puede haber problemas de compatibilidad adicionales, como una incompatibilidad de versión de
ROCm, ajustesgfx, 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:
|
|
Concéntrate en la columna PROCESSOR.
100% GPU: el modelo se está ejecutando completamente en la GPU100% 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% CPUcompleto
En este punto, las dos pruebas más sencillas son:
- Intentar un modelo más pequeño primero
Por ejemplo, pruébalo con un modelo
4Bo7Bantes de saltar directamente a modelos mucho más grandes. - Descargar otros modelos activos y probar de nuevo
Ejecuta
ollama psprimero 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:
|
|
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:
|
|
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
ROCmno 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:
|
|
Específicamente:
ROCR_VISIBLE_DEVICESlimita o selecciona qué GPUs puede verROCmHSA_OVERRIDE_GFX_VERSIONse 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:
- Si la versión instalada de
ROCmes compatible con el OS y la GPU actuales - Si la GPU pertenece a una arquitectura con soporte sólido de
ROCm - Si necesitas establecer
HSA_OVERRIDE_GFX_VERSION - Si una versión anterior de
Ollamao 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
Ollamadentro del contenedor o subsistema sigue usando soloCPU
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:
- Ejecuta
ollama psy confirma si está usandoGPU,CPUo carga mixta. - Intenta con un modelo más pequeño para descartar límites de VRAM.
- Utiliza
nvidia-smi,rocminfoyrocm-smipara verificar primero el entorno de bajo nivel. - Reinicia completamente el servicio
Ollama. - Revisa las variables de entorno del servicio, especialmente
ROCR_VISIBLE_DEVICESyHSA_OVERRIDE_GFX_VERSIONen AMD. - Si estás en Docker o WSL, verifica el mapeo de dispositivos.
- 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
CPUo 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