学到现在,我能勉强读顺自己写的那几十行。就到这。
再往下——框架里到底发生了什么、编译完变成什么、显卡上跑的到底是什么东西——我基本靠猜。
所以看到 doubleAI 那个 Maxwell 的时候,我第一反应不是「好强」。
是有点后背发凉。
它不是帮你写代码的那类工具。它蹲在程序跑起来的那一层,盯着程序执行、看数据从哪流到哪、哪一段在空转,然后直接把底下那份二进制改掉。源码一个字都不动。它要的是同一段代码在这台机器、这批数据上能跑到的最快。
我盯着「源码不变」这几个字看了挺久。
因为源码是我唯一能看的东西。要是连这个都不用看了,那我这几个月学的算什么呢,我说不上来。
那组数我看了两遍。38 倍的数据流水线、4.25 倍的推理 kernel。说实话这些数字对我来说太抽象了——我连自己代码慢在哪都指不出来,38 倍是多快,我完全没有体感。
真正让我坐直的是 Whisper 那个演示:RTX 4090,Whisper-small,180 条冷启动转写,106 秒对 49 秒,转出来的文本一模一样。
冷启动这个词戳到我了,因为我自己跑这类东西最烦的就是等它加载,等着等着就去刷手机,回来发现还在转圈。49 秒我也不觉得多快,但至少不用等到我去泡个面回来它还在转。
还有个 CPU 上的例子,NetworkX 的 betweenness centrality,跑 15 次,61 秒变 17 秒,结果一致。这个我甚至想自己试一遍,因为我手头就有个图脚本,跑起来要等很久,久到我习惯性开另一个窗口干别的。
import time
t0 = time.time()
bc = nx.betweenness_centrality(G)
print(time.time() - t0)
我量了。量出来一个数。
然后我就卡住了。我不知道这个数算快还是算慢,也不知道我这个图跟人家那个图是不是一个量级。数字有了,判断没有。
是不是有点好笑——工具都进化到改二进制了,我这边连「我的代码慢不慢」都答不上来。
视频那个例子更狠一点:两卡跑 4K 生成,一条从 250 秒到 134 秒,1.87 倍,肉眼看不出差别。1.87 比 38 小很多,但我在意的不是倍数。是材料里那句——那条流水线本来就已经端到端编译过、已经跨卡切分、attention 还是手写的。
一个已经被手工抠过好几轮的东西,还能被找出十几处要改的地方。
我看到这句的时候想的是,那我平时那种「跑起来就行」的代码,底下得浪费成什么样。
还有个细节我一直没想明白:它们把 pandas 的 kernel 整个重写了一遍,为了适配现在的硬件。我每天 df.groupby(...).agg(...) 写得飞起,从来没想过底下那层是几十年前定下来的形状。现在有人告诉我那层也能换,我的感觉有点像住了很久的房子,突然被告知承重墙可以动。
让我稍微安心一点的,是每次替换都得带一个等价性证明,覆盖所有输入、机器能查的那种。有些证明还是有条件的,条件不成立就退回原来的代码。
if 前提不成立:
走原代码
else:
走证明过的那份
这个 guard 是我唯一能凭常识理解的部分。就像有人跟你说:这东西我换过了,但要是情况不对,它会自己换回去。
问题是,那个证明我读不懂。
所以「带证明」和「不带证明」,对我来说体感差别其实不大,都是我说了不算的东西。这跟上个月那种「代码跑通了但我讲不出为什么」的心虚是同一类,只不过这次更彻底——那次我至少见过那行代码,这次连代码我都没见过。
写到这我停了一下,觉得自己前面有点矫情。
因为我手上其实早就在干同样的事。我打开 Cursor,跟同桌说「把这段改成异步」,它改了,我跑两个 case 看着对,就收了。我也没有逐行验证它改对了。
区别只是:它改的是我勉强能看懂的那一层,Maxwell 改的是我看不懂的那一层。
这个区别到底有多大?我到现在也说不太清楚……
可能很大,也可能只是我心里那点「至少我见过」的安慰。
顺便,我查了下这名字的来历。1867 年麦克斯韦设想过一个小东西,负责按速度快慢把分子分拣开,让熵降下去。一个专门做分拣的、假想出来的角色。给一个在指令层面挑挑拣拣的程序起这个名字,我觉得挺妙的。虽然这个联想是我自己加的,人家未必是这个意思。
他们自己的说法是跟 coding agent 互补:agent 负责把程序写出来,Maxwell 负责机器怎么把它跑快。
这句话我看了好几遍。因为我这几个月学的全是前一半,怎么把话说清楚、怎么让同桌写出我要的东西。后一半我压根没碰过,甚至不知道从哪开始碰。我连「这段为什么慢」都答不上来,谈什么让它更快。
还有件事挺扎人的。它们说搜索了一天,在 SOL-ExecBench 那批 Blackwell kernel 上打赢了九成的 NVIDIA PyTorch 基线;顺手还把 cuGraph 做了个即插即用的替换,平均快 3.6 倍。
我花一天一般只能搞明白一个报错。
这种对比不能多想,想多了容易不想学。跟三周前的我比,我现在至少能看懂那个报错在说哪一行了——就这么点进步,我知道听起来很可怜。
还有个很实际的事:早期访问要申请,申请了也不一定有,不承诺什么时候发、不承诺性能、不承诺价格。
所以我上面写的这些,都只能当「看到」处理,不能当「用上」处理。
我现在的下一步特别土:把自己那个跑一晚上的脚本,一段一段掐表,先搞清楚时间到底花在哪一行。
要是连这个都指不出来,那底下那一层被谁改了什么,我也只能点头。
评论区蹲一个大佬,有没有人真的申请到早期访问、真跑起来了?想听一句实话。
