配置服务器pytorch/TensorFlow环境+远程连接vscode

前言:配置环境这种东西比较玄学,以下记录的是个人总结的一点操作经验,后续这个板块有新的问题和发现也会更新blog,欢迎评论指正和点赞支持~

目录

关于软件下载

服务器TensorFlow、pytorch环境配置

VScode远程连接

硬核补充——一些tips

硬核补充——远程代码高亮

硬核补充——vscode python debug(本地/远程)

1、本地单文件&文件夹debug

2、远程单文件&工程文件夹debug


关于软件下载

1、EasyConnect:这个是用来连接你们学校网关的(俗称vpn),你本来就在学校的话就跳过。

 

2、Xshell:这个本来是用来远程操作服务器环境的,但是后面要用到vscode远程连接的话,这个软件的作用就在于:上传paper代码(或者某一天vscode挂了这个也可以救急)。记忆里这个软件要钱,只能试用一个月貌似,我这个好像是师兄给的软件,不知道是不是试用期,反正先用着吧。

3、vscode:由于轻便并且功能强大,我放弃了pycharm(关键是还要钱,连社区版本都只能试用了貌似)转vscode了,这个可以解放你的大脑和双手,毕竟改代码再也不用vim了。


服务器TensorFlow、pytorch环境配置

1、在easyconnect里面输入你们学校的服务器地址(网关)、导师给你分配的账号和密码,先让学校知道你是自己人:

2、打开Xshell新建一个会话如下图,接着输入导师给你分配的用户名和密码,if一切顺利那么你就连接服务器成功了。but,我在连接的时候被拒绝了好多次(密码错误),后来发现是导师没和我说清楚主机IP,so,有问题自己实在解决不了记得问师兄师姐和导师:)。

 3、正式进入环境配置


我是在Xshell里面完成这些安装配置的(远程连接vscode我是放在了最后),不过按道理也可以先搞好远程连接vscode再直接在vscode里面操作。


(1)anaconda

  • 首先你需要下载并安装一个anaconda(现在一般是3),通常来说下载了这个以后什么python解释器、python各种包也有了。我原先以为服务器home下面有anaconda的,发现并不是。所以你先到自己的家目录下(如上右图所示)。
  • 先在本地浏览器(百度搜索anaconda)中下载.sh文件,然后通过Xshell文件传输命令rz将该文件传到服务器,接着在服务器端执行.sh文件(执行下述bash命令),一路yes或者enter键安装。
