
算得快,不只看算力,更看数据搬得勤不勤。
在 DeepSeek 开源周的第一天,团队拿出的不是一个新模型,而是一份代码:高效实现 MLA(多头潜在注意力)机制的 FlashMLA。
这个开源库专为 NVIDIA 下一代 GPU 架构 Hopper 设计,也就是我们熟悉的 H100、H200 这一系列。
很多人看到 " 开源周 ",第一反应是期待大模型。但 FlashMLA 想告诉大家的是:让模型跑得更快,往往不靠换更大的模型,而靠把底层的计算流程抠得更细。
这篇文章,我们就用最直白的方式讲清楚三件事:FlashMLA 是什么、它要解决什么问题、它是怎么解决的。
MLA(多头潜在注意力),是 DeepSeek 模型中使用的一种注意力机制,也是 DeepSeek-V3 效率优化策略里的重要一环。它的计算有一个特点:计算开销比较大。
FlashMLA 则是 DeepSeek 为 MLA 写的一个高效计算内核(kernel)。你可以这样理解:
MLA 是 " 要做什么运算 ";
FlashMLA 是 " 怎样把这些运算在 GPU 上又快又省地做完 "。
它的灵感来自 Flash 注意力机制:那一类方法的核心思想,是通过更聪明地安排数据存放的位置,减少不必要的搬运。FlashMLA 把这套思路,用在了 MLA 上。
要理解 FlashMLA 的价值,得先认识 GPU 里的两种存储:
SRAM(静态随机存储器):速度快,但容量小,就像灶台旁边的小案板;
DRAM(动态随机存储器):速度慢一些,但容量大,就像远处的大仓库。
传统的计算流程是这样的:

传统缓存与写回流程
对照图中的步骤,一步步看:
初始张量存放在 DRAM 里;
先把它复制到 SRAM,进行 " 计算 1";
计算完,把结果写回 DRAM;
下一步计算前,再从 DRAM 复制到 SRAM,进行 " 计算 2";
计算完,再把结果写回 DRAM。
问题很明显:每做一步运算,数据就要在快慢两个存储之间往返一次。图中最右边那个 " 慢!" 的标注,说的正是这种频繁复制所带来的时间开销。
打个比方:一位厨师做菜,每完成一道工序,就把半成品送回远处的仓库,下一道工序再去仓库拿回来。厨艺再好,时间也都耗在了路上。
FlashMLA 构建的 MLA 内核,核心改动是:允许某些操作保留在速度更快的 SRAM 中,而无须频繁地把结果复制回速度较慢的 DRAM。
还是用做菜来比喻:同一个食材需要连续经过切、腌、拌几道工序,那就让它一直待在案板上,几道工序做完,再统一放回仓库。
这样一来:
中间结果不用反复写回、再读出;
数据搬运的次数大幅减少;
原本被 " 路上时间 " 吞掉的那部分开销,被省了下来。
除此之外,DeepSeek 还采用了许多其他优化技巧,让原本计算开销较大的 MLA 计算过程显著加速。


仓库的 README 中提到,它面向变长序列的推理服务做了优化,并支持分页式的 KV 缓存。
早期版本给出的测试数据是:在 H800 SXM5 上,访存受限场景下最高约 3000 GB/s,计算受限场景下最高约 580 TFLOPS。
后续版本仍在更新,具体支持的精度、数据格式和性能数字,请以仓库最新说明为准。
瓶颈常常不在 " 算 ",而在 " 搬 "。现代 GPU 的算力很强,但如果数据迟迟送不到计算单元手里,算力就白白闲置。优化的重点,往往是减少搬运。
底层优化,和模型创新同样重要。MLA 是一项算法层面的创新,FlashMLA 则让这项创新真正在硬件上跑得起来、跑得快。两者缺一不可。
开源的价值,是让别人少走弯路。把高效内核直接开源,意味着其他团队不必从零开始重写,就能用上经过实战检验的实现。
回到开源周的第一天:FlashMLA 看起来是一份很 " 硬核 " 的代码,但它背后的道理其实很朴素:别让数据在路上浪费时间。
当模型越来越大、计算越来越密集,这种看似不起眼的底层优化,往往就是决定速度和成本的关键。
说明:本文对 SRAM、DRAM 的比喻为通俗化说明,实际硬件层级更为复杂。仓库中的性能数据取自其早期版本的公开说明,项目已更新,请以官方仓库最新内容为准。
下一篇:DeepSeek 开源周 - 第二天:DeepEP,欢迎关注,持续更新。


登录后才可以发布评论哦
打开小程序可以发布评论哦