关于AutoDL的使用心得
官方地址:https://www.autodl.com/
此处分享两种不同方式对AutoDL的使用方法,本人是Pycharm党,所以两篇内容都是与Pycharm下代码如何部署在服务器上有关
AutoDL 是什么
AutoDL平台通过自动搜索最佳模型架构、超参数调优、数据处理等关键步骤,帮助用户更高效地进行机器学习和深度学习任务。无论是初学者还是资深研究者,都能轻松使用,极大降低了深度学习应用的门槛
个人之所以使用AutoDL,其实很大原因是的GPU服务器市场租赁,真的贵。对于AI学习的人而言,如果你需要长时间不间断炼丹还好,要是只是间歇性炼丹,闲暇时间段的GPU算力浪费又是一个问题。最早的时候使用过阿里云的GPU云服务器,性能好是好,就是很多内容似乎对那时刚入门的我来说,简直就是天书。这就让我开始,不得不思考,为什么就没有一款产品可以弹性租赁,且价格公道。我承认第一款产品并不是接触的AutoDL,而是一款叫做极客云的产品,但是被坑惨了,所以国内GPU租赁这一块,我是很推荐AutoDL,特别是很多学校的算力资源非常匮乏,很多学生又需要动手学习训练,但家庭条件有比较局限。目前租赁服务器我就花了二十多元,但是从CNN系列,RCNN系列,FCN系列,Two-Stage系列,One-Stage系列,基本跑了个遍,令人学习情绪非常高涨。
还有一点,就是AutoDL 上手非常简洁,租算力之后就可以开始使用了,简直不要太安逸。此时正逢AutoDL做活动,就此博客做一个使用的总结。
个人定义项目部署
此处的Unet 项目是我个人定义并编写的部分代码,数据集的话需要个人去定义
流程与步骤:
1. 数据集预处理
这个板块,有个经验一定要说的话,就是上传服务器一定要把自己的数据先打包成pt
或者pth
等数据格式文件。
你试试向服务器上传个十几万张图像,让你见不到希望的那种等待。(很大程度真的会影响上传效率),此处这样操作的话,我们可以利用Dataset可以很方便取数据。
class CustomDataset(Dataset):
def __init__(self, data):
super().__init__()
self.data = data
def __getitem__(self, index):
return self.data[index]
def __len__(self):
return len(self.data)
total_dataset = CustomDataset(torch.load("./data/seg/seg_images.pth", weights_only=False))
train_dataset = total_dataset[:800]
valid_dataset = total_dataset[800:]
total_labels = CustomDataset(torch.load("./data/seg/seg_labels.pth", weights_only=False))
train_labels = total_labels[:800]
valid_labels = total_labels[800:]
2. 代码部署
autoDL 平台并不是什么都给你弄好了,上传的代码里面,如果没有你需要的库,你可能需要自己进行安装
其次就是,py文件的部分代码可能在jupyter中失效,这个得大家自己去摸索总结。
然后就是根目录不要放数据,这个很重要
,数据在根目录可能会遇到文件找不到
的错误
3. 训练
极限压榨算力,算是基本思想了,不管代码有没有优化,跑结果是第一任务,其次才是优化性能
所以我非常建议大家使用GPU占用库,实时检查结果中GPU的占有量,且不断试出极限值。
import pynvml
pynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(0)
# 此处为GPU检测
meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
print(f'GPU in use {(meminfo.used / 1024 ** 3):.4f}/{meminfo.total / 1024 ** 3} G')
4. 结果
关于保存的模型文件,如果大家设置为best.pth 这种格式,那么如果此时你直接下载,会有文件被重写的可能,因此你需要设置分步保存的方式。否则你的模型就一直下载不下来。
5.省钱小密招
尽量写好代码再去跑,不然浪费时间,然后autoDL平台中,也没有丰富的代码提示功能。
6.尽量多看官方文档说明
这一点很重要
git项目部署
与上述项目不同之处,在于直接git clone的项目,不需要在乎代码如何设置,只要保证环境
和数据集
ok就行。
此处需要大家有一定的Linux的使用常识,数量指令集的执行方式。
比如YOLOv5这种项目,我们可以使用AutoDL中带的Terminal工具进行git clone
, 之后
pip install -r requirements.txt
安装好所需要的环境
比如YOLOv5这种项目,我们可以使用AutoDL中带的Terminal工具进行git clone
, 之后
pip install -r requirements.txt
安装好所需要的环境
准备好需要的数据集(参照 Utralytics官网做就好了)