“算法票友”搭档“技术博主”,他们说算子开发就像玩游戏打怪
身为电子工程师的大姚,自称是一位“算法票友”,不是计算机科班出身,因为个人兴趣才偶然加入到了开发者的阵营。
刚本科毕业的陈可为,是一位名符其实的技术博主,在 CSDN 和博客园发表了 500 多篇 AI 原创文章,拥有超过 33 万粉丝。
在常规的叙事里,年龄相差 20 岁的大姚和陈可为,就像是生活在两个平行世界的人,几乎没有机会认识。
但在 AI 力场的作用下,大姚和陈可为成了有相同技术理念的“忘年交”,并一起组队参加了昇腾 AI 原生创新算子挑战赛。
01 多年网友,相识于 CANN 训练营
故事还要从 2022 年的一次“误打误撞”开始说起。
当时大姚正在做一个智能硬件项目,在选择技术方案时被昇腾硬件的图像处理功能吸引,但网上并没有特别详细的资料。在查找资料的过程中,大姚加入了 CANN 训练营的微信群,想要在里面问一些技术问题。
按照大姚的说法:“那时候群里的讨论很热闹,自己知道有 AI 这个概念,但完全没什么经验,兴趣也不是很大,就是抱着顺便看一看的心态去学习。时间长了,发现每个讲师都在很认真地准备课程内容,内心里的触动很大,然后开始稍微上点心去完成作业,开始在社区里发一些学习笔记。”
在大姚为项目的图像处理功能忙碌时,还在读大二的陈可为和同学做了一个医疗影像相关的项目,本着悬壶济世的理想,尝试让 AI 可以读懂医疗影像,进而帮助到更多的人。随着项目的深入,陈可为对人工智能有了更深刻的理解,并和同学一起加入了 CANN 训练营,希望能进一步提升开发能力。
根据陈可为的回忆:一开始就注意到群里有了叫大姚的“大牛”,很热心的回答群友们的问题,有时候群里聊天不太方便,就主动加了大姚的微信,想着自己遇到技术问题时可以向他请教。
转折发生在 2023 年第一季 CANN 训练营期间,大姚和陈可为都发生了身份上的转变——开始担任 CANN 训练营的讲师。
陈可为的课程内容是帮助新手快速入门 CANN,大姚则分享了 Ascend C 算子开发经验。正如两人在昇腾 AI 原生创新算子挑战赛(S1 赛季)晋级宣言中提到的:“我给你讲过题,你给我上过课”。
后来的一次线下活动上,陈可为在讨论时提到了大姚的名字,觉得双方特别聊得来,才发现已经做了很长一段时间的“网友”。时值 2024 昇腾 AI 原生创新算子挑战赛(S1 赛季)的预热期,陈可为提出了一起参加比赛的想法。
早在 2023 年昇腾 AI 开发者创享日上,大姚就听了闫长江老师关于 Ascend C 的演讲,被闫老师眼中的“光”和深入浅出的演讲风格打动,花了比较多的时间去学习,后来作为 CANN 训练营的讲师,课程内容也和 Ascend C 算子开发相关。听到陈可为的提议后,大姚也萌生了上手试一试的想法。
有趣的是,明明是两个人的团队,大姚和陈可为却取了“三人行”的队名,源自“三人行,必有我师焉”的学习理念,同时也寓意着在团队合作中每个人都能发挥自己的长处和优点,互相学习,共同进步。
02 且学且练,半个月连续“急行军”
风轻云淡的背后,往往有着别人看不见的汗水。
对于 S1 赛季的结果,大姚和陈可为都比较坦然,毕竟一开始的目的就是为了学习。可谈及比赛的过程,大姚和陈可为都分享了不少比赛经验,那场耗时半个月的比赛,仿佛就是昨天的事。
之所以用“急行军”来形容,是因为大姚的日常工作比较忙,只有下班后才有时间讨论和答题;陈可为刚好在本科毕业的答辩期,同样抽不出太多时间。相较于那些 All in 的参赛团队,他们并没有时间上的优势。
参考 2024 昇腾 AI 原生创新算子挑战赛(S1 赛季)的规则,参赛队伍需要在规定时间内,基于 Orange Pi AIpro、Atlas 200I DK A2 开发板和指定 CANN 版本,使用 Ascend C 完成 12 个赛题的开发任务。每题包含 4 个功能精度用例和 1 个性能用例,每个用例 2 分,参赛者按照提交的成果总得分排序,其中前 10 名有机会晋级决赛。
为了在有限的时间里实现结果最优,大姚和陈可为进行了明确的分工:陈可为负责对算子进行分析,大姚负责将分析后的算子用 Ascend C 实现。
这样的分工并非没有道理。根据赛题的限制,要求参赛者既需要熟练使用 Ascend C,涉及到代码、API 和相关资料,同时赛题中的算子可能来自 Pytouch 或 TensorFlow,想要在昇思 MindSpore 上使用 Ascend C 开发,就需要熟悉框架和实现思路。刚好是大姚和陈可为各自擅长的部分。
在预选赛作品提交截止前,大姚和陈可为已经做了 8 个赛题,最终以总分第 5 的成绩晋级到决赛。
从晋级名单公布到线下决赛,中间有 8 天的准备时间,摆在大姚和陈可为面前的选择有两个:一种策略是尽可能做更多的赛题,然后通过一个个用例得分;另一种策略是把每道题的得分打满,即使不能把 12 道题做完。
大姚和陈可为选择了后者,正式进入到线下决赛时,“三人行”团队提交了 10 道赛题,最终的得分是 100 分。经过紧锣密鼓的线下决赛,“三人行”团队以第三名的成绩斩获银奖,拿到了属于他们的 2 万元奖金。
比结果更有意义的,可能是大姚和陈可为跨越 20 年的友谊。
大姚不止一次夸赞“陈可为是个优秀的年轻人”,“和他们在一起,自己的心态也越来越年轻了”。陈可为印象深刻的是线下比赛结束后的情景,大姚带着他在北京狠狠兜了一圈风,看到了和武汉不一样的夜景。
03 重整旗鼓,再次开启“游戏进程”
随着新赛季的开启,“三人行”团队再次踏上了征程。
和上个赛季有所不同的是,昇腾 AI 原生创新算子挑战赛(S2 赛季)在规则上进行了适当调整:
1、进一步细分为基础算子开发命题和算子性能挑战命题,前者使用 Ascend C 编程语言开发大模型常用算子,后者则希望参赛团队深入昇腾 AI 处理器架构,基于昇腾 AI 云服务挑战算子极致性能。
2、新增赛事实时榜单,参赛团队可以在赛事官网上实时查看团队得分和排名。
3、进一步增加了奖金的金额和数量,其中基础算子开发命题的奖金为 53 万元,算子性能挑战命题的奖金达到了 64 万元,除了根据决赛排名分配奖金,还在预选赛阶段新增了最佳性能奖、最快通过奖、潜力无限奖等等。
作为上一季的银奖得主,“三人行”团队已经报名了 S2 赛季的基础算子开发命题,并且不吝言辞分享了他们的经验和“战法”。
首先要巧妙利用比赛规则。
S2 赛季的报名时间截止到 8 月 16 日,预选赛作品提交截止到 8 月 31 日。在大姚看来:“S2 赛季预留了更充足的时间,不仅要用心参加比赛,还要学会利用规则,比如基础算子开发命题的前 20 名队伍可以晋级决赛,可以根据实时榜单查看团队的排名,先确保自己有机会进入到决赛嘛。”
其次是合理的组队与协作。
经过上个赛季的磨练后,大姚和陈可为的能力有着明显提升,他们决定在新赛季中先各自解决几个赛题,再合力挑战剩下几个难度稍大的赛题。这也是大姚参加过 S1 决赛后的经验和体会:“决赛的时间比较紧张,在组队时最好找能力差不多的队友互相补位,避免出现只有一个主力的情况。”
S2 赛季尚未过半,已经有近 300 个团队参赛,竞争的激烈程度远超 S1 赛季。对于新赛季的预期,大姚和陈可为都十分乐观:“对于我们来说,其实就像是游戏打怪一样,比结果更重要的是过程,希望可以通过比赛更好地提升个人能力。当然,我们也在积极准备预选赛,努力先进入决赛。”
对于比赛时的“游戏心态”,不是因为大姚和陈可为过于“佛系”,而是有着不一样的视角。
2023 年 5 月 6 日,华为正式发布了昇腾 Ascend C 编程语言。彼时已经是 CANN 训练营讲师的大姚和陈可为,第一时间知晓了这个消息,见证了种子的发芽,但从未想过可以结出什么样的果子。
让大姚感触颇深的是:“参加 S1 赛季的很多队伍,都没有 Ascend C 相关的开发经验,但大家利用社区里现有的一些资源,很快就能上手参加比赛。S2 赛季看起来很卷,这是因为越来越多的开发者已经参与进来,生态正在从小到大,算子开发的效率越来越高,本身就是一件特别了不起的事。”
04 写在最后
在大姚和陈可为身上,我们看到了开发者可爱的一面。
因为兴趣和爱好,他们打破沟通的隔阂,收获了跨越年龄的友谊;因为不服输的性格,他们不断挑战自己,想方设法去解决一个个难题;因为责任和担当,新技术的种子,被他们赋予了生长土壤。
或许在他们眼中,所做的只是平凡且普通的小事。正是因为有千千万万像他们这样的开发者,涓涓细流汇聚成浩瀚江河,让新技术以一种润物细无声的方式应用到千行万业。
评论