← 返回蜂巢洞察

从Mixtral到Kimi K3:专家混合模型是如何发展的

在本文中,我们将探讨混合专家模型是如何从最初仅有少数几个“专家”组件,发展到每层包含近900个“专家”组件的,以及那些使得这种稀疏架构仍能保持可训练性且成本可控的压缩机制与稳定性机制。 开放权重的混合专家模型发展速度惊人:Mixtral的总参数数量约为470亿,DeepSeek-V3达到了6710亿,而Kimi K3的参数数量更是突破了万亿大关。令人惊讶的是,并非这些模型的规模本身,而是每个模型实际上只使用极少量参数来处理每一个输入数据。 Kimi K3拥有2.8万亿个参数,但其中仅有约1040亿个参数被用于处理任何一个输入数据。在几乎每一层中,都有一个小型“路由器”从896个专门的前馈网络中

在本文中,我们将探讨混合专家模型是如何从最初仅有少数几个“专家”组件,发展到每层包含近900个“专家”组件的,以及那些使得这种稀疏架构仍能保持可训练性且成本可控的压缩机制与稳定性机制。

开放权重的混合专家模型发展速度惊人:Mixtral的总参数数量约为470亿,DeepSeek-V3达到了6710亿,而Kimi K3的参数数量更是突破了万亿大关。令人惊讶的是,并非这些模型的规模本身,而是每个模型实际上只使用极少量参数来处理每一个输入数据。

Kimi K3拥有2.8万亿个参数,但其中仅有约1040亿个参数被用于处理任何一个输入数据。在几乎每一层中,都有一个小型“路由器”从896个专门的前馈网络中选择16个来处理数据,而另外两个共享的“专家”节点则负责处理剩余的数据。

本文重点探讨的就是这种“宽度导向”的设计理念——即如何让模型拥有庞大的计算能力,却又不必为每个输入数据都消耗全部的计算资源。这与“序列记忆”机制不同,后者关注的是模型如何存储和检索之前处理过的信息。

为了了解Kimi K3是如何实现这种设计的,我们将通过分析混合专家模型的四种发展架构来探究这一过程。

Mixtral就是一个典型的开放权重混合专家模型示例:它将每个输入数据分配给少数几个全规模的“专家”节点进行处理。DeepSeekMoE则将这项任务分散到了更多粒度更小的“专家”节点中。LatentMoE进一步压缩了数据传输路径,使得这些“专家”节点能够在更小的空间内高效工作。最终,Kimi K3在LatentMoE的基础上加入了数值稳定性保障机制,并实现了每层896个“专家”节点之间的均衡数据分配。

通过阅读本文,你将学会如何解读混合专家模型的参数配置以及活跃参数的数量,从而理解这些参数对模型计算性能和数据处理流程的影响。

仅激活一小部分“专家”节点正是混合专家模型之所以具有吸引力的原因,但这也带来了新的瓶颈。例如,被选中的“专家”节点的权重仍然需要从GPU内存中读取,而且输入数据的表示形式也可能需要在不同的GPU之间进行传输。下面介绍的这些架构其实就是人们为了解决这些问题而不断尝试的结果。

先决条件

本文属于概念性文章,因此不需要安装任何软件或运行任何程序。

  • 建议具备:对神经网络以及Transformer层的基本结构有所了解,熟悉注意力机制和前馈网络的运作原理。

  • 无需预先掌握:Kimi K3的具体工作原理、混合专家模型的路由机制或分布式训练技术。这些内容都会在文中详细讲解。

  • 不需要编写代码或使用任何工具。

目录

1. 从单一密集层到专家组合架构

Transformer层会执行两种不同的功能。

注意力机制使各个标记能够相互交换信息:某个标记的表示形式可以融入序列中其他位置的信息。

随后,前馈网络会独立地对每个标记进行处理。当标记进入前馈网络时,相关的上下文信息早已被整合到了它的数值表示中。

而“专家组合架构”则改变了这种设计方式。在这种结构中,层内会包含多个具有不同权重的前馈网络。一个小的路由器会分析当前标记的表示形式,评估各个“专家”的处理能力,并选择其中最合适的几个来处理该标记;只有被选中的“专家”才会实际参与计算,它们的输出结果会被合并成最终的结果。

