Home
Login

🤗 PEFTはHugging Faceが開発した最先端のパラメータ効率の良いファインチューニングライブラリで、LoRAやAdaLoRAなどの技術を通じて大規模モデルの低コストなファインチューニングを実現します。

Apache-2.0Python 18.8khuggingface Last Updated: 2025-06-19

🤗 PEFT - パラメータ効率的ファインチューニングライブラリ詳細

プロジェクト概要

PEFT (Parameter-Efficient Fine-Tuning) は、Hugging Faceによって開発された、最先端のパラメータ効率的ファインチューニングライブラリです。このプロジェクトは、大規模な事前学習済みモデルのファインチューニングにおける計算コストの高さと、ストレージ要件の巨大さという問題を解決することを目的としています。

GitHubアドレス: https://github.com/huggingface/peft

コアバリューとメリット

1. コスト効率

  • 計算コストを大幅に削減:従来の全パラメータファインチューニングと比較して、PEFTメソッドはモデルパラメータのごく一部のみを訓練します。
  • ストレージ要件を大幅に削減:ファインチューニング後のモデルチェックポイントファイルは通常、数GBではなく数MBです。
  • メモリ使用量の最適化:同じハードウェア条件下で、より大きなモデルを処理できます。

2. 性能維持

  • 全パラメータファインチューニングに匹敵:ほとんどのタスクで、完全なファインチューニングに匹敵するパフォーマンスを実現します。
  • 壊滅的な忘却の回避:基礎モデルの元の知識を保護し、過学習のリスクを軽減します。

3. 柔軟性と利便性

  • マルチタスク対応:さまざまなタスクに対して、複数の軽量アダプターを訓練できます。
  • シームレスな統合:Transformers、Diffusers、Accelerateなどのエコシステムと完全に統合されています。

サポートされているファインチューニング方法

主要なPEFT技術

  1. LoRA (Low-Rank Adaptation)
  • 最も人気のあるパラメータ効率的ファインチューニング方法
  • 低ランク行列分解により、訓練可能なパラメータを大幅に削減します。
  • 典型的なシナリオでは、元のパラメータの0.1%〜1%のみを訓練します。
  1. AdaLoRA
  • LoRAの改良版
  • 適応的にランクサイズを調整し、効率をさらに最適化します。
  1. Prefix Tuning
  • 入力シーケンスの前に学習可能なプレフィックスを追加します。
  • 生成タスクに適しています。
  1. P-Tuning v2
  • 改良されたプロンプトチューニング方法
  • 複数のレイヤーに学習可能なパラメータを追加します。
  1. IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)
  • 内部アクティベーションを抑制および増幅することにより、モデルを適応させます。

実際のアプリケーション効果

メモリ使用量の比較 (A100 80GB GPU)

モデル 全パラメータファインチューニング PEFT-LoRA PEFT-LoRA + DeepSpeed CPUオフロード
T0_3B (30億パラメータ) 47.14GB GPU / 2.96GB CPU 14.4GB GPU / 2.96GB CPU 9.8GB GPU / 17.8GB CPU
mt0-xxl (120億パラメータ) メモリ不足 56GB GPU / 3GB CPU 22GB GPU / 52GB CPU
bloomz-7b1 (70億パラメータ) メモリ不足 32GB GPU / 3.8GB CPU 18.1GB GPU / 35GB CPU

性能表現

Twitterの苦情分類タスクにおける精度比較:

  • 人間のベースライン:89.7%
  • Flan-T5:89.2%
  • LoRA-T0-3B:86.3%

インストールとクイックスタート

インストール

pip install peft

基本的な使用例

from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType

# PEFTの設定
model_name_or_path = "bigscience/mt0-large"
peft_config = LoraConfig(
    task_type=TaskType.SEQ_2_SEQ_LM, 
    inference_mode=False, 
    r=8, 
    lora_alpha=32, 
    lora_dropout=0.1
)

# モデルのロードとラッピング
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)

# 訓練可能なパラメータの確認
model.print_trainable_parameters()
# 出力:trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19

推論の使用

from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

# ファインチューニング後のモデルのロード
model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")

# 推論の実行
model.eval()
inputs = tokenizer("あなたの入力テキスト", return_tensors="pt")
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)

エコシステム統合

1. Transformers統合

  • さまざまな事前学習済みモデルアーキテクチャをサポート
  • シームレスなトレーニングと推論のフロー
  • 自動モデル構成と最適化

2. Diffusers統合

  • 拡散モデルの効率的なファインチューニングをサポート
  • 画像生成、編集などのタスクに適しています。
  • トレーニングメモリ要件を大幅に削減

3. Accelerate統合

  • 分散トレーニングをサポート
  • マルチGPU、TPUトレーニングの最適化
  • コンシューマーグレードのハードウェアに優しい

4. TRL (Transformer Reinforcement Learning)統合

  • RLHF (人間のフィードバックによる強化学習) をサポート
  • DPO (直接選好最適化)
  • 大規模モデルのアライメントトレーニング

アプリケーションシナリオ

1. 大規模言語モデルのファインチューニング

  • 指示ファインチューニング
  • 対話システムの最適化
  • 特定のドメインへの適応

2. マルチモーダルモデル

  • 視覚-言語モデルのファインチューニング
  • 音声処理モデルの適応

3. 拡散モデル

  • Stable Diffusionのパーソナライズ
  • DreamBoothトレーニング
  • スタイル変換

4. 強化学習

  • 戦略モデルのファインチューニング
  • 報酬モデルのトレーニング
  • 人間の選好のアライメント

技術的な利点と革新的な点

1. パラメータ効率

  • 元のパラメータの0.1%〜1%のみを訓練
  • 95%以上のパフォーマンスを維持
  • チェックポイントファイルを元の1/100に縮小

2. メモリ最適化

  • GPUメモリ要件を大幅に削減
  • コンシューマーグレードのハードウェアでの大規模モデルのトレーニングをサポート
  • 勾配チェックポイントによるメモリのさらなる最適化

3. 量子化互換性

  • 8bit、4bit量子化と完全に連携
  • QLoRA技術をサポート
  • ハードウェアの敷居をさらに下げる

4. モジュール設計

  • さまざまなPEFTメソッドをサポート
  • 柔軟な構成オプション
  • 新しいメソッドの拡張が容易

コミュニティとエコシステム

公式リソース

まとめ

🤗 PEFTは、大規模モデルのファインチューニングのコスト問題を解決するだけでなく、優れたパフォーマンスを維持する革新的なパラメータ効率的ファインチューニングライブラリです。研究者であろうと産業界の開発者であろうと、PEFTは経済的で効率的な大規模モデルのカスタマイズソリューションを提供し、AI技術の民主化を推進します。