文章目录
- 前言
- 一、Pytorch 详细安装流程及注意事项
- 二、常见报错汇总
- 2.1 pytorch 安装相关
- 2.1.1 ERROR: Could not find a version that satisfies the requirement torch==1.9.1+cu111 (from versions: 1.13.0, 1.13.0+cpu, 1.13.0+cu116, 1.13.0+cu117, 1.13.0+cu117.with.pypi.cudnn, 1.13.1, 1.13.1+cpu, 1.13.1+cu116, 1.13.1+cu117, 1.13.1+cu117.with.pypi.cudnn, 2.0.0, 2.0.0+cpu)
- 2.1.2 ConnectionError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Max retries exceeded with url: /whl/torch_stable.html (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f8b1c0b3d30>, 'Connection to download.pytorch.org timed out. (connect timeout=15)'))
- 2.1.2 ReadTimeoutError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Read timed out. (read timeout=15)
- 2.1.3 urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Read timed out. (read timeout=15)
- 2.1.4 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
- 2.1.5 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/linux-64/current_repodata.json>
- 2.2 MMdetection 相关
- 三、手动下载 pytorch
前言
由于有同学常常在 Ubuntu 中安装pytorch的过程中遇到很多问题(当然我也是...),所以打算把安装详细流程以及常见报错记录下来 希望能帮到大家
一些感想:
现在其实很多遇到的问题,问AI也能得到个大概的答案。那为什么还要记录这些繁琐的流程呢?
我自己觉得有一点是AI解答问题的时候无法图文并茂的对应解答,比如点击页面的什么地方、报错的文件夹结构、一些经验提醒等
一、Pytorch 详细安装流程及注意事项
1.1 确认机子的环境情况
需要确认的包括 ubuntu 版本、CUDA 版本
输入下面命令查看 ubuntu 版本,Description 显示了 Ubuntu 的版本号
lsb_release -a
输入下面命令查看 CUDA 版本,Cuda compilation tools, release XX.X 显示了 CUDA 版本
nvcc --version
记下自己机子的环境情况
如果未安装显卡驱动或cuda的小伙伴,可以参考【环境配置】Ubuntu深度学习环境配置全流程 的前面配置的部分
1.2 官网命令安装
PyTorch官网
来到官网,界面如下
点击 Get started
接着来到如下界面:
如果你想下载最新版本的pytorch
- 选择操作系统:linux、Mac、 Windows
- 选择安装方式:Conda、Pip、libtorch、Source(推荐使用Conda、Pip 安装)
- 选择自己的平台(CUDA、ROCm 6.2、CPU)
选择自己对应的版本后
复制下面Run this Command
框中的命令到终端即可下载,等待下载完成即可
这样会下载最新的pytorch,耐心等待安装完成即可
如果需要选择以前的版本,则点击 Previous PyTorch Versions
(通常推荐自己选择合适的版本下载,而不下载最新的版本)
一直下滑找到自己想要下载的版本
推荐pytorch1.x,当然显卡以及相关模型支持的话使用2.x也没有问题
这里以1.10.1为例
可以看到有有几种命令,分别对应不同的平台和版本
比如
这个则是对应使用conda安装,对应cuda是11.3
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
这个则是对应是用pip安装,对应cuda是11.1
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
注意!!
- 可能在选择版本的时候,若实在发现没有刚好对应自己 CUDA版本的pytorch安装命令,则选择低一点版本的命令即可。(如自己 CUDA11.6,则可以选择cuda11.3的pytorch安装)但是推荐还是安装对应版本的较好
- 我更加推荐使用pip安装,更加简洁,不依赖conda
好,经过漫长的等待…就安装成功了
验证
终端输入以下命令
python -c "import torch; print(f'PyTorch版本: {torch.__version__}'); print(f'CUDA是否可用: {torch.cuda.is_available()}')"
如果输出所需的版本,并且cuda可用的话,则表示pytoch安装成功!!
但是
如果不出意外的话,就出意外了…
相信不少人会遇到下面这些问题(参考第二章:常见报错汇总)
二、常见报错汇总
后期会持续记录…
2.1 pytorch 安装相关
2.1.1 ERROR: Could not find a version that satisfies the requirement torch==1.9.1+cu111 (from versions: 1.13.0, 1.13.0+cpu, 1.13.0+cu116, 1.13.0+cu117, 1.13.0+cu117.with.pypi.cudnn, 1.13.1, 1.13.1+cpu, 1.13.1+cu116, 1.13.1+cu117, 1.13.1+cu117.with.pypi.cudnn, 2.0.0, 2.0.0+cpu)
可能的原因
好像因为目前机子的pip 源不支持下载当前的pytorch之前的版本了,这个pip源只支持1.13.0或更新的版本,也就是可能python太新了
常见解决方案
方法一:降低python版本
重新装一个低版本的python(推荐3.8、3.9等)
在ubuntu中如果有conda,则
conda create -n name python=3.8
如果单独安装可以:
sudo apt install python3.8
如果输Windows的则,进入Python 官方下载页面
然后选择合适版本即可
方法二:选择pytroch 1.13.0及更新的版本下载
方法三:选择conda下载
2.1.2 ConnectionError: HTTPSConnectionPool(host=‘download.pytorch.org’, port=443): Max retries exceeded with url: /whl/torch_stable.html (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f8b1c0b3d30>, ‘Connection to download.pytorch.org timed out. (connect timeout=15)’))
2.1.2 ReadTimeoutError: HTTPSConnectionPool(host=‘download.pytorch.org’, port=443): Read timed out. (read timeout=15)
2.1.3 urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘download.pytorch.org’, port=443): Read timed out. (read timeout=15)
2.1.4 pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
2.1.5 CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://repo.anaconda.com/pkgs/main/linux-64/current_repodata.json
可能的原因
出现以上2.1.2 - 2.1.5
类似的报错,往往都是因为网络不稳定,读取或下载超时导致的
常见解决方案
- 刷新网络
- 切换热点尝试
- 选择 ‘更好的’ 网络进行尝试
如果上述切换网络的方法仍然出现,下载到一半就报错的
那么请参考手动下载!(见本文第三章:手动下载 pytorch)
2.2 MMdetection 相关
2.2.1 RuntimeError: CUDA error: no kernel image is available for execution on the device
在安装mmdetection相关的库的时候会出现的关于pytorch的报错
可能的完整报错:
File “/opt/conda/lib/python3.8/site-packages/pytorch_lightning/strategies/parallel.py”, line 111, in all_gather
return all_gather_ddp_if_available(tensor, group=group, sync_grads=sync_grads)
File “/opt/conda/lib/python3.8/site-packages/pytorch_lightning/utilities/distributed.py”, line 188, in all_gather_ddp_if_available
return AllGatherGrad.apply(tensor, group)
File “/opt/conda/lib/python3.8/site-packages/pytorch_lightning/utilities/distributed.py”, line 154, in forward
gathered_tensor = [torch.zeros_like(tensor) for _ in range(torch.distributed.get_world_size())]
File “/opt/conda/lib/python3.8/site-packages/pytorch_lightning/utilities/distributed.py”, line 154, in
gathered_tensor = [torch.zeros_like(tensor) for _ in range(torch.distributed.get_world_size())]
RuntimeError: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
可能的原因
-
PyTorch 和 CUDA 版本不匹配:
安装的 PyTorch 版本可能不支持当前 GPU 的 CUDA 版本。
例如,PyTorch 1.x 可能不支持较新的 GPU(如 Ampere 架构的 GPU)。 -
GPU 驱动问题:
GPU 驱动程序可能未正确安装,或者版本不匹配。 -
CUDA 工具包问题:
系统中安装的 CUDA 工具包可能与 PyTorch 或 GPU 不兼容。 -
PyTorch 安装问题:
PyTorch 可能未正确安装,或者安装时未选择正确的 CUDA 版本。
总而言之,pytroch版本不对应!!
常见解决方案
运行以下命令检查 PyTorch 的 CUDA 版本:
python -c "import torch; print(torch.version.cuda)"
如果输出的CUDA版本和预想的不一致则需要重新安装pytorch!!
可能中途在某个库的安装中,将pytorch的版本改变了
选择对应的版本 pytorch 进行重新安装
PyTorch 在 1.x.0 和 1.x.1 之间通常是兼容的,故 mmcv-full 只提供 1.x.0 的编译包。如果你 的 PyTorch 版本是 1.x.1,你可以放心地安装在 1.x.0 版本编译的 mmcv-ful
三、手动下载 pytorch
pip下载pytorch 速度太慢怎么办?如果速度很慢,实在不想等。推荐使用手动下载!!
该方法通常不会因为网络不稳定而导致下载失败,但是需要注意版本之间的适配情况
3.1 下载以及版本适配
进入下面的网址:
pytorch whl 下载
在里面找到 torch、torchaudio 、torchvision(这三个是必须的)
分别点进去,选择所需的对应的版本
重要的事情说三遍:
注意!!版本以及平台一定要手动选择对应好,否则后续无法正常安装
注意!!版本以及平台一定要手动选择对应好,否则后续无法正常安装
注意!!版本以及平台一定要手动选择对应好,否则后续无法正常安装
- touch后面对应的数字表示pytorch的版本
- cu111表示cuda11.1
- cp38表示python3.8的版本
- linux_x86 表示linux x86的版本
同时下载的 torchaudio 、torchvision也要对应版本
若不知道需要下载什么版本可以查看pytorch的官网里面对应的命令,参照命令对应下载版本即可
当然也可以评论留言讨论
比如命令
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
在linux 中则可以参考下载下面这三个包
注意,最后一个版本号数字可以比命令中的大
下载完成后,使用命令 pip install
依次将三个包安装即可
注意要先安装torch 再安装其他两个,不然又会自动帮你重新下载pytorch
3.2 验证
可以用下面的命令简单验证
python -c "import torch; print(torch.version.cuda)"
当然也可以使用下面的python脚本详细输出对应的版本号
import torch
import torchvision
import torchaudio
print("PyTorch version:", torch.__version__)
print("Torchvision version:", torchvision.__version__)
print("Torchaudio version:", torchaudio.__version__)
print("CUDA available:", torch.cuda.is_available())