最终的输出仅是那些被选中“专家”输出结果的加权和,其中每个被选中的“专家”所贡献的比例取决于其在路由器中的权重。未被选中的“专家”则不会对该标记进行任何计算。

这种路由机制在每个专家组合架构层中都会独立执行。这些“专家”可以专门处理某些类型的任务,而路由器则会学习哪种组合方式最适合当前上下文中的特定标记。不过这些角色是在训练过程中形成的:它们之间可能会存在重叠,并且它们的功能也不一定与诸如“Python”或“history”这样的明确标签完全对应。因此,同一个单词在不同的上下文中可能会通过不同的处理路径,而同一个标记在不同层次也可能选择不同的“专家”来进行处理。此外,每层都有自己独立的“专家池”,所以一个层中的“专家7”与另一个层中的“专家7”是没有关联的。

一个广为认可的开放权重模型示例是Mixtral 8x7B。每个Mixtral层都包含八个前馈网络“专家”,而路由器会为每个标记选择其中两个来进行处理。被选中的组合可能会随着标记的不同或层次的变化而改变。

8x7B这个名称容易引起误解。Mixtral实际上是一个单一的Transformer模型,并非由八个参数规模均为70亿的模型组成。它的注意力机制、嵌入层、归一化层等共享组件都只存在一个实例。

在每个层中重复出现的其实是前馈网络结构:每个“专家”都有自己独特的权重,其维度也与Mistral 7B中的普通前馈网络相同,即4,096 -> 14,336 -> 4,096。对于每个标记来说,路由器只会使用这八个前馈网络中的两个来进行计算。因此,Mixtral模型的总参数数量约为470亿,而非560亿;而对于每一个标记而言,实际上只有大约130亿个参数会被激活用于计算。这些被激活的参数包括了每层中被选中的两个“专家”以及模型中的共享参数。

明确说明这种设计能够带来哪些优势是非常重要的。实际上,每个标记仍然需要经过每一层中的两个全尺寸FFN进行处理,因此Mixtral所进行的FFN计算量大约是Mistral 7B中单个FFN计算量的两倍,但相比同时运行全部八个专家模型所需的计算量来说,却只相当于四分之一。它的优势并不在于使用了更小的专家模型或减少了计算量,而在于它能够利用规模更大的参数池,而无需为每个标记都遍历整个参数池。

113f5ea8-5a9b-4777-be7f-09d256a0d790

图1:左侧显示,一个密集层会将每个标记通过一个FFN进行处理;右侧显示,混合专家层虽然保留了许多专家FFN,但每个标记只会激活其中几个。Mixtral使用了8个专家模型中的2个,因此总参数量增加了,但每个标记所需处理的计算量却大大减少了。

2. MoE是如何在Mixtral的基础上进一步发展的

Mixtral所使用的8个专家模型实际上就是8个标准尺寸的FFN,而不是某个大型FFN被分割成8个小部分。如果使用更多的专家模型,每个标记就可以结合更多学习到的转换规则,但这样一来,计算量也会显著增加。DeepSeekMoE提出了这样一个问题:是否可以将相同的计算资源分配给更多个规模较小的专家模型。

通常情况下,FFN会将标记向量扩展成维度更高的内部表示形式,在那里对其进行转换,然后再将其还原回原来的尺寸。

例如,一个2000维的标记向量可能会被扩展成8000维的内部表示,然后再被投影回2000维。之所以要恢复到原来的尺寸,是因为只有这样,它的处理结果才能继续在模型的后续部分中进行处理。

DeepSeek通过缩小内部处理层的规模来减小专家模型的体积。如果用4个规模较小的专家模型来替代1个大型专家模型,那么路由器可以选择的数量大约会是原来的4倍,同时专家模型所需的计算量也会保持大致不变。这样一来,每个标记就会得到多个小型FFN的处理结果,而不再只是依赖一两个大型FFN。虽然这不能保证每个专家模型都会专注于学习某一项特定的功能,但至少能为训练过程提供更多灵活的选择。

