多年以后,他会想起2023年1月1日凌晨,那个为Ubuntu Wayland上的腾讯会议配虚拟摄像头投屏的凌晨。
正文
夏令营之前
两次选拔,第一次是填写个人资料,第二次是提交对已有研究的复现或分析、面试。我是一个人过了,毕竟有安卓开发基础还是挺容易搞定的。这里不建议花费太多时间,熟悉一下大致内容即可。(顺带一提,如果你不确定要学什么可以先不学,我们组打着机器学习的名义,做的却是LLM应用。)
接下来基本就是和队里的人准备你们的内容了。这边建议先打一个比较好的架构而非随便写个玩具,最好后面略微改动就能用,而不是像我们一样花了很长时间推翻重做。
吃住
住在深圳明德实验学校,宿舍条件相当烂,并且夜间断电。
除了周末在明德,平时吃饭在南科大食堂。明德的饭基本是相当一般的盒饭,会浪费很多。南科大可从米饭、肠粉到饺子、面条等菜品中任选,并每天领取饮料/水果。在明德的周末偶尔会举办一个pizza day,貌似总共有两次?
开营、结营时会在腾讯滨海大厦吃饭,这个则相当香。
在结题报告后,你可以享受人生最压抑的一顿饭,感受看着各位大佬导师欢快交流而自己一句话不敢说的尴尬。
科研
工作时间在教室做科研(代码,debug,evaluation,论文,PPT)
开放的知识
提前体验学阀特色,笑。
Sci-Hub在我们的研究主线中其实并没有用到,论文都来自 导师/arXiv/作者公开,但它在我们去看一些参考文献的时候相当有用。如果没了导师,相当一部分文献其实是被锁在付费墙后面的。
Z-Library让我能够预览众多数学、计算机相关书籍,从而避免碰到名不副实的垃圾。(当然我们也必须感谢图灵社区,毕竟有魄力提供DRM-free资源的商城在现在不多了)
这就不得不提在明德自习室发生的趣事了:那里是有WiFi的,但由于流量异常,几天后要求不能在这个网挂梯子。
活动
很多,可比科研多多了。
开营时的破冰————即团体活动,包括但不限于自我介绍、猜歌、团体运动、组建社群(e.g., 音游群(很遗憾地只有一次活动)、CTF群)、团体桌游;
营中:
- 一堆讲座(选听、必听都有),包括各个学科的(主要是科普向),有个提问环节(并且提问有概率获得🐧玩偶一个)
- CPR学习、腾讯讲师交流(这个一定要选大众的 :( )、动捕基地参观、演唱会、博物馆无障碍义工、百科知识竞赛等。
营末:结营答辩(如果算的话)、项目海报展示
娱乐
CTF
一起打了AmateursCTF,于是出现了algo全解而pwn一道都做不出来的奇观。也充分展现了我有多菜,只能在misc刷刷分。值得一提的是,某人在一道发邮件要源码的题深夜公开后第一时间搞出正解,却因为没有及时查看邮件而痛失一血。
营后又被拉去打了DiceCTF和picoCTF,前者基本无贡献,后者因为很水所以做出来了1/2,并入门了pwn。并强烈谴责了这群人拉高二下学期学生工作日打CTF的行为。
企鹅
毕竟是个企鹅的活动,企鹅是无处不在的。比如滨海走廊末阴森的企鹅(我们称为杀戮企鹅)、腾讯大厦里的防诈骗等身企鹅模型、讲座时的企鹅玩偶、腾讯大厦里被tuna ban掉的访客网络、每周抽奖得到的腾讯其他活动的残次品,或者各种证书和口罩。
ACG
动画与漫画
整个科苗期间我陆续推完了《别当欧尼酱了》、《少女终末旅行》与《蘑菇的拟态日常》。
游戏
我自己的话是深夜云通了四大日式恐怖RPG,虽然挺有年代感了,但仍然足够神。白天打了Alice In Cradle。夏令营结束后的暑假几天,高强度推完了樱之诗与魔宴,前者给我的震撼远远超过了素晴日,甚至为了它水了篇狗屁不通的blog。
然后我们一群人能一起打的————MC,启动!(虽然PVP(包括字面意思上的CTF)和纯生存都打得一般,并且被某人的/kill @e
彻底破坏了体验)。理论上有个音游群,但只在结营的时候玩了一下。结合一些其他联机经历,我们称其“电竞苗子”。
结营典礼上,还进行了一个“星铁,启动!”和“Arcaea,启动”!以致敬我们的队名“源神队”
健康
明德的运动场地挺全的,还有个地下羽毛球场。很不幸的是,由于我全程宅宿舍/南科大教室(改代码/打CTF/打rpg/推gal),所以没怎么去运动。而且晚上一般一点左右才睡。因为这些,疑似新冠后遗症的心率过快貌似加重了。
其它
南科大的教室影音效果还是挺好的,很适合午休看《空中浩劫》。
我们队里的某两位人在一个夜晚互相帮对方抽卡,然后都歪了。
每天上午在南科大吃完饭会挤公交去教室,这段时间挺适合拿来进行一些翻译和读RSS。
配环境是个足够乐的事。毕竟我们的环境总共有 Ubuntu / Termux chroot Arch Linux / Windows 11 / Windows Server 2019 之类的,再加上 实体机/虚拟机,本地/CI,这边不建议在arm之类的奇怪环境下搞开发。
在代码库形成初期不建议多机协作开发,不然git merge是相当地狱的一个事。
花了很长时间搞Android上的Repainter & Wallpaper Engine,但也就图个新鲜而已。
为了致敬腾讯的ToS,在滨海大厦里进行了QQ-History-Backup启动。
有个人给别人推荐机场却忘了加返利链接,是谁呢?
夏令营之后
我们组是花了近一个学期改程序、跑eval、写论文,并花了一周准备答辩,然后——就这样了。评奖结果是在寒假打Ingress的时候收到的,证书则是在开学后。
碎碎念:关于科研
老实说,在经历了这场科研活动后,我对“科研”的印象其实不是很好。尤其是作为一个也算搞了两三年开源的人,这里的氛围真的比我所接触到的开源社区差太多了。
这里只是我在过去一年里作为一个刚接触到科研的人所感受到的,可能较为偏激且绝对不客观,也许以后会来改。当然评论区提意见也是欢迎的。 骂这么多不代表我以后一定不会在这方面工作,只是几年后再来看看这些论点还成不成立将是有趣的。
Paywall
我们读的论文大多是在ACM Digital Library这种机构后面被保护起来,没有高等学府身份就看不到的。当然我们的助理导师作为北大博士可以把pdf发给我们,但假如没有这种人呢?Sci-Hub?其实并不完全行,鉴于它由于诉讼已经很久不更新了。
产出周期长,社区反馈少,eval高于一切
软件工程从来不是一个只看结果的学科。有些时候,一个创意或者一个MVP(最小可行产品)本身就有很大价值。这样的产品并不少见,比如终端网页浏览器 Carbonyl、LaTeX替代品 Typst(我们刚用的时候还只是一个雏形,一年后的今天已经可以取代LaTeX了。虽然是Rust写的,但并不难贡献,Jett的commit就被合并过)。而更清晰的例子是vimGPT,和我们的“科研项目”几乎完全相同。整个codebase不过200行,没有eval(跑分) / peer review(同行评审),但效果比我们打磨了几个月的屎山好多了。
开源?
LMFAO.
至于 最新最热Python虚拟环境管理器 / Written in Rust / Docker?能跑就不错了,哪来那种东西。相比之下,更多的是 版本混乱、路径硬编码、log缺失 的屎山。
反思
和导师交流不够。我们做项目的过程中出现了实现思路等一系列问题,但主动找导师询问可能最多三次。后来我才意识到,跟他们的交流不该过度拘谨,连一位网友都能为你的询问回复一篇长文,何况是你的导师呢。
抽象度与复杂度过高。为了某些自以为是的可扩展度,我们拿面向对象的思维写了大部分代码,后面想改的时候却发现依然需要推翻重来。早知如此,为什么不直接写出vimGPT一般面向过程的优美代码?为什么非要把无关紧要的设备类型、操作类型抽象成无数个类?
专注于一个思路,而没有去深入探索其它架构。vimGPT通过字母来标识元素,而我们在实验GPT-4V的时候,之所以作出“这东西还不好用”的断言,一大原因就是LLM一直试图操作不存在的元素编号(递增数字)。但是,这样的思路又该如何想到呢?我还不知道。(顺带一提,基于GPT-4V的AppAgent用的也是数字编号,但效果貌似也不错,可能我们搞不好更多是因为末期经费、时间不足吧。)
后记
暑假结束,开学不久以后,我偶然听到了这首Frums的歌,感觉到了某种触动,因此把它摆在了这里。
什么触动呢?歌名这个Run就很容易让人想到“润”。科苗,如上文所述,几乎除了包括我在内的几个都是出国的。尽管深入了解不多,但我还是感到有一种不同于我身边任何人的……自由?或因这个产生的独特?比如给Taichi Lang写测试用例的Jett,和我们一起打MC、音游和CTF的Ana,给我们拍了张照的Li,另一个用Arch的物理人。(虽然其他非国际人也有让我印象深刻的,但在此略去不表)去探索自己的生活,这不是我一直在追寻的吗?尽管如此,虽然我对我国现状也不是很满意,但我知道,我生来就已经不可能了。我的家庭没那么高贵,也有一些变故(某人如果在读的话,应该是知道的),所以说这应该不是重点。
我觉得,科苗是给我的更多是一种解脱——从重压的学习、生活中,有一个逃避的借口。我可以去玩GPT,打CTF,写paper,打RPG,或是跟Leo学最新最热Linux黑科技和Python包管理器,在一年投入其中而与常人不同。
现在,梦醒了——希望如此。