安装和验证深度学习框架PyTorch

一、什么是PyTorch

PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架,主要用于构建和训练神经网络,支持Python语言,对于熟悉Python的开发者来说非常友好。

1、主要特点

  • 动态计算图:与TensorFlow等其他框架使用的静态计算图不同,PyTorch使用动态计算图,允许在运行时改变计算图,提高了模型的灵活性和调试的便利性。
  • 易用性:PyTorch的API设计直观,使得学习和使用变得简单愉快,尤其适合Python程序员。
  • 广泛的预训练模型:PyTorch提供了大量的预训练模型,如ResNet、VGG、Inception等,这些模型可以帮助研究人员快速开始新的项目。
  • 高效的GPU利用:PyTorch能够高效地利用NVIDIA的CUDA库进行GPU计算,并支持分布式计算,使得在多个GPU或服务器上训练模型成为可能。

2、主要用途

  • 计算机视觉:图像分类、目标检测、语义分割、图像生成等。
  • 自然语言处理:文本分类、情感分析、命名实体识别、机器翻译、语言生成等。
  • 强化学习:游戏AI、机器人控制、自动驾驶等。

二、安装PyTorch-CPU版本

要安装PyTorch,您需要在计算机上安装Python和包管理器conda或pip(Python的包管理器)。

1、通过conda安装

conda create -n pytorch-cpu python=3.10
conda activate pytorch-cpu
conda install pytorch torchvision torchaudio cpuonly -c pytorch

说明:

  • pytorch torchvision torchaudio:这些是要安装的软件包名称。PyTorch是主要的深度学习框架,torchvision是用于处理图像数据的库,torchaudio则是用于处理音频数据的库。
  • -c pytorch 用于指定从 PyTorch 官方频道安装包
  • cpuonly:这是一个额外的软件包,用于指示只安装CPU版本的PyTorch,而不安装GPU支持的版本。

安装过程:

The following NEW packages will be INSTALLED:

cpuonly           pytorch/noarch::cpuonly-2.0-0
freetype           pkgs/main/win-64::freetype-2.12.1-ha860e81_0
gmpy2             pkgs/main/win-64::gmpy2-2.1.2-py310h7f96b67_0
jinja2             pkgs/main/win-64::jinja2-3.1.4-py310haa95532_0
jpeg               pkgs/main/win-64::jpeg-9e-h827c3e9_3
lcms2             pkgs/main/win-64::lcms2-2.12-h83e58a3_0
lerc               pkgs/main/win-64::lerc-3.0-hd77b12b_0
libdeflate         pkgs/main/win-64::libdeflate-1.17-h2bbff1b_1
libjpeg-turbo     pkgs/main/win-64::libjpeg-turbo-2.0.0-h196d8e1_0
libpng             pkgs/main/win-64::libpng-1.6.39-h8cc25b3_0
libtiff           pkgs/main/win-64::libtiff-4.5.1-hd77b12b_0
libuv             pkgs/main/win-64::libuv-1.48.0-h827c3e9_0
libwebp-base       pkgs/main/win-64::libwebp-base-1.3.2-h2bbff1b_0
markupsafe         pkgs/main/win-64::markupsafe-2.1.3-py310h2bbff1b_0
mpc               pkgs/main/win-64::mpc-1.1.0-h7edee0f_1
mpfr               pkgs/main/win-64::mpfr-4.0.2-h62dcd97_1
mpir               pkgs/main/win-64::mpir-3.0.0-hec2e145_1
mpmath             pkgs/main/win-64::mpmath-1.3.0-py310haa95532_0
networkx           pkgs/main/win-64::networkx-3.3-py310haa95532_0
openjpeg           pkgs/main/win-64::openjpeg-2.5.2-hae555c5_0
pillow             pkgs/main/win-64::pillow-10.4.0-py310h827c3e9_0
**pytorch           pytorch/win-64::pytorch-2.4.1-py3.10_cpu_0**
pytorch-mutex     pytorch/noarch::pytorch-mutex-1.0-cpu
sympy             pkgs/main/win-64::sympy-1.13.2-py310haa95532_0
torchaudio         pytorch/win-64::torchaudio-2.4.1-py310_cpu
torchvision       pytorch/win-64::torchvision-0.19.1-py310_cpu

Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

以pytorch-cpu环境为例,查看已安装的pytorch版本:

(pytorch-cpu) D:\>conda list pytorch
# packages in environment at D:\Work-Data\conda3\envs\pytorch-env:
#
# Name                   Version                   Build Channel
pytorch                   2.4.1             py3.10_cpu_0   pytorch
pytorch-mutex             1.0                         cpu   pytorch

(pytorch-cpu) C:\Users\admin>conda list cpuonly
# packages in environment at C:\AppData\Conda-Data\envs\pytorch-cpu:
#
# Name                   Version                   Build Channel
cpuonly                   2.0                           0   pytorch

