开源社区开始"内卷"
2723次提交。
432位贡献者。
这两个数字放在任何开源项目里都足够炸裂,但PyTorch 2.11的发布让我注意到的不是数字本身,而是数字背后那个正在加速的信号——AI基础设施的迭代速度,已经快到让人看不懂了。
说实话,PyTorch这种版本发布我以前是扫一眼就过的。但这次不一样。2月刚发完2.10,3月底直接扔出2.11,发布节奏从季度直接改成"两个月一次"。
这个曾经以稳定著称的框架,现在开始用互联网产品的速度在迭代了。
Hopper和Blackwell背后,藏着英伟达的"阳谋"
先说最硬核的部分。
PyTorch 2.11原生支持了FlashAttention-4后端,适配的是英伟达的Hopper和Blackwell架构。评论区有人补充了一句特别关键的:支持SM100 GPU,但不包含SM120——也就是消费级的5000系列。
这意味着什么?
意味着PyTorch团队做出的选择:我的优化只服务数据中心级GPU。这也不算傲慢吧——真正的大模型训练,没有人在用消费级显卡硬扛。
FlashAttention-4这个后端带来的加速效果是1.2倍到3.2倍。注意,这是相对于PyTorch自己已有的Triton实现来说的。换句话说,PyTorch团队觉得Triton不够快了,自己下场写了更快的内核。
一个细节值得玩味:这个功能目前还标注着"API-UNSTABLE"。也就是说,这是个实验性功能,但PyTorch选择在这个阶段就发布出来。为什么?因为整个行业等不及了。大模型训练的成本高到吓人,任何一点性能提升都是真金白银。
分布式训练的"最后一公里"被突破了
第二个让我眼前一亮的功能:Differentiable Collectives。
这个词听起来很学术,但翻译成人话就是——分布式训练现在可以自动求导了。
分布式训练是训练大模型的必经之路,但过去有个很麻烦的问题:跨GPU通信的操作没办法参与梯度传播。你要自己写自定义的autograd函数,写得人头秃。
PyTorch 2.11把这个痛点给干掉了。
官方说法是"significant advancement for distributed deep learning research"。我翻译一下:以后做分布式训练研究的人,可以更专注在模型本身,不用跟底层通信细节较劲了。
这对谁最有用?做MoE(混合专家模型)的、做大规模预训练的、搞分布式强化学习的。这波人最近正在疯狂扩军。
苹果和英特尔,都被"招安"了
除了英伟达,PyTorch 2.11对其他硬件厂商也敞开了怀抱。
MPS后端(也就是Apple Silicon)的Operator覆盖范围大幅扩展,新增了log_normal、cauchy、geometric这些分布函数,还支持了erfcx和grid_sampler_2d的全模式操作。更实用的是异步错误检测——以前MPS报错经常让人一脸懵,现在能精准定位到是哪一行出了问题。
英特尔这边搞了个XPUGraph,允许用户把一系列XPU操作捕获成执行图,然后反复复用。这招直接减少了CPU的开销,kernel启动和Python运行时的损耗都被压下来了。
一个有趣的观察:PyTorch对非英伟达硬件的支持力度在明显加大。这背后有商业博弈的成分,但更多的可能是——AI芯片的多元化时代真的来了,没有人愿意把鸡蛋放在一个篮子里。
TorchScript之死,一个时代的终结
2.11版本里有一行小字,但分量很重:
TorchScript is now Deprecated。
如果你从PyTorch 1.x时代走过来,你会知道TorchScript曾经是部署的"官方推荐方案"。它把Python模型转换成一种中间表示,然后可以在C++环境里高效运行。
但现在,PyTorch团队明确告诉你:别用了,torch.export才是未来。
这个转向其实从2.0就开始铺垫了,但2.11的措辞明显更决绝。评论区有个人说了句"nice work! better if oss...",大概意思是:如果能开源就更好了。这话代表了一部分人的心声,但也说明了PyTorch生态的复杂性——它早就不是一个小众框架了,而是一个牵动无数商业利益的超级基础设施。
写在最后
2.11的发布让我想起一件事:AI技术栈的底层正在以肉眼可见的速度重构。
PyTorch的迭代加速、硬件支持的多元化、发布节奏的互联网化——这些信号放在一起,指向同一个结论:AI infra的战争才刚刚开始,而这场战争的主战场不在模型层,在框架层,在编译器层,在每一个GPU内核里。
下一个版本是2.12,预计5月底。
432位贡献者的名单还会更长。
【MiniMax-M2.1锐评】:当一个框架开始"内卷"发布速度,说明它背后的战争已经从模型层打到了地基层,而这场战役的赢家,从来都只有那些愿意把代码写得更脏、更快、更野的人。
参考链接:
https://x.com/PyTorch/status/2036175981619335295