虽然专家混合层最常用于扩展语言模型,但其架构非常适合需要处理来自不同源(如文本、图像和音频)信息的的多模态系统。多模态模型的主要难题是从结构和统计特性根本不同的数据中创建统一表示。MoE 通过分配专门的子网络(专家)来处理不同的数据类型或任务,从而提供了一种管理这种复杂性的有效机制。多模态MoE的架构模式将MoE结合到多模态模型时,主要的架构决定在于专家如何在不同模态之间共享或分离。此选择影响参数效率、训练动态以及模型内部的知识共享程度。共享专家池参数效率高的方法是使用一个跨所有模态共享的单一专家池。在此设计中,一个单一门控网络负责路由令牌,无论它们是来自图像、文本序列还是其他来源。路由器学习根据输入表示将令牌导向合适的专家。此架构鼓励模型在不同模态之间找到共同模式。一些专家可能专注于处理单一模态(例如,“图像纹理”专家),而另一些则可能成为“整合”专家,针对来自不同模态的令牌组合激活,以执行跨模态推理。digraph G { rankdir=TB; node [shape=box, style="rounded,filled", fontname="sans-serif", fillcolor="#e9ecef"]; edge [fontname="sans-serif"]; subgraph cluster_input { label="输入令牌"; style=invis; img_token [label="图像令牌", fillcolor="#a5d8ff"]; txt_token [label="文本令牌", fillcolor="#b2f2bb"]; } gate [label="共享门控网络", shape=oval, fillcolor="#ffec99"]; img_token -> gate [label=""]; txt_token -> gate [label=""]; subgraph cluster_experts { label="共享专家池"; style="rounded,dashed"; node [fillcolor="#dee2e6"]; e1 [label="专家 1"]; e2 [label="专家 2"]; e3 [label="专家 3"]; e4 [label="专家 4"]; e_dots [label="...", shape=plaintext]; e_n [label="专家 N"]; } gate -> e1 [label="路由", style=dashed, color="#495057"]; gate -> e2 [style=dashed, color="#495057"]; gate -> e3 [style=dashed, color="#495057"]; gate -> e4 [style=dashed, color="#495057"]; gate -> e_dots [style=invis]; gate -> e_n [style=dashed, color="#495057"]; {rank=same; e1, e2, e3, e4, e_dots, e_n} }一个共享专家池,其中一个单一门控网络将图像和文本令牌路由到一组共同的专家。此方法的效果取决于门控网络学习模态特定路由的能力。这通常通过在每个令牌的向量表示前附加唯一的模态嵌入来实现,然后令牌进入 Transformer 堆栈。此嵌入的存在提供了一个强信号,门控网络可用于区分令牌类型。模态特定专家池另一种选择是为每种模态创建独立的、专用的专家池。在此配置中,MoE 层可能包含一组专门用于图像处理的专家,以及另一组用于文本处理的专家。路由机制可以有两种设计方式:单一的、感知模态的路由器: 一个单一门控网络路由令牌,但其输出受到限制。例如,对于图像令牌,它只能从专家1-8中选择;对于文本令牌,则从专家9-16中选择。独立的路由器: 模型为每种模态包含不同的MoE块。这是一种更清晰但参数更多的设计。此模式在专家层面强制执行严格的职责分离,这可以简化训练,并确保每种模态都有专门的能力可用。然而,它增加了总参数数量,并减少了在单一MoE层内出现跨模态学习的机会。digraph G { rankdir=TB; graph [splines=ortho]; node [shape=box, style="rounded,filled", fontname="sans-serif", fillcolor="#e9ecef"]; edge [fontname="sans-serif"]; subgraph cluster_input { label="输入令牌"; style=invis; img_token [label="图像令牌", fillcolor="#a5d8ff"]; txt_token [label="文本令牌", fillcolor="#b2f2bb"]; } router [label="模态感知路由器", shape=oval, fillcolor="#ffec99"]; img_token -> router; txt_token -> router; subgraph cluster_img_experts { label="图像专家"; style="rounded,dashed"; node [fillcolor="#a5d8ff"]; img_e1 [label="专家 1"]; img_e2 [label="专家 2"]; img_edots [label="..."; shape=plaintext]; } subgraph cluster_txt_experts { label="文本专家"; style="rounded,dashed"; node [fillcolor="#b2f2bb"]; txt_e1 [label="专家 1"]; txt_e2 [label="专家 2"]; txt_edots [label="..."; shape=plaintext]; } router -> img_e1 [label="路由图像\n令牌", style=dashed, color="#1c7ed6"]; router -> txt_e1 [label="路由文本\n令牌", style=dashed, color="#37b24d"]; {rank=same; img_e1, img_e2, img_edots} {rank=same; txt_e1, txt_e2, txt_edots} }一种带有专用专家池的架构。路由器将令牌导向模态特定的一组专家。分析多模态模型中的专家使用情况在多模态背景下使用MoE的一个显著优点是,能够分析路由器行为,以了解模型如何分配其容量。通过记录每种模态的令牌选择了哪些专家,您可以直接观察专业化的出现。对于使用共享专家池训练的模型,您可能会看到这样一种分布:某些专家绝大多数被选择用于一种模态而非另一种模态。这确认门控网络已成功学习区分令牌类型并相应地分配资源。{"data":[{"x":["专家 0","专家 1","专家 2","专家 3","专家 4","专家 5","专家 6","专家 7"],"y":[85,92,78,81,12,8,15,11],"name":"图像令牌","type":"bar","marker":{"color":"#339af0"}},{"x":["专家 0","专家 1","专家 2","专家 3","专家 4","专家 5","专家 6","专家 7"],"y":[15,8,22,19,88,92,85,89],"name":"文本令牌","type":"bar","marker":{"color":"#51cf66"}}],"layout":{"barmode":"stack","title":{"text":"按模态划分的专家使用情况"},"xaxis":{"title":"专家ID"},"yaxis":{"title":"路由令牌的百分比"},"font":{"family":"sans-serif"},"legend":{"orientation":"h","yanchor":"bottom","y":1.02,"xanchor":"right","x":1}}}共享专家池中路由器分配的分布。专家0-3已专注于处理图像令牌,而专家4-7已专注于文本。训练与性能考量尽管能力强大,多模态MoE模型仍带来独特的训练难题。负载均衡: 负载均衡的标准辅助损失变得更为重要。如果一个训练批次由单一模态主导(例如,包含许多图像但文本很少),专注于代表性不足模态的专家将缺少输入。这可能导致这些专家萎缩或失效。仔细的批处理(其中每个批次包含模态的均衡混合)对于稳定训练至关重要。数据整理: 模型培养专业化专家的能力直接取决于多模态数据集的质量和多样性。如果某些类型的数据稀缺,模型可能没有足够的例子来有效训练专用专家。容量因子: capacity_factor 决定每个专家的缓冲区大小,它需要仔细调整。多模态模型可能受益于更高的容量因子,以处理单个批次中来自不同源的令牌到达专家时的混合波动。通过提供结构化方式来管理不同数据流,专家混合为构建更强大、可扩展的多模态系统提供了引人注目的途径。按令牌分配专用计算资源的能力与整合来自不同来源信息的难题完全吻合。