4 votos

¿Cómo instalar pytorch DESDE LA FUENTE (con cuda habilitado para una CUDA cc 3.5 obsoleta de una gpu antigua) usando anaconda prompt en Windows 10?

Tengo (con la ayuda del deviceQuery executable en C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\extras\demo_suite según https://forums.developer.nvidia.com/t/what-is-the-compute-capability-of-a-geforce-gt-710/146956/4 ):

Detectado 1 dispositivo(s) con capacidad CUDA

Dispositivo 0: " GeForce GT 710 " Versión del controlador CUDA / Versión de tiempo de ejecución 11.0 / 11.0 Número de versión mayor/menor de la capacidad CUDA: 3.5 Cantidad total de memoria global: 2048 MBytes (2147483648 bytes) ( 1) Multiprocesadores, (192) núcleos CUDA/MP: 192 núcleos CUDA

Como se trata de una tarjeta gráfica vieja y poco potente, tengo que instalar pytorch desde el código fuente compilándolo en mi ordenador con varias configuraciones y condiciones necesarias - algo no muy intuitivo que me llevó días. Por lo menos, mi tarjeta soporta CUDA cc 3.5 y por lo tanto soporta todas las versiones más recientes de CUDA y cuDNN, ya que cc 3.5 es sólo deprecated, nada peor.

He seguido los pasos del README para construir pytorch desde el código fuente en https://github.com/pytorch/pytorch#from-source que también enlaza con el compilador adecuado en https://gist.github.com/ax3l/9489132 .

He logrado construir PyTorch desde la fuente en Windows 10 (como se describe en pytorch repo readme.md: https://github.com/pytorch/pytorch#from-source ), y estoy recibiendo un error al ejecutar import pytorch :

ImportError: Fallo en la carga de la DLL: Ha fallado una rutina de inicialización de la biblioteca de enlace dinámico (DLL). Error al cargar " C:\Users\Admin\anaconda3\envs\ml\lib\site -paquetes \torch\lib\caffe2_detectron_ops_gpu.dll " o una de sus dependencias.

No puedo usar el pytorch que fue construido con éxito desde el código fuente: (DLL) rutina de inicialización falló. Error al cargar caffe2_detectron_ops_gpu.dll

3voto

Lorenz Puntos 133

EDIT: Antes de intentar la guía larga e instalar todo de nuevo, podría solucionar el error "(DLL) initialization routine failed. Error al cargar caffe2_detectron_ops_gpu.dll" bajando de torch = 1.7.1 a torch=1.6.0 según este (sin haberlo probado).


Esta es una selección de guías que he utilizado.

La solución aquí se extrajo de muchos más pasos, véase este en combinación con este . Un comienzo general para las preguntas de cuda es en este relacionado Pregunta del superusuario también.

Aquí está la solución:

  1. Instala cmake: https://cmake.org/download/

Añadir a la variable ambiental PATH:

C:\Program Files\CMake\bin

  1. Instalar git, que incluye mingw64 que también entrega rizo : https://git-scm.com/download/win

Añadir a la variable ambiental PATH:

C:\Program Files\Git\cmd

C:\Program Files\Git\mingw64\bin para rizo

  1. Como compilador, elegí MSVC 2019 para el controlador del compilador CUDA NVCC:10.0.194 ya que puede manejar CUDA cc 3.5 según https://gist.github.com/ax3l/9489132 . Por supuesto, querrá comprobar su propia versión de controlador actual.

image

Tenga en cuenta que las flechas verdes no le dirán nada más aquí que la celda de arriba se copia a una celda vacía de abajo, esto es por diseño de la tabla y no tiene nada más que decir aquí. Las marcas y notas verdes son sólo los números de versión relevantes (3.5 y 2019) en mi caso. ¡En cambio, lo que es relevante en su caso depende totalmente de su caso!

Corriendo MS Visual Studio 2019 16.7.1 y eligiendo --> Indivudual components le permite instalar:

  • más reciente MSVC v142 - VS 2019 C++-x64/x86-Buildtools (v14.27) (la versión x64 más reciente en ese momento)
  • más reciente Windows 10 SDK ( 10.0.19041.0 ) (la versión x64 más reciente en ese momento).
  1. Como la tarjeta gráfica de mi CUDA Capability Major/Minor version number es 3.5 Puedo instalar la última versión posible cuda 11.0.2-1 disponible en este momento. En su caso, busque siempre una versión actual de la tabla anterior y averigüe la mejor versión posible de cuda de su cc CUDA. El conjunto de herramientas cuda está disponible en https://developer.nvidia.com/cuda-downloads .

  2. Cambie la variable ambiental PATH:

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH% SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH% SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%

  1. Descargue cuDNN desde https://developer.nvidia.com/cudnn-download-survey . Tiene que registrarse para hacerlo. A continuación, instale cuDNN copiando el último zip-extracto de cuDNN en el siguiente directorio:

C:\Program Files\NVIDIA cuDNN

  1. Cambie la variable ambiental PATH:

SET PATH=C:\Program Files\NVIDIA cuDNN\cuda;%PATH

  1. abra el prompt de anaconda y en el mejor de los casos cree un nuevo entorno virtual para pytorch con un nombre de su elección, según https://stackoverflow.com/questions/48174935/conda-creating-a-virtual-environment :

conda create -n myenv

  1. Instala los paquetes que quizás necesites:

(myenv) C:\Users\Admin>conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests

  1. En anaconda o cmd prompt, clona pytorch en un directorio de tu elección. Yo estoy usando mi directorio de descargas aquí: C:\Users\Admin\Downloads\Pytorch>git clone https://github.com/pytorch/pytorch

  2. En anaconda o cmd prompt, actualice recursivamente el directorio clonado: C:\Users\Admin\Downloads\Pytorch\pytorch>git submodule update --init --recursive

  3. Dado que hay poco soporte para MSVC OpenMP en detectron, necesitamos construir pytorch desde el código fuente con MKL desde el código fuente para que se utilice Intel OpenMP, según el comentario de este promotor y que se refiera a https://pytorch.org/docs/stable/notes/Windows.html#include-optional-components . ¿Cómo se hace esto?

Instalar 7z desde https://www.7-zip.de/download.html .

Añadir a la variable ambiental PATH:

C:\Program Files\7-Zip\

Ahora descargue el código fuente de MKL (compruebe la versión más reciente en el enlace de nuevo):

curl https://s3.amazonaws.com/ossci-windows/mkl_2020.0.166.7z -k -O
7z x -aoa mkl_2020.0.166.7z -omkl

El directorio de destino que elegí fue C:\Users\Admin\mkl .

También es necesario según el enlace:

conda install -c defaults intel-openmp -f

  1. abra el prompt de anaconda y active su llamado entorno virtual:

activate myenv

  1. Cambia al directorio de código fuente de pytorch que hayas elegido.

(myenv) C:\WINDOWS\system32>cd C:\Users\Admin\Downloads\Pytorch\pytorch

  1. Ahora, antes de iniciar cmake, tenemos que establecer un montón de variables.

Como también utilizamos mkl, lo necesitamos de la siguiente manera:

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “CMAKE_INCLUDE_PATH=C:\Users\Admin\Downloads\Pytorch\mkl\include”

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “LIB=C:\Users\Admin\Downloads\Pytorch\mkl\lib;%LIB%”

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set USE_NINJA=OFF

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set CMAKE_GENERATOR=Visual Studio 16 2019

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set USE_MKLDNN=ON

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>set “CUDAHOSTCXX=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64\cl.exe”

(myenv) C:\Users\Admin\Downloads\Pytorch\pytorch>python setup.py install --cmake

Mente: Deja que esto se ejecute durante la noche, el instalador de arriba tomó 9,5 horas y bloquea la computadora.

Importante: Ninja puede paralelizar las tareas de construcción de CUDA. Es posible que pueda utilizar ninja, que es para acelerar el proceso de acuerdo con https://pytorch.org/docs/stable/notes/Windows.html#include-optional-components . En mi caso, la instalación no tuvo éxito usando ninja. Aún así, puedes probar: set CMAKE_GENERATOR=Ninja (por supuesto después de haberlo instalado primero con pip install ninja ). También puede necesitar set USE_NINJA=ON y/o mejor aún, tratar de dejar fuera set USE_NINJA completamente y utilizar sólo set CMAKE_GENERATOR=Ninja (ver Cambiar el generador CMake a Ninja ), tal vez esto le sirva. Definitivamente es posible usar ninja, ver este comentario de una instalación exitosa basada en los ninjas.

[Puede que también me equivoque al esperar que ninja funcione con una instalación de pip en mi caso. Tal vez también tenemos que obtener el código fuente de ninja en su lugar, tal vez también usando curl, como se hizo para MKL. Por favor, comenten o editen si saben más al respecto, gracias].

  1. En mi caso, esto ha pasado usando mkl y sin usar ninja.

  2. Ahora un comentario al margen. Si estás usando spyder, el mío al menos se corrompió por la instalación de cuda:

    (myenv) C:\WINDOWS\system32 >espía cffi_ext.c C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\backend\cffi\ _pycache cffi_ext.c(268): error fatal C1083: Datei (Include) kann nicht geöffnet werden: "zmq.h": No such file or directory Traceback (most recent call last): Archivo " C:\Users\Admin\anaconda3\<strkeep>scripts<strkeep>\spyder -script.py", línea 6, en from spyder.app.start import main Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \spyder\app\start.py ", línea 22, en import zmq Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq_ init _.py", línea 50, en from zmq import backend Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\backend_ init _.py", línea 40, en reraise(*exc_info) Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\utils\sixcerpt.py ", línea 34, en reraise subir valor Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\backend_ init _.py", línea 27, en ns = select_backend(first) Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\backend\select.py ", línea 28, en select_backend mod = importar (nombre, fromlist=public_api) Archivo " C:\Users\Admin\anaconda3\lib\site -paquetes \zmq\backend\cython\ _init .py", línea 6, en from . import (constantes, error, mensaje, contexto, ImportError: DLL load failed while importing error: Das angegebene Modul wurde nicht gefunden.

Instalando de nuevo el spyder sobre la instalación existente:

(myenv) C:\WINDOWS\system32>conda install spyder

Abriendo el spyder:

(myenv) C:\WINDOWS\system32>spyder
  1. Pruebe su instalación de pytorch.

Lo hice de acuerdo con este :

import torch

torch.__version__
Out[3]: '1.8.0a0+2ab74a4'

torch.cuda.current_device()
Out[4]: 0

torch.cuda.device(0)
Out[5]: <torch.cuda.device at 0x24e6b98a400>

torch.cuda.device_count()
Out[6]: 1

torch.cuda.get_device_name(0)
Out[7]: 'GeForce GT 710'

torch.cuda.is_available()
Out[8]: True

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: