当前位置:   article > 正文

智能所实验室环境配置【Windows远程连接Linux服务器/VScode+Anaconda】【详细教程】_anaconda vscode 远程

anaconda vscode 远程

前言

此文写给实验室的学弟学妹们,以便快速配置环境少踩坑。计算资源是公共资源,学长学姐有自己的研究任务,无法像企业运维人员那样周到的看护服务器,服务器的稳定运行有赖于每个使用者合理使用。菜,是原罪(推眼镜)。【和你用同一个服务器的人正在跑实验,突然挂掉了,发现是你在瞎搞,内心会很崩溃】

一、总览

目前的部署是单服务器的形式,使用起来也很简单,一般也就把程序放在一个服务器上跑,有在准备分布式,是后话了。

大伙用自己的电脑就行了,window或者mac都行。本地写代码,远程连接,上传,程序在服务器上跑,本地图形化界面还是很方便的,多媒体支持也好,你可以一边写代码,一边听音乐,在程序提交以后看看文章或是做PPT。

二、准备工作

  1. 让管理服务器的学长在特定服务器上帮你开一个账号,目前你有了登录所需的 “服务器IP,账户名,密码”。
  2. windows下载并安装远程连接软件,mac自带bash和ssh之类了。
  • 终端模拟软件,XShell,支持SSH(默认端口22),输入“服务器IP,账户名,密码”,登录以后就可以在小黑框里敲命令了。
  • 文件传输软件,XFTP,ftp和sftp都支持,系统默认开的sftp,ftp看该服务器有没有开vsftp服务。
  • 也可以用MobaXterm,二合一,网址:https://mobaxterm.mobatek.net/
  • MobaXterm详细使用教程:https://zhuanlan.zhihu.com/p/61013117
  • 其他相关SSH软件里面也有提到,咱只要会登录能敲命令,会上传下载文件就行,剩下不用管。

三、预备知识

同学们可能本科时候Linux用的少,不熟练是正常的,好好补充相关知识,是少搞事的关键,况且linux是开发绕不开的。

首先是linux基本的目录结构:https://www.runoob.com/linux/linux-system-contents.html

同学们的东西一般在 /home/[账户名]/  的目录下,例如/home/Alice/,大家井水不犯河水

关于linux的root权限:

root说白了就是超级管理员账户,你干啥都畅通无阻,但也有了搞瘫服务器的机会,学长信任你把账号给你可能就是悲剧的开始。网上有一些教程上来就拿权限,因为人家在自己的电脑的ubuntu上搞,崩了也无所谓,省事,但服务器公共资源,底层环境坏了影响别人,root权限还是不给的好,各位同学看教程也辩证的看。

然后基本的linux命令自己学,最好知其所以然。命令太多了,不搞运维,常用的会了就行,要用的临时查。

放一点常用的:https://blog.csdn.net/heros_never_die/article/details/106363409

特别注意粘贴该用shit+insert,ctrl+c在这是键盘中断。

四、配置环境

本机windows配置IDE就够了,远程服务器配置python和各种框架。

方案有很多种,我各种都用过了,核心功能都差不多的,剩下的那些萝卜青菜各有所爱,知乎上比较一堆,聊聊核心区别。

1.本地IDE的选择

pycharm和vscode。最有区别的地方之一是远程模式。

  1. 一般的pycharm是通过文件传输同步的ftp/sftp,换句话说,你本地电脑有一份工程文件,服务器上也有一份,修改好了以后用快捷键ctrl+shift+alt+x上传覆盖,也可以从服务器下载覆盖本地实现回滚。
  2. vscode就远程服务器上一份工程文件夹,本地默认没有(你也可以选择下载备份),你界面里的修改直接作用于服务器文件,感觉上更接近中断模拟软件了。有插件可以记录你的修改,然后选择修改生效或是回滚,有备份需求的可以使用git命令和git插件(pycharm也有)。

实际上专业版的pycharm也有远程同步功能,不过如果用的社区版的话,就得用模式1那种,vscode目前免费。

