快速安装PyTorch简明教程
0. 前言
PyTorch是优秀的深度学习开发框架,在科研和工程中有着广泛的应用。本教程介绍如何快速搭建PyTorch运行环境。
1. 搭建基础的Python运行环境
step1: 下载安装包(https://mirrors.bfsu.edu.cn/)
1
wget -c "https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh" -O 'Miniconda3-latest-Linux-x86_64.sh'
step2: 安装(此处安装到 ~/.miniconda/)
1
/bin/bash ./Miniconda3-latest-Linux-x86_64.sh -b -u -p "$HOME/.miniconda"
step3: 修改shell的配置文件
❶如果使用bash,那么执行如下语句
1
cat >> "$HOME/.bashrc" <<'EOF'
2
# >>> conda init >>>
3
if [ -f "$HOME/.miniconda/etc/profile.d/conda.sh" ]; then
4
source "$HOME/.miniconda/etc/profile.d/conda.sh"
5
CONDA_CHANGEPS1=true conda activate base
6
else
7
export PATH="$HOME/.miniconda/bin:$PATH"
8
fi
9
# <<< conda init <<<
10
EOF
11
12
# !!! 重新加载配置文件(很重要)
13
source "$HOME/.bashrc"
❷如果使用zsh,那么执行如下语句
1
cat >> "$HOME/.zshrc" <<'EOF'
2
# >>> conda init >>>
3
if [ -f "$HOME/.miniconda/etc/profile.d/conda.sh" ]; then
4
source "$HOME/.miniconda/etc/profile.d/conda.sh"
5
CONDA_CHANGEPS1=true conda activate base
6
else
7
export PATH="$HOME/.miniconda/bin:$PATH"
8
fi
9
# <<< conda init <<<
10
EOF
11
12
# !!! 重新加载配置文件(很重要)
13
source "$HOME/.zshrc"
step4: 设置pip软件仓库的国内镜像地址:
✵注:可以把https://mirrors.bfsu.edu.cn替换为https://mirrors.tuna.tsinghua.edu.cn/
1
pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
step5: 设置anaconda软件仓库的国内镜像地址
✵注:可以把https://mirrors.bfsu.edu.cn替换为https://mirrors.tuna.tsinghua.edu.cn/
1
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
2
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
3
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch
4
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
5
conda config --set show_channel_urls yes
✵注:如果conda镜像有问题,可尝试直接修改文件 ~/.condarc为如下内容:
1
channels:
2
- https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge
3
- https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch
4
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
5
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
6
show_channel_urls: true
7
report_errors: false
2. 安装PyTorch
参考官网给出的安装方法:https://pytorch.org/
如图所示:
2.1 在MacOS系统上安装
参考链接: https://pytorch.org/get-started/previous-versions/
使用conda
1
conda create -n Torch python=3.12 nomkl
2
conda activate Torch
3
4
conda install pytorch torchvision torchaudio
使用pip
1
conda create -n Torch python=3.12 nomkl
2
conda activate Torch
3
4
# 安装最新版本
5
pip install torch torchvision torchaudio
6
# 安装1.12
7
pip install torch==1.12 torchvision torchaudio
8
# 安装1.13
9
pip install torch==1.13 torchvision torchaudio
2.2 在Linux/Windows系统上安装
参考链接: https://pytorch.org/get-started/previous-versions/
2.2.1 仅支持CPU的PyTorch
使用conda
1
conda create -n Torch python=3.12
2
conda activate Torch
3
4
conda install pytorch torchvision torchaudio cpuonly
使用pip
1
conda create -n Torch python=3.12
2
conda activate Torch
3
4
# 安装最新版本
5
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
6
# 安装1.12
7
pip install torch==1.12 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
8
# 安装1.13
9
pip install torch==1.13 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
2.2.2 支持GPU的PyTorch
✵注:选择安装的cuda版本必须低于操作系统支持的cuda版本(高版本的cuda需要较新的显卡驱动来支持)。在Linux系统上可用命令 nvidia-smi 进行检查,如图所示:
2.2.2.1 使用conda(⚠⚠⚠注:适用于1.12以及低版本的PyTorch)
1
conda create -n Torch python=3.12
2
conda activate Torch
3
4
# ①CUDA 10.2
5
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2
6
# ②CUDA 11.3
7
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3
8
# ③CUDA 11.6
9
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6
2.2.2.2 使用pip (推荐,特别是适用于1.12及后续版本的PyTorch)
特别注意,首先根据cuda版本(nvidia-smi
)选择可用的PyTorch版本和Python版本。👉附录5.1【PyTorch官网PIP仓库地址表】列举了不同cuda版本对应的PIP仓库地址,👉附录5.2【PyTorch版本速查表】列举了可用的cuda、PyTorch、Python版本组合,需要根据实际情况进行安装。下面举个例子说明操作流程:
❶ 用nvidia-smi
查看服务器的cuda版本,发现是12.4
,查表可知可用的cuda版本有:12.4,12.1,11.8,11.7,11.6,11.3,11.1,11.0,10.2,10.1,10.0,9.2等(提示🔔:①挑选的cuda版本要小于等于
服务器安装的cuda版本,②强烈推荐用与服务器相同的cuda版本,虽然用低版本的cuda也能运行,但是没有严格保证,可能会浪费更多的时间排除错误)。cuda=12.4
的pip仓库地址就是 https://download.pytorch.org/whl/cu124
,cuda=11.8
对应的仓库地址是 https://download.pytorch.org/whl/cu118
,以此类推。👉附录5.1【PyTorch官网PIP仓库地址表】;此例选取cuda=12.4
;
❷ 当cuda=12.4
时,查表可知可用的Python版本有3.8,3.9,3.10,3.11,3.12等,此例选取python=3.12
;
❸ 当cuda=12.4
,python=3.12
时,查表可知可用的PyTorch版本有:2.4.0+cu124
等,此例选取torch=2.4.0+cu124
。
1
conda create -n Torch python=3.12
2
conda activate Torch
3
4
# 不明确torch版本,让pip自动选择
5
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
6
# 明确指定torch版本
7
pip install torch==2.4.0+cu124 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
2.2.2.3 测试PyTorch能否正常使用GPU
1
unset CUDA_VISIBLE_DEVICES
2
python -c "import torch;print(torch.cuda.is_available())"
若结果如下图所示,则表示安装成功!
1
$ python -c "import torch;print(torch.cuda.is_available())"
2
True
3. 运行PyTorch程序(Linux系统)
step1: 查看显卡运行状态
1
nvidia-smi
如图所示:
step2: 设置使用哪些显卡
1
# 使用编号为2和3的显卡
2
export CUDA_VISIBLE_DEVICES='2,3'
step3: 运行程序:
1
python -Bu my_script.py
4. FAQ
Q: 设置CUDA_VISIBLE_DEVICES后,为了不能使用显卡?
A:
- 检查是否正确安装支持cuda的PyTorch,如果错误安装了仅支持cpu的PyTorch,删除虚拟环境重新来一遍。
- 检查安装的cuda版本号是否高于操作系统支持的cuda版本号?如果是,则删除次虚拟环境,重新安装低版本的PyTorch。历史版本的PyTorch可查看 https://pytorch.org/get-started/previous-versions/
- 检查程序是否正确切换到cuda设别。
Q:使用多显卡训练时(DataParallel或DistributedDataParallel),程序卡住?
A:
1. 检查程序是否错误使用了同步锁等;
2. 对于特殊的显卡,尝试设置环境变量 export NCCL_P2P_DISABLE=1
;
3. 设置环境变量 NCCL_SOCKET_IFNAME
和 NCCL_IB_DISABLE
,这两个环境变量用来控制显卡网络通信;
- NCCL_SOCKET_IFNAME 用来指定网卡设备,可用ip addr
来获取,如图所示
- 若是单机多卡训练,可以设置 export NCCL_SOCKET_IFNAME=lo
;
- 若是多机多卡训练,此处这样设置 export NCCL_SOCKET_IFNAME=eno1
,具体数值根据获取的信息为准。
- NCCL_IB_DISABLE,当指定网卡设备不是InfiniBand
(普通服务器的网卡是以太网只有100M~10G带宽,而InfiniBand有200G带宽)时,设置 export NCCL_IB_DISABLE=1
4. 上述环境变量可以添加在程序的启动脚本,或者用户shell配置文件: ~/.bashrc
,~/.zshrc
等。
5. 附录
5.1 PyTorch官网PIP仓库地址表
12.4 | https://download.pytorch.org/whl/cu124 |
12.1 | https://download.pytorch.org/whl/cu121 |
11.8 | https://download.pytorch.org/whl/cu118 |
11.7 | https://download.pytorch.org/whl/cu117 |
11.6 | https://download.pytorch.org/whl/cu116 |
11.3 | https://download.pytorch.org/whl/cu113 |
11.1 | https://download.pytorch.org/whl/cu111 |
11.0 | https://download.pytorch.org/whl/cu110 |
10.2 | https://download.pytorch.org/whl/cu102 |
10.1 | https://download.pytorch.org/whl/cu101 |
10.0 | https://download.pytorch.org/whl/cu100 |
9.2 | https://download.pytorch.org/whl/cu92 |
9.0 | https://download.pytorch.org/whl/cu90 |
5.2 PyTorch版本速查表
Cuda版本 | Python版本 | PyTorch版本 |
---|---|---|
12.4 | 3.12 | 2.4.0+cu124 |
3.11 | 2.4.0+cu124 | |
3.10 | 2.4.0+cu124 | |
3.9 | 2.4.0+cu124 | |
3.8 | 2.4.0+cu124 | |
12.1 | 3.12 | 2.4.0+cu121, 2.3.1+cu121, 2.3.0+cu121, 2.2.2+cu121, 2.2.1+cu121, 2.2.0+cu121 |
3.11 | 2.4.0+cu121, 2.3.1+cu121, 2.3.0+cu121, 2.2.2+cu121, 2.2.1+cu121, 2.2.0+cu121, 2.1.2+cu121, 2.1.1+cu121, 2.1.0+cu121 | |
3.10 | 2.4.0+cu121, 2.3.1+cu121, 2.3.0+cu121, 2.2.2+cu121, 2.2.1+cu121, 2.2.0+cu121, 2.1.2+cu121, 2.1.1+cu121, 2.1.0+cu121 | |
3.9 | 2.4.0+cu121, 2.3.1+cu121, 2.3.0+cu121, 2.2.2+cu121, 2.2.1+cu121, 2.2.0+cu121, 2.1.2+cu121, 2.1.1+cu121, 2.1.0+cu121 | |
3.8 | 2.4.0+cu121, 2.3.1+cu121, 2.3.0+cu121, 2.2.2+cu121, 2.2.1+cu121, 2.2.0+cu121, 2.1.2+cu121, 2.1.1+cu121, 2.1.0+cu121 | |
11.8 | 3.12 | 2.4.0+cu118, 2.3.1+cu118, 2.3.0+cu118, 2.2.2+cu118, 2.2.1+cu118, 2.2.0+cu118 |
3.11 | 2.4.0+cu118, 2.3.1+cu118, 2.3.0+cu118, 2.2.2+cu118, 2.2.1+cu118, 2.2.0+cu118, 2.1.2+cu118, 2.1.1+cu118, 2.1.0+cu118, 2.0.1+cu118, 2.0.0+cu118 | |
3.10 | 2.4.0+cu118, 2.3.1+cu118, 2.3.0+cu118, 2.2.2+cu118, 2.2.1+cu118, 2.2.0+cu118, 2.1.2+cu118, 2.1.1+cu118, 2.1.0+cu118, 2.0.1+cu118, 2.0.0+cu118 | |
3.9 | 2.4.0+cu118, 2.3.1+cu118, 2.3.0+cu118, 2.2.2+cu118, 2.2.1+cu118, 2.2.0+cu118, 2.1.2+cu118, 2.1.1+cu118, 2.1.0+cu118, 2.0.1+cu118, 2.0.0+cu118 | |
3.8 | 2.4.0+cu118, 2.3.1+cu118, 2.3.0+cu118, 2.2.2+cu118, 2.2.1+cu118, 2.2.0+cu118, 2.1.2+cu118, 2.1.1+cu118, 2.1.0+cu118, 2.0.1+cu118, 2.0.0+cu118 | |
11.7 | 3.11 | 2.0.1+cu117, 2.0.0+cu117, 1.13.1+cu117, 1.13.0+cu117 |
3.10 | 2.0.1+cu117, 2.0.0+cu117, 1.13.1+cu117, 1.13.0+cu117 | |
3.9 | 2.0.1+cu117, 2.0.0+cu117, 1.13.1+cu117, 1.13.0+cu117 | |
3.8 | 2.0.1+cu117, 2.0.0+cu117, 1.13.1+cu117, 1.13.0+cu117 | |
3.7 | 1.13.1+cu117, 1.13.0+cu117 | |
11.6 | 3.11 | 1.13.1+cu116, 1.13.0+cu116 |
3.10 | 1.13.1+cu116, 1.13.0+cu116, 1.12.1+cu116, 1.12.0+cu116 | |
3.9 | 1.13.1+cu116, 1.13.0+cu116, 1.12.1+cu116, 1.12.0+cu116 | |
3.8 | 1.13.1+cu116, 1.13.0+cu116, 1.12.1+cu116, 1.12.0+cu116 | |
3.7 | 1.13.1+cu116, 1.13.0+cu116, 1.12.1+cu116, 1.12.0+cu116 | |
11.3 | 3.10 | 1.12.1+cu113, 1.12.0+cu113, 1.11.0+cu113 |
3.9 | 1.12.1+cu113, 1.12.0+cu113, 1.11.0+cu113, 1.10.2+cu113, 1.10.1+cu113, 1.10.0+cu113 | |
3.8 | 1.12.1+cu113, 1.12.0+cu113, 1.11.0+cu113, 1.10.2+cu113, 1.10.1+cu113, 1.10.0+cu113 | |
3.7 | 1.12.1+cu113, 1.12.0+cu113, 1.11.0+cu113, 1.10.2+cu113, 1.10.1+cu113, 1.10.0+cu113 | |
3.6 | 1.10.2+cu113, 1.10.1+cu113, 1.10.0+cu113 | |
11.1 | 3.9 | 1.9.1+cu111, 1.9.0+cu111, 1.8.1+cu111, 1.8.0+cu111, 1.10.2+cu111, 1.10.1+cu111, 1.10.0+cu111 |
3.8 | 1.9.1+cu111, 1.9.0+cu111, 1.8.1+cu111, 1.8.0+cu111, 1.10.2+cu111, 1.10.1+cu111, 1.10.0+cu111 | |
3.7 | 1.9.1+cu111, 1.9.0+cu111, 1.8.1+cu111, 1.8.0+cu111, 1.10.2+cu111, 1.10.1+cu111, 1.10.0+cu111 | |
3.6 | 1.9.1+cu111, 1.9.0+cu111, 1.8.1+cu111, 1.8.0+cu111, 1.10.2+cu111, 1.10.1+cu111, 1.10.0+cu111 | |
11.0 | 3.9 | 1.7.1+cu110 |
3.8 | 1.7.1+cu110, 1.7.0+cu110 | |
3.7 | 1.7.1+cu110, 1.7.0+cu110 | |
3.6 | 1.7.1+cu110, 1.7.0+cu110 | |
10.2 | 3.10 | 1.12.1+cu102, 1.12.0+cu102, 1.11.0+cu102 |
3.9 | 1.9.1+cu102, 1.9.0+cu102, 1.8.1+cu102, 1.12.1+cu102, 1.12.0+cu102, 1.11.0+cu102, 1.10.2+cu102, 1.10.1+cu102, 1.10.0+cu102 | |
3.8 | 1.9.1+cu102, 1.9.0+cu102, 1.8.1+cu102, 1.12.1+cu102, 1.12.0+cu102, 1.11.0+cu102, 1.10.2+cu102, 1.10.1+cu102, 1.10.0+cu102 | |
3.7 | 1.9.1+cu102, 1.9.0+cu102, 1.8.1+cu102, 1.12.1+cu102, 1.12.0+cu102, 1.11.0+cu102, 1.10.2+cu102, 1.10.1+cu102, 1.10.0+cu102 | |
3.6 | 1.9.1+cu102, 1.9.0+cu102, 1.8.1+cu102, 1.10.2+cu102, 1.10.1+cu102, 1.10.0+cu102 | |
10.1 | 3.9 | 1.8.1+cu101, 1.8.0+cu101, 1.7.1+cu101 |
3.8 | 1.8.1+cu101, 1.8.0+cu101, 1.7.1+cu101, 1.7.0+cu101, 1.6.0+cu101, 1.5.1+cu101, 1.5.0+cu101 | |
3.7 | 1.8.1+cu101, 1.8.0+cu101, 1.7.1+cu101, 1.7.0+cu101, 1.6.0+cu101, 1.5.1+cu101, 1.5.0+cu101 | |
3.6 | 1.8.1+cu101, 1.8.0+cu101, 1.7.1+cu101, 1.7.0+cu101, 1.6.0+cu101, 1.5.1+cu101, 1.5.0+cu101 | |
3.5 | 1.5.1+cu101, 1.5.0+cu101 | |
10.0 | 3.8 | 1.4.0+cu100 |
3.7 | 1.4.0+cu100, 1.3.1+cu100, 1.3.0+cu100 | |
3.6 | 1.4.0+cu100, 1.3.1+cu100, 1.3.0+cu100 | |
3.5 | 1.4.0+cu100, 1.3.1+cu100, 1.3.0+cu100 | |
9.2 | 3.9 | 1.7.1+cu92 |
3.8 | 1.7.1+cu92, 1.7.0+cu92, 1.6.0+cu92, 1.5.1+cu92, 1.5.0+cu92, 1.4.0+cu92 | |
3.7 | 1.7.1+cu92, 1.7.0+cu92, 1.6.0+cu92, 1.5.1+cu92, 1.5.0+cu92, 1.4.0+cu92, 1.3.1+cu92, 1.3.0+cu92, 1.2.0+cu92 | |
3.6 | 1.7.1+cu92, 1.7.0+cu92, 1.6.0+cu92, 1.5.1+cu92, 1.5.0+cu92, 1.4.0+cu92, 1.3.1+cu92, 1.3.0+cu92, 1.2.0+cu92 | |
3.5 | 1.5.1+cu92, 1.5.0+cu92, 1.4.0+cu92, 1.3.1+cu92, 1.3.0+cu92, 1.2.0+cu92 |