Deepseek开源周第一天:FlashMLA来袭

前言

上周deepseek宣布,将在本周陆续发布五个开源项目,这些库已经在生产环境中经过了记录、部署和实战测试。

原译文为:

第0天:为#开源周热身!

我们是一个小小的团队 @deepseek_ai 在探索AGI。

从下周开始,我们将开源5个仓库,完全透明地分享我们虽小但真诚的进展。

这些在线服务中的不起眼的构建模块已经过记录、部署并在生产环境中经过实战考验。

作为开源社区的一部分,我们相信,每分享一行代码都会成为集体动力,加速这一旅程。

每日解锁即将来临。没有象牙塔——只有纯粹的车库能量和社区驱动的创新。

第一天

今天发布了一个名为 FlashMLA 的项目,截止发稿前,已有 6.2K 的 star

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

DeepSeek 推出的 FlashMLA,是一款专为 Hopper GPU 量身打造的高效 MLA 解码内核,在可变长度序列服务方面表现卓越。

它的出现,为相关领域的开发者带来了全新的技术体验。

一、项目特性

(一)高效解码

FlashMLA 专注于优化解码过程,能够显著提升处理速度。

在实际应用中,这意味着可以更快地完成数据解码,提高整个系统的运行效率。

例如,在处理大规模文本数据的解码任务时,相比传统方法,FlashMLA 能以更高的速度完成,节省大量时间成本。

(二)可变长度序列服务优化

针对可变长度序列服务,FlashMLA 进行了专门设计。

它能够灵活适应不同长度的序列数据,无论是短序列还是长序列,都能稳定且高效地运行。

这一特性使得它在诸如自然语言处理中的文本生成、机器翻译等场景中具有极大优势,能够精准处理各种长度的文本序列,为用户提供高质量的服务。

二、当前发布详情

当前发布的版本为 BF16 型,采用块大小为 64 的分页 kvcache。

这种设计进一步优化了内存管理,提升了数据处理的效率和稳定性。在实际使用中,能够有效减少内存占用,提高系统的响应速度。

三、快速上手

(一)安装

安装过程简单便捷,只需在命令行中输入:

python setup.py install

即可轻松完成安装,快速搭建起项目运行环境。

(二)基准测试

通过运行

python tests/test_flash_mla.py

可以进行基准测试,在 CUDA 12.6 的环境下,于 H800 SXM5 上,内存绑定配置最高可达 3000 GB/s

计算绑定配置最高可达 580 TFLOPS

这一出色的性能表现,为开发者在进行相关计算任务时提供了强大的支持。

四、使用方法

在代码使用方面,开发者可以通过以下示例代码实现功能调用:

from flash_mla import get_mla_metadata, flash_mla_with_kvcache

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

for i in range(num_layers):
   ...
    o_i, lse_i = flash_mla_with_kvcache(
        q_i, kvcache_i, block_table, cache_seqlens, dv,
        tile_scheduler_metadata, num_splits, causal=True,
    )
   ...

通过上述代码,可以方便地调用 FlashMLA 的核心功能,实现对数据的高效处理。

五、运行要求

硬件要求:需要配备 Hopper GPU,以充分发挥 FlashMLA 的性能优势。

软件要求:CUDA 版本需在 12.3 及以上,同时需要安装 PyTorch 2.0 及更高版本,确保项目能够稳定运行。

总结

FlashMLA 作为 deepseek 开源周的第一个项目,展现了其在 GPU 优化方面的专业实力。

该项目不仅为 Hopper GPU 用户提供了高效的 MLA 解码方案,也为整个 AI 社区带来了宝贵的技术贡献。

未来四天,deepseek 还将陆续开源其他四个项目。

我们将持续关注接下来几天的项目发布,为读者带来第一手的技术资讯。


我码玄黄
1 声望1 粉丝