2.服务器配置

  • Docker,和虚拟机差不多,连底层一起全套打包,特别适合有用到虚拟环境的,做普通任务的不一定需要。
  • Anaconda,也会创建虚拟环境,但是有些东西对底层还有一些依赖,自动处理冲突并寻找兼容性的版本,你可以创建不同版本python的环境,它可以调整CUDA版本(这对深度学习框架很重要)。
  • 裸python,省去激活环境,可以直接用pip(有不少教程用这种方法),对底层的依赖更高,而你没有root权限(于是你用不了教程里的apt-get,yum),得想办法手动非root安装,还要手动调整动态链接库/环境变量, 以防止不同版本打架或是不小心用到系统python。
  • 系统python,不是自己的机子,没有可能性,除非你能像那位同学一样能让恶心所有同学并老师害怕,然后独自霸占一台机子。或者家里有矿自己整一台。

总的来说,找到的教程是裸python的多,因为有不少在自己机子的ubuntu上用root玩的,还有的github也这么写(因为通用),服务器上搞非root装乱七八糟的东西也费劲,推荐使用Anaconda,真的香,学会了以后那些pip装的换成conda指令就行了。

3.具体步骤

网上教程有不少,但是比较碎片化,或者有的不是对服务器而言的,新版本有的还是有可视化窗口发生了写变化,下面再简略的写一些吧。

1.安装Anaconda

官网搞一份或者直接问学长学姐拷。地址:https://www.anaconda.com/products/individual

教研室网有奇怪的网关,上不去建议套一下学校的VPN或者去清华的源下载。

关于版本的选择,我们服务器是Linux的,U是Intel的所以是x86的,power是IBM的。至于python3.7和python2.7区别不大,这里指离线包里包含哪个版本,Ananconda是个环境管理软件,实际上你装的python3.7版也可以用命令下载pythob2.7。类似于那种万能驱动,包里自带一些东西,接上网了还可以下载各种东西。

                           

下载得到文件  Anaconda3-2020.02-Linux-x86_64.sh 

通过你的sftp软件传到服务器上你的目录下,然后进入这个目录(通过cd命令)

(为什么不直接在服务器用wget命令?因为那样走服务器小水管下载,而自己上传用的局域网上传)

接着输入 bash Ana,按Tab键会帮你自动补全,回车开始安装;之后就是让你接受协议,回车就行了;再输个yes回车;接着问你安装目录,要改就改,不改就回车;接着问你要不要初始化conda,输入yes。

以下界面就是说你装好了(人家还给pycharm打广告了)

接着关了这个会话重开,这时候你的目录前面多了(base)就对头了

原本你输入python命令是服务器的python,一般是2.7,安装时间还很早,有base的时候,就是自己装的python了。


剩下的东西参考下面:

https://blog.csdn.net/xi_zhong/article/details/83422225

https://www.jianshu.com/p/e298b9d3afae

关于环境变量都保存在.bashrc文件里,用maba xterm的,可以直接双击打开,像记事本那样该,关闭的时候会问你要不要上传。

用vim编辑的话,不要傻乎乎的复制教程里的命令,~/的意思是相对路径,本身就在路径里的话,vim .bashrc 打开文件就好了。你要按insert键进入编辑模式才好编辑,改完以后按esc退出编辑模式,按下分号键进入命令模式,输入wq保存,vim的具体使用自己查。

另外提一句,换清华源很重要,不然有的下的很慢。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes 这句是设置每次安装包的时候,显示一下源,用来确认用的。

这句是用来创建环境的:conda create -n your_env_name python=your_python_version

例如:conda create -n myenv python=2.7

接着你要进入这个环境的话就使用 conda activate myenv

conda info 显示conda的各种信息(这里也会显示你有哪些源,路径在哪,系统版本和cuda版本)

conda info --env 显示你已经配置了哪些环境。

conda list  显示当前环境下已经安装了哪些包。

conda activate env1 激活(进入)某个环境

conda install tensorflow-gpu=1.6.0 安装xxx,可以接版本号。

(记得看清自己目前在哪个环境里,另外能对于深度学习框架自动配置CUDA,装新包的时候会调整其他包保持兼容)

conda search pytorch 搜索某个包,虽然在pip里面叫torch,在anaconda里叫pytorch

(装torch记得装上全家桶,比如torchvision,conda install torchvision)

conda install --yes --file requirements.txt  直接安装requirements.txt要求的全部环境

python -m pip install xxx 在conda的虚拟环境里使用pip安装的话,不要直接用pip install,带上python -m的前缀,否则容易装到系统的pip里去。

which pip 可以用来确认默认运行的pip的路径,如果显示的是系统的pip,显然不适合直接用pip install

python -m pip install -r requirements.txt 使用pip安装requirements.txt要求的包。并不是所有包都有conda对应的管理,某些作者自己发布在pip的,conda不一定有。使用该指令通过pip安装,可以安装在conda虚拟环境的python上,实现兼容。如下图所示,tk由conda 的清华源安装(这玩意本身也不是python包,是底层GUI套件,非虚拟环境还得用root装),而剩下是通过pip源安装的。

2.官网下载并安装vscode

应该没难度,也不需要破解,地址:https://code.visualstudio.com/

2.1 设置成中文(非必要)

ctrl+shift+p 调出命令框,找到命令Configure Display Language(输一些内容直到显示这个选项)

然后跳出选项Install additional languages(安装额外语言包),点一下,装上你需要的语言。装好后右下角会提示器重启vscode。

2.2 装个SSH插件

插件栏搜索SSH,点安装,然后提示需要重新加载,点一下就会重新加载。

2.3 新建远程连接

这时候边栏多了远程连接的图标,你可以点加号添加新的连接,也可以点那个齿轮调整config文件。实际上加号连接的东西也会问你记录在哪个config里面。至于选那个config,第一个就行了,其他的好像也能用。加号的添加方式按照里面的提示填就行了。ssh 用户名@地址,地址可以使域名也可以是普通ip,实验内都是局域网ip。

接着会提示你成功添加了一个host,你可以直接点连接,也可以点host旁边的小按钮在新窗口中连接,弹出窗口以后会问你服务器系统是什么,记得点一下。接着会提示你没有RSA授权要不要连接,yes就行,然后输入密码,会下载一点必要的组件。

左下角的绿条是你的连接状态,边上两个提示你有几个error几个warning。右上角是控制终端的栏目。+号是新建终端,垃圾桶是关闭终端(注意这个install终端不要关啊),剩下的按钮还要终端分栏和终端全屏,鼠标放上去可以自己看说明。

接着点击打卡文件夹就能打开服务器上的项目工程了,接着可以在里面创建python文件什么的,ctrl+s是保存,会直接修改服务器闪上的文件。左上角还会提醒你一个文件未保存。记得按照右下角安装python扩展。装的是pylint,装了这个以后就有自动补全了,以及ctrl+鼠标左键点击进入函数定义等必要功能。

正确安装的话你可以看到,本地也可以安装一份,注意区别。一般你连接哪边的项目就会提示你安装哪边插件。

之后就可以享受coding了

2.4 我不想每次都在vscode里输ssh密码

在终端输入 

ssh-keygen -t rsa 建立rsa公钥密钥对

接着会问你创建文件在哪,可以手动输入,也可以直接回车保存在默认的位置/home/你的的目录/.ssh/id_rsa

接着问密码并验证密码,回车两次可以跳过。

cd .ssh 可以进入这个文件,里面有id_rsa和id_rsa.pub两个文件

cat ./id_rsa.pub >> ./authorized_keys 接着输如这句话,cat作用是把文件内容打印到终端屏幕,>>是重定向,意思就是这段不去原本的输入,而是换个地方,目标就是后面的authorized_keys文件(不存在会建立一个),这句话的实际想过相当于把id_ras_pub的内容添加到了authorized_keys尾部,换句话说,你用sftp手动复制粘贴进去也行。最终我们产生了如下三个文件,在只有一个公钥的情况下,实际上authorized_keys和id_rsa_pub内容一样的。

