Loading

离线环境中配置Pytorch环境

前言

在这里记录下整个过程。

由于实验室的服务器没有外网,只能离线安装运行深度学习所需要的环境,例如Pytorch,我的解决方案是:先在有网络的电脑上下载好Anconda和Pytorch所需要的Python版本,之后再下载所需要的whl文件whl文件通过Python的pip工具安装,实现安装即用

目标:

  • 安装Anconda
  • 安装Python
  • 安装所需的whl文件,例如torch-1.13.1+cu116-cp38-cp38-linux_x86_64.whl

快速下载Pytorch

方式一 官网给出使用conda或者pip的下载方式(不推荐)

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

注意:如果使用pip方式下载pytoch,大概率会自动下载cpu版本的pytorch

使用conda或者pip都需要添加下载源。conda添加国内的下载源

$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
$ conda config --set show_channel_urls yes

方式二 直接下载whl文件

直接下载还是有点慢,浏览器下载后,将正在下载whl文件复制链接到迅雷中进行下载会快很多。注意下载的torch,torchvision,torchaudio版本要对应,根据官网链接:https://pytorch.org/get-started/previous-versions/,下载对应的版本。例如,要下载1.13.1版本的torch,对应0.14.1的torchvision和0.13.1版本的torchaudio。可以在网站找到下面的文件,选择torch-1.13.1+cu116-cp38-cp38-linux_x86_64.whl文件,其中cu116表示cuda版本11.6,cp38表示Python版本为3.8,linux_x86_64表示Linux版本的x86_x64架构。

...
torch-1.13.1+cu116-cp310-cp310-linux_x86_64.whl
torch-1.13.1+cu116-cp310-cp310-win_amd64.whl
torch-1.13.1+cu116-cp311-cp311-linux_x86_64.whl
torch-1.13.1+cu116-cp37-cp37m-linux_x86_64.whl
torch-1.13.1+cu116-cp37-cp37m-win_amd64.whl
torch-1.13.1+cu116-cp38-cp38-linux_x86_64.whl
torch-1.13.1+cu116-cp38-cp38-win_amd64.whl
torch-1.13.1+cu116-cp39-cp39-linux_x86_64.whl
torch-1.13.1+cu116-cp39-cp39-win_amd64.whl
torch-1.13.1-cp39-none-macosx_11_0_arm64.whl
...

安装Anconda

先在有网的ubuntu系统上安装Anconda,Anconda集成了环境管理工具Conda,Conda可以隔离Python环境,使得不同版本的Python可以并存。选择要安装的Anconda版本,这里给出清华大学开源软件镜像站的Anconda下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=N&O=A

选择所需要的Anaconda版本,例如我选择的是Linux版本:Anaconda3-2023.09-0-Linux-x86_64.sh,下载好之后运行:

$ sudo chmod +x ./Anaconda3-2023.09-0-Linux-x86_64.sh # 修改可执行文件为可执行
$ ./Anaconda3-2023.09-0-Linux-x86_64.sh # 安装Anaconda3

安装Anaconda,以及创建环境的过程,参照:如何在Linux服务器上安装Anaconda(超详细)

安装Python

有网络的Conda环境中创建名为py38、Python版本为3.8.12的环境:conda create --name py38 python=3.8.12,常用的conda命令:

  • conda create --name [环境名字] python=[python版本号],创建的所有环境默认都是在anaconda3/envs/
  • conda activate py38:激活py38环境
  • conda deactivate:失活当前激活的环境
  • conda env list:列出所有的conda环境
$ conda env list # 查看所有conda环境
# conda environments:
#
base                  *  /root/anaconda3
py38                     /root/anaconda3/envs/py38
pytorch131-py38          /root/anaconda3/envs/pytorch131-py38
pytorch38                /root/anaconda3/envs/pytorch38

安装Pytorch

  1. 激活conda环境:conda activate py38
  2. 安装whl文件:pip install [下载的whl文件]

移植conda环境到离线环境

如果使用指令conda pack -n env_name进行环境的打包,可能会出现以下错误:

_CondaPackError: 
Files managed by conda were found to have been deleted/overwritten in the
following packages:
 
- pip='9.0.1'
 
This is usually due to `pip` uninstalling or clobbering conda managed files,
resulting in an inconsistent environment. Please check your environment for
conda/pip conflicts using `conda list`, and fix the environment by ensuring
only one version of each package is installed (conda preferred).

网上大多数给出的解决方案是:conda pack -n env_name --ignore-missing-files,忽略这些报错的文件,虽然这样可以成功打包,但是当我将压缩包.tar.gz移植到新的conda环境进行解包时,就出错了,这种方式不可取

我的解决方式:一个Conda环境本质上就是一个文件夹。将Conda的配置好的环境,例如将/root/anaconda3/envs/py38直接压缩成zip压缩包,再在没有网络的Conda环境中解压该zip,注意Linux的压缩包不能超过2G!。需要有效减少zip包的大小,因此我在配置好pytorch的环境后,使用pip uninstall卸载torch、torchvision、torchaudio这3个包,下载这3个库的whl文件,再在离线环境中使用pip安装3个whl文件,环境移植成功了。

注:第一次在离线环境中使用pip list出现错误:bad interpreter: No such file or directory,如下所示:

(py38) root@interactive7907:/tmp# pip list
-bash: /root/anaconda3/envs/py38/bin/pip: /home/jay/anaconda3/envs/py38/bin/python: bad interpreter: No such file or directory

解决方式:进入新环境中/root/anaconda3/envs/py38/bin/找到pip,将pip文件中原来python所在路径#!/home/jay/anaconda3/envs/py38/bin/python替换为新Conda环境python的路径#!/root/anaconda3/envs/py38/bin/python,再使用pip list:

(py38) root@interactive7907:/tmp# pip list
Package                Version
---------------------- ------------
addict                 2.4.0
....
torch                  1.13.1+cu116
torchaudio             0.13.1+cu116
torchvision            0.14.1+cu116
tqdm                   4.65.2
typing_extensions      4.12.2
tzdata                 2025.1
urllib3                1.26.20
wheel                  0.44.0
yapf                   0.43.0
zipp                   3.20.2

到此处,整个Pytorch环境移植到新的离线环境中了。。。。。

posted @ 2025-03-19 10:58  记录学习的Lyx  阅读(554)  评论(0)    收藏  举报