如何在 Windows 10 上使用 anaconda prompt 从源代码安装 pytorch(为旧 gpu 的已弃用的 CUDA cc 3.5 启用 cuda)?

如何在 Windows 10 上使用 anaconda prompt 从源代码安装 pytorch(为旧 gpu 的已弃用的 CUDA cc 3.5 启用 cuda)?

我已经(在根据的deviceQuery executable帮助下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\extras\demo_suitehttps://forums.developer.nvidia.com/t/what-is-the-compute-capability-of-a-geforce-gt-710/146956/4):

检测到 1 个支持 CUDA 的设备

设备 0:“GeForce GT 710“CUDA 驱动程序版本/运行时版本 11.0/11.0 CUDA 功能主版本/次版本号:3.5 全局内存总量:2048 MB(2147483648 字节)(1)多处理器,(192)CUDA 核心/MP:192 个 CUDA 核心

由于这是一张老旧且性能不足的显卡,我需要从源代码安装 pytorch,方法是在计算机上编译它,并设置各种必要的设置和条件 - 这不是一件很直观的事情,花了我好几天的时间。至少,我的卡支持 CUDA cc 3.5,因此它支持所有最新的 CUDA 和 cuDNN 版本,因为 cc 3.5 只是被弃用了,没有什么更糟糕的了。

我按照 README 中的步骤从源代码构建 pytorchhttps://github.com/pytorch/pytorch#from-source它也链接到正确的编译器https://gist.github.com/ax3l/9489132

我已经成功在 Windows 10 上从源代码构建了 PyTorch(如 pytorch repo readme.md 中所述:https://github.com/pytorch/pytorch#from-source),运行时出现错误import pytorch

ImportError: DLL 加载失败:动态链接库 (DLL) 初始化例程失败。加载“C:\Users\Admin\anaconda3\envs\ml\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll”或其依赖项之一时出错。

我无法使用从源代码成功构建的 pytorch:(DLL)初始化例程失败。加载 caffe2_detectron_ops_gpu.dll 时出错

答案1

编辑:在你尝试冗长的指南并再次安装所有内容之前,你可以通过从降级到来解决错误“(DLL)初始化例程失败。加载 caffe2_detectron_ops_gpu.dll 时出错” torch = 1.7.1torch=1.6.0根据(没有经过测试)。


这是我使用过的一些指南。

这里的解决方案来自更多步骤,请参见结合。有关 cuda 问题的整体入门信息请参见此相关内容超级用户问题也一样。

解决方案如下:

  1. 安装 CMake: https://cmake.org/download/

添加到PATH环境变量:

C:\Program Files\CMake\bin

  1. 安装 git,其中包括 mingw64,它还提供卷曲https://git-scm.com/download/win

添加到PATH环境变量:

C:\Program Files\Git\cmd

C:\Program Files\Git\mingw64\bin为了卷曲

  1. 作为编译器,我选择了MSVC 2019CUDA 编译器驱动程序,NVCC:10.0.194因为它可以处理 CUDA cc 3.5https://gist.github.com/ax3l/9489132。当然,您会想检查自己当前的驱动程序版本。

图像

请注意,绿色箭头除了告诉您上面的单元格被复制到下面的空单元格之外,没有其他任何意义,这是表格的设计,这里没有什么可说的。 在我的案例中,绿色标记和注释只是相关版本号(3.5 和 2019)。相反,您的案例中相关的内容完全取决于您的案例!

运行MS Visual Studio 2019 16.7.1并选择--> Indivudual components可以让您安装:

  • 最新MSVC v142 - VS 2019 C++-x64/x86-Buildtools (v14.27)(当时最新的 x64 版本)
  • 最新Windows 10 SDK10.0.19041.0)(当时最新的 x64 版本)。
  1. 由于我的显卡CUDA Capability Major/Minor version number是,所以我可以安装目前可用的3.5最新版本。对于你的情况,请再次查找上表的当前版本,并找出你的 CUDA cc 的最佳 cuda 版本。cuda 工具包可在cuda 11.0.2-1https://developer.nvidia.com/cuda-downloads

  2. 更改 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. 从以下位置下载 cuDNNhttps://developer.nvidia.com/cudnn-download-survey。您必须注册才能执行此操作。然后通过将最新的 cuDNN zip 解压文件复制到以下目录来安装 cuDNN:

C:\Program Files\NVIDIA cuDNN

  1. 更改 PATH 环境变量:

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

  1. 打开 anaconda prompt,最好为 pytorch 创建一个新虚拟环境,并根据需要命名https://stackoverflow.com/questions/48174935/conda-creating-a-virtual-environment

conda create -n myenv

  1. 安装可能需要的软件包:

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

  1. 在 anaconda 或 cmd 提示符中,将 pytorch 克隆到您选择的目录中。我在这里使用我的下载目录:C:\Users\Admin\Downloads\Pytorch>git clone https://github.com/pytorch/pytorch

  2. 在 anaconda 或 cmd 提示符中,递归更新克隆的目录:C:\Users\Admin\Downloads\Pytorch\pytorch>git submodule update --init --recursive

  3. 由于detectron对MSVC OpenMP的支持较差,我们需要从源代码构建pytorch,并使用源代码中的MKL,因此将使用Intel OpenMP,根据该开发者的评论并提到https://pytorch.org/docs/stable/notes/windows.html#include-optional-components.那么该怎么做呢?

从以下位置安装 7zhttps://www.7-zip.de/download.html

添加到PATH环境变量:

C:\Program Files\7-Zip\

现在下载 MKL 源代码(请查看关联再次):

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

我选择的目标目录是C:\Users\Admin\mkl

根据链接还需要:

conda install -c defaults intel-openmp -f

  1. 打开 anaconda prompt 并激活所谓的虚拟环境:

activate myenv

  1. 更改为您选择的 pytorch 源代码目录。

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

  1. 现在在启动 cmake 之前,我们需要设置很多变量。

由于我们也使用 mkl,因此我们需要它如下:

(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

注意:让它运行一整夜,上面的安装程序花了 9.5 个小时并阻塞了计算机。

重要提示:Ninja 可以并行执行 CUDA 构建任务。 也许你可以使用忍者,这是根据以下情况加快进程https://pytorch.org/docs/stable/notes/windows.html#include-optional-components。就我而言,使用 ninja 安装失败。您仍然可以尝试:(set CMAKE_GENERATOR=Ninja当然,先使用 安装pip install ninja)。您可能还需要set USE_NINJA=ON,和/或更好的是,尝试完全省略set USE_NINJA并只使用set CMAKE_GENERATOR=Ninja(请参阅将 CMake 生成器切换到 Ninja),也许这对你有用。使用忍者是绝对可能的,见此评论基于忍者的安装成功。

[我可能也错了,因为我期望 ninja 可以通过 pip install 来工作。也许我们还需要获取 ninja 的源代码,也许也可以使用 curl,就像 MKL 所做的那样。如果您对此有更多了解,请发表评论或进行编辑,谢谢。]

  1. 就我的情况而言,这已经通过使用 mkl 而不是使用 ninja 来运行。

  2. 现在补充一点。如果你正在使用 spyder,那么我的至少被 cuda 安装破坏了:

    (myenv)C:\WINDOWS\system32>spyder cffi_ext.c C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend\cffi_pycache_cffi_ext.c(268): 致命错误 C1083: 无法读取 (Include) 文件:“zmq.h”: 没有此文件或目录回溯(最近一次调用最后一次):文件“C:\Users\Admin\anaconda3\Scripts\spyder-script.py”, 第 6 行,来自 spyder.app.start 导入主文件“C:\Users\Admin\anaconda3\lib\site-packages\spyder\app\start.py”, 第 22 行,导入 zmq 文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq_在里面_.py”,第 50 行,来自 zmq 导入后端文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend_在里面_.py”, 第 40 行, 在 reraise(*exc_info) 文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\utils\sixcerpt.py”, 第 34 行, 在 reraise 提升值文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend_在里面_.py”,第 27 行,位于 ns = select_backend(first)文件“C:\Users\Admin\anaconda3\lib\site-packages\zmq\backend\select.py”,第 28 行,位于 select_backend mod =进口(名称,fromlist = public_api)文件“C:\ Users \ Admin \ anaconda3 \ lib \ site-packages \ zmq \ backend \ cython_在里面.py”,第 6 行,来自。导入(常量、错误、消息、上下文、ImportError:导入时 DLL 加载失败错误:所分配的模块未成功加载。

在现有安装上再次安装 spyder:

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

打开蜘蛛:

(myenv) C:\WINDOWS\system32>spyder
  1. 测试你的 pytorch 安装。

我按照

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

相关内容