ホームページ  >  記事  >  テクノロジー周辺機器  >  大規模モデルのモデル融合法について話しましょう

大規模モデルのモデル融合法について話しましょう

WBOY
WBOY転載
2024-03-11 13:10:15451ブラウズ

これまでの実践では、モデル融合は、特に判別モデルで広く使用されており、パフォーマンスを着実に向上させることができる方法と考えられています。ただし、生成言語モデルの場合、復号化プロセスが関係するため、その動作方法は判別モデルほど単純ではありません。

さらに、大規模モデルのパラメータ数の増加により、より大きなパラメータスケールのシナリオでは、単純なアンサンブル学習で考慮できる手法は、低パラメータの機械学習よりも制限されます。古典的なスタッキングおよびブースティングと同様、このようなメソッドは、スタック モデルのパラメーターの問題により簡単に拡張できません。したがって、大規模なモデルのアンサンブル学習には慎重な検討が必要です。

以下では、モデル統合、確率的統合、グラフティング学習、クラウドソーシング投票、MOE という 5 つの基本的な統合手法について説明します。

1. モデルの統合

モデルの統合は比較的単純です。つまり、大規模なモデルは出力テキスト レベルで統合されます。たとえば、3 つの異なる LLama モデルの出力結果を使用し、入力するだけです。それらはプロンプトとして表示されます。4 番目のモデルの参照用です。実際には、テキストによる情報伝達をコミュニケーション手段として利用することができます。その代表的な手法が、論文「Exchange-of-Thought: Enhancing Large Language Model Capabilities through Cross-Model Communication」に由来する EoT です。EoT は、新しい ' Exchange-of-Thought として知られる考えの交換フレームワークは、モデル間の相互コミュニケーションを促進し、問題解決プロセスにおける集団の理解を向上させるように設計されています。このフレームワークを通じて、モデルは他のモデルの推論を吸収して、独自のソリューションをより適切に調整および改善できます。論文内の図で表される:

大規模モデルのモデル融合法について話しましょう

著者がCoTと自己修正手法を同じ概念としてみなした後、EoTは新しい手法を提供するこれにより、複数のモデル間の階層的なメッセージングが可能になります。モデル間で通信することにより、モデルは互いの推論や思考プロセスを利用できるため、問題をより効果的に解決できます。このアプローチにより、モデルのパフォーマンスと精度が向上することが期待されます。

2. 確率的アンサンブル

確率的アンサンブルには、従来の機械学習手法との類似点があります。たとえば、アンサンブル法は、モデルによって予測されたロジット結果を平均することによって形成できます。大規模なモデルでは、確率的アンサンブルを変換モデルの語彙出力確率のレベルで融合できます。この操作では、融合される複数の元のモデルの語彙が一貫している必要があることに注意することが重要です。このような統合方法により、モデルのパフォーマンスと堅牢性が向上し、実際のアプリケーション シナリオにより適したものになります。

以下に、簡単な疑似コードの実装を示します。

うわー

3. グラフティング学習

グラフティング学習の概念は、データマイニングコンペティションから生まれた国内の Kaggle Grandmaster の Plantsgo から来ています。これは本質的に一種の転移学習であり、もともとは 1 つのツリー モデルの出力を別のツリー モデルの入力として使用する方法を説明するために使用されました。この方法は木の再生における接ぎ木に似ているため、この名前が付けられました。大規模なモデルでは、グラフティング学習のアプリケーションもあります。モデル名は SOLAR です。この記事は、「SOLAR 10.7B: Scaling Large Language Models with Simple butEffective Depth Up-Scaling」から来ています。この記事では、次のアイデアが提案されています。機械学習におけるグラフティング学習とは異なり、大規模モデルは別のモデルの確率結果を直接融合するのではなく、構造と重みの一部を融合モデルにグラフトし、特定の事前トレーニングプロセスを経て、モデルパラメータを新しいモデルに適合させることができます。具体的な操作は、後で変更するために n 層を含む基本モデルをコピーすることです。次に、最後の m 層が元のモデルから削除され、最初の m 層がそのコピーから削除され、結果として 2 つの異なる n-m 層モデルが作成されます。最後に、2 つのモデルが連結されて、2*(n-m) 層のスケーリングされたモデルが形成されます。

48 層のターゲット モデルを構築する必要がある場合は、2 つの 32 層モデルから最初の 24 層と最後の 24 層を取り出し、それらを接続して新しい 48 層モデルを形成することを検討できます。次に、結合されたモデルがさらに事前トレーニングされます。一般に、事前トレーニングを継続すると、最初からトレーニングするよりも必要なデータ量とコンピューティング リソースが少なくなります。

大規模モデルのモデル融合法について話しましょう

