Repolode
microsoft

microsoft/TransformerCompression

SliceGPTは、重み行列の行と列をスライスしてLLMなどのTransformerモデルを縮小する、学習後圧縮手法です。

スター
466
フォーク
59
未解決の Issue
27
最終コミット
2 か月前

これは何?

SliceGPTは、大規模言語モデルを含むTransformerネットワークを、学習後に小型化します。まず各層に直交変換を適用します。この変換ではモデルの出力は変わりません。次に、固有値の減衰に基づいて選んだ重要度の低い重み行列の行と列を削除します。モデルの構造は維持したまま埋め込み次元を削減できるため、追加のコード最適化なしで高速化し、メモリ使用量も抑えられます。

このリポジトリには、`slicegpt` Pythonパッケージと、ICLR'24論文の実験を再現するためのスクリプトが含まれています。モデルのスライス、復元のためのファインチューニング(LoRAベース)、LM Eval Harnessによる評価などのワークフローを利用できます。対応モデルには、Phi-2、Phi-3-mini、複数のLlama-2およびLlama-3のバリアント、125Mから66BパラメータまでのOPTモデルがあります。

新しいモデルファミリーを追加するには、モデルアダプターとレイヤーアダプターを実装し、Hugging Faceの読み込みユーティリティを更新します。

主な機能

  • 01重み行列をスライスして埋め込み次元を削減する学習後圧縮。
  • 02各層に直交変換を適用することで、スライス前のモデルの機能を維持。
  • 03密な小型重み行列を生成するため、カスタムカーネルなしで高速化が可能。
  • 04LoRAによる復元のためのファインチューニングと、ベイズ最適化によるハイパーパラメータ探索に対応。
  • 05LM Eval Harnessとの評価連携。
  • 06新しいHugging Face Transformerアーキテクチャを追加するためのアダプターインターフェース。

ユースケース

  • 限られたGPU環境へのデプロイに向けて、Phi-2やLlamaモデルのメモリ使用量を削減する。
  • LLMの学習後圧縮を研究し、SliceGPT論文の結果を再現する。
  • アダプターを使って、新しいTransformerアーキテクチャにSliceGPTの対応を追加する。

クイックスタート

  1. 1

    experiment extras付きでslicegptパッケージをインストールします

    pip install -e .[experiment]
  2. 2

    experimentsフォルダーから、SliceGPTでmicrosoft/phi-2を圧縮します

    python run_slicegpt.py --model microsoft/phi-2 --save-dir dir/to/save/sliced_model/in --sparsity 0.25 --device cuda:0 --eval-baseline --no-wandb

使う前に知っておきたいこと

  • READMEに記載されているHugging Faceモデルのみサポートされています。その他のモデルには新しいアダプターが必要です。
  • 一部のモデルでは、--hf-tokenまたはHF_TOKENを使ったHugging Face認証が必要です。

トピック

よくある質問

TransformerCompression とは?
SliceGPTは、重み行列の行と列をスライスしてLLMなどのTransformerモデルを縮小する、学習後圧縮手法です。 SliceGPTは、大規模言語モデルを含むTransformerネットワークを、学習後に小型化します。まず各層に直交変換を適用します。この変換ではモデルの出力は変わりません。次に、固有値の減衰に基づいて選んだ重要度の低い重み行列の行と列を削除します。モデルの構造は維持したまま埋め込み次元を削減できるため、追加のコード最適化なしで高速化し、メモリ使用量も抑えられます。
TransformerCompression は無料で使えますか?ライセンスは?
TransformerCompression は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
TransformerCompression は今もメンテナンスされていますか?
半年以内に更新あり。TransformerCompression の最終コミットは 2026年9月10日 です。
TransformerCompression は何に使えますか?
限られたGPU環境へのデプロイに向けて、Phi-2やLlamaモデルのメモリ使用量を削減する。 LLMの学習後圧縮を研究し、SliceGPT論文の結果を再現する。 アダプターを使って、新しいTransformerアーキテクチャにSliceGPTの対応を追加する。
TransformerCompression のインストール方法は?
experiment extras付きでslicegptパッケージをインストールします: pip install -e .[experiment] experimentsフォルダーから、SliceGPTでmicrosoft/phi-2を圧縮します: python run_slicegpt.py --model microsoft/phi-2 --save-dir dir/to/save/sliced_model/in --sparsity 0.25 --device cuda:0 --eval-baseline --no-wandb
TransformerCompression はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/microsoft/TransformerCompression

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト