MoonshotAI/FlashKDA
摘要
FlashKDA 是一个基于 CUTLASS 构建的高性能 Kimi Delta Attention (KDA) 内核实现,专为 SM90+ GPU 优化,并与 flash-linear-attention 集成。
查看缓存全文
缓存时间: 2026/07/29 15:53
MoonshotAI/FlashKDA
Source: https://github.com/MoonshotAI/FlashKDA
FlashKDA
FlashKDA: Flash Kimi Delta Attention —— 基于 CUTLASS 的高性能 KDA 内核
新闻
- 2026-04-22 — 深度解析博客:FlashKDA v1 背后的设计决策,请点击此处阅读。
要求
- SM90 及以上
- CUDA 12.9 及以上
- PyTorch 2.4 及以上
安装
git clone https://github.com/MoonshotAI/FlashKDA.git flash-kda
cd flash-kda
git submodule update --init --recursive
pip install -v --no-build-isolation .
默认情况下,构建过程会检测当前的 CUDA 设备并针对该架构进行编译。对于 wheel 或 CI 构建,可以显式编译所有支持的架构:
FLASH_KDA_CUDA_ARCHS=all pip install -v --no-build-isolation .
支持的值包括 auto(默认)、all,或以逗号分隔的架构列表,例如 90a,100a。
将 FlashKDA 用作 FLA 后端
安装完成后,FlashKDA 会被 flash-linear-attention 的 chunk_kda 自动调度。集成详情请参见 fla-org/flash-linear-attention#852 (https://github.com/fla-org/flash-linear-attention/pull/852)。
要求
- 安装
flash-linear-attention >= 0.5.0:pip install -U flash-linear-attention - 在
torch.inference_mode()下调用chunk_kda:import torch from fla.ops.kda import chunk_kda with torch.inference_mode(): out, final_state = chunk_kda( q=q, k=k, v=v, g=g, beta=beta, scale=scale, initial_state=h0, output_final_state=True, use_gate_in_kernel=True, use_qk_l2norm_in_kernel=True, use_beta_sigmoid_in_kernel=True, safe_gate=True, A_log=A_log, dt_bias=dt_bias, lower_bound=lower_bound, transpose_state_layout=True, cu_seqlens=cu_seqlens, )
退出: 设置 FLA_FLASH_KDA=0 可回退至 Triton 路径。
调试调度: 添加 logging.basicConfig(level=logging.INFO) 即可在命中时看到 [FLA Backend] kda.chunk_kda -> flashkda,未命中时看到 ... rejected:。
性能
请参见 BENCHMARK_H20.md。
测试
bash tests/test.sh
tests/test_fwd.py— 正确性测试(与 torch 参考实现精确匹配,并与flash-linear-attention进行对比)。
内核 API
flash_kda.fwd
flash_kda.fwd(q, k, v, g, beta, scale, out, A_log, dt_bias, lower_bound, initial_state=None, final_state=None, cu_seqlens=None)
参数:
| 参数 | 数据类型 | 形状 | 描述 |
|---|---|---|---|
q | bf16 | [B, T, H, K] | 查询 |
k | bf16 | [B, T, H, K] | 键 |
v | bf16 | [B, T, H, V] | 值 |
g | bf16 | [B, T, H, K] | 激活前的门控 |
beta | bf16 | [B, T, H] | Beta logits(激活前;内部应用 sigmoid) |
scale | float | 标量 | 缩放因子 |
out | bf16 | [B, T, H, V] | 输出张量 |
A_log | fp32 | [H] | 对数门控参数 |
dt_bias | fp32 | [H, K] | 门控偏置 |
lower_bound | float | 标量 | 门控下界(范围 -5.0 到 0) |
initial_state | bf16/fp32/None | [B, H, V, K] or [N, H, V, K] | (可选)初始递归状态 |
final_state | bf16/fp32/None | [B, H, V, K] or [N, H, V, K] | (可选,输出)最终递归状态 |
cu_seqlens | int64 | [N+1] | (可选)变长批处理的累积序列长度 |
- 当前要求
K = V = 128。 initial_state/final_state可接受None(无状态)、bf16 或 fp32 张量。两者都提供时,数据类型必须一致。- 提供
cu_seqlens时,B必须为 1,T为所有序列的总长度,initial_state/final_state的形状为[N, H, V, K]。 - 当
cu_seqlens为None时,每个批处理元素被视为独立序列,状态形状为[B, H, V, K]。
开发
为 CUDA/C++ 源码设置智能感知(clangd),请运行:
bash setup_clangd.sh
该脚本会生成包含正确仓库路径的 .clangd 文件,并将全局 clangd config.yaml 安装到 ~/.config/clangd/。
引用
@misc{flashkda2026,
title={FlashKDA: Flash Kimi Delta Attention},
author={Yutian Chen, Zhiyuan Li, Yucheng Wang, Ming Wei},
year={2026},
publisher = {GitHub},
howpublished = {\url{https://github.com/MoonshotAI/FlashKDA}},
}
相似文章
@Kimi_Moonshot:我们开源 FlashKDA——基于 CUTLASS 的高性能 Kimi Delta Attention 核实现,预填充速度在 H20 上提升 1.72–2.22 倍
月之暗面开源 FlashKDA,基于 CUTLASS 的 Kimi Delta Attention 核实现,在 H20 GPU 上预填充速度提升 1.72–2.22 倍。
Moonshot 开源 FlashKDA:面向 Kimi Delta Attention 的 CUTLASS 内核,H20 上最高比 Triton 基线快 2.22 倍
MoonshotAI 发布 FlashKDA,开源 CUTLASS 内核实现 Kimi Delta Attention,在 H20 GPU 上相较 Triton 最高提速 2.22 倍。
Complex KDA:理解与增强 Kimi Delta Attention 的表达能力
本文介绍了 Complex KDA,这是 Kimi Delta Attention 的增强版本,它结合了 delta规则变换与反射以实现更高的表达能力,在某些任务中优于 Transformers,同时保持效率,并提供开源代码和模型。
Kimi-K3 技术报告 [pdf]
MoonshotAI发布了Kimi-K3,一个拥有2.8万亿参数的开源权重多模态智能体模型,具备100万token的上下文窗口,基于全新的Kimi Delta Attention和Attention Residuals架构,实现了显著的扩展性改进。
@HotAisle:Kimi K2.6 + DFlash:8×MI300X 上 508 tok/s,自回归基线 90 tok/s 提升至 5.6 倍
Kimi K2.6 搭配 DFlash 推理系统在 8×AMD MI300X 上实现 508 tokens/s,相比 90 tokens/s 基线零质量损失地提升 5.6 倍吞吐。