プレトレーニングを続行した後、調整操作を実行する必要があります。これには、命令の微調整と DPO という 2 つのプロセスが含まれます。命令の微調整では、オープンソースの命令データを使用し、それを数学固有の命令データに変換して、モデルの数学的機能を強化します。 DPO は、最終的に SOLAR チャット バージョンとなった従来の RLHF に代わるものです。

4.クラウドソーシング投票

今年のWSDM CUPの1位企画でもクラウドソーシング投票が採用されており、過去の国内世代大会でも実施されてきました。中心的な考え方は、モデルによって生成された文がすべてのモデルの結果に最も類似している場合、この文はすべてのモデルの平均であると見なすことができるということです。このようにして、確率の意味での平均がトークン生成結果の平均となります。テスト サンプルが与えられ、集計する必要がある回答の候補があるとします。各候補について、) と () の間の相関スコアを計算し、() の品質スコアとしてそれらを加算します。同様に、相関関係は定量化されます。ソースは、埋め込み層のコサイン類似性 (emb_a_s として示されます)、単語レベルの ROUGE-L (word_a_f として示されます)、および文字レベルの ROUGE-L (char_a_f として示されます) です。ここでは、リテラル And 意味論的なものを含む、人工的に構築された類似性インジケーターをいくつか示します。

コードアドレス: https://github.com/zhangzhao219/WSDM-Cup-2024/tree/main

5.MoE

最後に、これも最もです。重要な大規模モデル Mixture of Experts (MoE) は、複数のサブモデル (つまり「エキスパート」) を組み合わせて、複数の専門家の共同作業を通じて全体のパフォーマンスを向上させることを目的としたモデル アーキテクチャ手法です。予測効果。MoE 構造は、次のことが可能です。モデルの処理能力と動作効率が大幅に向上します。典型的な大規模モデル MoE アーキテクチャには、ゲート メカニズム (ゲート メカニズム) と一連のエキスパート ネットワークが含まれます。ゲート メカニズムは、入力データに基づいてエキスパートを動的に割り当てる役割を果たします。それぞれの重み付けは、エキスパートは、各エキスパートの最終出力への貢献度を決定するために使用され、同時にエキスパート選択メカニズムにより、ゲート信号の指示に従って実際の予測計算に参加するエキスパートの一部が選択されます。この設計により、全体的な計算要件が軽減されるだけでなく、モデルがさまざまな入力に基づいて最適な専門家を選択できるようになります。

専門家の混合 (Mixture of Experts、MoE) は、最近では新しい概念ではありません。混合エキスパート モデルの起源は、1991 年に発表された論文「ローカル エキスパートの適応的混合」に遡ります。この手法はアンサンブル学習に似ています。その核心は、独立したエキスパート ネットワークの集合に対する調整と融合のメカニズムを作成することです。独立したネットワーク (すなわち、「専門家」) は、データセットの特定のサブセットを処理し、特定の入力データ領域に焦点を当てる責任を負います。このサブセットは、特定のトピック、特定の分野、特定のデータに偏っている可能性があります。問題の分類などであり、表示の概念ではありません。

さまざまな入力データに直面したとき、重要な問題は、システムがどの専門家を処理するかを決定する方法です。ゲーティング ネットワークは、この問題を解決するためにここにあります。重み付けは、各エキスパートの職務責任を決定するために使用されます。トレーニング プロセス全体を通じて、これらのエキスパート ネットワークとゲート ネットワークは同時にトレーニングされ、明示的な手動操作は必要ありません。

期間中2010 年から 2015 年まで ここでは、混合エキスパート モデル (MoE) のさらなる発展に重要な影響を与えた 2 つの研究方向性があります:

组件化专家:在传统的MoE框架中,系统由一个门控网络和若干个专家网络构成。在支持向量机(SVM)、高斯过程以及其他机器学习方法的背景下,MoE常常被当作模型中的一个单独部分。然而,Eigen、Ranzato和Ilya等研究者提出了将MoE作为深层网络中一个内部组件的想法。这种创新使得MoE可以被整合进多层网络的特定位置中,从而使模型在变得更大的同时,也能保持高效。

条件计算:传统神经网络会在每一层对所有输入数据进行处理。在这段时期,Yoshua Bengio等学者开始研究一种基于输入特征动态激活或者禁用网络部分的方法。

这两项研究的结合推动了混合专家模型在自然语言处理(NLP)领域的应用。尤其是在2017年,Shazeer和他的团队将这一理念应用于一个137亿参数的LSTM模型(这是当时在NLP领域广泛使用的一种模型架构,由Schmidhuber提出)。他们通过引入稀疏性来实现在保持模型规模巨大的同时,加快推理速度。这项工作主要应用于翻译任务,并且面对了包括高通信成本和训练稳定性问题在内的多个挑战。如图所示《Outrageously Large Neural Network》 中的MoE layer架构如下:

