赞
踩
徐之秋,一流科技工程师(实习),研发组的00后双子星之一。他在上海长大,初高中毕业于上海外国语大学附属外国语学校,今年9月,他将在加州大学伯克利分校读大三,专业是计算机科学和应用数学专业,专注于人工智能和机器学习方向。
他爱好厨艺、摄影,闲暇时光刷刷B站 (据说经常给OneFlow的视频和专栏一键三连) 和知乎,实在闲着无事可做会打游戏,特点是话多,他在美国疫情最严重的时候一个人呆了16个月,于是话变得更多。
作为他第一次深度参与的开源项目,OneFlow的这段实习经历给他在工程能力上带来了很大提升,对开源社区也有了深入理解。今天正好是他在OneFlow实习的两个月纪念日,这次假期结束之后,他还将继续在太平洋对岸远程实习。
本文为徐之秋自述。
一个很有意思的巧合是,前两期的OneFlow U栏目的主角张建浩和梁德澎正好是我的两位mentor,我也算师承二位,这一期争取续写两位师父的辉煌。
1
在OneFlow工作的五点感受
曾经和学长学姐有过交流,伯克利计算机系的同学通常会选择在创业公司和国内外大厂各实习一年,去感受不一样的工作流程和环境。
我对自己的知识和学习能力比较自信,所以找实习时,更看重是不是能学到学校课程中没有的内容,以及帮助自己熟悉与提升工程实践能力。鉴于我在学校的课程大多是AI相关,所以想从事相关的实习工作来学以致用。
因为有幸认识一些投资界人士,他们对于人工智能基础设施的国产化趋势十分看好,我也因此认识了这家全世界唯一做框架的创业公司。同时,我在大二就学习了计算机系统设计和深度学习,通过与大老师(张建浩)面试时的沟通,我意识到,OneFlow的工作内容和我所学课程的高度契合,恰好能为我提供自上而下打通深度学习全流程的机会。也因此,我就来OneFlow实习了。
在实习的第一周,我的工作任务是用OneFlow写一遍RNN和LSTM,借此也熟悉了OneFlow的接口,然后完成了几个user op和kernel的开发,了解了python和c++的描述层和计算层,这之后,把大部分精力放在了模型库的调研和补足上。在北京线下实习的这最后一个月,我开始学习和了解自动并行,也正在完成一个比较复杂的模型编写工作。
这是一份不断给予我成就感,不断使我得到提升的实习,总结下自己在OneFlow工作的五点感受:
感受1:技术门槛对实习生的挑战性。框架开发的工程环境配置对于我这个实习生是十分陌生而又新鲜的,入职第一天配置工程环境便出现了各式各样的小插曲,不服输的精神让我在公司待到10点,配完了才离开。记得那天每隔半个小时我就会去骚扰一次大老师,最终是袁老师(一流科技CEO袁进辉)亲自来帮我配置剩下的环境。得益于一些同事的言传身教,每一次往代码底层深入一步我都会经历一遍同样的学习过程,后续的学习得以变得更有章法。
感受2:在战斗中学习。在入职第二天的晨会,我就听到了一个铿锵有力的声音强调着“在战斗中学习”的合理性和重要性(后来发现应该就是新奇哥)。当时刚配完环境的我,在瑟瑟发抖的同时也深以为然:经历了一整天的环境配置后,确实了解了不少报错来源,以及编译OneFlow整个流程的一些易错点,而这些试错经历也让我在后来帮到了不少其他的新同事。
感受3:平等与技术至上。曾有幸被普及过一些公司的企业文化,也确实切身地体会到了。在公司时不时能听到比较激烈的争辩,而一个更优于“当前最优想法”的结果正是在这个过程中打磨出来的。
从我自己的所见所闻出发,比如在德澎review我的代码后提出修改意见时,我会主动去捍卫自己的代码思路和想法,而不会因为职位和经验的差距迎合听从。最终,无论以谁的想法收场,我都可以重新审视一遍自己的思路,以及以他人的思考视角,从而给自己带来提升。也有幸与新奇花了数个小时讨论过神经网络可解释性的方向,讨论的过程是平等且尊重真理的。
感受4:轻快的工作气氛。斗胆截过一张Slack工作群的图。
这张图里可以感受到OneFlow同事深厚的数学功底和表情包的贫乏。入职一天前,大老师还语重心长地教导过我:来公司啊,一定要和同事们打成一片,不要害羞,有问题去“骚扰”别人就可以了。来OneFlow之后,也确实遇见了很多会热心帮忙解决问题的同学。
感受5:全息。全息的意思是部分即整体。每一位OneFlow同事都是“全息”的,并不是很多大厂所说的螺丝钉角色。因此,工作时的交流成本变得比较低,效率就比较高,问题可以更快地被定位和解决,这是我跟同事们接触下来的感受,尤其是我的二位mentor,基本从头到脚什么事情都可以问他们。
作为一名实习生,要感谢大老师和梁德澎带着我探索。二位mentor从不强加任何任务,给我分配任务之前也大多会咨询我的意见和喜好,因此我有机会在开始实习的一个月内完成了一次非常有条理的自上而下的打通,之后也一直在向着自己感兴趣的地方广泛涉猎和提升。
接触OneFlow前,我自己能熟练使用PyTorch,能看懂TensorFlow代码。现在,OneFlow在保持着高效性的优势下,正在做着集众家之所长的努力,尤其在易用性方面,我实习的这段时间直观地感受到了巨大地提升。
2
技术进阶:从小学接触编程
我的编程技能是从小学开始的。说来比较有意思,那会儿接触了一款风靡全中国小学生的游戏《赛尔号》,第一次感受到了在虚拟世界中的探索感,以及当代计算机的强大,从此对掌握计算机技术产生了兴趣。
第一个小项目在初二学习C++一个月后诞生,我写了一个用命令行玩的2048小游戏,其中的一些合并逻辑有不少可以琢磨的地方。借着这个小游戏也让我在知乎上第一次得到了不少赞同。 (https://www.zhihu.com/question/51314788/answer/149418076,语言和代码一样稚嫩,慎点)
那时,我学C++主要是为了参加NOIP(全国中学生信息学竞赛),在上海拿了4年省一,由于还要忙一些出国的英语标准化考试所以就没有更深入。不过,我在参加算法竞赛期间打下了比较扎实的算法和调试基础,对之后的项目有很大帮助。
对Java和Python的学习就更有目的性,比如Java就是项目驱动的,Python就是高中时候入门一些机器学习算法时学的,大概在接触这第二和第三门编程语言之后理解了“编程语言只是一个和计算机交流的工具”的道理。在Java和Python的加持下,我试着用强化学习 + 动态规划 和 A*算法开发了几个游戏的博弈对手:石头剪刀布AI,拍手游戏“能量”AI,以及2048 AI。看着自己亲手写的算法能够击败自己是一件很有成就感的事。
此后的技能树扩张源自一个类似今日头条的社团信息聚合类小程序,那是我作为发起人和几位同学做的一个学校的社团项目。为了做这个小程序,我自学了html/css/js,微信在小程序前端自己的封装wxml/wxss,服务器端的node.js,还有数据库的SQL,把这些从后端到前端打通后,能从更全面的角度去审视整个流程,这对于每个部分的开发都有好处。
高中结束时,我掌握的编程语言近十种,并且涵盖了不同的方向,这使我可以不被束缚地去学习和开发不同的项目。
对AI的热衷与深度学习在2016年走向应用很有关系。因为是算法竞赛出身,所以直接体会到了传统算法和机器学习/深度学习算法的差距,尤其是在通用性和对算力的利用性上。神经网络就像一个强大的黑盒,能够将现有算力开发到极致,并且可以以高通用性去解决一切相关问题,而传统算法基本不会因为算力的突破而产生突破。
伯克利的入门计算机课程cs61a的第一个项目名叫Hog,是一个双人对战类的掷骰子游戏,教授举办了游戏AI大战,正中我这个爱玩游戏、爱赢的人的下怀。凭借对强化学习了解的一些皮毛,我在那次AI比赛中榜上有名。
伯克利的本科阶段有三门与AI相关的课程,分别是强化学习/机器学习/深度学习,在大二时,我跳了一些中间的课程提前把这三门课上完了,因此对这一块有比较多的了解。在国内上大学,可能很难在大二就接触这些内容,这种对于自身喜好的自由度也是我选择留学的重要原因之一。
一路走来,因为对技术本身的热爱以及对游戏的兴趣,我也在不断关注着各种复杂的游戏AI向着通用人工智能方向所做出的努力(点名星际争霸的AlphaStar和王者荣耀绝悟)。
目前我对前沿深度学习研究的应用层面更感兴趣,德澎也给我分配了不少类似的调研和开发任务。在学术界和工业界之间,我仍在探索与它们各自的匹配度,未来的发展更倾向于随机应变。
最后,我要感谢公司的各位同事,来OneFlow确实很扎实地学到了很多东西。感谢建浩、德澎、袁老师、一鹏、路强、迎港、新奇、晓雨、姚迟(按照认识的先后顺序)给我的指导,感谢靳懿、晟航帮我处理了各种工程环境上的困难,也感谢每天中午的饭友们和每周五组织饭局的昌华,希望所有人工作顺利,OneFlow蒸蒸日上。
最后的最后,如果你看完了这篇文章,并且恰巧对OneFlow团队产生了兴趣,那么,各类工程师实习岗位(包括全职:))依然虚位以待,非常期待在OneFlow跟你交流技术。招聘详情请点击“阅读原文”,合适的话,砸个简历,我在“OneFlow同事群”等着欢迎你。
注:封面图源自Paula Schmidt, Pexels
其他人都在看
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。