自学计算机转行成功,Committer顾凌锐做对了什么?

【开源星风采】栏目介绍

欢迎来到全新栏目【开源星风采】!来这里,聆听社区小伙伴成长背后的故事,见证他们每一次进步的瞬间!

在 OpenMMLab 社区,每一位参与社区建设的小伙伴都是最耀眼的星星,引领着社区朝着更加光明的未来迈进!我们将定期专访做出贡献的社区小伙伴,希望 TA 与 OpenMMLab 的故事可以被更多人看到,也希望有更多的小伙伴参与到社区建设中来。

本期我们很荣幸为大家介绍社区 Committer——顾凌锐(Github ID:Nioolek,社区昵称:Ni),一起和他聊聊社区那点事!

顾凌锐是中山大学人工智能专业非全日制研究生,他的研究方向是医疗图像和目标检测,同时目前在某医疗 AI 企业担任图像算法工程师,但他本科所学的专业实际上与此并不相关,是动物医学。

面朝AI的风口,近年来转行做程序员的职业规划路径在学生群体中并不罕见,顾凌锐正是成功转型的代表之一。非科班出身的他,对这一领域的探索似乎有一种一腔孤勇的执着。大四时从最基础的 python 编程学起,进入公司从最简单的标数据、调模型之类的基础工作做起,顾凌锐称自己更习惯在应用与实践中积累知识。

在 OpenMMLab ,顾凌锐保持着进取心和自律的习惯,在社区中积极参与各项 PR 任务,在与各位“大佬”的互动中不断提升自己的能力,在学业与职业道路上都迈出了一大步。

向着光:野蛮生长的转行路径

顾凌锐自主学习的能力很强,做自己感兴趣的事情总是充满冲劲。对写代码感兴趣,他就放弃了手中的手术刀和显微镜,成为编织数字魔法的程序员。从大四开始自学 python ,毕业时正赶上了 AI 的风口,于是转行成为了一名程序员。

进入职场后,这种实干意识依然鞭策着他。由于起步比计算机专业的同学晚一些,他毕业时进入了一家规模很小的初创公司,给到他的工作任务也并不符合他的预期。“一开始做的基础性工作肯定也不是我期望的,既然我起步晚,那我就应该多多学习。”

工作日的晚上和周末,他都会利用空余时间自学代码。计算机专业本科生在大学就学过的知识技能,他需要花时间自己学习和消化,在此基础上再补充学习 AI 行业的前沿知识。自学的过程中,他会将自己的实践整理上传到知乎平台,如尝试在 PyTorch 中复现 PPYOLOE ,但复现中遇到了非常多的问题,他便把解决问题的心得记录下来,收获了一些点赞。

“如果只是看论文的话,其实就看的一般会比较浅,但是如果说能把这自己的理解写下来,尝试着让别人能够看懂我写的东西,我自己也会对知识点有更深刻的理解。

由于与业界接轨,顾凌锐的研究一直是偏应用型的。公司的需求是即时和多元的,这也导致他的研究方向无法集中在一个领域,经常需要快速调研适应于需求的论文和做法,然后提出适应于实际业务、实际情况的解决方案。

因此他平时会广泛涉猎各个领域的文章,与 OpenMMLab 的结缘正得益于此。2021 年 8 月,OpenMMLab 在知乎上发表的《 YOLOX 在 MMDetection 中复现全流程解析》吸引了他,他觉得参与复现能学习到很多知识,于是主动了解和加入。

追着光:和大佬合作是什么体验?

说起加入社区的初心,顾凌锐坦言是被“眸哥”(深度眸)的个人魅力吸引。

深度眸在知乎平台拥有 1.1 万粉丝,是上海人工智能实验室的 AI 算法工程师,也是 MMDetection 和 MMYOLO 的核心成员,常常在社群里耐心解答大家的疑惑。

他在群里给出的建议都是直接而有效的,跟着大佬其实能有很多收获,能学到很多东西!”提到深度眸时,顾凌锐总是敬意满满。

贡献者社群里的知识分享

