修订历史:
- 2025-02-11 初稿
PyTorch GPU 版安装
graph TD
A[验证CUDA版本] --> B{11.8+?}
B -->|Yes| C[创建conda环境]
B -->|No| D[升级显卡驱动]
C --> E[选择安装命令]
E --> F[基础包安装]
F --> G[验证安装: torch.cuda.is_available]
🛠 ️环境准备
- Python 3.9.16 (Anaconda)
- CUDA 11.8 (nvidia-smi验证)
- cuDNN 8.6.0
📝 核心安装步骤
-
创建虚拟环境
conda create -n pt23 python=3.9 conda activate pt23 -
官方安装命令
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -
验证安装是否成功
| 测试项 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|
import torch | 无报错 | 成功 | ✅ |
torch.__version__ | 2.3.0+cu118 | 2.3.0 | ⚠ ️ 需检查CUDA显示 |
torch.cuda.is_available() | True | False | ❌ 需排查驱动 |
🔍 安装过程实录
# 2025-02-10 22:30:00 开始安装
$ conda list | grep cudatoolkit
>> cudatoolkit 11.8.0 h37603d3_12 # 已预装
$ pip install torch==2.3.0+cu118 --extra-index-url https://download...
Collecting torch==2.3.0+cu118
Downloading torch-2.3.0-cp39-cp39-win_amd64.whl (186.2 MB)
━━━━━━━━━━━━━━━━━━━━━━ 186.2/186.2 MB 4.2 MB/s eta 0:00:00
# 2025-02-10 22:35:12 安装完成
Successfully installed torch-2.3.0+cu118
🚨 安装常见问题库
❗ERROR: Could not find version...
- 现象:报错提示
ERROR: Could not find version... - 解决方案:更换清华镜像源
- 验证命令:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
❗ No CUDA runtime is found
-
现象:安装成功后运行
torch.cuda.is_available()返回 False -
排查步骤
- 检查NVIDIA驱动版本:
nvidia-smi显示Driver Version 525.89.02 - 验证CUDA兼容性:需Driver >= 520.61.05
- 检查环境变量:
echo $PATH是否包含CUDA路径
- 检查NVIDIA驱动版本:
-
解决方案
- 更新驱动到530.41.03+
- 重装CUDA 11.8开发包
- 添加环境变量:
export PATH=/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
PyCharm 或 ssh 中 PyTorch 无法顺利调用 GPU 问题
此问题常见于通过 PyCharm 调用远程服务器上的 PyTorch 环境。例如,假设远程服务器上存在一个名为 test_remote_gpu_invoke.py 的 Python 脚本程序,
import os
import torch
print(torch.cuda.is_available())
print("PATH:", os.environ.get("PATH"))
print("LD_LIBRARY_PATH", os.environ.get("LD_LIBRARY_PATH"))
print("BASH_ENV", os.environ.get("BASH_ENV"))
现象
现象一
通过 ssh 命令远程执行服务器上的脚本程序 test_remote_gpu_invoke.py:
ssh root@192.168.xx.xxx -p xxxx python -u /home/env_test/test_remote_gpu_invoke.py,Torch CUDA 调用返回结果为 False,即 Torch 调用 GPU 失败。
但直接 ssh 远程登录服务器,执行该 python 程序时,Torch CUDA 调用返回结果为 True。
现象二
当使用 Pycharm 中的 Python Console (远程服务器),CUDA 调用返回结果为 False。
现象三
在配置好 Pycharm 中 Python 解释器为服务器端的 python 时, 执行脚本 test_remote_gpu_invoke.py,Torch 调用 CUDA 返回 False
问题分析
上述问题的根源,简而言之,在于 Bash 在不同启动环境下所依赖的初始化文件存在差异。具体而言,Bash 的运作流程如下:首先读取相应的配置文件,然后依次执行A、B、C等步骤。在此过程中,B1、B2、B3等表示仅执行所找到的第一个对应文件。
+----------------+-----------+-----------+------+
| |Interactive|Interactive|Script|
| |login |non-login | |
+----------------+-----------+-----------+------+
|/etc/profile | A | | |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc| | A | |
+----------------+-----------+-----------+------+
|~/.bashrc | | B | |
+----------------+-----------+-----------+------+
|~/.bash_profile | B1 | | |
+----------------+-----------+-----------+------+
|~/.bash_login | B2 | | |
+----------------+-----------+-----------+------+
|~/.profile | B3 | | |
+----------------+-----------+-----------+------+
|BASH_ENV | | | A |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
|~/.bash_logout | C | | |
+----------------+-----------+-----------+------+
Pasted from: https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/
- 通过 ssh 方式登录服务器,属于 login + interactive(交互式)
- 远程执行脚本,例如
ssh user@remote script.sh,属于 non-log + non-interactive - 服务器上直接执行脚本,例如
bash script.sh,也属于 non-log + non-interactive - 远程执行脚本,同时请求控制台,如
ssh user@remote -t 'echo $PWD':non-login + interactive
解决方案
针对上述问题的通用解决方案如下:
- 在
/etc/ld.so.conf.d目录下创建一个新的.conf配置文件。 - 在该配置文件中添加所需库文件的路径,例如:
/usr/local/cuda/compat/lib/usr/local/nvidia/lib和/usr/local/nvidia/lib64。通常情况下,安装 Nvidia 后,这两个路径会自动添加到/etc/ld.so.conf.d/nvidia.conf配置文件中。/usr/local/cuda/lib64,通常默认位于/etc/ld.so.conf.d/cuda.conf中。
- 注意:如果
.conf配置文件中需要包含多个路径,请确保每个路径单独占一行。
root@f467ec96f8d7:/home/env_test# vim /etc/ld.so.conf.d/libc.conf # 通过 vim 命令新建 libc.conf 配置文件,填入如下内容
# libc default configuration
/usr/local/lib
/usr/local/cuda/compat/lib
root@f467ec96f8d7:/home/env_test# ldconfig # 使配置更改生效
PyTorch 学习资源
1. 官方文档与教程
| 资源名称 | 描述 | 链接 |
|---|---|---|
| PyTorch官方文档 | 官方发布的文档,内容丰富,涵盖PyTorch的各个方面,适合入门及进阶学习。 | PyTorch官方文档 |
| PyTorch官方教程 | 官方编写的教程,可结合Colab进行实践学习,适合初学者入门。 | PyTorch官方教程 |
2. 在线课程与视频教程
| 资源名称 | 描述 | 链接 |
|---|---|---|
| 动手学深度学习 | 由李沐老师主讲的深度学习入门课程,拥有成熟的书籍和课程资源,在B站、YouTube均有回放。 | 动手学深度学习 |
| 莫烦PyTorch教程 | 由莫烦老师制作的PyTorch系列视频教程,内容深入浅出,适合初学者。 | 莫烦PyTorch教程 |
3. GitHub项目与资源
| 资源名称 | 描述 | 链接 |
|---|---|---|
| Awesome-pytorch-list | 收录了NLP、CV、常见库、论文实现以及PyTorch的其他项目,获得12K Star。 | Awesome-pytorch-list |
| PyTorch-Handbook | GitHub上的PyTorch手册,已获得14.8K Star,提供了PyTorch的详细指南。 | PyTorch-Handbook |
4. 书籍推荐
| 书籍名称 | 描述 | 链接 |
|---|---|---|
| 深度学习入门:基于PyTorch | 由浅入深地介绍了深度学习的基本概念和PyTorch的使用方法,适合初学者。 | 深度学习入门:基于PyTorch |
| PyTorch深度学习实战 | 通过实际案例,深入讲解了PyTorch在深度学习中的应用,适合有一定基础的读者。 | PyTorch深度学习实战 |
5. 社区与论坛
| 资源名称 | 描述 | 链接 |
|---|---|---|
| PyTorch官方社区 | PyTorch拥有一个活跃的社区,在这里可以与开发者交流,解决学习中的问题。 | PyTorch官方社区 |
这些资源涵盖了PyTorch的各个方面,适合不同层次的学习者。