一个大四

本来想再过几天写的……官方催稿,最为致命

June 11, 2020 -
回忆录
-

官方催稿梗解释:https://mp.weixin.qq.com/s/sTZ_xhPjr7HVgR_tA1YxPw

由于我之前大一到大三把课都上完了,因此大四除了毕设之外没有任何课程,多出了一堆自由支配摸鱼的时间。

从暑研后半部分开始。主要按照微信的聊天记录来,还有一些按照手机照片和知乎回答。有些和申请回忆录重复的此处就不列了。

Sep. - Oct. 19

九月的时候正好Miskcoo上热榜,当时看到的时候还是排名第20几个问题,正好吃完晚饭没啥事干(不想跑实验),于是就回答了一发

对应的时间是国内早上8点,然后就以可怕的速度上涨,一分钟涨几十条提示这种。睡一觉发现涨了8000赞,tkpl


十月评特奖。9月马导确实怂恿了一波而且我开始也打算报,但是后面想了想自己状态不行,而且估计了下第一轮就会被刷掉,报了和没报一样,于是撤了。

就退而求其次,报系里的奖学金,但是看了看连综奖的资格都没。anyways

再后面记得是报了报钟士模,本来感觉自己希望挺大的,没想到又是第一轮被刷。

Nov. 19

这个月一大半是在家里过的。

大部分时间在睡觉,剩余时间在写申请材料。

Sample image

图:11月北京的雾霾

相比之下家里空气挺好

Sample image

图:11月的晚霞

Dec. 19

第二次回学校。交完申请材料已经是12.15了,开始看看实验室有没什么杂活干。

苏老师之前在我刚回来的时候说,如果想要机子的话可以帮我配。后面阎老师又提起这件事,行,不要白不要,那就配了台i9-9900K+2080Ti。也算是有个自己的台式机。

本来想大四下用来跑毕设实验,不过事实是它就没开过几次机,而且毕设的实验……算了我后面再说

