Home
Login

Eine Bibliothek zur beschleunigten Inferenz und zum Training mit Hardware-Optimierungen für Transformers, Diffusers, TIMM und Sentence Transformers.

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

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

  1. Exporters - Verantwortlich für die Modellformatkonvertierung
  2. Optimizers - Führen verschiedene Optimierungsstrategien aus
  3. Quantizers - Implementieren die Modellquantisierung
  4. Runtimes - Bieten optimierte Inferenz-Runtimes
  5. 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.