AI・機械学習
中級
PEFT(パラメータ効率的ファインチューニング)(ペフト)
HuggingFaceが開発するパラメータ効率的ファインチューニングライブラリ。LoRA・QLoRA・DoRA・Prefix Tuning・P-Tuningなど各種PEFT手法を統一APIで提供し、大規模モデルの効率的な特化調整を可能にする。
0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
peft
huggingface
fine-tuning
lora
adapter
llm
parameter-efficient
PEFTライブラリとは
PEFTはHuggingFaceが開発するオープンソースのPython(PyTorch)ライブラリで、大規模言語モデルを全パラメータ更新なしに効率的にファインチューニングするための様々な手法を統一インターフェースで提供する。2022年公開後、急速にコミュニティの標準ツールとなった。
対応手法一覧
- LoRA: 低ランク行列適応(汎用ファインチューニング)
- DoRA: 重み分解LoRA(高精度タスク用)
- QLoRA: 4bit量子化+LoRA(VRAM制約環境)
- Prefix Tuning: 入力プレフィックス学習
- P-Tuning v2: 全層プロンプト最適化
- Prompt Tuning: ソフトプロンプト学習
- IA3: Infused Adapter(超低リソース)
- AdaLoRA: 適応的ランク割り当て
インストール
pip install peft
# または
pip install peft bitsandbytes # QLoRA込み
基本的な使い方
from transformers import AutoModelForCausalLM
from peft import LoraConfig, get_peft_model, TaskType, PeftModel
# 1. ベースモデル読み込み
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b")
# 2. PEFTコンフィグ設定
config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=16, lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05
)
# 3. PEFTモデル作成
peft_model = get_peft_model(model, config)
peft_model.print_trainable_parameters()
# 4. 学習後の保存(アダプタ重みのみ)
peft_model.save_pretrained("./my-lora-adapter")
アダプタの読み込みと推論
# PeftModelで読み込み
base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b")
model = PeftModel.from_pretrained(base_model, "./my-lora-adapter")
# マージして通常モデルとして保存
merged = model.merge_and_unload()
merged.save_pretrained("./merged-model")
Multi-LoRA Serving
vLLM・SGLang・TGIはPEFTのLoRAアダプタを動的ロードしてサービングできる:
# vLLM例: 複数アダプタを同一ベースモデルで切り替え
vllm serve meta-llama/Llama-3-8b \
--enable-lora \
--lora-modules medical=./medical-adapter code=./code-adapter
エコシステム
- Axolotl: PEFTベースの高機能ファインチューニングフレームワーク
- UnSloth: PEFTのQLoRAを最適化した高速ライブラリ
- LLaMA-Factory: GUI付きPEFTラッパー
- TRL: RLHF/DPO学習時にPEFTと組み合わせ
まとめ
PEFTはLLMファインチューニングエコシステムの中心に位置するライブラリ。「LoRAアダプタ」が事実上の業界標準フォーマットになったのもPEFTの統一インターフェースによるところが大きい。