使用Linux服务器(Mac版)
一.连接Linux服务器
本辣鸡小白,现在读研一,做的是数据挖掘方向,而之前从未有过接触服务器甚至连C语言都不太会,我本科都干了些什么? 目前刚接触算法半年,模型也逐渐地从logistic回归到3D卷积神经网络,复杂度不断地增加,我的低配可爱小Mac pro已经不能支撑我的数据训练了,于是腆着脸可怜巴巴地找老师要了一个服务器。其实,之前用自己的电脑跑模型就有点跑不动了,但是因为害怕服务器操作太复杂本着就地取材的缘故,还是坚持没用服务器。直到最近使用了之后,才有种悔不早识君的感觉,用服务器太方便了吧!而且操作就是最基本的Linux系统操作,什么?你不会用Linux系统,没事,我也不会我刚好总结了一点点,对于使用服务器进行简单的操作应该还是足够了,大佬们不要来嘲笑本小白。
OK,下面正式开始:
首先,需要注意的是,Mac连接服务器具有优势,不需要安装任何软件,利用终端即可。Mac对程序员真的太友好了
使用终端有两种方式:
1.直接在终端输入命令行:
ssh 账户名@服务器地址(例如10.111.111.111)
之后回车,会提示输入密码,输入之后回车即可(此处密码不可见)
这种方式太麻烦了,每次都要输入这个命令行
2.右键点击终端,点击新建远程链接:
之后在弹出的窗口点击右侧的+号(注意:是右半边的+号):
之后,在弹出的窗口中填入账户名@服务器地址 即可。
然后就会发现右边出现了填入的服务器连接,点击右下方的连接:
之后会弹出一个单独的登陆窗口,输入密码回车即可登录成功。
(注意:有的服务器是不能直接连接上的,比如很多学校的服务器需要通过VPN连上校园网才能接入,不要问我为什么强调一下这点,我第一次连服务器那一天很开心,不停地修改电脑配置和搜索解决问题的方法,咦?奇怪的知识增加了😌,开心到爆炸💥)
二.本地文件与服务器文件交互
在发现能成功连接到服务器之后,我们就正式踏上了修仙之路冒险的旅程,为了能够在服务器上训练,首先肯定需要把我们的python文件和数据文件上传到服务器上,其实上传文件也很简单:
cd /Users/bbb/Downloads/ # 先到需要上传的文件的存放位置
scp xxx.py 帐户@10.111.111.111:~/KTcount/ # 上传单个文件
scp -r xxx 帐户@10.111.111.111:~/KTcount/# 上传文件夹
这里的xxx就是我们要上传的文件,而KTcount是服务器上用来存储我们上传文件的文件夹,如果服务器本来没有这个文件夹,那么会新生成这样一个文件夹。
也可以直接输入所在的路径,例如scp /User/bbb/Downloads/xxx.py
注意:这里的命令行是在本地终端输入的,可不是在连接服务器之后的窗口输入的,毕竟你是要把本地的文件上传
如果想要看是否传输文件正确,需要连接上服务器之后,输入命令行ls,即可查看目前所含有的文件,如果不出意外,能看见一个KTcount(也就是你刚刚命令行里的用于存储上传文件的文件夹)
ls
那么上传文件之后,我们模型训练出的结果我们有时候也需要下载下来,下载文件类似于上传文件:
scp 帐户@10.111.111.111:~/KTcount/nohup.out /Users/bbb/Downloads/
这里面的~/KTcount/nohup.out就是我们需要下载的服务器里的文件,后面的是我们下载之后存储在本地的路径。
注意:这里仍然是在本地终端窗口输入命令行
三、在服务器上运行python代码
那么在上传文件成功之后,我们要开始重中之重了,那就是运行我们的模型,因为服务器不如咱们本地能够使用pycharm这类可视化程序方便,但是我们也只是为了能跑出个结果,就认命吧不挑剔了。
python -V # 查看当前服务器使用的python版本,大家每个程序运用的包可能对python版本有挑剔,所以可以先看一下python版本是否匹配
如果版本不匹配,我们可以使用下列命令查看服务器都有什么版本:
ls /usr/bin/python*
之后,我们就能看到多个python的地址:
然后根据自己想要的版本来重新设置,例如我们设置python3.6:
alias python='usr/bin/python3.6'
设置好之后,我们要运行程序,但是因为我第一次在终端运行python,之前都是用pycharm所以,发现运行之后显示我的py文件中读取csv文件时找不到这个csv文件,不管我把文件路径如何修改都没办法解决,后面直接先到py文件所在的文件夹再运行就没有问题了。
cd ~/KTcount/ # 到文件所在的文件夹
python3 xx.py # 运行py文件
注意:如果程序中使用了tensorflow,需要在运行python3 xxx.py之前先激活tensorflow环境,否则会提示没有tensorflow这个模块,但实际上服务器上已经安装过了,如果没有安装过,那就安装一下
conda activate tensorflow
这样,我们就能在服务器上运行我们的模型代码了,但是因为如果模型训练需要很久,我们可能要中断与服务器的连接,这个时候就会导致服务器上的进程也停止,所以我们需要加一个nohup:
nohup python3 xx.py # 输出会存储在一个nohup.out文件中
为了验证我们的程序是否在中断连接之后还能运行,我们可以在运行程序之后,重新连接一次服务器,然后查看服务器正在运行的进程:
ps -ef |grep python # 查看服务器后台有关python运行的程序
至此,我们就可以关上终端窗口去 推塔和吃鸡 学习其他知识了😌
做完这些,是不是忽然发现使用服务器居然特别简单?!
有时候人生就是这样,大家总是习惯于对未知的事情存在恐惧,其实真正面对它时会发现这只是一只纸老虎,只有敢于挑战才能发现原来它如此不堪一击