Eine Bibliothek zur beschleunigten Inferenz und zum Training mit Hardware-Optimierungen für Transformers, Diffusers, TIMM und Sentence Transformers.
Hugging Face Optimum Projekt – Detaillierte Beschreibung
Projektübersicht
🤗 Optimum ist eine von Hugging Face entwickelte, spezialisierte Bibliothek zur Optimierung von Machine-Learning-Modellen. Sie ist eine Erweiterung von 🤗 Transformers und Diffusers. Das Projekt konzentriert sich auf die Bereitstellung von Werkzeugen zur Maximierung der Effizienz beim Trainieren und Ausführen von Modellen auf verschiedenen Zielhardwareplattformen, wobei gleichzeitig die Benutzerfreundlichkeit erhalten bleibt.
Projektadresse: https://github.com/huggingface/optimum
Kernfunktionen
1. Unterstützung für mehrere Hardwareplattformen
Optimum unterstützt eine Vielzahl gängiger Hardwarebeschleunigungsplattformen:
- ONNX/ONNX Runtime - Plattformübergreifende Machine-Learning-Inferenz
- ExecuTorch - PyTorch-Inferenzlösung für Edge-Geräte
- TensorFlow Lite - Optimierung für mobile Geräte und Edge-Geräte
- OpenVINO - Intel Hardwareoptimierung
- NVIDIA TensorRT-LLM - NVIDIA GPU-Beschleunigung
- AWS Trainium & Inferentia - AWS-spezifische Chips
- Habana Gaudi - Habana-Prozessoren
- AMD Instinct GPUs - AMD Hardwareunterstützung
- Intel Neural Compressor - Intel-Neuronales-Netzwerk-Komprimierung
- FuriosaAI - FuriosaAI Hardwareplattform
2. Modellexport und -optimierung
- Formatkonvertierung: Unterstützt den Export von Transformers- und Diffusers-Modellen in Formate wie ONNX, ExecuTorch, TensorFlow Lite usw.
- Graphenoptimierung: Automatische Optimierung des Modellberechnungsgraphen
- Quantisierungstechniken: Bietet verschiedene Quantisierungsschemata zur Reduzierung der Modellgröße und Inferenzlatenz
- Leistungsoptimierung: Leistungsoptimierung für bestimmte Hardware
3. Trainingsbeschleunigung
Bietet optimierte Trainings-Wrapper, die Folgendes unterstützen:
- Training mit Habana Gaudi-Prozessoren
- Training mit AWS Trainium-Instanzen
- ONNX Runtime GPU-optimiertes Training
Installationsmethoden
Basisinstallation
python -m pip install optimum
Installation für bestimmte Beschleuniger
Wählen Sie den entsprechenden Installationsbefehl basierend auf der benötigten Hardwareplattform:
# ONNX Runtime
pip install --upgrade --upgrade-strategy eager optimum[onnxruntime]
# ExecuTorch
pip install --upgrade --upgrade-strategy eager optimum[executorch]
# Intel Neural Compressor
pip install --upgrade --upgrade-strategy eager optimum[neural-compressor]
# OpenVINO
pip install --upgrade --upgrade-strategy eager optimum[openvino]
# NVIDIA TensorRT-LLM
docker run -it --gpus all --ipc host huggingface/optimum-nvidia
# AMD 硬件
pip install --upgrade --upgrade-strategy eager optimum[amd]
# AWS Trainium & Inferentia
pip install --upgrade --upgrade-strategy eager optimum[neuronx]
# Habana Gaudi
pip install --upgrade --upgrade-strategy eager optimum[habana]
# FuriosaAI
pip install --upgrade --upgrade-strategy eager optimum[furiosa]
Installation aus dem Quellcode
python -m pip install git+https://github.com/huggingface/optimum.git
Hauptfunktionsmodule
1. Modellexport (Export)
ONNX-Exportbeispiel:
# Abhängigkeiten installieren
pip install optimum[exporters,onnxruntime]
# Modell exportieren
optimum-cli export onnx --model bert-base-uncased --output ./bert-onnx/
ExecuTorch-Export:
# Abhängigkeiten installieren
pip install optimum[exporters-executorch]
# Modell für Edge-Geräte exportieren
optimum-cli export executorch --model distilbert-base-uncased --output ./distilbert-executorch/
TensorFlow Lite-Export:
# Abhängigkeiten installieren
pip install optimum[exporters-tf]
# Exportieren und quantisieren
optimum-cli export tflite --model bert-base-uncased --output ./bert-tflite/
2. Inferenzoptimierung
Verwenden von ONNX Runtime zur optimierten Inferenz:
from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer
# Optimiertes Modell laden
model = ORTModelForSequenceClassification.from_pretrained("./bert-onnx/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
# Inferenz durchführen
inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)
3. Quantisierungstechniken
Unterstützt verschiedene Quantisierungsschemata:
- Dynamische Quantisierung - Laufzeitquantisierung
- Statische Quantisierung - Quantisierung basierend auf Kalibrierungsdaten
- QAT (Quantization Aware Training) - Quantisierungsbewusstes Training
4. Trainingsoptimierung
Verwenden von Habana Gaudi zur optimierten Trainings:
from optimum.habana import GaudiTrainer, GaudiTrainingArguments
# Trainingsparameter konfigurieren
training_args = GaudiTrainingArguments(
output_dir="./results",
use_habana=True,
use_lazy_mode=True,
gaudi_config_name="Habana/bert-base-uncased"
)
# Optimierten Trainer erstellen
trainer = GaudiTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
# Training starten
trainer.train()
Hauptvorteile
1. Benutzerfreundlichkeit
- Einheitliche Schnittstelle: API-Design, das mit der Transformers-Bibliothek konsistent ist
- Befehlszeilentool: Bereitstellung des
optimum-cli
Befehlszeilentools zur Vereinfachung der Bedienung - Automatische Optimierung: Intelligente Auswahl der optimalen Optimierungsstrategie
2. Leistungssteigerung
- Inferenzbeschleunigung: Deutliche Steigerung der Modellinferenzgeschwindigkeit
- Speicheroptimierung: Reduzierung des Speicherbedarfs
- Energieverbrauchssenkung: Optimierung des Energieverbrauchs
3. Produktionsbereit
- Stabilität: Durch umfangreiche Tests und Validierungen
- Skalierbarkeit: Unterstützung für großflächige Bereitstellungen
- Kompatibilität: Perfekte Integration in das bestehende Hugging Face-Ökosystem
Anwendungsbereiche
1. Bereitstellung auf Edge-Geräten
- KI-Anwendungen auf Mobilgeräten
- Intelligente IoT-Geräte
- Optimierung eingebetteter Systeme
2. Optimierung von Cloud-Diensten
- Umfangreiche API-Dienste
- Batch-Inferenzaufgaben
- Echtzeit-Reaktionssysteme
3. Beschleunigung durch dedizierte Hardware
- Optimierung von GPU-Clustern
- TPU-Beschleunigung
- Anpassung an dedizierte KI-Chips
Community-Ökosystem
Verwandte Projekte
- optimum-intel - Dedizierte Optimierung für Intel-Hardware
- optimum-habana - Unterstützung für Habana Gaudi-Prozessoren
- optimum-neuron - Unterstützung für AWS Neuron-Chips
- optimum-nvidia - NVIDIA Hardwareoptimierung
- optimum-benchmark - Tool zur Leistungsbewertung
- optimum-quanto - PyTorch Quantisierungs-Backend
Dokumentationsressourcen
Technische Architektur
Kernkomponenten
- Exporters - Verantwortlich für die Modellformatkonvertierung
- Optimizers - Führen verschiedene Optimierungsstrategien aus
- Quantizers - Implementieren die Modellquantisierung
- Runtimes - Bieten optimierte Inferenz-Runtimes
- Trainers - Hardwareoptimierte Trainings-Wrapper
Designprinzipien
- Modularität - Einzelne Funktionsmodule sind unabhängig und kombinierbar
- Erweiterbarkeit - Einfaches Hinzufügen neuer Hardwareunterstützung
- Abwärtskompatibilität - Beibehaltung der Kompatibilität mit bestehenden APIs
- Leistungspriorität - Leistungsorientierte Optimierung als Kernziel
Zusammenfassung
Hugging Face Optimum ist eine leistungsstarke und benutzerfreundliche Bibliothek zur Optimierung von Machine-Learning-Modellen. Sie bietet Entwicklern eine umfassende Lösung für die effiziente Bereitstellung von KI-Modellen auf verschiedenen Hardwareplattformen und ist ein wichtiges Werkzeug für die moderne Entwicklung und Bereitstellung von KI-Anwendungen. Ob Edge-Gerätebereitstellung oder großflächige Cloud-Dienste, Optimum bietet deutliche Leistungssteigerungen und Kostenoptimierungen.