peft OSS

Hugging Face製のOSSライブラリ。LoRA・QLoRAなど複数の手法で大規模AIモデルを少ないパラメータだけ学習し直すことができ、家庭用GPUでも大型モデルのカスタマイズを実現する。完全無料・Apache 2.0ライセンス。

last-updated: 2026-07-16 · source: database

github_stars21.4k
pricing完全無料 / OSSライセンス(Apache 2.0)/ 商用利用可
licenseApache-2.0
japanese不明

概要

PEFT(Parameter-Efficient Fine-Tuning:パラメータ効率の良いファインチューニング)は、Hugging Faceが開発・公開しているOSSのPythonライブラリです。従来、GPT系やLlamaのような大規模AIモデルを「自社データ用にカスタマイズ(ファインチューニング)」しようとすると、モデル全体の数十億〜数千億のパラメータ(設定値)をすべて書き換える必要があり、高額なGPUサーバーを大量に用意しなければなりませんでした。PEFTはその問題を根本から解決します。モデルの大部分はそのまま凍結し、ごく一部の「追加アダプター(薄い差分レイヤー)」だけを学習させることで、フルファインチューニングに匹敵する性能を、はるかに少ないコストで実現します。

注目される理由は「コストの劇的な削減」と「手軽さの両立」にあります。公式GitHubによれば、学習するパラメータはモデル全体の0.1〜0.2%程度にとどまり、保存するファイルサイズも数GBではなく数MB〜数十MBで済みます。たとえばStable Diffusionをカスタマイズした場合のチェックポイントサイズはわずか8.8MBとされています。さらにPEFTはHugging FaceのTransformers・Diffusers・Accelerateと深く統合されており、既存のワークフローにほぼそのまま組み込めます。

主な機能

モデルの重み行列を小さな2つの行列に分解して追加学習する手法(LoRA)を数行のコードで使える。学習パラメータを大幅に削減しながらフルファインチューニング相当の精度を達成する。

ベースモデルを4ビット量子化(データを低精度で圧縮する技術)した上でLoRAを適用する手法。16GB程度の一般向けGPUでも大型モデルのファインチューニングが可能になる。

LoRA・QLoRA・AdaLoRA・IA3・Prefix Tuning・Prompt Tuning など複数の手法をサポート。設定ファイル(Config)を切り替えるだけで手法を変更できる。

学習済みのアダプターはファイルサイズが小さいため、Hugging Face Hub(モデル共有サービス)に簡単にアップロード・共有できる。複数のアダプターをひとつのベースモデルに読み込んで動的に切り替えることも可能。

テキストAIだけでなく、Stable Diffusionなどの画像生成モデル(Diffusers連携)にもLoRAを適用でき、特定のキャラクターや画風への特化が実現できる。

bitsandbytesライブラリと連携してモデルを量子化(圧縮)したままファインチューニングでき、さらなるメモリ削減が可能。

Transformers・Diffusers・Accelerate・TRLと深く連携しており、分散学習(複数GPUを束ねての学習)にも対応。既存のTrainer APIにそのまま組み込める。

料金プラン

プラン料金内容
OSSライブラリ(pip install)完全無料ライブラリ本体の利用・商用利用すべて無料。Apache 2.0ライセンス。
GPU環境(自前)別途コストローカルPC・クラウドGPU等は利用者が用意。Google ColabなどのフリーGPUも利用可能。
Hugging Face Hub連携無料枠ありモデルのアップロード・共有はHugging Face Hubの料金体系に依存。詳細は公式サイト参照。

> 補足: PEFTライブラリそのものは完全無料のOSSです。ファインチューニングの実行には別途GPU環境が必要で、そのコストは利用するインフラ(自前PC・クラウドサービス等)に依存します。

導入方法

1. インストール

pip install peft

2. LoRAでモデルをファインチューニング準備(最小コード例)

import torch
from transformers import AutoModelForCausalLM
from peft import LoraConfig, TaskType, get_peft_model

# ベースモデルの読み込み
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-3B-Instruct")

# LoRAの設定
peft_config = LoraConfig(
    r=16,                          # ランク(小さいほどパラメータ少)
    lora_alpha=32,
    task_type=TaskType.CAUSAL_LM,  # テキスト生成タスク
)

# アダプターをモデルに適用
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()
# 例: trainable params: 3,686,400 || all params: 3,089,625,088 || trainable%: 0.12

3. 学習後にアダプターを保存

# 学習(Trainerなどで実施)後
model.save_pretrained("my-custom-adapter")

4. 保存済みアダプターの読み込み

from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-3B-Instruct")
model = PeftModel.from_pretrained(base_model, "my-custom-adapter")

こんな人におすすめ

「このAIに専門用語を覚えさせたい」「特定のキャラクター口調で話させたい」など、既存の大型モデルを自分好みにチューニングしたい人に最適。高スペックGPUがなくても始められる。

Stable DiffusionへのLoRA適用にも対応しており、特定の画風・キャラクターを学習させた超軽量アダプターを作成・公開・配布できる。

フルファインチューニングに比べてGPUメモリ消費を大幅に削減できるため、クラウドGPUの費用を抑えながら業務特化型AIを構築できる。

TransformersやDiffusersとシームレスに統合されているため、既存コードへの追加が最小限で済む。Hub上のPEFTアダプターも簡単に読み込んで活用できる。

よくある質問

Q. LoRAと普通のファインチューニングは何が違うの? A. 通常のファインチューニングはモデルのすべての設定値(パラメータ)を書き換えます。LoRAは「小さな差分シート(アダプター)」だけを追加学習し、元のモデルはそのまま凍結します。学習するパラメータがモデル全体の0.1〜0.2%程度になるため、メモリ消費・時間・保存容量のすべてが大幅に削減されます。

Q. どのくらいのスペックのPCが必要? A. 手法と量子化の組み合わせ次第です。QLoRA(4ビット量子化+LoRA)を使えば16GBのGPUメモリでも大型モデルをファインチューニングできると公式ドキュメントに記載されています。Google ColabなどのクラウドGPU環境でも動作します。

Q. PEFTで学習したアダプターは商用利用できる? A. PEFTライブラリ自体はApache 2.0ライセンスで商用利用可能です。ただし、ベースモデル(LlamaやGemmaなど)にはそれぞれ独自のライセンスがあるため、ベースモデルのライセンスを必ず確認してください。

Q. テキストAI以外にも使える? A. はい。テキスト生成・分類・音声認識(WhisperへのLoRA適用)・画像分類・画像生成(Stable Diffusion)など、多様なタスクに対応したガイドが公式ドキュメントに用意されています。

LLM(大規模言語モデル)APIオープンソース(OSS)クラウドGitHubファインチューニングローカルLLM