【AIGC魔童】DeepSeek核心创新技术(二):MLA

【AIGC魔童】DeepSeek核心创新技术(二):MLA

    • 1. MLA框架的定义与背景
    • 2. MLA框架的技术原理
      • (1)低秩联合压缩
      • (2)查询的低秩压缩
      • (3)旋转位置嵌入(RoPE)
    • 3. MLA框架的优势
    • 4. MLA框架的核心价值

DeepSeek 的 MLA(Multi-head Latent Attention)框架凭借其独特的技术原理和显著优势,吸引了众多关注。下面将详细解读 MLA 框架。

1. MLA框架的定义与背景

DeepSeek 是一家专注于人工智能技术的公司,其开发的 MLA(Multi-Head Latent Attention)框架是 DeepSeek-V3 模型中用于高效推理的核心注意力机制。MLA 通过低秩联合压缩技术,减少了推理时的键值(KV)缓存,从而在保持性能的同时显著降低了内存占用。这一技术的出现,是为了应对传统 Transformer 模型在大规模语言模型(LLM)推理过程中面临的内存瓶颈问题。

在标准的 Transformer 模型中,多头注意力(Multi-Head Attention, MHA)机制通过并行计算多个注意力头来捕捉输入序列中的不同特征。每个注意力头都有自己的查询(Query, Q)、键(Key, K)和值(Value, V)矩阵,计算过程如下:

  • 查询矩阵 Q:用于计算输入序列中每个位置的注意力权重。

  • 键矩阵 K:用于与查询矩阵 Q 计算注意力分数。

  • 值矩阵 V:用于根据注意力分数加权求和,得到最终的输出。

然而,这种机制在处理长序列时,会面临巨大的内存开销。例如,对于一个长度为 S 的序列,每个头的维度为 d ,则每个头的 KV 缓存大小为2 x S x d 。对于大规模模型,这会导致显存占用过高,限制了模型的推理效率。

为了解决这一问题,MLA 框架应运而生。它通过低秩联合压缩技术,将 KV 缓存的存储需求显著降低,同时保持了模型的性能。这一技术的核心在于,通过低秩分解和矩阵变换,将原本需要存储的大量 KV 值压缩为更小的维度,从而减少了显存的使用量。

2. MLA框架的技术原理

MLA 框架本质上是一种优化后的注意力机制。在理解它之前,我们先来简单了解一下什么是注意力机制。在大语言模型处理信息时,比如处理一段文本,它需要知道文本中哪些部分是重要的,哪些部分相对次要,注意力机制就像是模型的 “聚焦器”,帮助模型把重点放在关键信息上。而 MLA 框架则是在这个基础上,进一步优化,让模型在处理信息时更加高效。
在这里插入图片描述

(1)低秩联合压缩

  • 核心思想MLA 的一个关键技术是对注意力机制中的键(Key)和值(Value)进行低秩联合压缩。简单来说,就是把原本较大的数据量通过一定的方式变小,这样在推理的时候,需要缓存的键值(KV)对数量就会减少。

低秩联合压缩技术是 DeepSeek MLA 框架的核心,它通过将高维的键(Key)和值(Value)矩阵压缩到低维空间,从而显著减少存储需求。在传统的多头注意力机制中,每个头的键和值矩阵都需要单独存储,这在处理长序列时会导致巨大的内存开销。例如,对于一个长度为 S 的序列,每个头的维度为 d ,则每个头的 KV 缓存大小为2 x S x d 。对于大规模模型,这会导致显存占用过高,限制了模型的推理效率。

MLA 框架通过低秩联合压缩技术解决了这一问题。它首先将输入数据压缩到一个低秩空间,然后再通过上投影矩阵将其恢复到原始维度。这种压缩方式不仅减少了存储需求,还保持了模型的性能。具体来说,MLA 的低秩联合压缩过程如下:

低秩压缩:首先对输入进行低秩压缩,将维度为 d 的输入压缩到维度为 r(其中r << d ),通过一个低秩变换矩阵 Wr 实现:

在这里插入图片描述

其中, Wr是一个d x r 的矩阵,将输入压缩到低秩空间。

扩展维度:然后通过两个变换矩阵Wk和Wv ,将低秩的 Latent_KV 扩展回原始维度d ,得到每个头的 K 和 V:

在这里插入图片描述

其中,Wk和Wv是r x d的矩阵,用于将低秩表示恢复到原始维度。

计算注意力:最后,通过查询矩阵 Q 与 K 计算注意力分数,并使用 V 进行加权求和,得到最终的输出:

在这里插入图片描述

