封面出自轻音少女第一季, 截图时间是笔者回国的飞机上.

前言

2025 到 2026 年初发生了太多太多的事情, 这些事情极大的影响了笔者对于事物的看法. 笔者接触到了非常多的新事物, 也真真切切的感受到了自己的改变. 但是这一年基本也耗尽了笔者所有的力气, 历史的车轮中滚滚向前, 笔者感觉自己越来越有心无力. 面对即将到来的 PhD 或者是工作, 笔者并没有做好的什么准备. 太多的感触积压在笔者的内心, 最后决定写下本文.

上半年的故事主要放在了 少女乐队和我的大三下 这篇文章里面, 虽然本文也会有一些 recap. 写的比较非常中二, 梦到哪里写到哪里, 而且口无遮拦, 见谅.

日常爱好

在 2025 年, 笔者依次观看了 MyGO, Ave Mujica, 孤独摇滚, GBC, 轻音少女 (两季), Bang Dream (含三季 + ova + Roselia + Morfornia), 迪迦奥特曼等作品. 在 2024 年夏天的时候, 笔者因为一个偶然的契机, 开始看动画, 然后便一发不可收拾. 笔者倒也没有那么狂热, 但是每两个月还是会主动找一点东西给自己看, 属于老年人观众.

关于 MyGO, Ave Mujica, 孤独摇滚, GBC 的一些感想都在 少女乐队和我的大三下 这里. 下面主要讲讲下半年看的一些令人深刻的片段.

BanG Dream 和梦想

9 月中旬回国之后, 笔者在家躺了两天就回学校了. 虽然嘴上说的理由要赶学期开始的签到 (当然签到确实不能逃), 实际只是因为呆在家里也不知道能干些什么. 回学校之后, 第一件事情就是把寝室串了一遍. 虽然也就出去了 100 天, 但是见到身边的同学还是会感到非常亲切.

回国后很短的一段时间, 笔者暂时没有什么事情可以做. 在这段时间里面, 除了见到熟悉的人, 最开心的事情莫过于弹琴. 作为一个卧室吉他手, 笔者并没有什么水平, 最多的时间还是在刷刷和弦, 倒腾一些有趣的乐句, 自娱自乐也是挺开心的.

不过轻松的日子并没有持续多久, 在经历了 deepseek v3.2 这次 model 支持之后, 笔者几乎是掉了一层皮. 国庆期间, 笔者给自己放了一个假, 除了和 hastin 同学一起去市中心玩了一圈买了一个小园立牌之外, 第一次认真接触了 BanG Dream 音游.

小圆可爱

其实早在出国之前, 笔者就通过身边朋友 hsfzLZH1 了解并尝试了 BanG Dream 音游. 然而那时候, 笔者满脑子想的都是干 research, 所以只是浅尝辄止, 手机上的 kasumi 图标也一直放在那里, 从来没有点开过 (好吧, 严格来说笔者在美国登陆过一次). 国庆这次假期, 给了笔者一个契机, 笔者真正开始去玩这款音游, “BanG Dream! Girls Band Party”.

在刚开玩的时候, 笔者除了对 MyGO & Ave Mujica 的角色, 以及比较出圈的香澄、友希那这些角色, 对于其他的少女唯一的印象是: 她们怎么长得都一个样. 一开始, 笔者还试图 “科学邦多利观”, 希望能够最快的提升自己的音游水平, 同时尽可能提升游戏内的各种属性 (抽五星卡、升级), 不过这样的日子并不让笔者感到快乐, 笔者的水平似乎很快就迭代到了能打 normal (难度 20 左右), 然后再也上不去了, 这也让笔者感到非常受挫.

虽然在游戏上比较坐牢, 但是对于角色的熟悉程度, 逐渐转变成了对于角色背后身世的好奇. 这个乐观向上、闪闪发光的邦高祖户山香澄口中的 “星之鼓动” 究竟是什么, 而 Roselia 为什么会追求 “更高的舞台”? 带着这些疑惑, 笔者, 连带已经入坑 Bang Dream 半年多的室友 hsfzLZH1, 一起开始观看 BanG Dream 动画.

第一季动画还是稍微有点难绷的, 主要吐槽的点是作画 (ova 更是炸裂). 画质上, 第一季和笔者之前看过的一众少女乐队截然不同, 比较粗糙的细节给人一种上古动画的感觉, 而 live 时候的 3D 渲染也略显生硬, 当时笔者还和室友戏称这是 “里番画质”. 虽说如此, 这种有年代感的画风, 还是会给笔者一种回到童年/高中的感觉, 一种亲切感扑面而来, 只是这也无法掩盖太多崩坏的细节.

第一季 ova 真是崩完了

情节上还算比较老套, 主要描述的少女的校园生活, 以及乐队成员之间的友谊. 故事从一开始户山香澄 (kasumi) 上高中开始讲起, 然后由 kasumi 被星星贴纸吸引, 误入了市谷有咲 (arisa) 家中. 在误会中, 两人结识. 在 Live House 观看了前辈乐队 Glitter Green 的演出后, kasumi 下定了决心也要组一个乐队, 想要 kirakira dokidoki. 在接下来的日子里, kasumi 拉上了身边的同学里美 (rimi), 并在课后缝制手工吉他箱的时候, 认识了花园多惠 (tae) (名场面: 使用 random stars 的都是变态 x). 后来又因为一个契机, kasumi 了解到了山吹沙绫 (saya) 的身世, 给因为照顾生命的妈妈而缺席文化祭的 saya 送去了自己和同学的祝福, 成功打动了 saya. 可以说, 所有乐队成员都是在 kasumi 的坚持下, 被拉进来的. 然而, 组成 Poppin Party 后的日子并非一帆风顺, Poppin Party 的演奏没通过 SPACE livehouse 老板的审核, 香澄在试音会上自信全无, 甚至害怕的失声. 由于试音的机会只剩下一次, kasumi 非常消沉, 觉得自己和大家差距很大. 在队员的鼓励下, 香澄终于找回了自信, 通过了最后一次 SPACE 试音, 完成了 livehouse 关门之前的最后一场演出.

夜里还在练琴的 ksm

人设整体还算比较套路, 至少没有明显超出笔者意料的部分 (Ave Mujica 那个双重人格真给笔者看傻了). 非常传统的剧情, 在努力之后 Poppin Party 也获得了期望的结果, 算是极端的善良守序了. 值得一提的是, kasumi 那种紧张到失声的场景, 对笔者来说真的非常有感触. 对于童年见到那片星河无法忘却, 渴望在 live 中像星星一样 kirakira, kasumi 肯定无法接受因为自己的不足, 导致大家错过 livehouse 关店之前最后一次闪耀的机会. 从第 10 集中可以看到, 香澄和队员都为之付出了不少的努力. 然而, 过大的压力击垮了 kasumi, 紧张让 kasumi 发不出声音, 而无法参加试音会又再次放大 ksm 心中的焦虑, 负面的情绪让开朗的 kasumi 彻底崩溃了. 就 kasumi 本身而言, 她在技术上确实不算是非常顶尖, 而且经常自顾自地冲而没有注意到身边的团员, 自己又没有做到毫无顾虑, 作为 Poppin Party 的队长肯定是有不足之处的. 在一次试音失败并且在事后单独找老板, 被指出 “完全没有看见周围和自己” 以及 “你是最欠缺的”之后, kasumi 的失声和接下来的崩溃也是可以预料到的. 不过好在后来在 kasumi 向队友交代了那天晚上和 livehouse 老板的对话, 才被队员拉了一把, 也才意识到最重要最开心的还是一起玩乐队这件事, 而不应该害怕担心自己不行, 或是过不了试音. 队员们拉着满脸泪水的香澄在夕阳下, 歌唱动听的旋律, 这可能是这部剧最感人的瞬间.

对笔者来说, 类似的情景在生活中反复出现, 笔者会经常怀疑自己是否真的 qualified, 也会因为过于看重某一件事情而产生负面的情绪, 这份情绪会让笔者失去自信而退缩. 但实际上, 正如香澄伙伴们所说, 哪怕一开始最不行的可能是自己, 既然都已经冲到了这里了, 就没有必要再因为害怕而停滞不前了. 更重要的是, 在前行的路上, 认识了许多有趣的人, 这也是漫漫旅途中不可错过的风景. 这份感触在第一次看这一段的时候倒没有那么突出, 但是在写这篇 blog 而二刷的时候突然爆发了, 这可能和笔者当下的一些所思所想相关.

"你是最需要练习的"

