深度求索推出DeepSeek-V2:经济高效的多专家语言模型

news2024/11/27 20:30:49

AI苏妲己

深度求索发布了DeepSeek-V2混合专家(MoE)语言模型,每百万tokens,2元人民币价格,简直便宜到令人发指(而且不是活动价格噢),可以说是继Groq以后,AI领域最惊艳的新闻了。那让我们来探究一下深度求索都做了哪些技术上的创新。

一、DeepSeek-V2基本情况

DeepSeek-V2依然是Transformer架构,包含2360亿个总参数,其中210亿个参数处于激活状态,支持128K的上下文长度。与其上一代模型DeepSeek 67B相比,DeepSeek-V2实现了显著更强的性能,同时节省了42.5%的训练成本,减少了93.3%的KV缓存,并将最大生成吞吐量提升至5.76倍。使用了8.1万亿个tokens的高质量、多源的语料库上进行预训练,通过收集150万个对话会话,涵盖了数学、代码、写作、推理、安全等多个领域,对DeepSeek-V2 Chat(SFT)进行监督微调(SFT)。采用组相对策略优化(GRPO)来进一步使模型与人类偏好对齐并产生DeepSeek-V2 Chat,即使只有210亿个激活参数,仍然在开源模型中达到了顶尖性能。

在《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》这篇论文中,深度求索提出了两个创新点,多头部潜在注意力(MLA)和DeepSeekMoE。传统的Transformer架构中的多头部注意力(MHA)的键值(KV)缓存对LLMs的推理效率构成了重大障碍,虽然有了分组查询注意力(GQA)和多查询注意力(MQA),但是这些方法在试图减少KV缓存时往往牺牲了性能。为此深度求索提出了多头部潜在注意力(MLA),利用低秩键值联合压缩方法,在推理过程中显著减少了KV缓存,从而提高了推理效率。架构方面,DeepSeekMoE架构采用细粒度的专家分割和共享专家隔离,以实现更高的专家专业化潜力,与传统的MoE架构如GShard相比,能够以经济的成本训练强大的模型。

为了讲清楚论文中的多头部潜在注意力,先说说注意力机制是什么,这可以说是Transformer架构的精髓所在。想象一下,你正在阅读一本书,并且想要理解一个复杂的句子,你可能需要关注句子中的不同部分,比如名词、动词和形容词,以便理解整个句子的意思。在Transformer模型中也是类似的处理过程,当用户输入一个问题时,Transformer模型会使用注意力机制来处理这个句子。

首先,模型会把整个句子拆分成单个的单词。然后对于每个单词,模型会给它贴上三种不同的标签:问题标签(Q)、关键词标签(K)和信息标签(V)。问题标签(Q)的作用是帮助模型找出"这个单词最相关的是哪些其他单词"。关键词标签(K)则代表着其他单词的"关键信息"。信息标签(V)里存储着单词本身的实际含义。

接下来模型会把所有单词分成几个小组。在每个小组里它会计算当前单词的问题标签(Q)与其他单词的关键词标签(K)有多么相似,这个相似度就代表了"这个单词与其他单词有多么相关"。根据这些相似度分数的高低。模型会对其他单词的信息标签(V)赋予不同的权重。将它们合并起来。作为对当前单词含义的理解。经过上述过程,模型就得到了对每个单词的理解,最后将所有单词的理解合并,形成对整个句子的全面理解和表示。

有了对整个句子的全面理解模型就可以开始生成回答了。在自回归生成中,模型会一次生成一个单词或标记(token),每次生成时都会参考之前生成的单词,就像是在写故事时每个新句子都要考虑前面的内容一样。这个过程会一直持续,直到生成完整的回答。在生成答案的过程中,每生成一个新单词,这个新单词不仅会与问题句子中的每个单词进行注意力计算,还会与之前生成的单词进行自注意力计算。这个过程可以帮助模型更好地理解已生成内容的上下文从而生成更连贯的答案。在注意力计算时,模型会使用之前在处理问题句子时生成的K和V向量,以及生成过程中每个新单词的K和V向量。这些向量在第一次计算后就会被缓存下来,称为KV缓存(Key-Value Cache)。KV缓存不仅存储了问题句子的信息,还会动态地存储生成过程中每个新单词的信息。当生成答案中的下一个新单词时,模型会直接使用缓存的K和V向量,而不需要重新计算。你可以把KV缓存想象成写故事时的记忆辅助工具,它帮助你记住之前写过的所有重要信息,让你能够更快地继续写作,而不需要回头去查找。

二、如何解决KV缓存制约推理的效率问题