DeepSeekMoE还引入了另一个创新机制:共享专家模型。被路由选择的专家模型只会处理那些被选中的标记,而共享专家模型则会处理所有的标记。

可以把共享专家模型想象成通用的库代码。如果多个被路由选择的专家模型都需要进行相同的转换操作,那么让每个模型都单独学习这个转换规则就会造成参数的浪费。而共享专家模型只需要学习一次这种通用转换规则,然后将其应用于所有标记上,这样各个被路由选择的专家模型就可以有更多的空间去处理那些因上下文不同而需要有所差异的转换操作了。

DeepSeek将这种机制称为“捕捉通用知识”。设计者并不会给共享专家模型指定特定的功能,比如语法分析或编程能力,而是让训练过程来决定它应该学习哪些通用知识。

6d264319-26a8-4b9a-97d1-44eccc1d8ffe

图2:DeepSeekMoE所做的两项改动的概念性示意图。首先,用更多数量、规模较小的路由式全连接层取代了少数规模较大的路由式全连接层;其次,增加了一个始终处于激活状态的共享全连接层。这些图形只是为了说明问题,并非代表DeepSeek-V3实际使用的专家数量。DeepSeek-V3在每一层中都使用1个共享专家和256个路由式专家,每个令牌会选取8个路由式专家来进行计算。

DeepSeek-V3将这种架构应用到了更大规模的模型中:它的绝大多数层都使用1个共享专家和256个路由式专家,每个令牌仍会选取8个专家进行计算。虽然更多的专家能够提升模型的处理能力,但这也使得模型的物理执行过程变得更加复杂。

在我们接下来的讨论中,有两个因素非常重要。

第一个因素与GPU内部的结构有关。专家模型学习得到的权重数据是以矩阵的形式存储在GPU的高带宽内存中的。在GPU能够使用这些权重数据进行计算之前,必须先由硬件将这些矩阵读入内存中。

当许多令牌同时需要使用同一个专家模型时,GPU可以重复利用这些权重数据来处理多个令牌的计算任务;而当只有少数令牌需要使用某个专家模型时,GPU就需要传输大量的权重数据,尽管实际进行的算术运算量并不大。因此,GPU的计算单元可能会花费大量时间来等待这些数据的传输。

由此可见,瓶颈并不在于GPU进行乘法运算的速度,而在于它将权重数据传输给计算单元的速度。这种数据传输速度被称为内存带宽,它直接决定了模型能否实现低延迟的服务。

第二个因素与多台GPU之间的通信有关。对于一个拥有数百个专家模型的系统来说,通常不可能在每台GPU上都存储所有的专家模型,因此这些专家模型会被分散存储在多台GPU上。

假设某个令牌由7,168个数值组成的向量来表示,就像DeepSeek-V3中的那样。如果它的路由机制需要从其他GPU上获取专家模型的权重数据,那么系统就需要将这个包含7,168个数值的向量发送到所有被选中的GPU上。每个专家模型会返回另一个长度相同的向量,最终这些结果会被合并在一起。这种多台GPU之间的令牌向量交换过程被称为全互连通信

这种设计方式揭示了“细粒度划分”所能解决与不能解决的问题:虽然将内部结构细化会使每个专家模型的规模变小,但DeepSeek会按比例激活更多的专家模型,从而确保总的计算能力大致保持不变。此外,发送到每台GPU上的令牌向量长度也始终保持不变。因此,即使每个专家模型的规模变小了,需要传输的数据量也可能不会增加。细粒度划分为模型提供了更加灵活的开发框架,它并不会压缩数据在各个组件之间的传输路径。

正是这种考虑促使人们提出了LatentMoE这一技术方案:如果能在将令牌向量发送给专家模型之前先对其进行压缩,在这个较小的空间内完成计算任务,然后再将结果解压出来,那么会怎么样呢?

3. LatentMoE:压缩专家处理路径

LatentMoE是由NVIDIA的一个研究团队提出的,并被应用在Nemotron 3模型系列中。Kimi K3并没有发明这种底层架构,而是采用了LatentMoE,并对其中的某些部分进行了优化处理,这些优化内容将在下一节中详细讨论。

