【华为云-上云之路】手把手教你用ModelArts基于海量数据训练猫狗分类模型
华为云—华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器、云数据库、云安全等云计算服务,软件开发服务,面向企业的大数据和人工智能服务,以及场景化的解决方案。
华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。
ModelArts是华为云产品中面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。
基于海量数据训练猫狗分类模型
本实验将基于ModelArts猫狗识别notebook案例中开发的算法,编写一个训练脚本,然后使用ModelArts训练作业训练一个模型,本实验使用的神经网络模型是VGG16。
基于海量数据训练猫狗分类模型实验流程
1.准备实验环境与工具
2.准备数据
3.准备好模型训练脚本代码
4.创建训练作业
5.部署模型
5.在线服务测试
1.1密钥准备
首先需要进入华为云官方网站
点击页面的“控制台”切换至控制台界面,在账号名称的下拉菜单中点击“我的凭证”,进入创建管理访问密钥(AK/SK)的界面。位置如下图所示:
什么是访问密钥?
访问密钥即AK/SK(Access Key ID/Secret Access Key),是您通过开发工具(API、CLI、SDK)访问华为云时的身份凭证,不能登录控制台。系统通过AK识别访问用户的身份,通过SK进行签名验证,通过加密签名验证可以确保请求的机密性、完整性和请求者身份的正确性。
选择“访问密钥”,点击“新增访问密钥
妥善保存系统自动下载的“credentials.csv”文件中的AK(Access Key Id)和SK(Secret Access Key)以备后续步骤使用。
1.2创建OBS桶和目录
进入方式,“控制台”->“服务列表”->“存储”->“对象存储服务”,页面右上角点击“创建桶”按钮进入创建页面。
什么是OBS?
对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。
1.3 OBS桶设置
OBS桶设置参数如下:区域:华北-北京四桶名称:自定义(注意:此名称会在后续步骤使用)根据自己的命名习惯,我将此处的桶名称取为big-dog-modelart存储类别:标准存储桶策略:私有归档数据直读:关闭多AZ:开启 点击"立即创建",完成创建
1.4创建文件夹
点击刚刚创建的桶,进入详情页
左侧栏选择“对象”,点击“新建文件夹”,在弹出的新建窗口中:
文件夹名称:自定义(此名称会在后续步骤中使用)根据自己的命名习惯,我将此处的文件夹名称取为catdog-data 点击“确定”完成添加
1.5服务授权
由于创建自动学习项目需要使用数据管理功能,在开始使用前,需为数据管理模块获取访问OBS权限。
在ModelArts管理控制台,进入“数据管理->数据集”页面,单击“服务授权”
由具备授权的账号“同意授权”后,即可正常使用:
1.6下载安装并登录OBS Browser+
由于OBS Browser快下线了,所以本次实验关于对象存储服务操作中我们用到的新工具是OBS Browser的升级版OBS Browser+
OBS Browser+是一款用于访问和管理对象存储服务(Object Storage Service,OBS)的图形化工具,支持完善的桶管理和对象管理操作。OBS Browser+的图形化界面可以非常方便地让用户在本地对OBS进行管理,例如:创建桶、上传下载文件、浏览文件等。
该工具在华为云主页“开发者->资源工具->开发工具”处
双击点进去后是下面的页面
在开发工具的业务工具处,根据自己电脑配置下载OBS Browser+:
此为下载完成打开后的OBS Browser+工具界面:
填入步骤1.1下载得到的Access Key Id和Secret Access Key密钥
即可登录刚刚在华为云云端创建的OBS桶:
此时可以借助OBS Browser+从云端创建的OBS桶中上传和下载文件:
2.1准备数据
本实验中的ModelArts平台在公共OBS桶中提供了猫狗分类的示例数据集
命名为“dog_and_cat_25000”
本文的操作实验将使用此数据集进行模型构建。
可在下面地址的模型训练处进行猫狗数据集的下载
https://github.com/huaweicloud/ModelArts-Lab/tree/master/train_inference/image_recognition#%E5%9B%BE%E5%83%8F%E5%88%86%E7%B1%BB%E7%BB%BC%E5%90%88%E5%BA%94%E7%94%A8%20
由于本实验使用的猫狗数据集文件的大小较大,有533M,共25000张图片。
您可以通过关注本微信公众号后台回复“萌狗”即可一键获取猫狗分类数据集:
2.2不需要数据解压
在本地电脑平台,无需解压刚才下载的
“dog_and_cat_25000.tar”压缩包。
(因为系统会在训练脚本中会做解压操作)
2.3数据上传
点击打开刚刚下载安装好的OBS Browser+工具进行对象存储服务
进入步骤1创建好的OBS桶:
/big-dog-modelart/catdog-data/data/文件夹中:
点击“上传”,选择刚才下载的本地猫狗分类数据集中的文件夹,点击“确定”即可完成上传。
利用OBS Browser+工具将数据上传至华为云云端的速度很快,上传完了后就可以在华为云云端看见刚刚上传的本地电脑的猫狗数据集。
3.准备好模型训练脚本代码
本实验的三个脚本代码文件可以在下面的华为云链接处下载
https://github.com/huaweicloud/ModelArts-Lab/tree/master/train_inference/image_recognition/codes
或者本公众号后台回复“脚本”进行下载
将dog_and_cat_train.py训练脚本上传至OBS路径:
/big-dog-modelart/catdog-data/codes/
codes文件夹如果不存在,需要自己创建,该文件夹名称可以自定义命名
4.创建训练作业
在ModelArts平台的训练管理的“训练作业”界面,单击“创建”按钮:
进入创建训练作业页面:
按照下文指导填写字段:
名称:自定义(此处我设置的是trainjob-dogcat)
算法来源:常用框架
AI引擎:TensorFlow,TF-1.13.1-python3.6
代码目录:训练脚本所在的目录,选择OBS路径
/big-dog-modelart/catdog-data/codes/
启动文件:训练脚本,选择OBS路径
/big-dog-modelart/catdog-data/codes/dog_and_cat_train.py
数据存储位置:训练数据集的路径,选择OBS路径/big-dog-modelart/catdog-data/data/
训练输出位置:选择OBS路径
此处我的路径为:
/big-dog-modelart/catdog-data/output/
运行参数:添加max_epochs=20。运行参数中设置的变量会传入到训练脚本中
经过解析,可以使用。此字段用于设置算法中的超参。
选择公共资源池类型和规格可以根据自己的需求来选择
此处我选择的是:类型:GPU规格:
[限时免费] GPU:1 * nvidia-v100-pcie-32gb 32GiB CPU:8 核 64GiB
计算节点个数:选择1,表示我们运行一个单机训练任务
字段填写好之后,确认参数无误,点击下一步:
然后点击提交,开始训练:
此次我的实验训练时长7分钟:
实验中间过程没有出错,训练好了后是这个页面:
配置信息展示的是创建训练作业时填写的参数和配置;
日志展示的是训练脚本运行过程中输出的日志,如果作业运行失败,可以通过日志信息定位问题;
资源占用情况展示CPU、GPU和内存的利用率。
创建TensorBoard查看训练过程,查看loss, accuracy等参数的变化信息。在训练详情页面,点击“创建TensorBoard”按钮,如下图所示:
创建TensorBoard就是创建可视化作业
会跳转到创建TensorBoard页面:
名称:自定义
日志路径:TensorBoard日志的OBS存储路径,会自动读取,请保持不变。
点击“下一步”,确认参数,然后点击“提交”。
最后点击“返回TensorBoard”,等待TensorBoard创建完成。
当状态处于“运行中”时:
点击TensorBoard名称,进入TensorBoard,可以看到TensorBoard界面,如下所示:
TensorBoard可以直观地显示训练过程中loss、accuracy等评估指标的变化曲线,为开发者优化模型精度提供依据。
注意:TensorBoard使用完后需要及时关闭,否则会继续扣费。
5.部署模型
将之前步骤3下载得到的customize_service.py与config.json文件
用OBS Browser+将文件上传到训练输出位置
/big-dog-modelart/catdog-data/output/model/
(注意此处是需要放在model文件夹中)
customize_service.py推理脚本中有两个方法:
1._preprocess 是预处理方法,在推理请求前调用,用于将API接口用户原始请求数据转换为模型期望输入数据。
2._postprocess 是后处理方法,在推理请求完成后调用,用于将模型输出转换为API接口输出。
config.json 是模型部署配置信息,定义了AI引擎的类别,推理脚本需要的Python依赖等。
ModelArts平台约定:推理脚本的名称必须为customize_service.py,模型部署配置文件的名称必须为config.json。
在ModelArts平台中进入“模型管理”,点击“模型”:
然后点击“导入”按钮后,如下图:
名称:自定义(此处我设置为model-dogcat)
版本:0.0.1
元数据来源:从训练中选择
选择训练作业:选择之前创建的猫狗识别训练作业
版本:选择相应的版本
部署类型:在线服务
其他参数会自动加载
点击立即创建按钮,等待模型导入完成。
在模型管理页面, 找到导入的模型,点击“部署”下拉框中的“在线服务”,如下图:
进入部署页面,按照下面指导,填写相关参数:
名称:自定义
资源池:公共资源池
选择模型及配置:会自动加载,保持默认
点击“下一步”按钮,然后点击“提交”按钮:
点击“查看服务详情”:
等待在线服务部署成功(状态变成“运行中”)如下:
6.在线服务测试
在“部署上线”的“在线服务”处,点击运行中的在线服务右侧的“预测”
进入到测试界面,单击“上传”图片,进行检测:
箭头指的地方可看见检测结果,可以说利用ModelArts平台训练的猫狗分类模型检测效果很棒。
测试1
测试2
测试3
测试4
测试5
至此实验全部完成。
大家使用的云端资源记得全部删除如对象存储服务创建的OBS桶,文件夹;ModelArts创建的数据集,部署的模型,TensorBoard等都需要删除,并停用访问密钥,以免造成不必要的花费。
通过对实验结果的比对,可以看出利用
[华为云ModelArts]训练出来的猫狗分类模型是很棒的,六个字总结就是-高效,快捷,省心。
正因我们国家有许多像华为这样强大的民族企业在国家背后默默做支撑,做奉献。我们国家才能屹立于世界民族之林。
华为,中国骄傲!中华有为!
- 点赞
- 收藏
- 关注作者
评论(0)