一、什么是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 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 中,pytorch
和 torch
通常指的是 同一个框架,但它们在不同上下文中有不同的含义和用途:
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
模块。它包含了多个子模块,如torchvision
、torchaudio
、torchtext
等,这些是专门为不同任务(如计算机视觉、音频处理、文本处理等)提供的扩展工具包。- 当你说 “PyTorch” 时,通常是指整个框架,包括
torch
和其他模块。安装 PyTorch 时,你会使用conda install pytorch
或pip install torch
,而这会安装整个 PyTorch 框架。
3. 两者的区别:
torch
:是 PyTorch 框架的核心库,提供基础操作,如张量运算、模型定义、自动求导等。pytorch
:指的是整个框架的名字,通常用于安装和配置环境时使用。例如,conda install pytorch
会安装 PyTorch 框架及其依赖。
4. torch
和 pytorch
在包管理中的区别:
conda install pytorch: 这是官方推荐的安装命令,安装的是 PyTorch 的完整框架,包括所有必要的模块和依赖。它会自动处理 PyTorch 所需的其他依赖项,如 torchvision
和 torchaudio
(如果你选择安装它们)。
示例:
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。