其核心思路非常简单:在将某个数据样本发送给相应的专家处理模块之前,LatentMoE会将其完整的表示结构压缩到一个规模较小的潜在空间中;这些专家处理模块完全在这个缩小的空间内进行操作,它们的输出结果也会被重新转换回模型的原始维度。这里所说的“潜在空间”,其实就是指这些专家处理模块所使用的压缩工作空间。

路由器仍然会使用样本的原始完整表示结构;那些被共享出来的专家处理模块也依然会使用原始的7,168维数据结构。只有通过这些专家处理模块的数据传输路径才会被压缩。

17b2ef73-83de-4bac-bc53-21461fce6ce5

图3所示:LatentMoE仅压缩数据传输路径。在Kimi K3中,一个共享的降维处理会将数据表示结构的维度从7,168减少到3,584,然后再将这些数据发送给选定的专家处理模块;这些专家处理模块会对输出结果进行加权合并和归一化处理,最后再通过另一个共享的升维处理将结果转换回7,168维。路由器以及另外两个共享的专家处理模块则继续使用原始的7,168维数据结构。

这种压缩机制能够同时降低两种开销:首先,每个专家处理模块的输入和输出矩阵都只需要处理3,584维的数据,而不是7,168维,因此它们所包含的权重数量更少,在运行时也需要读取更少的权重数据;其次,当这些专家处理模块分布在不同的GPU上时,系统只需向每个选定的专家发送3,584维的向量,而无需传输原始的7,168维向量。这些专家处理模块会返回长度相同的压缩结果,最后这些结果会被重新组合并转换回7,168维。在K3的半尺寸设计中,每条数据传输路径所携带的信息量实际上只有原来的一半。

LatentMoE可以将这些节省下来的计算资源用于两种用途:要么保持原有的专家数量不变,从而降低推理成本;要么增加可用的专家处理模块的数量,并提高每个样本被分配给专家处理模块的频率,而不会导致权重数据的传输量和跨GPU通信量像在原始7,168维结构下那样增加。

这种设计与DeepSeek的细粒度优化方法不同——DeepSeek虽然也会压缩数据结构,但只会缩小每个全连接层中间部分的维度,而保留其输入和输出端的维度不变。这两种方法其实是兼容的,因为它们所针对的是不同的压缩目标。

然而,压缩技术仍然存在一定的局限性:如果潜在表示结构的维度太低,那么在降维处理过程中可能会丢失专家处理模块所需要的信息;而共享的降维和升维操作本身也会增加额外的计算开销。

因此,潜在的维度数量其实是一种需要把握的平衡点,而不是一个需要被最小化的数值:Kimi开发的K3模型最终确定了3,584个维度的设置,这一数字仅为其7,168维模型的一半。这样的设计使得相关算法的运行成本大大降低,从而能够显著扩大专家系统的规模;但随之而来的问题就是:在训练过程中,如何保持如此众多的“专家”模块的稳定性呢?

4. Kimi K3如何使LatentMoE保持稳定性

Kimi K3包含93个主干层。其中第一层使用密集型的FFN结构,而其余的92层则采用Stable LatentMoE技术。这92层中的每一层都拥有自己的路由机制以及由896个专家模型组成的独立池。因此,“896个专家中的16个”这一表述实际上指的是在每一个LatentMoE层都会进行独立的路由决策,而不是整个模型共用一个全局专家池。

当某个标记到达这些层中的某一层时,会发生以下过程:

  1. 路由机制会对这896个专家模型进行评分,并从中选择16个。

  2. 无论选择了哪些专家模型,都会有两个全宽共享的专家模型来处理这个标记。

  3. 经过路由处理后,该标记的维度会从7,168维降维到3,584维。

  4. 随后,这16个被选中的专家模型会处理这个降维后的数据。

  5. 它们计算出的结果会被加权合并、进行归一化处理,然后再被重新投影回7,168维。

  6. 最后,这些经过路由处理和归一化的结果会被叠加在一起。

这种设计使得K3能够在模型中容纳2.8万亿个参数,同时对于每个标记来说,只有大约1040亿个参数会被实际激活。

然而,这样的架构也会带来三个训练上的问题。Stable LatentMoE为每一个问题都提供了一套针对性的解决方案。

