Centos7部署torch环境 配合pyCharm远程调试开发

python目标版本3.6,torch目标版本1.8.1

部署环境总是代码开发者离不开的一个问题,通常会有几种解决路线。

1. 每个环境单独部署一套,windows一套,unix一套,需要什么依赖就装什么。

2. 引入conda环境,为每个类型的项目创建一个属于自己的虚拟环境。

3. 引入Docker,直接把代码运行所需要的操作系统以及库依赖全部打包。

4. 服务器-本地结合的开发形式。

本文主要尝试第二点与第四点相结合,利用已有的闲置服务器,配合本地IDE进行开发。


首先在Centos7上部署conda

在CentOS7环境下部署Anaconda,需要进行以下步骤:

在home下创建一个目录,名为miniconda2,我们目标是下载Miniconda

Miniconda是一个轻量级的Python发行版本,它包含了conda、python等180多个科学包及其依赖项,适合空间要求严格的用户。Miniconda相当于conda+python+pip,它的安装包比Anaconda更小,功能也更少,但是仍然能够满足一般用户的需求。

Anaconda是一个完整的Python发行版本,包含了conda、python等所有必要的包,适合需要安装所有包的用户。Anaconda的安装包比Miniconda更大,功能也更多,但是对于需要安装特定包的用户来说,Anaconda可能更适合。

国内镜像源的地址为:Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

具体的下载指令为:

mkdir /home/miniconda2
cd /home/miniconda2
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda2-4.7.12.1-Linux-x86_64.sh

 下载完毕后执行安装命令:

cd /home/miniconda2
chmod 777 Miniconda2-4.7.12.1-Linux-x86_64.sh #给执行权限
bash Miniconda3-latest-Linux-x86_64.sh

中间可以根据自己的需要确定安装路径。 

如果我们执行conda init,系统提示: conda command not find

那我们需要将安装路径添加到系统的PATH当中,我们需要修改两个文件

sudo vim /etc/profile

# 在最后一行加上: 

export PATH=$PATH:~/anaconda3/bin
sudo vim ~/.bashrc

# 在最后一行加上: 

export PATH=$PATH:~/anaconda3/bin

我们再执行一行语句,激活环境

source ~/.bashrc

 之后我们再执行版本查看

conda -V

输出结果:即可。 


然后创建一个pytorch环境,这里由于服务器性能限制,安装CPU版本即可。

我们首先应该明确:troch-torchvision-python版本的对应关系:

来自pytorch官网

我们暂定选用Python版本3.6为主环境。

首先更新镜像源:

具体的我们最热门的使用清华镜像源:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Anaconda的配置文件叫.condarc,一般会放在用户的home目录,因为前面带有".",因此是隐藏文件,对用户是隐藏的。我们可以用vim ~/.condarc直接编辑。

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

或者我们可以直接执行:

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 --set show_channel_urls yes

有需要的话pip也需要配置镜像源:

设置pip国内源
参考:https://www.jianshu.com/p/091637a926e5

Python的包管理工具是pip,用pip下载需要用到的依赖库,默认pip从国外镜像源下载,速度很慢,所以要设计中国内镜像源。

所以换了一个。在pytorch_cpu环境中,修改pip镜像源:

# 设置pip镜像源
conda activate pytorch_cpu
pip config set global.index-url https://mirrors.163.com/pypi/simple/

我们创建并进入虚拟环境:

conda create -n pytorch_cpu python=3.6.5

具体的依赖我们参考这篇文章:

PyTorch深度学习(13)PyTorch Torch Vision python 版本对应_pytorch版本对应_JYliangliang的博客-CSDN博客

安装pytorch1.8.0的CPU版本依赖,我们进入torch官网:PyTorch

 

 执行:conda install pytorch torchvision torchaudio cpuonly -c pytorch

但是过程中提示报错:

CondaMultiError: [Errno 12] Cannot allocate memory()

猜测可能是之前用yum install anaconda,和现在的miniconda产生了冲突?
经过这篇文章的分享:解决Linux:[Errno 12] Cannot allocate memory问题_rosefunR的博客-CSDN博客

发现可能是由于服务器swap区域空间不足。我们配置一个swap区域,我这里分了2G,安装过程顺利进行。

安装完毕之后,我们执行 conda list # 查看已经安装的包: 


运行一些代码,以确保环境安装顺利,确认好工作目录。

自建目录之后,我们运行一些测试代码,比如将网络设备信息编码为张量形式

import torch  
import torch.nn as nn  
  
class Net(nn.Module):  
    def __init__(self):  
        super(Net, self).__init__()  
        self.fc1 = nn.Linear(10, 5)  
        self.fc2 = nn.Linear(5, 1)  
  
    def forward(self, x):  
        x = torch.relu(self.fc1(x))  
        x = self.fc2(x)  
        return x  
  
# 创建模型实例  
net = Net()  
  
# 定义输入张量  
x = torch.randn(1, 10)  
  
# 将输入张量编码为张量形式  
x = x.unsqueeze(0)  
x = torch.tensor(x, dtype=torch.float32)  
  
# 将张量形式的输入张量传递给模型  
output = net(x)  
  
# 输出模型的输出张量  
print(output)

输出结果:

 正常运行。

我们再测试一组样例:

import torch
from torch_geometric.data import Data

# 定义设备列表和边列表
devices = ['device1', 'device2', 'device3']
edges = [(0, 1), (1, 2)]

# 创建节点特征矩阵
x = torch.eye(len(devices))  # one-hot 编码

# 创建边列表
edge_index = torch.tensor(list(zip(*edges)), dtype=torch.long)

# 创建图数据对象
data = Data(x=x, edge_index=edge_index)

# 输出数据对象
print(data)

运行之后,程序报错缺少模块:

Traceback (most recent call last):
  File "main2.py", line 2, in <module>
    from torch_geometric.data import Data
ModuleNotFoundError: No module named 'torch_geometric'

我们调用:

conda install torch_geometric

找不到,则我们使用pip进行安装

pip install torch_geometric

也不行。

我们直接前往torch_gemetric的wiki:Installation — pytorch_geometric documentation (pytorch-geometric.readthedocs.io)

我们发现其支持python3.7的版本,所以我们也面临着更新python版本的需求。

解决冲突(说实话不如重建一个环境):

于是我们再根据python版本直接新建环境即可。

样例一顺利运行

我们安装pyg库也很顺利。

我们运行样例2:

 也顺利完成。


 本地pyCharm配置sftp连接,与线上编译器结合。

具体可以参考这个资料:

PyCharm连接远程服务器详细教程_pycharm连接服务器_Ann's Blog的博客-CSDN博客


本地代码运行成功,调试完毕。

 我这里不需要将代码上传到服务器,只是用那个解释器和环境,如果有需要利用服务器的各种资源,可以继续配置deployment。

以后就可以顺利使用统一的环境进行开发部署与调试了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值