知識の蒸留:妥当性を犠牲にすることなく、大規模で計算量の多いLLMから小規模なLLMへ知識を移行する
知識蒸留とは、大規模で複雑なモデル(教師)の知識を、より小規模で単純なモデル(生徒)に転送する機械学習手法である。
シリーズ全体を読む
- OpenAIのChatGPT
- GPT-4.0と大規模言語モデルの秘密を解き明かす
- 2024年のトップLLM:価値あるもののみ
- 大規模言語モデルと検索
- ファルコン180B大型言語モデル(LLM)の紹介
- OpenAIウィスパー高度なAIで音声をテキストに変換する
- OpenAI CLIPを探る:マルチモーダルAI学習の未来
- プライベートLLMとは?大規模言語モデルをプライベートで実行 - privateGPTとその先へ
- LLM-Eval:LLMの会話を評価するための合理的なアプローチ
- CohereのRerankerを使いこなし、AIのパフォーマンスを向上させる
- PagedAttentionを用いた大規模言語モデルサービングの効率的なメモリ管理
- LoRAの説明LLMを微調整するための低ランク適応
- 知識の蒸留:妥当性を犠牲にすることなく、大規模で計算量の多いLLMから小規模なLLMへ知識を移行する
- RouteLLM: LLM展開におけるコストと品質のトレードオフをナビゲートするオープンソースフレームワーク
- 検証者-検証者ゲームがLLM出力の可読性を向上させる
- 金魚のように、暗記をするな!ジェネレーティブLLMで暗記を軽減する
- LLMにおけるメニーショット・インコンテキスト学習のパワーを解き放つ
- 双眼鏡でLLMを発見:機械生成テキストのゼロショット検出
GPT-4、Gemini、そしてClaudeのような大規模言語モデル(LLM)は、急速に進化するAIの分野で画期的な技術として際立っている。これらは、人間のようなテキストを生成し、複雑な問題を解決することができ、当初の訓練目的を超えた創発的な能力を示している。
その素晴らしい能力にもかかわらず、GPT-4のようなプロプライエタリなLLMには、制限されたアクセシビリティ、高いコスト、データのプライバシーとセキュリティの懸念などの限界がある。LLaMA](https://zilliz.com/glossary/llama2)やMistralのようなオープンソースのモデルは、アクセシビリティと適応性においてプロプライエタリなLLMよりも優れているが、モデルのスケールが小さく、性能が低いという問題がある。
知識蒸留** (KD)は、このギャップを埋めるための重要な技術である。知識蒸留技術によって、プロプライエタリなLLMとオープンソースのモデルとの間のギャップは大幅に縮小され、埋められることさえある。知識蒸留は、LLMの能力を向上させ、モデルを圧縮し、自己改善するために重要である。さらに、モデルが自己改善のための教師として機能するのを助ける。
本稿では、大規模言語モデル(LLM)の文脈における知識蒸留の意義、知識蒸留の必要性、進化する知識蒸留技術、それらの詳細な説明、およびそれらの応用について述べる。
知識蒸留による自己改善](https://assets.zilliz.com/Self_improvement_via_Knowledge_Distillation_40364d6448.png)
図:知識蒸留による自己改善|出典
このトピックをさらに掘り下げたい方は、こちらの論文をご覧ください:LLMの知識蒸留に関する調査
知識蒸留(KD)とは何か?
知識蒸留とは、より小さく単純な「生徒」モデルが、より大きく複雑な「教師」モデルの動作を模倣するように訓練される技術である。教師モデルは大量のデータで訓練され、タスクに対する深い理解を持っています。目標は、この専門知識を生徒モデルに伝達することであり、生徒モデルは、リソースに制約のあるデバイス上でより高速かつ効率的に実行できるように最適化される。
大規模な教師モデルから生徒モデルへの知識抽出](https://assets.zilliz.com/Knowledge_distillation_from_a_large_teacher_model_to_a_student_model_aa7180a28f.png)
図:大教師モデルから生徒モデルへの知識蒸留|出典
知識蒸留におけるデータ補強(DA)
DA(Data Augmentation)はKnowledge Distillationの効果を向上させるために不可欠である。これは教師LLMの新しいデータを生成する能力を利用し、生徒モデルのトレーニングデータセットを拡張します。これは、ラベル付きデータが限られている特殊なドメインやスキルを扱う場合に重要です。知識蒸留におけるデータ増強の仕組みは以下の通りです:
シード知識:**教師LLMは、指示、デモンストレーション、または特定のドメイン知識などの小さな初期データセットが提供されます。
プロンプトエンジニアリング:** 慎重に設計されたプロンプトは、ターゲットスキルやドメインに関連する新しいデータを生成する際に教師LLMをガイドします。
データ生成:*** LLM教師は、種となる知識とプロンプトに基づいて、質問と答えのペア、説明、またはコードなどの新しいデータサンプルを生成します。
データのフィルタリングと評価:** 生成されたデータは、生徒モデルをトレーニングする前に、高品質で適切であることを確認するために、レビューとフィルタリングが行われます。
KDは、大規模で高品質なデータセットを生成することで、通常であれば大幅に多くの学習データと計算リソースを必要とする高度な機能を、小規模なモデルで獲得することを可能にします。
LLMのための知識抽出を促進する方法論
大規模言語モデル(LLM)のための知識蒸留(KD)は多面的であり、アルゴリズム、スキル強化、ドメイン特化の相互作用に重点を置いている。それぞれの側面と方法論について説明しよう:
KDアルゴリズム
スキル蒸留
垂直化蒸留
LLMの知識蒸留を多面的に概観する】(https://assets.zilliz.com/A_multifaceted_overview_of_knowledge_distillation_of_LL_Ms_670f93dfb8.png)
図:LLMの知識蒸留の多面的概観|出典
KDアルゴリズム知識移転の基盤
知識蒸留アルゴリズムは、知識を伝達するための技術的メカニズムを提供します。その目的は、教師ほど広範な訓練データと計算資源を必要とせずに、生徒の能力を向上させることである。このプロセスは主に2つのステップに分類される:
知識抽出
蒸留アルゴリズム
KDアルゴリズムの分類法.png
図:KDアルゴリズムの分類法|出典
知識抽出
LLMの文脈における知識抽出とは、教師から価値ある知識を抽出することであり、多くの場合、GPT-4モデルのような独自のLLMです。モデル・アーキテクチャを圧縮してサイズと計算負荷を減らす従来の知識抽出とは異なり、このプロセスは豊富で多様な知識の選択的移転に焦点を当てています。
知識抽出は、ラベリング、拡張、データキュレーション、フィーチャー、フィードバック、自己知識を含む様々な方法で行うことができる。
**ラベリング
教師LLMは与えられた入力xに対してラベルまたは出力yを生成する。このラベル付きデータは生徒モデルの学習データとなる。例えば、教師LLMは自然言語理解タスクのためにテキストを分類するよう促されたり、テキスト要約タスクのために要約を生成したりする。ラベリングプロセスは以下のように定義できる:
式 - ラベリング](https://assets.zilliz.com/equation_labeling_d368c6b0e2.png)
ここで
x 入力データ点
yは出力またはラベル
p_T(y Ⓐ x)$は教師モデルの確率分布を表します。
**展開
Expansion テクニックは、LLM の文脈内学習能力を利用して、与えられたデモンストレーション (c) や指示のセットに似た新しい入出力ペア (x, y) を生成する。展開プロセスは次のように記述できる:
式 - 展開](https://assets.zilliz.com/equation_expansion_dec344b7f9.png)
**データキュレーション
データキュレーションは、高品質で大規模なデータをキュレーションするために、広範なメタ情報をシード知識として使用することで、ラベリングと拡張の質と量の制約に対処する。例えば、developing の "phi-1 "モデルでは、教師LLMがPythonの教科書と練習問題のデータセットを作成する際に、ランダムなトピックや関数名がメタ情報として使われた。データキュレーションのプロセスは次のように表すことができる:
方程式 - データキュレーション.png
**特徴
特徴知識抽出は、出力分布、中間特徴、または活性化など、教師LLMの内部表現を使用します。これにより、生徒モデルは教師の意思決定プロセスを理解することができます。特徴知識を引き出すテクニックは、以下のように概説できます:
方程式 - 特徴](https://assets.zilliz.com/equation_feature_718b906c66.png)
**フィードバック
教師LLMは生徒モデルの出力に対してフィードバックを与え、学習プロセスを導きます。このフィードバックは、修正、好み、評価など様々な形をとることができます。フィードバック知識を引き出すための一般的な定式化は以下の通りです:
方程式 - フィードバック](https://assets.zilliz.com/equation_feedback_b4c6c19eb6.png)
**自己認識
自己知識誘発は、生徒モデルが教師と生徒の両方の役割を担う方法です。生徒モデルは、出力を生成し、それらを評価し、質の高い応答をフィルタリングします。モデルは、以前に生成されたアウトプットを抽出し、改良することで、時間の経過とともに学習し、改善します。自己知識を引き出すプロセスは、次のように定義することができます:
方程式 - 自己知識](https://assets.zilliz.com/equation_self_knowledge_3a30379d2f.png)
教師LLMによる知識引き出し方法の違い.png
図:教員LLMの知識引き出し方法の違い|出典
蒸留アルゴリズム
教師のLLMから知識が抽出されると、この知識を生徒のLLMに転送するためにさまざまな蒸留アルゴリズムが使用されます。アルゴリズムの選択は、抽出される知識のタイプ、生徒モデルのアーキテクチャ、利用可能なリソースなどの要因に依存します。
**教師ありファインチューニング(SFT)
教師付き微調整(SFT)は,最も単純で最も広く使用されている蒸留手法です.この手法では、教師LLMによって生成されたラベル付きデータで生徒モデルを学習させる。目的は、出力動作を直接複製することである。この方法は、通常、「ラベリング」または「拡張」知識抽出手法とともに使用される。SFTのプロセスは、数学的に以下のように定式化できる:
式 - Supervised Fine-Tuning (SFT)](https://assets.zilliz.com/Equation_Supervised_Fine_Tuning_SFT_e0c2368578.png)
ここで
- Logp_S(y|x)(S)$ の負の対数尤度。
**発散と類似性
発散と類似の手法は,教師と生徒のモデル出力の確率分布の差(発散)を最小化するか,内部表現(隠れた状態)の類似度を最大化することを目的とする.カルバック・ライブラー発散を最小化するような発散に基づく手法は,生徒モデルが教師モデルの分布のすべてのモードをカバーすることを促します.
様々な発散タイプ](https://assets.zilliz.com/Various_divergence_types_f7bdbf75f1.png)
図:様々なダイバージェンスタイプ|出典
類似性に基づくアルゴリズムは、教師モデルと生徒モデルの内部表現または隠れた状態を調整します。このアプローチでは、教師モデルの内部構造を反映するように生徒モデルを訓練することで、両モデルの情報処理方法がより類似したものになります。
知識抽出における類似関数](https://assets.zilliz.com/Similarity_functions_in_knowledge_distillation_b1e9c3d4b6.png)
図:知識蒸留における類似関数|出典
**強化学習(RL)
強化学習(RL)アルゴリズムは、教師LLMからのフィードバックに基づき、報酬ベースのシステムを通して生徒モデルを訓練する。
- 教師LLMから提供されたフィードバックを用いて、まず報酬モデルが学習される。この報酬モデルは、教師の嗜好に基づいて生徒の出力の品質を評価するように学習する。報酬モデルの損失関数は次のように定義される:
式 - 強化学習 (RL)](https://assets.zilliz.com/equation_Reinforcement_Learning_RL_f3a3a60443.png)
- 生徒モデルは、報酬モデルから受け取る報酬を最大化するために、強化学習 アルゴリズムを用いて学習される。生徒モデルは、教師LLMが好ましいと思う出力を生成するように学習します。RLの目的は次式で与えられる:
式 - 強化学習(RL)2](https://assets.zilliz.com/equation_Reinforcement_Learning_RL_2_c19c1c394b.png)
**ランク最適化
生徒モデルは、教師LLMがランク付けするのと同じ順序で出力をランク付けするように学習する。例えば、テキスト生成タスクでは、教師LLMは異なる可能性のある出力をランク付けすることができ、生徒モデルは教師の主観的嗜好を学習し、このランク付けを予測するように学習される。ランキングプロセスは以下のように定義される:
方程式 - ランク最適化](https://assets.zilliz.com/equation_Rank_Optimization_e327731ad4.png)
スキル蒸留:特定の能力をターゲットにする
ナレッジ・ディスティレーションは、単に教師LLMの全体的な動作を複製すること に限定されません。生徒LLMの特定のスキルやコンピテンシーを向上させるために、これらのアルゴリズムをどのように適用できるかを検討するだけにとどまりません。スキル・ディスティレーション(SD)には、さまざまなスキルのカテゴリーにわたって多数の例があります。
スキル蒸留](https://assets.zilliz.com/Skill_distillation_5e8432f604.png)
図:スキル蒸留|ソース
コンテキスト・フォロー
このプロセスは、以下のようなさまざまなコンテクストを理解し、それに対応できるよう、学生LLMを訓練するものである:
指示:** これは、入力で提供された特定のコマンドやガイドラインに従って、より制御された方法でタスクを実行するようにモデルを訓練することに焦点を当てています。
複数ターンの対話:**これは、コンテクストを進行中の会話に拡張し、生徒モデルが対話の複数ターンにわたって一貫性と関連性を維持できるようにします。
これは、外部情報源とモデルへのアクセスを統合し、データベースや文書から関連データを組み込んで、応答を向上させます。
アライメント
アライメントは、人間の嗜好、価値観、意図に合うように、学生LLMのアウトプットをより良く洗練させます。その要素である思考パターンは、生徒が段階的な説明を作成したり、結論を出す前に複数の視点を評価するなど、教師の推論プロセスを採用するように訓練することを重視しています。
もう一つの重要な要素は、ペルソナと嗜好のモデリングです。生徒が教師のペルソナやスタイルの違いを反映することで、特定のパーソナリティやブランドボイスに合った一貫性のある返答ができるようになります。
エージェント
SDは、外界と相互作用し、より複雑なタスクを完了できるLLMエージェントの開発を支援します。LLMエージェントは、電卓、カレンダー、データベースなどの外部ツールを使用して、その機能と問題解決能力を高めることができます。
NLP タスクの専門化
学生モデルは、以下のような特定の自然言語処理 タスクに秀でるように適応させることができます:
自然言語理解 (NLU):** KD は、テキスト分類、感情分析、情報抽出などのタスクで使用できる、人間の言語を正確に理解し解釈する学生モデルの能力を向上させることができます。
自然言語生成(NLG):** NLGには、テキスト要約、機械翻訳、対話生成タスクが含まれます。KDは、学生モデルがより流暢で、一貫性のある、情報量の多いテキストを生成するのに役立ちます。
推薦システム:** KD は、学生モデルがより正確で適切な推薦を行うための学習を支援します。
コード生成:** これは、自然言語の記述からコンピュータコードを生成することを含みます。KDは、生徒モデルが正しく、効率的で、読みやすいコードを生成できるようにトレーニングします。
大規模言語モデル(LLM)から抽出された知識を使用することで、学生モデルはより効果的に多様な自然言語処理の課題をナビゲートし、パフォーマンスを向上させ、データの制限に対処することができます。
マルチモダリティ
テキストだけでなく、画像などのマルチモダリティのコンテンツを処理・生成するマルチモダリティLLMにKD技術を拡張する。KDは画像-テキストの知識を教師LLMから視覚-言語ドメインの生徒モデルに転送する。これらの生徒モデルは、テキストを理解・生成し、画像をテキスト記述に翻訳することができます。
垂直化:ドメイン固有の蒸留
垂直化蒸留の分類法.png
図:垂直蒸留の分類法|出典
知識蒸留(KD)は、より高い精度と効率で専門的なタスクを実行するために、特定のドメイン用にLLMをカスタマイズする上で極めて重要である。主なドメインは以下の通り。
法律
KDは、法的文書を理解し、法的問題を推論し、法的支援を提供できるLLMを開発するために使用される。これらのモデルは広範な法律コーパスで学習され、契約分析や法的調査など、特定の法律タスク用に微調整された。以下は、法律領域で使用されるLLMの例である:
LawyerLLaMA:この中国語法律言語モデルは、LLaMAフレームワークに基づいて構築された。まず大規模な法律コーパスで事前学習され、その後中国司法試験データセットからの客観的な質問とChatGPTで生成された法律相談への回答を使って微調整された。
LawGPT:このモデルはOpenLLaMAをベースとしており、実世界の法律テキスト、法規、司法解釈、法律相談データから構成されるデータセットを用いて学習された。ChatGPTはトレーニングのための追加データを生成するために使用された。
医療・ヘルスケア
KDは、医療記録を処理し、健康に関する質問に答え、個人に合わせた治療計画を生成できるLLMを作成するために適用される。LLMの例としては以下のようなものがある:
HuatuoGPT](https://arxiv.org/abs/2305.15075):このモデルは医療相談用に設計されており、教師付き微調整の段階で、ChatGPTから抽出したデータと医師からの実世界データを使用している。
DoctorGLM:この中国語医療対話モデルは、ChatGPTからの支援で構築されたデータセットで学習され、診断、薬の推奨、医療アドバイスのための様々なテクニックを使用しています。
ファイナンス
LLMは、金融情報を分析し、リスクを評価し、情報に基づいた財務上の意思決定を行うために、金融ニュース、市場データ、企業提出書類を使用してKDで訓練されています。これらのモデルは、投資分析やリスク管理などの業務を支援します。大規模言語モデル(LLM)の構築における知識抽出(KD)の例を以下に示す:
- XuanYuan](https://arxiv.org/abs/2305.12002):**この金融に特化したLLMでは、シードデータに適用される自己インストラクション技術と、構造化データおよび非構造化データに対する自己QA手法を使用して、学習用のインストラクションデータを生成している。
サイエンス
KD は科学研究において変革的な役割を果たし、以下のような LLM の創設を可能にしている:
膨大な量の科学文献を読み、理解し、重要な発見や傾向を見極める。
既存の科学的知識に基づいて新しい仮説を立てる。
科学論文の執筆補助、初稿作成、改善提案
科学分野のLLMを含む:
SciGLM](https://arxiv.org/abs/2401.07950):**この科学的LLMは、教師LLMに、ラベルのない科学的な質問に対する詳細な答えを生成するよう促し、データの質を向上させるために自己反省的な批判と修正のプロセスを採用する。
AstroLLaMA-Chat: 7BパラメータLLaMA-2モデルに基づいて構築され、天文学に焦点を当てています。天文学に関連する質問応答タスクのパフォーマンスを向上させるために、キュレーションされた天文学コーパスで継続的な事前学習を行います。
知識抽出(KD)は、伝統的な領域を超えて教育にも拡張され、教育、学習、評価に役立っている。また、ITタスクを自動化し、IT専門家をサポートする言語モデルの作成にも使用されている。KDの手法は、複雑なスキルや知識の伝達を強化し、より汎用性の高いAIソリューションにつながります。しかし、データの選択、壊滅的な忘却、抽出された知識の信頼性の確保といった課題にはまだ対処する必要がある。
知識蒸留のLLMへの影響と意義
大規模モデルから小規模モデルへの知識移転は、ギャップを埋め、最先端のAI能力をより利用しやすくするために不可欠である。このプロセスは、アクセシビリティを向上させるだけでなく、AI開発の効率性と持続可能性を高める。
持続可能性:** KDは、より小さい、より効率的なモデルを可能にすることで、AIの環境持続可能性に貢献し、より少ない計算能力を必要とする。
モデル圧縮と効率性:** KDは、モバイルデバイスのようなリソースが限られた環境でのAI展開に不可欠な、最小限の性能損失でより小さく効率的なLLMの開発を可能にします。
データ効率と品質:** Superfilteringやself-instructのような新しいデータ選択と補強メソッドは、蒸留を改善し、モデル性能を向上させながら、必要なデータを削減します。
より広範なタスクカバレッジ:** KDは、多様な命令データを使用することで、タスク間の汎 用性を高めます。WaveCoderやMFTCoderのようなモデルは、KDがどのようにマルチタスク学習を改善し、コード生成のような特殊な分野で優れているかを示しています。
LLaVAやMIMIC-ITのような革新的なLLMは、画像ベースの命令チューニングやマルチモーダル会話エージェントのようなアプリケーションを強化し、言語、視覚、音声を結びつける知識蒸留の役割を示しています。
結論と今後の課題
知識蒸留は、小さな言語モデルが大きな言語モデルの長所を採用するのを助ける技術である。データ増強、知識抽出、効率的な蒸留アルゴリズムなどの手法を用いることで、AIソリューションはより利用しやすく、効率的で、信頼性の高いものになる。AI技術が進歩するにつれ、より高度なKD手法の必要性が高まるだろう。今後の研究は、以下のようないくつかの分野を探求する可能性がある:
データ選択とフィルタリング技術の進歩:** LLM訓練データの量が増えるにつれて、知識蒸留(KD)のための効率的なデータ選択が不可欠である。研究は、より小さなモデルに蒸留するための貴重なデータを自動的に識別することに焦点を当てるべきである。
特定のタスクやドメインでLLMを微調整し続けると、以前に学習した知識を壊滅的に忘れてしまう可能性がある。今後の研究では、この課題を克服する方法を探る必要がある。
教師LLMからの豊富な知識の活用:*** 既存のKD手法では、教師LLMの出力を、より小さなモデルを学習するためのラベルとして使用している。今後の研究では、教師からの豊富な知識を利用する方法を探る必要がある。
弱いものから強いものへの蒸留の促進:**弱い、あるいは精度の低い教師モデルから、より強い生徒モデルへの知識の蒸留を可能にする技術を探求する。
さらなるリソース
DistilBERT:BERTの蒸留バージョン](https://zilliz.com/learn/distilbert-distilled-version-of-bert)
検索拡張世代(RAG)](https://zilliz.com/learn/Retrieval-Augmented-Generation)
CLIP物体検出:AIビジョンと言語理解の融合](https://zilliz.com/learn/CLIP-object-detection-merge-AI-vision-with-language-understanding)
ベクトル・データベースとは何か、どのように機能するのか](https://zilliz.com/learn/what-is-vector-database)
MiniLLM: Knowledge Distillation of Large Language Models](https://arxiv.org/abs/2306.08543)
読み続けて

プライベートLLMとは?大規模言語モデルをプライベートで実行 - privateGPTとその先へ
プライベートLLMは、組織のポリシーやプライバシーのニーズに合わせてカスタマイズすることで、データ管理を強化し、法令遵守を保証し、データ漏洩などのリスクを最小限に抑えます。セキュアな環境で運用することにより、第三者からのアクセスを減らし、機密データを不正な暴露から保護します。プライベートLLMは、組織の既存のシステム、ネットワーク、データベースとシームレスに統合できるように設計することができる。組織は、機密情報を保護するために、プライベートLLMに独自のセキュリティ対策を導入することができます。

PagedAttentionを用いた大規模言語モデルサービングの効率的なメモリ管理
PagedAttentionとvLLMは、LLMのサービスにおける重要な課題、特に推論にGPUメモリを使用する際の高いコストと非効率性を解決する。

RouteLLM: LLM展開におけるコストと品質のトレードオフをナビゲートするオープンソースフレームワーク
RouteLLMはオープンソースのフレームワークで、開発者はコスト、レイテンシ、精度に基づき、タスクを最適なLLMに効率的にルーティングできる。