ad080ec3-822c-4fff-aa1e-2df126850e30

图4所示:Stable LatentMoE解决了三个不同的问题:RMSNorm机制稳定了路由分支的数值规模;SITU-GLU功能限制了异常大的激活值;Quantile Balancing则确保了各专家模型的贡献权重保持均衡,从而避免了选择偏差。

问题1:组合后的专家模型输出结果可能存在数值规模上的差异。

不同的标记会触发不同的专家模型组合,并且这些组合所对应的路由权重也会不同,因此,在进行上采样处理之前,最终的组合结果在数值规模上可能会存在差异。

K3在将选中的专家模型的输出结果合并之后,但在将其从3,584维重新投影回7,168维之前,会应用RMSNorm算法。该算法并不会使这些专家模型的计算结果完全相同,也不会抹去它们原本计算出的数值,而是会重新调整这些结果的数值规模,从而确保在上采样时输入的数据具有更加稳定的数值大小。

问题2:两个较大的内部数值相乘可能会导致激活值出现剧烈波动。

LatentMoE首先会使用共享的投影机制将标记数据的维度从7,168维压缩到3,584维。在每一个被选中的专家模型内部,会有两个无偏见的线性投影算法分别生成3,072维的预激活值g(门控值)和v(数值)。随后,SITU-GLU会将门控值转换为4 tanh(g/4) sigmoid(g)的形式,将数值转换为25 tanh(v/25)的形式,然后对这两个结果进行逐元素相乘运算。最终得到的3,072维乘积结果会再次通过第三个无偏见的线性投影算法,从而得到最终的3,584维专家模型输出结果。

这三种投影方式、非线性变换以及它们之间的乘法运算共同构成了一个带有门控机制的专家级全连接神经网络。

ec7610a8-618c-493a-a409-86bf981e7a6e

图5:橙色投影属于共享的LatentMoE封装结构,蓝色投影则属于某个被选中的专家模块。该专家模块会在一个临时建立的3,072维计算空间中执行其特定的计算任务,并最终产生一个3,584维的结果输出,这种结果格式是所有专家模块进行聚合处理所必需的。

无论选择的是门控分支还是值分支,信号在传递过程中都会依次经过四次学习得到的矩阵乘法运算:首先是共享的LatentMoE降维投影,然后是 해당分支对应的专家输入投影,接着是专家输出投影,最后才是共享的LatentMoE升维投影。

K3论文将这一过程描述为“近乎连续的四次矩阵乘法”,因为实际的计算流程并非一条不间断的线性链:门控分支和值分支会并行运行,然后通过SiTU运算以及逐元素相乘的方式进行交互;在被选中的专家模块的输出结果被聚合并经过归一化处理后,才会进行最后的投影运算。因此,这四次矩阵乘法操作无法被简化为一次单一的矩阵乘法。

K3论文的作者指出,这种组合结构存在稳定性问题,在他们所设计的模型规模下,内部激活值可能会出现异常增长的现象。当精度较低时,某个异常大的数值可能会导致计算结果溢出,或者迫使共享的量化机制为了处理普通数值而牺牲精度。

SwiGLU结构中,乘法运算正是导致这种无限制数值增长的原因之一:其值分支会生成候选数值,而门控分支则利用Swish函数来调节这些数值通过该结构的强度。Swish门控机制以及值分支中的线性因子都可能无限增大,因此两个较大的数值相乘时,最终的结果可能会变得非常大。

为此,K3团队将SwiGLU替换为了SiTU-GLU(Sigmoid Tanh Unit GLU)。SiTU机制能够将门控分支中的线性因子的幅度限制在4以内,将值分支中的幅度限制在25以内,同时保留了原有的Sigmoid门控功能,并使得在接近零的值域内SiTU-GLU的表现与SwiGLU相当。因此,在专家输出投影之前的那次乘法运算,其结果的大小被有效地限制在了4 × 25 = 100的范围内。之后的投影操作虽然仍然可以改变结果的规模,但专家模块内部的乘法运算已经不再存在无限制增长的可能性了。

86da1d0b-a0a2-4c3b-a157-2b3eeb935a4f