他也抓住了与“大佬”合作的机会。他从社区成员 Cydiachen 处了解到 OpenMMLab 计划研发 YOLO 系列算法库,进入了这一团队,要求参与 “ YOLOv5 loss 模块设计与对齐”的 PR 任务。当时还处于 MMYOLO 搭建初期 ,深度眸给他提出的要求对他来说颇具挑战性,既要继承 MMDetection ,又要拥有 MMYOLO 自身的特色,还要降低用户的使用门槛。

了解到需求后,顾凌锐感到无从下手。他和深度眸等团队成员进行了讨论和请教,决定先按照 MMDetection 的那一套去复现,根据速度精度决定后续做法。在处理中,顾凌锐发现,如果完全按照 MMDetection 的框架结构来实现 YOLOv5 的 loss 部分的话的话,loss 计算部分时间是官方版本的 1.5 倍,速度非常慢,所以后续他采用了代码易读、快速高效的方式进行实现。

万事开头难,这一尝试大概耗时 25 小时,精度对不上和改 comments 也让他屡屡受挫,“精度差很大倒比较好解决,那肯定是有比较大的问题,有时精度只差 0.1 或 0.2,这种情况下肯定是一个很细节的地方,这种 bug 是很难找的,有时候甚至找个两三个小时都找不到。”

但完成任务后,他觉得自己对 YOLOv5 的理解完全上了一层台阶。YOLOv5 非常高效,是由于很多的原因,包含:assigner 为静态,assigner 可以按 batch 计算,激活函数简单,非常多 trick 加速。

“我做了之前想做但没有平台能做到的事情!其实我平时很难有机会去参与到比较大的框架的设计,很有幸参与 MMYOLO 从零到一的过程。”有时甚至需要花费十几个小时来写代码,但当他看到最终自己跑出的精度和官方精度是对齐的,那一刻他感受到了最大的喜悦。

正是因为第一个 PR 给自己带来了很多的收获和成就感,后续顾凌锐也参与了一些贡献,从中他结识了更多志同道合的小伙伴。他们的合作不只局限于 MMYOLO,大家会在群里讨论如何优化提升算法精度等问题,甚至还组团去参加比赛,队名叫“god yang with me”

他们最终拿到了第七名的成绩,虽然这一成绩在他看来“并不是很拿得出手”,但顾凌锐认为,他们这些愿意发光发热的技术爱好者能通过 MMSIG 聚在一起,去完成新的挑战,共同奋斗本身才是最大的收获。

成为光:助推后浪,共建繁荣社区

顾凌锐参加 OpenMMLab 贡献者线下沙龙

作为 Committer 代表发言

随着贡献值的增加,顾凌锐于 2023 年 1 月被认证为 Committer。

“比如最近被一个难题困扰,在 MMYOLO 社区群里请教了社区其他大佬,他们会给出建议或共同讨论,这种方式带来了思想碰撞,有很多收获。”

经过很多 PR 的锤炼,他的代码逐渐被肯定,对这一合作模式的认同让他选择留在这里,依然定期贡献,在社区中回复 issue 。顾凌锐对框架很熟悉,能快速实现代码修改 ,把 Efficient Teacher 迁移到 MMYOLO 里也仅仅花费3 天。作为社群里的“老人”,他也开始帮新人 review PR 任务。

顾凌锐鼓励新手要自己动手去写代码和修改,从中发现问题,自己去找解决方案,再通过请教别人来获得新知。他一如既往地重视自我探索的过程,强调在自己认真思考的基础上要多问有价值的问题,和“大佬”一起探讨,共同成长。

他结合自己的经历表示,“开源社区不容易,是需要投入很大精力来做维护的。”比起自己写代码,指导别人,review再动手改都要花更多碎片化的时间。社区所做的事情,不仅是要把各种问题完善地解决,提升性能,更是与社区小伙伴共同成长,也鼓励大家用自己所学回馈更多新人。

“随着能力的提升,我也开始独立负责项目。”如今顾凌锐在一家医疗 AI 公司做配套性的算法工作,他希望未来可以深耕医疗算法领域,多多沉淀技术。像很多踏实努力的社区成员一样,顾凌锐在追光的路途里也成了照亮别人的光。

顾凌锐的转行经历让我们看到,技术学习需要在实操中得到锻炼,在和“大佬”讨论中发现自己的不足。