PhD第一学期结束,写点小作文纪念一下过去一年的生活。

「同济」终于毕业了

从同济毕业是我人生的一大重要里程碑和转折点。回忆过去4年发生的一切,我只会觉得自己其实非常幸运。下面就是一些没人想看的流水账了。

大一碎碎念 [click to expand]

一开始我是抱着成为“大国工匠”造福伟大祖国的愿望进入了同济大学学习「机械」专业,并在机缘巧合之下加入了一个德语实验班。在大一遇到了“启蒙导师”(我们用Z来称呼这位同学),教会了我「兴趣是最好的老师」。Z同学简直是内卷大军中彻头彻尾的一个outlier。大一的同学们大都还在绞尽脑汁地演算一道又一道高数老师费尽心机而设计的巧妙数学题时,Z同学已经一头钻到试验室做着一些我当时觉得「很酷」的机器人和嵌入式程序设计的东西。我和Z成为了好朋友,并整天在他手下打下手,探索着嵌入式底层的方方面面(其实就是用arduino这样的电路板来做一些小朋友玩的机器人)。这些东西在现在看来其实很简单,但对我而言确实算是一种「计算机启蒙」了。不出所料,我大一上学期因为「不务正业」,我的绩点低到了「3.98/5.0」(相当低的一种程度)。

大一和Z一起半的趣味机器人比赛

同时,我也结识了NB同学(你们都知道是谁😅),NB同学就是那种整天一副「世界真无聊呐」/「你们这群凡人学一学期还不如我期末突击一晚上」的竞赛生。但同时NB同学是一个淳朴认真的人。机械系实验班的课程安排很轻松,大部分时间都是在摸鱼。NB经常在路上和寝室里和我讲解什么是Modern C++的移动语义和亡值,什么是Rust,什么是函数式编程,什么是Arch Linux,etc. 在这两位大神的带领下,我有幸在一个和「计算机」几乎不挂钩的专业了解到了非常前沿的一些计算机知识。于是在大一学期末某一天的一次「心态爆炸💥」的催使下,我萌生了「离开机械系」的想法,至于去哪,那肯定是「计算机系」了,虽然我也知道同济的「计算机系」并不是那么好,但至少可以让我不用花时间在我不感兴趣的事情上。关于转专业这个事情其实我是毫无把握的,第一我绩点非常低,而计算机专业转专业的同学都是4.9|9循环的卷王(比如NB同学),第二我是当时的班级的班长,(虽然没有这个意思)但某些朋友还是会将此视为「背叛」。在我的盘算下,我使用竞赛以及高考成绩(嗯,我的高考成绩是能上CS的)的方法在开学转了专业,并带上了NB同学一起转专业。NB同学也是想转专业的(他在上完机械制图后崩溃了),但他是一个需要人push才会行动的人,而我就是那个push他行动的人。还记得某一个凌晨,我和NB同学一起坐校车到嘉定校区找教务老师们敲章选课,直到那个时候漂浮不定的情绪才稳定下来。

转专业申请被批下来后,我和NB在嘉定天猫超市前开心吃着brunch
大二碎碎念 [click to expand]

关于大二的事情,我其实不太记得清楚了。我只记得课很多,当时因为要「补大一的课」+「上大二的课」+「提前修大三的课以方便找实习」,我大二每学期的学分超过了45学分。我还记得我参加了各种各样,大大小小,或者你也可以说「乱七八糟」的竞赛来打发时间。通过上课和竞赛也认识了几个好朋友:CS卷王K老师,CV大师W老师,etc.

关于理想,我大二的时候可能只想成为一个和我哥一样的程序员,每天上上班,稍微加点班也行。毕业后,进入so-called大厂,在北上广深成为社会燃料燃烧到35岁,然后灰溜溜地回到长沙养老。作为一个「插班生」,因为根本不认识几个人,我的所有时间都泡在了图书馆里。这一年我读了很多计算机的书。嗯,可以说是很多很多。光C++就读了Modern Effective C++, Effective Modern C++, Optimized C++。当时神书OSTEP(中文版)我也是在第一时间内读完的。我也开始研究编译器(主要是LLVM),研究如何提升程序的性能。我也刷了一堆国外互联网的网课,CMU的CSAPP,Berkley的CS188,S的CS231n等等。我甚至将读后的一些笔记整理到了一个repo里。其中也在本校做了一段时间research,奈何实验室的objective只是想get the damn paper published,我也觉得很没有意思,我接受到的负面情绪也比较多,遂退出。不过还是很感谢当时给我尝试机会的学长。

