viable/strict/1786536149: [SDPA] Support mixed head dimensions with FA4 (#193039)
PyTorch 的 Flash SDPA 选择器此前要求 Q、K、V 具有相同的头维度,这阻止了 FA4 运行如 DeepSeek 的 Q/K=192、V=128 等形状。本次更改在 SDPA 上下文中跟踪 FA4 激活,并应用 FA4 的架构特定头维度和无 dropout 约束,同时保持 FA2/FA3 和 ROCm 选择规则不变。Eager、fake 和 meta 输出现在使用 V 的头维度,Flash 输出被解填充到 V 的原始维度。在 B200 上,强制 Flash SDPA 现在将精确的 DeepSeek 形状 (B,H,S,Dqk,Dv) = (4,128,4096,192,128) 分派到 FA4 前向和反向内核。
发展脉络
- 首次出现viable/strict/1786536149: [SDPA] Support mixed head dimensions with FA4 (#193039)PyTorch Core
- 当前判断此更改表明 PyTorch 正在积极适应新兴的 MLA 架构,这些架构在 DeepSeek 等模型中越来越流行。通过支持 FA4 的非均匀头维度,PyTorch 降低了在标准框架中训练和部署此类模型的障碍。这可能会加速 MLA 在更广泛社区中的采用,并影响未来模型的设计。Agent Pulse · 分析
PyTorch 的 Flash SDPA 选择器此前要求 Q、K、V 具有相同的头维度,这阻止了 FA4 运行如 DeepSeek 的 Q/K=192、V=128 等形状。本次更改在 SDPA 上下文中跟踪 FA4 激活,并应用 FA4 的架构特定头维度和无 dropout 约束,同时保持 FA2/FA3 和 ROCm 选择规则不变。Eager、fake 和 meta 输出现在使用 V 的头维度,Flash 输出被解填充到 V 的原始维度。在 B200 上,强制 Flash SDPA 现在将精确的 DeepSeek 形状 (B,H,S,Dqk,Dv) = (4,128,4096,192,128) 分派到 FA4 前向和反向内核。
此更改使 PyTorch 的 SDPA 能够利用 FA4 对非均匀头维度的支持,特别是 DeepSeek 风格的 MLA 训练。通过跟踪 FA4 激活并应用其特定约束,PyTorch 在不改变默认 FA2/FA3 行为的情况下扩展了 Flash 注意力覆盖范围。输出分配现在遵循 V 的头维度,符合注意力输出的实际形状。这为在 PyTorch 中高效训练和推理 MLA 架构铺平了道路。
此更改表明 PyTorch 正在积极适应新兴的 MLA 架构,这些架构在 DeepSeek 等模型中越来越流行。通过支持 FA4 的非均匀头维度,PyTorch 降低了在标准框架中训练和部署此类模型的障碍。这可能会加速 MLA 在更广泛社区中的采用,并影响未来模型的设计。
对于使用 PyTorch 训练或部署 MLA 模型的团队,此更改消除了一个关键的性能障碍,使他们能够利用 FA4 的优化内核。这可以降低训练成本并提高推理效率,从而加速 MLA 模型的迭代和部署。
后续可验证的信号包括:PyTorch 是否将 FA4 支持扩展到其他非均匀形状,以及 FA4 是否成为默认的 Flash 实现。此外,观察 DeepSeek 或其他 MLA 模型是否在 PyTorch 上获得官方训练支持。