混合エキスパートモデルMixtral 8x7B –の勉強メモ
はじめに
混合エキスパートモデルMixtral 8x7Bの勉強メモです。
ローカルLLMの中では、かなり良い性能と推論スピードを示すので、仕組みなどについて少し勉強しました。
関連ページなど
プレプリント
https://arxiv.org/pdf/2401.04088.pdf
解説ページなど
仕組み(概要)
routerを介して、個々に訓練したexpertモデルにタスクを振っていくようです。合計で8つの7bモデルがありますが、タスクをいい感じに解けそうな2つのモデルのみに仕事を振るので、高速に出力を出すことができます。
前提となる諸々の知識について調査
sparse expert modelsの定義は?
(GPT-4の回答)
「Sparse Expert Models」とは、ディープラーニングと人工知能の分野で使われるモデルの一種です。これらのモデルは、特定のタスクや問題に特化した「エキスパート」ユニットまたはモジュールを使用し、これらのエキスパートがネットワーク全体での計算を効率的に行うことを目指します。
主な特徴は以下の通りです:
専門知識の分散: モデル内の異なる部分(エキスパート)が、特定の種類のタスクやデータに特化します。たとえば、言語モデルにおいては、特定の言語や文法構造に特化したエキスパートが存在することがあります。
スパース性: ネットワークは、ある特定の入力に対して、限られた数のエキスパートのみをアクティブにします。これにより、ネットワークは必要なエキスパートのみを使って効率的に動作し、計算資源を節約できます。
スケーラビリティ: このアプローチはネットワークを大規模化する際にも効果的です。ネットワークが成長しても、特定のタスクに必要なエキスパートの数は比較的少ないままです。
柔軟性と適応性: 異なるタイプのデータやタスクに対して、ネットワークは適切なエキスパートを動的に選択し、適応することができます。
Sparseの意味は?
(GPT-4の回答)
「Sparse Expert Models」と「Expert Models」の主な違いは以下の通りです:
スパース性(希薄性):
Sparse Expert Models: これらのモデルは、一度に少数のエキスパートのみがアクティブになります。これにより、ネットワークは効率的に動作し、計算資源を節約できます。
Expert Models: 一般的なエキスパートモデルでは、スパース性は必ずしも特徴ではありません。これらは特定のドメインに特化していますが、どのエキスパートがアクティブかに関するダイナミックな選択は行いません。
汎用性と特化:
Sparse Expert Models: これらは一般に、複数の異なるタスクやドメインをカバーするために設計されており、必要に応じて最適なエキスパートを選択します。
Expert Models: これらは特定のタスクやドメインに特化しており、その範囲外のタスクには適用しにくいことがあります。
(筆者感想: Lasso回帰などで有名なSparse modelingとは、あまり関係無さそうなことがわかりました)
どうやってタスクを振り分けるのか?
色々な手法が提案されているようです。
(以下、Sparse MOEに関するプレプリントの一部抄訳 by GPT)
疎エキスパートアーキテクチャの重要な特徴であるルーティングアルゴリズムについて詳述しています。このアルゴリズムは、例をどこに送るかを決定します。この分野は広範囲にわたって研究されており、固定された、学習されていないルーティングパターンを使用する直感に反する方法も含まれます(Roller et al., 2021)。通常、ルーティング決定は非微分可能であり、どの専門家を選択するかという離散的な決定を行います。専門家選択の問題はバンディット問題として再構成することができ、いくつかの研究では強化学習を使用して選択を学習しています(Bengio et al., 2016; Rosenbaum et al., 2017; 2019; Clark et al., 2022)。
…スコアが計算されると、どの専門家がどのトークンを取得すべきかを決定するためのさまざまな方法があります。
3つの一般的なカテゴリーを強調します:
1)各トークンはトップkの専門家を選択、
2)各専門家はトップkのトークンを選択、
3)各専門家にどのトークンを送るかをグローバルに決定します(貪欲なアプローチを使用しない)。
(筆者感想: あまり細かいことはよくわかりませんでした。人間的なアナロジーで考えると、仕事を振る管理職的な作業には、かなり高い能力が求められる気がします)
Mixtralに関する疑問について調査
どんなデータを使って訓練したのか?
記述が見当たりませんでした。Kaggleなどで使われるアンサンブルモデルでは、それぞれ個性的なアルゴリズムを選択することで総合知の向上を目指します。恐らく、8つのモデルも、それぞれ異なるデータセットで学習させたのだと思います。が、詳細は不明。一種のノウハウとして、秘匿されているのでしょうか。
8つのモデルを作った後、ルーティング層をどのように訓練したのかも気になります。
タスクはどんな感じに分配されているのか?
本文中の第5章に記述がありました。以下、GPT-4の抄訳。
このセクションでは、ルーターによる専門家選択の小規模な分析を行います。特に、トレーニング中に一部の専門家が特定のドメイン(例えば、数学、生物学、哲学など)に特化しているかどうかを確認することに興味があります。
これを調査するために、The Pile検証データセットの異なるサブセットにおける選択された専門家の分布を測定しました。結果は、モデルの最初と最後のレイヤーであるレイヤー0と31(それぞれレイヤー0と31)で、図7に示されています。驚くべきことに、専門家の割り当てにおいてトピックに基づく明白なパターンは観察されませんでした。例えば、すべてのレイヤーで、ArXiv論文(Latexで書かれた)、生物学(PubMed Abstracts)、哲学(PhilPapers)の文書に対する専門家の割り当ての分布は非常に似ています。
… この図から、Pythonの「self」や英語の「Question」などの単語は、複数のトークンにも関わらず同じ専門家を通じてルーティングされることがしばしばあります。同様に、コードでは、インデントのトークンは常に同じ専門家に割り当てられます。…
図8から、連続するトークンがしばしば同じ専門家に割り当てられることも注目されます。…
(筆者感想: タスクの振り方が、人間にとってはかなりランダムに近い印象を受けました。 プログラミングはモデルA、歴史の質問はモデルB、… という割り振りをするのかなと想像しますが、少なくともMixtralは、そのような挙動を示さないようです。)
まとめ
Mixtral 8x7Bの理論的な背景について、軽く勉強しました。
混合エキスパートモデルと言うと、数学の専門家、歴史の専門家、…を組み合わせるイメージが湧きますが、少なくともMixtralでは、もっとランダム(人間的には非自明)な感じで分業していることが読み取れました。
個々のモデルをどのように作るか、タスクをどのようにして割り振るか(そのための訓練をどう行うか)についても、プレプリントではあまり触れられていなかったので、引き続き勉強していきたいです。