转载地址:ModelArts+MindSpore,前端小工和"MM"玩转AI_MindSpore_昇腾论坛_华为云论坛
作者:胡琦
首个全场景AI实战营-- MindSpore 21天实战营在全网疯狂拉票的最后一场较量中落下帷幕,然而“See the future with ModelArts + MindSpore”,同时AI学习之路永不止步。本文将回顾我在MindSpore实战营中的踩坑经历,揭秘前端小工如何借助一站式AI开发平台 ModelArts 和全场景AI框架 MindSpore 玩转AI。对,仅仅是玩,正如李大钊所说“玩要玩得痛痛快快”,当您刚接触“MM”,相信您也能玩得痛快、玩转AI。
继上一次分享“Hello MindSpore”刚刚过去一个月,不过苦于没有足够支撑体验 MindSpore 的本地硬件,于是转战 ModelArts 云端资源,恰好这次实战营也有80%的案例可以基于 ModelArts 的昇腾环境实现,所以就有了本次的分享--零基础和“MM”玩转AI。
国际惯例,先简单介绍一下自己。非著名Copy攻城狮胡琦,虽然做了4年前端,不过水平属于“工作4年4个月经验”的那种,尽管基础不扎实,却喜欢折腾新事物。比如鸿蒙,尽管只写了一篇 HelloWorld 获得近3w的阅读量--华为松山湖“火了”,我的鸿蒙HelloWorld没事吧;比如开源问答机器人,一篇EI应用的博客也获得1w+点击量,也有幸在开源年会上露脸。今年有幸接触到华为云AI,通过华为云AI实战营了解到一站式开发平台ModelArts,发现零基础也能通过 ModelArts 训练模型、部署发布模型服务,通过 MindSpore 实战营也意识到全场景AI框架在应用层并没有想象中的那么难,因为通过官方给出的代码和文档,我们能轻松体验到亲自动手处理数据集、预训练模型、微调、模型发布部署等等以往我都不敢尝试的AI开发。以往,我和大多数人一样,眼看AI技术已经应用在生活的各方各面,就连前端切图仔的活也被AI干了,而我却只能望AI而兴叹,直到遇到了“MM”,也是就是 ModelArts 和 MindSpore ,让我意识到零基础也能玩AI,更关键的第一点还结识了很多大佬,至少今年1024蹭的 ModelArts 那个饭局接触到的大佬是我不敢想象的--华为云EI陈亮陈总、旅居在强国的Richard、“借力ModelArts升职加薪”的建行客户经理袁覃……
说回正题,接下我将简单介绍一下“MM”,回顾一下我在MindSpore实战营中如何使用“MM”,通过一个简单的案例体验ModelArts+MindSpore,最后也会有个简单的总结和建议。
说到ModelArts和MindSpore,就不得不提到2018年华为提出的AI全栈解决方案。这是华为AI全栈解决方案的概要图,从底层的芯片到芯片使能再到AI框架及应用使能,这套解决方案非常完备,而我们今天的主角ModelArts和MindSpore可以说占据了一半的分量,"MM"在AI全栈体系中的地位是当之无愧的“扛把子”。如果能掌握ModelArts和MindSpore,玩转AI应该也不在话下,这里安利一下华为智能计算技术丛书,听说JeffDing大大已集齐六本,学好人工智能最好的时间是十年前,其次是现在!
一站式AI开发平台ModelArts,无论是数据处理还是模型训练,甚至模型部署,在ModelArts上统统能搞定。对于零基础的小伙伴,推荐玩下自动学习,涵盖了物体检测、图像分类、声音分类、文本分类、预测分析等模块,也可以体验一下预置算法和AI市场,AI市场目前包括模型、算法、数据集,未来还会新增挑战等模块,另外数据处理如清洗增强等功能都值得新手体验。当然,目前我感觉最好用的就是我的笔记本功能,即开即用,多种环境可选择,内部消息说“值得期待”!想为ModelArts做贡献,那就来ModelArts-Lab:https://github.com/huaweicloud/ModelArts-Lab
全场景AI框架MindSpore,华为开源自研AI框架,支持自动微分、并行加持,一次训练,可多场景部署。支持端边云全场景的深度学习训练推理框架,主要应用于计算机视觉、自然语言处理等AI领域,面向数据科学家、算法工程师等人群(当然也面向Copy攻城狮)。主要具备基于源码转换的通用自动微分、自动实现分布式并行训练、数据处理、以及图执行引擎等功能特性。借助自动微分,轻松训练神经网络。框架开源,华为培育AI开发生态(当然也希望在看的各位加入华为云AI社区)。MindSpore着重提升易用性(AI算法即代码)并降低AI开发者的开发门槛,至少对于我这种Copy攻城狮而言,很快就能跑通Hello MindSpore。那学习MM难吗?可以肯定的是不难,只要找对方向和方法并能坚持。当然,踩坑是避免不了的。
鉴于我目前所处的学习阶段,面临最大的问题就是环境,这一点在实践中尤为突出。回顾这次 MindSpore 实战营,我们完成了基于MindSpore Lite开发目标检测的安卓APP实战、基于BERT实现中文新闻分类实战、 MindSpore基于ResNet50实现毒蘑菇识别实战、 MindSpore基于YOLOv3实现篮球检测模型实战、MindSpore基于Wide&Deep实现CTR预估实战,接触到的模型有MobileNet、SSD、BERT、ResNet50、YOLOv3、Wide & Deep,每堂课上我们的MindSpore布道师都会先从应用场景开始,介绍各模型的基础知识,讲解实战代码,最后还会给出指导文档,简直是保姆级教学!尽管如此,我还是遇到了很多坑。
最开始我尝试安装本地的MindSpore环境,因为是windows系统,选择了WLS搭建,经过一路坎坷的尝试,终于放弃了,最后只得使用MindSpore提供的已经转换好的MobileNet和SSD模型。当时还遇到了一个谜一般的坑:编译Android APP的时候提示本机连接失败,最后排查到是因为电脑开启了热点,关闭调热点重新Build就成功了。
在Notebook的环境下运行脚本时会提示No module named 'src'
,这是因为需要切换到执行目录,另外还需执行Sync OBS操作,因为我们新建的MindSpore昇腾环境是连接OBS的,需要同步OBS的文件。当然要成功运行除了Copy代码,还需要对入参做简单的修改。
另一个问题就是会遇到设备断开,至于原因我没有深入去探索,最终是重启Notebook解决的。
主要是OpenCV在使用上遇到GUI相关的.so文件找不到,尝试了各种方法都没有解决之后,直接转用了ModelArts训练任务的昇腾环境(不过马上就要公测结束了,看来OpenCV这个问题亟需解决!!!)
另一个坑是实战代码上存在小小的纰漏,按照JeffDing帖子的提示:
首先同样存在OpenCV引入失败的问题,其次在ModelArts训练任务的昇腾环境中也存在无法读取视频的问题(目前还是不知道怎解决),最终也是退而求次,在ModelArts的我的笔记本中完成了视频的分割和合成。这里再次安利一下我的笔记本,好不好用谁用谁知道?轻量级的数据处理、模型训练、参数调优都可以玩玩。
另一个就是预测结果上存在识别框重复、准确度太低的结果也被标注的问题,这里通过通过调整perdict的参数nms_thresh和ignore_threshold再重新预测可以在一定程度上优化。
过拟合是AI开发中最常见的问题,什么是过拟合?何老师在答疑时举的栗子非常形象,想知道吗?可以期待一下MindSpore的下一次直播!在Wide & Deep模型中,简单粗暴的操作就是可以通过数据增强来避免。
不过当我想用10%的数据集来训练的时候,发现在打开数据集文件时报错了,也许需要拆分为多个文件,不过后续就没有再探索了。我想目前对于我而言,深入一下MindSpore Lite将来在Flutter上能应用AI模型也是不错的选择;另外MindSpore模型的部署也值得深入学习一下,这样API调用师就有“自研”的API调用啦。
这次 ModelArts + MindSpore的体验,我选用Notebook MindSpore 0.50版本昇腾910环境就能实现的BERT中文新闻分类。基于 mindspore-21-days-tutorials,将chapter2/bert 代码目录及相关数据集文件在Notebook中下载上传到当前环境的OBS中,执行Sync OBS,新建MindSpore框架的.ipynb
脚本加入路径切换的代码,将run_pretrain.py
的代码复制过来,修改入参,执行即可进行模型训练(代码也支持训练完直接预测,传入predict参数就行)。
Copy pretrain_eval.py
同样新增路径切换的代码,修改入参即可实现对输入的新闻进行分类预测。整个流程十分简单,也不涉及到训练任务中昇腾资源的长时间排队(还没有了解正式商用之后Notebook中的昇腾资源是否也按标准收费,之前公测有时候排队挺久的)。
总结部分主要是我个人方面的,一是进一步熟悉了ModelArts,之前比较少用PyCharm Toolkit,后来发现JB系列的IED同样支持这个插件,比如偶尔也在IEDA中使用ModelArts,编(拷)写(贝)完代码稍作修改就可以直接训练!二是进一步了解了MindSpore,记得上次分享“Hello MindSpore”的时候,我说期待MindSpore.js,不过现在可以尝试探索在HarmonyOS中使用MindSpore Lite,依旧期待MindSpore.js,当然也许是不切实际的想法,这次实践营也给了我学习AI的方向,希望自己能坚持下去,多向各位大佬学习;最后的收获,也是对输入--输出学习模式的肯定,我又有文章可以水了,加上这篇,足足6篇,按以往的频率这可是我半年的产量啊!
建议部分主要是针对此次训练营活动的。能够上榜Top12,我真的感到十分意外,深究其原因,不是我足够认真对待学习,二是活动参与的基数太小,换而言之就是开发者的参与度不高。记得之前某强化学习营好几千人参与,其中很多相关专业的高校生。结合这一点,我的建议是希望MindSpore能适当加强宣传力度,尤其是在高校群体中,毕竟那是未来的主力军;其次就是内部资源的整合,之前参与的AI实战营也鲜有MindSpore的案例,包括目前的AI全栈计划在运营中也可以适当加些MindSpore元素,毕竟好不好用?用了才知道!
似乎最后才是重点,如果您觉得本文对您有启发,欢迎给我打Call!「21天实战营」全网疯狂拉票启动,发动亲友团来pick你心中TOP开发者吧!: https://mp.weixin.qq.com/s/_oqpqtRWK2xMBHz1una_Pg ,我是Copy攻城狮胡琦,ModelArts+MindSpore和“MM”玩转AI,感谢您宝贵的一票!