近年来在人工智能领域,算子开发的价值日益凸显,算子开发也受到越来越多年轻开发者的青睐。对于高校开发者,如何从零开始学习算子开发,提升软硬结合的AI开发能力?成功已举办两个赛季的昇腾AI原生创新算子挑战赛,为开发者提供了绝佳平台。
2024年9月20日,昇腾AI原生创新算子挑战赛(S2赛季)在上海圆满收官。自6月启动以来,凭借百万奖金池、两大赛道赛题设置、全面的赛事赋能资源,S2赛季吸引了来自全国500支参赛队伍、761名开发者报名参赛。
来自北京交通大学计算机科学与技术专业的肖勋鹏同学(Tangefly战队)获得了基础算子开发命题金奖。
仅用1个月时间,肖勋鹏就从一名算子开发小白,一路过关斩将杀入决赛夺得金奖。与很多其他开发者一样,肖勋鹏通过边学边赛、积极实践,走出了一条从零开始学习算子开发的加速成长之路。
基础算子开发命题金奖团队:重生之我在昇腾摸鱼、Tangefly(右2)
从0到1,初尝算子开发的乐趣算子开发一直是肖勋鹏很感兴趣的领域之一。出于对更底层的计算机体系结构的兴趣,大二时肖勋鹏从原来的软件学院转到了计算机学院。当得知昇腾AI原生创新算子挑战赛S2赛季的消息,他毫不犹豫报了名。
虽然从未接触过算子开发和Ascend C语言,但是通过昇腾官方的Ascend C算子开发教学视频以及API文档,算法基础优秀的肖勋鹏很快掌握了算子开发基础技能。
“我认为对于新手来说,学习算子开发最困难的在入门阶段。一方面,对于没有深入学习过计算机体系结构等硬件架构知识的同学,对硬件架构的剖析会比较困难。另一方面,官网的API文档比较难读,需要根据硬件架构去理解它的一些变量特性。”
肖勋鹏突破的方法在于积极动手实践。“在开发板上,我照着官网上的代码一步一步去尝试,去理解代码是怎么跑在底层硬件架构上的。在边学边练的过程中,对昇腾的硬件架构和Ascend C编程特点有了进一步的了解。”
S2赛季,昇腾在赋能赛事资源方面进一步升级。在完善指导文档基础上,还通过直播进行赛制解读、工具分享,并发放云资源券(性能赛道),还有专门的赛事赋能专家团队随时解答开发者的问题。
“在参赛者群里,我们可以随时向赋能比赛的老师提问,他们都是来自华为的工程师。通过他们及时专业的解答,帮助我对硬件方面有了更多的了解。”
边学边赛,畅游算子开发的海洋昇腾AI原生创新算子挑战赛(S2赛季)采用“线上预赛+线下决赛”的赛制,预赛共10个算子,比赛时间为7月1日-8月31日,肖勋鹏只用了不到一个月时间就完成了预赛。
“为了参赛,我自费购入了一块OrangePi AIpro开发板,大约1200元。预赛刚开始时,我一道题都没有做出来,当时还有点担心本钱都赚不回来。”
不过,挑战正激发了肖勋鹏迎难而上的钻研劲头。“我本身属于比较喜欢克服困难的一个人,初中高时就喜欢做难题。解决挑战确实能带来给我带来比较多的快乐。”
预赛中,肖勋鹏合理规划时间,采取了稳扎稳打的策略:前半段时间先实现算子的基础解法,后半段时间集中精力做性能优化。
S2赛季采用实时榜单,每一次提交作品后,大赛官网都会实时显示参赛者每个算子的成绩明细:几次提交、通过几个用例、耗时多少等等。根据总体实时榜单,参赛者不但可以直观了解自己的成绩与不足,还能合理地制定比赛策略。
“预赛的10个算子各有各的难点,每个算子的实现方法都不一样。Histogram这个算子,有一天晚上我比较有灵感,一直做到凌晨4点,把它AC了。”(每题有5个验收用例,包括4个功能精度用例,1个性能用例,AC是指每题5个验收用例全部通过)
值得一提的是,S2赛季基础算子开发命题的预赛还设置了丰富的单项奖:每个算子都设置了“最佳性能奖”和“最快通过奖”,AC≥3个题还将获得“潜力无限奖”。每个单项奖都可获得奖金1000元,极大鼓舞了开发者参赛的积极性。
“ThreeNN这个算子,初期我只是实现了基础解法。但是一直没有放弃性能优化的可能,差不多是在最后几天才实现了性能最佳的解法。”
最终,肖勋鹏成功AC 5个算子、以预赛第三名的成绩闯入决赛,并拿到了一个“最佳性能奖”和一个“最快通过奖”。
挑战极限,不放弃最后一分钟的机会9月20日,昇腾AI原生创新算子挑战赛(S2赛季)决赛在华为上海研究院拉开帷幕。与S1赛季不同的是,S2赛季预赛仅为选拔决赛资格,预赛成绩不计入决赛总分。
决赛时间从早9点到晚20点,除了短暂的吃饭时间,开发者们都在争分夺秒展开智力对决。“我们都只吃了午餐,晚餐都没吃。”
“决赛我也制定了一个策略,就是尽可能拿到更多的分数。决赛共5个算子,每个算子同样是4个功能样例,1个性能样例。我先拿到功能样例,再优化性能。”
晚上19:30,距离决赛结束只剩半小时,大部分参赛团队都在复盘检查,提交作品的次数越来越少。此时排名第三的肖勋鹏依然没有放弃,他还在跟一个算子死磕,希望找到性能优化的最佳解法。
“在决赛最后10分钟,我才找到了正确的解法,然后花了5分钟把它实现了。当时比较紧张,心跳非常快,但是我还是尽量保持冷静,在最后关头提交了一次。比赛时间截止后,榜单最后刷新了一次,我跑到第二了。”
肖勋鹏认为,此次参赛不仅提升了自己的编程能力和比赛经验,也进一步认识到了自己的不足。同时,有机会与其他团队切磋交流,也让他收获满满。
“算子开发对我是一个全新的领域。从最开始对它一无所知,到能够完成这件对自己比较困难的事,并且取得一些成果,这种进步还是很开心很有成就感的。”
对于想要从零开始学习算子开发的开发者,肖勋鹏的建议是:思考与实践缺一不可。“首先需要去真正的理解它。另一个关键是一定要多多尝试,我们可能有很多想法,但要真正实现算子的精度和性能,都需要去尝试去验证。”
肖勋鹏认为,这次大赛坚定了他接下来进一步学习算子开发的信心,他也愿意推荐更多同学去接触昇腾AI基础软硬件与算子开发。
“目前学校老师带的一些项目,也有与昇腾合作的。虽然还在校园中,也能感受到昇腾生态蓬勃发展的大势所趋。从个人层面,我认为学习算子开发对未来的职业发展也有一定帮助。”
结语在昇腾AI的舞台上,每一位开发者都是主角。
开发者的每一个故事,每一步成长,都共同编织着昇腾的未来。
接下来,面向全体开发者的昇腾AI原生创新算子挑战赛(S3赛季)即将拉开帷幕。感兴趣的开发者可以关注华为计算公众号和昇腾社区官网,加入这场巅峰对决,与全国顶尖高手一决高下。
我们期待更多像肖勋鹏这样的开发者,能够在充满机遇的算子开发海洋中,扬帆起航,追逐属于自己的AI梦想。
END
本文为「智能进化论」原创作品。