对笔者来说, 全篇的高光情节主要聚焦在中后篇, 前半段的展开略显平淡, 感觉如果不是像笔者这样闲着没事, 很容易就直接划过去了.

第二季和第三季则交代了其他更多乐队的故事, 包括 Afterglow, Roselia, Pastel * Palettes, Hello Happy World, Raise A Suilen (难怪大少女乐队时代 hh). 在画面上, 第二季和第三季比起第一季有了质的飞跃, 虽然 3D 效果看着还显得稍有生硬, 但至少避免了第一季那种炸裂的作画崩坏的出现, 同时也大幅提升了 live 的观赏效果. 赞!

观影截图, 画面好了不少

不过第二季整体结构有点散, 每一集交代了一个乐队的故事, 前几集的剧情简直是流水账, 对于不了解 BanG Dream 的观众来说甚至可能角色都认不齐 (比如笔者…), 好在最后还是收敛到了 Poppin’s Party 自己的成长. RAS 挖多惠的那一段情节, 算是笔者认为第二季最大的爆点. 一边是童年好友和专业的职业乐队, 一边则是自己和朋友亲手组建的业余小乐队, 在思考之后选择继续留在 Poppin’s Party, 和队员们一起演奏的 “Returns” 也是非常感人.

第三季则补充了第二季中充当恶役的 RAS 的背景故事, 通过一次乐队小矛盾反而坚固了乐队的 “团魂”. 在最后, RAS, Roselia 和 Poppin Party 三支乐队同时登上了武道馆, 在万众仰慕的 “最高的舞台” 上, 演奏着动人的旋律. 观众可以看到专业而现代的 RAS (题外话, lock 的 Stranberg 真的帅), 剑指武道馆的 Roselia, 以及虽然业余但是同样坚持努力的 Poppin’s Party. 虽说情节展开有些有些老套, 而且最后淘汰赛保留两支队伍, 结果却出现三支队伍平票的设定更是显得有点不现实, 如同童话一般. “努力终究会换来回报”, 乐队的少女们以她们的乐观与坚持, 最终在舞台上绽放光彩. 至此, 最初的 kirakira dokidoki, 也是画上了一个完美的句号.

真正的大少女乐队时代
完结撒花

那话说回来, 笔者为什么会对 BanG Dream (邦邦) 有如此的兴趣呢. 笔者自认为, 这里面有很多一方面是因为, 笔者自己是一个吉他手. BanG Dream 作为一个乐队少女企划, 对于乐队的描写自然不会少, 而其中不少曲子的编曲, 也是吉他为主导的, 这非常对笔者的胃口. 比如先前提到了 Returns, 开头就是单线圈琴桥轻音分解和弦, 非常的清脆悦耳. 然后在各种 OP/ED 中, Poppin’s Party 的曲子大量用到了八度双音扫弦, 虽然笔者这个已经听的算挺多了, 但是不可否认在听感上确实非常明亮而富有张力, 非常能够带动听众的情绪 (at least for me), 算是 jpop 的必备出装了. 比较可惜的是, 邦邦的曲子基本上都没有大段的吉他/键盘 solo, 这可能是因为声优现场演出的时候难度太大, 但是作为一个吉他手, 一首优秀的曲子没有很酷炫的乐器 solo, 还是会感到比较遗憾的. 在旋律上, 许多 BanG Dream 的曲子都比较有歌唱性, 而且挺有记忆点 (好多曲子听两遍, 吉他上都能摸出来了), 这也比较贴合笔者的胃口. 除了美少女和唱歌之外, 美少女的琴本身也是非常赏心悦目的, kasumi 的 random star, tae 的 SNAPPER, 还有 Morfornica 的透子的 ESP-ARROW, 都给笔者留下了深刻的印象.

再回到音游本身, 在笔者肝完 paper 之后, 11 月的某一天, 笔者在约两周没有打开 Girl Bands Party 之后, 一时兴起开了一把难度为 26 的曲子, 结果居然混关混过去了. 虽然可能只是因为曲子比实际标注的难度简单, 但是这还是极大的激励了笔者, 笔者从此开始了保 27、 冲 28 之路. 音游的一个好处是可以让笔者清醒, 在 2025.12 的时候, 笔者几乎每天起来吃好中饭 你猜为什么是中饭, 干活之前做的第一件事情就是把火给清空了. 还有一个副作用, 就是笔者的左右手同步似乎比以前更好了. 在这个学期笔者吉他的演奏速度获得了显著的上升, 这一方面是因为拿下了左手的瓶颈, 击勾弦比以前更快更稳了, 另一方面就是左右手的同步的提升, 使得不会频繁出现左手卡右手这类情况了. 总而言之, BanG Dream 音游已经成为了笔者生命中非常有意思的一部分了, 它是笔者接触的第一款音游, 无论是游戏玩法还是抽美少女卡, 都给笔者留下了美好的回忆 (可惜没有中大奖噜).

