Por fin luego de mucho luchar hemos encontrado la solución de este asunto que ciertos de nuestros lectores de esta web presentan. Si quieres compartir algo más no dudes en dejar tu comentario.
Solución:
Su tarjeta gráfica no es compatible con CUDA 9.0.
Como he visto muchas preguntas que se refieren a problemas como este, estoy escribiendo una respuesta amplia sobre cómo verificar si su sistema es compatible con CUDA, específicamente dirigido al uso de PyTorch con soporte CUDA. En la última sección de esta respuesta se describen varias opciones que dependen de las circunstancias para resolver problemas.
Los requisitos del sistema para utilizar PyTorch con CUDA son los siguientes:
- Su tarjeta gráfica debe admitir la versión requerida de CUDA
- Tu tarjeta gráfica conductor debe ser compatible con la versión requerida de CUDA
- Los binarios de PyTorch deben construirse con soporte para la capacidad de cómputo de su tarjeta gráfica.
Nota: Si instala binarios preconstruidos (usando pip o conda) entonces lo hace no necesita instalar el kit de herramientas CUDA o el tiempo de ejecución en su sistema antes de instalar PyTorch con soporte CUDA. Esto se debe a que PyTorch, a menos que se compile desde la fuente, siempre se entrega con una copia de la biblioteca CUDA.
1. Cómo verificar si su GPU / tarjeta gráfica es compatible con una versión de CUDA en particular
Primero, identifique el modelo de su tarjeta gráfica.
Antes de seguir adelante, asegúrese de tener una tarjeta gráfica NVidia. Las tarjetas gráficas AMD e Intel no son compatibles con CUDA.
NVidia no hace un gran trabajo al proporcionar información de compatibilidad CUDA en una sola ubicación. El mejor recurso es probablemente esta sección de la página de Wikipedia de CUDA. Para determinar qué versiones de CUDA son compatibles
- Ubique el modelo de su tarjeta gráfica en la tabla grande y tome nota de la versión de capacidad de cómputo. Por ejemplo, la capacidad de cómputo de la GeForce 820M es 2.1.
- En la lista de viñetas que precede a la tabla, verifique si la versión de CUDA requerida es compatible con la capacidad de cálculo de su tarjeta gráfica. Por ejemplo, CUDA 9.2 no es compatible con la compatibilidad informática 2.1.
Si su tarjeta no es compatible con la versión CUDA requerida, consulte las opciones en la sección 4 de esta respuesta.
Nota: La capacidad de cómputo se refiere a las funciones computacionales que admite su tarjeta gráfica. Las versiones más recientes de la biblioteca CUDA se basan en características de hardware más nuevas, por lo que necesitamos determinar la capacidad de cálculo para determinar las versiones compatibles de CUDA.
2. Cómo verificar si su GPU / controlador de gráficos es compatible con una versión particular de CUDA
El controlador de gráficos es el software que permite que su sistema operativo se comunique con su tarjeta gráfica. Dado que CUDA se basa en la comunicación de bajo nivel con la tarjeta gráfica, necesita tener un controlador actualizado para poder utilizar las últimas versiones de CUDA.
Primero, asegúrese de tener un controlador de gráficos NVidia instalado en su sistema. Puede adquirir el controlador más reciente para su sistema en el sitio web de NVidia.
Si ha instalado la última versión del controlador, entonces su controlador de gráficos probablemente admite todas las versiones de CUDA compatibles con su tarjeta gráfica (consulte la sección 1). Para verificar, puede consultar la Tabla 2 en las notas de la versión de CUDA. En raras ocasiones, he oído hablar de los últimos controladores de gráficos recomendados que no son compatibles con las últimas versiones de CUDA. Debería poder solucionar esto instalando el kit de herramientas CUDA para la versión CUDA requerida y seleccionando la opción para instalar controladores compatibles, aunque esto generalmente no es necesario.
Si no puede o no desea actualizar el controlador de gráficos, puede verificar si su controlador actual es compatible con la versión específica de CUDA de la siguiente manera:
En Windows
- Determine su versión actual del controlador de gráficos (Fuente https://www.nvidia.com/en-gb/drivers/drivers-faq/)
Haga clic con el botón derecho en su escritorio y seleccione Panel de control de NVIDIA. En el menú del Panel de control de NVIDIA, seleccione Ayuda> Información del sistema. La versión del controlador aparece en la parte superior de la ventana Detalles. Para usuarios más avanzados, también puede obtener el número de versión del controlador en el Administrador de dispositivos de Windows. Haga clic con el botón derecho en su dispositivo gráfico debajo de adaptadores de pantalla y luego seleccione Propiedades. Seleccione la pestaña Controlador y lea la versión del controlador. Los últimos 5 dígitos son el número de versión del controlador NVIDIA.
- Visite las notas de la versión de CUDA y desplácese hasta la Tabla 2. Utilice esta tabla para verificar que su controlador de gráficos sea lo suficientemente nuevo como para admitir la versión requerida de CUDA.
En Linux / OS X
Ejecute el siguiente comando en una ventana de terminal
nvidia-smi
Esto debería resultar en algo como lo siguiente
Sat Apr 4 15:31:57 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 206... Off | 00000000:01:00.0 On | N/A |
| 0% 35C P8 16W / 175W | 502MiB / 7974MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1138 G /usr/lib/xorg/Xorg 300MiB |
| 0 2550 G /usr/bin/compiz 189MiB |
| 0 5735 G /usr/lib/firefox/firefox 5MiB |
| 0 7073 G /usr/lib/firefox/firefox 5MiB |
+-----------------------------------------------------------------------------+
Driver Version: ###.##
es la versión de su controlador gráfico. En el ejemplo anterior, la versión del controlador es 435.21
.
CUDA Version: ##.#
es la última versión de CUDA compatible con su controlador de gráficos. En el ejemplo anterior, el controlador de gráficos es compatible con CUDA 10.1 así como todas las versiones compatibles de CUDA anteriores a 10.1.
Nota: Los CUDA Version
que se muestra en esta tabla no indican que el kit de herramientas CUDA o el tiempo de ejecución están realmente instalados en su sistema. Esto solo indica la última versión de CUDA con la que es compatible su controlador de gráficos.
Para estar más seguro de que su controlador es compatible con la versión de CUDA deseada, puede visitar la Tabla 2 en la página de notas de la versión de CUDA.
3. Cómo comprobar si una versión particular de PyTorch es compatible con la capacidad de cálculo de su GPU / tarjeta gráfica
Incluso si su tarjeta gráfica es compatible con la versión requerida de CUDA, es posible que los binarios de PyTorch precompilados no se hayan compilado con soporte para su capacidad de cómputo. Por ejemplo, en PyTorch 0.3.1 se eliminó la compatibilidad con la capacidad de cálculo <= 5.0.
Primero, verifique que su tarjeta gráfica y el controlador sean compatibles con la versión CUDA requerida (consulte las secciones 1 y 2 anteriores), la información de esta sección asume que este es el caso.
La forma más fácil de verificar si PyTorch es compatible con su capacidad de cálculo es instalar la versión deseada de PyTorch con soporte CUDA y ejecutar lo siguiente desde un intérprete de Python
>>> import torch
>>> torch.zeros(1).cuda()
Si recibe un mensaje de error que dice
Found GPU0 XXXXX which is of cuda capability #.#.
PyTorch no longer supports this GPU because it is too old.
entonces eso significa que PyTorch no fue compilado con soporte para su capacidad de cómputo. Si esto funciona sin problemas, entonces debería estar listo.
Actualizar Si está instalando una versión anterior de PyTorch en un sistema con una GPU más nueva, es posible que la versión anterior de PyTorch no se haya compilado con soporte para su capacidad informática. Suponiendo que su GPU es compatible con la versión de CUDA utilizada por PyTorch, entonces debería poder reconstruir PyTorch desde la fuente con la versión de CUDA deseada o actualizar a una versión más reciente de PyTorch que fue compilada con soporte para las capacidades de cómputo más nuevas.
4. Conclusión
Si su tarjeta gráfica y su controlador son compatibles con la versión requerida de CUDA (sección 1 y 2) pero los binarios de PyTorch no son compatibles con su capacidad de cálculo (sección 3), entonces sus opciones son
- Compile PyTorch desde la fuente con soporte para su capacidad de cómputo (vea aquí)
- Instale PyTorch sin soporte CUDA (solo CPU)
- Instale una versión anterior de los binarios de PyTorch que admita su capacidad de cálculo (no se recomienda ya que PyTorch 0.3.1 está muy desactualizado en este momento). La capacidad de cómputo AFAIK anterior a 3.X nunca ha sido compatible con los binarios prediseñados
- Actualice su tarjeta gráfica
Si su tarjeta gráfica no es compatible con la versión requerida de CUDA (sección 1), sus opciones son
- Instale PyTorch sin soporte CUDA (solo CPU)
- Instale una versión anterior de PyTorch que admita una versión CUDA admitida por su tarjeta gráfica (aún puede requerir compilar desde la fuente si los binarios no son compatibles con su capacidad de cómputo)
- Actualice su tarjeta gráfica