图6:这是一个用于说明的一维示例图。在这个图中,两个分支的输入值都等于同一个标量x。SiTU-GLU在接近原点时的表现与SwiGLU相似,但其幅度会被限制在100以内,而SwiGLU的幅度则可以继续无限增大。在实际的应用中,不同的专家模块会生成各自的分支向量,然后通过逐元素相乘的方式将这些向量合并起来。

问题3:路由分配可能会变得不均衡。

路由器会为每位专家计算每个令牌的亲和度分数,然后选择得分最高的16位专家。由于这种机制是经过训练得来的,因此有些专家能够获得远比其他专家更多的令牌。这些专家就会成为系统中的“瓶颈”,而那些很少被选中的专家则因训练不足而无法发挥应有的作用。

一种常见的解决办法是在模型的训练目标中加入平衡损失项,但这样会导致优化器在预测质量与专家使用的均衡性之间做出权衡。

DeepSeek-V3采取了另一种方法,其主要的全球平衡机制是无辅助损失调整。该机制为每位专家分别设置不同的选择偏好:在每次训练后,使用不足的专家的偏好值会增加固定幅度,而负担过重的专家的偏好值则会减少相同幅度。

这种方法确实有效,但更新幅度的大小必须谨慎选择——如果幅度太小,调整效果会不明显;如果幅度太大,则可能导致系统负载出现波动。(DeepSeek-V3还保留了少量的序列级平衡损失项,以防止某个特定序列内部出现极端不平衡的情况。)

K3仍然为每位专家设置不同的选择偏好值,但不再使用固定的调整幅度,而是采用分位数平衡机制。该机制会分析每位专家在全局训练过程中的得分分布情况,并据此为每位专家计算出不同的调整幅度:当专家的得分表明还需要进一步调整时,就会增加调整幅度;而当专家的得分已经接近目标值时,调整幅度就会减小。之所以称为“分位数平衡”,是因为调整幅度是根据专家得分分布的分位数来确定的,而不是所有专家的偏好值都按照相同的固定幅度进行调整。

这种机制改变的是哪些专家会被选中,而非他们的输出对整体系统的贡献程度。K3虽然使用带有偏见的得分来对专家进行排序,但最终确定哪些专家会被选中时,还是会根据他们未受偏见影响的原始得分来计算他们的贡献权重。新计算出的偏好值会在下一次训练中生效,而在推理阶段,则会使用最终的偏好值。

分位数平衡机制的目标是确保在整个全局训练过程中,各专家的实际负担能够保持均衡,而不是要求每位专家在每个具体的句子或序列中的使用频率完全相同。它的作用更为有限:目的是防止896位专家组成的团队中,只有少数专家被频繁地用于训练任务,从而避免计算资源过度集中。

结论:让稀疏的计算资源得到有效利用

传统的Transformer模型会将所有令牌都通过相同的FFN进行处理。Mixtral提出了另一种基于MoE的解决方案:保留多个完整的FFN,但只将部分令牌路由到其中几个FFN进行处理。DeepSeekMoE则进一步将这一机制细化为更多个小型处理模块,并增加了可用于多种场景的共同处理模块。

LatentMoE采取了不同的实现方式。它不会将模型生成的完整令牌表示形式发送给所有被选中的专家,而是会压缩这些数据,然后在较小的空间内进行专家特定的计算操作,最后再恢复数据的原始格式。这种做法既减少了数据在专家处理模块之间的传输量,也降低了GPU之间交换的令牌数据量。

Kimi K3将这一设计方案应用到每层MoE结构中,使得每个层能够使用896个专家模型进行计算;同时,每个令牌会选取16个专家模型来进行处理。在这种规模下,仅仅依靠压缩技术是远远不够的。RMSNorm用于控制最终计算结果的规模,SITU-GLU则限制了每个专家模型内部的乘法激活操作,而Quantile Balancing机制则能够在分配训练任务时避免给专家模型的贡献权重带来额外的平衡偏差。

关键在于:MoE结构并非只是因为使用了较少的参数才具有优势。实际上,增加模型的稀疏性会引发新的数值计算、路由优化以及通信方面的挑战,因此架构设计必须同时解决这些问题。而Stable LatentMoE正是Kimi K3在模型层面为应对这些挑战而提出的解决方案。