传统的多头注意力(MHA)机制中,每个注意力头都有自己独立的键(K)和值(V)向量,这导致了在推理过程中需要大量的内存来存储这些KV缓存。随着序列长度的增加,KV缓存的大小呈线性增长,这对于长序列处理和资源受限的环境是一个显著的挑战。为了解决KV缓存大小的问题,有研究者提出了分组查询注意力(GQA)和多查询注意力(MQA)。这两种方法通过共享键和值向量来减少每个注意力头所需的独立计算和存储,从而减少了KV缓存的大小。然而,这种共享机制可能会降低模型的表达能力和信息多样性,因为每个注意力头不再能够独立地关注输入序列的不同方面。这可能导致模型在捕捉复杂模式和关系方面的能力下降。

(1)多头潜在注意力(Multi-head Latent Attention, MLA)

多头潜在注意力(Multi-head Latent Attention, MLA)的核心是通过对键(key)和值(value)进行低秩联合压缩,从而降低推理过程中需要缓存的键值对的数量。也就是说,在传统的多头注意力机制中,对于每一个输入的token,我们需要在每一层的attention中存储它的键(key)和值(value)向量,以便后续的token可以通过查询(query)这些键值对来计算注意力权重。这些键值向量的总元素数量等于2nhdh,其中nh是注意力头的数量,dh是每个头的维度。当模型的层数、头数和维度较大时,这个缓存的开销是非常大的。

而MLA通过一种叫做键值联合低秩压缩的技术,将原本需要单独存储的键向量和值向量压缩到了一个维度更低的向量cKVt中。这个压缩后的向量维度为dc,远小于原来的2nhdh。在推理时,我们只需要存储这个压缩后的cKVt向量,而不需要存储原始的键值向量。这样就大大减少了缓存的元素数量,从而显著提升了推理的效率。

但是,你可能会担心这种压缩会导致信息的丢失,从而影响注意力机制的性能。然而,实验结果表明,MLA不仅没有损失性能,反而比标准的多头注意力取得了更好的结果。这其中的奥秘在于,MLA的联合压缩方式能够更好地利用键和值之间的相关性。在传统的多头注意力中,,键和值是分别独立生成和存储的。但实际上它们都是从同一个输入token生成的,彼此之间存在一定的相关性。MLA通过将它们压缩到同一个向量中,强迫模型去学习和利用这种相关性。这种联合建模的方式使得压缩后的向量能更好地总结原始键值对的信息。因此,MLA在大幅降低缓存开销的同时,还能通过更好地挖掘键值相关性而获得性能的提升,可以说是一举两得。

再简单说,低秩键值联合压缩就像一套精简的读书笔记,提炼和书中的精华,还浓缩了很多倍的知识,这样阅读时能够快速找到需要的知识点,从而事半功倍。MLA通过一套"极简主义"的压缩方法,在提速的同时还能保证注意力机制的准确性。这种创新的压缩方式让MLA在推理效率和性能上,都实现了显著的提升。

(2)解耦旋转位置嵌入

RoPE是Rotary Position Embedding的缩写,是一种能够帮助模型学习位置信息的方法。它通过对模型中的键向量和查询向量施加旋转变换,使得它们对位置敏感。在自然语言处理任务中,我们常常需要让模型理解输入序列中每个词的位置信息。但是,MLA为了提高计算效率,会把键向量压缩到更低的维度。如果我们按照原来的方法,直接在压缩后的键向量上使用RoPE,就会导致一个问题:在模型推理的时候RoPE引入的位置信息会妨碍一些矩阵运算,导致我们必须重复计算一些中间结果,这会大大降低推理速度。

深度求索提出的解耦RoPE就是为了解决这个问题。它的思路很巧妙:与其直接把位置信息加到键向量和查询向量上,不如单独准备一些表示位置的向量,在需要的时候再把它们附加上去。这样一来,位置编码就和键值压缩解耦了,两者就不会互相影响。这种解耦的设计可以兼顾计算效率和位置信息的利用。模型可以先用压缩过的键向量进行计算,等到需要位置信息时再把预先准备好的位置向量附加上去。这样既节省了计算资源,又能让模型充分利用位置信息。

三、DeepSeekMoE架构

DeepSeekMoE架构是一种针对大规模深度学习模型的高效训练方法,特别是在处理自然语言处理(NLP)任务时。该架构旨在以经济的成本训练强大的模型,同时保持高性能。以下是DeepSeekMoE架构的关键特点和组件的总结:

1. 基本架构

(1)专家分割:DeepSeekMoE将专家(在模型中的特定子网络)分割成更细的粒度,以提高专家特化和更准确的知识获取。这种细粒度的分割允许模型更有效地学习和利用特定领域的知识。

(2)共享专家与路由专家:架构中同时包含共享专家和路由专家。共享专家用于减少路由专家之间的知识冗余,而路由专家则负责处理特定的任务或数据部分。这种设计有助于提高模型的整体效率和性能。

2. 设备限制的路由