接着我们用sftp把密钥放到自己的windows电脑上,路径就是之前config所在的ssh路径。顺便改一下config里面的文件,把服务器和密钥文件关联起来,如下图所示。

主要添加

  PreferredAuthentications publickey

  IdentityFile ~/.ssh/id_rsa_246

现在问题来了,我连接好几个服务器,他们的密钥不不能都叫id_rsa吧,所以记得要改一改名字。服务器那边不一定要改,因为主要起作用的是authorized_keys里的内容,不过保持统一是个好习惯。

那么如果你还有一台笔记本电脑,用类似的方法配置一遍,服务器始终只有一份authorized_keys公钥,台式和笔记本各有一份id_rsa_246。

至此,以后vscode登录特定服务器就不需要密码了。

4. 运行代码的正确姿势

根据菜单栏上的运行可知,ctrl+F5运行,有加断点的话也可以F5调试。

当然你可以使用下方的bash终端,像普通终端一样输入指令运行就行了, 例如:python test.py

关于解释器的选择在左下角,点一下以后可以选择不同的解释器路径,如果想使用anaconda的环境则使用anaconda路径的解释器,路径名里有你起的环境名,好辨认的。vscode会自动激活环境。

调通程序之类的都可以使用这些方法,但如果你的模型要跑一两天的话,你应该挂在后台。

直接在终端里跑,会话消失的时候进程就结束了。换句话说,你的终端要一直开着且保持稳定,如果意外断网了,你的训练模型就停止了。比较稳妥的方式是使用screen和tmux。

screen -S train 建立一个名为train的窗口,这样即使终端会话中断了,窗口依然存在。

conda activate py2 激活你的环境

CUDA_VISIBLE_DEVICES=1,2 python train.py 设置显卡1和2为可用显卡,使用python运行train.py文件

这里说明一下CUDA_VISIBLE_DEVICES=1,2tensorflow是默认利用所有显卡的,所以直接运行代码的话,很容易占用全服务器资源,给别人添麻烦,所以记得加这条命令限制显卡的使用。而pytorch默认是使用显卡0的,所以也可能和别人撞车。利用显卡跑程序之前先使用nvidia-smi看一看各个显卡的利用情况,选用空闲的显卡。当然限制显卡命令也有类似的语句可以直接加在py文件里

import os
os.environ[“CUDA_VISIBLE_DEVICES”] = “0”

但是显卡使用情况不同时刻不同,换卡运行要到py文件里去修改,恒定一张卡的时候这个挺方便,看情况使用。

在窗口内,先按ctrl+a再按d,可以退出窗口,窗口挂在后台,里面程序还在跑。

先按ctrl+a再按k,可以彻底关闭窗口,进程会关掉。

screen -ls 列出现有窗口

screen -r train 恢复名为train的窗口。

screen -D -r train 强制恢复名为train的窗口,有时候会用到。

更多的见上文提到的linux常用指令,或自己查询screen和tmux的使用方法。

5.Jupyter相关

以下命令安装jupter扩展。

python -m pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple

jupyter contrib nbextension install --user

python -m pip install --user jupyter_nbextensions_configurator 

jupyter nbextensions_configurator enable --user

以下命令启动服务,ip填服务器ip,不搞127那套,port选个不冲突的。

jupyter notebook --ip=10.xx.xx.246 --port=9999

把拓展打开,勾选Hinterland,就有自动补全了。

(图片来自于 jupyter 代码提示自动补全)

jupter主题,能改变jupyter的外观。

python -m pip install jupyterthemes

之前喜欢用的一套灰底的设置,其他设置需要查看官方手册。

jt -t grade3 -f firacode -fs 110 -ofs 110 -cellw 1200 -T -N -kl

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/65626
推荐阅读
相关标签
  

闽ICP备14008679号