見出し画像

効率的なモデル圧縮と知識蒸留に関する論文紹介[NVIDIA]

タイトル

Compact Language Models via Pruning and Knowledge Distillation

リンク

https://arxiv.org/pdf/2407.14679

ひとこと要約

高性能な小型モデル作成のための、LLMの効率的な圧縮並びに再学習のための包括的な手法を提案。


メモ

方法

  • 重要度分析

    • 小さなキャリブレーションデータセット(1024サンプル)を用意して順伝播

    • 幅(Width)の重要度計算

      • MHA、MLP、LayerNorm層において活性化しているほど重要と定義

    • 深さ(Depth)の重要度計算

      • パープレキシティ(PPL)

        • 各層を1つずつ削除し、性能低下が大きいほど重要と定義

      • ブロック重要度(BI)

        • 各層の入力と出力の類似度し、類似度が小さいほど重要と定義

  • プルーニング

    • 重要度に基づいて、モデルの各部分をランク付け

    • 目標のモデルサイズに応じて、重要度の低い部分を削除

    • 重み行列をトリミング(リシェイピング)

  • アーキテクチャ探索

    • 複数のアーキテクチャを列挙

    • 各構成に対して軽量な再学習(約18億トークン)を実行

    • 性能を比較し、最適なアーキテクチャを選択

  • 知識蒸留を用いた再学習

    • 誤差関数は、中間層の知識蒸留損失、出力分布の知識蒸留損失、クロスエントロピー誤差の組み合わせ

上記の方法でNemotron-4 15Bモデル(15.6億パラメータ)を圧縮して、2つのモデルMINITRON 8BとMINITRON 4Bを作成


結果

  • MINITRON 8B

    • Nemotron-3 8BとLLaMa-2 7Bを上回り、Mistral 7B、Gemma 7B、LLaMa-3 8Bと同等の性能

      • 補足: データセット: MMLU、HumanEval(Pythonコード生成)、ARC-C、HellaSwag、TruthfulQA、WinoGrande、XL-Sum English(要約)

    • Nemotron-3 8Bと比べて学習に必要なトークン数は40分の1

  • LLM-Pruner、SliceGPT、LaCo、ShortGPT、Sheared LLaMaで作成したモデルよりもMINITRONは高性能





理解のためのメモ

重要な構造の例

  • Attention Heads

    • 文章全体の構造や主語と述語の関係、依存関係を認識する構造

      • 「私は昨日買った本を今日読み終えた」という文で、「買った」と「本」の関係を認識する

    • 特定の言語パターンを認識する構造

      • 「AはBより〜」という比較表現を認識する

    • 文脈に基づいて単語の意味を区別する構造

      • 「バンク」が「銀行」か「土手」かを文脈から判断する

    • 固有名詞を識別するヘッド

  • MLP層のニューロン

    • 特定のトピックを識別する

    • 数値データを処理する

  • 埋め込みチャンネル

    • 単語の意味的類似性を表現するチャンネル

      • 犬と猫

    • 文法的特徴を捉えるチャンネル

      • 単数形と複数形

      • 現在形と過去形

    • 文脈依存の意味変化を表現するチャンネル

      • 「春」という単語が季節、人名、動詞のどの意味で使われているかを区別する

この記事が気に入ったらサポートをしてみませんか?