PyTorch 安装

引言 CPU 版 Windows + Conda + CPU
1
conda install pytorch torchvision torchaudio cpuonly -c pytorch
GPU 版 参考: pytorch gpu版本安装 - 知乎 成功解决‘nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件_一个处女座的程序猿的技术博客_51CTO博客 How do I run nvidia-smi on Windows? - Stack Overflow 笔记本的垃圾显卡也能装Tensorflow GPU版,简明教程 - 知乎 GeForce 940MX | GeForce cuda和cudnn是什么 - 范仁义 - 博客园 pytorch GPU版安装教程(不用安装cuda和cudnn)_学不会编程的小男孩的博客-CSDN博客_pytorch不用cuda能用吗

安装 CUDA

如何选择cuda的版本号 根据我们电脑本身安装的显卡的驱动版本号来决定的
1
nvidia-smi
发现缺少文件 本人渣渣上网本自带 NVIDIA GeForce 940MX 驱动版本 388.75 当前版本 CUDA 9.1.128 官网对应 https://www.nvidia.cn/geforce/gaming-laptops/geforce-940mx/ 版本对应关系 完整表格参考: Release Notes :: CUDA Toolkit Documentation 根据上图,如果不更新, 则对应 cudatoolkit=9.0 接下来更新一下 NVIDIA 驱动 https://www.nvidia.cn/geforce/drivers/ 更新 我这里选择 EXPRESS INSTALLATION , 当然也可以选择 CUSTOM INSTALLATION 它会自动先卸载相关驱动,再安装 更新完毕后,此命令就有效了
1
nvidia-smi
更新完毕, 现在应该可以选择 cudatoolkit=11.3 了

安装 PyTorch 相关 以及 cudatoolkit

参考: pytorch安装-国内镜像源_still_learning的博客-CSDN博客_pytorch镜像 国内源安装pytorch的方法 - 知乎 PS: PyTorch 不用装 cudnn,集成在 cudatoolkit 里面了 Windows + Conda + CUDA 11.3
1
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
中途输入 y ,确定安装 PS conda install -c 中 -c 即 --channel 它用于指定搜索包的频道, -c pytorch 即使用 pytorch 频道源 使用国内清华源
1
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/

PyTorch GPU 测试

参考: Pytorch中利用GPU训练,CPU测试 - SuperGqq - 博客园 pytorch:测试GPU是否可用 - 码农岛 PyTorch_GPU加速测试_AI 黎明的博客-CSDN博客_pytorch 测试gpu
test1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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

1
2
3
4
WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(139): Could not remove or rename D:\anaconda3\pkgs\pytorch-1.11.0-py3.8_cuda11.3_cudnn8_0\Lib\site-packages\torch\lib\torch_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:\anaconda3\pkgs\pytorch-1.11.0-py3.8_cuda11.3_cudnn8_0\Lib\site-packages\torch\lib\torch_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:\n\nCould not unlink')
猜测是由于之前尝试安装过, 而中途放弃安装断开, 导致遗留残余文件 解决: 尝试先删除 提示中的 4 个路径 的 文件夹及文件
1
2
3
4
5
D:\anaconda3\pkgs\pytorch-1.11.0-py3.8_cuda11.3_cudnn8_0
D:\anaconda3\pkgs\torchaudio-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

打包 Dockerfile

参考: 【AI框架】MMDetection3D 目标检测框架的 Docker 环境制作和改良_杨丝儿的博客-CSDN博客
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ARG PYTORCH="1.11.0"
ARG CUDA="11.4"
ARG CUDNN="7"

FROM pytorch/pytorch:{{hbeSeoContent}}#123;PYTORCH}-cuda{{hbeSeoContent}}#123;CUDA}-cudnn{{hbeSeoContent}}#123;CUDNN}-devel

ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"

# 更换 国内源
RUN apt-get update\
&& apt install ca-certificates
COPY ./sources.list /etc/apt/sources.list

RUN apt-get update \
&& ENV DEBIAN_FRONTEND=noninteractive apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# ...
参考 感谢帮助!