AI・機械学習
4

SliceGPT(構造化プルーニング)(すらいすじーぴーてぃー こうぞうかぷるーにんぐ)

SliceGPTはMicrosoft Researchが2024年に発表したLLM向け構造化プルーニング手法。行列スライシング(次元削減)によってTransformerの隠れ次元dmodelを削減し、再学習なしで20〜30%のパラメータ削減を達成しながら推論高速化を実現する。SparseGPT・Wandaの非構造化スパース化と異なり、削除後のモデルは標準的な密行列として実行できる。

0 回閲覧
0 いいね
2026/6/1 更新

SliceGPTとは

SliceGPTは2024年にMicrosoft Research(Ashkboos et al.)が発表した構造化プルーニング手法です。SparseGPT・WandaなどのUnstructured(非構造化)プルーニングと異なり、Transformerの隠れ次元(dmodel)そのものを削減します。削除後のモデルはゼロが散らばった疎行列ではなく、次元が小さい通常の密行列なので、標準的なTransformerの実装でそのまま動きます。

技術的アプローチ:RCDスライシング

SliceGPTのキーはPCA風の直交変換(RCD: Row-Column Decomposition)です。

手順:
1. 各Transformerレイヤーの活性化(キャリブデータ経由)を収集
2. 活性化行列のPCAで直交変換行列Qを求める
3. 重み行列W → W_Q = Q^T W Q に変換(情報を主成分方向に集約)
4. 最後のN列(寄与の小さい次元)を削除してdmodelを削減
5. 変換後の次元数で新たな重み行列として保存

この変換は等価変換(情報損失ゼロ)→次元削除(情報損失あり)の2段階で、キャリブレーションデータの主要活性化方向を保存しながら余剰次元を除去します。

主要モデルでの性能

モデルスライス率パラメータ削減perplexity上昇latency改善
LLaMA-2 7B20%20%+1.2pt約12%
LLaMA-2 13B25%25%+1.4pt約18%
LLaMA-2 70B25%25%+1.5pt約20%
Phi-2 (2.7B)20%20%+1.1pt約15%
OPT-6.7B30%30%+2.8pt約22%

SparseGPT/Wandaとの本質的違い

非構造化プルーニング(SparseGPT/Wanda):
- モデル内の個別重みをゼロ化
- 行列の物理的サイズは変わらない
- スパーススカーネルなしでは高速化不可

構造化プルーニング(SliceGPT):
- 行列の列/行ごと削除
- 物理的に小さいモデルが生成される
- 通常のfp16/int4カーネルで高速化

実装と利用方法

公式コード microsoft/TransformerCompression(GitHub)。LLaMA-2 7Bを20%スライスする場合:

pip install git+https://github.com/microsoft/TransformerCompression
python run_slicegpt.py --model meta-llama/Llama-2-7b-hf --sparsity 0.2 --cal-dataset wikitext2 --cal-nsamples 128 --save-dir ./sliced_llama2_7b/

スライス後のモデルは通常のHuggingFaceモデルとして保存されるため、AutoModelForCausalLM.from_pretrained()でロード可能です。

量子化との組み合わせ

SliceGPTはモデルを小さくした後にGPTQ/AWQで量子化することで、さらに高い圧縮率を達成できます。

LLaMA-2 7B(7Bパラメータ):
- オリジナルfp16: 14GB
- SliceGPT 20% + int4 GPTQ: 約4.5GB(約3倍圧縮)
- perplexity: 5.47 → 7.1(+1.63pt)

ユースケースと制限

適している場面:

  • エッジデバイス/コンシューマGPUへの展開(VRAM削減が直接効く)
  • LoRAでのfine-tune前提の軽量ベースモデル作成
  • CPU推論(llama.cpp)での使用

制限:

  • 30%超のスライスでは精度劣化が急増する
  • MoEモデルのエキスパートルーターには直接適用困難
  • SparseGPTと比べてperplexity維持は同レベルか若干劣る

FAQ

Q: SliceGPTのモデルをllama.cppで実行できますか? A: はい。スライス後はGGUFに変換でき、標準のllama.cppでそのまま動作します。これが非構造化プルーニングとの大きな違いです。

Q: fine-tuningなしで20%削減は実用的ですか? A: LLaMA-2 70B規模では25%削減でperplexity+1.5ptと優秀で、コード補完や対話タスクへの実用展開報告があります。数学・論理推論はやや劣化が大きくなります。

Q: WindowsのローカルPC(RTX 3080 10GB)でも使えますか? A: LLaMA-2 7Bの20%スライス+int4量子化なら約3.5GBになり、RTX 3080で十分動作します。

この記事について
カテゴリーAI・機械学習
難易度4
作成日2026/6/1