Complexity-NetとAdaptive-RAGの技術でRAGの推論性能を大幅に最適化／向上する

**元文献:** [Enhancing Language AI: When to Use Small, Large or Retrieval-Augmented Models | by Anthony Alcaraz | Apr, 2024 | Medium](https://medium.com/@alcarazanthony1/enhancing-language-ai-when-to-use-small-large-or-retrieval-augmented-models-f8f9f201b79e)

# 言語AIの強化：小規模、大規模、または検索拡張モデルを使用するタイミング

[Anthony Alcaraz](https://medium.com/@alcarazanthony1?source=post_page-----f8f9f201b79e--------------------------------)

LLM（Large Language Models）のようなGPT-4は、自然言語処理と生成能力の著しい進歩をもたらしました。しかし、これらのモデルがより高度になるにつれ、それらを操作するために必要な計算リソースが著しく増加します。

例えば、GPT-4はその前任者であるGPT-3.5よりも約10倍の計算を利用しているとされており、リソース需要の急激な上昇傾向が浮き彫りにされています。

計算ニーズの拡大は、特に小規模な組織や個々の研究者にとって、コスト面での負荷が大きくなります。一般的なプラットフォームでは手動モデル選択が提供されていますが、特定のタスクに最適なモデルを自動的に選択するための体系的なアプローチが不足しています。

タスクの単純さに関係なく、より多くのユーザーがこれらの高度なモデルに傾倒するにつれ、計算リソースの無駄が著しくなっています。

最近の研究では、クエリの複雑さに基づいてモデルの展開を動的に適応させる手法が紹介されており、さまざまなアプリケーションでLLMのリソース利用を最適化し、経済的に実現可能な提案が提示されています。

Retrieval-Augmented Generation（RAG）は、外部知識検索をLLM（Large Language Models）と統合できる、という利点を示し、外部知識ベースからの情報にアクセスし、統合することで、より正確で最新の回答を提供することが可能となります。ただし、異なる複雑さのクエリに対応する際に、**すべてのクエリに対して一律のアプローチを取ることは難しい**とされています。簡単なクエリでは検索と生成のオーバーヘッドは必要ないかもしれませんが、**複数の文書から情報を合成する複雑なマルチホップクエリでは、より洗練された反復的推論戦略が必要**となる場合があります。

**ComplexityNet**と**Adaptive-RAG**という2つの論文は、この課題に対処するためのフレームワークを提示し、クエリの複雑さの評価に基づいて適切な戦略を動的に選択します。クエリの複雑さに基づいてリソースを賢く割り当てることで、言語AIシステムの効率と正確さを最適化するための手法として注目されています。

# ComplexityNet: LLM推論の効率化のための複雑なタスクの学習手法

Zhu et al. 2024

[ComplexityNet](https://arxiv.org/pdf/2312.11511.pdf)のコンセプトは、与えられたタスクやクエリの複雑さのレベルを自動的に決定し、その後、サイズと能力の面で最も適した大規模言語モデル（LLM）に割り当てることです。これは、異なるLLMがそのタスクにおける実証的な成功率に基づいて、タスクの複雑さの予測を行うために、より小さな言語モデルを微調整することによって達成されます。

![https://miro.medium.com/v2/resize:fit:640/format:webp/1*pQ7gf6Q4DANRkOBKGih6DQ.png](https://miro.medium.com/v2/resize:fit:640/format:webp/1*pQ7gf6Q4DANRkOBKGih6DQ.png)

最初の重要なステップは、タスクの複雑さ自体を定義することです。ComplexityNetは、異なるLLMにおける各タスクの相対的な成功率を見ることで、実証的なアプローチを採用しています。明確な答えがあるタスクについては、成功は、LLMの出力が説明を生成した後に正しい解決策と一致するかどうかで定義されます。

LLMの出力の確率論的な性質を考慮するために、各LLMは各タスクに対して複数回（例：5回）クエリされます。成功した試行の回数が各LLMごとに各タスクで記録されます。これらの成功率は、LLM間の相対的なパフォーマンスの違いに基づいて5つの複雑さレベルにマッピングされます。これは、[論文](https://arxiv.org/pdf/2312.11511.pdf)の図3に示されています。

![https://arxiv.org/html/2312.11511v2/extracted/2312.11511v2/Figures/Complexity-flowchart.png](https://arxiv.org/html/2312.11511v2/extracted/2312.11511v2/Figures/Complexity-flowchart.png)

次のステップは、これらの経験的に決定された複雑さレベルでラベル付けされたタスクのデータセットを作成することです。[論文](https://arxiv.org/pdf/2312.11511.pdf)で使用されたPythonコーディングタスクのMBPPデータセットでは、自動パイプラインが各タスクに対してGPT-4、GPT-3.5、およびCodeLlamaに繰り返しクエリを実行して成功率を収集し、複雑さのラベルを割り当てました。

このデータセットが確立された後、より小さな言語モデル（この場合はDaVinci-002）をそのデータセットにファインチューニングすることで、任意のタスクプロンプトに適切な複雑さレベルを予測するように学習させることができます。このモデルは「複雑さモデル (Complexity Model)」と呼ばれています。

推論時に、微調整された複雑性モデルは新しいタスクプロンプトを分析し、その複雑性レベルを予測することができます。この予測されたレベルに基づいて、フレームワークはその複雑性に最も適した大きなLLMにタスクを割り当てることができます。つまり、より簡単なタスクをCodeLlamaのような小さなモデルに、中程度の複雑さのタスクをGPT-3.5のような中程度のモデルに、そして最も複雑なタスクをGPT-4に割り当てることができます。

この方法でタスクを知的にマッピングし、割り当てることにより、ComplexityNetフレームワークはMBPPデータセットで驚異的な結果を示しました。すべてのタスクにGPT-4を使用するだけと比較して、計算コストを90%削減し、コード生成において86.7%の高い精度を維持しながらです。

成功の要因は、各タスクの固有の複雑さに適切にLLMの能力をマッチングし、本当に必要な場合にのみ、より大きく、計算量の多いモデルを利用することができることにあります。これにより、タスクの複雑さレベルを予測し、適切なサイズのLLMに割り当てることで、言語AIアプリケーション全体で効率の大幅な向上の可能性が示されます。

# Adaptive-RAG: Adapt Retrieval-Augmented LLMsについて

Retrieval-Augmented Generation（RAG）フレームワークを基盤とした[Adaptive-RAG](https://arxiv.org/pdf/2403.14403.pdf)は、入力クエリの複雑さに基づいて最適な検索拡張戦略を動的に選択することで、より細かいアプローチを取っています。これにより、スペクトラム全体で運用モードをシームレスに適応させることが可能となります。

1. **非取得アプローチ**：言語モデルのパラメトリックな知識のみを使用して答えられる可能性の高い、簡単なクエリに対して使用します。
2. **単一ステップ取得アプローチ**：単一の関連ドキュメントからの外部知識の取得と統合が必要な、やや複雑なクエリに対して使用します。
3. **マルチステップ反復アプローチ**：反復的な方法で複数の取得ドキュメントに対する推論が必要な、非常に複雑なクエリに対して使用します。

この適応的な振る舞いを可能にする重要な要素は、クエリの複雑さを分類するコンポーネントで、与えられたクエリに対して適切な複雑さレベルを予測するために特別に訓練された小さな言語モデルです。この予測は、Adaptive-RAGが採用する検索増強戦略を通知します。

この言語モデルを訓練するために、Adaptive-RAGは次のような新しい技術を用いて自動的にラベル付きデータを収集します。

1. クエリに対して非取得、単一ステップ、および複数ステップのアプローチを実行し、正しい答えを生成するものに基づいてラベリングを行います。
2. ベンチマークデータセットで帰納的なバイアスを活用する（例：マルチホップクエリを複雑としてラベリングする）。

この自動的にキュレーションされたクエリー複雑さのペアのデータセットを使用することで、分類のための言語モデルを微調整して、推論時に複雑さレベルを正確に予測することができます。

一度展開されると、Adaptive-RAGは、新しいクエリをこの訓練された分類機能を通してまず複雑さレベル（簡単、シングルホップ、またはマルチホップ）を予測します。その後、対応する検索増強戦略を動的に活性化させ、効率と精度を最適にバランスさせます。

より簡単なクエリに対しては、検索のオーバーヘッドを完全に回避したり、単一のドキュメント検索に制限したりします。複雑なマルチホップクエリに対しては、必要な反復推論プロセスのために最初からより多くの計算リソースを割り当てます。

複数のオープンドメインの質問応答データセットを対象とした実験評価により、Adaptive-RAGは固定された動作モードを持つベースラインと比較して、QAシステムの効果と効率の両方を大幅に向上させることが示されました。Adaptive-RAGは、遭遇するクエリの多様性に対して単純すぎるか、あるいは過度に複雑なアプローチよりも優れた成績を収めています。

Adaptive-RAGは検索拡張戦略の最適化に焦点を当てていますが、Orca 2やプロキシチューニングなどの補完的な取り組みは、特に小規模なモデルにおける言語モデル自体の中核的な推論能力を向上させることを探求しています。

# Orca 2: 小さな言語モデルに推論の方法を教える

[Orca 2](https://arxiv.org/pdf/2311.11045.pdf)の根本的なアイデアは、より小さな言語モデル（SLM）に高度な推論能力を与えることができるカスタマイズされたトレーニング技術を開発し、推論集中型のベンチマークで、はるかに大きなモデルの性能に匹敵するか、それを上回ることができるようにすることです。

Orca 2トレーニングアプローチの主要なコンポーネントは次のとおりです：

1. **多様な推論タスクのキュレーション** Orca 2は、FLAN、GSM8Kなどのさまざまなソースからの推論タスクの大規模で多様なコレクションを編纂することから始めます。これには読解、数学の文章問題、常識的な推論などの分野が含まれます。
2. **合成推論デモンストレーションの生成** 各推論タスクについて、Orca 2の研究者は、そのタスクを解決するために有能な言語モデルが採用すべき複数の最適な推論戦略を定義します。これには段階的な作業、中間の説明の提供、直接的な回答の生成などの技術が含まれる可能性があります。

これらの事前定義された戦略をプロンプトとして使用することで、Orca 2はGPT-4のような大規模な教師モデルにクエリを送信して複雑な合成デモンストレーションを生成します。これにより、タスクプロンプトと教師からの適合した推論戦略のデモンストレーションがペアになった豊富なデータセットが生成されます。

1. **プロンプトの削除** SLMが複雑なプロンプトを単純に模倣することを防ぐために、Orca 2は「プロンプトの削除」と呼ばれる技術を適用し、（タスク、戦略、デモンストレーション）のトレーニングサンプルから複雑なプロンプトを削除してから学習モデルに表示します。
2. **慎重な推論の教育** 適合した推論のデモンストレーションを使用して、Orca 2はSLMに教師の出力を単に模倣するのではなく、多様な戦略を学び、タスクと独自のモデル容量に基づいて効果的に各戦略を適用するタイミングを決定するようトレーニングします。この推論アプローチを慎重に選択する概念は「慎重な推論」と呼ばれます。
3. **評価時の自己戦略立案** ベンチマークでの評価中、Orca 2モデルにはタスクプロンプトのみが提示され、学習したスキルセットから適用する推論戦略を自己選択することが許可されます。これにより、効果的な戦略立案能力がテストされます。

この慎重な推論トレーニングプロセスを豊富な推論タスクとデモンストレーションで行うことで、Orca 2は非常に少ないパラメータ数で高度な推論行動をSLMに抽出することに成功します。

実証結果は、Orca 2のSLMが同等サイズのベースラインを大幅に上回り、多くのベンチマークで理論能力において5〜10倍大きなモデルに匹敵し、あるいはそれを上回ることさえ示しています。例えば、13BのOrca 2モデルは、70BのベースラインLLMの平均的な推論パフォーマンスにほぼ匹敵することを示しています。

これは、Orca 2のカスタマイズされた推論トレーニングのような手法が、少なくとも推論能力など特定の領域において、従来は小さな言語モデルと大きな言語モデルの能力の間に想定されていたギャップを埋める潜在能力を示しています。

Orca 2は推論スキルの向上に焦点を当てていますが、適切なトレーニングデータやデモンストレーションを収集することで、このアプローチは他の領域にも拡張する可能性があります。プロキシ調整や適応的な検索戦略などの補完的な手法と組み合わせることで、Orca 2スタイルの手法は、特定のユースケースにおいてより効率的に大きなモデルをガイドしたり、補完したり、あるいは置き換えたりする可能性を開くものです。

# プロキシによる言語モデルの調整

[プロキシ調整](https://arxiv.org/abs/2401.08565)は、大規模言語モデル（LLM）を直接アクセスや更新せずにカスタマイズおよび調整することを可能にする新しい軽量なデコーディング時アルゴリズムを導入しています。これにより、LLMがプロプライエタリまたは制限されたアクセスを持つブラックボックスモデルであるシナリオに特に有用です。

![https://miro.medium.com/v2/resize:fit:640/format:webp/1*Vccwr4sc_UTGeMZckw2SKw.png](https://miro.medium.com/v2/resize:fit:640/format:webp/1*Vccwr4sc_UTGeMZckw2SKw.png)

Liu et al. 2024

プロキシチューニングの基本的な考え方は、すでに所望のカスタマイズに調整された小さな「専門家」言語モデルと、その調整されていない「反専門家」対応モデルを活用することです。デコーディング中、プロキシチューニングは、調整された専門家モデルと反専門家モデルからの予測（語彙上のロAdaptiveRAGジット）の差を計算します。この差は、オリジナルの大きなブラックボックスベースLLMから調整された専門家モデルの予測にシフトさせるためのオフセットとして適用されます。

数学的には、ベースLLM M、調整された専門家M+、および調整されていない反専門家M-がある場合、プロキシチューニングされた確率分布p~Mは、出力語彙上で以下のように計算されます。

$$
p~M(Xt | x<t) ∝ pM(Xt | x<t) * pM+(Xt | x<t) / pM-(Xt | x<t)
$$

これにより、プロキシチューニングを使用して、大きなベースモデルMの重みを直接チューニングするのと同様の結果を効果的に達成できますが、チューニングされた専門家のガイダンスを使用して出力ロジットのみで操作します。

さまざまなスケール（7B、13B、70B）のLLAMAモデルをカスタマイズしたプロキシチューニングの実験を行い、指示の従う、コーディング、質問に答える、安全などのタスクに対応しました。その結果、プロキシチューニングは、知識、推論、安全性の能力をテストするさまざまなベンチマークで評価された際に、ベースのLLAMAモデルと直接チューニングされたモデルとの性能差の88〜91％を埋めることができました。

驚くべきことに、プロキシチューニングは、デコーディング時にのみ操作し、重みの更新を行わずに、このチューニングの利点をもたらすことができました。これにより、実世界での専用LLMのカスタマイズとチューニングには魅力的なオプションとなります。

プロキシチューニングの効果は、より小さなチューニングされた専門言語モデルが、大きなLLMの振る舞いを直接変更することなく、推論中に効果的にガイドし「プロキシチューニング」する能力に由来しています。

ComplexityNetやAdaptive-RAGのようなフレームワークと組み合わせることで、クエリの複雑さに基づいてLLMの展開を最適化するだけでなく、Orca 2のようなアプローチによって小さな言語モデルの推論能力を向上させることで、プロキシチューニングは効率的で能力のある言語AIシステムを構築する豊かな設計空間を開くものです。

一方では、Orca 2などの手法で生成された小さなチューニングされた専門モデルが、特定のカスタマイズのために大きな基盤LLMをプロキシチューニングすることができます。ComplexityNetのような補完的なフレームワークは、クエリの複雑さに基づいて、生のLLM、プロキシチューニングされたバージョン、またはそれよりもさらに小さなモデルを使用するかどうかを決定することができます。

またもう一方で、非常に大きなが不透明な「ブラックボックス」LLMは、標準的なチューニング手法で生成されたコンパクトなドメイン/タスク固有の専門家を使用してプロキシチューニングすることで、異なるアプリケーションに対してアクセス可能でカスタマイズ可能になります。

大きな言語モデルと小さな言語モデルを効率的なな組み合わせで活用することで可能になるこれらの可能性は、大きく期待されています。複雑さに基づいてリソースを動的に割り当て、モデルに適した推論能力を備えさせ、ブラックボックスモデルのチューニングを可能にすることで、現実世界のニーズに合わせた効率的で能力のある言語AIソリューションを開発することができます。

# 結論：個別対応した、複数技術を組み合わせた言語AIシステムへ

将来的に最も能力が高く効率的なシステムとして考えられているのは、単一のモデルではなく、むしろ緻密にターゲットの使用ケースの独自の要求に合わせて調整された複雑なアーキテクチャであることがますます明らかになっています。最近の研究は、複数の技術を効率よく組み合わせ、大規模および小規模の言語モデルの相補的な強みを活用することの価値が強調しています。

ComplexityNetやAdaptive-RAGなどのフレームワークでは、クエリの複雑さに基づいて言語モデルの適用を動的に行うことの重要性が強調されています。これらのアプローチは、計算リソースを効率よく割り当てることで、大きなモデルの処理能力を複雑な問い合わせに活用し、一方で小さな言語モデルが不要なオーバーヘッドなしに簡単なケースを処理することが実現されます。

これらの展開最適化技術をさらに伸ばす方法として、大きな言語モデルと小さな言語モデルそれぞれの能力を直接向上させる手法があります。Orca 2のようなアプローチは、特定の領域（例えば、マルチドメインの推論など）において小さなモデルと大きなモデルの性能の間のギャップを埋めるために、最適化されたトレーニング手法が高度な推論能力をコンパクトなモデルに適用する方法を示しています。

一方で、プロキシチューニングによって、内部の重みづけに直接アクセスせずに、ブラックボックス型の大きな言語モデルさえもカスタマイズして特化させることが可能になります。デコーディング処理中に、チューニングされた小規模なエキスパートを活用することで、プロキシチューニングは効果的に大きなモデルをプロキシチューニングすることができるようになります。

真の可能性は、これらのさまざまな技術を一つの言語AIアーキテクチャ内で調和させるところにあります。複雑さの評価モジュールがクエリを動的にルーティングし、簡単なケースを非常に効率的な小さなモデルに、中程度の複雑なクエリを、特製のプロキシチューニングで拡張された大きなモデルに割り当て、そして最も入り組んだマルチホップの推論タスクに対して巨大な言語モデルが効果を発揮します。

このハイブリッドシステムは、Orca 2のような技術をさらに活用し、より小さなモデルのコンポーネントに高度な推論能力を与え、複雑さスペクトラム全体で一貫した高性能を確保します。このようなアーキテクチャは、多様なアプローチの集合的な強みを統一された、高性能で最適化されたソリューションを実現し、実世界のユースケースで使用できるものにします。

言語AIの限界を押し広げるにつれて、大規模なモデルと小さなモデルの両方を活用し、複雑さに基づいて展開を最適化し、推論能力を向上させ、効率的なカスタマイズを可能にする、複数の技術の融合が、強力で効率的で広く利用可能な生成AIシステムの次世代への道を切り拓くでしょう。