Introduction
离毕业已经过去9个月了,终于得以端坐在大洋彼岸计划中的公寓的书桌前开始写这篇拖欠已久的文章。
人生每过一个阶段,就写下些什么,是 laekov 形成已久的惯例。 而读博这一篇章在结束时曾经尤为令 laekov 感到激动而想要进行一番记录。
在 laekov 并不长的一生中,在一个校园里度过四年之后,再选择继续待五年甚至可能是更长的时间,并不是一件容易的决定。 Dr 这短短两个字母的前缀,是曾经崇高的追求,也带来迷惘和痛苦。 它让 laekov 晚了一些年真正地进入社会,或许少了一些经历,也或许多了一些成长。 当这一切结束于一场并不那么隆重的毕业典礼时,当匆匆离去的脚步在不经意间拉开了更精彩世界的帷幕之后,曾经的平静、单纯显得多么珍贵。 而曾经的痛苦、愤怒、迷茫终将化为浅浅一笑。
这一切建立了一个人类对于这个社会最初始的认知。 它改变或者说塑造了这个人的愿望、行为。 老师总是说,PhD 最重要的是培养一个人做研究的能力。 一个人自己的一段经历以及自身的脱变何尝不是一个重要的研究对象呢?
Motivation: 这一切是怎么开始的
五年前 laekov 对读 phd 这个决定的产生进行了详细的描述。
一言以蔽之,就是对科研产生了憧憬并决定花五年的时间来更进一步。
曾经的 laekov 认为科研是一件崇高的事业,因为科研是在扩展人类的知识边界,这听起来是多么伟大而有意义的事呀! 因为 laekov 认为人的生命是没有意义的,因为宇宙是没有意义的。宇宙从诞生到消失,无可改变,甚至一切也许就是写好的剧本。 在这样的背景下,努力奋斗或许本身就是一个伪命题。 而在这无聊的世界中,或许唯一有意义的事,不就是“扩展认知”这一件吗? 来到这个大千世界,在人生有限的几万天内,去做一些无人做过的事,发现一些无人发现的角落,用一篇篇 paper 构筑一个属于自己的世界。 或许这些研究并没有作用,或许只是一个无聊的小 trick,但当说起它们的时候哪怕有一点点的令人兴奋也是一件好事情呀。
laekov 选择了并行计算这个方向,原因或许也不那复杂,只是因为从 2017 年开始 laekov 就开始了,到 2019 年的时候已经是一个有一些些经验的“熟练工”了。 相比起彼时方兴未艾的热门方向“机器学习”,laekov 认为做出一个实际可用的 system 并且在成千上万的计算资源上高效运转起来是最能带来成就感的事情。 laekov 曾经的爽点就在于看着 scc 集群上每台机器的一百多个 cpu 核在 htop 里一片绿的场景,甚至是使用特殊的绑核策略绑出一些神奇的花纹。 相比起来,性能优化的工作是确定的,被完好定义的,有上限的。这件事激活了 laekov 从中学开始的竞赛基因。 另一方面,或许 laekov 对科研和工程这两件事的看法是两者是需要结合的。相比于纯粹的理论上的贡献,laekov 更想看到在有生之年科研成果能够被用于真实的世界,产生真正的价值。 因此,虽然哪怕 system 这个方向更强调 engineering 与 fancy idea 的结合,而并非一个那么有理论深度,那么数学公式满天飞的领域,但 laekov 依然选择了这个方向。
当然了,至于在哪里读 PhD 这件事,laekov 其实是被命运的齿轮转动着引导到了意想不到的地方,以一种神奇的姿势站在了时代的浪潮之巅。 在 2020 年,laekov 原计划是前往大洋这边的阳光下的 LA 来进行 PhD 的旅程,但因为 COVID 和川总的 travel ban,不幸滞留在了北京。 当时 laekov 手里甚至有或许能用的签证,只需前往第三国中转两周,便可踏上新的土地去完成自己的梦想。 然而或许是冥冥中的指引(或许是不想扛着自行车去中转),laekov 选择了在原地先打工过度,然后又在绝望的打工过程中收到了来自本科母校的召唤,于是回到了 PACMAN,并且最终在这里又度过了五年。
Methodology: 我好像在做科研
贵系对于 PhD 的获取条件是明码标价的:至少一项被“顶会”(基本赞同于 CCF A 类会)发表的一作工作。 尽管在本科时接受了一些基础的训练,但 laekov 对“科研”这件事的理解是在逐步形成的。 laekov 最开始认为科研就是找到一个问题,提出一个解决方案并且写一些代码来证明这个方案,把方案写清楚,就称得上是一个成功的科研项目了。 在本科时的 Prague 这篇文章写作的时候,laekov 就直接地践行着这个理念。然而,彼时的 laekov 并未意识到背后还有更复杂的来龙去脉。
直到昨天 laekov 才恍然意识到,“创新”是学术界所 appreciate 的核心价值,但 laekov enjoy 的或许只是“创造”这个过程罢了。 用一个纸箱搓一个柜子,或者是写出什么粗糙但可以满足某种需求的网页,显然并不足以发一篇 paper,但对于 laekov 来说,这和写系统发论文带来的成就感是并无太大差异的。 这也许是 laekov 在读博前混淆所以产生了一些虚假期望的原因。不过没有关系,这不妨碍以下罗列的这些经历成为 laekov 宝贵的回忆和人生经历。
Starting From FastMoE
laekov 的第一篇论文开始地异常的顺利。 在博一上半学期快要结束的时候,2020 年末,laekov 被派去和算法组的同学合作解决一些他们发现的模型训练效率问题,这就是 FastMoE 这个故事开始的地方。 彼时 Bert 和 GPT 才刚刚在业内为众人所知。谷歌已经开始研究如何扩增 LLM 的参数量来获取更好的性能,同时又想要节省计算量。“稀疏”戳中了 laekov 本想研究 GNN 的神经。 在支持算法同学研究 MoE 模型的路上,laekov 把自己的系统命名为 FastMoE,代表着这是一个快速(写得快)的实现,旨在赶紧支持合作的算法同学的科研需求。 这个系统的初版甚至被用于“并行计算”这门课的期末作业。laekov 为了实现迅速,舍弃了 torch 里推荐使用的 NCCL,而是在 MPI 的基础上搓出了第零个版本。 为了使用那个版本的系统,用户不能使用 pip 安装 torch,而是需要在装好 openmpi 开发环境的系统里编译 pytorch。 后来的故事是 laekov 寒假选择了不回家留在北京,在智源的清华科技园二楼的办公室里写完了 NCCL 版本的开源的 FastMoE 的初版,甚至还“不小心”联系了公关能力远超 PACMAN 水平的智源团队来 PR 这个系统。
然而 FastMoE 这个项目只解决了从“没有开源系统可用”到“有办法训”的路径。相比于 paper 所需要的 novelty 还相去甚远。 彼时 laekov 已经规划好了一些可能的方案,而 FastMoE 这个系统的开源和 arxiv 只是为了给自己提供一个可比较的 baseline。 回忆起来会觉得 laekov 当时的设计能力强得可怕,哪怕手里的只是一个非常基本的,没有一点创新的,只是解决工程问题的项目。
无独有偶,在 FastMoE 的 arxiv 论文公开后仅仅三天之后,facebook 就公布了他们的同样基于 pytorch 的开源的 fairseq。 尽管在对 capacity 的理解等方面 fairseq 和 FastMoE 不尽一致,但就是这争分夺秒而来的 3 天的优势,堪堪让 FastMoE 坐稳了“全世界首个基于 PyTorch 的开源 xx”这个虽然定语有点长但实实在在是世界首个的位置。 对于 laekov 来说,哪怕 paper 还没有发布在某个 CCF A 类会议接收,但这样毫离之间的小小成功也是令人振奋的。 也或许当今 AI 模型之间激烈的竞争从那时起就埋下了小小的种子?
八卦炉:Is scalability everything?
FastMoE 是带着更多的目的诞生的。八卦炉也是其中之一。
那是 2021 年的春节前,laekov 跟着老师加入了一个神奇的四方会谈,目标是冲击一个“世界最大”规模的 LLM 预训练,具体一点,是要去冲击戈登-贝尔奖(GB)。 这个奖每个颁发给在 HPC 领域干出“最大”事情的团队。从前的 GB 通常颁发给大气海洋模拟这样的“科学”应用,当然也有如 2018 年这样把 Exascale ML 应用到气象模拟的工作。 而此次的 LLM 应用(甚至是多模态的 LLM)更像是一场 CS 界自己的狂欢。而这个模型甚至并不需要被真正训出来吐字。只要有模型方作为“科学”的一方进行背书即可。
实际上,在 2021 年初这个节点,要在短短两个月之内完成这样一个项目,其难度是巨大的。 因为这台机器并非基于 NVIDIA 生态,而是用了一套真正自主研发的众核向量指令架构,从算子到 pytorch 都还是一片平地。在些基础上搭起 LLM 训练框架的高楼,是一项艰巨的工程挑战。 幸运的是 PACMAN 派出了十多人的可以“自动驾驶”的研究生团队(指可以在导师不在的情况下自主组织起来合作进行工作),以及靠谱的合作方,堪堪在 DDL 之前点燃了这个巨大的十万卡量级的“丹炉”,并完成了工作。
这个工作所达成的规模在现在来看依然是惊人的。时至今日,产品级的 LLM 总参数规模还徘徊在 ?00B 规模,而彼时八卦炉所炼化的最小的模型也是 1.75T 量级。1?T 的模型也达到了相当可观的 MFU。 而最大的 1??T 的模型甚至把 EP 的规模推到了十万卡超大 EP 这个水平。哪怕是在五年后,这个数字也是极为惊人的。
虽然在工程上 laekov 所在的团队达成了巨大的成功,但这个模型除了 loss 可以降以外,并没有收获到任何“模型能力”上的效果,也没有所谓的“学术创新”。GB 奖项的冲刺失败了,而合作团队也在投稿后各奔天涯了。 今天很难再去追究当时为什么甚至没有获得一个 GB Candidate。或许是同期的其它工作更加亮眼,也或许是“LLM”这件事并不符合当时 SC 评委老登们的 taste。 但从 2026 年的视角来看,没有继续在那样一个平台上去实验,去探索如何让 LLM 训练变得更稳定,能力变得更强,是一件更加令人唏嘘的事情。 也许是没有在正确的地方加上 grad norm,也许是训练数据质量过低,也许是没有人有拍板去坚持训练这样一个模型。
历史无从假设。不过,聚是一团火,散是满天星。千问和豆包、DeepSeek 和 GLM,背后都站着当时那个团队里某些成员。也算是“那一把火”持续地烧穿了这个时代吧。
左脚踩右脚上天的 FasterMoE
从四月的青岛回到北京,laekov 就要开始为自己毕业路上的第一个里程碑:一篇顶会论文开始奋斗了。虽然彼时 laekov 还在读博的第一年。
FastMoE 的 arxiv 论文和 GitHub 开源版本获得了不错的关注,八卦炉也用上了 FastMoE 作为 EP 的基础,这为 laekov 的这篇论文进行了充分的铺垫。 目标是 PPoPP 这个注重“并行”的会议,所以 laekov 瞄准了 EP 的性能优化,并第一次完整地自己总结出了三个创新:负载均衡、计算通信重叠、通信量优化。 这一切对比的基准则是几个月前开源挂 arxiv 的 FastMoE 和靠 FSDP 训 MoE 的 DeepSpeed。
或许成功的论文各不相同,但 PACMAN 投文章的结构千篇一律:一个问题,三个挑战,三个创新点,总结成一句话,加上 solid 且 visible 的 speedup。 令 laekov 印象深刻的或许是和葡萄牙兄弟 Tiago 的跨时区激情合作,或许是被封在学校不准出去但是把夜熬穿在广州超算集群上占 64x V100 做实验,或许是一边在实验室投影看东京奥运会一边改论文。 奇迹般的,laekov 在那个晚 8 点 DDL 前的最后两小时跑出了一条还算好看的 loss 曲线并贴进了论文里。而在等曲线的时候感觉论文已经改无可改,于是打开了 GTA 还被老师抓了现行。
暑假过去,投稿完成。十月,出分,还不错,rebuttal。十一月,在生日前后的某天,收到了开头为 Congratulations 的邮件。Artifact Evaluation, Camera Ready。 做科研仿佛是一件很顺利的事情,唯一的缺憾是 2022 年疫情原因没能去韩国线下参加 PPoPP,亲自现场讲自己的论文。 然而或许 laekov 仍未明白为什么这篇文章会如此顺利。
laekov 在做完 FasterMoE 之后发现 MoE 尚未被大规模应用。EP 也并非必需品。于是在投完 FasterMoE 后的2022 年,laekov 将注意力转向了 LLM 以外的方向。 从 2026 年的视角,这一决定无非是与时代的浪潮背道而驰。然而 2022 年的 laekov 甚至不愿意说自己是搞 AI 的,而希望做更“有意思”的负载,更“科学”的应用。 这里也无论对错,只是总结规律,当时代的潮水还停留在海面之下暗流涌动的时候,或许弄潮儿还没能感知大浪即将到来,于是选择了胡乱划水罢了。
DLRM 的折戟沉沙与屡败屡战
TBD
FastDecode: Good idea 毁于拖延
Implementation: 开个公司试试?
TBD
Evaluation
和五年前的记录进行一个逐行对比。
laekov 本科期间换了 4 个新手机, 0 个新电脑.
laekov 研究生期间换了 1 个新手机,自费买了 2 台电脑,领用了至少 6 台办公用电脑。
laekov 本科期间去过 4 次美国, 2 次德国. 两次去德国都在 Frankfurt.
laekov 研究生期间去了 2 趟美国,1 趟英国。
laekov 一共参加了 7 场超算比赛, 其中 5 场是正式队员, 4 场由 laekov 主要负责被面试.
laekov 研究生期间去超算比赛看本科小朋友们玩过。
laekov 本科期间一共发表了 2 篇论文.
laekov 研究生期间共发表了 9 篇论文,其中一作 CCF-A 类 2 篇。总引用量 600+。
(根据学校统计) laekov 一共吃过学校的 15 个不同食堂中的 14 个.
laekov 研究生期间学校新开了双清食堂,并吃上了。对本科时没刷上卡的荷园食堂进行了补档。但由于各种原因没再去吃过北园南园融园。
laekov 本科期间拥有过 13 辆自行车, 其中包括 6 辆公路车 (小绿, 大彩, 小灰, 蓝车, 大紫, 大橙), 6 辆通勤车 (黑色卧凤, 大绿, 成都死飞, 大蓝, 大白, 大粉), 1 辆山地车 (大黄).
laekov 研究生期间购买了 4 辆自行车,其中包括 1 台公路车(老六),1 台软尾山地车(大大紫),2 台通勤车(大青、大黑)。
laekov 在 4 个国外城市和 7 个国内城市骑过自行车 (不少于 40km).
laekov 研究生期间没在国外骑过车,国内除了北京外只在两到三个城市骑过车。
根据 laekov 的 strava 记录, 从 2017 年到 2020 年 6 月 24 日, laekov 一共骑行了 12884.9 千米, 海拔爬升 133472 米. (相当于从海平面爬了15 次珠峰?)
strava 数据有点难统计了,但 laekov 每年都还在骑公路车 3000 km 以上(除了 2024 年没达到 3kkm),总爬升应该比本科多吧。
laekov 本科期间完成了 4 场铁人三项比赛, 2 场半程马拉松比赛, 1 场越野跑比赛. 参加了 3 次自行车比赛, 其中有一次因为下雨太冷退赛了, 另有一次因为摔断了手而 DNS.
laekov 研究生期间没有完成过铁人三项比赛(DNS 一场),蹭了一场半马,参加了 1 场越野跑,4 次自行车比赛并且都完赛了。
除此之外,laekov 在研究生期间开辟了赛车的新方向。 代表学校在卡丁车比赛夺冠一次,在模拟器比赛获得亚军一次,在 hipole 平台共参赛 98 场,11 次登上领奖台,但从来没有拿过冠军。
laekov 在研究生期间先后在 6 家单位办过实习。