ModelArts使用心得
华为云近期成功举办了垃圾分类人工智能大赛,整个比赛历时一个多月,我们有幸闯入决赛并拿到了二等奖。预赛阶段华为云为每名成员提供1000元的代金券,决赛期间为每个团队提供了5000元的代金券,由于自身实验室硬件条件所限,除了小规模的模型校验,我们全程使用了华为云提供的ModelArts一站式AI开发平台,我们也尝试使用了其他gpu计算产品,如百度云、极客云,国内也有一些提供免费gpu资源的平台如FlyAI,使用一圈下来,有一些真实的感触。
ModelArts(以下简称MA)是基于容器技术构建的一系列深度学习开发、训练、推理和部署的服务集合体,我们也了解到它还有一些更个性化、高级的功能,比如数据标注(人工或自动化)、自动调参、AutoML等,我们在比赛中主要使用了几项比较基础的功能,如模型训练、Notebook服务、模型发布、在线服务部署、批量服务部署功能,实际上这些服务体验的好坏也是整个ModelArts的核心。
模型训练、Notebook服务方面:
MA支持两种开发模式,离线式(提交Python代码)或自建一个Notebook服务进行在线交互编程。我们的数据和代码首先通过obs browser客户端上传到华为云的对象存储服务上(OBS),这个目录结构可以和本地保持一致。例如下图所示。因为训练数据集有上万张图片,网页端的obs无法支持这么多文件的同时上传,而obs browser客户端可以直接选文件夹上传和下载,方便了许多。
提交训练的代码,经过我们摸索和借鉴比赛官方提供的baseline,在通常自己开发的本地训练代码上,需要加几个命令行参数的处理(比如--train_url、--data_url、--num_gpus),来识别作业是在本地运行还是在MA上运行,如果是在MA上运行,我们的处理非常简单,直接用华为的obs api把数据从OBS同步到容器本地的临时存储(/cache目录),最后在运行结束后上传回OBS,总共需要十几行代码。MA的模型训练能够选择几种预设的Python环境,如tf、pytorch等,如果还需要其他第三方包,可以在代码目录下新建一个pip-requirements.txt文件,配置pip的标准安装需求列表(指定pip包和版本号),就能够完美实现本地与云端相同的运行环境。例如下面两个图所示。最后还可以指定作业的log日志在obs上存储的位置,这样所有的训练输出就可以很容易的备份下来了。目前MA我们可以用的有单卡P100和四卡P100两种配置,价格分别是7.6/hour和30.4/hour。小提示:如果你的模型需要迁移学习,可以把预训练权重文件传到obs中,一起同步到容器本地存储,来加快加载速度。
建立作业,如下各图:
然后通过日志确认训练正常开始:
下图是代码在同步obs数据文件夹到容器本地,
几分钟后,训练应该正常开始:
基本全程保持90%+的gpu利用率。
此外还有Notebook服务,我们实际上用的并不多,使用起来的一些技巧相信也和上面一样,主要是数据的同步和环境的定制。
模型发布、服务部署方面:
MA中设计的模型管理、发布和部署服务让我们眼前一亮,按照官方发布的baseline中的脚本,我们可以把任意一个tf的h5模型文件或者torch的pth文件转换为标准的部署格式,上传到obs,然后通过MA的页面来构建一个模型,然后可以将该模型发布到公开的AI市场上供他人购买或使用,也可以发布到比赛的评审账号,还可以将模型部署为一个在线服务或者批量服务(建议大家通过工单开通gpu推理服务,完整的体验部署好的深度学习服务是如何使用的,响应速度如何,可能大多数朋友都只关心模型的性能,而忽视了模型的耗时和部署的大小),这里展示一下这几个界面:
总结:我们觉得MA确实能够快速、轻量、低成本的支持离线式(作业提交)或在线交互式(Notebook)深度学习模型开发、训练与调试,相比其他类似厂商产品如gpu虚拟机(百度云)有着配置简单、快速上手的优点(虚拟机需要自行配置软件环境,费时费力且容易出错),相比一些众包gpu计算服务(如极客云,缺点是不稳定,长时间的任务经常失败),有着稳定、简易、灵活、计费友好(任务结束后自动停止计费,不像虚拟机一样还得自己销毁镜像)、成本相对较低(呼吁华为可以给一些核心开发者多一些免费测试资源)的优点,这也使我们能够在有限的硬件条件下得以快速迭代,验证想法。AI市场的想法非常好,有很多可以预见的可能。
最后,给大家看一下我们的消费情况,除了代金券的消费是可以开发票报销的,这对企业和科研机构还是比较方便的。
- 点赞
- 收藏
- 关注作者
评论(0)