🤗 PEFT - Detaillierte Einführung in die Bibliothek für parameter-effizientes Fine-Tuning
Projektübersicht
PEFT (Parameter-Efficient Fine-Tuning) ist eine fortschrittliche Bibliothek für parameter-effizientes Fine-Tuning, die von Hugging Face entwickelt wurde. Das Projekt zielt darauf ab, die hohen Rechenkosten und den enormen Speicherbedarf beim Fine-Tuning großer vortrainierter Modelle zu lösen.
GitHub-Adresse: https://github.com/huggingface/peft
Kernwerte und Vorteile
1. Kosteneffizienz
- Deutliche Reduzierung der Rechenkosten: Im Vergleich zum traditionellen Fine-Tuning mit allen Parametern müssen PEFT-Methoden nur einen kleinen Teil der Modellparameter trainieren.
- Signifikante Reduzierung des Speicherbedarfs: Die Checkpoint-Dateien der feinabgestimmten Modelle sind in der Regel nur wenige MB groß, anstatt mehrere GB.
- Optimierung der Speichernutzung: Ermöglicht die Verarbeitung größerer Modelle unter gleichen Hardwarebedingungen.
2. Leistungserhalt
- Vergleichbar mit Fine-Tuning mit allen Parametern: Erreicht in den meisten Aufgaben eine vergleichbare Leistung wie das vollständige Fine-Tuning.
- Vermeidung von katastrophalem Vergessen: Schützt das ursprüngliche Wissen des Basismodells und reduziert das Risiko der Überanpassung.
3. Flexibilität und Komfort
- Anpassung an mehrere Aufgaben: Ermöglicht das Training mehrerer leichtgewichtiger Adapter für verschiedene Aufgaben.
- Nahtlose Integration: Perfekte Integration in das Ökosystem von Transformers, Diffusers, Accelerate usw.
Unterstützte Fine-Tuning-Methoden
Wichtige PEFT-Technologien
- LoRA (Low-Rank Adaptation)
- Die beliebteste Methode für parameter-effizientes Fine-Tuning.
- Reduziert die Anzahl der trainierbaren Parameter durch Low-Rank-Matrixfaktorisierung erheblich.
- In typischen Szenarien müssen nur 0,1%-1% der ursprünglichen Parameter trainiert werden.
- AdaLoRA
- Eine verbesserte Version von LoRA.
- Passt die Ranggröße adaptiv an, um die Effizienz weiter zu optimieren.
- Prefix Tuning
- Fügt der Eingabesequenz ein lernbares Präfix hinzu.
- Geeignet für generative Aufgaben.
- P-Tuning v2
- Eine verbesserte Methode zur Prompt-Optimierung.
- Fügt lernbare Parameter in mehreren Schichten hinzu.
- IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)
- Passt das Modell durch Hemmung und Verstärkung interner Aktivierungen an.
Tatsächliche Anwendungseffekte
Vergleich der Speichernutzung (A100 80GB GPU)
Modell |
Vollständiges Fine-Tuning |
PEFT-LoRA |
PEFT-LoRA + DeepSpeed CPU-Auslagerung |
T0_3B (3 Milliarden Parameter) |
47,14 GB GPU / 2,96 GB CPU |
14,4 GB GPU / 2,96 GB CPU |
9,8 GB GPU / 17,8 GB CPU |
mt0-xxl (120 Milliarden Parameter) |
Speicherüberlauf |
56 GB GPU / 3 GB CPU |
22 GB GPU / 52 GB CPU |
bloomz-7b1 (7 Milliarden Parameter) |
Speicherüberlauf |
32 GB GPU / 3,8 GB CPU |
18,1 GB GPU / 35 GB CPU |
Leistung
Vergleich der Genauigkeit bei der Twitter-Beschwerdeklassifizierung:
- Menschliche Baseline: 89,7%
- Flan-T5: 89,2%
- LoRA-T0-3B: 86,3%
Installation und Schnellstart
Installation
pip install peft
Grundlegendes Nutzungsbeispiel
from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType
# PEFT konfigurieren
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
)
# Modell laden und verpacken
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
# Trainierbare Parameter anzeigen
model.print_trainable_parameters()
# Ausgabe: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19
Inferenz verwenden
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
# Feinabgestimmtes Modell laden
model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")
# Inferenz durchführen
model.eval()
inputs = tokenizer("Dein Eingabetext", return_tensors="pt")
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)
Ökosystemintegration
1. Transformers-Integration
- Unterstützt verschiedene vortrainierte Modellarchitekturen
- Nahtlose Trainings- und Inferenzabläufe
- Automatische Modellkonfiguration und -optimierung
2. Diffusers-Integration
- Unterstützt das effiziente Fine-Tuning von Diffusionsmodellen
- Geeignet für Aufgaben wie Bildgenerierung und -bearbeitung
- Deutliche Reduzierung des Trainingsspeicherbedarfs
3. Accelerate-Integration
- Unterstützt verteiltes Training
- Optimierung des Trainings mit mehreren GPUs und TPUs
- Benutzerfreundlich für Consumer-Hardware
4. TRL (Transformer Reinforcement Learning)-Integration
- Unterstützt RLHF (Reinforcement Learning from Human Feedback)
- DPO (Direct Preference Optimization)
- Ausrichtungstraining großer Modelle
Anwendungsbereiche
1. Fine-Tuning großer Sprachmodelle
- Befehlsgesteuertes Fine-Tuning
- Optimierung von Dialogsystemen
- Anpassung an bestimmte Bereiche
2. Multimodale Modelle
- Fine-Tuning von visuellen Sprachmodellen
- Anpassung von Audioverarbeitungsmodellen
3. Diffusionsmodelle
- Personalisierung von Stable Diffusion
- DreamBooth-Training
- Stilübertragung
4. Reinforcement Learning
- Fine-Tuning von Strategiemodellen
- Training von Belohnungsmodellen
- Ausrichtung auf menschliche Präferenzen
Technische Vorteile und Innovationen
1. Parametereffizienz
- Nur 0,1%-1% der ursprünglichen Parameter werden trainiert
- Beibehaltung von über 95% der Leistung
- Checkpoint-Dateien werden auf 1/100 der ursprünglichen Größe reduziert
2. Speicheroptimierung
- Deutliche Reduzierung des GPU-Speicherbedarfs
- Unterstützt das Training großer Modelle auf Consumer-Hardware
- Gradienten-Checkpointing zur weiteren Optimierung des Speichers
3. Quantisierungskompatibilität
- Perfekte Kombination mit 8-Bit- und 4-Bit-Quantisierung
- QLoRA-Technologie-Unterstützung
- Weitere Senkung der Hardwareanforderungen
4. Modulares Design
- Unterstützt verschiedene PEFT-Methoden
- Flexible Konfigurationsoptionen
- Einfache Erweiterung um neue Methoden
Community und Ökosystem
Offizielle Ressourcen
Zusammenfassung
🤗 PEFT ist eine revolutionäre Bibliothek für parameter-effizientes Fine-Tuning, die nicht nur die Kostenprobleme des Fine-Tunings großer Modelle löst, sondern auch eine hervorragende Leistung beibehält. Ob Forscher oder Entwickler in der Industrie, PEFT bietet eine kostengünstige Lösung zur Anpassung großer Modelle und fördert so die Demokratisierung der KI-Technologie.