通过这种方式,MLA 框架不仅减少了 KV 缓存的存储需求,还保持了模型的性能,使得大规模语言模型的推理变得更加高效。想象一下,原本模型需要一个很大的 “仓库” 来存放键值对信息,现在通过低秩压缩,“仓库” 变小了,在推理过程中内存使用就减少了,推理效率也就提升了。

(2)查询的低秩压缩

  • 优化目的:除了对键和值进行压缩,MLA 还对注意力查询(Query)进行低秩压缩,以减少训练过程中的激活内存。查询可以理解为模型在寻找信息时提出的问题,对查询进行压缩,能让模型在训练时更节省内存资源。

  • 实现方式:查询的低秩压缩通过类似的投影操作实现,具体公式如下:

在这里插入图片描述

其中,WQdown是查询的下投影矩阵, qi是第 i 个 token 的查询向量。通过这个投影操作,将查询向量也进行了低秩压缩。

  • 性能保持:尽管 MLA 通过低秩压缩减少了 KV 缓存和激活内存,但它仍然能够保持与标准多头注意力(MHA)相当的性能。这就好比一辆车,经过改装后,不仅更省油(减少内存占用),速度还没有变慢(性能相当)。

(3)旋转位置嵌入(RoPE)

位置信息处理:在处理长序列时,位置信息非常重要。比如 “我今天去了北京” 和 “今天我去了北京”,虽然词语相同,但表达的意思可能因为位置不同而有所差异。MLA 架构结合了旋转位置嵌入(RoPE)来有效处理长序列中的位置依赖问题。

作用:RoPE 通过旋转操作将位置信息嵌入到键和查询中。具体来说,对于位置n和维度2i、2i + 1 ,RoPE 的操作如下:

在这里插入图片描述

其中,qn是位置n的查询向量。通过这样的旋转操作,模型能够更好地捕捉长距离依赖关系,从而提升对长序列的处理能力。

3. MLA框架的优势

  • 内存占用少:低秩联合压缩和查询的低秩压缩,减少了 KV 缓存和激活内存,降低模型在推理和训练时对内存的需求,利于在资源有限的设备上运行模型。

  • 推理效率高:内存占用减少,模型处理信息速度加快,能更高效生成结果,比如在对话系统中能更快回复用户问题。

  • 长序列处理能力强:结合 RoPE,模型能更好处理长序列,理解文本中长距离的依赖关系,处理长篇文档时表现更出色。

4. MLA框架的核心价值

MLA(Multi-Head Latent Attention)框架通过低秩联合压缩技术,解决了传统 Transformer 模型在大规模语言模型推理过程中面临的内存瓶颈问题。其核心优势在于显著减少了 KV 缓存的存储需求,同时保持了模型的性能。具体来说,MLA 框架通过低秩压缩和矩阵变换,将高维的键(Key)和值(Value)矩阵压缩到低维空间,再通过上投影矩阵将其恢复到原始维度,从而减少了显存的使用量。这一技术不仅显著降低了内存占用,还提高了推理效率,使得大规模语言模型的推理变得更加高效。此外,MLA 框架具有很强的兼容性,可以无缝集成到现有的 Transformer 模型中,无需对模型架构进行大规模的修改,这使得其在实际应用中具有广泛的应用前景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea——IDEA2024版本创建Sping项目无法选择Java 8

目录 一、背景二、解决方式&#xff08;替换创建项目的源地址&#xff09; 一、背景 IDEA2024创建一个springboot的项目&#xff0c;本地安装的是1.8&#xff0c;但是在使用Spring Initializr创建项目时&#xff0c;发现版本只有17、21、23。 二、解决方式&#xff08;替换创…

【自然语言处理】TextRank 算法提取关键词(Python实现)

文章目录 前言PageRank 实现TextRank 简单版源码实现jieba工具包实现TextRank 前言 TextRank 算法是一种基于图的排序算法&#xff0c;主要用于文本处理中的关键词提取和文本摘要。它基于图中节点之间的关系来评估节点的重要性&#xff0c;类似于 Google 的 PageRank 算法。Tex…

Docker Desktop安装到其他盘

Docker Desktop 默认安装到c盘&#xff0c;占用空间太大了&#xff0c;想给安装到其他盘&#xff0c;网上找了半天的都不对 正确安装命令&#xff1a; start /w "" "Docker Desktop Installer.exe" install --installation-dirF:\docker命令执行成功&am…

重新刷题求职2-DAY6-哈希表

1.有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false提示: 1 < s.leng…

feign 远程调用详解

在平常的开发工作中&#xff0c;我们经常需要跟其他系统交互&#xff0c;比如调用用户系统的用户信息接口、调用支付系统的支付接口等。那么&#xff0c;我们应该通过什么方式进行系统之间的交互呢&#xff1f;今天&#xff0c;简单来总结下 feign 的用法。 1&#xff1a;引入依…

