随着AI技术越来越火,一个机械结构的也开始卷入深度学习机器视觉。由于对YOLO(You Only Look Once)比较感兴趣,参考了B站Bubbliiiing(ID:Bubbliiiing,Bubbliiiing-CSDN博客)教程搭建Yolov3基于VOC2007+12数据集的深度学习模型。由于本子太慢了,借助远程服务器进行训练。
一、远程服务器平台选择及连接
白嫖的colab、kaggle网页用起来不带劲,还是比较习惯pycharm这种能够大模型、大数据交互的应用,浴室开始查找对打工人比较友好的平台。本着性价比、便捷的原则,最终选择了Autodl平台,价格稍微亲民。
云服务器的租用页面能够选择镜像,包括基础镜像、社区镜像和我的镜像三部分。如果其中正好有你需要的那就太棒了。
SSH(Secure Shell)网络协议
SSH是一种加密的网络协议,用于通过网络连接到远程计算机并执行命令,提供了加密的通道,用于在客户端和服务器之间传输数据,以防止第三方拦截和窃听,允许用户在远程计算机上执行命令,访问文件和目录,并进行其他系统管理任务。
通过SSH的定义可以知道这是一种加密通信协议,相对来说是比较安全的。通过SSH,用户可以在终端上执行命令,并通过加密通道传输数据。只需在本地终端上输入SSH命令加上要连接的服务器的IP地址和登录用户名,即可远程登录服务器。例如:
ssh username@server_ip
连接远程服务器
这里笔者使用的是Pycharm,需要注意的是只有专业版才能支持远程开发功能。开机后,复制自己的实例指令:
ssh -p XXXX root@region-1.autodl.com。
其中的xxxx为你的端口号P。
在Pycharm中[File] -> [Settings],打开以下设置弹窗,搜索interpreter找到[Python interpreter]设置项。
点击Add Interpreter,选择On SSH并点击 (PyCharm社区版本无该选项)。
将实例SSH指令中的Host、Port与Username进行匹配和填写(Username均为root,Host和Port查看自己实例的SSH指令)
下一步:输入SSH的密码。
继续下一步,直到看到下面的弹窗。选择System Interpreter,配置远程Python解释器地址为/root/miniconda3/bin/python(如果您安装了其他Python或虚拟环境则根据实际情况填写)。
配置同步目录,意思是本地项目和远程实例中的哪个目录进行关联,这里设置为实例的数据盘子目录:/root/autodl-tmp/project/ (不建议使用默认的/tmp目录)。
点击创建,如果配置均无误PyCharm会有小会配置过程,完成后即可远程开发。
如果您在运行时找不到Python文件,可能是没有自动同步代码,那么可以选择手动同步:
配置好PyCharm远程开发后,可以在PyCharm的终端中下拉找到远程服务器打开远程终端:
或者在工具tool中选择start SSH session即可打开服务器的终端,输入指令激活你的环境。
二、远程服务器上配置深度学习环境
深度学习框架
所需依赖库
参考神仙博主Bubbliiiing关于yolov3基于pytorch训练及预测的框架,环境配置如下:
序号 | 库 | 版本 |
1 | Torch | 1.2.0 |
2 | torchvision | 0.4.0 |
3 | tensorboard | 2.10.1 |
4 | scipy | 1.2.1 |
5 | numpy | 1.17.0 |
6 | matplotlib | 3.1.2 |
7 | opencv_python | 4.1.2.30 |
8 | tqdm | 4.60.0 |
9 | Pillow | 8.2.0 |
10 | h5py | 2.10.0 |
Autodl平台镜像系统版本为Ubuntu,并且有一定的内置框架及版本镜像,如果里面能找到所所需要的版本环境,那么恭喜你。
conda环境搭建
服务器安装了miniconda,在上述Pycharm的服务器使用conda指令创建环境。
conda create -n yourEnv(你的环境名字) python=3.6(版本号可变自己选)
这里笔者生成了环境为“divid”的conda运行环境。,如果要查看已经安装的环境:
conda env list
在远程服务器终端激活“divid”conda环境。
conda activate david
前面(david)便是更改了conda运行的编译环境。
依赖库安装
- 官方安装方法(比较慢)
pip install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
Bubbliiiing推荐的是这种方法,但真的好慢,网络不稳定的话一下子就挂了,而且还提醒在官网找不到torch===1.2.0版本(果断放弃)。
2.先下载whl后安装
在网上搜索pytorch的安装文件,其中的轮子whl是适合于windows系统的安装文件,根据自己的笔记本系统选择相应的版本。比如我需要的如下:
下载完成后的安装文件上传至远程服务器,这里可以用Pycharm的自动更新(小文件方便),大文件就采用AutoPanel的公共网盘,是真的快!后悔发现的晚了。这个具体有机会再西详细说。
在远程服务器终端,打开whl文件所在的文件夹:
cd /root/autodl-tmp
采用ls显示该文件夹下的文件
ls
采用安装命令pip,而不能采用conda安装文件。
pip install torch-1.2.0-cp36-cp36m-win_amd64.whl
在ssh terminal输入来查看cuda型号:
nvidia-smi
进入CUDA官网按照cuda版本和操作系统来选择下面选项,最后给出的是安装的指令。将安装指令复制到你的ssh terminal,回车即可开始安装。
装好之后在终端输入
conda list
检查是否安装好了所需要版本的pytorch、torchvision和tensorboard,其他依赖库安装为了方便,在本地创建一个requirements.txt文件如下。
在远程服务器终端使用pip指令安装,路径和根据你的实际路径进行修改。
pip install -r /root/requirements.txt
同样再创建的环境下,使用conda list检查依赖库是否安装完成。
代码及训练集上传
代码的上传可以直接使用Pycharm的deployment-upload,而对于大文件上传下载使用公共网盘(强烈推荐)。
阿里云网盘比较方便,现在百度云盘不针对个人用户授权,会有些麻烦,阿里云盘普通用户单个上传文件大小上限为100GB,限制也少一些。
上传在网盘的压缩包可以下载至远程服务器的/root/autodl-tmp中,打开:
Cd /root/tmp
ls
tar -xzvf VOC07+12+test.zip -C /root/autodl
自动生成数据集:
三、结束语
上述到这,笔者所需要的基于远程服务器优越性能的pytorch的深度学习框架以及数据集都完美解决了,可以愉快的运行代码当个炼丹门徒了。只要想学习进步,方法总比困难多,感谢各位大佬的无私分享。聊以记之,方便日后查阅。