国外计算机课程教育厉害的地方是,不仅会deliver最前沿的计算机研究结果,还会通过拓展看到这个领域的挑战,或者说,未来的样子。当时在UCB的Joseph开的一门MLSys的课的时候,我觉得这是一个很有意思也很适合我的领域。想着想起来,可能这也是自己为什么会想去读PhD的原因吧。

大三和大四的故事就很简单了 [click to expand]

抱着“或许我也能试试做一些「前沿」研究”的想法。我在「大二下」(2020年10月份)的时候拿到了「大三上」去ByteDance AI Lab做MLSys的机会。当时其实很犹豫,因为虽然我已经在大二提前修了课程,但大三上还是有几门课的,所以当时几乎算是抱着「破釜沉舟」的想法:「课可以不上,实习必须要实习」。2021年的春天,是疫情爆发的一年。我是幸运的,因为疫情的爆发,我预测下学期100%是WFH,所以直接在1月就和我哥一起去北京北漂了。于是实习的生活就顺利地开始了。

与此同时,我也在通过各种途径了解美国PhD的申请,了解到了美国教授的推荐信非常重要,所以在2021年1月的时候,我厚着脸皮给几个我自以为还算了解的实验室投去了简历,最后收到了一个System大佬的offer。刚开始是得准备办理J1签证去美国的,我家并不富裕,而我还得厚着脸皮问我爸妈要钱说暑假去美国要10万,他们出一半,我上班赚的钱凑另外一半。然而我是幸运的,因为疫情,research went remote,我在家和老师们通过zoom沟通就好了。我显然是一个精力充沛的人,在2月到8月之间,我只需要上课和上班。我觉得这点throughput还是不够fit我的bandwidth,所以又厚着脸皮去联系国内名校的相关researcher。我非常幸运地联系到了北大的一个老师,比这个更幸运的是北大的老师又给我介绍给我认识了一个国外老师which is exactly from 我当时想申请的research area。这段时间我就在工作之余(工作日晚上/凌晨以及周末)做着这个新项目。

快进到申请季。我很幸运的拿到了一堆我这个背景本不应该有的offer。最后因为被UIUC的老师打动,以及郭老师「非」要去WUSTL念书求个最短距离,遂接了UIUC的offer。

「青海」还是一如既往地不喜欢旅游

毕业后按照郭老师的强烈要求,作为一个不喜欢旅游的人,我去青海「被旅游」了一周。景色是挺好,但是我可能还是想在家写写代码,玩玩游戏。(想起我在旅游的时候还在和collaborators开会😅)。

甘楽在翡翠湖

「美国」小确幸生活

就像被宣传的美国印象一样,在我来美国前,我对美国的印象可能就是除了科技和教育发达,其他就是a country of drug dealers and gunsters. 还记得上飞机前我还非常谨慎地全副武装,眼罩和口罩都带上了,就差个防护服了。

UIUC坐落在伊利诺伊州的一个小镇,属于美国的大农村。给我第一印象就是非常的「安静」。这是一个地广人稀的地方,无论是上午,中午,下午还是晚上,在我住的地方,我几乎见不到路上有超过3个以上的行人。这个小镇很无聊,没有啥好玩的(在嘉定生活了3年也习惯了),好在吃的还算多。组内团建活动基本上就是吃吃吃,然后去学校的体育馆打室内篮球🏀。可能这和嘉定一样,是一个适合静下心生活和学习的地方吧。

学校旁的bus station,空无一人

聊一聊很多人关心的safety。初期我是很谨慎的,100% mask/sanitizer on,坐个公交车也是一副随时要跑路的样子。时间久了就慢慢的放松下来的,有时我甚至会因为忘了时间11点走1 mile夜路回家(当然我还是觉得这样很危险)。这学期也听说过一起校园周边枪击抢劫事件,让我还是很担心。好在学校有个alert system,出事的时候会第一时间提醒大家躲在室内苟着。即使如此,我觉得还是每个地方的安全系数都还是不一样,香槟我感觉还算安全,但不远处的芝加哥和圣路易斯可能就难说了😅。

说说salary。UIUC RA的税前月薪差不多是2500刀(RMB 16k)的样子,税后就只剩2k刀了。这种工资在美国就是麦当劳服务员的水平。虽然如此,我和2个同年级的PhD室友还是能住在一个「大house」(😅)里。水电网($100) + 房租($600) + 吃饭($500),每个月剩下的零花钱大概也就$800,可以让我每个月买一个「小玩具」。所以在过去4个月,我凑齐了RTX 3070,一台55寸的4k QLED电视,双手柄Xbox X和我的第二台服务器(主要用来当NAS用)。算不上特别富有,但也能过得很开心了。

