本文选择使用Pycharm连接AutoDL平台的云服务器(对学生党有优惠福利),连接过程都差不多,连接其他服务器(比如自己课题组的)时可类比进行尝试。
另外,本文默认大家已经了解AutoDL的基本使用过程,不熟悉的同学们可以去看官方帮助文档:AutoDL快速开始
本文选择的AutoDL镜像为:Pytorch=1.10.0 Python=3.8 Cuda=11.3
1、无卡模式开机,获取登录指令:ssh -p 50529 [email protected]
2、打开Pycharm,选择Add Project Interpreter
3、选择SSH解释器,输入登录指令
4、输入密码
5、选择Python解释器:/root/miniconda3/bin/python
,同时同步本地文件夹和远程服务器的文件夹(直接新建yolov5文件夹即可),由于这里勾选了Automatically upload project files to the server
,因此默认本地的yolov5工程文件,已经全部更新到了对应的远程服务器的yolov5文件夹中
1、进入远程服务器终端命令窗口,并更新bashrc
中的环境变量:conda init bash && source /root/.bashrc
2、删除miniconda3/pkgs/
文件夹下所有的文件,方便之后成功安装依赖,当然这一步也可以略过
$ cd miniconda3/pkgs
$ rm -rf *
3、新建环境(可选,也可以直接在base环境安装依赖)
$ conda create -n yolo python=3.8
$ conda init bash && source /root/.bashrc
$ conda activate yolo
4、安装pytorch、torchvision和cudatoolkit,根据镜像安装对应版本
$ conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
5、安装YOLOv5默认依赖
$ cd yolov5
$ pip install -r requirements.txt # install
6、测试安装是否成功
$ cd yolov5
$ python detect.py --weights weights/yolov5n.pt --source data/images/
AutoDL的实例均提供公开数据集(CIFAR10、VOC2007、VOC2012、COCO2017等),默认地址在/root/autodl-publ路径下。
# 在autodl-tmp(数据盘)中新建VOC2007文件夹
(base) root@container-a798118d3c-5d97f4b1:/# mkdir autodl-tmp/VOC2007
# 进入Pascal VOC2007数据集保存路径
(base) root@container-a798118d3c-5d97f4b1:/# cd autodl-pub/VOCdevkit/
# 将Pascal VOC2007数据集解压到自定义路径
(base) root@container-a798118d3c-5d97f4b1:~/autodl-pub/VOCdevkit# tar -zxvf VOC2007.tar.gz -C /root/autodl-tmp/VOC2007/
我们在使用以SSH为基础的工具软件(比如XShell、MobaXterm、PyCharm,VSCode等)进行远程执行程序时,为了避免因为SSH连接中断导致程序终止,遭受不必要的损失,通常会开启守护进程来执行程序。这里介绍两种守护进程方式:AutoDL自带的Jupyterlab终端和screen
工具
1、最简单的方式是通过jupyterlab的终端来执行,只要jupyterlab不出现重启(几乎不会),jupyterlab的终端就会一直运行,无论是本地主机断网还是关机。如果关机了这个终端tab,可以在左侧栏正在运行终端和内核
中找回。
2、使用screen
命令,首先要在命令行终端安装screen
:
apt-get update && apt-get install -y screen
之后就是常规操作了:
$ screen # 开启screen
$ screen -ls # 找到所有离开的会话
$ screen -r ... # 恢复指定会话
$ kill ... # 关掉指定会话
不确定自己的代码需要执行多久结束,希望执行完成后立马关机,这类场景可以通过shutdown
命令来解决。
1、命令行后面加shutdown
$ python train.py # 原执行命令
$ python train.py; shutdown # 用;拼接意味着前边的指令不管执行成功与否,都会执行shutdown命令
$ python train.py && shutdown # 用&&拼接表示前边的命令执行成功后才会执行shutdown
2、在Python代码中执行shutdown
命令
import os
if __name__ == "__main__":
# xxxxxx
os.system("shutdown")
AutoDL帮助文档
pycharm远程连接AutoDL训练pascalVOC2007数据集