查看原文
其他

管张汇泓:一份邮件把我带到了开源世界|OneFlow U

OneFlow社区 OneFlow 2022-05-22

管张汇泓,一流科技工程师(实习)。是的,“管张”不是复姓,你可能知道这一点,但他少不了要解释自己的名字,不过你依然可以叫他“管张”。不止于此,当他接下来介绍自己的学校滑铁卢大学时,还少不了要解释一下“奇怪的学制”:从大二开始,学习学期和实习学期交替进行,也就是说,每一个在校学习的学期都要同时找实习机会。
“奇怪的学制”给了他很多思考自己未来的机会:看着WaterlooWorks(学校的实习招聘系统)里各种各样的岗位描述,有前端、后端、全栈、游戏开发、网络工程师等等。
在一次次的尝试中,他寻找着自己的兴趣。直到来OneFlow实习,他说这个问题的答案开始明朗起来。上周,他带着自己的“答案”回学校去上计算机科学系的大四课程了。祝他学业有成。
本文为管张汇泓自述。

1

大神朋友带我飞


我对计算机的兴趣是逐渐培养起来的,这个过程很得益于我的大神朋友们。他们对计算机有远超同龄人的理解,又很乐意教我很酷的东西。我在仰望他们时对计算机愈加心驰神往。

我最早使用计算机的目的是打游戏。很小的时候家里有一台台式机,上面可以玩一个英文的打砖块游戏。虽然看不懂,但还是玩得不亦乐乎。后来又玩了像帝国时代、Minecraft、太空工程师等等富有策略和创造元素的游戏。

至今我仍然记得,一个很要好的小伙伴在小学第一次带我踏入Minecraft这个天坑时,感受到的那种有数不清的事情任玩家探索的新鲜感和兴奋感。

更让我震撼的是,在Minecraft里,这位小伙伴用红石电路(MC的逻辑电路)做出了一个密码锁,只有按顺序按下四个按钮才能成功打开一盏红石灯。当时的我对着这个看起来很复杂的电路研究良久而不得其解,对同学的敬仰之情如滔滔江水绵绵不绝,我开始觉得编程和计算机是一件很有意思的事。

初中时,我参加了计算机社团,老师用Pascal讲解编程的一些基础。但老师的时间很少,教的内容很有限,和我们讨论的是一些基础内容。比如有两个整型变量,如何交换它们的值。老师教的少,好处是自己的探索空间很大,当时和同学兴奋地讨论一些算法题,比较什么解法代码行数最少或者最简单。

读高中后,我有幸遇到一位深谙开源软件和电脑硬件的同学兼室友。我向他请教怎么安装Linux,他一边和我介绍各种计算机底层的工作原理,一边手把手地和我一起安装和配置了Arch Linux。但凡是我问的Linux或者是电脑硬件相关的问题,他总能回答并带出一长串的计算机历史。拜身边有这样一位大神所赐,我接触到开源软件的理念,感到开源对社会的影响深远。

身边的大佬们教给了我很多知识,但最重要的是让我对计算机这门学科兴致勃勃。同学之间讨论问题,经常是刨根问底。虽然不是每次都能达成共识,但是往往在得到自己满意的答案前很难把注意力从这个问题上转移开。

说到做过的最有成就感的项目,一定是写出一个自己都沉迷的游戏啦。2019年,我和同学一起写过一个卡牌游戏。其实功能上和炉石传说基本是一样的,可以打随从卡、魔法卡等等,把对面的英雄血量打到0或者0以下就算赢了。当我们是游戏的开发者而不是玩家时,就有可以尝试各种神奇点子的特权。游戏快完成时,我们一边测试一边玩,讨论各种卡片的性价比,想象有什么很酷的技能和combo,玩这款游戏的本质也从测试慢慢变成了竞技。

一个和代码无关的插曲,一天我们在学校的机房写到深夜,回宿舍路过一条健身步道上情不自禁地高歌一曲,被夜跑路过的人夸唱得好听。这样的项目经历实在是once-in-a-lifetime。

不过,尽管我很敬仰开源,但至此都没亲身参与过,可能是缺乏一个契机。直到2021年8月,一封招聘邮件把我带入了开源世界。

2

框架开发初体验


2021年8月,我在找实习时收到了学校的邮件,里面列举了一些在国内招聘实习生的公司,其中OneFlow正在招聘Deep Learning R&D Engineer - Framework Developer

我的上一份实习工作是写网络服务,组里当时正在试验一个C#的网络应用框架ABP Framework。我和同事们一起阅读文档,研究源码用法的过程中,统一认为框架开发是一件相当厉害的事,所以当看到Framework Developer时眼前一亮!正好上了一学期AI相关的课,有一定的理论基础,就头铁地申请了面试。万幸,我被录取了。

加入OneFlow后,迟哥(姚迟)和后江成为了我的导师。在OneFlow的前一个月左右,迟哥带着我做了一些文档和翻译工作,熟悉了在Github上和其他同事合作的流程。除了发现自己的英语写作在高中毕业后一年不如一年外(当然,翻译质量是有把关的),认识到文档工程师很需要细心和责任心。文档往往是用户对程序的第一印象,所以我在阅读技术文档时很注重错别字这类“不影响理解”的错误。这类细节能反应作者和维护者对这个作品的认真程度。

从新手村毕业后,后江带我做了一些性能优化相关的任务。这些任务的原理都不是很复杂,经常是后江和我简单地解释一下,我就开始研究如何写。

这个过程中我踩了一些坑,比如consistent tensor和local tensor都继承了Tensor,对这两种tensor分情况处理时只要调用父类Tensor里的接口就可以了,而我最初的想法是要dynamic cast到子类再用,这样行不通。

碰到一些问题会和后江开线上会议讨论,有时甚至会“直播”写代码。我自己写代码有一些不好的习惯,比如改动了一个地方,但没有把被影响到的地方也改掉,导致需要返工再改。后江指出了这个我没在意的问题,而我现在改代码之后会多留心一下,渐渐在改掉这个习惯。很感谢后江悉心的指导,也很感谢能遇到一群让我敬佩的同事。

刚进框架组时,觉得有太多不懂的东西要去学。有一次问康神(郑泽康),程序猿要怎么成长?他说要去踩坑,事实也是如此。OneFlow是一个很需要自驱力的地方,我对框架的了解也是在踩坑过程中循序渐进的,在这里取得了编程和思考上的很大进步。

来OneFlow之前,我在网上看到了关于徐之秋的OneFlow U文章。看了他对OneFlow氛围的描述,感觉很神奇,也很向往。加入OneFlow后感觉确实如他所说,而且我很难总结出比之秋更好的感受了。当然,感兴趣的话,我特别推荐你去OneFlow亲身感受。

其他人都在看
点击“阅读原文,欢迎下载体验OneFlow新一代开源深度学习框架


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存