2021 专访 (VI) · zjq2333
2022 年 4 月 3 号,是清明节假期第一天,同时也是全校抗原检测、图书馆提前闭馆、春禾苑暂停堂食的一天。在这样一个特殊的日子里,我来到了一位不愿透露姓名的同学寝室中。
Q: 简单自我介绍一下吧。
A: 大家好,我是一名转专业的学生。入学时并没有进入计算机专业,首先是从工科试验班转入大飞机实验班,在大一下学期时本来想转到电信,但没转成,结果来到了计算机。这几年里没有参加过很多的比赛和科研项目,没有非常 “哇塞” 的竞赛或科研经历,大四才真正接触到科研。接下来一段时间,会到上海交通大学攻读计算机体系结构方向的博士学位。
Q: 其实第一个问题主要围绕自我介绍中的一点——你的大方向是 “体系结构”,但我想问下具体的方向是什么。
A: 现在还没有特别确定小方向。目前主要做一些有关 GPU 的工作,包括单 GPU 的微架构设计、多 GPU 间的互联、AI 编译以及分布式机器学习。与 GPU 相关的软硬件多少可能会涉及到一些。
Q: 实际上一年前 QQ 聊天的时候就听说过这个 “微架构”,但当时也不知道这个 “微架构” 究竟是什么。刚刚说在大二、大三没有什么科研经历,那一年前为什么选择了这个方向?现在 AI 可以说是占据了保研界的大半壁江山,你又是怎么了解到这样一个领域呢?
A: 首先,选择处理器微架构主要是觉得国内这个方向人还是比较缺的。其次,这个方向的可解释性是比较强的,能够清楚自己到底在优化什么东西。现在的深度学习,在我当时看来可解释性欠缺了一些;而且,当时觉得做深度学习的人太多了,卷也卷不过。很多做深度学习的本科就有了相关的科研竞赛经历,那不如选一个没有人抢的领域。但是最近感觉这个东西其实不太好做,主要是 CPU、GPU 这种通用计算的微架构设计改动效果近几年也不太多了,主要是互联、封装、堆结构;而 AI 处理器和非冯诺依曼结构的处理器在学术界虽然是热点,但是目前工业界使用的还是比较少,基本上还是 GPU。让我再选一遍,我肯定是要选 AI 的。
Q: 第二个问题是,你为什么选择了平转而非降转呢?你如何看待平转的课程压力?
A: 对我来说,我觉得没有太大必要降转。课程压力是有的,但是感觉好像也不太大,就是大二上学期大作业堆在一起的时候可能比较麻烦。我是只差了计科导和高程,当时看了下,感觉大二上学期的学分也不是很多,我印象中也就 20 多。
Q: 我也不太清楚……不过你先前可能是学过线代概率论的?我当初正常来说是有 6 门课。
A: 没学过。那学期也就 35.5 学分吧,其实也还行。主要是高程,自己学过一些东西,而且大二可能不会有特别多的事情,还是处理得过来。
Q: 好的。那么作为一个平转的同学,你觉得计算机专业的学习和先前专业有没有什么不同?我问这个问题是因为我觉得大飞机和计算机的区别还是比较大的。
A: 其实我觉得区别不大。要说有区别的话,大飞机那边更理论一些,对于数理基础的要求更强。但计算机这边除了算法与自动机,理论上的东西更少一些,更多是动手,具体体现在写代码上,正如前两天那位北航教授说的—— “高级蓝翔” 一般。不过反正也都是上课、做作业,貌似也没什么很大的区别;考试也都差不多,就是学那些东西,然后考前突击两天把它们都答出来。对我来说,就是当时编程不太熟悉,大二上学期过去以后感觉编程水平貌似也慢慢好了一点。
Q: 第三个问题是,咱们大二下学期遇到了疫情,一个学期都在家里。那么你刚刚转过来不久就在家里待了一学期。之前看你说那段时间你没怎么学,直接开摆。我就想问下那段时间到底是怎么度过的?
A: 哇那个学期,我天天晚上出去和同学打牌。尤其是算法分析与设计,每次都是打开 IPad 就睡着,睡醒就吃午饭,回头一看课早就结束了。所以某些课就做了做作业,好像也没怎么学,这点我还是比较后悔的。那个学期的课基本上都没怎么有印象,也没学其他的东西,有点浪费了。当然,由于自动机和计组是老师讲的,我还好好听了下。呃,应该好好把数学学一下的,数学还是太重要了,当时没感觉到。
Q: 你说比较后悔的一件事是那段时间荒废过去了,应该好好学一下数学。但为什么会感觉到数学重要呢?上这些课的话,我并没有感觉到数学特别强的存在感。
A: 那如果连数学都不学的话,这专业还叫什么科学呢?科学一定要以数学为基础。不然和 “高级蓝翔” 有什么区别哈哈哈。
Q: 我感觉我现在就是 “蓝翔高级技工”。
A: 是,现在就不会,只会写那个程序,调那个系统。运算也不过加减乘除,做做位运算。没有什么应用,所以数学都快忘掉了。
Q: 所以这个 “数学很重要”,究竟是对计算机学习很重要,还是对自己 “工科生” 的这么一个身份很重要呢?
A: 主要是一个思维。不学数学就会变笨。对数学生疏,会让自己的思维能力下降。当然,对于计算机来说,也有很多理论性强的研究,尤其是机器学习理论那方面,数学还是很重要的。
Q: 刚刚说到写系统运用的数学比较有限,那么我想知道你现在的工作应用到了你脑中定义的 “数学” 吗?
A: 我这个工作,初中及以上的数学都是用不到的。
Q: 哈哈哈哈,好的。下一组问题有关 2020 年 Intel 大学生电子设计大赛嵌入式邀请赛。我为什么知道这件事呢,就是我在计科这边有一个关系非常好的同学,然后他当时是你这个比赛的队友。我想问下你是怎么了解到这个赛事的,又是因为什么决定参加的呢?
A: 打算参加这个比赛有两方面原因,一是之前没参加过这类动手的比赛,二是那段时间我没有其他事情。其实一开始我甚至不知道这个比赛是干什么的,报之前都不知道这个比赛好不好获奖。快到最后了,我看到获奖名额比例,才发现拿奖比较容易。所以我还是比较推荐大家去参加这个比赛的。那年我 8 月 15 号就提前返校了,只不过返校后在比赛上花的时间也不多,光补小学期作业了。然后开学以后在张冬冬老师给的一个实验室里面我们几个人做了做。
Q: 对的对的,我记得当时我那位同学跟我说,做完了就能有二等奖。
A: 也不算吧,做完了能有三等奖。不过二等奖的比例也还是很高,我们当时是二等奖的最后几名。为什么才拿到这个名次呢,是因为当时官方给了两种可选设备——一类是机器人,另一种则是 FPGA。别人的东西都能动,有很好的 “故事”。最后我们用一块布糊在我们的机器上,看起来就很丑。
Q: 你们做的是什么?
A: 我们做的是人脸识别报警装置,把一个嵌入式的设备联合到 Web 端和 FPGA 端。在 FPGA 端设计一个报警器,嵌入式端是人脸识别的模型,Web 端是一个简单的控制系统。当时对于人工智能算法这一块是完全不懂,好在有个队友比较熟悉。我主要是负责 FPGA 板相关的东西以及最后多个装置之间的联合。
Q: 还卷了 UI?
A: 对,不过 Web 端是初赛之后加的。比赛分成初赛和决赛,只要初赛过了绝大部分是二等奖。
Q: 刚刚提到机器人和 FPGA,那我们学校会不会都是选 FPGA 的?
A: 并不是。只有我们是 FPGA,其他两个组选的都是机器人平台。可能选那个比较容易获奖,大家还是比较喜欢能动的东西。当时我们选了比较小的一个 FPGA,结果发现资源都不太够,只能做小一点的东西。我个人比较推荐有时间想要挑战一下的队伍可以尝试着弄弄机器人。机器人看着就很 “哇塞”,而看到 FPGA 大家就会想:“这是什么玩意儿?”
Q: 下一个问题是,聊聊在当前这个方向的学习路线。
A: 尽量不要跟着学校来走吧。如果想要学这个方向的话,国内的课程资源大多不是很好。基本上要按着国外的来吧。比较建议直接去看苏黎世联邦理工的 Onur Mutlu 教授讲的网课,从 Digital Design and Computer Architecture 到 Computer Architecture。这门课的课程资料会对所有人开放,实验也有详细的指导。如果现在从零开始的话,看这门课应该是比较合适的,有助于建构整个知识体系,会有与我们上过的计算机组成原理和计算机系统结构完全不一样的感觉。这门课从逻辑门开始,讲到了 CPU + Memory 的体系架构,也会涉及一些新的东西,比如脉动阵列和 GPU。看书的话,建议看《计算机组成设计:软件硬件接口》和《计算机体系结构:量化研究方法》。(这两本书 9 楼都是有的)
Q: 那回到一个比较现实的问题上来,说说咱们专业。咱们专业实际上硬件课不少,从大二的数字逻辑、组成原理,再到大三的体系结构以及这学期 19 级学弟学妹们在上的系统实验。整个硬件课程组对于体系结构领域的研究,存不存在一个打基础的作用呢?
A: 这个肯定是有的,只是第六学期的计算机系统实验可能没有。这个实验有些浪费时间,不过前面几学期的数字逻辑和 CPU 都还算比较正常且难度不大的。而且现在大家可以在网上找到很多外设驱动的源代码,CPU 自己写一个应该也不难。系统实验就是大家都在糊弄,感觉这个课要求和指导都太乱了,可能还得 “拭目以待”。不知道过几年能不能好一点,至少要求要明确一点,靠谱一点。我觉得就是……就是多看 Github。
Q: 下面的问题是:直博 / 学硕 / 专硕在体系结构领域的区别。因为之前你跟我说过,体系结构方向如果不读博,产出可能不太够,是不是因为这个?
A: 是的。如果考虑先读硕士再到国外读博的话,时间就太长了。国内硕士要读三年,同时这个方向的硕士也比较少。可能也就计算所有这方向的硕士招的多一些,但是那边的产出可能更难一些,因为他们更偏向于开源处理器工程项目—— “香山”、“一生一芯” 这样的。诚然参与这样的项目有助于工程能力的提高,但问题是不太好产出论文,也就不太有利于出国继续深造。我觉得直博主要就是快速拿到博士学位,然后我英语不太好,也有疫情方面的担忧,家庭条件也不太允许,就选择国内直博了,就业的话建议学硕 / 专硕,或者是希望能够拿国外博士学位。但是现在由于各种原因不能直接国外直博的也建议学硕专硕。如果让我再选一遍,我肯定是要选一个 AI 的硕士。
Q: 想问下准备这方向直博大概花了多少时间?
A: 如果只是联系老师的话,并没有花多少时间。因为国内没几个组,两个手数得出来,挨个发邮件也没有几个回的,因为国内很多组基本只收清北本科生。国内做这个的还是太少太少了,大概从头到尾可能一个月吧,还是比较短的。如果包括学习的话,我是从寒假开始看论文的,这个过程也大概花了一个月,大致了解了下这个领域的科研是怎么做的。之前我也看过一些这方面的书,但我觉得看书就不算了。
Q: 那么你觉得这个领域需要看多少论文才有一个大致了解呢?
A: 对于 AI 处理器而言,看个 1 篇就知道别人怎么发论文了。国内基本都是 AI 处理器相关的研究,传统 CPU / GPU 都很少设计,或许因为国内的实验室缺乏底蕴以及大公司的合作。
Q: 接下来的问题我每个人都问,算是常驻问题了。首先是:如果给你一次大学重来的机会,你会在哪些地方做出不一样的抉择?
A: 首先我觉得转专业的决定还是不后悔的,个人还是比较喜欢这个领域的。然后后悔的是感觉浪费的时间太多了,很多东西知道得太晚,而且感觉上完四年本科明显变笨了。并且我并没有系统地学习。因为大三的这些专业课——操作系统、编译原理、计算机网络、数据库并没有很好地串联起来。这些课一门就是一门,没能有一个完整的知识体系。学完了也不清楚内部的具体实现——数据库就是 Web 开发课。学的这些课,都是学完就忘,没怎么理解,净是考试突击了如果重来一次的话,我希望能学得更成体系一点,能够有计算机系统思维吧。除了 CSAPP,UTAustin 的 Prof. Yale Patt 有一本书叫《Introduction to Computing Systems—from bits and gates to c and beyond》,据说也是非常能够培养计算机系统思维的,可能比较适合我 “重来本科” 的时候读一读。
Q: 那么接下来评价一下自己四年的本科经历呢?
A: 上面谈论的是我一个比较后悔的点。整体来看,虽然不是非常理想,但还行。
Q: 第三个问题希望你站在一个大四学生的角度,分别为大一、大二、大三的同学说一句话。首先说说大三吧,19 级的同学们现在正经历着大三下学期。
A: 大三到现在也没什么可改变的了,只能说最后到选择的时候,要慎重考虑。一般来说,没什么事情尽量还是不要选择我这个方向吧,比较不推荐。选个 AI 什么的多好,又好发论文,学的人也多。
Q: 学的人多就太卷了。报夏令营的时候拉列表一看,一半都是 AI 老师,不会 AI 基本就宣告死亡了。
A: 是这样的,当时参加自动化所夏令营的时候,那里的老师就疯狂问我机器学习。我说我不会,就会些最基础的,老师们就比较嫌弃。
Q: 那么对于大二呢?有一说一,大二也差不多了,现在已经是大二的四月了。
A: 大二也到四月份了。大三一年还有一些机会,可以尝试做一些真正的科研,但不包括给老师做横向项目——标数据、写 Web 之类的。在我们学校做 AI 和分布式系统的老师肯定有。希望大家本科的时候就能有一些科研方面的经历,能够在读文献的过程中找出一些 idea、为自己的 idea 设计一些实验,以及学会把自己的 idea 和实验包装成一个故事。但是这条路我直到现在都没能走完,只走了前 1.5 步。大二的时候还有时间,希望能自己去体验 “科研究竟是什么”。
Q: 但花了这么多时间在科研上,最后就没什么时间做其他事了吧?
A: 也算是试错嘛。不喜欢科研,后面也可以不做。有很多博士毕业之后,也不会继续做科研。
Q: 好的,那接下来是对大一。但对大一还是很尴尬,因为什么又都太早了。
A: 大一把数学学好就不错了,防止自己变笨就是非常重要的一个任务。经历了四年本科,感觉自己变得更笨了。大一的时候学习数学,多少能挽回一点颓势。
Q: 我也觉得自己大一的时候挺灵巧的,但到了大四已经彻底不行了,而且特别容易累。
A: 对对对,天天睡醒就发现已经十点半了,十点半也不想起。早就不如从前了。也有可能是摆烂摆太多了,我大二下学期和大三下学期两个学期都在摆。我定去向定得比较早,再加上大三下的课并不很多,就容易摆烂。所以还是不要开摆,要好好学习,摆习惯了就回不到过去了。
Q: 最后一个问题我是想了解一下,平常你一般在哪里学习?但嘉定校区可供学习的区域是比较匮乏的,不知道你有没有探索过一些适合学习的地方。
A: 一般在图书馆。从今天开始就没有了。除了图书馆就是 C 楼,但和图书馆的大桌子比起来还是差不少。