PyTorch 安装教程

2,704 阅读3分钟

修订历史:

  • 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

📝 核心安装步骤

  1. 创建虚拟环境

    conda create -n pt23 python=3.9 
    conda activate pt23 
    
  2. 官方安装命令

    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 
    
  3. 验证安装是否成功

测试项预期结果实际结果状态
import torch无报错成功
torch.__version__2.3.0+cu1182.3.0⚠ ️ 需检查CUDA显示
torch.cuda.is_available()TrueFalse❌ 需排查驱动

🔍 安装过程实录

# 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

  • 排查步骤

    1. 检查NVIDIA驱动版本:nvidia-smi显示Driver Version 525.89.02
    2. 验证CUDA兼容性:需Driver >= 520.61.05
    3. 检查环境变量:echo $PATH是否包含CUDA路径
  • 解决方案

    • 更新驱动到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
解决方案

针对上述问题的通用解决方案如下:

  1. /etc/ld.so.conf.d 目录下创建一个新的 .conf 配置文件。
  2. 在该配置文件中添加所需库文件的路径,例如:
    • /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 中。
  3. 注意:如果 .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-HandbookGitHub上的PyTorch手册,已获得14.8K Star,提供了PyTorch的详细指南。PyTorch-Handbook

4. 书籍推荐

书籍名称描述链接
深度学习入门:基于PyTorch由浅入深地介绍了深度学习的基本概念和PyTorch的使用方法,适合初学者。深度学习入门:基于PyTorch
PyTorch深度学习实战通过实际案例,深入讲解了PyTorch在深度学习中的应用,适合有一定基础的读者。PyTorch深度学习实战

5. 社区与论坛

资源名称描述链接
PyTorch官方社区PyTorch拥有一个活跃的社区,在这里可以与开发者交流,解决学习中的问题。PyTorch官方社区

这些资源涵盖了PyTorch的各个方面,适合不同层次的学习者。