然后把实验室服务器四台CPU的给重装了ubuntu 18.04,原来太年久失修了。没想到还搞坏了mfs,还好有付主席救场,不然好几篇icml当场报废(x

之后把所有GPU节点都升了18.04,顺便给实验室服务器写了个实时状态统计的网页,再也不用ansible nvidia-smi或者ansible gpustat来抢卡了

Sample image


又去软工当了一回测试员,抱着蛤主席大腿把一个组给虚拟机逃逸了。

剩下的时间在毕设开题,后面一起说

Jan. 20

十号左右在外网上看到武汉的事情,于是提醒我爸别乱聚餐。然后反手20号我高中聚餐……现在想想有点怕

此外有个UCLA的面试,糊了个PPT,讲的时候感觉也没讲好,问问题也不会,感觉就是其他人说的那种“只会调包不懂原理”的菜鸡学生石锤了

此外开了个焦虑群,为了避免像王力铖这样的装逼怪在六字班出国大群里面乱发消息。里面经常有各种红包和绿包,不过我发的几乎都是绿包而且只有抢别人红包的份

Sample image

Sample image


一月大部分时间在家里返工搞暑研的事情,看能不能抢救一下弄一篇icml。因为transformer+符号推理当时还没试过效果,而且那阵子出来了个用transformer求解微分方程的paper,感觉有点点点点希望,于是就去继续做了做(其实是小黑哥3个月没进展,林大哥看不下去了

于是找了找toy task:一个print任务,输入x和字符串s,输出重复x遍的字符串s;一个sort+unique,限定数值范围;一个四则运算,不过不太能ood表示,后面没搞;一个Brainfuck解释器,输入data、inst、input,输出output。

事实上,大部分任务上原版的transformer能够胜任,效果比我们魔改过的好,不过一来ood的数据就挂;我们的Rule-transformer除了中间结果可解释,能ood之外,缺点有训练不稳定、推理速度慢、性能没提多少。

感觉现在的AI技术栈并不能实现Yoshua想实现的东西。而且掂量了下,都说paper是讲故事,我们这也没啥故事可以讲,实验如果就这样放出来保证被reviewer怼。弃坑了弃坑了。

至此我对科研与发paper已经没啥好感了。

Feb. 20

有些人都横扫了(指akf和dzx都去zlr开live了)而我却连一个offer都没

Sample image

Sample image


顺便做了个一键填报THOS的网页,不过反正也没什么人用。

业余时间刷刷leetcode玩玩,看打卡群里面别人刷的题全部做一遍二次打卡,不然自己乱无目的的做水题没啥动力。知乎回答

还顺便搞了下雨课堂,他们当时用户信息泄露了,我拉下来xxxxxxxx条数据之后和他们说了一下,叫他们修了修。

毕设:天授

其实一开始并不是这样的。

在暑研回来的时候,我找苏老师商量下毕设的事情。他给了几个选题,比如自动驾驶、鲁棒性RL、剩下不记得了。但是我在暑研之前就有强烈的愿望想在毕设的时候开发平台,一个是我自己只写过无数遍DQN,搞了这么久RL不懂其他算法的具体实现;二是看付主席去年毕设搞攻防平台,只需要写代码搞开发复现结果就行,感觉很适合我;三是不想再搞result-oriented research了

商量了下取了折中,搞个RL鲁棒性评测的benchmark。虽然我当时确实不懂RL robustness,而且看组里其他人搞了两个学期的RL robustness也没商量好评测的metric,感觉坑有点大。不过……我拒绝research,只想开发

和阎老师讨论了下RLlib的事情,发现他们第一个commit在2016年,而原版天授的第一个commit在2018年,感觉差距有点大。

开题

看了几篇Adversarial RL的paper,感觉完全是把对抗训练给形式化成双人零和博弈游戏,搞成multi-agent那种就行。感觉不太对,照这个道理的话,我把multi-agent的idea改改不就又能在Adversarial RL水几篇了……

Metric总结一下有三个

  • 攻击之后的智能体所能拿到的最多奖励
  • 攻击前与攻击后,智能体所能拿到的奖励的差值
  • 攻击者实施攻击需要花费的代价

感觉还行,先这样

开题PPT

开题之后就去搞Rule-transformer烂尾的事情,在上面讲了

中期之前

把Rule-transformer鸽掉之后就只剩毕设这档子事了。二月中的时候打算是在RLlib上面搭,因为他们家算法比较全。

然后

我看了一个月的文档+example……试图搞清楚里面是怎么运作的,但是只搞清楚了怎么调包连调包都搞不清楚,大量未定义的变量写在yaml里面,没有详细的API文档,而且代码又多,对于我这种要改平台的任务来说十分痛苦。

当时正好学习了下何强的手撸RL代码,感觉十分简洁。


转折是MCDS的offer在02/28到了,我思考了两天,想让毕设作为一个当前research和接下来的ms的衔接(MCDS有点偏系统),于是又和苏老师商量了下,改去重写天授。

原版天授槽点太多了,我这一篇都写不下,比如底层慢的要死,我重构了还是慢;比如API太不灵活了,我自己都不想用,手写的都比原版天授好;比如支持算法太少;比如设计不合理;比如只有TF1.x;比如……

那就推倒重写。

读了好几遍RLlib的paper确认我没遗漏细节,然后想了想画了画和它不一样的结构图,类似最小抽象结构那种。然后就放心写了,因为这个结构广义上来说,大佬们已经保证没啥问题了,出了锅有算法实现不了就不是我的事情了。

于是就花了十几天写完了,虽然中途还是出现了比如ddpg怎么train都train不上去的这种锅,后面迫不得已拿代码一行行对标,然后修了修bug才work

先写的DQN,写完之后发现,咦,为啥只要20秒就train完cartpole了,感觉不太对(正常需要几分钟)。于是找何强check了下,发现没啥问题,20秒是真的。那感觉精简的框架带来的收益不仅是代码层面上的,还有性能上的。

接下来学习了下GitHub Actions的用法,重学了下软件工程和单元测试。感觉之前软工白学了,怪不得3.0……

之前都在个人的private repo下面测,到后面才挪到实验室GitHub上面,覆盖掉原来的天授(原来的代码为了保留记录,挪到priv分支上面了)

然后找了找几个平台来跑toy scenarios,发现天授还挺有优势的。即使是toy scenario也跑了两天。。。我对OpenAI baselines无语了

在之后就中期答辩了,中期前一周写了个知乎,又被刘导翻牌子,于是star就开始涨了。

中期PPT

Sample image

图:gitmemory的记录,不知道为啥他老是会多统计400个star,应该是bug

PR

我得重点说一下这件事情

我确实想试试pr,之前攒了一些资源(比如知乎)没用过。但是也是抱着去尝试的心态去体验的,并不是为了PR而PR。于是先在知乎上面发了个帖,感觉效果还不错。

看量子位之前联系了黄学长搞了个pr骗到很多star,我就去问黄学长量子位的联系方式。要到了之后……他们天天咕,明天就写 明天就写.jpg

没想到被机器之心头条先发了。(我并没联系他们,他们经常未经作者同意就发,比如后来蹭了个zCore的热点结果被蛤主席怼回去了,老老实实删推送)

那量子位不太行233333,我都送到他们家门口了他们不要,那就不是我的问题了(

量子位在第二天勉强发了个,效果也不是挺好,anyways我就没去管了

机器之心的评测感觉还有点水平的,跑我之前没跑过的不是toy的scenario,虽然还是work了。后来也联系到了写这个推送的小编肖清,交流了一波感觉挺厉害(比如教育了我一下Gaussian Policy的sigma通常都是nn.Parameter而不是conditioned on observation

再后面就是新智元了。不得不说,林大哥说得对:“新智元就是三流媒体” (他这么说的:“他们要捧谁就直接造个子集,里面有些很牛逼的大佬,还有他们要吹的那个人”)

媒体丧失了独立性的话,比如新智元这个,宣传口径被实验室统一了,就感觉怪怪的,还乱带货(比如我个人的一些事情)。但……不管了,低头就是了orz,饭还是要恰的

再后面的pr我就没去跟了,反正做东西才是正事,pr是1,东西是后面的0


再后面就四月中了,主要添加了rnn支持和多模态场景,以及其他一些bug fix,还花了一周多把文档写完了

主要是没什么人(zmh咕咕咕),而且干别的事情(写tuixue.online/visa)去了……

答辩之前

四月没干啥,五月写论文。

感觉和中期之前差不了多少工作量,想想还有啥能去讲故事的,于是就比了比平台的功能。

于是功能测试实验是我做过的最简单的实验了:看代码画表格,几乎不用跑代码。

性能测试的话,本来想跑mujoco和atari,但是……zmh这家伙一直鸽,nips结束之前(6.5)都没空。算了算了。(再鸽下去我都想把他二作除名了


写论文的时候感觉就是完全反着写:我先(从DeepL上)弄最后的翻译文献,然后是abstract和conclusion,然后写intro,然后做实验、写实验,然后写算法概述(顺便第五次日常重学RL),然后写core method。

感觉反着写还挺好的,至少不会出现“写出来之后重新看,感觉有明显的思维断层”这种现象。因为每个chapter我都是独立写作,和其他chapter几乎没有联系。因此可以从任意一个chapter开始阅读而不感到突兀。

此外叫了好几个人帮忙check thesis。还有查重根本不用care,自己写的直接交就行,我就直接交的,什么代码、表格、致谢、声明都没去掉,0.1%重复率。

Sample image

最后就把中期ppt改改变成了答辩ppt,反正都是吹牛逼大赛,能把老师唬住就行(x

thesis

final ppt


还有件事情是朱老师说可以去投一个jmlr,四月份说的,现在已经六月了,鸽了这么久不太好意思……

不过即使投了又有啥意义呢?除了涨citation。涨citation也对我没啥意义,我又不找教职,又不申请phd;写jmlr还不如花点心思完善文档,GitHub star还能多涨点。

Update: 后知后觉发现是CCF A期刊,真香,6月下赶紧rush了一发投出去,反正也就四页


总结一下:我的毕设是如何越变越水的

开题《深度强化学习的对抗攻防算法研究

中期《深度强化学习的对抗攻防算法与平台研究

结题《基于 PyTorch 的深度强化学习平台设计与实现

标题确实越变越长,范围可是越来越小了lol

不过后面用的人还挺多,还蛮有成就感的(比如star一个月超过了rlpyt,让astook毕不了业的第一阶段任务达成),不像之前那样做一些无意义的灌水动作,即使调出来了,又有人会看吗?

tuixue.online/visa

三月初的时候美帝感觉形势不对,准备关签证。大概在3.7的时候看到有个中介发了个图,上面写着几月几日哪个领事馆最早能预约签证时间。

我觉得很有用。

Version 1:3.7-4.8

于是说干就干,当晚搭了个网页在http://tuixue.online/visa。用selenium花了半小时造出了个爬虫,由于需要验证码,每次得手动输入。结果会被保存到一个json里面,于是我每次只要把json传到服务器上面就行。

更新频率是每天两更,一次是我早饭饭后,还有一次是傍晚吃饭前。

就这样大概过了十几天,没啥特别的变化。往一些申请群里面发了这个链接,点击量也就那样。

Version 2:4.8-4.15

转折是老卢往一亩三分地里面发帖子骗米,说这有个签证日更网站大家都来看看顺便给他自己加米。由于网址比较特殊、favicon比较独特、日期记录了十几天比较多、而且还有下面“本网站一共见证了xxx人次的失学”,要 素 过 多,于是给大家留下了深刻的印象。

那天开始访问量一天一两千。


后面被我后台查日志看网页refer的时候发现了。骗米这种事情居然不叫上我……太可恶了

于是就发了两个帖子【12】也开始骗米。这个时候是四月五号。

想想既然人多了些,可以把验证码这回事给众包出去。刷新频率由用户决定,如果喂给了它验证码的话就会立即刷新。这是第二版。

过了几天发现我在登陆之后没手动logout,于是被ban。加上了手动logout之后可以大幅提升刷新频率。

并且顺手加了评论区,disqus一行script就搞定了

之后日活1万起。

Version 3:4.15-4.30

有人说要搞个推送通知。我觉得得先把验证码搞定了再说。

这个时候是四月中,手上大概累计有1700张验证码。想着手写个cnn看看能不能work,写了发在这里。结果一train发现train acc=100%,test acc=0%,感觉是样本太少了完全不能泛化。试了试别的验证码repo也不行。

然后找到了fateadm,不得不说质量还挺好的。充了¥100进去。还特意花了一个早上去GitHub上面搜刮别人不小心放出来的fateadm secret来白嫖(

还学习了下echart.js的用法,感觉确实挺nb的,画出来之后发现了48分放位置的规律。黄大大之前和我讲早上8点或者中午12点会放位置,骗人的,都是因为比较接近48分,所以有位置能捡漏,反而推导出一个错误的结论。

写完自动验证码之后就开始写邮件推送。上面12月摸鱼的时候写实验室服务器状态统计的代码又排上用场了,直接抄过来,发现:

阿里云太sb了

为啥连smtp都给封了,而且要交钱才能解封……这饭恰的,吃相有点难看

于是只好http到实验室服务器上面,用实验室服务器发邮件……

为了讽刺一下申请,我把tuixue的订阅邮件做成了committee发邮件的风格,确认邮件第一封是我UCLA的拒信改来的,第二封是我CMU的录取信改来的。

最后加了下我的打赏二维码,第一天入账三位数,直接回本了(

此外在中途还压力测试了一下,发现直接php效率太低了,每秒只能弄二十几个链接,这哪扛得住。。。解决办法是:1. 用python定时刷网页;2. 把apache2换成nginx。做完之后能到快一千的压测,而且资源占用变少了,感觉还行。毕竟服务器比较破,这个数字已经很好了。

Version 4:4.30-today

上一个版本跑了十几天,中途添加了HK的位置和B/H/L/O签。有个北航老哥ljg在tg上面找过来交流了下,他说想用request重写下爬虫。

然后29号他写完了,30号安排上去感觉一分钟更新一次的曲线图也太太太太太太太好看了!

【本段内容都是ljg做的】再后面没啥大幅度更新了,就是fateadm用多了之后把(一万张带标注的)验证码收集起来自己train了个model,虽然正确率只有50%-80%之间但是可以用了;还有加了TG和QQ通知渠道、加了台北的更新。中途还因为QQ群满了充了一波钱,把200人群升级成500人群。2000/3000人群太贵了,一个号只能搞一个而且还得是年费会员,要好几百,不干。

本来打算放Google的Adsense看看能不能赚钱。好不容易过审了,一周之后发现,我原本以为他们家的广告很有品位的,没想到啊没想到,全是那种劣质广告。而且一周下来才12刀,只有有效点击才会给钱,而有效点击多半是误触。没啥搞头,还不如我把打赏二维码放到更醒目的位置,这样收益更多。于是就撤了。

中途还有些有趣的事情,比如五月六月的签证预约被撤销、789月沈阳周三被撤销,ljg的预约也在里面被撤了,于是他很生气,写了个自动抢位置的bot,抢到了北京的7.2。orz

至今累计打赏好像快2000了,没具体算过。然后访问量的话累计已经200w+了。

其实还有个Version 5,ljg把前后端完全分离了,搞了个Django的API来分布式地部署,还能容错。不过这是后话了

来个小结

可以说天授和退学这两个项目是我大四下的主体。有些感触:

找对需求

找对需求才能持续。造出来的故事可能好听,但一定流传不远。

天授是因为不少人想要把rl算法运用到自己的场景中,比如分子结构预测之类的定制化场景,而现有框架并不能很好地支持;并且那些人可能是rl小白,并不是所有人都像社区里面的那些人那样那么懂rl流程,因此一份简洁的框架代码+完善的文档显得尤为重要。

tuixue是刚需,约不到签证没法上学。

讲几个我认为的反例:

闭社:很多人就是只想自己发票圈解决社交需求,不需要额外一个匿名平台来发泄,因此它会凉。

CollegeGuide:选课的话找本系学长一问就行,为啥还特意去上面看……一般都是一届一届传下来的。而且,选课这个没法搞个成熟的商业模式,就算是打广告的话由于受众群体本来就少,不能弥补盈亏(tuixue一周十几二十万访问量也只能拿到12刀广告费);而且如果不宣传的话就没人用,要宣传就要烧钱,这个是个恶性循环。

我觉得把他俩结合起来倒是挺好的,比如做一个校内平台,类似留学中介学术导师的性质,又有点像fiverr,可以众包选择付费咨询服务(比如学业咨询、职业生涯规划、申请规划、建立和学长学姐的connection),也可以在公共论坛上搜集信息,这样用户能有付费意愿,也能帮助用户提升自我,做好规划。不限于出国,保研相关事宜咨询也可以在里面做。

提升用户体验

用户体验好了,用户粘度才会提升。

天授的用户体验靠文档和示例,我承认这个确实还不是很完善,是很要命的一个缺点。不过……相比别的平台比如rlpyt的话,好太多了。于是在issue里面才有那么多好评(x

tuixue的用户体验就多了,比如画统计图表,比如定制化邮件通知(设定日期threshold和想订阅的地点),比如做手机端网页的UI适配(花了半天调html和css),比如优化爬虫,加快刷新频率,比如放置评论区。

其实搞UI设计这件事情也挺有讲究的,比如在手机端要做到在一个显示屏幕内同时展示折线图和表格头部,以及其他部分文字提示尽量精简,不然是没有人愿意读一大段文字的。

我其实在4月的时候还一直有个错误的想法,在从上面的version2到version3过渡的时候。我认为如果我把邮件通知做了,我的网站日活就会少,因为大家都不想刷了,等邮件就行。但事实上从统计数据反应,这个想法是错的,日活不降反升。原因在下面。

宣传与推广

都不宣传是不行的,不然就没人用了。但做出的东西质量好的话,会有用户真心实意愿意帮你推广,而不用自己主动去各种后续宣传。

天授因为代码简洁和速度快,被不少社区内的大佬看中。一个例子是在四月的时候,李飞飞组里一个搞robotics的phd老哥Jim Fan在RLlib的slack里面公然宣传天授,(我并不认识他),原话是这样的:

One strength of tianshou is that it's more modular and 
composable. As other users pointed out, it's quite hard to 
dig into Ray RLlib's code and use any non-standard 
components not directly configurable in the YAML.

As a minimal use case study, let's consider trying out 
different optimizers for PPO-torch. There is currently no 
way to configure optimizer type directly in PPO's config 
(although IMPALA supports opt_type). I have to dig into 
rllib/ppo/ppo_torch_policy.py , search for "optimizer", and
find that it's hard-coded to Adam. Then I need to figure 
out how to subclass TorchPolicy and override that function. 
In tianshou, it's a much more obvious flow - 
https://github.com/thu-ml/tianshou/blob/master/examples/pong_ppo.py#L68-L72

The pros of Ray are obvious - easy scaling, integration 
with tune, ... no need to preach to the choir. But the 
design choice of a "(relatively) rigid base system + big 
config yaml" makes it hard to investigate novel algorithms. 
In contrast, tianshou adopts a more "Unix-style" philosophy: 
each component does one job well, and composes with each 
other naturally (e.g. their Collector and Buffer API). They 
do offer a trainer API, but it's optional and contains a 
small amount of very readable code.Of course, I'm saying all 
this out of my love for Ray. For now, I think the 
scalability and easy deployment of Ray still outweigh other 
concerns, but I hope I don't have to sacrifice 
flexibility/readability.

然后被Eric Liang(RLlib一作)看到了,他发邮件来问我有没有兴趣去Ion的公司Anyscale实习。ssfd

tuixue这个就更有的讲了,因为效果好,不少人在4月靠它约到了签证,于是这个网址的足迹遍历各大国内外高校(学长学姐/同学找到我说,“哦原来是你做的”)、各种微信留学/滞留群(别人和我说的)、各种留学中介(甚至zlr后面通知我让我用tuixue查签证,我说,这就是我做的呀2333)。久而久之,不用tuixue的人约不到签证,于是大家全得用(大雾(貌似加剧了内卷…

在用户体验提升之后(指邮件推送),日活不降反升,因为想蹲的人还是会去蹲,把不想蹲的人解放掉反而能够赚一波免费的宣传。之后就两三万日活了。

影响力导向

说实话,如果当一个码农的话,最大的成就莫过于自己写的代码被更多的人、更多的系统使用。这也是开源社区生生不息的原因之一。

在中期答辩结束之后,苏老师找了我一次,“有没有想过持续维护平台的成本,一般来说这些平台都是大公司维护的。我本意是搞个robustness benchmark,如果有人往这方面做的话必须得拿我们这个为参考。”

我是不同意的,有这么几个理由:

  • 即使是robustness benchmark,受众只有搞RL robustness的;而且这个方向感觉……没啥特殊的搞头,就是A+B式的灌水,我也不适合做这些开拓性的工作
  • 平台一定要大公司维护?那不见得。商业化平台确实是大公司维护,但是这种开源项目的话其实挺多是个人在维护,举个例子比如 这个
  • 这个是从实验室长远发展的角度来看的:既然之前口口声声在组里说要做有影响力的工作,为啥不直接就把平台搞下去。基础设施建设是最容易获得影响力的项目了,之前的珠算就是一个很好的例子。而且掌握了一个平台相当于拥有了一定的话语权,之后在整个community里面也可以有一定身份(虽然我因为申请PhD没申到被除名了qwq)

于是苏老师就被我说服了,我终于可以从robustness大坑里面逃出来(x


有一句话叫做“淘金不如卖铲子”

这也是为什么我经历了这两件事情之后,更加坚定了不走学术道路的原因之一。我更愿意去做一些能够让更多人受益的事情。

如果现在叫我去写paper,我觉得我真的没啥动力,还不如去维护 THU-Beamer-Theme,这玩意至少很多人用:)

其他

也算是难得有在生产环境激情hot fix的体验,比如在线debug,当时从apache2切换到nginx出了点小故障,网页down了一会儿还好没什么人投诉;还有各种临时修bug,还得运维。确实挺锻炼的。还有俩中介问我要不要重新申请,他们可以提供免费服务。我说不了不了

还有就是不断有人给天授提issue,我所有的issue都回复了,而且是以跪舔的姿态回复的,用户说啥都对,哪怕他问再sb的问题都必须得好好解答,不然累积不到用户,不利于长远发展。

不少人找到我的CV,发邮件过来,下面会说。

找实习

TL; DR: 知乎千赞

在刚接MCDS之后由于美帝的情况急转直下,准备做两手准备,找个暑期实习之类的,进可读书前刷简历,退可defer一年观望。

同时这段时间我正好在开发天授,想着有pr之后能够好找的实习。

投了三家,腾讯的pre留学、华为、阿里的广告部

腾讯pre留学是他们天天在微信群里面转,见多了就蛮去试试,于是就投了;

华为是一个hr通过thu-cst-cracker的页面找到我,貌似他把里面有id的人都用微信加了一遍,比如zex就被他加了……但是后面有人告诉我这种泛泛的hr不太合适,得找专门的hr对接希望才大;不过反正后面也杳无音信,没去管了

阿里是天授的推送出来之后,游凯超把之前联系他的一个阿里广告部员工给推给我,于是我就让他帮着内推了下。一周之后发现这个人和杜超是同事,杜超就是之前坐我实验室左手边工位的学长。ssfd

剩下不投,因为之前在sensetime实习过了,想换个环境,看看大厂都是怎么来的。

天授的pr出来之后,确实有不少人联系过来,比如(按类型-时间顺序)正常公司有快手、腾讯TEG AI、图森、字节、蚂蚁金服、百度MEG-4S、阿里达摩院;量化公司宽德、思勰、幻方;以及MMLab、还有ANU的一个Prof问要不要申请PhD(大雾


投完过几天发现MCDS要暑假上网课,年年都是,想着暑假要上网课+维护天授,再来个实习就吃不消摸不了鱼了,于是……就当做是免费的面试练习吧,大不了如果对面发了offer可以拒


腾讯先来,上午一个自称搞无人车的leader来电面,下午他一个手下来打电话面试。上午那位比较聊得来些,我讲完我的profile之后他就直接跳过任何问问题环节了,于是开启聊天模式,比如我问“宁为啥选了无人车?” “无人车比较和我CMU研究生方向比较match,我搞SLAM那种玩意。……CMU每年都会向校友发捐钱信呢”

下午在我说完profile之后说不问了不问了,可是还是问了些问题,记得和online learning比较相关一些,偏向正常的ML。但众所周知,训RL不能用原来那套ML来对付,于是我对ML的理解和别人对ML的理解有distribution shift。不会咋办呢,现场圆场,“我之前接触这方面确实不多,但是在RL里面我是这么解决的,blabla”

我本来是因为之后读MCDS,或许不搞AI(不过Nyberg上课一口一句AI),想尝试下其他的方向,所以投递的时候说任何方向都可以。当时HR过来说自动驾驶有个组要,我其实不是很喜欢,但是那个时候我已经打算不想去实习了,就anyways

于是之后3面是hr面,我直接和hr说“我不想去,能换个组吗?”因为找二面问了下如果去的话要干啥,他说做点云数据。真无聊,不想做。

再往后进度条就变灰了。


阿里在腾讯之后,比较有趣。复述一下面试流程。

首先是要做一个10分钟中文GRE+10分钟比按计算器手速+10分钟智商测试,还有三十分钟三选一,类似心理测试?反正没啥用

之后4.8下午场的算法题测试,两题,第一题有公式解但是由于爆int拖了20分钟;第二题sort一下然后按顺序for过去就做完了,我当时脑抽把它弄成dp来做,结果被卡常数了。活该

然后一面是在腾讯二面之后。我又是按照常规的顺序背诵profile,不过对面也是搞RL的,于是就有点东西了:问一些之前的项目细节,比如RMDP和Yoshua暑研,交流了下感觉还行,我确实挺喜欢RMDP这个idea的,他也挺喜欢。

两天之后二面,还是按照常规顺序背诵profile,然后问project,问天授的设计抽象图,问Yoshua intern工作,之后问了个“你觉得RL和supervise learning有啥区别,比如reward也算一种label”,我当时就说RL有超过监督学习的能力,upper bound不一样,然后被他掐了说“我也问过你的学长学姐,他们答得比你的思考更深入些”

后面总结了下我对这个问题的答案,在这里

最后到时间了,他总结了下说我的自我介绍太长,抓不住重点,比如直接介绍天授、介绍VizDoom比赛、介绍暑研就行了,没必要从头到尾按照时间顺序一个个来。然后就是扯起阿里星的事情,我感觉他把我下意识地当做入职面试了……说“朱老师实验室组里的那些人入职阿里都是阿里星,你这一个本科生……不过本科生也有阿里星的先例,反正接下来的面试好好面”

结束之后还特意查了查阿里星是啥概念,看到要面至少五轮……妈呀不带这样的

十天之后三面。中途想了想如何讲profile有更好的效果。抄一遍:

我叫n+e,来自清华大学计算机系,今年大四。系排名大概前10%这样,有一些
A+的课,不过这不重要。

我其实从高中开始就有一个想法,想获得更多的影响力,然后利用自己所学的知识
来更好的帮助他人。在大学的时候,我一直在践行着这句话,比如就拿我一些拿的
出手的科研经历来说吧,我在大二暑假,在朱军老师的实验室,作为团队主力拿了
VizDoom2018国际强化学习比赛冠军;我的毕业设计是一个强化学习的算法平台
搭建,名字叫天授,还被机器之心等媒体以头条的方式进行报道,在开源不到一个
月的时间里,GitHub涨了1400多star,得到社区的认可,也算是回馈了社区吧;
我还曾在大三暑假去加拿大和图灵奖Yoshua Bengio进行暑研,至于剩下的两篇
A类一作,不值一提不值一提……

但是我其实平时挺爱搞事情的,也想以另类的方式来获取影响力从而帮助他人。
比如我在大三下学期创立了一个GitHub仓库叫thu-cst-cracker,里面收集了
各种我用过的学习资料。我想改变目前大学学习以信息战为主的方式,让大家公平
竞争,于是无偿分享给需要使用的人,目前已经有一万三千star,当时也被报道
了一波,也确实帮助到了不少学弟学妹们;

(这段当时面试的时候没说)“我还在学校答疑坊呆过一段时间,每周花一个晚上
负责给其他人答疑解惑学业课程上的问题;我还是学校信息化中心学生组织一员,
给校园网找过很多bug并上报信息中心,让他们及时修复;

还有就是这段时间不是美国疫情严重,暂停了签证,留学生能不能上学是个很大的
问题,主要原因就是签证能否及时签下来。我意识到这个是一个很大的需求,于是
做了个专门查签证的网站,目前累计点击量已经超过50万了,几乎大部分去美帝的
留学生都知道现在有这么一个网站,我也凭借着我的所学技能帮助了更多的人。

大概就是这样,谢谢!

“我觉得这个profile确实在我见过的清北里面都算少的了” // 第一阶段成功

我记得他原话是说“闪闪发光的人”,忘了整句怎么说了…

“那我们也不按照常规的面试流程来了”

“你想要什么?” // 我想要影响力啊,我上面不都讲了(x

然后就扯了一堆,由于没法确定能不能上学,于是打算实习,而且阿里这个平台能够给我更多的锻炼机会,实现的产品功能能够被运用在许多的场景中,毕竟阿里的用户基数大。

然后就被他怼了,“那我觉得如果是这样的话,我不建议你在这个时间去实习,一是浪费你自己时间,二是浪费公司时间,阿里也没有针对实习生的专门培养计划;我也不建议你去头条/腾讯或者其他公司实习,还是建议你多想想自己想要什么这个问题。”

行,看起来阿里不收我这种还打算读书的实习生。

“那接下来的时间你可以问我一些你想要了解的问题。”

行,你是要拒我,那我就来互相伤害。接下来就扯了些有的没的。以下知乎原文:


“您对于‘你想要什么’这个问题是怎么考虑的…?”

他的回答确实是表明他沉下心来专心搞一件事情,提升技术能力,追随自己内心的声音。我非常佩服

(省略中间几个无关紧要的小问题,最后)“那我是不是就没有四面了?”

他:“嗯,你意见如何?”

“我觉得可以。谢谢!”

于是阿里desk reject,三家看起来是全聚德,只好头铁去上学了lol


之后其他人加我我就直接说我不想工作,暑假要上课,要等MCDS毕业了才考虑。

终于可以除拒USC MS之外的(伪)offer了 lol

Mar. - June. 20

三月份有个小插曲:NHS给GitHub在去年3月前达到16个followers的开发者发钱,把NHS换成BTC再换成CHN的话,价格波动有点大,开始5000多,跌到两三千之后在3月5号的时候涨到了10000。

开始的时候蛤主席在TUNA秘密花园里面通知,我没理会,因为感觉有点少。于是TUNA群里面一堆人在两三千的低点卖了。

等过了几天有人突然发现涨到一万了,感觉还不错,就委托蛤主席帮忙全卖了。换成BTC之后当时等值RMB是10500

我当时想着,反正都要去美帝读书,不如把这笔钱直接换成美元得了。于是又让蛤主席换

蛤主席在localbitcoins上面找了个毛子:

Sample image

一开始都还好,还嫌弃了下paypal的3.9%天价手续费

一周之后

???

Sample image

好像这人被ban了,连带我的一千多刀被冻结了,哭了

后面和paypal客服argue没argue成功,于是到手的一万块就这样被PayPal吞了。。。早知道换成rmb


天授出来之后,系里打算采访一波。花了一上午(正好是腾讯面试的那天)在微信里面写了一堆过去。

但是

但是咕到现在还没放出来

lgd:”威哥说要搞个酒井人物合集,就先不发了”


之后还有一件有趣的事情。有人在CMU家长群里面装家长,我觉得挺有意思的,就去玩了玩:

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

Sample image

里面有一半是内鬼2333,搞到后面一大波上一届的CMU学长学姐都慕名加群进去,不过我有点玩腻了。


还在wsy安利下看了冲浪普拉斯。这种视频看多了就会产生一种“我上我也行”的奇怪错觉。

我还仔细想了想一个问题:科研和创业有什么区别。感觉差别不大,我是这么分析的:

选题要调研,要分析需求以及痛点难点,还要讲故事,不然没人愿意听而且没人给你funding;

中间的过程相当于技术选型,拉人一起入坑干活,跑各种测试佐证,不然没说服力;

等东西有个原型了,准备宣传/发paper,要应对各种别人的刁难,比如为什么用这个东西而不用别的;

后续的发展还要持续性的投入,比如科研上别人跑你代码、给你引用,你得解答如何使用以及维护系统,对应到公司就是市场营销和售后服务。

就会发现其实这俩差不多……只不过每次做的科研项目相当于是个小规模创业?所以就能解释为什么PhD毕业去创业的人要比其他层次的人要多?


六月份北京突然来了个新发地,导致无法返校举办毕业典礼,于是只好叫ljs帮忙收拾宿舍。

对于学校而言,当然是刷墙比毕业生更重要啦~

拨不了穗,于是就在群里面装了装校长玩:(我的群昵称是邱勇)

Sample image

Sample image

千赞知乎回答

其他

要毕业了,没有不舍。每次毕业我都不想参加所谓的仪式,没啥好当面纪念的。

过去

下面有些问题摘自学生会倒计时20天回忆挑战,有些是自己脑补的

Q:大学生活中,有没有去非常激动地做一件事情的体验?

有的,干坏事就特别激动。每次日别人网站搞进去了就满满成就感,然后通知网站管理员去修。(虽然都是一些低端漏洞适合我这种没入门的业余安全玩家来玩)

Q:大学生活中,有没有值得一提的事情?

还挺多的。

  • 大一:OOP课程大作业拿去发了一篇TCAD
  • 大二:掌握了些网安的皮毛技术;实习面试了两位数的人;图形学A+;VizDoom比赛拿Rank 1
  • 大三:加入了白帽子小分队(名字乱取的,没正式名字);当了实验室服务器管理员;搞了个GitHub repo骗了五位数star,后面大部分贵系学弟都只好把我的作业当upper bound;找到了殿堂级暑研
  • 大四:知乎营业出去了;重写了天授;做了个查签证网站日活五位数;GitHub快四位数Followers

当然还有些别的事情,比如我把B站上所有学生节视频都看了个遍。

Q:四年以来自己身上最大的变化?

感觉没啥变化……可能变得会写blog了?(大雾

真要说的话还是有的,之前会有意识地去投资未来(比如高中把微积分看完,大学没怎么学就拿了A),上大学之后目标不像之前那样那么明确,变成了无意识投资未来了。

还有就是比之前更会表达自己(sell myself),学会不要脸(比如各种问问题)

Q:有没有在清华留下未完成的遗憾?

这是个沉重的问题。从头捋一遍世界线分叉都有哪些。

大一下转系

如果我没转系而是留在自动化,现在会怎样呢?

可能就是普普通通保研,不出国,搬砖去了(拿到的消息是如果我不转系,那么更适合留在国内

大二上找实验室

我其实一直以来很想从事图形学的研究,在高中搞oi的时候就很喜欢计算几何。

我也很喜欢搞安全,谁不想当个hacker呢(

写AI感觉也可以,我在高一的时候写过一个玩2048的AI(底层Miskcoo写的,当时为了社团展示,orz),效果还行,一口气写几百行代码也不累的那种

就是因为大二上,系里的学术新星计划里面,胡事民和段海新两位老师都没项目在里面,于是就选了朱军老师的(而且还是黄大大推荐的

大一的时候黄大大是这么和我说的:“要想出国的话,如果搞AI可以找朱军、唐杰、崔鹏,这三位是系里的rising star;NLP可以找刘知远;图形学可以找胡事民,不过比较push;其他不是太了解”

如果在另一个世界线,我没有报学术新星,而是去搞图形学/安全去了,会是怎样的一个结局呢?

决定是否出国

大一的时候听了几次某中介举办的留学经验分享会,这些学长洗脑说“如果能同时选PhD和MS的话,不用考虑MS,直接PhD就完事”。

现在看起来这就是扯淡【手动微笑】

其实到大二下开始,我也没打算好是选择留在学校还是去国外,只不过是倾向去国外读PhD,一切动作都是有意识地按照这个目标去做的,比如去Sensetime实习是看他们很能水CVPR,看看能不能蹭一些paper(结果并不能);比如大二就进组。

大二暑假又去问了一次,结果是国内不行,国外很好。其实转系之前就问过一次,转和不转的国内/国外的结果是完全相反的。而这次和之前是完全对应的,那我也不敢违抗。

如果留在实验室保研了,按这个结果解释,会不会因为某些不可抗外力导致毕不了业,或者是自己没做出来什么东西导致重度抑郁,整个人废掉?不知道

大三找暑研

我之前有讲过

如果当时没去放弃CMU暑研申请名额,按照我的申请结果来看可能就能弄到CMU的PhD了(大雾

不过也说不好,万一去CMU搞东西没搞出来,万一申请签证被check几个月,万一……谁又说得准呢?

申请策略

主要分为两个问题

第一个是科研与标化的时间投入比。我这种人是十分厌恶考试的,标化考不出来就考不出来,就连期末考考个60我都无所谓,连argue都不去argue的那种(指软工期末和计原期末)。

但如果我把泡在实验室的时间一半拿去专攻标化考试,结果会如何呢?可能连MCDS都没有。因为标化超级高但科研平平的人大把大把,如果这样的话,和别人又有什么区别呢?

第二个是选择申请PhD还是MS。还是大二暑假过后那阵子,问暑研的时候顺便问了下我该申请PhD还是MS,答复是只能申请MS,PhD的结果和国内一样。这里写一个list表示一下:

  • 国内读博 x
  • 国内读硕 x
  • 国外读博 x
  • 国外读硕 o

现在看起来是对的。一是我确实不想继续搞科研了,会有那种逆反心理;二是我确实只有MS的offer而没有PhD offer;三是即使有PhD offer,能不能出得去还是个问题,主要是签证(毕竟MCDS是个顶级的course-based degree没有任何research,而THU又是very high risk)。

讲个笑话,申请之前去问了下该只申请MS还是MS/PhD混申,答复说都行,在拿到MCDS offer之后终于知道是啥意思了。。。PhD全拒的意思


在还没出生前,我们的命运就已经被确定了?我不想承认,但是事实一次又一次告诉我这是对的。

因此也不算遗憾吧。如果未来某天时光机发明出来了,可以以上帝视角来进行干扰:自变量都列在上面了,我觉得这些分叉和对应的结果应该挺有意思。

Q:如果回到四年前,会对当时的自己说什么?

没啥好说的,顺其自然就行,该摸鱼摸鱼,该干活干活。

未来

在申请回忆录最后我放了个张明瑞学长的博客。感觉邓公说的真的挺好的。尽可能的多经历,去寻找自己真正想要做什么:

https://zhang-ming-rui.gitbook.io/when-rocket-goes-up/er-da-xue-chu-qi/jiao_liu_suo_ji_er_2014_2014_deng_jun_hui_lao_shi

Sample image

Sample image


以及并不准备defer。四月五号约的沈阳7.7签证,中途经历了沈阳789月周三撤销、5.22-6.5撤销、6.8-6.26撤销,所以我就莫名其妙变第一波面签的人了(大雾

签证预约被取消了,感觉等使馆正式开门再去约吧,反正拿到了签证也去不了。。。大不了上网课上几个学期

我觉得在CMU的话可能上课作为副业(反正都是花钱镀金),更主要的是增长见识,看看有没有什么有趣的事情可以做,顺便结交一些有趣的人。

以及一些杂七杂八的看法

世事难料:完全没法知道几个月之后会发生什么,二月份还是武汉gg,美帝一副啥事没有的样子,过两个月就完全反了过来。

很反感23,尤其是在自己不行的时候:THU6字班申请群里就我标化最低。那些人说啥我都不敢吭声。

异化:针对THU这种GPA为主的评价方式,我的观察是,不少人就失去了自我,被推着走(我也确实有段时间这样)。即使是有了GPA,之后如果没想清楚自己想干什么,或者是其他能力并不能匹配这个GPA,都是很致命的问题。再加上没有校内的论坛,每个年级之间的信息交流不通畅,自己也缺乏职业规划,结果就是一路跑着跑着,跑到终点就不知道该干啥了。真是十分悲哀的一件事。

有些人就这样人云亦云地保研/出国读PhD,但是,他们真的想专心学术吗?他们真的适合学术吗?他们没想过。

还有世界上没有绝对的对与错,每件事情从不同的角度来看其实都是不一样的。


最后是眼界的问题。我觉得THU这个平台对我而言还是能够提供足够的资源和视野,让我经历一些之前不敢想的事情。在不同的阶段自己的眼界完全不一样:之前确实只局限与自己的一亩三分地,在大三上的时候看到完整同龄人profile之后第一次意识到了不能用他人的评价标准衡量自我,在大四下毕设前后又一次看到了不同维度的评价标准带来的效果。

即便是校内直博,我也不会把自己局限在三篇A毕业这个标准,这太无趣了。不少人确实局限在了这个条条框框中,吭哧吭哧做实验写论文和reviewer撕,即使刷SOTA苦苦调参刷出来了,最后找到一份好工作,然后呢?没有人会记得。

我是很认同朱老师和苏老师说的“做一些真正有影响力的工作”这个指标的。这才是学术,哪怕是花几年时间让我啥也不干,就只负责开发基础框架,中途没有任何产出,那我也愿意。


所以大学生活就这样连载结束了(

Read More