延伸阅读:若想更深入地了解Kimi K3中与序列记忆相关的技术机制,可以参阅从GPT-2到Kimi K3:语言模型是如何学会管理内存的这篇文章。

参考文献

  1. Jiang等人(2024年)。《Mixtral of Experts》。arXiv:2401.04088

  2. Dai等人(2024年)。《DeepSeekMoE:迈向混合专家模型中的终极专业化技术》。arXiv:2401.06066

  3. DeepSeek-AI等人(2024年)。《DeepSeek-V3技术报告》。arXiv:2412.19437

  4. Elango等人(2026年)。《LatentMoE:在混合专家模型中实现每FLOP计算量与参数数量的最佳平衡》。arXiv:2601.18089

  5. Kimi团队(2026年)。《Kimi K3:开放前沿智能技术》。arXiv:2607.24653

  6. Wang等人(2024年)。《混合专家模型中的无辅助损失负载均衡策略》。arXiv:2408.15664

相关文章

技术实践

创造了现代人工智能的那篇论文:Transformer背后的故事

每次你与现代人工智能模型进行交互时,其实都在使用一种源于2017年那篇名为《注意力才是关键》的研究论文所提出的架构。 我们在freeCodeCamp.org的YouTube频道上发布的最新视频,详细讲述了八位谷歌研究人员是如何着手改进Google Translate的,最终又如何彻底改变了整个科技领域的格局的。 在这一突破性成果出现之前,人工智能领域主要依赖循环神经网络。这类模型会按顺序逐词处理文本,但这带来了两个巨大的障碍: “上下文丢失”:当处理长句或长段落时,模型会忘记开头那些重要的信息。 “训练速度缓慢”:由于需要顺序处理数据,各个步骤无法并行执行,因此即使使用庞大的GPU集群,模型的

阅读全文
技术实践

如何从大型语言模型中获取可靠的结构化数据

大多数关于如何调用语言模型的教程都会在 JSON.parse(response.content) 这行代码处结束。这段代码在处理前十个测试用例时确实可以有效运行。但当你开始实际应用时,会在第400次左右的一次请求中遇到问题:模型可能会返回一个它自己编造出来的日期,或者当你的数据结构应该包含5个元素时却返回8个数组项,又或者返回一个格式完全正确但实际上缺少某个字段的JSON对象。 我在开发Temploracraft这个简历工具时遇到了这样的问题。这个工具会接收用户上传的文档,并将其转换成应用程序可以编辑的结构化数据。 输入的数据确实具有很大的不可预测性:有些是两列结构的PDF文件,有些表格其实并

阅读全文
技术实践

演讲主题:SafeChat:如何在实时交易环境中大规模构建基于人工智能的安全系统

Bruna Pereira解释了DoorDash是如何构建这样一个能够处理各种类型内容的AI审核平台的。她介绍了如何用混合架构来取代那些仅依赖大语言模型的昂贵审核流程:利用快速的内部模型来过滤那些显而易见的错误,通过大语言模型进行多维度评估以做出更细致的判断,并使用无代码工作流程来进行后续测试。了解这种架构设计是如何在保障安全性的同时,使系统能够处理每天数百万条消息的。 作者:Bruna Pereira

阅读全文
技术实践

如何利用vLLM来扩展大语言模型在AI智能体中的应用范围

在本教程中,我将向您展示如何使用vLLM来优化大型语言模型的推理性能,从而提升AI代理的工作效率。我会帮助您理解大型语言模型推理的原理,分析为什么AI代理的任务会引发GPU调度和内存压力问题,并探讨vLLM是如何被设计出来以提高处理能力的。 接下来,我们将运行一台本地的vLLM服务器,并通过其兼容OpenAI的API,使用AI代理与它进行连接。 目录 背景知识 先决条件 什么是大型语言模型推理? 大型语言模型推理如何利用CPU和GPU 为什么AI代理的任务难以处理 vLLM是如何为AI代理任务提供支持的 设计动机与架构 步骤1:安装vLLM 步骤2:启动vLLM服务器 步骤3:将AI代理连接到

阅读全文