Cuando se ejecutan modelos grandes localmente, el problema más confuso es: la máquina obviamente tiene una tarjeta gráfica, pero Ollama todavía consume principalmente CPU y la velocidad es ridículamente lenta.
Permítanme hablar primero de la conclusión. Este tipo de problema no suele tener una única causa. Las categorías más comunes son:
OllamaNo se reconoce ninguna GPU disponible- El controlador y el entorno
ROCmoCUDAno están instalados correctamente. OllamaLas variables de entorno correctas no se heredan cuando se inicia el servicio.- El modelo es demasiado grande y en realidad se ha devuelto a carga mixta
CPUoCPU/GPU. - Las plataformas AMD tienen problemas de compatibilidad adicionales, como una versión incorrecta de
ROCm, un nombre en clavegfxo una configuración incorrecta de visibilidad del dispositivo.
A continuación se enumeran los pedidos que ahorran más tiempo. 1. Primero confirme si “la GPU realmente no se usa”
La forma más directa es mirar:
|
|
Fíjate en la columna PROCESSOR:
100% GPU: todos los pesos están cargados en la GPU.100% CPU: los pesos están en la memoria del sistema.- Un valor como
48%/52% CPU/GPU: parte del modelo está offloaded a la GPU y el resto permanece en RAM.
Estos porcentajes describen dónde está cargado el modelo, no el uso instantáneo de la GPU. La utilización puede caer entre generaciones aunque los pesos sigan en la VRAM.
Si lo que ve es 100% CPU, debería concentrarse en verificar el entorno y la configuración del servicio más adelante.
Si ve una carga mixta, no es necesariamente que “la tarjeta gráfica no funciona”, es más probable que no haya suficiente VRAM. 2. Primero elimine el malentendido más común: el modelo no se puede cargar en la VRAM
Mucha gente piensa que siempre que haya una GPU instalada, Ollama podrá realizar una inferencia completa de la tarjeta gráfica. En realidad no.
Si el modelo es demasiado grande, el contexto es demasiado largo o hay otros modelos en la máquina que ocupan VRAM, es probable que Ollama recurra a:
- Parte GPU + Parte CPU
- Directo
100% CPU
En este momento, puedes hacer primero las dos verificaciones más simples:
- Cambie a un modelo más pequeño para realizar pruebas.
Por ejemplo, utilice primero modelos pequeños como
4By7B, en lugar de ejecutar una mayor cantidad de parámetros desde el principio. - Descargue otros modelos cargados y vuelva a intentarlo.
Primero mire
ollama pspara asegurarse de que no haya otros modelos que ocupen la VRAM.
Si un modelo pequeño puede funcionar con la GPU pero un modelo grande no, el problema a menudo no es el controlador sino la capacidad de la VRAM. 3. Compruebe si el controlador de la tarjeta gráfica y el entorno subyacente están disponibles
Si incluso los modelos pequeños solo pueden ejecutar CPU, el siguiente paso es observar el entorno subyacente. Dirección de NVIDIA
Primero asegúrese de que el controlador sea normal y que el sistema pueda ver la tarjeta gráfica. Los métodos de inspección comunes incluyen:
|
|
Si se informan errores aquí, Ollama es básicamente imposible usar la GPU normalmente. Dirección AMD / ROCm
Si es AMD GPU, especialmente en el entorno ROCm, los puntos clave son:
|
|
Si estas herramientas no pueden enumerar el dispositivo normalmente, significa que el problema aún existe antes de Ollama. No continúe tirando la capa de aplicación.
Para AMD, la pregunta más común no es “¿Están instalados los controladores?” pero:
- La versión
ROCmno coincide con la versión del sistema. - El soporte actual de la arquitectura GPU está incompleto
- Aunque el dispositivo existe, el entorno operativo no está correctamente expuesto a Ollama 4. Reinicia el servicio de Ollama, no reinicies simplemente la terminal
Este es un pozo de muy alta frecuencia.
Después de que muchas personas instalan el controlador, cambian las variables de entorno y completan ROCm, simplemente vuelven a abrir una terminal y continúan directamente con ollama run. Pero si Ollama se ejecuta como servicio en segundo plano, es probable que todavía esté utilizando el entorno anterior.
Entonces, un enfoque más estable es:
- Reinicie completamente el servicio
Ollama - Reinicie el sistema directamente si es necesario.
Si está ejecutando como un servicio en Linux, normalmente deberá confirmar que el proceso del servicio se haya reiniciado en lugar de utilizar el proceso anterior. 5. Compruebe si las variables de entorno del servicio realmente se pasan
Este paso es especialmente importante en el entorno AMD ROCm.
Algunas máquinas no tienen problemas para ejecutar comandos manualmente en la terminal, pero el servicio Ollama todavía solo ejecuta CPU. La razón es que el proceso de servicio no obtiene las variables que usted establece en el shell.
Las variables comunes a observar incluyen:
|
|
Entre ellos:
ROCR_VISIBLE_DEVICESse utiliza para limitar o especificar qué GPU puede verROCm.HSA_OVERRIDE_GFX_VERSIONComún en algunos problemas de compatibilidad de plataformas AMD
Si solo utiliza temporalmente las variables export en el terminal actual, pero Systemd, el servicio de escritorio en segundo plano u otro proceso demonio inicia Ollama, es posible que estas variables no surtan efecto.
En otras palabras, sólo porque “parece haber sido configurado” en el terminal no significa que realmente se haya obtenido Ollama. 6. La plataforma AMD se centra en la compatibilidad con ROCm
A juzgar por la información de la página pública, el tema del vídeo correspondiente a este problema se encuentra en las líneas AMD Max+ 395, strix halo y AMD ROCm.
En este tipo de entorno, Ollama no utiliza la GPU y, a menudo, depende más de la coincidencia de versiones que la plataforma NVIDIA.
Puede priorizar los siguientes elementos:
- ¿La versión
ROCmes adecuada para el sistema y la tarjeta gráfica actuales? - Si la GPU actual pertenece al rango de arquitectura que
ROCmadmite mejor - ¿Necesita complementar
HSA_OVERRIDE_GFX_VERSION? - ¿Es la versión anterior de
Ollamao la versión anterior de la biblioteca de razonamiento subyacente la que causa problemas de compatibilidad?
Si ha confirmado que rocminfo es normal y el sistema puede reconocer la GPU, pero Ollama aún solo ejecuta CPU, entonces existe una alta probabilidad de que necesite volver a la combinación de versiones y volver a verificar en lugar de continuar ajustando ciegamente los parámetros del modelo. 7. Docker, WSL o entornos remotos deben verificar adicionalmente el mapeo de dispositivos
Si no está ejecutando directamente en bare metal, sino en los siguientes entornos:
-Adosador -WSL
- Contenedor remoto -Entorno virtualizado
Luego debemos observar una capa más: si el dispositivo GPU está realmente expuesto.
Los fenómenos típicos son:
- El anfitrión puede ver la GPU.
Ollamaen el contenedor solo puede ejecutarCPU
En este momento, primero debe confirmar que el problema no es el propio Ollama, sino que el contenedor o subsistema no tiene acceso a la GPU en absoluto. 8. Lea el registro al final en lugar de adivinar al principio.
Si ha verificado todo antes, la forma más efectiva no es continuar reinstalando repetidamente, sino mirar directamente el registro de inicio Ollama y el registro de ejecución.
Centrarse en dos tipos de información:
- ¿Se reconoce la GPU?
- ¿Hay algún error como controlador, carga de biblioteca, falla de inicialización del dispositivo, etc.?
Siempre que aparezca claramente en el registro algo como “GPU compatible no encontrada” o “Error en la inicialización de ROCm/CUDA”, la dirección de solución de problemas será mucho más clara de inmediato. Leer registros reales por plataforma
ventanas
Salga completamente de Ollama de la bandeja antes de iniciarlo en modo de depuración:
El registro de la versión de instalación
|
|
generalmente se encuentra en:
|
|
puede abrir el directorio directamente:
|
|
Sistema Linux
|
|
Cuando falla el descubrimiento de dispositivos NVIDIA, verifique nuevamente:
Los errores típicos de CUDA enumerados en el documento oficial de solución de problemas
|
|
incluyen errores no inicializados, dispositivo no disponible, ningún dispositivo y errores desconocidos. Cuando estos mensajes aparecen en el registro, la dirección es el controlador, el módulo UVM o el tiempo de ejecución del contenedor, no la palabra del mensaje del modelo. acoplador
Primero demuestre que la GPU se puede ver cuando el contenedor se está ejecutando:
|
|
Cuando este comando falla, el contenedor Ollama no puede usar la GPU NVIDIA. Repare la configuración de NVIDIA Container Toolkit o Docker antes de reiniciar el contenedor Ollama. LinuxAMD
Verifique si los usuarios del servicio Ollama pueden acceder a /dev/kfd y /dev/dri:
|
|
Cuando necesite depurar el proceso de descubrimiento de ROCm:
|
|
Si el registro muestra un tiempo de espera de descubrimiento de GPU y el sistema todavía usa el controlador ROCm 6.x o anterior, debe actualizar a un controlador ROCm 7 compatible y reiniciar de acuerdo con la documentación de hardware actual de Ollama. No utilice HSA_OVERRIDE_GFX_VERSION para enmascarar un error claro de versión del controlador. Aceptación después de la reparación.
Complete al menos una verificación de arranque en frío después de la reparación:
|
|
Observe simultáneamente nvidia-smi, rocm-smi o el monitor GPU del sistema. La conclusión de aceptación se registra según la columna PROCESSOR de ollama ps:
100% GPU: El modelo está completamente cargado en la GPU;100% CPU: Todavía usando completamente la memoria del sistema;CPU/GPU: Carga mixta, por lo general es necesario continuar juzgando si se debe a una capacidad de VRAM insuficiente.
Finalmente, verifique el registro de servicio nuevamente para confirmar que no falló ningún descubrimiento de nuevo dispositivo. Ver un aumento momentáneo en la utilización de la GPU no es suficiente para demostrar que el modelo siempre está en la GPU. Recuperación y reversión
Si Ollama no puede comenzar después de modificar las variables de entorno, primero deshaga las variables agregadas en esta ronda y reinicie el servicio. No modifique el controlador, el mapeo del contenedor, la versión de ROCm y la configuración de Ollama al mismo tiempo; de lo contrario, será imposible determinar qué cambio tendrá efecto.
Se recomienda realizar solo un cambio en cada ronda y guardar tres pruebas: registro previo a la modificación, comando de modificación y ollama ps modificado. Antes de actualizar el controlador, cree un punto de restauración del sistema o conserve el paquete de instalación del controlador enrollable. Comprobando orden
Si sólo quieres recordar el camino más corto, puedes hacerlo en este orden:
ollama psCompruebe si se trata deGPU,CPUo una carga mixta.- Cambie a un modelo más pequeño para descartar VRAM insuficiente.
- Utilice
nvidia-smi,rocminfo,rocm-smipara confirmar primero que el entorno subyacente es normal. - Reinicie completamente el servicio
Ollama. - Verifique las variables de entorno del servicio, especialmente
ROCR_VISIBLE_DEVICESyHSA_OVERRIDE_GFX_VERSIONde AMD. - Si es Docker/WSL, verifique nuevamente la asignación del dispositivo.