平时主机打打steam和league。最近也开始连着console玩。

说到娱乐。无非就是晚上或者周末和朋友联机打游戏(一学期league就快60级了😅)以及看动漫和Netflix。比如我过去一周就把Ozark三季都看完了😅。有个室友很会玩(或者只是我这种国内过来的卷虫太不懂生活了😭),经常带着我一起去吃香喝辣。第一次知道牛排店(Texas Roadhouse)的免费面包还能这么好吃。

Ozark剧幕。我的高中就是寄宿制学校。并没那么可怕,一群人半夜聚在一起玩狼人杀被抓包也是常有的事。

「学业」Research, Submission, and Acceptance

学习/上班的地方

卷王PhD学生的生活当然离不开学习啦😅。这学期选了5门课:学术英语,seminar,PhD Orientation,CS477 Formal MethodCS598 ML for Compiler

因为申请的时候托福没咋考,需要额外上一门英语课。其中50%都是和academic integrity相关。当然,这不像国内那种反作弊的签字/思想教育一样浪费时间。这门课主要教的是如何distinguish academic integrity。比如我之前一直以为self plagiarism是没关系的,然而并不可以这样。英语课上还认识了2个韩国人,居然也能寒暄几句韩剧(比如Kingdom),哈哈哈。

CS477就是给本科生/研究生开的non-research的课。老师很担心疫情于是就全线上了,因为我起不来所以这门课我基本没去过。不过老师做的PPT有点糟糕,我课后主要是根据syllabus找资料(比如哈佛的CS252)自学。因为迟交了好几次作业😅(惯犯了),前几次成绩也不咋好。这门课还是挺讲究实践的,我除了学会了数据流分析,model checking,霍尔逻辑,也学会了如何用dafny,z3和spin/promela这样的工具还将其应用。当然这门课给分很水(或者说美国给分都这么水),我这种不来上课,作业迟交的人最后总分居然有97/100,稀里糊涂的拿了个A😅(最高没有A+)。

CS598作为一门research课,我读了很多的ML for Compiler的paper(虽然直觉告诉我他们大部分也没啥用)。期末做了一个idea叫做NeuroProfiler(代码),就是把程序交给神经网络来预测个bottleneck(相当于linux-perf),效果居然也还不错。老师问我想不想把他搞成一篇workshop,我当然想都没想就拒绝了😅(因为我忙于别的项目以及我对workshop不感兴趣)。

工位。发际线尚可。

这学期学业上的另外一个大事记就是我在PhD的第一学期就发了一篇一作。当然实际上,我在开学前3个月(2021年5月)就陆续开始这个项目了,前期主要是一个学弟在探索,后面老板直接让我lead这个项目。在5个月的努力下,我和学弟以及一个做security的研究生大佬把结果做到了比较可观的水平,于是我花了5天写完了初稿,然后陆陆续续改了5天,就那么投出去了。收到的review是3个accept和一个WA,这个结果基本上就意味着rebuttal只要写写感谢信了,不过老板还是希望我们认真对待,于是我们很认真地把rebuttal写完了(写了好几大页)。最后rebuttal当然是没人看的,不过论文还是理所应当地被接收了。虽然结果不错,我们的工作我确实也觉得很有实际意义,但我和我老板的意见也一样,觉得这篇论文不过也就是「superficial」:很新,也有用,但没有那种突破纪元的novelty。所以后面的阶段我在选择项目的角度上,不仅会考虑选择没人「想到」的课题,也会想想有没有什么东西是没人「能做/敢做」的,which is the one I am working on with my collaborators。

除此之外,还是得多认识人。UIUC虽然有很多faculty,但我觉得还是不够,所以我开始主动地去工业界和学术界联系collaboration。collaboration在多方面都是有益的:第一是有collaboration我不会觉得太孤单,第二是和不同的人共事我能学得到很多新的想法和经验(我总是很喜欢那些在学术上对我提出很”mean”建议的人),第三可能就比较功利了,也就是connection! connection! connection! collaboration会给你带来参与更多有意思项目的机会,推荐信,对future career都很有帮助。

「结语」

Doing a PhD is a journey of being brave to contribute to new knowledge, though sometimes you also feel bored and tired, and want to take a break to play Xbox. 新年快乐!