部署浪潮服务器
前言1. 首先进入浪潮服务器网站2. 如何在浪潮上跑通实验(1)上传数据集&代码(2)创建一个开发环境(3)下载并安装anaconda(4)上传虚拟环境(5)在浪潮上配置虚拟环境(6)运行代码
前言
一般在前言我都会说一些题外话,嘿嘿~
最近,有个问题我想了很久,在这里分享给家人们哈,就是说假如有两种努力的方式,一种是非常努力,对自己要求非常严格,每天没有什么玩的时间,自己的能力提升地很快,但是缺点是可能会缺失生活中很多的小快乐;还有一种是对自己要求没那么严格,但是也在努力,能力提升地比较缓慢,但是能体会到生活中的很多快乐。这两种努力的方式家人们更倾向于那种呢?大家可以在评论区留言哈,每一条我都会很认真地参考哒~
好啦,言归正传了哈~
1. 首先进入浪潮服务器网站
浪潮服务器的网址:https://172.17.71.11:32206/login.html,有可能浏览器会提示这个网址并不安全,但是这个并没有关系,点击进入就好了。
进入网址之后的界面如下图所示:
然后输入用户名和密码就好了。
2. 如何在浪潮上跑通实验
首先,家人们必须要知道一个事实,那就是浪潮这个服务器吧,是一台裸机,也就是上面什么环境也没有,所以(重点来了奥),我们需要添加上我们的代码以及数据集,安装好anaconda,然后还有对应的conda虚拟环境,其次还要有Pytorch。
(1)上传数据集&代码
点开“数据管理”这一栏,然后里面有个“文件管理”,下面的“数据集管理”先不用管。
然后这里有一些目录,如下图所示,有用户目录、公共目录。一般我们的代码和数据集都是放在一个文件夹里的,并且我们一般放在这个用户目录里。公共目录里的全局共享里也有一些文件,一般是管理员上传的一些比较常见的数据集等。
如下图所示,上传文件有两种方式,一种是下图中红色框框圈出来的“上传”,这种方式是从本地直接上传,但是有一个限制——上传的文件大小只能小于1G,所以这种方式我不是经常用。
还有一种方式是通过SFTP工具来上传文件。
这里先简单介绍一下SFTP是什么哈。SFTP是一种文件网络传输的安全协议,一般能够连接远程服务器的工具一般都可以进行SFTP文件传输。像我一直用的SFTP工具叫做MobaXterm。
想进一步了解SFTP的可以参考一下这篇文章:https://blog.csdn.net/weixin_42046751/article/details/105250458
登录上MobaXterm后先连接上浪潮服务器,点击左上角的session,然后点击SFTP,如下图所示。Remote host为浪潮的ip地址:172.17.71.11 ,Username就是登录浪潮的账号(像我就是学号),然后点击OK。
然后需要让你输入密码,如下图所示。
这里的密码需要在浪潮服务器中手动点“复制密码”得到,如下图所示。
登录上去之后就可以上传文件啦~
(2)创建一个开发环境
点开目录的“业务管理”,然后再点击“开发环境”。在里面的右上角有一个“创建”。
点击“创建”之后,你需要选择一个开发环境镜像,我的环境时Pytorch,因此我选择了一个我的同学公开出来的Pytorch环境镜像。
选择一个之后就到了下面这个窗口,选择一个还有显卡的节点。因为我这里已经有一个开发环境了,所以这里CPU显示资源不足,正常来说是4,加速卡应该是1。
下面还有数据配置和更多选项,我没动,直接点“确定”了。
(3)下载并安装anaconda
先到清华大学开源镜像网站下载anaconda的脚本文件
镜像网站网址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
在里面找到自己需要的脚本文件就行了,以我为例,我的是
Anaconda3-2021.11-Linux-x86_64.sh
点击之后就可以下载到本地了,然后再通过SFTP工具将上面的脚本文件上传到浪潮服务器。
来到浪潮的开发环境的界面,点击开发环境(就是下图中红色框框)
之后再点击Shell,进入终端命令窗口。
接着就可以执行脚本文件了,用下面的命令:
bash Anaconda3-2021.11-Linux-x86_64.sh
然后就是一开始是让大家接收协议,输入yes就好。再接着就是让你确认安装目录,默认的目录是/root/anaconda3,我没改。最后会问你是否配置环境变量,你可以选yes,但是我选了no,然后我又自己手动配置了anaconda的环境变量。最后系统就会提示大家 installed successfully !
那么,我来和家人们说说怎么手动配置环境变量哈~
(1)添加环境变量
echo 'export PATH="/root/anaconda3/bin:$PATH"' >> ~/.bashrc
这里的/root/anaconda3/bin 不是一尘不变的,要根据自己的anaconda目录来配置。
(2)使其立即生效
source ~/.bashrc
(3)验证anaconda是否安装成功
anaconda -V #注意V是大写
如果显示出anaconda的版本,那么,恭喜家人们安装成功!
(4)进入anaconda的base环境
source activate
(4)上传虚拟环境
因为我们运行的项目一般来说都有一个专门的虚拟环境来对应,虚拟环境中有项目所需要的包。一般来说,一般的Linux服务器就可以直接自身创建一个虚拟环境的,就是先下载anaconda的脚本文件,就是.sh结尾的那个东西,然后再用bash命令安装anaconda,接着就能创建一个虚拟环境,然后再在虚拟环境里下载torch了,最后再pip或者conda自己需要的包就OK了。BUT!!!浪潮这个神奇的服务器竟然没联网(就连脾气这么好的我都想骂人)!
因此!!!只能在另一台Linux服务器上先创建好一个虚拟环境,然后打包下载到本地,然后再本地上传到浪潮再解压~~真的是离谱他妈给离谱开门,离谱到家了。关键是我的实验室的服务器连磁盘空间都咩的了,连创建个虚拟环境都没有space,还卡得一批……我真的会谢……
因此,我打算在实验室服务器上将原本的不怎么经常用的虚拟环境删掉,再创建一个新的虚拟环境……创建个虚拟环境都得这么麻烦,诶~
(1)先查看自己有哪些虚拟环境:
conda env list
(2)然后删掉其中一个虚拟环境(纯属是为了让出磁盘空间,家人们可以不用做这步):
conda remove -n 环境名称 --all
然后系统会提示是否要删除,输入yes就行啦
(3)创建一个新的虚拟环境
conda create -n 环境名称 python=版本
但是又出现问题了!我可真是多苦多难的科研人啊~
我查阅了一下资料得出了问题的结论——根目录下的这些tmp目录没有磁盘空间……还是老问题,
不过我联系了一下服务器的管理员,他说可以先删掉一些缓存文件应下急,管理员人还是蛮不错滴~
下图也是应证了我的结论。
可以看到相应的目录下可用的磁盘空间为零……
OK,经过十分钟的等待后,磁盘空间腾出二十多G了,终于把虚拟环境创建好啦,中间过程会有一个让大家输入yes的操作。
这个TransUNet就是我刚刚创建好的虚拟环境~
那么接着需要在这个虚拟环境里安装torch以及项目需要的包,那么来吧~
一般来说,我们首先需要先进入torch的官网进行torch的下载
torch官网的网址:https://pytorch.org/get-started/locally/
下载torch之前,我们先得弄清楚一些东西,那就是我们服务器的NVIDIA驱动版本以及对应的cuda版本,我们可以在shell中输入这个命令来查看:
nvidia-smi
结果就像这个样子:
这里的Driver Version就是驱动版本,CUDA Version就是对应的cuda版本。我们下载的torch的cuda版本可以低于对应的cuda版本,所以我们一般会在服务器上装较高版本的NVIDIA驱动,这样对应的cuda版本也比较高,兼容性就比较高。
torch官网中下载torch:
当然说如果这里没有对应的版本,那么可以到 Previous Pytorch Versions 中下载torch。
找到自己想要的版本的torch的时候,在shell中输入命令就可以啦。本来我的项目所需要的torch版本是1.4.0,torchvision的版本是0.5.0的,但是这两个版本都太老了,并且我一直下载不了,一直会报错。因此我咨询了一下我的同门和师兄,得出的结论好像是:实验室服务器的cuda版本是11.7的,只能下载1.10.0以上版本的torch,并且高版本的torch是可以兼容低版本的torch的。所以我就下载了1.13.1版本的torch,对应的命令如下:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
果然,高版本的torch就下载好了,哈哈。反正要是版本不兼容的话,后期再改吧,哈哈~
接着就是下载项目所需要的其他的包就好了,建议都使用conda命令来下载,不要conda和pip混合使用,这样可能会导致包之间不兼容。这样环境就完成啦~
PS:如果有的包总是下载失败的话,可以尝试到anaconda官网去寻找相应的资源,具体可以参考这篇博客:https://blog.csdn.net/weixin_45552562/article/details/109668589
Anaconda官网:https://anaconda.org/
(4)打包创建好的环境
首先安装打包工具conda-pack:
conda install -c conda-forge conda-pack
之后进入到虚拟环境,这里我需要进入的虚拟环境就是TransUNet:
conda activate TransUNet
然后进入到虚拟环境所在的目录:
cd /data/ubuntu/user/kzy/envs/
最后执行打包命令就可以了:
conda pack -n TransUNet -o TransUNet.tar.gz
这样就会在TransUNet虚拟环境所在的同一目录下得到虚拟环境的压缩包——TransUNet.tar.gz
之后点击下载,下载到本地就好。此时实验室服务器的工作就完成了,该把目光转到那个连网络都没有的浪潮服务器了。
(5)在浪潮上配置虚拟环境
(1)将虚拟环境压缩包上传
在第(3)步中我们已经在浪潮服务器上安装好了anaconda,并且进入到了base环境。接着我们就需要将本地的TransUNet.tar.gz(虚拟环境压缩包)再次通过SFTP工具上传到浪潮。
因为我们的anaconda在浪潮上的目录是/root/anaconda3,所以本应该将TransUNet.tar.gz上传到/root/anaconda3/envs这个目录下的,但是我在SFTP工具上貌似没有找到这个目录,但是这个目录确实又存在,真是离谱,笑拉了哈哈~ 所以我只能先将TransUNet.tar.gz上传到用户目录下(就是和代码&数据集同一目录)。
上传后我又通过这个命令将用户目录下的TransUNet.tar.gz转移到/root/anaconda3/envs下:
mv 路径1 路径2 #将路径1的内容转移到路径2
这里我的就是这样:
mv */TransUNet.tar.gz /root/anaconda3/envs/TransUNet.tar.gz
这里的*表示大家自己的目录,各位家人根据自己的情况写哈~
之后可以进入到/root/anaconda3/envs这个目录下查看是否转移成功:
cd /root/anaconda3/envs #进入环境目录ls #查看当前目录下的所有文件
如果显示TransUNet.tar.gz的话,就表示转移成功啦!
(2)创建一个环境目录
在/root/anaconda3/envs目录下创建一个目录用于存放解压后的虚拟环境,因为我的虚拟环境叫做TransUNet.tar.gz,因此我创建了一个环境目录名称也为TransUNet
cd /root/anaconda3/envs #先进入环境目录mkdir TransUNet #创建目录
(3)解压虚拟环境压缩包
tar -zxvf TransUNet.tar.gz -C TransUNet/ #将压缩包解压到刚刚创建的目录下
等待一段时间后,查看虚拟环境,如果出现了TransUNet,那么就成功啦!
conda env list
成功!!!
(6)运行代码
进入虚拟环境后,进入代码目录,运行代码就可以了~
conda activate TransUNet #激活虚拟环境cd 目录 #进入代码目录python ~.py #运行代码
【注意】因为浪潮服务器的网络问题,导致终端很不稳定,建议使用nohup命令,让程序后台运行,让结果保存在日志中:
nohup python ~.py > result.log&
至此大功告成,感谢家人们看到这里,不妨点个赞,关注一波噻~