bash Anaconda3-2022.05-Linux-x86_64.sh
  •  接着将anaconda加入服务器的环境变量(因为只有这样你的conda命令才能起作用,否则就会出现Windows下“不是内部或者外部命令”的报错):

        配置环境过程如下,这里对最最基本的vi命令有一点要求,当然你可以百度(下图这种图片都是借鉴 在远程服务器安装anoconda并创建tensorflow-gpu环境并运行jupyter_liu jiaxian的博客-CSDN博客_远程服务器安装tensorflow

 最后输入命令 conda --version(注意俩-) 检验anaconda是否安装成功。此时你所处的是默认的base环境,输入命令 python -V(注意大V)查看anaconda自带的python版本。


插播一下:在Linux命令行里面有几个常用快捷tip在此记录一下(这样再也不用左箭头敲到手麻了):

ctrl+左箭头让光标跳到当前单词的开头
ctrl+右箭头让光标跳到当前单词的末尾
ctrl+a让光标跳到当前命令的开头
ctrl+e让光标跳到当前命令的末尾

另外关于conda/pip几个常用命令在此记录一下,之所以强调一个“当前环境”,是因为你在不同的虚拟环境使用下列命令那么作用对象就是对应的虚拟环境:

conda/pip install 包名(在当前环境)安装包
conda/pip uninstall 包名(在当前环境)卸载包
conda/pip list列举出(在当前环境)conda/pip安装过的包

(2)配置pytorch/TensorFlow环境

  • 首先可以将清华/中科大源设置为默认下载源,毕竟安装包的默认源下载太慢了,以设置清华源为例:
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    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 --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/
    conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    conda config --append channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
    conda config --set show_channel_urls yes
    

    默认下载镜像源设置好了以后,你在任何一个虚拟环境下载软件或者包都是从这个源下载的。当然你也可以不更改默认的下载源,而是每次下载包的时候都在命令后面添加镜像源地址(也没有很费事)。以上所述是针对conda的,当然pip也有这一套,这篇blogpip使用中科大源、清华源或修改默认源为中科大源、清华源_壹万1w的博客-CSDN博客_中科大源写的很好了,我就不重复造轮子啦!不过我在网上看到说2019年的时候清华源关闭了,现在好像可以用,后续发生什么变动我也会及时在这里更新,尽量不造成误导~

  • 接着就可以真正开始创建和配置环境了。首先是conda关于虚拟环境的一些常用命令:

    1、查看你的家目录下有哪些虚拟环境:

    conda env list
    2、激活虚拟环境env1:conda activate env1
    3、失活当前虚拟环境:conda deactivate
    4、创建一个虚拟环境env1:conda create --name(-n) env1 python=xxx
    5、删除一个虚拟环境env1:

    conda remove --name(-n) env1 --(俩-)all

    6、修改虚拟环境env1的名字为env2(这个暂时没办法直接修改):

    conda create --name(-n) env2 -clone env1

    conda remove --name(-n) env1 -all 

        conda create 这个命令后面这个python=xxx很重要,因为这代表了你的虚拟环境将会使用的python版本,如果你不指明的话就会默认使用anaconda里面的python版本,这个会直接导致你后面的pytorch以及TensorFlow因为python版本原因而挂掉。如果你指定的虚拟环境python版本和anaconda里面自带的版本不一样,那系统会帮你下载安装你指定版本的python。

         虚拟环境创建好了,就要往里面放东西了。现在执行 conda activate 虚拟环境名 切换到你刚刚创建的虚拟环境中,然后用conda/pip下载安装你要的TensorFlow或者pytorch版本,我以pip TensorFlow为例:

pip install tensorflow-gpu==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

这个是临时使用了清华源。要下载安装的包的版本同样你是可以指定的,如果服务器有cuda那就可以下载gpu版本的,如果你要使用GPU加速那就还得安装下面这两个,针对pytorch还有torchvision,这个后面你用到的话再下载也行:

cuda版本和TensorFlow以及pytorch版本在各自的官网都有说明。


插播一下:

1、pip和conda:我的感觉是两个效果一样。不过pip的使用范围会更广,但是conda使用的前提是你在conda环境中(也就是说下载安装了anaconda或者minianaconda),就比如在Windows终端pip可以随便用但是conda不行 。

2、在下载pytorch或者TensorFlow的时候,一定一定要指明版本,不然它会默认下载最新版本(或者和当前anaconda匹配的版本)。特别是我们要跑paper代码的时候,论文中要求的深度学习框架版本以及python版本一定要按照它说的来,不然代码跑不通(当然大神可以手动改代码)


VScode远程连接

1、安装Remote-SSH并配置并配置

2、连接(登录)服务器 

  • 最开始的时候,我看了网上说的,把下面这个打对钩:

 于是就出现了下面几个图这种情况:

  

  •  于是我又在网上搜了一波资料,终于,解决办法竟是

 然后输入密码的位置就到了屏幕正上方,输入密码之后就和xshell操作一样了。 

  • 如何测试连接是否成功、如何设置打开vscode自动连接服务器、如何使用pub密钥使得vscode免密码登录服务器以及如何在vscode中使用jupyter,这些可以参考上述我参考到的blog链接,后续我用到了也会继续补充。  

硬核补充——一些tips

  1.  anaconda默认TensorFlow2.x版本

  2. 管理远程服务器的最佳策略是:你的主目录下只保留一个anaconda,其中包含着你最常用的python版本(当然我发现貌似是anaconda自动下载最新版本的python了),这个python版本就是你的base虚拟环境的python版本。其他的python版本你就用虚拟环境来管理就好啦

  3. TensorFlow1的最后版本是1.15.5,然后直接跳到TensorFlow2了

  4. Pytorch0的最后版本是0.4.1,然后直接跳到pytorch1了

  5.  Linux光标不见了执行命令:echo -e "\033[?25h"

  6. pip可下载的pytorch版本数和conda不一样(conda支持的pytorch版本更多)

你一定无法想象这种痛苦:pip用镜像源只能下载低版本的pytorch,conda可以下载高版本的pytorch但是镜像源不知道为啥用不了,针对此问题我插播一个最近我再一次配置虚拟环境的历程。


为了跑一个代码需要python3.6+pytorch1.3的环境,于是我新创建了一个pytorch1.3环境。但是,下载安装pytorch1.3的时候:pip可以临时用清华源但是pip没有1.3版本;conda有1.3版本但是conda无法临时使用源;将清华源设置为默认下载源又不起作用。经过三番两次更改默认下载源(常用命令见下):

  1. 删除所有下载源:conda config --remove-key channels
  2. 增加源:eg:conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  3. 删除源:eg:conda config --remove channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  4. 显示源:conda config --show channels

反复折腾之后再用conda下载竟然报错:

UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel pytorch==1.3.0 <ht

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.ustc.edu

后来听网上一句劝:把所有源的https换成http,由于conda命令没有pytorch1.3,我就安装了pytorch1.4。虽然还是很慢,但是终于可以下载了。

但是程序在pytorch1.4上跑不通,于是我还是折腾了一番安装了pytorch1.3。大概是有点玄学,或者应了那句话:重启解决99%的问题。后面我直接去pytorch官网https://pytorch.org/get-started/previous-versions/(啧,CSDN不行啊,这个链接它怎么没有解析显示哇)下载的,总算是成功搞定了。

运行程序的时候报了这个错:RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

后来证明是所里GPU不够用了(晚上GPU通常都比较紧缺),白天再跑的话就没问题了,完结撒花~

 补充一些最近我再再一次配置虚拟环境得到的一些tips(坑)。

  1. 能用pip先用pip去install,因为它可以临时使用镜像源;
  2. pip最大的问题就是它支持的版本太少了(或者太老了),这种情况我们有两种解决方案:1)使用pip下载pip支持的最近版本,如代码需要的版本是0.15.1,pip支持的最近版本是0.19.1,那就下载0.19.1这个版本(经验和直观感受是:没有到v1→v2这种跨度的包都是兼容的,当然相差越小越好~);2)如果1)pip都做不到,那我们只有使用conda,conda的处理过程就是我上面提到的【针对此问题我插播一个最近我再一次配置虚拟环境的历程。】中我解决conda速度太慢、镜像源不起作用的方法。实际上总结下来,面对conda,可能“多点耐心等+网速给力”是最好的解决方案。
  3. sklearn的安装请用全名请用全名请用全名:scikit-learn。