设备并行:在采用专家并行时,路由专家分布在多个设备上。为了限制与MoE(混合专家)相关的通信成本,DeepSeekMoE引入了设备限制的路由机制,确保每个token的目标专家分布在最多m个设备上,从而减少通信频率和成本。

3. 辅助损失

负载平衡:为了解决自动学习的路由策略中的负载平衡问题,DeepSeekMoE设计了三种类型的辅助损失,分别用于控制专家级负载平衡、设备级负载平衡和通信平衡。这些损失有助于确保模型训练过程中的资源高效利用和通信效率。

4. Token丢弃策略

计算预算:为了进一步减轻由不平衡负载引起的计算浪费,DeepSeekMoE引入了设备级的token丢弃策略。在训练期间,根据每个设备的平均计算预算,丢弃亲和度分数最低的token,直到达到计算预算。这种方法有助于优化计算资源的分配。

四、深度求索的基础设施

众所周知,深度求索母公司幻方之前是做量化交易的,本身就开发了萤火超算平台,其在AI基础设施层上的工程经验很丰富。在这次论文中提到DeepSeek-V2模型的训练框架和优化策略,有以下一些关键点:

1.HAI-LLM框架:这是一个由研究团队内部工程师开发的高效轻量级训练框架,用于训练DeepSeek-V2模型。

2.16路零气泡流水线并行:这是一种并行策略,将模型的不同层分配到不同的设备上,形成一个流水线。"零气泡"意味着尽量减少设备之间的空闲等待时间,提高并行效率。

3.8路专家并行:这是一种将模型分成多个子模型(专家)的方法,每个专家负责处理不同的输入。这样可以提高模型的容量和多样性。

4.ZeRO-1数据并行:这是一种数据并行策略,将训练数据分割成多个部分,在不同的设备上同时处理,以加速训练过程。

5.减少通信开销:由于DeepSeek-V2的特点,它可以不必使用张量并行训练,从而减少了设备之间的通信开销。

6.计算与通信重叠:为了进一步提高训练效率,研究团队将共享专家的计算与专家并行的通信操作重叠,充分利用计算资源。

7.定制CUDA内核:研究团队为一些关键操作,如通信、路由算法和跨专家的融合线性计算,定制了更快的CUDA内核,以加速这些操作。

8.FlashAttention-2优化:MLA模型也基于改进版的FlashAttention-2进行了优化,这是一种高效的注意力机制实现。

9.NVIDIA H800 GPU集群:所有实验都在配备NVIDIA H800 GPU的集群上进行。每个节点包含8个GPU,通过NVLink和NVSwitch在节点内高速互连。节点之间则使用InfiniBand进行通信。

五、总结

DeepSeek-V2模型的推出,不仅在技术上实现了突破,而且在性能上也取得了显著的提升。通过广泛的内部评估框架和一系列基准测试,DeepSeek-V2在多项任务上展现出了卓越的表现,包括语言理解、推理、数学问题解决、代码生成等。特别是在处理长序列任务时,其128K的上下文长度支持为模型提供了前所未有的理解能力和生成连贯性的能力。

通过采用创新的多头部潜在注意力(MLA)和DeepSeekMoE架构,DeepSeek-V2在保持高性能的同时,大幅降低了训练和推理的成本。这一成就标志着深度求索在大型语言模型领域的又一重要里程碑,为未来的AI研究和应用开辟了新的可能性。

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

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

相关文章

PyQt:界面无边框+实现窗口最小化(任务栏图标隐藏+托盘图标显示)

一、整体实现效果 诸如WX、各种管家的桌面显示方式。窗口关闭后,往往是任务栏图标消失,保持右下角托盘图标显示,保持后台运行。双击托盘图标后,窗口显示。 二、代码实现 from PyQt5.QtWidgets import * from ato_upgrade impo…

植物ATAC-seq文献集锦(一)——基因组篇

ATAC-seq(Assay for Transposase-Accessible Chromatin with high-throughput Sequencing)是一种用于探究染色质开放性区域的技术,该技术利用Tn5转座酶接近核小体疏松区域切割暴露的DNA,获得开放的染色质区段(Open Chromatin)&…

快速判断出485从站设备是否支持MODBUS RTU无线通讯

对于变频器和仪表设备,都支持485串口通讯,那么怎么判断从站设备支持那种协议呢?通常分为两种方式去判断:1.从设备参数参看2.从设备通讯报文查看。本次文章以以台达MH300系列变频器为例。 1.从设备通讯参数查看 使用设备之前一定…

Apple store 静安·苹果店欣赏

官网: https://www.apple.com/today/Apple 亚洲第一大商店:Apple 静安零售店现已在上海开幕 静安苹果欣赏

智能体Agent笔记

