导读
如何从零开始学习算子开发?昇腾AI原生创新算子挑战赛冠军“法宝”大揭秘。
“0xCCCCCCCC团队夺冠!”
2024年5月9日,在首届昇腾AI原生创新算子挑战赛S1赛季决赛现场,来自北京邮电大学0xCCCCCCCC团队的孙明志和梁昊骞以总分第一的成绩夺得冠军,并赢得了5万元奖金。
每年,昇腾AI都会针对高校开发者举办各种类型的开发者大赛。2024年发布的昇腾AI原生创新算子挑战赛是昇腾AI创新大赛的全新子赛事,该赛事旨在培养一批精通Ascend C算子开发的开发者,鼓励开发者基于CANN的基础能力进行深度创新与实践,加速AI与行业融合,促进开发者能力提升。
Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C++标准规范,最大化匹配用户开发习惯。通过多层接口抽象、自动并行计算、孪生调试等关键技术,助力AI开发者低成本完成算子开发和模型调优部署。
孙明志和梁昊骞目前是北邮计算机学院研究生二年级的学生。初赛时,他们仅用一周时间就以总分第一的成绩从数百支参赛队伍中脱颖而出。决赛时,又以满分的成绩提前锁定冠军。
然而,仅仅2个月前在报名大赛时,孙明志和梁昊骞还从来没有接触过Ascend C编程语言和算子开发。这么短的时间内,团队是如何从零开始学习算子开发,并夺得全国总决赛冠军的?如果非要说这支冠军团队有什么秘籍,优秀的算法基础和“边学边赛”就是两位同学的法宝。
北京邮电大学0xCCCCCCCC团队
从零开始,边学边赛渐入佳境
在实践中解决问题,是最好的学习方式。孙明志和梁昊骞自身的参赛经历,也是“以赛促学”的榜样。
孙明志和梁昊骞都是典型的计算机学霸成长路径。他们小学时就自学编程,初高中时已经在全国信息学竞赛中崭露头角。2018年考入北京邮电大学后,对程序设计大赛的热情让他们走到了一起,成为配合默契的参赛队友。
“我们都比较喜欢也比较擅长打比赛。队名是来致敬C++中的undefined behavior。”从极具极客元素的队名,就能看出两位同学对编程的热爱。
本科期间,0xCCCCCCCC团队在国际大学生程序设计竞赛(ICPC)亚洲区域赛及中国大学生程序设计竞赛(CCPC)分站赛中共获得8次金奖,6次银奖,是目前北邮最强ACM战队。研究生期间,团队多次参加华为举办的各类大赛,先后获得2023 华为嵌入式软件大赛算法组总决赛冠军、2023 华为算法大赛算法未来之星等荣誉。(0xCCCCCCCC团队由孙明志、梁昊骞、林麒三名同学组成,孙明志和梁昊骞参加了首届昇腾AI原生创新算子挑战赛S1赛季)
虽然拿过很多算法大赛的冠军,但在算子开发领域,孙明志、梁昊骞还是小白。“之前我们打的竞赛都全是算法类的,想换一种类型的竞赛试试,挑战一下之前完全没有接触过的领域。”孙明志表示。
昇腾AI开发者 孙明志
首届昇腾AI原生创新算子挑战赛采用初赛+决赛的赛制。初赛为线上比赛,共12道题目,难度循序渐进。决赛是线下比赛,共2道题目。初赛+决赛总分最高者为冠军。
组委会给定的初赛时间是1个半月,学业紧张的孙明志、梁昊骞直到最后一周才开始学习课程、做初赛题目。两人采用每人每天一道算子的分工,遇到难题就互相讨论,一举拿下初赛总分最高的成绩。
这背后,昇腾社区《Ascend C算子开发》(入门-进阶-高级)等一系列视频课程,提供了很好的入门教材。即使完全没有接触过算子开发的开发者,也可以轻松入门。
“进阶课程还有考试题目,动手实现Sinh算子,只要这个考试过关就算入门了。”孙明志和梁昊骞都是仅用一天时间就完成了入门、进阶课程的学习,并完成了Sinh算子开发。当然,团队的飞速成长也离不开两位同学优秀的算法基础。
“算子优化的过程比较考验对计算机底层的理解,以及算法优化经验。如果C++编程不够熟练,学起来会非常吃力。我们之前的算法基础比较好,两个人也花了挺长时间一起交流才得到满分,还是有一定挑战的。“ 孙明志表示。
勇夺冠军,在实战中加速成长
接下来,从入门到进阶,昇腾社区的官方文档和代码仓库既是进阶学习资料,也可以具体指导算子开发。
“入门之后,阅读文档非常重要。初赛每一道题都会接触到不同的函数,对照函数去看文档,就会越来越熟。如果最后一天去做第一天的题我们可能只要两小时就能写完了。“梁昊骞表示。
“对于初学者,代码仓库也是非常好的学习资料。里面有很多从简单到难的各种算子,一下子就能明白整个过程。初赛最后做InstanceNorm算子优化时,我们也是参考了仓库里的代码。“孙明志表示。
就这样,孙明志和梁昊骞凭借一步步自学+动手实践,顺利打入决赛,与来自全国各地其他9支开发者团队齐聚北京,展开巅峰对决。决赛既是对团队整体算子优化能力的大考,也考验着团队配合与临场发挥。
“非常享受和高手在一起打比赛的过程。”“比赛整体体验还是挺不错的。我打比赛有点上瘾的感觉,所以整个过程都算比较兴奋的状态。”对于孙明志和梁昊骞,线下竞赛恰恰是他们的优势。
昇腾AI开发者 梁昊骞
决赛中,0xCCCCCCCC团队一度被第二名追到只差2分,但凭借沉稳的心态和丰富的比赛经验,团队对算子进一步调优,终于获得了满分。两位同学认为,在荣誉和奖金之外,能够学习全新的算子开发能力是参赛最有成就感的事。
“这次大赛最吸引人的地方是从理论到实践。算子竞赛就是一个真真实实的实践过程。之前自己只会调用算子也就是‘调包侠’,只知道这个东西怎么用,不知道它的原理。对算子开发原理有了更深入的理解后,未来的开发会站在更高的层次,考虑更多底层的问题,这对于自己能力和视野的拓展都非常有帮助。”孙明志表示。
“ Ascend C算子开发主要用来加速AI大模型训练和推理,未来将会有非常广的应用前景。现在AI大模型参数规模越来越大,对加速计算的需求一定会越来越高的。在底层流水线上即使只是优化加速一点,在大模型高频训练迭代时带来的效率提升一定非常可观。”梁昊骞表示。
值得一提的是,目前昇腾AI原生创新算子挑战赛(S1赛季)的作品都已在昇腾社区开源开放,供更多开发者学习交流。
寄语学子:不断挑战,积极拥抱AI新技术
目前,昇腾AI已经与360多家高校院所合作,每年培养超过5万名专业AI人才,昇腾开发者突破300万人。
在孙明志和梁昊骞的身边,接触过或对昇腾感兴趣的同学也越来越多。梁昊骞此前曾在一个项目中接触过昇腾AI基础软硬件,他认为昇腾的表现超出预期。
“第一次接触到昇腾设备的时候,我觉得算力能力已经超出预期了。当时项目对时延的要求是70毫秒,最后借助昇腾设备已经优化到40毫秒,完全没有想到能做到这种程度。我觉得大家可以积极尝试一下昇腾。”梁昊骞表示。
随着昇腾AI生态的不断完善,以昇腾AI创新大赛、昇腾AI原生创新算子挑战赛为代表的赛事,也给了更多高校开发者更大的舞台。越来越多年轻开发者在一次次备战大赛中,不断挑战自我,用算法解决真实世界的难题。
“打比赛最有成就感的,就是当自己的算法具备碾压性优势、或者与别的高手旗鼓相当时,感觉自己的努力都是值得的。通过比赛,学到了很多一般书籍或课程都学不到的东西,而且把过程中锻炼的开发能力变成了自己的看家本领。”孙明志表示。
结语
通过以赛促学、边学边赛,孙明志和梁昊骞将自身对编程的热爱变成了实实在在的本领,也找到了最适合自己的成长之路。
目前,昇腾AI原生创新算子挑战赛(S2赛季)已经启动报名(报名截止时间:2024年8月31日),奖金池达到百万元,已经有全国各地高校的数十个团队报名参赛。
如果你有一定的算法开发基础,又对更底层的算子开发感兴趣,不妨加入昇腾AI原生创新算子挑战赛。在昇腾社区,来自全国的高校开发者将与你一起,解锁更多AI新技能!
END