在Windows10环境安装CUDA11.7及PyTorch1.13–使用Nvidia RTX A4000开始炼丹之旅
这个双十一,RTX3090矿卡反倒是涨价了,RTX3090Ti当然也涨价了。。。只好从x宝搞一只工包丽台RTX A4000,唯一的好处就是显存大并且便宜。。。较RTX3060 12G,16G显存能玩的时间可能也长一点,毕竟现在是4K屏,显存大当然更从容些。
之前有写过:https://lizhiyong.blog.csdn.net/article/details/123294308
主板:x99f8d
CPU:e5 2696v3 *2 【36核72线程】
内存条:DDR4 ECC 32G *8 【256G】
显卡:RTX A4000 【16G显存】
散热器:ta 120ex *2 【单风扇】
SSD:MX500 2T *2 【4T】
HDD:NAS拆的酷狼 4T
电源:GX1000 【1000W】
机箱:614PC 【标配2风扇+套装3风扇】
显示器:27寸 【4K】
键鼠:笔记本淘汰的一套 【USB口】
网卡:主板自带的网卡
今天终于让GT730光荣退役了。
去Nvidia官网:https://www.nvidia.cn/Download/index.aspx?lang=cn
丽台还是可以省不少事情。。。因为CUDA可以比驱动老一些,所以直接Down个最新版本的驱动,不过多解释。
驱动安装完毕并重启后就可以查看当前能够支持的最高版本CUDA:
可以看到目前的驱动支持的CUDA最高版本是:12.0.79。
当然不可能去安装最高版本的CUDA。。。为了能够正常使用PyTorch,一定是按照PyTorch的要求去安装才比较稳妥。。。虽然Flink1.15集群使用JDK1.17貌似也没出现啥特别严重的生产事故,但对非专业运维的开发人员来说,环境方面的问题还是稳妥点好。
在PyTorch的官网:https://pytorch.org/
可以看到:
显然需要安装的CUDA版本是11.7。
老黄的网站:https://developer.nvidia.com/cuda-toolkit
点Download后:
默认的是11.8,笔者没心思验证是不是也能凑合着用。。。稳妥起见,还是应该选11.7。
在这个官方网站:https://developer.nvidia.com/cuda-toolkit-archive
可以找到古老的11.7.1版本,就是它了。
直接下载安装即可。
还需要被迫先安装一个Visual Studio。。。
笔者搞过C#,先这样吧。。。安装好Visual Studio后重新安装CUDA11.7.1即可。
打开路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
有个nvcc.exe
文件。在CMD:
Microsoft Windows [版本 10.0.19045.2251]
(c) Microsoft Corporation。保留所有权利。
C:\Users\zhiyong>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:59:34_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0
C:\Users\zhiyong>
这种情况就不需要配置环境变量了。。。如果识别不到就需要环境变量添加至少这个路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
此时可以确定CUDA安装成功。
直接官网:https://www.anaconda.com/
下载最新版本,一路下一步,再打2个钩,即可使用Anaconda来托管Python的环境,非常方便。
C:\Users\zhiyong>conda -V
conda 22.9.0
C:\Users\zhiyong>conda list
# packages in environment at C:\Users\zhiyong\anaconda3:
#
# Name Version Build Channel
# 这里有一大坨
conda 22.9.0 py39haa95532_0
# 这里也有一大坨,省略了
zstd 1.5.2 h19a0ad4_0
C:\Users\zhiyong>
笔者之前为了使用PySpark已经安装过了。但是由于种种原因GUI坏掉了,所以笔者需要修复它。命令行比GUI稳定性好多了。。。
使用管理员运行:conda prompt
之后继续执行:
conda update anaconda-navigator
y
anaconda-navigator --reset
conda update anaconda-client
y
conda update -f anaconda-client
y
此时修复完毕。
需要先断网,打开Anaconda后再联网。。。需要这么一套操作猛如虎的应该也不止笔者一个吧。。。
先新建一个专门玩PyTorch的Env【笔者随意起名叫pytorch1】,防止出现依赖包冲突的问题:
然后管理员身份启动CMD:
C:\WINDOWS\system32>conda env list
# conda environments:
#
C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\envs\pytorch1
base C:\Users\zhiyong\anaconda3
pyspark1 C:\Users\zhiyong\anaconda3\envs\pyspark1
C:\WINDOWS\system32>activate pytorch1
EnvironmentNameNotFound: Could not find conda environment: pytorch1
You can list all discoverable environments with `conda info --envs`.
C:\WINDOWS\system32>
显然此时出现了问题。。。remove掉重新再生成一个:
activate base
conda remove pytorch1
conda create -n pytorch1 python=3.9.13
此处的Python版本一定要选对,否则之后安装PyTorch会出现下方的报错。
敲y确定后,稍等几分钟即可看到:
C:\WINDOWS\system32>conda info --envs
# conda environments:
#
C:\ProgramData\Anaconda3
base C:\Users\zhiyong\anaconda3
pyspark1 C:\Users\zhiyong\anaconda3\envs\pyspark1
pytorch1 C:\Users\zhiyong\anaconda3\envs\pytorch1
C:\WINDOWS\system32>activate pytorch1
(pytorch1) C:\WINDOWS\system32>conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Proceed ([y]/n)? y
如果有配置加速:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/
其实也可以不用后边的2个-c
的参数。。。
This can take several minutes. Press CTRL-C to abort.
Examining torchaudio: 25%|███████████████▌ | 2/8 [01:03<03:11, 31.93s/it]/Examining conflict for pytorch torchaudio torchvision: 25%|███████▎ | 2/8 [00:03<00:10, 1.68s/it]-Examining conflict for pytorch torchvision: 38%|███████████████ | 3/8 [00:08<00:08, 1.77s/it]\Examining conflict for python torchvision: 50%|████████████████████▌ | 4/8 [00:14<00:09, 2.35s/it]-failed
UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:
Specifications:
- pytorch -> python[version='2.6.*|2.7.*|3.4.*|3.5.*|3.6.*|3.3.*|>=2.7,<2.8.0a0|>=3.11,<3.12.0a0|3.9.10|3.8.12|3.7.12|3.7.10|3.7.10|3.6.12|3.7.9|3.6.12|3.6.9|3.6.9|3.6.9|3.6.9|>=3.8|>=3.6|>=3.5|>=3.7|>=3.6,<3.7|3.9.*',build='0_73_pypy|1_73_pypy|2_73_pypy|3_73_pypy|5_73_pypy|5_73_pypy|0_73_pypy|1_73_pypy|0_73_pypy|4_73_pypy']
Your python: python=3.9.13
If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.
The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions
Package vs2008_runtime conflicts for:
pytorch -> ninja -> vs2008_runtime
torchvision -> python -> vs2008_runtime
Package requests conflicts for:
python=3.9 -> pip -> requests
torchvision -> requests
Package pytorch-cuda conflicts for:
torchaudio -> pytorch==1.13.0 -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8']
torchaudio -> pytorch-cuda[version='11.6.*|11.7.*']
torchvision -> pytorch==1.13.0 -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8']
pytorch -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8']
torchvision -> pytorch-cuda[version='11.6.*|11.7.*']
Package pytorch conflicts for:
torchvision -> pytorch[version='1.10.0|1.10.1|1.10.2|1.13.0|1.12.1|1.12.0|1.11.0|1.9.1|1.9.0|1.8.1|1.8.0|1.7.1|1.7.0|1.6.0|1.5.1|1.5.0|1.4.0|1.3.1|1.3.0|1.2.0|>=1.1.0|>=1.0.0|>=0.4']
torchaudio -> pytorch[version='1.10.0|1.10.1|1.10.2|1.11.0|1.12.0|1.12.1|1.13.0|1.9.1|1.9.0|1.8.1|1.8.0|1.7.1|1.7.0|1.6.0']
(pytorch1) C:\WINDOWS\system32>
根据提示,应该更换为3.1.10再次尝试:
activate base
conda remove pytorch1
conda create -n pytorch1 python=3.9.10
y
conda install pytorch torchvision torchaudio pytorch-cuda=11.7
y
这次的报错少了一些:
This can take several minutes. Press CTRL-C to abort.-
Examining pytorch-cuda=11.7: 25%|█████████████▊ | 2/8 [01:13<03:40, 36.68s/it]/Examining torchaudio: 100%|██████████████████████████████████████████████████████████████| 8/8 [01:44<00:00, 12.02s/it]\failed
UnsatisfiableError: The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions
Package pytorch conflicts for:
pytorch
torchvision -> pytorch[version='1.10.0|1.10.1|1.10.2|1.13.0|1.12.1|1.12.0|1.11.0|1.9.1|1.9.0|1.8.1|1.8.0|1.7.1|1.7.0|1.6.0|1.5.1|1.5.0|1.4.0|1.3.1|1.3.0|1.2.0|>=1.1.0|>=1.0.0|>=0.4']
torchaudio -> pytorch[version='1.10.0|1.10.1|1.10.2|1.11.0|1.12.0|1.12.1|1.13.0|1.9.1|1.9.0|1.8.1|1.8.0|1.7.1|1.7.0|1.6.0']
Package pytorch-cuda conflicts for:
torchaudio -> pytorch==1.13.0 -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8']
torchvision -> pytorch==1.13.0 -> pytorch-cuda[version='>=11.6,<11.7|>=11.7,<11.8']
torchvision -> pytorch-cuda[version='11.6.*|11.7.*']
pytorch-cuda=11.7
torchaudio -> pytorch-cuda[version='11.6.*|11.7.*']
Package setuptools conflicts for:
torchvision -> setuptools
python=3.9.10 -> pip -> setuptools
Package msvc_runtime conflicts for:
torchvision -> python[version='>=3.5,<3.6.0a0'] -> msvc_runtime
pytorch -> python[version='>=3.5,<3.6.0a0'] -> msvc_runtime
(pytorch1) C:\WINDOWS\system32>
显然Python版本更换后还有其它的问题。。。
根据官网:https://pytorch.org/get-started/locally/
目前Windows10的PyTorch只能使用3.7->3.9,所以降低Python版本:
activate base
conda remove pytorch1
conda create -n pytorch1 python=3.8
y
activate pytorch1
conda install pytorch torchvision torchaudio pytorch-cuda=11.7
y
依旧失败,还是因为有很多包冲突。。。显然conda命令是有问题的。换用pip3的方式:
(pytorch1) C:\WINDOWS\system32>pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
Installing collected packages: urllib3, typing-extensions, pillow, numpy, idna, charset-normalizer, torch, requests, torchvision, torchaudio
Successfully installed charset-normalizer-2.1.1 idna-3.4 numpy-1.23.4 pillow-9.3.0 requests-2.28.1 torch-1.13.0+cu117 torchaudio-0.13.0+cu117 torchvision-0.14.0+cu117 typing-extensions-4.4.0 urllib3-1.26.12
(pytorch1) C:\WINDOWS\system32>
貌似这样可以成功。
继续在pytorch1这个Env安装spark-shell敲scala命令的方式敲python命令:
(pytorch1) C:\WINDOWS\system32>python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.__version__
'1.13.0+cu117'
>>> exit()
(pytorch1) C:\WINDOWS\system32>
可以看到目前已经启用了CUDA加速,且PyTorch的版本是1.13,安装成功。
import time
import torch
if __name__ == '__main__':
print("启动!!!")
print("PyTorch版本:" + torch.__version__)
print("PyTorch是否启动CUDA:", torch.cuda.is_available())
matrix_a1 = torch.randn(99999, 9999)
matrix_b1 = torch.randn(9999, 88888)
t1 = time.time() #cpu运算前的时间
matrix_c1 = torch.matmul(matrix_a1,matrix_b1) #cpu做矩阵相乘
t2 = time.time() #cpu运算后的时间
print("当前模式:",matrix_a1.device,"\t耗时:",t2-t1,matrix_c1.norm(2))
gpu = torch.device("cuda")
matrix_a2=matrix_a1.to(gpu)
matrix_b2=matrix_b1.to(gpu)
t3=time.time() #gpu运算前的时间
matrix_c2=torch.matmul(matrix_a2,matrix_b2)
t4=time.time() #gpu运算后的时间
print("当前模式:", matrix_a2.device, "\t耗时:", t4 - t3, matrix_c2.norm(2))
t5=time.time() #gpu运算前的时间
matrix_c3=torch.matmul(matrix_a2,matrix_b2)
t6=time.time() #gpu运算后的时间
print("当前模式:", matrix_a2.device, "\t耗时:", t6 - t5, matrix_c3.norm(2))
结果显存爆了:
C:\Users\zhiyong\anaconda3\envs\pytorch1\python.exe C:/Users/zhiyong/PycharmProjects/pyTorchProject1/com.zhiyong.demo1/pyTorchDemo1.py
启动!!!
PyTorch版本:1.13.0+cu117
PyTorch是否启动CUDA: True
当前模式: cpu 耗时: 147.05355715751648 tensor(4203777.)
Traceback (most recent call last):
File "C:/Users/zhiyong/PycharmProjects/pyTorchProject1/com.zhiyong.demo1/pyTorchDemo1.py", line 23, in <module>
matrix_c2=torch.matmul(matrix_a2,matrix_b2)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 33.11 GiB (GPU 0; 15.99 GiB total capacity; 7.04 GiB already allocated; 7.86 GiB free; 7.04 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
进程已结束,退出代码1
结果出乎意料。。。CPU运算了147s成功了,占用了18C【Win10调度有问题,但是依旧能跑满单路】和60G内存。GPU运算因为显存不足32G【A4000只有16G】,申请不到足够的显存,直接失败了。。。
这次减少数据量:
matrix_a1 = torch.randn(99999, 9999)
#matrix_b1 = torch.randn(9999, 88888)#CPU可以运算
matrix_b1 = torch.randn(9999, 20000)#GPU运算量太大会爆显存
结果显存又OOM了:
C:\Users\zhiyong\anaconda3\envs\pytorch1\python.exe C:/Users/zhiyong/PycharmProjects/pyTorchProject1/com.zhiyong.demo1/pyTorchDemo1.py
启动!!!
PyTorch版本:1.13.0+cu117
PyTorch是否启动CUDA: True
当前模式: cpu 耗时: 32.04557013511658 tensor(3089646.7500)
当前模式: cuda:0 耗时: 1.7030134201049805 tensor(4472055.5000, device='cuda:0')
Traceback (most recent call last):
File "C:/Users/zhiyong/PycharmProjects/pyTorchProject1/com.zhiyong.demo1/pyTorchDemo1.py", line 29, in <module>
matrix_c3=torch.matmul(matrix_a2,matrix_b2)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 7.45 GiB (GPU 0; 15.99 GiB total capacity; 11.92 GiB already allocated; 2.17 GiB free; 11.92 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
进程已结束,退出代码1
#matrix_a1 = torch.randn(99999, 9999)#CPU可以运算
#matrix_b1 = torch.randn(9999, 88888)#CPU可以运算
matrix_a1 = torch.randn(20000, 9999)#GPU运算量太大会爆显存
matrix_b1 = torch.randn(9999, 20000)#GPU运算量太大会爆显存
这次终于看到了加速效果:
C:\Users\zhiyong\anaconda3\envs\pytorch1\python.exe C:/Users/zhiyong/PycharmProjects/pyTorchProject1/com.zhiyong.demo1/pyTorchDemo1.py
启动!!!
PyTorch版本:1.13.0+cu117
PyTorch是否启动CUDA: True
当前模式: cpu 耗时: 6.454258918762207 tensor(1860912.2500)
当前模式: cuda:0 耗时: 1.3742117881774902 tensor(1999540.1250, device='cuda:0')
当前模式: cuda:0 耗时: 0.016983509063720703 tensor(1999540.1250, device='cuda:0')
进程已结束,退出代码0
可以看出GPU运算虽然首次需要加载C++的包,依旧比CPU快了5倍。第二次运算时C++的包已经加载完毕,比CPU快了380倍。但是快归快,就算是A4000有ECC【当然双路E5也有ECC】算出来的结果依旧不准。。。
至此,环境搭设成功,可以愉快地炼丹了,机器学习和深度学习这种只要是可以GPU提速的,那一定是比CPU快。
ML和DL最需要的是大显存!!!
ML和DL最需要的是大显存!!!
ML和DL最需要的是大显存!!!
重要的话说三遍。16G显存只够入门随便玩玩!!!而且GPU运算不准!!!
最后再更新一波撸大娘的跑分:
晕3D,不指望打3D游戏。。。
为神马还是被识别为GT730???依旧退役了好不???
从撸大娘的跑分结果来看,这只丽台RTX A4000显卡,性能也就是和RTX 3060Ti打的有来有回,毕竟是低功率卡,和移动端RTX 3070半差不差也在意料之中。老泰坦强于3060Ti是万万没想到。。。
工包丽台RTX A4000算是目前Nvidia最便宜的16G显存卡了吧?这个价位貌似也就只有3090矿卡还有一战之力了。
转载请注明出处:https://lizhiyong.blog.csdn.net/article/details/127827522