说明:本地使用win10系统及Pycharm2022.3.2,远程连接实验室服务器Ubuntu 16.04.7及Cuda11.2。
本文主要记录了在远端服务器中创建属于自己的独立环境,从零安装miniconda、pytorch;在pycharm最新2022版部署本地与服务器映射、配置Jupyter的全过程。
由于网上可以找到的教程都是Pycharm2019,而最新版2022在界面上做出了较大变化且部署起来更为方便,特此记录,由于笔者水平有限如有错误欢迎在评论区指正。
mkdir -p ~/miniconda3
标注有py的说明自带安装了该版本python,但是影响不大,因为后续会使用自己创建的环境以防环境间相互干扰。选择需要的版本然后使用wget命令进行安装:
# -O表示将文件安装到该路径下
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 #解压
#-r 向下递归,不管有多少级目录,一并删除。
#!!!注意尽量要在根目录下使用,防止出现rm -rf is not found(说明环境变量出错)
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda
source ~/miniconda3/bin/activate #进入base环境
说明:很多文章中说可以直接看conda -v,但是我在运行的时候出现了报错,参考了这位博主的说法:ubuntu系统安装miniconda3以后找不到conda 命令,使用source解决了问题。
接下来我们就可以按照本地anaconda一样的指令来创建独立的虚拟环境了。
#创建虚拟环境
~/miniconda3/bin/conda create -n <env_name> python=xxx
#进入base环境
source ~/miniconda3/bin/activate
#进入创建的虚拟环境
source activate 环境名
#显示当前目录下安装的库
conda list
#切换当前目录(目录与虚拟环境互不干扰)
cd ~/文件夹名
#查看当前目录
pwd
#查看目录下子目录和文件
ls
但是每次都输入这样的初始路径也太麻烦了,所以我们可以对linux的环境进行一定的配置。参考:Linux设置anaconda的环境变量
vi ~/.bashrc #进入配置文件
"i": 输入文本; "ESC":退出文本模式; "shift+:":命令模式; 命令模式wq:保存+退出
export PATH=/home/<username>/miniconda3/bin/envs/<env_name>:$PATH
source ~/.bashrc #重新初始化环境变量
做三点说明:
export PATH=/home//miniconda3/bin:$PATH
,如果想添加新的路径就使用::
,其中$PATH
表示系统默认路径,一定要加在末尾,表示查找不到则最后访问该路径。nvidia-smi
# -c表示采用官网下载,因为清华镜像源默认使用cpu版本
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
conda uninstall cpuonly
注意:我在再次配置时出现了解释器库无法显示的问题,重新进行了配置,参考我的另一篇博客:Pycharm2022版SSH连接
pycharm环境配置主要分为两步:
Tools-Deployment设置ssh:PyCharm配置远程python解释器
File-Settings设置解释器
参考附上的链接,不同版本的pycharm界面会略有不同,最关键的是理解关键项的意义,部署相当于是首先在Connection中连接上一个远程服务器(Root Path设定了根目录),然后在Mapping中将一个本地文件夹(Local Path一般为当前目录)与远端服务器的某个文件夹(Deployment Path)进行同步映射。映射成功后可以在Remote Host进行查看(需要先重启Pycharm)。注意的是Local Path是绝对本地路径而Deployment Path是相对于Local Path的相对路径,见下图:
其实和部署时差不多,考虑到网上大多数教程都是2019版,下面给出2022版的示范界面:
综上所有的远程连接就完成了,接下来只需要正常变成即可,如果需要下载新的库就在命令行中进入自己的虚拟环境然后pip或conda install即可。
运行Jupyter时发现只能使用cpu,无法连接远程服务器,于是进行了配置。发现网上都是2019版的教程,于是记录了自己配置的过程,2019版和2022版的差距相对来说较大,2022版的配置更为简便。
参考解决pycharm 连接服务器使用Jupyter Notebook无法运行问题
可以出现如下界面则说明配置成功:
说明:关于linuxv的im指令:终端打开及编辑文件内容
1.打开文件:vi ‘文件名’
2. 按键’i’,终端页面下方显示’insert’即插入,表示文件进入自由编辑模式
3. 编辑之后按键’ESC’退出编辑页面
4. 保存及退出文件:按键’shift+:‘,三者同时摁,此时终端页面显示’:‘,输入’wq’,即保存并退出;若输入’q’则只退出不保存。
如果上述过程不行的话,按照如下顺序打开Jupyer的配置:
上述过程中可能会弹出输入密码(Server)的对话框,输入自己配置时的密码即可。
说明:在查阅网上配置时发现大多博主都选择了第二项,不知道是不是2022版新增了功能,我在使用第一项即Use Managed Server即实现了自己的目的,而且很简便。
根据提示我们知道可以通过“Ctrl+C”来结束Jupyter进程
但是实际上在使用jupyter时也会出现类似的情况,即本地手动终止的进程在终端依旧在运行(这样还会导致该更新的代码没能成功刷新),我们需要用命令行结束这些进行。首先可以尝试使用jupyter notebook stop命令,但是我遇到了报错,参考这位博主成功解决了问题:如何真正地关闭jupyter notebook server
jupyter notebook list #显示当前的进程
lsof -n -i4TCP:port-number # 通过端口获得pid
kill -9 PID # 删除进程
演示如下,可以发现再次显示进程时53365被kill。(至于为什么这么多进程,是因为之前不会关hhh)
不过博主提供的代码块我没能运行成功,我也懒得检查直接手动一个个kill了。
最后:关于Jupyter训练网络时,改一次py代码就要重新刷新然后从头来一遍我暂时没有想到好方法,或许先将代码粘贴进jupyter? 后续解决了再更新,也欢迎大家在评论区指正!