硬核补充——远程代码高亮

1、如果你搞好了vscode远程连接发现代码功能异常,如不能“跳转到函数定义”(就是那个module都是白色字体,而本地上打开vscode的时候module该绿的绿该紫的紫 ),再如你发现远程连接的时候不可以设断点debug(简直是IT狗的灾难!!!),那么,请这样操作:

这个时候各个module以及函数该高亮的都高亮了,并且在文件的最左边,鼠标停留的话会出现小红点(断点)。不过,紧接着我又遇到了一个问题,就是原先不报错的模块,现在报import错误,经过查阅资料,发现是安装了python扩展之后我们程序的python解释器也会跟着改变,不过别急,我们可以人为选定自己需要的python解释器版本:

  1. 键盘上按快捷键:Ctrl + shift + P,调出“设置”
  2. 输入:Python:Select Interpreter(复制这个!)
  3. 选择合适的Python解释器

ps:有无和我一样用的联想yoga7系列电脑的呀 ~咱们的电脑快捷键全被占了(比如F12竟然是计算器,对,就是键盘上那个计算器图标),这个时候,请同时按住【Fn】+【Esc】,把快捷键自由权夺回来!Esc小灯灯亮了说明我们可以正常使用快捷键了(比如vscodeF12跳到函数定义)


硬核补充——vscode python debug(本地/远程)

1、本地单文件&文件夹debug

 我这里为了展示debug过程所以写了个很简单的工程文件夹,单文件debug也是一样的,我在使用过程中没有遇到要配置launch文件,本地可以直接debug:

test0和test1在一个文件夹下

debug过程:

vscode底部变成橙色并且debug光标已经到达第一个断点说明debug正在运行。好下面隆重介绍一下与此同时出现的debug推进工具栏(我自己取的名儿),顺次介绍:

  •  暂停/继续(这个功能必须手动鼠标),逐断点执行(可以鼠标可以【F5】)。实际上后面要开始debug的话直接F5就可以了。
  • 跳过模块(包括外部文件、包、类、函数等)内部,有点像“逐模块“执行【F10】。这个功能在工程文件夹debug中尤为明显,F10的话你的debug过程会一直在你当前的这个文件中。
  • 逐步(行)执行【F11】。
  • 这个工具我有点迷,有时候它会让程序跳到你最后一次F11的地方,有时候它的效果和F11、F10甚至F5一样(大伙儿多试几次叭)【shift+F11】。
  • 重启debug【ctrl+shift+F5】
  • 终止debug【shift+F5】

 顺便说个事儿:由于CSDN没有格式刷,所以大伙儿写文章的时候先一往无前码字,高亮或者其他文字格式最后再调。如果你遇到一个想强调的地方就立马执行(比如改变字体颜色),后面会很难受><

2、远程单文件&工程文件夹debug

知道如何工程文件夹debug,单文件就超简单啦~所以本次补充主要是针对咱们使用更频繁的工程文件夹的debug。

远程服务器debug会麻烦一点,因为要手动配置launch.json等文件。

首先确保你连接上远程的服务器并打开vscode,进入到你的工程文件夹下。根据网上的经验远程debug需要配置3个文件:

task文件配置如下,可以直接复制,把“command”关键字改成你的虚拟环境的路径就好:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "python",
            "type": "shell",
            "command": "/home/caiyl/anaconda3/envs/pytorch1.3",  
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": [
                "$eslint-compact"
            ]
        }
    ]
}

setting文件配置如下,可以直接复制,把“python.pythonPath”关键字改成你的虚拟环境的路径就好: 

{
    "python.pythonPath": "/home/caiyl/anaconda3/envs/pytorch1.3"
}

最主要的就是launch.json的配置,可以直接复制,但是要改的可能有点多,看我在下面给的注释就好啦:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    

        {
            // "python": "${command:python.interpreterPath}",
            "name": "Python: CNNforRelationExtraction", // 你的当前debug配置名称,爱取啥取啥
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/run.py", //指定整个工程的入口程序
            "python": "/home/caiyl/anaconda3/envs/pytorch1.3/bin/python", //这个地方填入你当前虚拟环境的python所在路径,可以在vscode python解释器里面(ctrl+shift+p)找到直接复制过来
            "console": "integratedTerminal",
            "justMyCode": false, //建议设为false,允许跳至外部代码。

            //下面的args这个是最最最重要的,它具体的配置和你的工程的parser配置是一致的,一般是在config文件里面,看下图解释
            "args": [
                "--data_dir",               "./data",
                "--output_dir",             "./output" ,
                //"--model",            "CNN",
                "--embedding_path", "./embedding/hlbl-embeddings-scaled.EMBEDDING_SIZE=50.txt",
                "--word_dim", "50",
                "--model_name", "None",
                "--mode", "1",
                "--seed","5782",
                "--cuda","-1", //使用GPU
                "--epoch",            "20",
                "--dropout", "0.5",
                "--batch_size","128",
                "--lr","0.001",

              ], 

            "env": {"CUDA_VISIBLE_DEVICES": "0"},
            "cwd": "${workspaceFolder}"
        },
       
    ]
}

我们的args配置就是根据上图这个parser来的,不用全部配置上,配置model的一些关键参数就行,不过目前我还没有验证到底哪些是必须的哈哈哈~ 

我发现一个非常nice的事情:如果工程文件夹里面有config.ini文件,那么我们在远程debug的时候配置launch.json文件就会特别方便:直接把config文件的路径写进去就行了,args啥的都不用配置了,由于我现在服务器关了,没法儿演示,但是这个给了我一个很大的经验提醒:以后parser配置最好规范地写进config.ini,方便自己,也方便他人~ 

文件配置好了,就可以打断点F5debug了,vscode的左侧会实时显示所有local和global变量的值,当然我们也可以鼠标悬停来查看~

ps:强烈推荐这个米黄色背景,护眼、舒服并且不反光,可以让你专心写代码(debug) 而不会因为自己太好看而分心~


暂时就补充那么多啦,希望可以给大家带来一些惊喜~

我爱vscode~

  • 13
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值