三、安装PyTorch-GPU版本

1、对CUDA的依赖

PyTorch、CUDA和NVIDIA GPU驱动三者自上而下依赖。在安装PyTorch GPU版本之前,应先安装CUDA Toolkit,然后再安装cuDNN。这是因为cuDNN需要CUDA Toolkit的支持才能正常工作。从以下网址获取当前最新版本的PyTorch对CUDA的依赖关系:

[Start Locally | PyTorch](https://pytorch.org/get-started/locally/)
pytorch-cuda.png

可以发现PyTorch 2.5.1对CUDA最低要求是11.8。安装方法为:

conda create -n pytorch-gpu python=3.10
conda activate pytorch-gpu
# CUDA 11.8
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
# conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

(pytorch-gpu) C:\Users\admin>conda list pytorch
# packages in environment at C:\AppData\Conda-Data\envs\pytorch-gpu:
#
# Name                   Version                   Build Channel
pytorch                   2.5.1           py3.10_cuda11.8_cudnn9_0   pytorch
pytorch-cuda             11.8                 h24eeafa_6   pytorch
pytorch-mutex             1.0                       cuda   pytorch

2、安装CUDA和cuDNN

参考AI开发环境搭建合集中的《CUDA和cuDNN的安装》。

3、历史版本的安装

获取PyTorch历史版本的安装方法可参考如下链接:

[Previous PyTorch Versions | PyTorch](https://pytorch.org/get-started/previous-versions/)

3.1、PyTorch2.6.0

# ROCM 6.1 (Linux only)
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/rocm6.1
# ROCM 6.2.4 (Linux only)
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/rocm6.2.4
# CUDA 11.8
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.4
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
# CUDA 12.6
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126
# CPU only
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cpu

3.2、PyTorch2.5.1

# CUDA 11.8
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
# CUDA 12.1
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
# CUDA 12.4
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
# CPU Only
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 cpuonly -c pytorch

3.3、PyTorch2.4.1

以安装PyTorch2.4.1为例,方法为:

# CUDA 11.8
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 pytorch-cuda=11.8 -c pytorch -c nvidia
# CUDA 12.1
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 pytorch-cuda=12.1 -c pytorch -c nvidia
# CUDA 12.4
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 pytorch-cuda=12.4 -c pytorch -c nvidia
# CPU Only
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 cpuonly -c pytorch

例如,检测已安装CUDA工具包版本信息为12.2版本:

C:\App\cuda12-2-Dev\bin>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:42:34_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0

选择合适的CUDA版本进行安装,例如pytorch-cuda=12.1:

conda create -n pytorch241-gpu python=3.10
conda activate pytorch241-gpu
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 pytorch-cuda=12.1 -c pytorch -c nvidia

检查已安装python和pytorch版本信息:

python                    3.10.15              h4607a30_1    anaconda
pytorch                   2.4.1           py3.10_cuda12.1_cudnn9_0   pytorch
pytorch-cuda             12.1                 hde6ce7c_6   pytorch
pytorch-mutex             1.0                       cuda   pytorch
torchaudio               2.4.1                   pypi_0   pypi
torchvision               0.19.1                   pypi_0   pypi
...

若使用预编译好的 Wheel 文件来安装 PyTorch 库,方法如下:

# ROCM 6.1 (Linux only)
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/rocm6.1
# CUDA 11.8
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.1
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121
# CUDA 12.4
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124
# CPU only
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cpu

4、检测版本号

要检测 PyTorch 中 GPU 的版本号,您可以使用以下 Python 代码片段来获取 CUDA 版本以及 GPU 设备的详细信息。

源码test-pytorch-gpu.py:

import torch

# 获取 CUDA 版本
cuda_version = torch.version.cuda
print(f"CUDA 版本: {cuda_version}")

# 检查是否有可用的 GPU
if torch.cuda.is_available():
   # 获取 GPU 设备数量
   gpu_count = torch.cuda.device_count()
   print(f"GPU 设备数量: {gpu_count}")

   # 遍历所有 GPU 设备并打印详细信息
   for i in range(gpu_count):
       gpu_name = torch.cuda.get_device_name(i)
       gpu_capability = torch.cuda.get_device_capability(i)
       gpu_device = f"GPU {i}: {gpu_name} (计算能力: {gpu_capability[0]}.{gpu_capability[1]})"
       print(gpu_device)
else:
   print("没有检测到 GPU 设备。")

这段代码首先导入了 PyTorch 库,然后获取了 CUDA 的版本号。接着,它检查是否有可用的 GPU 设备。如果有,它会打印出 GPU 设备的数量,并遍历每个 GPU 设备,打印出它们的名称和计算能力(即 GPU 版本号)。如果没有检测到 GPU 设备,它会打印出相应的消息。

输出结果样例:

(pytorch241-gpu) C:\AiSelect1\Ai-Basic>python test-pytorch-gpu.py
CUDA 版本: 12.1
GPU 设备数量: 1
GPU 0: NVIDIA GeForce MX150 (计算能力: 6.1)

或使用 python -c 来执行动态生成的代码检查是否支持CUDA:

(pytorch241-gpu) C:\Users\86138>python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
2.4.1
True

四、Pytorch与Torch的关系

在 PyTorch 中,pytorchtorch 通常指的是 同一个框架,但它们在不同上下文中有不同的含义和用途:

1. torch核心库:

  • torch 是 PyTorch 的 核心库,它包含了实现张量运算、自动求导、神经网络构建等功能的模块。
  • 你通过 import torch 来访问 PyTorch 的核心功能。这个模块提供了基本的操作,比如张量(tensor)创建、数学运算、线性代数、自动求导等。示例:import torch
    x = torch.tensor([1.0, 2.0, 3.0])
    y = torch.tensor([4.0, 5.0, 6.0])
    z = x + y  # 张量加法
    print(z)

2. pytorch框架:

  • pytorch 是指整个框架的名称,包括但不限于 torch 模块。它包含了多个子模块,如 torchvisiontorchaudiotorchtext 等,这些是专门为不同任务(如计算机视觉、音频处理、文本处理等)提供的扩展工具包。
  • 当你说 “PyTorch” 时,通常是指整个框架,包括 torch 和其他模块。安装 PyTorch 时,你会使用 conda install pytorchpip install torch,而这会安装整个 PyTorch 框架。

3. 两者的区别

  • torch:是 PyTorch 框架的核心库,提供基础操作,如张量运算、模型定义、自动求导等。
  • pytorch:指的是整个框架的名字,通常用于安装和配置环境时使用。例如,conda install pytorch 会安装 PyTorch 框架及其依赖。

4. torchpytorch 在包管理中的区别

conda install pytorch: 这是官方推荐的安装命令,安装的是 PyTorch 的完整框架,包括所有必要的模块和依赖。它会自动处理 PyTorch 所需的其他依赖项,如 torchvisiontorchaudio(如果你选择安装它们)。

示例:

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

该命令将安装 PyTorch,TorchVision(用于计算机视觉的工具包)和 Torchaudio(用于音频处理的工具包),并且根据指定的 cudatoolkit 版本自动安装相应的 GPU 支持库。

conda install torch: 在某些情况下,torch 可能指向 PyTorch 的核心模块名称(即 torch 是 PyTorch 的顶级模块)。但是,torch 包本身通常在 conda 中不会直接列为安装选项,而是与 pytorch 相关。因此,conda install torch 可能会导致错误,除非你的 conda 配置中有特定的包源,或者该命令在某些环境中指向 PyTorch 的安装包。

五、PyTorch对NLP的支持

sentence-transformers是一个基于PyTorch的Python库,用于训练、微调和部署句子嵌入模型。句子嵌入模型是一种自然语言处理(NLP)技术,用于将句子或文本片段转换为固定大小的向量表示。这些向量捕获了句子的语义信息,使得相似的句子在向量空间中彼此靠近。句子嵌入模型在许多NLP任务中都非常有用,如文本分类、情感分析、问答系统、机器翻译、文本相似度计算等。

conda install sentence-transformers
conda list sentence-transformers

输出:

# Name                    Version                   Build  Channel
sentence-transformers     3.3.1             pyhd8ed1ab_0   conda-forge

查看sentence-transformers开发包信息,包括包依赖信息:

pip show sentence-transformers

输出:

Name: sentence-transformers
Version: 3.3.1
Summary: State-of-the-Art Text Embeddings
Home-page: https://www.SBERT.net
Author:
Author-email: Nils Reimers <info@nils-reimers.de>, Tom Aarsen <tom.aarsen@huggingface.co>
License: Apache 2.0
Location: d:\app-data\conda3\envs\pytorch241-gpu\lib\site-packages
Requires: huggingface-hub, Pillow, scikit-learn, scipy, torch, tqdm, transformers
Required-by:

可以发现sentence-transformers依赖于:torch和transformers等开发包。

查看transformers开发包信息包括包依赖信息:

pip show transformers

输出:

Name: transformers
Version: 4.46.2
Summary: State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow
Home-page: https://github.com/huggingface/transformers
Author: The Hugging Face team (past and future) with the help of all our contributors (https://github.com/huggingface/transformers/graphs/contributors)
Author-email: transformers@huggingface.co
License: Apache 2.0 License
Location: d:\app-data\conda3\envs\pytorch241-gpu\lib\site-packages
Requires: filelock, huggingface-hub, numpy, packaging, pyyaml, regex, requests, safetensors, tokenizers, tqdm
Required-by: sentence-transformers

可发现sentence-transformers依赖于transformers。

发表评论