本仓库提供了 DeepSeek-V2 论文中提出的多头潜在注意力(MLA)机制的 PyTorch 实现。请注意这不是训练好的模型,而是一个模块化的注意力实现,通过其创新架构在保持模型性能的同时显著减少 KV 缓存,从而实现高效推理。它可作为即插即用的注意力模块应用于 Transformer 架构中。
本仓库是 DeepSeek 论文关键架构创新实现系列的一部分。完整系列请参见相关实现章节。
克隆本仓库:
git clone https://huggingface.co/bird-of-paradise/deepseek-mla或者直接从 HuggingFace 仓库页面下载。
import torch
from src.mla import MultiHeadLatentAttention
# Initialize MLA
mla = MultiHeadLatentAttention(
d_model=512, # Model dimension
num_head=8, # Number of attention heads
d_embed=512, # Embedding dimension
d_c=64, # KV compression dimension
d_c1=64, # Query compression dimension
d_rotate=32, # Rotary embedding dimension
)
# Input sequence
x = torch.randn(2, 10, 512) # [batch_size, seq_len, d_model]
# Forward pass
output = mla(x)要运行测试套件,请在项目根目录下执行以下命令:
python -m src.tests.test_mla
MLA 融合了两大核心创新:
如需了解详细架构设计,请参阅 insights/architecture.md。
在推理过程中,MLA 会维护两个缓存:
cache_kv: [batch, max_len, d_c] # Compressed KV states
cache_rk: [batch, max_len, d_r] # Shared rotary key有关注意力掩码与缓存的详细解析,请参阅 insights/attention_mask.md。
# Standard self-attention
output = mla(sequence)
# Cross-attention
output = mla(query, key_value_states=context)# Initial forward pass
output = mla(prompt, use_cache=True, start_pos=0)
# Generate tokens using cache
for i in range(max_new_tokens):
output = mla(next_token, use_cache=True, start_pos=prompt_len + i)本实现严格遵循 DeepSeek-V2 论文中的公式框架:

核心特性:
本仓库是 DeepSeek 论文核心架构创新系列实现的一部分:
DeepSeek 多头潜在注意力机制(当前仓库):实现 DeepSeek MLA 机制,用于推理期间高效利用 KV 缓存。
DeepSeek 混合专家模型:实现 DeepSeek 的混合专家架构,支持模型参数的高效扩展。
Transformer 实现教程:详解 Transformer 架构实现的教程,包含核心组件的原理解析。
这些实现共同涵盖了支撑 DeepSeek 尖端性能的核心创新技术。通过将混合专家架构与多头潜在注意力机制相结合,您可以构建完整的 DeepSeek 风格模型,获得更高的训练效率和推理性能。
我们欢迎各类贡献!您可以:
请在提交拉取请求前确保所有测试用例均通过。
@misc{deepseek2024,
title={DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model},
author={DeepSeek-AI and et al.},
year={2024},
journal={arXiv preprint arXiv:2405.04434}
}