代码
MindTalk | 韩晓阳:参与开源贡献,看着程序测试通过、编译成功,在框架中使用时有了满满的自豪感

MindTalk | 韩晓阳:参与开源贡献,看着程序测试通过、编译成功,在框架中使用时有了满满的自豪感

MindTalk | 韩晓阳:参与开源贡献,看着程序测试通过、编译成功,在框架中使用时有了满满的自豪感

本期专访是来自 MindSpore 社区的开发者韩晓阳同学,其研究方向为蜕变测试和服务计算等。

1、个人介绍

我是韩晓阳,来自北京科技大学计算机科学与技术专业的大四学生。目前已经本校保研,将跟随导师进行蜕变测试和服务计算等领域的研究工作。

2、我的开源之旅

最开始接触到开源是大二暑假时,参与学校组织的校内实习。当时参与的是一个web小项目,虽然是最简单的前端jQuery和后端java/servlet架构,但组内协作还是要求我们使用Git和Git仓库。老师向我们推荐了Gitee,并指导我们建立属于自己的开源仓库。

作为专业知识与代码能力还相当有限的学生,当时接触到的开源代码与很多有开源教程的Git仓库为我们提供了很大的帮助。这之后我所有的代码工作都喜欢通过Git仓库来记录,截至目前我自己的Gitee仓库已经有累计541次Commit。

我了解到开源不过两年的时间,但在这两年的时间里,我不断地感受到开源的魅力。有时是自己的一个小想法,会在某个开源仓库中看到他人的代码实现;有时是看到一个健全而庞大的开源仓库中的系统性,结构化,复杂化,模块化的代码与各种设计模式的多方面“开花”。

正如Linus Torvalds所说:“Talk is cheap. Show me the code”。开源给与了所有有能力,有想法的Coder一个“类共产主义”的理想化空间,来展示自我**、帮助大家****共同学习。**

3、与MindSpore的初相识

初次接触MindSpore是在我们课程中的一门专业选修课《人工智能导论》上,老师带领我们对机器学习、深度学习等领域进行了一定的探索,而在代码作业中,老师布置了昇思MindSpore作为框架让我们实现了一些简单算法。

除了简单的svm、决策树、lenet网络等模型,我们还以黑白棋为背景,实现了蒙特卡洛树搜索算法。我也感受到昇思MindSpore作为人工计算框架的上手难度较小、教程文档丰富等优势。

因为理论只是浅尝辄止,当时对深度学习、机器学习等领域的应用存在畏难心理,但MindSpore为我们打开了一扇窗户,能够在实践方面初探人工智能的世界。

4、我的社区成长经历

我从今年6月份开始在易用性SIG参与MindSpore GPU版本在MSVC编译器下代码适配工作,这项工作一共有三、四位老师一起参与,由于我对MSVC的编译工作并不熟悉,作为线上实习生,开始只能提供一些帮助性的支持。

向马博文老师表达担忧后,老师鼓励我“只要有投入总会有回报”。后来随着编译工作的深入,以及老师的耐心讲解与帮助,我在解决问题的同时获益匪浅。

目前MindSpore官方并没有发布windows端GPU版本的正式版(但是就工作进展来看,马上就可以发布正式版了,请小伙伴们敬请期待!),已有的CPU版本还是Cmake+mingw编译的版本,我们期望将编译工具链切换为Cmake+MSVC,然后进行GPU版本的适配。

这项工作的难点主要在于现有的GCC编译参数基本与MSVC编译器所需要的编译参数不同。我们需要在CMakeLists与C++代码中通过编译宏来确定不同平台的不同编译参数,并解决不兼容的库函数。我们曾遇到过的问题还有DLL中函数名注册失效,Python与C的函数绑定等。

同时,我们还需要注意各个第三方库的编译适配。总之,Windows下的编译适配工作涉及的知识面很广,需要我们从多方面分析问题。

当我们能编译出win+GPU的版本后,老师给予了我新的任务,利用官方的ModelZoo仓库中实现的经典网络代码对测试版本进行功能性确认测试。ModelZoo仓库为开发者提供了的许多经典网络代码及预训练模型,涉及CV、NLP、推荐算法等各个领域。

各个网络涉及到许多不同的数据集与配置方式,好在,所有网络模型代码都有对应的README。虽然在运行网络时会遇到各种不同的奇怪问题,但大都可以通过仔细阅读README并查找相关资料解决。如果陷入窘境还能在ModelZoo仓库中提交问题ISSUE,会有相关工作人员及时帮助你溯源问题并提供解决方法。

目前,测试通过训练模型数量在CPU模式下已达30个左右,GPU模式下测试通过50个左右。通过测试的体验,所有的网络在准备好数据集并进行预处理后,基本上只需要简单的修改配置文件或直接通过命令行传参的形式,就能运行各个不同的网络模型,为MindSpore的易用性提供的极大便利。不得不给我们的ModelZoo仓库竖个大拇指!

5、我的开源收获

在参与开源贡献之前,我认为昇思MindSpore作为一个开源框架,没有较强的系统性代码能力很难做出自己的贡献。参与后发现只要克服了前期的畏难心理,寻找适合自己的任务,积极投入,弄能做出自己的贡献。虽然到现在我暂时还没有正式PR合入,但也通过ISSUE指出了一些仓库中的小错误,让后来者少踩坑。

在参与开源贡献之前,我可能只是框架的使用者;但现在作为一个参与人,一个开发者,看着程序测试通过,编译成功,在框架中使用时也有了自豪感。

我参与本次开源实习初心是对MindSpore本身感兴趣,同时希望利用系统性的代码提高自己的Code能力,感谢实习中的导师制度与良好的社区氛围,感谢我的指导老师马博文,还有其他的开发者都给与了我很大帮助,祝愿MindSpore越办越好,成为更加优秀的国产全场景AI框架。

YOUNG新生之如何玩转AI开源社区?

10月29日(周六)20:20,晓阳同学将线上为大家分享《ModelZoo在MindSpore-Windows版本下的使用“指北》。本次活动采用腾讯会议线上分享,扫码报名即可获取腾讯会议链接!

MindSpore官方资料

官方QQ群 : 486831414

官网https://www.mindspore.cn/

Gitee : https : //gitee.com/mindspore/mindspore

GitHub : https://github.com/mindspore-ai/mindspore

论坛https://bbs.huaweicloud.com/forum/forum-1076-1.html