【DeepSeek 系列】DeepSeek-V2

论文:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model

强大、经济且高效的混合专家语言模型: 首次引入了多头潜在注意力机制(MLA),结合 DeepSeekMoE 架构,将模型规模扩展到 236B( 激活参数量 21B),实现了模型的经济训练和高效推理。

架构

DeepSeek-V2 架构

概述

总体还是在 Transformer 架构内,但对注意力模块和 FFN 设计并采用了创新的架构:

  • 注意力机制:设计了 MLA,利用低秩键值联合压缩来消除推理时键值缓存(key-value cache)的瓶颈,从而支持高效推理。
  • FFN:采用 DeepSeekMoE 中的高性能 MoE 架构,能够以经济的成本训练强大的模型。

Multi-Head Latent Attention

提高推理效率

传统的 Transformer 模型通常采用多头注意力机制(MHA),但在生成过程中,其庞大的键值(KV)缓存会成为限制推理效率的瓶颈。为了减少 KV 缓存,提出了多查询注意力(MQA)和分组查询注意力(GQA)。这些方法需要的 KV 缓存较小,但其性能不如 MHA。
DeepSeek-V2 设计了一种创新的注意力机制,称为多头潜在注意力(MLA)。MLA 配备了低秩键值联合压缩,性能优于 MHA,但所需的 KV 缓存量明显较少。

预备知识:标准的Multi-Head Attention

符号定义: d d d 是 embedding 维度, n h n_h nh 是注意力头的数量, d h d_h dh 是每个头的维度, h t ∈ R d \mathbf{h}_t \in \R^d htRd 是在注意力层中第 t t t 个 token 的注意力输入。
标准的 MHA 首先通过三个矩阵 W Q , W K , W V ∈ R d h n h × d W^Q, W^K, W^V \in \R^{d_hn_h \times d} WQ,WK,WVRdhnh×d 分别产生 q t , k t , v t ∈ R d h n h \mathbf{q}_t, \mathbf{k}_t, \mathbf{v}_t \in \R^{d_hn_h} qt,kt,vtRdhnh
q t = W Q h t , k t = W K h t , v t = W V h t \begin{aligned} \mathbf{q}_t &= W^Q\mathbf{h}_t, \\ \mathbf{k}_t &= W^K\mathbf{h}_t, \\ \mathbf{v}_t &= W^V\mathbf{h}_t \end{aligned} qtktvt=WQht,=WKht,=WVht
然后, q t , k t , v t \mathbf{q}_t, \mathbf{k}_t, \mathbf{v}_t qt,kt,vt 会被切片成 n h n_h nh 个头以进行多头注意力计算:
[ q t , 1 ; q t , 2 ; ⋯   ; q t , n h ] = q t , [ k t , 1 ; k t , 2 ; ⋯   ; k t , n h ] = k t , [ v t , 1 ; v t , 2 ; ⋯   ; v t , n h ] = v t , o t , i = ∑ j = 1 t Softmax j ( q t , i ⊤ k j , i d h ) v j , i , u t = W O [ o t , 1 ; o t , 2 ; ⋯   ; o t , n h ] , \begin{aligned} &[\mathbf{q}_{t,1}; \mathbf{q}_{t,2}; \cdots ; \mathbf{q}_{t,n_h}] = \mathbf{q}_{t}, \\ &[\mathbf{k}_{t,1}; \mathbf{k}_{t,2}; \cdots ; \mathbf{k}_{t,n_h}] = \mathbf{k}_{t}, \\ &[\mathbf{v}_{t,1}; \mathbf{v}_{t,2}; \cdots ; \mathbf{v}_{t,n_h}] = \mathbf{v}_{t}, \\ &\mathbf{o}_{t,i} = \sum_{j=1}^{t} \text{Softmax}_j \left( \frac{\mathbf{q}^\top_{t,i} \mathbf{k}_{j,i}}{\sqrt{d_h}} \right) \mathbf{v}_{j,i}, \\ &\mathbf{u}_t = W^O [\mathbf{o}_{t,1}; \mathbf{o}_{t,2}; \cdots ; \mathbf{o}_{t,n_h}], \end{aligned} [qt,1;qt,2;;qt,nh]=qt[kt,1;kt,2;;kt,nh]=kt,[vt,1;vt,2;;vt,nh]=vt,ot,i=j=1tSoftmaxj(dh qt,ikj,i)vj,i,ut=WO[ot,1;ot,2;;ot,nh],
其中, q t , i , k t , i , v t , i ∈ R d h \mathbf{q}_{t,i}, \mathbf{k}_{t,i}, \mathbf{v}_{t,i} \in \R^{d_h} qt,i,kt,i,vt,iRdh 分别表示第 i i i 个注意力头的 query,key,value, W O ∈ R d × d h n h W^O \in \R^{d \times d_hn_h} WORd×dhnh 表示输出投影矩阵。
在推理过程中,需要缓存所有 keys 和 values 以加速推理,因此 MHA 需要为每个 token 缓存 2 n h d h l 2n_hd_hl 2nhdhl 个元素。在模型部署中,这个繁重的 KV 缓存是限制最大批次大小和序列长度的一大瓶颈。

Low-Rank Key-Value Joint Compression

MLA 的核心是对 key 和 value 进行低秩联合压缩,以减少 KV 缓存:
c t K V = W D K V h t , k t C = W U K c t K V , v t C = W U V c t K V , \begin{aligned} \mathbf{c}_t^{KV} &= W^{DKV} \mathbf{h}_t, \\ \mathbf{k}_t^C &= W^{UK} \mathbf{c}_t^{KV}, \\ \mathbf{v}_t^C &= W^{UV} \mathbf{c}_t^{KV}, \\ \end{aligned} ctKVktCvtC=WDKVht,=W

### DeepSeek-Coder-V2-Instruct 使用说明 #### 特性概述 DeepSeek-Coder-V2-Instruct 是一款强大的编程辅助工具,能够帮助开发者更高效地完成编码工作。该版本不仅继承了前代产品的优势,还引入了一系列新特性来提升用户体验。 - **代码解释**:可以解析并阐述代码的功能和逻辑结构[^3]。 - **代码修复**:自动检测并修正程序中存在的缺陷或潜在风险点[^3]。 - **代码生成**:依据自然语言指令自动生成相应的源码片段,加速开发流程. #### 获取方式与部署指南 用户可以通过访问官方仓库获取 `DeepSeek-Coder-V2-Lite-Instruct` 的最新版次以及相关资源文件: ```bash git clone https://gitcode.com/mirrors/deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct.git cd DeepSeek-Coder-V2-Lite-Instruct/ pip install -r requirements.txt ``` 对于希望在线体验的用户,则可以直接前往指定网站进行交互测试[^2]: [coder.deepseek.com](https://coder.deepseek.com) #### 示例应用案例 下面给出一段简单的 Python 函数定义及其对应的自然语言描述作为输入给定至模型后的输出效果展示: 假设有一个需求是要创建一个函数用于计算两个整数相加的结果,那么通过向 DeepSeek-Coder-V2 提供如下提示语句即可得到预期的回答: > "Write a function that takes two integers as input and returns their sum." 随后会收到类似这样的回复消息: ```python def add_two_numbers(a: int, b: int) -> int: """Return the sum of two numbers.""" return a + b ``` 此过程展示了如何利用自然语言处理技术实现快速原型设计的能力.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elwin Wong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值