引言 CPU 版 Windows Conda CPU
代码语言:javascript复制conda install pytorch torchvision torchaudio cpuonly -c pytorch
安装 CUDA
如何选择cuda的版本号 根据我们电脑本身安装的显卡的驱动版本号来决定的
代码语言:javascript复制nvidia-smi
发现缺少文件
本人渣渣上网本自带 NVIDIA GeForce 940MX
驱动版本 388.75
当前版本 CUDA 9.1.128 官网对应 https://www.nvidia.cn/geforce/gaming-laptops/geforce-940mx/ 版本对应关系
根据上图,如果不更新, 则对应 cudatoolkit=9.0 接下来更新一下 NVIDIA 驱动 https://www.nvidia.cn/geforce/drivers/
更新
我这里选择 EXPRESS INSTALLATION , 当然也可以选择 CUSTOM INSTALLATION
它会自动先卸载相关驱动,再安装
更新完毕后,此命令就有效了
代码语言:javascript复制nvidia-smi
更新完毕, 现在应该可以选择 cudatoolkit=11.3 了
安装 PyTorch 相关 以及 cudatoolkit
PS: PyTorch 不用装 cudnn,集成在 cudatoolkit 里面了 Windows Conda CUDA 11.3
代码语言:javascript复制conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
中途输入 y ,确定安装 PS conda install -c 中 -c 即 --channel 它用于指定搜索包的频道, -c pytorch 即使用 pytorch 频道源 使用国内清华源
代码语言:javascript复制conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
PyTorch GPU 测试
代码语言:javascript复制import torch
print(torch.__version__) # 返回 pytorch 的版本
# setting device on GPU if available, else CPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Using device:', device)
print()
#Additional Info when using cuda
if device.type == 'cuda':
print(torch.cuda.get_device_name(0))
print('Memory Usage:')
print('Allocated:', round(torch.cuda.memory_allocated(0)/1024**3,1), 'GB')
print('Cached: ', round(torch.cuda.memory_reserved(0)/1024**3,1), 'GB')
test2.py
代码语言:javascript复制import torch
import time
print(torch.__version__) # 返回 pytorch 的版本
print(torch.cuda.is_available()) # 当 CUDA 可用时返回 True
a = torch.randn(10000, 1000) # 返回10000行1000列的张量矩阵
b = torch.randn(1000, 2000) # 返回1000行2000列的张量矩阵
t0 = time.time() # 记录时间
c = torch.matmul(a, b) # 矩阵乘法运算
t1 = time.time() # 记录时间
print(a.device, t1 - t0, c.norm(2)) # c.norm(2)表示矩阵c的二范数
device = torch.device('cuda') # 用GPU来运行
a = a.to(device)
b = b.to(device)
# 初次调用GPU,需要数据传送,因此比较慢
t0 = time.time()
c = torch.matmul(a, b)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))
# 这才是GPU处理数据的真实运行时间,当数据量越大,GPU的优势越明显
t0 = time.time()
c = torch.matmul(a, b)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))
Q&A 补充
安装失败: InvalidArchiveError
代码语言:javascript复制WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(139): Could not remove or rename D:anaconda3pkgspytorch-1.11.0-py3.8_cuda11.3_cudnn8_0Libsite-packagestorchlibtorch_cpu.lib. Please remove this file manually (you may need to reboot to free file handles)
WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(139): Could not remove or rename D:anaconda3pkgspytorch-1.11.0-py3.8_cuda11.3_cudnn8_0Libsite-packagestorchlibtorch_cpu.lib. Please remove this file manually (you may need to reboot to free file handles)
InvalidArchiveError('Error with archive D:\anaconda3\pkgs\pytorch-1.11.0-py3.8_cuda11.3_cudnn8_0.tar.bz2. You probably need to delete and re-download or re-create this file. Message from libarchive was:nnCould not unlink')
猜测是由于之前尝试安装过, 而中途放弃安装断开, 导致遗留残余文件 解决: 尝试先删除 提示中的 4 个路径 的 文件夹及文件
代码语言:javascript复制D:anaconda3pkgspytorch-1.11.0-py3.8_cuda11.3_cudnn8_0
D:anaconda3pkgstorchaudio-0.11.0-py38_cu113
D:\anaconda3\pkgs\pytorch-1.11.0-py3.8_cuda11.3_cudnn8_0.tar.bz2
D:\anaconda3\pkgs\torchaudio-0.11.0-py38_cu113.tar.bz2