智能体的定义: 1. 可以感受环境中的动态条件 2. 能采取动作影响环境 3. 能运用推理能力理解信息,解决问题,产生推断,决定动作。 我个人觉得智能体是个饼,最核心的问题是,你如何解决大模型的幻觉问题&…

【mysql】主从同步时出错,如何恢复同步

mysql主从同步出错,这个时候从服务器会停止同步服务,等待人工恢复,此时有多种方法来解决。 一、查看状态 在从服务器,登陆mysql,查询从服务器的状态: 从服务器mysql> show slave status\G 图1 可以看…

迪安诊断数智中心战略与PMO负责人徐黎明受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 迪安诊断技术集团股份有限公司数智中心战略与PMO负责人徐黎明先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“软件研发项目管理指标体系建设实践”。大会将于6月29-30日在北京举办,敬请关注! …

Cocos 2048从创建到发布上线

一、制作2048小游戏过程 扫描体验2048小游戏 场景搭建,4X4棋盘和基础设置绘制背景板,包含预制体等信息考虑在棋盘中随机出现两个数字方块,数字为2,初始化操作滑动事件部分,让方块移动起来,每滑动一次就生成…

文本分类的深度注意图扩散网络 笔记

1 Title Deep Attention Diffusion Graph Neural Networks for Text Classification(Yonghao Liu、Renchu Guan、Fausto Giunchiglia、Yanchun Liang、Xiaoyue Feng)【EMnlp 2021】 2 Conclusion Text classification is a fundamental task with broad…

【刷题】一篇文章搞定“位运算”

只要春天不死,就有迎春的花朵年年岁岁开放,生命讲涅槃,生生不息,并会以另一种形式永存。 – 路遥 《平凡的世界》 (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥ (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥…

工作组PTH

文章目录 简述RID 500本地管理员密码喷洒何为RIP 500 安全标识符SID与RIDPTH为何必须是RID 500CrackMapExec进行密码喷洒 简述 在工作组PTH中为什么只有administrator账号可以,下面进行讲解与利用。RID 500本地管理员密码喷洒 何为RIP 500 安全标识符 安全标识符 安全标识符…

太速科技-基于VU3P的双路100G光纤加速计算卡

基于VU3P的双路100G光纤加速计算卡 一、板卡概述 基于Xilinx UltraScale16 nm VU3P芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v3.0 x16智能加速计算卡,该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力…

P5490.扫描线(python)

这个洛谷怎么对于python不太友好呢,没几次能全过的 本题使用扫描线的模板,首先把所有x坐标排序去重,放进列表X中。把所有横线lines排序。这样把所有矩阵都分成了块。对于每一块,高lines[i1]-lines[i],宽就等于在这一块…

js图片回显的方法

直接上代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body>// HTML部分<input type"file" id"fileInput"><button onclick"show…

AI虚拟伴侣方案

打造类似Character AI的产品,现成的训练好的模型方案,适合做陪伴型虚拟女友等项目,近期看到的最佳项目: 1、项目背景: (1)项目动机:角色扮演LLM是AI的第二大消费用例,但通常被开源社区忽视。 (2)行业现状:缺乏与https://character.ai/提供的角色扮演LLM相对应的…

SpringBoot集成Curator实现Watch事件监听

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Zookeeper是一个Ap…

jenkis

文章目录 安装插件配置构建超时自动停止 安装插件 在线安装&#xff1a;安装jenkins后&#xff0c;初次启动的时候安装插件 在线安装&#xff1a;插件管理&#xff0c;可选插件中 离线安装&#xff1a;下载插件(.hpi格式) 使用该方法安装插件每次只能安装一个插件&#xff0c;…

软件设计中的数字:7

“ 使软件更易理解的秘密&#xff1a;米勒法则” 小游戏 学习之前先一起玩一个小游戏。 3秒钟时间&#xff0c;看看下面的图片中有多少个小块&#xff1f; 3秒到了&#xff0c;数出来了吗&#xff1f;22个。 没数出来也没关系&#xff0c;我也没数出来o(╥﹏╥)o 现在&…

CentOs搭建Kubernetes集群

kubeadm minikube 还是太“迷你”了&#xff0c;方便的同时也隐藏了很多细节&#xff0c;离真正生产环境里的计算集群有一些差距&#xff0c;毕竟许多需求、任务只有在多节点的大集群里才能够遇到&#xff0c;相比起来&#xff0c;minikube 真的只能算是一个“玩具”。 Kuber…

软件验收测试需要做哪些测试?

软件验收测试是在软件开发完成后的最后一个阶段&#xff0c;用来验证软件是否符合需求和预期的功能。在进行软件验收测试时&#xff0c;需要进行以下几种测试&#xff1a; 功能测试&#xff1a;验证软件的各项功能是否符合需求和预期。包括输入输出的正确性、功能的完整性、功能…