在过去一年的时间里,我有幸参与了“人工智能算子开发接口标准参考实现”在启智社区的开源和研发工作。从项目有大致雏形、到顺利开源在OpenI启智社区、再到预期功能模块不断迭代完善,这段时间我们进行了大量的调研和开发,克服了很多困难。2020年12月,我们的项目成功获得了社区评选的“优秀开源项目”荣誉,我个人也获评首届“优秀开发者”和“突出贡献者”。这些荣誉对于团队来说是巨大的肯定,而对于我个人来言更是一种别样的经历和收获。
实际上,我从研一入学就开始接触“人工智能算子开发接口标准参考实现”相关的工作了。为了尽早确定自己研究生期间的方向,我在完成本科毕业答辩之后,向研究生导师申请提前一个月来实验室实习。那时组里“人工智能算子开发接口标准参考实现”的预研工作刚刚起步,项目中“国产化”、“人工智能”和“标准化”等标签在中美贸易战的背景下显得十分不同寻常,也给我留下了非常深刻的印象,经过一番争取,我顺利的加入到项目中来。
本以为带着本科积累的基础进组,我能够在项目中游刃有余,真正做起来才发现,标准参考实现的研发并不是一件容易的事。特别是在项目开源到启智社区之后,我们更加意识到这事情的难度,以及把它做好的重要性。“人工智能算子开发接口标准参考实现”是“人工智能算子开发接口标准”中非常重要的一部分,它的目的是为标准提供一份基于特定语言的参考实现,从而能够保证标准语义的完整性。由于同时涉及到上层AI计算框架和底层硬件实现,因此完成一个接口的标准化和实现,往往要对已有的计算框架和算子库进行深入的调研和总结,必要时还需研读算子对应的论文,尝试对其进行复现和重构。从一个功能的吃力摸索,到逐渐上手熟练,再到下一个功能的艰难探索,这样的认知循环从项目开始一直持续到现在。其中最让我沉迷的环节,就是对一个功能模块逐渐熟练之后再对其进行思考和重构,过程中我常常发现自己之前看过的一些的开源代码思路竟然神奇的解决了现有代码的关键问题,便忍不住为其拍案叫绝。
当然,项目并不总是顺利的,我也遇到了很多阻碍。比如进行项目重构时因为对CMake一窍不通而花费数周时间啃下《CMake Cookbook》;比如阅读Eigen和MShadow代码时被其中出神入化的C++表达式模板技术数次劝退;再比如数据布局中的物理顺序和逻辑顺序之间的差异区分,这些问题的难度与本科接触到的项目难度完全不可同日而语。非常幸运的是,我的导师杨超老师和师兄敖玉龙都十分尽心尽责,他们会在每次组会交流时从不同角度分析所遇到的问题,讨论项目的发展方向,并给我鼓励和肯定,让我得以快速突破瓶颈,获得成长。在这里我要特别感谢我的导师和师兄在整个项目过程中给我的鼓励和帮助。除此之外,我还要感谢我的“战友”黎子毅同学、李雨芮师妹以及范睿博师弟,他们做事情认真负责,项目中很多关键功能的实现都是我们一起经过无数次调研、讨论和迭代的结果,“优秀开源项目”的荣誉与他们的努力息息相关。
除了荣誉,这个项目也给我带来许多其他收获。第一是让我意识到,复杂的功能往往是从最简单的样例慢慢拓展迭代而来,一蹴而就是不现实的。我们的参考实现前后就经历了好几次大规模的重构,每次重构之后再回过头对比上个版本,都简直如云壤之别。第二是在项目中有许多机会与专家进行交流,这对于个人视野的拓展是大有裨益的。不管是线上社区互动,还是线下分享提问,将自己做的事情分享出去,在增强自信心的同时也学到了很多新的东西,帮助自己直面不足之处,进而有动力去做迭代和完善;最后是在这个过程中,我逐渐养成了从整个项目层面进行独立思考和计划的习惯,这也将为我毕业后参加工作打下了良好的职业基础。
启智开源社区作为国家面向新一代人工智能开源共性技术的平台,为大家提供了同等的机会进行开源项目创作和交流。我很荣幸作为社区首批开发者,为社区建设贡献一份力量并且获得认可。衷心希望未来自己有更多机会参与进来,一起让启智社区越来越好,让国内人工智能开源生态越来越好。
作者:李克森
上一篇:第一页
下一篇:AI算子标准参考实现优秀开发者获奖心得