大規模モデルのモデル融合法について話しましょう图片

传统的MoE都集中在非transfomer的模型架构上,大模型时代的transfomer模型参数量达百亿级,如何在transformer上应用MoE并且把参数扩展到百亿级别,并且解决训练稳定性和推理效率的问题,成为MoE在大模型应用上的关键问题。谷歌提出了代表性的方法Gshard,成功将Transformer模型的参数量增加至超过六千亿,并以此提升模型水平。

在GShard框架下,编码器和解码器中的每个前馈网络(FFN)层被一种采用Top-2门控机制的混合专家模型(MoE)层所替代。下面的图示展现了编码器的结构设计。这样的设计对于执行大规模计算任务非常有利:当模型被分布到多个处理设备上时,MoE层在各个设备间进行共享,而其他层则在每个设备上独立复制。其架构如下图所示:

大規模モデルのモデル融合法について話しましょう图片

为了确保训练过程中的负载均衡和效率,GShard提出了三种关键的技术,分别是损失函数,随机路由机制,专家容量限制。

辅助负载均衡损失函数:损失函数考量某个专家的buffer中已经存下的token数量,乘上某个专家的buffer中已经存下的token在该专家上的平均权重,构建这样的损失函数能让专家负载保持均衡。

随机路由机制:在Top-2的机制中,我们总是选择排名第一的专家,但是排名第二的专家则是通过其权重的比例来随机选择的。

专家容量限制:我们可以设置一个阈值来限定一个专家能够处理的token数量。如果两个专家的容量都已经达到了上限,那么令牌就会发生溢出,这时token会通过残差连接传递到下一层,或者在某些情况下被直接丢弃。专家容量是MoE架构中一个非常关键的概念,其存在的原因是所有的张量尺寸在编译时都已经静态确定,我们无法预知会有多少token分配给每个专家,因此需要预设一个固定的容量限制。

需要注意的是,在推理阶段,只有部分专家会被激活。同时,有些计算过程是被所有token共享的,比如自注意力(self-attention)机制。这就是我们能够用相当于12B参数的稠密模型计算资源来运行一个含有8个专家的47B参数模型的原因。如果我们使用Top-2门控机制,模型的参数量可以达到14B,但是由于自注意力操作是专家之间共享的,实际在模型运行时使用的参数量是12B。

整个MoeLayer的原理可以用如下伪代码表示:

M = input.shape[-1] # input维度为(seq_len, batch_size, M),M是注意力输出embedding的维度reshaped_input = input.reshape(-1, M)gates = softmax(einsum("SM, ME -> SE", reshaped_input, Wg)) #输入input,Wg是门控训练参数,维度为(M, E),E是MoE层中专家的数量,输出每个token被分配给每个专家的概率,维度为(S, E)combine_weights, dispatch_mask = Top2Gating(gates) #确定每个token最终分配给的前两位专家,返回相应的权重和掩码dispatched_expert_input = einsum("SEC, SM -> ECM", dispatch_mask, reshaped_input) # 对输入数据进行排序,按照专家的顺序排列,为分发到专家计算做矩阵形状整合h = enisum("ECM, EMH -> ECH", dispatched_expert_input, Wi) #各个专家计算分发过来的input,本质上是几个独立的全链接层h = relu(h)expert_outputs = enisum("ECH, EHM -> ECM", h, Wo) #各个专家的输出outputs = enisum("SEC, ECM -> SM", combine_weights, expert_outputs) #最后,进行加权计算,得到最终MoE-layer层的输出outputs_reshape = outputs.reshape(input.shape) # 从(S, M)变成(seq_len, batch_size, M)

MoE のアーキテクチャの改善に関して、スイッチ トランスフォーマーは 2 つの独立した入力 (つまり、2 つの異なるトークン) を処理でき、処理のための 4 人のエキスパートを備えた特別なスイッチ トランスフォーマー層を設計しました。オリジナルのトップ 2 エキスパートのアイデアとは対照的に、スイッチ トランスフォーマーは簡素化されたトップ 1 エキスパート戦略を採用しています。以下の図に示すように:

大規模モデルのモデル融合法について話しましょうPicture

違いは、有名な国内大型モデルである DeepSeek MoE のアーキテクチャが次のように設計されていることです。毎回アクティベーションに参加する共有の専門家ですが、その設計は、特定の専門家が特定の知識分野に習熟できるという前提に基づいています。専門家の知識領域を細かく細分化することで、一人の専門家が過剰な知識を習得する必要がなくなり、知識の混乱を避けることができます。同時に、共有エキスパートを設定することで、普遍的に適用できる知識があらゆる計算に確実に利用されるようになります。 ##################写真###### ######################### ##################################

以上が大規模モデルのモデル融合法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。