学习日记-250207

一.论文 1.Prompt Learning for News Recommendation 任务不一致&#xff08;LLM与实际任务&#xff09;产生prompt提示。 Prompt Learning for News Recommendation 论文阅读 SIGIR2023-CSDN博客 2.GPT4Rec: A Generative Framework for Personalized Recommendation and…

【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…

Rust语言进阶之标准输入: stdin用法实例(一百零五)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

modbus协议处理

//------------------------0x01-------------------------------- //MDA_usart_send: aa 55 01 00 06 00 02 00 05 //转modbusTCP——Master——send&#xff1a;地址00002&#xff0c;寄存器数量&#xff1a;00005 00 00 00 00 00 06 01 01 00 02 00 05 //ModbusTCP——Slave…

保姆级教程Docker部署KRaft模式的Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 四、部署可视化工具 1、创建挂载目录 2、运行Kafka-ui容器 3、Compose运行Kafka-ui容器 4、查看Kafka-ui运行状态 …

CPU的基本结构

基本结构 控制器&#xff08;Control Unit&#xff09;&#xff1a;负责控制&#xff0c;如指令计数器&#xff0c;指令跳转。 算术逻辑控制器&#xff08;Arithmetic/Logic Unit&#xff09;&#xff1a;负责计算&#xff0c;如算术运算加减&#xff0c;逻辑比较大小等。 南北…

如何使用deepseek开发一个翻译API

什么是deepseek Deepseek 是一个基于人工智能技术的自然语言处理平台&#xff0c;提供了多种语言处理能力&#xff0c;包括文本翻译、语义分析、情感分析等。它通过深度学习模型和大规模语料库训练&#xff0c;能够实现高质量的文本翻译和多语言理解。Deepseek 的核心优势在于…

UnityShader学习笔记——渲染路径

——内容源自唐老狮的shader课程 目录 1.是什么 2.LightMode标签 3.前向渲染路径&#xff08;Forward&#xff09; 3.1.处理光照的方式 3.2.处理各种光源的方式 3.3.在哪里进行光照计算 4.顶点照明渲染路径&#xff08;Vertex&#xff09; 5.延迟渲染路径&#xff08;…

单片机通讯中的时序图:初学者的入门指南

一、什么是时序图&#xff1f; 在单片机的世界里&#xff0c;时序图是一种非常重要的工具&#xff0c;它用于描述信号在时间上的变化规律。简单来说&#xff0c;时序图就像是信号的“时间线”&#xff0c;它展示了各个信号线在不同时间点上的电平状态。通过时序图&#xff0c;我…

docker常用命令及案例

以下是 Docker 的所有常用命令及其案例说明&#xff0c;按功能分类整理&#xff1a; 1. 镜像管理 1.1 拉取镜像 命令: docker pull <镜像名>:<标签>案例: 拉取官方的 nginx 镜像docker pull nginx:latest1.2 列出本地镜像 命令: docker images案例: 查看本地所有…

集合类不安全问题

ArrayList不是线程安全类&#xff0c;在多线程同时写的情况下&#xff0c;会抛出java.util.ConcurrentModificationException异常 解决办法&#xff1a; 1.使用Vector&#xff08;ArrayList所有方法加synchronized&#xff0c;太重&#xff09; 2.使用Collections.synchronized…

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04

SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用&#xff1a;导出的表&#xff0c;导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索&#xff0c;可以使用星号 以s开头的表作为导出对象外&#xff0c;…

【大模型】基于LlamaIndex实现大模型RAG

文章目录 一、RAG基础二、使用大语言模型LLMs2.1 使用OpenAI大模型2.2 本地大模型 三、构建RAG pipeline3.1 加载数据3.1.1 SimpleDirectoryReader3.1.2 DatabaseReader3.1.3 直接创建文档Document 3.2 转换数据3.3 索引/嵌入 Indexing & Embedding3.4 存储3.5 查询3.6 评估…

Mac 终端命令大全

—目录操作— ꔷ mkdir 创建一个目录 mkdir dirname ꔷ rmdir 删除一个目录 rmdir dirname ꔷ mvdir 移动或重命名一个目录 mvdir dir1 dir2 ꔷ cd 改变当前目录 cd dirname ꔷ pwd 显示当前目录的路径名 pwd ꔷ ls 显示当前目录的内容 ls -la ꔷ dircmp 比较两个目录的内容 di…

你猜猜 攻防世界

你猜猜 打开附件&#xff1a; 504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E7478746C9F170D35D0A45826A03E161FB96870EDDFC7C89A11862F9199B4CD78E7504B01023F000A0001080000626D0A49F4B5091F1E0000001200000008002400000000000000200000000000000…