FlashMLA:DeepSeek发布的高效的MLA解码内核,优化了变长序列的处理服务

FlashMLA是什么?

FlashMLA是DeepSeek在2025年2月24日推出的一款针对NVIDIA Hopper架构GPU(如H800)优化的MLA(Multi-Head Latent Attention)解码内核,特别优化了变长序列的处理服务。

DeepSeek发布FlashMLA.webp

FlashMLA的主要特性:

  • BF16支持:FlashMLA支持BF16(Bfloat16)数据类型,这使得它在计算和内存使用上更加高效。

  • 分页KV缓存:通过分页机制管理键值(KV)缓存,块大小为64,这使得它能够高效处理大规模序列。

  • 高性能:FlashMLA的内存带宽可达3000 GB/s(在内存瓶颈场景下),计算性能可达580 TFLOPS(在计算瓶颈场景下,基于BF16数据类型)。

FlashMLA的技术背景:

FlashMLA的出现是为了解决大型语言模型在推理过程中面临的计算和内存瓶颈问题。传统的多头注意力机制(MHA)在处理长序列时,需要大量的内存来存储键值对(KV)缓存,这限制了模型在有限硬件资源上的部署。MLA通过引入潜在注意力机制,减少了KV缓存的大小,同时保持了模型的性能。

FlashMLA的应用场景:

FlashMLA特别适用于需要高效解码的自然语言处理(NLP)任务,如大语言模型(LLM)的推理。它针对变长序列进行了优化,并在实际生产环境中经过了验证,特别适合高性能计算需求。

FlashMLA开源.webp

FlashMLA的技术实现

  • 低秩压缩:MLA通过低秩矩阵分解实现KV缓存的有效压缩,减少了内存占用。

  • KV缓存优化:优化KV缓存机制,显著降低了硬件资源需求,从而降低了推理成本。

  • 并行解码:引入并行解码机制,允许同时处理多个token,显著提升推理速度。

FlashMLA的性能提升

采用FlashMLA后,DeepSeek在自然语言处理任务中的准确率提升了约5%,推理速度提高了20%,计算资源消耗降低了15%。这些改进使得DeepSeek在实时交互场景(如对话ai、实时翻译)中表现更优。

FlashMLA安装使用

环境要求:

  • Hopper 架构 GPU(如 NVIDIA A100)

  • CUDA 12.3 及以上版本

  • PyTorch 2.0 及以上版本

1. 首先,你需要安装 FlashMLA 库。你可以通过以下命令进行安装:

git clone https://github.com/deepseek-ai/FlashMLA.git
cd FlashMLA
python setup.py install

或者如果你已经克隆了仓库并且想要重新构建:

python setup.py clean --all && python setup.py build_ext --inplace

2. 获取 MLA 元数据

在使用 FlashMLA 之前,你需要获取 MLA 的元数据。这通常涉及准备输入张量和其他必要的参数。

from flash_mla import get_mla_metadata, flash_mla_with_kvcache

# 假设你已经有了 cache_seqlens 和其他相关变量
cache_seqlens = [...]  # 每个序列的长度列表
s_q = ...              # 查询维度
h_q = ...              # 头数量
h_kv = ...             # 键值头数量

tile_scheduler_metadata, num_splits = get_mla_metadata(cache_seqlens, s_q * h_q // h_kv, h_kv)

3. 执行 MLA 解码

接下来,你可以执行 MLA 解码操作。假设你已经有查询矩阵 q_i、键值缓存 kvcache_i、块表 block_table 等必要组件。

dv = ...               # 输出维度

for i in range(num_layers):  # 循环遍历每一层
    o_i, lse_i = flash_mla_with_kvcache(
        q_i[i],                # 当前层的查询矩阵
        kvcache_i[i],           # 当前层的键值缓存
        block_table,            # 块表
        cache_seqlens,          # 缓存序列长度
        dv,                     # 输出维度
        tile_scheduler_metadata,# MLA 元数据
        num_splits,             # 划分数目
        causal=True             # 是否因果掩码
    )
    # 继续处理输出结果 o_i 和 lse_i

FlashMLA github:https://github.com/deepseek-ai/FlashMLA

收藏
最新工具
达探星
达探星

一款TikTok达人邀约工具,特别适合TikTok小店用来爆单。...

ChinaTextbook
ChinaTextbook

一个专门收集和分享中国大陆从小学到大学的教材资源的开源项目,特别...

暗壳AI
暗壳AI

家居AIGC营销与导购工具,它号称“一人即团队”,能够快速生成渲...

UntitledPen
UntitledPen

一个可以生成真实人声旁白的工具,也就是能够在一个平台上编写、编辑...

PageAI
PageAI

一款AI网站生成工具,就像一个小型创意工作室一样,能在短时间内根...

Seedance AI
Seedance AI

字节跳动推出的一款强大的视频生成工具,借助 Seedance 1...

ChatPs
ChatPs

ChatPs 是一款为 Photoshop 设计的插件,它背后是...

趣丸千音
趣丸千音

一个AI语音创作平台,专注提供一站式智能语音解决方案。集成文本转...

太极神器 TAICHI-flet
太极神器 TAICHI-flet

基于flet的一款多功能娱乐软件,实现了浏览图片、音乐、小说、各...

YIKM
YIKM

一个能在线玩小霸王、红白机、街机、FC 等经典游戏的地方,像《魂...