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

收藏
最新工具
小恐龙公文排版助手
小恐龙公文排版助手

一款专为Word和WPS设计的插件,主要功能是帮助用户快速完成文...

Pippit AI
Pippit AI

一款由 CapCut 推出的专注于营销内容生产的AI创作工具。用...

PPT AI
PPT AI

一个在线AIPPT生成平台。通过 AI 的智能内容分析,将文本、...

DroidRun
DroidRun

一款可以通过AI代理实现Android设备的自动化操作开源框架,...

CloneUI
CloneUI

一款强大的AI驱动的图片转代码工具,能够将截图、网址或 Figm...

PaneFlow
PaneFlow

一款所见即所得的PPT制作工具,它采用拖拽式界面,用户可以通过简...

SearchAny
SearchAny

一款免费的集提问、搜索和研究功能于一身的AI搜索工具,整合谷歌、...

支付宝百宝箱Tbox
支付宝百宝箱Tbox

一个零代码AI应用开发平台,用户可以通过自然语言就可以快速创建A...

Vanna AI
Vanna AI

一个基于RAG技术的开源Python框架,用于将自然语言问题转换...

Awesome GPT-4o Images
Awesome GPT-4o Images

一个精选的GPT-4o生成图片集锦,收集了OpenAI 最新多模...