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

收藏
最新工具
喵记多APP
喵记多APP

快手推出的边聊天边记录的AI笔记,主要功能包括管理笔记,如剪藏、...

畅图
畅图

一款由摹客推出的AI原生可视化工具,专为个人和团队的创意表达、知...

Ztalk ai
Ztalk ai

一个AI驱动的会议实时语音翻译平台,可以与 Zoom、Googl...

Supercut
Supercut

一款屏幕录制工具,能帮你快速录下屏幕上的内容,录制的视频可以自动...

DreamShootAI
DreamShootAI

一个能帮你用照片生成各种风格图片的AI情侣照片生成工具,比如情侣...

讯飞星辰MaaS
讯飞星辰MaaS

科大讯飞开发的一款一站式AIGC内容运营平台,主要面向开发者,提...

星辰Agent开发平台
星辰Agent开发平台

讯飞星火新一代智能体Agent开发平台,助力开发者快速搭建生产级...

Drimo智能影视创作平台
Drimo智能影视创作平台

一款由追梦极客推出的面向影视、广告从业者以及AI视频创作者设计的...

码上飞
码上飞

一个需求秒变软件的全流程自动化智能开发平台,码上飞是L4级无人软...

Simular AI
Simular AI

一款专为Mac用户设计的本地AI智能助手,它能通过自然语言处理执...