桐谷透子的叉子 ESP-ARROW, 帅! 不过为什么 jpop 用金属琴啊 (

总而言之呢, 在看完了 3 季 BanG Dream, 听了无数邦邦曲, 并且深入接触了音游和角色故事之后, 笔者已经沉迷其中了. 这也是在东方 Project 之后, 笔者这辈子第二个陷入的天坑. 如果说东方更偏向于幻想, 是与世隔绝的桃花源, 那么邦邦则是更偏向现实与理想, 既有青春和校园, 也有大家一起的汗水和眼泪. 而这也更加吸引着笔者, 笔者在高中的时候也曾经有过乐队梦, 幻想能和朋友登上最高的舞台, 在演奏中挥洒汗水与青春, 邦邦也算是在另一个世界圆了笔者这一个美梦. 也不知道笔者这辈子还能接触多少个这样有意思的世界观设定 TAT.

迪迦

在 11 月投完 FailSafe 这篇文章之后, 距离 12 月申请开始还有一段时间. 在这段时间里面, 笔者除了打 Bang Dream, 还看完了迪迦奥特曼这部动画. 笔者小时候也挺喜欢看这个的, 只是没有想到在 10 多年之后, 重新观看这部影片, 还会有不一样的感触.

在这次观看的时候, 由于年龄的增长, 笔者可以一眼看穿拙劣的特摄了, 童年时候觉得很 “哇塞” 的特效, 现在觉得也不过如此 (毕竟也是 30 年前的产物了). 不过这次观看, 吸引笔者的不再仅仅是令人热血沸腾的打戏, 更多的还是故事背后的那些人文关怀. 这部作品并非完全给小朋友设计, 在故事也不乏各种引人深思的片段. 在选材上, 整部剧也涵盖了很多方面, 包括许多日常生活、社会问题、环境保护、以及大谷自己的成长. 最有趣的设定, 莫过于 “大谷既是光, 也是人类”. 光是不能干涉人类的, 而奥特曼作为一种远古生物, 也与现实人有一定的距离, 但是 “既是光, 又是人类” 的设定, 填补了两者之间的鸿沟, 也赋予了迪迦奥特曼独特的意义.

令笔者印象最深刻的, 是大古队员对变身迪迦的长久以来的困惑. 在刚拿到神光棒的时候, 作为大谷并不接受、 理解这份力量, 在第 2 集甚至把神光棒摔到地上. 同时, 在拥有力量后的大古队员也并没有一直对怪兽大开杀戒, 经常也会在战斗出展现出对于怪兽的同情和理解, 体现出人性的一面. 比如第 27 集, 面对因为昔日的村庄消失而愤怒变身怪兽的妖怪, 迪迦并没有做出任何主动攻击, 最后在怪兽意识到过去夜晚宁静的村庄不会再回来的时候, 它做出假动作, 欺骗迪迦反击, 完成了悲壮的自我献祭. 除了自我的怀疑之外, 也不乏关于战斗的意义的思考. 第 44 集, 邪恶迪迦和迪迦的战斗, 象征的是人性和神性的矛盾. 正木敬吾代表的是神的一面, 他希望成为带领人类进化的救世主, 而大古, 与之对应则代表的是人的一面. 正如队长居间惠所云, 这是人心引发的战争. 而最后, 正义迪迦的战胜了邪恶迪迦, 并且安葬了试图阻止主人 (邪恶迪迦) 的宠物变成的怪兽, 这也传达了作者希望观众看到的人性的光辉. 事实上, 这种以人为本的思想, 在整部作品中也多次出现, 比如 25 集中, 基里艾洛德人击垮迪迦的时候, 人类将手中的光照向迪迦的那一幕, 致敬了米开朗基罗的《创造亚当》, 只不过在这里, 拯救者是人类, 而被拯救的则是象征着神的 “迪迦”. 实际上在最后大结局的时候, 迪迦也不是靠一个人的力量战胜加坦杰厄的, 而是通过全人类的 “光”. 在这一刻, 人类完成了既拯救了奥特曼, 也完成了对自己的救赎.

拯救

整体来说, 作品的立意还是比较传统, 讨论更多的是人类自身的问题与挣扎努力. 在这部作品中, 奥特曼虽然是神, 但是其为人的属性也反复在被强化, 在拯救人类的同时, 也不断在被人类拯救. 大谷既是光又是人类, 所以在人类危难关头, 不会像是先代奥特曼那样放弃人类. 从抗拒这份力量, 到接受这份力量以及背后沉重的责任, 大古队员一次次在危难关头挺身而出, 为自己的种族 “人类” 而战. 这种古典主义的主题, 正义终将战胜邪恶, 秩序终将降临, 这对生活着 21 世纪的现代 (甚至是后现代) 人来说, 已经有点显得有点幼稚可笑了, 但是一个一个故事传达出的那份人性的温暖, 以及对于社会现象的思考, 即使是放到今天, 笔者也认为称得上一个不错的作品.

科研和工作

2025 年最重要的主线可能就是科研和工作了.

Prelude to dawn

在 2024 年末的时候, 投完了 Tidal 这篇 paper 之后, 笔者完全没有干活的想法了. 比较悲伤的是, 笔者当时暑研还没找好. 出于比较焦急的心理, 笔者随便问老板找了几个听起来还不错的老师, 然后去简单面了个试. 不过结果不是很顺利, 两边老师似乎都没有第一时间给笔者答复, 还是有点沮丧的. 不过, 这时候笔者找上了 Lianmin. 依稀记得当时笔者甚至还让 chatGPT 好好的修了一下 slack 发的问候消息, 生怕自己冒犯到对方, 现在想来, 那时候战战兢兢的自己也确实挺搞笑的. 不过 Lianmin 真的当时算是拯救了笔者, 他当时很快就答应了, 并且帮助笔者联系上了 Stanford 的 Zhiqiang Xie 以及 UCLA 的 Shan Yu, 很快就搞定了两段暑研. 从无人在意, 到四大的 internship, 就在这短短的一瞬间, 但足以改变笔者今后整个人生的进程.

吐槽一句, slack 这个看不见 90 天以上 history, 删除 1 年以上 history 的设定真的太蠢了, 笔者试图翻出去年这时候记录的时候发现什么都搜不到, 过去的回忆全都消失在历史的长河里面了.

在搞定了暑研之后, 笔者继续和现实对线去了, 详见 杂七杂八的东西 - 大三上小结. 在 1 月极限肝完各个功课的大作业之后, 笔者继续去准备 2 月份的托福了. 托福这玩意, 笔者父母在很早的时候就给笔者报名了, 但在 2024 年 12 月之前笔者一直以科研为理由拖延, 甚至还推迟了一次考试. 但是到了这个时候, 实在是没有推脱的理由, 于是笔者只能硬着头皮, 准备 2 月 15 号的托福考试了. 不过幸运的是, 笔者还是有做好长期准备, 在此之前百词斩刷了很久的单词, 从 2024 年 9 月到 12 月几乎没有怎么断过. 依稀记得那段时间, 笔者虽然每周在忙着科研, 但是在周五地铁回家的路上, 永远会先打开百词斩, 直到完成了每天的任务之后, 才会开始刷别的消息. 在 1 月底 2 月初的时候, 笔者每天呆在家里, 除了练习准备托福, 其他的时间基本就是倒腾吉他, 还有继续倒腾一些 coding 的事情. 说来惭愧, 作为 xgrammar 的 author 之一, 笔者对于 codebase 的贡献几乎没有什么. 那个时候, 出于笔者对于 C++ 的喜爱, 以及希望蹭到了一个 author 后真的能干点事情, 于是便顺手给 xgrammar 写了几个再简单不过的 PR.

令人怀念的日子

在 2 月 15 号考完托福之后, 笔者当天就回学校了. 刚开学的时候, 笔者还试图给自己列一个 time table, 期望自己能每天干掉一点项目. 然而事实是, 那时候的笔者并没有这个水平, 在 walk through sglang 的 codebase 的时候笔者坐牢了挺久, 本来期望能一天干完的 function calling 硬是拖了将近一个月. 然后是 hierarchical cache (hicache) 这边. 当时, 笔者刚联系上 Zhiqiang 大哥, 那时候他正在给 sglang 支持 hicache, 笔者也跑过来试图帮忙. 不过由于当时笔者面对 sglang 这种庞大的 codebase 实在是没有太多的经验, 所以理解相关的代码和抽象花费了不少的时间.

在一开始, Zhiqiang 同时提出了用 DMA kernel 和 double buffering 两种解决方案, 笔者经过了本地的一些 profiling 之后, 发现 cudaMemcpyAsync 性能对小块的传输, 性能实在是太差了. 最后, 还是采用了 custom kernel 这个解决方案, 并且把 kernel 作为了 paper 中重要的一个 contribution, 然而这个 kernel 在遥远的未来, 成为了笔者的一个梦魇.

在 2025 年初的这个学期, 可能是笔者有史以来最轻松的一个学期, 也是笔者最开心的一个学期之一. 这学期里, 笔者选了 区块链、模型检验 还有 视觉生成 这三门课, 而这三门课都非常对笔者的胃口. 区块链这门课实际上更像是一门分布式系统课, 讲了很多一致性协议, 也讲了 bitcoin 这一个现实的案例, 期末大作业笔者也选择了 Block Withholding Attack 这个主题作为演讲 (虽然笔者自认为做的一坨…). 对笔者而言, 这门课最大的魅力在于, 可以发挥人类智慧, 讨论设计各种有趣的 protocol, 最后再用数学去把启发式瞎糊的东西给证明出来.

模型检验这门课, 主要讲了一些有趣的自动机理论, 可能和硬件的 verification 更加挂钩一点. 期末大作业是一个 LTL Checker, 写起来其实还挺简单的, 笔者似乎一天就肝完了. 整体风格还是比较 solid 的, 同样是给定一个 system, 证明其是否满足某些给定的条件 (safety 和 liveness), 然后用一些算法巧妙地把指数复杂度降低到一个可以接受的地步 (虽然似乎很多 case 下还是会出现状态爆炸).

对比前面这两门更偏向 hardcore system 一点的课程, 视觉生成则更像是一个需要发挥想象力的课程. 当然, 这门课也没有上来就 all in AI, 而是上来从传统的方法 (pattern match) 讲起, 然后沿着 AI 进化的历程一步步介绍, 最后才介绍现在的这些 ML 方法. 最后的大作业是自己训一个 AI 来生成图片. 当时笔者正沉迷于 Ave Mujica, 遂和 hastin 同学一起炼了一个 Mutsumi 的 lora. base model 采用的是当时还算比较火的 flux-1.dev, 可能由于数据集实在是太小了, 也可能是 Ave Mujica 独特的 3 渲 2 画风, 训出来的 model 效果并非很好, 高度过拟合.

失败的 mutsumi chan

回到科研. 去年投 OSDI 的 tidal 这边寄了, 遂转投了 ASPLOS, 然后 hicache paper 本来打算投 SOSP 的, 但是由于时间实在是太紧了, 不仅试验做不完, 而且 Zhiqiang 那边有些 contribution 也没想的太明白, 于是改投了 Eurosys. 但是即使是转投 Eurosys 依旧是非常极限, 最后一天晚上熬了半个通宵, 凌晨极限把试验跑完之后睡了半天, 起来下午继续稍微改了改.

在对面党团活动室呆了一晚上

最后的无眠之夜, 此时笔者已经神志不清

在这之后, 笔者迎来了最轻松的两周, 这大概就是 2025 年笔者去美国之前笔者全部的故事了. 事实上在这个时候, 笔者就开始怀疑自己工作的意义了. 笔者在投完了 hicache paper 之后头疼了整个周末, 在家里瘫了两天 (好在笔者是上海本地人, 可以回家养病…), 当时笔者写在日记里面的想法是 “好玩并且有收获” 就行, 但这就是真相吗? 笔者真的对 MLsys 有热情吗? 不过那时候的笔者还没什么水平和见识, 确实也没法回答这个问题.

SGLang

在 6 月的时候, 笔者开始了自己的美国之旅, 也更多的开始给 sglang 社区干活了. 在此之前, 笔者其实很长一段时间都没有给开源社区写什么代码了.

刚到美国, 人生地不熟, 感谢 Zhiqiang 大哥来接机. 在到住处后, 也是多亏了有熟人房东帮忙, 安排好了住处还有通信, 才使得笔者不至于在美国直接失联. 这次美国之旅, 也是切实的让笔者意识到了, 身边有朋友是多么的重要.

科研项目的事情基本在 少女乐队和我的大三下 都说了. 简单来讲, Fault Tolerant LLM serving, 这个 idea 一开始并没有非常说服笔者. 不过当笔者真的开始思考之后, 确实也找到了一些有意思的问题, 虽然笔者依然觉得有些 motivation 写的稍微有点牵强. 在写 paper 的时候, Zhiqiang 和 Christos 给了不少建议, 笔者刚开写的时候真的完全不知道如何下手, 初稿纯靠 GPT 和自己糊, 梦到哪里写到哪里, 在最后一周一轮轮改下来之后, 居然有点样子了, 也是挺神奇的. 虽然上次 hicache 投稿完之后, 笔者曾经下定决心, 一定不要赶 paper 而熬穿, 但最后还是没做到. 最后赶 paper 的时候, 笔者已经回到国内了, ddl 是在国内的半夜 4 点, 投完后过于激动, 去寝室楼外面转了一圈, 大概到了凌晨 5 点才睡. 感谢室友的不杀之恩, 那天晚上笔者在寝室里改到了最后一刻, 室友也都没有责怪笔者.

又 tm 通宵了

sglang 这边, 笔者来美国的时候, 第一件干的事情 hicache 的 c++ radix tree 和相关代码重构. 笔者是一个代码洁癖很重的人, 或者说有自己强烈的代码风格, 在跑 hicache 实验的试图整点花样的时候, 被 sglang scheduler 部分的代码给恶心到了. 当时的 hicache 相关的特判实在是太多了, 而且各种逻辑 tightly couple, 返回值甚至类型都完全不统一 (有的是两个参数, 有的是三个参数), 这对 static type checking 是灾难性的. 现在看来, 这份代码其实也还算说的过去, 但是当时的笔者对于开源项目的接触并不多, 笔者只觉得这份代码读起来太恶心了, 本地静态检查也彻底完蛋了, 特判太多了, 于是便有了这些 PR. 首先是修了一个 hicache 的 code logic, 避免了比较极端的 code divergence, 然后是添加了一个 C++ radix tree (虽然感觉没有什么用). 不得不说这次经历对笔者有着非常深远的影响, 它使得笔者第一次认真 walk through 了 sglang 核心的 scheduler 的 code path, 而 sglang 庞大又令人望而生畏的 codebase, 也间接的推动了笔者开始写一个简易 LLM inference 推理框架, 最后演化成了 Fault Tolerance LLM serving 这篇 paper 基于框架, 以及开源的 mini-sglang. 有的时候就是这么的巧合.

在 8 月初的时候, 笔者有幸和 Lianmin 和 Ying 线下见了一面. 两位人都非常 nice, 而且非常有意思, 都很有自己的想法. 那时候, 笔者从他们的口中也听说了 sglang 后面会有一个巨大的项目之类的东西, 当时笔者没有特别留意, 后面才知道原来是 radix ark 基数方舟. 不过感觉从那之后, Lianmin 似乎开始更加信赖笔者了, 直接 merge 了两个笔者 pending 的 PR, 后面也允许笔者在 sglang 里面整了一些非常有趣的试验.

在 9 月的某一天, 笔者即将回国, 正准备享受自己短暂的假期. 突然, Ying 姐问笔者有没有空. 笔者当时也没多想, 只觉得自己又多了一个可以表现的机会, 于是欣然接受了, 结果发现是 deepseek 新模型的支持. 笔者之前从未做过任何 model support 的工作, 对此有点不知所措, 好在后面 Ying 姐拉来社区的一群 core dev, 让笔者真正的切身体验到了项目多人同时开发. 9 月末模型发布前的一周, 笔者几乎每天都肝到很晚, 除了一开始糊了一个大概的框架和 attention backend, 还研究了一下 tilelang kernel.

当时有些 tilelang kernel 的 feature 支持并不是很完善, 比如 attention kernel 不支持 varlen 的 decode (即 continuous batching 的时候, request 的 input length 不一样), 或者是遇到了 IMA error 的 topk kernel. 那时候, 笔者首先是靠 AI 和 tilelang 的官方文档, 自己糊了一个支持 varlen 的 decode kernel. 只记得某天晚上, 笔者开始改 attention kernel, 然后一路改, 修缺少的同步, 然后拷打 GPT 让他写 unit-test, 写完后再本地对拍, 然后不知不觉一晚上就过去了, 好消息是真的把这个 kernel 给糊出来了. 不得不说, tilelang 的语法真的做的非常易读, 作为一个之前几乎完全不会写 kernel 的人, 笔者一下子就能通过一些命名能推测出某个函数的作用 (比如 alloc_shared, barrier_wait 这些), 也因此可以基于自己的理解, 在完全不清楚 kernel 底层细节的时候凭借直观和 AI 硬些出来正确的 kernel. 再次感叹 tilelang 在 high-level abstraction 和易用性方面真的是做的非常好.

然后是 tilelang top kernel 的 IMA 问题. 笔者不是 tvm 大师, 完全不知道如何 debug 这个问题. 考虑到这里的 topk kernel 的结果在后面其实还要用来做一次 page_table 的变换, 于是笔者决定直接把这个 tilelang kernel 移植到 CUDA, 并且把后面的 page_table 变换的 kernel fusion 一口气全部做掉. 在此之前, 笔者对于 CUDA kernel 的接触仅限于非常简单的 memory bound kernel (比如 1_shot_all_reduce, store_kvcache 这种基础的), 因此移植的过程并非一帆风顺, 实际上还遇到了很多次自己写炸了, 导致模型精度错误的情况. 不过有趣的是, 在这次 model support 的过程中, 为了避免编译 sgl_kernel, 笔者把这个 kernel 用 torch.cpp.extension 动态加载, 而这在后来逐渐演变成了 SGLang 的 JIT kernel.

在这次 model support 之后, 笔者开始比较认真的研究 memory bound 的 kernel 的优化了. 要写 CUDA kernel, 一个好的 CUDA C++ 环境是必不可少的. 非常巧合的是, 那时候 tvm-ffi 正好开始公开宣传了. 在此之前, 笔者一直都在用 torch.cpp.extension 来加载自己动态写的 C++ 代码, 但是这个的问题是 torch 的头文件实在是太繁多了, 每次编译都要花费接近一分钟的时间, 在这坐牢的一分钟里面几乎什么都做不了, 非常难受. 而 tvm-ffi 直接解决了这一个问题, 它把 tensor 参数的传递和 PyTorch 完全解耦开了, 对比之下 tianqi 风格 DLPack 和 tvm-ffi 的头文件都非常轻量级. 于是乎, 笔者把 mini-sglang 这个项目里面 kernel 几乎全部用 tvm-ffi 重写了, 体验还是非常流畅的. 在这个过程中, 笔者还借鉴了 Tilelang 的 Symbolic Shape, 给 C++ 那边也实现了一个类似模式匹配一样的机制.

在配好了基本的 C++ infra 之后, 笔者第一个优化的 kernel 就是困扰笔者已久的 hicache kernel. 笔者在前文说过, hicache kernel 是笔者自己的一个梦魇. hicache kernel 长久以来存在两个问题, 第一个是和 flash attention 3 的 decode 不兼容, 有时候会触发 illegal memory access, 还有一个是性能不太好, 经常打不满 PCIe 带宽. 笔者至今尚未能解决 IMA 的问题, 而关于带宽的问题, 笔者第一个想到的解决方案是循环展开. 循环展开的好处是, 可以增加一次性 load 的数据量, 从而避免因为 scoreboard stall 带来的性能损失. 而 JIT kernel 一个灵活之处在于, 可以根据运行时得到的维度信息, 进行激进的循环展开. 在 apply 了 JIT 的优化之后, 在所有 case 下的性能几乎都看到了不错的提升. 然而, 这也并没有解决问题. 对于 row_dim 只有 128 的情况, memory bandwidth 经常只有可怜的 30 GB/s. 当时笔者不知道怎么优化, 于是问 chatGPT 怎么 optimize 这个 kernel, 虽然 GPT 也不知道答案, 但是它提醒了笔者, 要增加一次 data 传输的量, 并且用 vectorized load/store 增加带宽. 在各种尝试过后, 笔者发现了一个有趣的解决方案, 可以让一个 warp 一口气 handle 多个 row. 比如一个 warp 处理 4 个 dim 是 128 的 row, 这样一个 warp 有效 handle 的 dim 就是 512, 能够一次性传输更多的数据, 同时访存的单位也从 32bit 提升到了 128bit. 这两者结合, 基本上把小 row dim 的性能也推到了极致. 根据 Little’s Law, 这里其实是优化了 inflight bytes, 本来一个 cta 里面因为一个 warp handle 的 dim 太小了, 导致需要更多 cta 才能打满带宽, 现在只需要 2 cta 就能解决问题了.

当时, 笔者比较激动的找 Lianmin 去聊这个 JIT kernel 的事情, 本来只是想看看他的意见, 结果他非常爽快的就答应了, 自此开启了 sglang 的 JIT kernel 时代. 比较遗憾的是, JIT kernel 依然没有解决 fa3 decode + write to host memory 同时跑会触发 IMA 的 bug. 从各种消融试验 (attention backend, write to host/load from host), 检查 stream 一致性, 到最后用 cuda-gdb + 各种配置精确定位 IMA 确实是发生在 fa3 kernel 里面, 笔者前前后后花在这上面的时间加起来估计要接近一个月了, 这也算是笔者本科期间最大的一个遗憾或者说 “梦魇” 了. to be honest, 听到这个笔者已经有点 ptsd 了.

一路走来, 处处都是巧合. 从笔者给 SGLang 社区写的 refactor PR, 到自己写推理框架, 再到自己琢磨 kernel, 然后是 DeepSeek 模型支持, 还有 tvm-ffi. 每一环之间都紧紧相扣, 这一切简直可以称得上是奇迹了. 总之, 感谢身边陪着笔者的大家, 也得感谢虽远在美国但依旧给笔者帮助和信任的各位.

过去, 现在, 未来

磨蹭着磨蹭着, 毕业就在眼前了.

过去

从结果上来看, 笔者的本科生涯还算比较成功. 最后申请拿到了 Stanford, CMU, UW 还有 UIUC 的 offer, 属于是一个很不错的结果. 在学术上, 也跟着发了两三篇 paper, 虽然有几篇一直投一直挂, 但最后自己 lead 的 Fault Tolerant LLM serving 很快就中了, 没有太大的阻力, 也算是安稳落地了. 在开源社区那边, 2025 到 2026 年帮 SGLang 干了不少活, 同时也出于自己的个人兴趣爱好, 给 tvm-ffi, xgrammar 等项目也贡献了一点代码. 过程虽然稍微有些坐牢, 但是写自己感兴趣的 feature, 看到自己的写的 code 能被更多的人用上, 还是比较开心的.

但是, 现在笔者面对面前的选择, 并非从容, 笔者自己完全没有做好接下来的事情的心理准备. 虽然和很多人也聊过不少, 但是笔者依然对于自己的未来比较悲观. 笔者不是很清楚自己喜欢做什么, 或者说想要什么, 所以在面对选择的时候会非常不知所措. 笔者是从 2024 年暑假开始干 research 的, 在此之前, 笔者对 research 的认知几乎等价于 0. 在大一大二的时候, 笔者基本上完全只 focus on 课程的学习. 大一的时候, 就是全心全意扑在程序设计和数据结构两门课上, 那时候笔者其实两门课学到也不算很好, 或者说没有花特别多的功夫去认真搞明白每一个知识点. 2023 年初那个寒假, 笔者出于对于 C++ 底层实现原理的兴趣, 便开始自己学一些 modern C++ 的东西. 那时候笔者觉得这东西很酷啊, 很适合出去装逼, 也能让代码写的更加高性能. 抱着这样的想法, 笔者开始了自己的 modern C++ 之旅, 最为难忘的瞬间大抵是在那年过年前回四川的火车上, 笔者全程都在看 Effective Modern C++, 看的是津津有味. 可以说, 笔者在大一下的主旋律, 基本就是 modern C++. 除此之外, 还有一个自己瞎折腾的 关于 Minecraft Impart 服务器, 这也让笔者和同学们度过了一段非常快乐, 而又难以忘怀的时光.

大一到大二的暑假, 笔者又接触到了第一个让笔者彻底沉迷, 甚至走火入魔的课程: compiler. 那时候笔者跟着身边的同学, 很快的写完了基础的 codegen. compiler 最有趣的一点就在于, 可以根据 “人类智慧” 来优化一个问题. 在 2023 年 9 月份的时候, 笔者每天几乎全都扑在了自己的 compiler 上, 绞尽脑汁自己糊了一个又一个的优化, 最后靠各种奇技淫巧把分数卷到了最高. 然而, 这个带来的后果是, 笔者错过了 9 月份的几乎全部课程, 导致后面笔者在数理逻辑、组合数学这两门课程上落后了很多. 当时十一长假的时候, 笔者才意识到, 自己甚至连最基本的作业都做不上来. 笔者后面试图补上之前的进度, 但是又因为笔者过分自信选了 3 门数学课 (那学期要求只有 2 门), 导致实际上那个学期笔者完全没有足够的 bandwidth 去兼顾. 而且那个学期由于之前大一下的惯性, 笔者又一直在玩/想着要玩 minecraft, 导致了时间不足的问题更加恶化了. 所以, 意料之中的, 那学期的成绩炸飞了. 不过, 大二上的那个学期, 有一件事情完全超出了笔者的意料, 那就是 arch 这门课. 实话实说, 笔者在这门课上真的没有花费很多时间, 也并不认为自己很了解 arch, 期末考试几乎完全靠期末周的复习课, 助教透的题目 (保留节目了 hh), 才能拿一个还不错的成绩. 事实上, 笔者在期末考试出分之前, 从来没有意料到自己能拿这么高的分数, 感觉是高中三年在 shs 练出了无敌的应试能力… 至于 CPU 大作业, 笔者压根都没写. 当时助教 zwx 提出了一个 GPU 项目, 要求我们写一个 toy GPU, 于是笔者和 clorf 同学一起瞎折腾了一个 risc-v 的 vector extension 实现. 当然, 过程写的无比痛苦, 写出来的结果也完全是一坨, 根本没法看. 然后就这样, 看着手上这一坨又一坨烂摊子, 笔者开始了自己的寒假.

那个寒假, 出于对于 compiler 最后残余的一丝热爱, 以及自己对于 C++ 的痴狂, 笔者把自己的 compiler 用更加 modern 的 C++ 重写了, 而且非常重视代码的整洁程度以及开销, 力求 0 overhead, 为此真的是把自己毕生所学的 C++ 知识全用上了. 但是代价呢? 笔者那个寒假睡眠质量跌到了低谷, 经常每天只能睡 5 ~ 6 小时, 每天除了写代码、想优化, 几乎没有其他的事情, 甚至在回四川之后, 每天也几乎只忙着写 code. 那时候身边的人给笔者提了很多的意见, 但是笔者完全没有听进去, 只是自顾自地做着自己觉得好玩的事情. 那个寒假, 笔者打开了一扇通往地狱的大门, 从此在熬夜的路上一去不再复返. 到了大二下, 开学后, 笔者的状态稍微有所好转. 在放下了 compiler 之后, 笔者开始折腾 operating system. 实际上, 折腾 OS 完全不是出自笔者的本心, 笔者从来没觉得自己是一个搞系统的天才, 但是自从 arch 拿了一个不错的分数之后, 身边的人似乎都开始夸笔者 system 大师. 笔者自然非常希望自己真的像说的那样厉害, 而这份想法不知不觉中成为笔者折腾 OS 的动力. 但是对于 OS, 笔者也走了 arch 的老路, 基本上大部分时间都是自己设计, 妄想靠自己的小脑瓜想出来一个别人都想不到, 超越前人的优秀 design. 其实回头来看, 笔者很明显能看到自己的问题: 什么东西都想要从头闭门造车. 这自然是很低效的, 在大多数情况下, 完全不参考前人的设计, 完全靠自己想, 只会浪费很多时间走别人走过的弯路, 而且最后设计出来的东西, 也只能自我感动罢了. 而且脱离了生产场景, 对自己脑补的 use case 进行过早的优化, 这个除了给 system 增加不必要的复杂度, 炫耀自己高超的代码水平, 完全没有任何的意义. 然而那时候的笔者完全没有意识到自己的问题, 还沉浸在自己 “发明” 的快乐之中, 坚决不肯参考任何一点其他人的实现, 除了看了点 xv6 的 C code, 连 rcore 里面的 design 都没看完, 最后就是写出来一个自己都不愿意再去看的玩意. 虽然没有什么意义, 但笔者还是得承认, 它陪伴笔者度过了大二下很快乐的一段时光, 为自己认为有意义的事情而奋斗.

总之, 这大概就是笔者接触科研之前的日子了. 在大二下, 老师让我们接触科研, 开始去各个实验室逛. 那时候, 笔者才发现, 自己什么都不会. 一开始笔者还没有上心, 以为这个和普通的课程一样, 只需要随便水水就行. 直到真正轮转的时候, 当身边的同学一个个都能说出各种笔者完全不认识的名词, 和高年级 PhD 对答如流的时候, 笔者才意识到自己的差距. 那时候, 笔者依然以为这就是普通的课程, 因此总是期望自己一定要做最好, 类比 “拿高分”, 但是正是这份急功近利让笔者一直没能认真学进去什么东西. 而且, 笔者身上一直以来不懂装懂的坏毛病也开始发作了, 因为放不下面子和自尊, 总是会假装自己知道的很多, 但是实际上心里很清楚, 自己什么都不会. 那种过去的 “荣誉”, 在这一刻, 成为了笔者身上沉重的镣铐和枷锁. 同时, 又因为笔者一直以来的偏见, 笔者对于自己做的东西, MLsys, 其实一直没有很上心. 笔者实际上在初中升高中的时候就接触了 AI, 2019 年笔者的父亲就带笔者参加了在上海的一个人工智能大会, 那时候笔者就了解到了有 AI 自动驾驶, 还有多层卷积神经网络. 那时候的 AI 可能还尚不完善, 再加上网上各种唱衰, 以及笔者的各种误解, 导致笔者一直对 AI 持一种看不起的态度. 当然, 这归根结底还是因为笔者还是太年轻自负, 总是期望通过某种方式来证明自己与众不同, 而踩一捧一就是体现 “逼格” 的最好的办法之一. 笔者自己也不记得是什么时候开始, 开始变得这么膨胀. 要溯源, 那可能要到初中了.

初中的时候, 笔者没有考上上海最好的学校华育, 而是进入了一个比较普通的公办中学. 即使在公办中学里面, 笔者也不算是一个非常出色的学生, 在传统观点里面来看, 笔者只是一个顽皮的孩子. 但是在这个阶段, 笔者接触到了物理竞赛, 并且通过 2 ~ 3 年的痛苦挣扎, 笔者混的还算不错, 甚至还因此考进了上海中学最好的班级. 大抵是那个时刻, 笔者就开始起飞了. 毕竟, 作为一个普通学校的孩子, 笔者在初一初二的时候, 可能从来没想过自己能到如此优秀的一个平台. 在那里, 笔者遇到了很多很多优秀的同学们, 而和他们的接触也再次让笔者觉得, 自己其实也很厉害, 甚至可以和某些 “华育” 的 “高材生” 做的一样好. 在高考的时候, 笔者并没有如愿考上清北, 最后来到了交大最优秀的班级 ACM 班. 事后看来, 这可能是最优解, 笔者认为 ACM 班优秀的资源完全不亚于清北计算机系. 然而, 那时候, 笔者就一直怀有一种, 自己是 “考差来交” 的心理. 即使笔者心里非常清楚, 大家都是聪明人, 其实清北和复交的人没有很大的区别, 但是笔者一直没能走出自己的光环, 对荣誉、他人的称赞的这份渴望冲昏了笔者的头脑. 特别的是大一大二, 笔者在各种卷成绩, 并且虚伪的卖弱收获了大家的不屑和称赞之后, 笔者已经完全陷入了自恋陷阱里面了.

这份自负最终将笔者带入了深渊: 一方面, 笔者非常自以为是, 总觉得做这个没意义那个也很垃圾, 很长一段时间一直在说 AI/MLsys 没有意思, 要去做传统 system, 也一直听不进去别人的劝. 另一方面, 笔者又放不下面子, 看到别人做的好, 又不希望破坏自己 “完美” 的形象, 于是会不懂装懂, 也喜欢学一两个名词就去装. 这样的结果是, 笔者的科研之旅非常不快乐. 浮躁的内心让笔者根本学不进去一点, 而固执的观点更是让笔者有效学习的时间被稀释到 0. 回过头来看, 一个正确的学习态度是, 对于不懂的东西要多问多想, 同时不要急躁囫囵吞枣, 要一点点去攻克. 一个复杂的 system, 也是从一行行代码写出来的. 在迷迷糊糊之中, 笔者肝完了自己的人生中第一篇 paper. 大三上是笔者最不开心的一个学期, 笔者在 杂七杂八的东西 - 大三上小结 里面也或多或少透露了一点自己的负面情绪. 未能意识到自己身上的这些局限, 造成了 2024 年这一年的悲剧.

当然, 除了弄得一地鸡毛的科研, 2024 年自然还是有一些闪耀的瞬间的. 大二下有一个小插曲, 那就是春游, 这段经历在笔者的任何一个 blog 中都未曾提起. 那次春游, 笔者大部分时间没有和大家在一起走, 而是借着这个机会, 重新参观了一遍早年去过的一些地方 (感谢当时 Wankupi 同学陪笔者逛了挺久). 笔者初高中的时候高强度在人民广场补课, 去过业余物理学校、蘑菇培优、家辉培优这些地方. 然而, 在 5、6 年后回头来看的时候, 许多机构似乎都已经搬了地方, 本来还幻想说不定能够撞上熟悉的老师, 最后计划也是泡汤了. 只记得当时的笔者感慨万千, 具体怎么想的已经记不清了, 大致是感觉自己作为一个人类, 在世界上存在的证明一点点在消失, 诸如此类. 曾经学习、玩耍的地方, 现在也已经换了一副新的模样, 这才过去短短 5 年, 如果再过 5 年呢? 笔者之前很不喜欢拍照, 因为记得小时候有人对笔者说过, 自己的眼睛就是最好的相机. 但是, 那一瞬间的回忆总是会淡忘的, 在经历了这两年的事情之后, 笔者感觉自己真的已经很难再回忆起高中及以前的事情了, 那份热情似乎随着自己逝去的青春一起消失在了时间的长河里面.

在 2024 年暑假结束的时候, 笔者也去虹桥火车站送别了 jpp 同学. 那时候, 笔者也没想什么, 听说好兄弟要回家了, 就想着顺路去送一程. 在分别之后, 笔者又约上了自己高中时候一起玩东方的好友 492, 去人民广场逛了一圈. 这次笔者不像春游那次, 没有任何目的性, 基本就是两个人聊聊天, 聊聊其他高中同学的一些近况, 还去百联逛了一圈, 也去雾雨魔法店朝圣了一下, 随便点了一个饮品 (味道似乎还不错), 顺便吐槽了一下为什么店主的琴 1 弦断了 (后来才知道原来这是 kasumi 的 random star, 看起来笔者命中注定要入坑邦多利 lol).

在暑假结束回家之后的某一天, 笔者突然想要去学校拿一本书. 这时候正好 Wankupi 同学准备坐火车回家, 于是在某天早上, 笔者就和 Wankupi 同学于地铁站内见面, 在车门开关的这个短暂窗口期内, 完成了交接.

在国庆的时候, 笔者本来宅在家里, 这时候正好发现 hastin 和 Wankupi 来家附近玩, 遂一起出来散步玩了一下午, 去龙华那边吃了一顿. 说起来, 笔者在小学的时候每周都会去龙华附近的东二小学那边上桥牌课, 也见证了那边正大乐城从一片荒芜到建成一个繁华的购物中心的全过程了. 眨眼间, 10 多年就这么过去了.

总而言之, 尽管在学术上上做的不是很好, 但是 2024 年至少还是有不少 Shining Moments, 算是黑暗科研日子中难得的一抹光明了.

2025

2025 年初的寒假是笔者最压抑的一个假期. 笔者心理很清楚自己需要学一些东西, 但是已经完全没有力气再干下去了. 这时候, TOEFL 成为了笔者的救命稻草. 笔者可以全身心投入进去, 在一二月份那几周, 笔者什么都没做, 几乎完全扑在了准备 TOEFL 上. 这段与世隔绝的日子让笔者也彻底冷静下来了. 虽然 2024 年是笔者自认为浪费的一年, 但是至少在 2024 年末, 笔者在背单词上付出了不少的努力, 这也使得笔者很快的就获得了一个不错的成绩.

2025 年, 算是笔者科研的一个转折点. 凭借着给 sglang 写的一些 PR, 笔者对于 LLM inference 的各个细节都有了一定的了解. 在和 Zhiqiang 干完 HiCache 项目之后, 笔者又自己写了一遍 LLM inference 框架. 至此, 笔者才算是彻底理解 LLM inference 的几乎所有实现细节, 从 attention backend 到 model interface 再到所谓的 scheduler, 只有在自己亲手写完了 code 之后, 才对这些抽象的概念有了比较具象化的理解. 大概也是在这个时候, 笔者开始对自己的 research 重拾了一点信心. 主要的科研心得都放在了 前面这章, 这里就不过多赘述了.

这一年, 客观上来讲笔者在学习上下了比较多的功夫. 笔者阅读了大量的 source code 和 paper, 并且更有耐心读了更多的文档. 但是在科研之外的其他方面, 笔者可以说是全线溃败. 首先是身体上, 笔者这一年高强度晚睡晚起, 平均睡眠时间应该不会早于两点, 而且运动量几乎趋于 0, 以至于最近跑个步都会感觉气喘吁吁, 已经完全没有了 2024 年时候的健康状态了. 这一点其实真的非常痛苦, 笔者其实一直有意识到自己的睡眠已经完蛋了, 但是有诸多因素一直在阻碍着笔者的睡眠, 比如笔者经常会遇到一个 bug, 然后为了修复它笔者经常会在上面花费很多时间, 一旦进入状态, 再回过神来就可能已经半夜两三点钟.

遇到每个问题的时候, 笔者都希望能够 as soon as possible 的解决这个问题, 但是为什么呢? 有人在逼着笔者要这么做吗? 没有. 那笔者为什么这么做呢? 是因为心中的执念. 笔者很希望自己能够做好所有的事情, 希望证明自己能表现的很好, 害怕自己搞砸重要的事情, 不希望看到别人因为自己而失望 (因为笔者自己就经历过这样的时候), 担心因为自己做的不好而被责备. 但是客观的来看, all in 工作就能把这些做好吗, 并不能. 事情做的不好被责备, 很多时候并非是因为真的没这个能力, 而是因为无法达成自己的承诺, 导致出现了意外的偏差. 那为什么会做出自己都做不到的承诺呢? 因为兴趣, 或者是希望证明自己, 亦或者是不愿意承认自己做不到的这个事实. “把事情做到完美”, 这是一个非常荒谬的目标. 2025 年的几次小成功蒙蔽了笔者的双眼, 让笔者过于膨胀了, 误以为自己是超人, 以为自己有 “绝对的理性” 可以控制自己做到一切的事情. 但笔者错了, 自己不是超人, 理性也无法违背科学规律, 学琴的经历告诉了我们肌肉记忆需要长期的练习, 妄想用自己的 “理性” 来绝对支配自己的身体是不可能做到的. 事实上, 这一行为根本谈不上是 “理性”, 这是笔者自己的一厢情愿, 笔者没有勇气去面对现实, 只能通过幻想来让自己坚持下去. 一个虚幻的, 无所不能的 “我”, 成为了笔者过去一年追求的一个目标.

这样的想法其实在笔者心中扎根已经很久了, 它已经深入了笔者自己的生活习惯, 以至于笔者直到今年写这个总结的之前, 都没有意识到它. From long long ago, 笔者其实就有点活在梦里, 从初中的时候幻想自己能够做出很酷的事情与众不同, 到高中的时候幻想自己能考上好大学或者做音乐, 再到现在希望做出非常 solid 的 research 能够中顶会. 笔者经常会幻想自己能够拯救一切, 能够成为黑夜中的摇曳的那点星光, 希望自己能够让身边的人都满意. 但现实呢? 笔者是给身边人带来麻烦最多的人, 所谓的 “创新” 在很多时候只是一坨为了证明自己而做出来的垃圾. 这是付出以最少努力获取最大成功的 “臆想”, 它让笔者在过去的几年里非常的浮躁, 为了最快的达成某个目标而做出各种事情.

无论如何, 这份念想最后吞噬了笔者, 笔者在过去的一年变成一个 all in 工作的人, 在工作之外的其他方面彻底的崩溃了.

首先影响最严重的可能是笔者对于东方的喜爱. 在 2025 年之前, 笔者一直是一个 Touhou 的重度爱好者, 电脑/手机相册里有无数东方美少女相关的图, 也经常混迹贴吧/知乎/Q 群等大大小小的论坛. 在春天的时候, 笔者也约自己的一位好友 mxy 出去拍了一圈 Lily White, 那一天两人从交大逛到了隔壁华师大, 再逛了回来, 拍了很多照片. 在夏天的时候, 笔者也带着 Lily 出去暑研了一圈, 拍了一圈照片 Lily White 在美国.

神秘制作花絮, 其实每一秒都在担心 Lily 掉水里

然后是其他的爱好. 笔者算是半个吉他爱好者, 大学一直有在练习, 也看过好几次演出. 但是在 2025 年的时候, 笔者完全没有了当初的那份热情了, 在今年上海场的 Galneryus live, 乐队的表现比去年好多了 (毕竟去年全员感冒), 但是笔者一直没有像去年那样进入状态, 没有再次体验到那种 “心动不已” 的感觉. 这份热爱可能依然存在笔者的心中, 但是笔者好像没法再像过去那样, 完全沉浸在其中了. 这一症状和笔者对于东方的态度是差不多的, 同样的也作用于笔者对于音乐的喜爱.

精彩的演出, syu 的 guitar 太稳了, 从头秀到尾

还有就是 Minecraft. 笔者曾经是一个非常痴狂于 mc 的人, 在 2023 年的时候也试图组织班里同学一起玩 关于 Minecraft Impart 服务器, 虽然最后也是整的一地鸡毛, 但是笔者至少还是乐在其中. 在后来, 笔者也经常和室友 hsfzLZH1 平时一起玩 mc. 但是在 2025 年后, 笔者是一点玩的想法都没有了. 现在打开电脑, 笔者甚至不知道还能玩什么游戏.

总的来说, 2025 年可能是笔者大学生涯中最重要的一年. 在这一年里面, 笔者坚定的走上了 MLsys 这条不归路, 没有了 2024 年时候的犹豫和懵懂, 开始步入了真正的深水区. 笔者认识了许多有趣的人, 也从他们身上学到了不少, 收获很多. 但是代价呢?

身处迷茫, 但是依然选择了前进, 这可能是笔者 2025 的基调. 虽然心中充满了不安, 各种客观条件和笔者心中的兴趣, 依然驱动着笔者勇敢向前, 2025 也是大学以来成长收获最多的一年.

最后再放一点笔者瞎拍的照片, 主要是围绕着月亮和星空. 第一张是笔者在美国和 yls 学长出去玩的时候拍的, 那一天正好是血月. 第二张是离开美国前一周拍的, 那天回家路上由于汽车乱穿马路差点被撞, 在大脑空空的后半程旅途中, 看到了天上明亮的满月, 于是拍下了第二张照片. 第三张是回国后拍的, 那时候似乎还在国庆节. 第四张是在申请周的时候, 笔者某天晚上在外面散步, 突然看到的璀璨的星空. 笔者几乎从来没有在上海这样的大城市里看到这样的景色, 于是便拍下了这张. 最后两张是 2026 年初拍的, 前后正好覆盖了 1 月一些非常重要的事情, 后一张应该是笔者回家之前最后拍下的一张月亮. 或许只有在仰望星空的瞬间, 笔者才能暂时忘记手中的工作, 思考自己作为一个人类生存的意义.

未来

2026 年初还是有不少好消息的. 笔者首先是 MLsys paper 拿到了 3 3 4 4 的正分, 然后又拿到了 Christos, Tianqi 还有 Stephanie 的 offer, 前两天 OSDI 开奖, hicache paper 也中了. 在 SGLang 社区这边, 自己也写了不少有趣的 PR, JIT kernel 也是欣欣向荣, radix ark 那边也有实习的机会. 过去的一切努力似乎都有了不错的汇报.

但是, 笔者感觉自己过的并不开心. 笔者觉得自己的本科生涯, 几乎是在为着自己不喜欢的事情奋斗. 想着某件事情, 但是却去做了另一件事, 这种错位感贯穿了笔者的大学生涯. 从一开始的自负带来的无知, 到后面一厢情愿的去拼命干活, 到头来真的得到了是自己想要的吗?

笔者在 BanG Dream 和梦想 中提到, 自己其实非常希望能够像是 poppin’s party 的少女那样, 成为光彩耀人的存在. 除了这个, 笔者也真的很希望能够多和身边的朋友们多出去玩一玩, 珍惜在一起的每一分每一秒. 但是实际上呢, 日常的生活如同流水一般的无聊, 而在 2025 年, 笔者也经常为了 “工作” 而放弃了和朋友一起出去玩/吃饭的机会, 为了 “工作” 放下了吉他在很长一段时间里没都几乎没有心思去练习, 有无数想做的事情, 但最后却都因为各种原因而放弃了. 没有 kirakira, 没有 dokidoki, 即使是笔者在做的 MLsys, 在最近高强度维护社区, 最初的那份新鲜劲已经过去, 疲倦感迎面而来, 笔者觉得自己有点有心无力.

除了自身的疲惫, 年初的这波 Agent 浪潮也给了笔者很大的冲击. 笔者过去一直是坚定的传统 coder, 除了 copilot 之外, 基本都是自己手写代码. 笔者曾经非常享受自己理解并写出漂亮的代码 (一个副产物就是 mini-sglang), 写代码的过程也是笔者加深对于整个 system 理解很重要的一个环节. 笔者在 2025 年暑期尝试过 cursor, 但是写出的代码几乎不能看, 而且当时 LLM 对于代码内容的理解还非常差. 转眼间, 半年过去了, 笔者在最近的一个项目中尝试了一下 claude opus 4.6 这个模型, 结果这个模型的表现是非常震撼. 它只用了十几分钟, 从笔者写的近千行代码中找到了一个非常隐蔽的同步 bug; 也只花了十几分钟的时间, 搭出了一个还不错的框架. 对于各式各样的任务, claude code 可以称得上是出色. 它震撼了笔者, 也给笔者带来一丝不安. 笔者长期以来一直都在做一些杂七杂八的活, 比如 code clean up, 比如写简单的 memory-bound cuda kernel, 这些任务在即将到来的 Agent 时代可能完全称不上问题, 笔者觉得自己的生态位从这个世界上即将消失, 如同一个传统工匠发现自己的手艺即将被现代机床取代一般.

这一切或许还是因为笔者自己的观念, 或者执念吧. 在大学前几年, 笔者一直执着于 “打败身边的人”, 这使得笔者总是在和身边的人比较, 也总是急着想要凸显自己, 这使得笔者在 2023 ~ 2024 的学习/科研之旅非常的痛苦. 在 2025 年, 笔者虽然很大的放下和别人竞争的想法, 但是为了能够让其他人满意, 证明自己做得到有这个能力, 不愿意承认自己做不到的事实, 于是咬着牙在 MLsys 这条路上走到了最后. 现在回头看, 这里面既有泪水, 也有很多欢笑, 但无论如何笔者都无法再想象过去的自己到底是以如何钢铁般的意志坚持了下来. 回到那个经典 “Why PhD?”, 这个笔者在申请前被很多学长问到的问题, 笔者为什么要这么做呢? 如果到头来只是为了满足别人、证明自己, 那么这样的日子永远不会有尽头. 更加可笑的是, 即使是为此付出的努力, 笔者甚至也不愿意承认. 在面对别人的询问的时候, 笔者只会敷衍的回答 “啊, 没什么, 随便搞搞, 很简单的” 之类的. 口上说着 “我不要”, 但是心中却比谁都想要. 又当又立, 维护着自己可笑又脆弱的自尊和面子.

写了这么多, 笔者只想坦诚的面对自己的内心. 在过去和现在, 笔者一直是一个非常拧巴的人, 一方面特别特别的渴望自己能够被关注, 希望能够和大家成为朋友, 也希望自己能做出非常伟大的事情. 但是在行为上, 笔者心口不一、满嘴谎言, 对身边人维持一个 “看起来什么都不在乎、轻松就能成功” 的 “天才” 人设, 在工作的时候则又呈现出 “什么都能干, 无所不知的” 样子. 还记得大三的时候, 笔者在当助教折腾某件事情的时候, Wankupi 同学不经意间吐槽了一句 “你只是自己一厢情愿的在做, 其实根本没有人在意”. 这句话当时给笔者留下了深刻的印象. 事实上, 很多事情确实是笔者自己的臆想, 即使有些事情做不到, 别人也不一定会怪你. 很多时候即使刻意的去表现, 但实际上确实是无人在意, 只是自娱自乐罢了. 这 somehow 让笔者联想到了 魔法少女小圆 里面的沙耶香, 选择了为了与自己私心不同的目标而战斗, 最后也在绝望中变成了魔女.

这样的日子我受够了, 笔者希望自己未来能够诚实, 不知道就是不知道, 做不到就是做不到, 在一个合理的范围内尽力就可以了. 即使是希望成为闪耀的人, 也不是什么丢人的事情, 这份逃避、恐惧或许来自笔者童年的一些创伤, 笔者希望自己能够克服它们.

也正是因为这些所思所想, 笔者也开始能够理解其他人. 笔者过去是一个很 mean 的人, 经常会觉得自己 “厌蠢”, 会觉得身边有些人太摆烂了, 也经常对别人会品头论足. 或许只有自己碰壁了, 才能理解并同情其他的人, 说起来也挺惭愧, 但确实只有亲自感受到的痛苦才是最好的教训. 每个人都会有自己的选择, 所以尊重他人.

或许一切其实都没有意义, 正如生与死的循环、一切自然规律. 想让自己开心自然可以开心, 想让自己难过也可以难过. 很多时候并不是 “不能理解”, 而是 “不愿意去理解”. 刨根究底的话, 一切都是可以被解构的. 作为一个 “科学” 爱好者, 笔者最想知道的就是 “为什么”, 但是如果永远的探究下去, 那终会抵达无意义的彼岸, 这可能也是为什么科学的尽头是宗教吧.

不过一个不可忽视的点是做事情本身的乐趣, 在过去的四年里面, 笔者为了达成一个目的会急着做事, 甚至会忽略自身的感受. 作为一个人类, 不同于机器的一点可能就在于现实体验 (虽然随着科技发展, 这个可能不一定为真了), 化学物质能够给人带来真实的感觉. 如果不只是为了达成目的, 而是享受过程, 那么即使结果并不那么完美, 或许也不会痛苦, 甚至可能更好的达成目标. 在本科四年里面, 笔者最开心的时候莫过于在家里瞎倒腾, 练习吉他的时候. 虽然没有水平没有技术, 但是笔者依然可以乐在其中, 因为可以感受音符之间的情绪张力, 而这也给了笔者前进的动机, “希望能表现出特殊的情绪”. 即使自己现在做的并不好, 也不妨碍享受音乐本身, 这可能也是为什么叫 “play” music.

最后的最后, 笔者希望未来自己能够找到一个坚持做下去的理由, 无论是读 PhD 还是去业界干活, 然后坚定的向前. 虽然笔者无比渴望一个安定、长久的归属, 能够把自己喜欢的事情一直做下去, 但是面对变化的时代和改革的春风, 笔者必须前进. 有时候笔者是真的希望, 世上能存在一个安宁的幻想乡, 能让笔者停下来在无边宇宙的一个寂静的角落独自哭泣.

但是 我又想尽量 稍微多一点点

终章

写了很多, 基本把笔者大学这四年所见所思都记录了下来, 也掺杂了不少的个人情绪. 虚无几乎要把笔者吞噬, 糟糕的经历笔者是一次都不想再回忆. 但是纠结于过去的失败并不能改变什么, 逝去的青春永远也不会再回来. 抬头仰望天空, 重新找回自己作为一个人类, 活着的意义. 放下自己的一些执念, 做好手中的事情, 或许就够了吧.

能不能去救救那个没有被心中的执念裹挟的那个笨蛋的我

最后, 感谢过去四年陪伴着笔者的所有同学、老师、以及家人们. 感谢 WankupiHastin 同学容忍了我四年以来的各种糟心的玩笑, 陪笔者度过了不少难忘的时光; 感谢室友 hsfzLZH1 陪笔者度过了大学最多的时间, 一起玩各种杂七杂八的游戏; 感谢 RadioHeadingjpp 同学以及老登 whcui 陪笔者度过了最自闭的一段时间; 感谢 Conless 带笔者走上了 MLsys 这条不归路, 以及带笔者认识了一车领域大神; 感谢 Zhiqiang 带笔者在 Stanford 暑研, 讨论了不少有意思的 research idea; 感谢 Lianmin, Yingliangsheng 让笔者能通过 sglang 社区接触到 LLM infra 最前沿的一批人; 感谢无数陪伴在笔者身边的同学、老师、家人, 以及虽远在美国但依然给予笔者帮助的大家.

我真的非常非常喜欢大家, みんな大好き!