Bibliothèque d'inférence et d'entraînement accélérés avec des outils d'optimisation matérielle pour Transformers, Diffusers, TIMM et Sentence Transformers
Présentation détaillée du projet Hugging Face Optimum
Aperçu du projet
🤗 Optimum est une bibliothèque d'optimisation de modèles d'apprentissage automatique spécialisée, lancée par Hugging Face, et une extension de 🤗 Transformers et Diffusers. Ce projet se concentre sur la fourniture d'outils d'optimisation de l'entraînement et de l'exécution de modèles les plus efficaces pour divers matériels cibles, tout en conservant une facilité d'utilisation.
Adresse du projet : https://github.com/huggingface/optimum
Caractéristiques principales
1. Prise en charge de plusieurs plateformes matérielles
Optimum prend en charge plusieurs plateformes d'accélération matérielle courantes :
- ONNX/ONNX Runtime - Inférence d'apprentissage automatique multiplateforme
- ExecuTorch - Solution d'inférence PyTorch pour les appareils périphériques
- TensorFlow Lite - Optimisation pour les appareils mobiles et périphériques
- OpenVINO - Optimisation du matériel Intel
- NVIDIA TensorRT-LLM - Accélération GPU NVIDIA
- AWS Trainium & Inferentia - Puces dédiées AWS
- Habana Gaudi - Processeurs Habana
- AMD Instinct GPUs - Prise en charge du matériel AMD
- Intel Neural Compressor - Compression de réseaux neuronaux Intel
- FuriosaAI - Plateforme matérielle FuriosaAI
2. Exportation et optimisation de modèles
- Conversion de format : Prend en charge l'exportation de modèles Transformers et Diffusers aux formats ONNX, ExecuTorch, TensorFlow Lite, etc.
- Optimisation du graphe : Optimisation automatique du graphe de calcul du modèle
- Techniques de quantification : Fournit diverses solutions de quantification pour réduire la taille du modèle et la latence d'inférence
- Réglage des performances : Optimisation des performances pour un matériel spécifique
3. Accélération de l'entraînement
Fournit des wrappers d'entraînement optimisés, prenant en charge :
- Entraînement sur processeurs Habana Gaudi
- Entraînement sur instances AWS Trainium
- Entraînement optimisé ONNX Runtime GPU
Méthode d'installation
Installation de base
python -m pip install optimum
Installation d'accélérateurs spécifiques
Sélectionnez la commande d'installation correspondante en fonction de la plateforme matérielle requise :
# 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
# Matériel 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 à partir du code source
python -m pip install git+https://github.com/huggingface/optimum.git
Principaux modules fonctionnels
1. Exportation de modèles (Export)
Exemple d'exportation ONNX :
# Installer les dépendances
pip install optimum[exporters,onnxruntime]
# Exporter le modèle
optimum-cli export onnx --model bert-base-uncased --output ./bert-onnx/
Exportation ExecuTorch :
# Installer les dépendances
pip install optimum[exporters-executorch]
# Exporter le modèle pour les appareils périphériques
optimum-cli export executorch --model distilbert-base-uncased --output ./distilbert-executorch/
Exportation TensorFlow Lite :
# Installer les dépendances
pip install optimum[exporters-tf]
# Exporter et quantifier
optimum-cli export tflite --model bert-base-uncased --output ./bert-tflite/
2. Optimisation de l'inférence
Utiliser ONNX Runtime pour une inférence optimisée :
from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer
# Charger le modèle optimisé
model = ORTModelForSequenceClassification.from_pretrained("./bert-onnx/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
# Effectuer l'inférence
inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)
3. Techniques de quantification
Prend en charge diverses solutions de quantification :
- Quantification dynamique - Quantification au moment de l'exécution
- Quantification statique - Quantification basée sur des données d'étalonnage
- QAT (Quantization Aware Training) - Entraînement conscient de la quantification
4. Optimisation de l'entraînement
Utiliser Habana Gaudi pour un entraînement optimisé :
from optimum.habana import GaudiTrainer, GaudiTrainingArguments
# Configurer les paramètres d'entraînement
training_args = GaudiTrainingArguments(
output_dir="./results",
use_habana=True,
use_lazy_mode=True,
gaudi_config_name="Habana/bert-base-uncased"
)
# Créer un entraîneur optimisé
trainer = GaudiTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
# Commencer l'entraînement
trainer.train()
Avantages clés
1. Facilité d'utilisation
- Interface unifiée : Conception d'API cohérente avec la bibliothèque Transformers
- Outil en ligne de commande : Fournit l'outil en ligne de commande
optimum-cli
pour simplifier les opérations - Optimisation automatique : Sélection intelligente de la stratégie d'optimisation optimale
2. Amélioration des performances
- Accélération de l'inférence : Augmente considérablement la vitesse d'inférence du modèle
- Optimisation de la mémoire : Réduit l'occupation de la mémoire
- Réduction de la consommation d'énergie : Optimise la consommation d'énergie
3. Prêt pour la production
- Stabilité : Soumis à de nombreux tests et validations
- Extensibilité : Prend en charge le déploiement à grande échelle
- Compatibilité : Intégration parfaite avec l'écosystème Hugging Face existant
Scénarios d'application
1. Déploiement sur des appareils périphériques
- Applications d'IA mobiles
- Intelligence des appareils IoT
- Optimisation des systèmes embarqués
2. Optimisation des services cloud
- Services API à grande échelle
- Tâches d'inférence par lots
- Systèmes de réponse en temps réel
3. Accélération matérielle dédiée
- Optimisation des clusters GPU
- Accélération TPU
- Adaptation de puces d'IA dédiées
Écosystème communautaire
Projets connexes
- optimum-intel - Optimisation dédiée au matériel Intel
- optimum-habana - Prise en charge des processeurs Habana Gaudi
- optimum-neuron - Prise en charge des puces AWS Neuron
- optimum-nvidia - Optimisation du matériel NVIDIA
- optimum-benchmark - Outil de test de performance
- optimum-quanto - Backend de quantification PyTorch
Ressources documentaires
Architecture technique
Composants principaux
- Exportateurs (Exporters) - Responsables de la conversion du format du modèle
- Optimiseurs (Optimizers) - Exécutent diverses stratégies d'optimisation
- Quantificateurs (Quantizers) - Réalisent la quantification du modèle
- Environnements d'exécution (Runtimes) - Fournissent des environnements d'exécution d'inférence optimisés
- Entraîneurs (Trainers) - Wrappers d'entraînement optimisés pour le matériel
Principes de conception
- Modularité - Chaque module fonctionnel est indépendant et combinable
- Extensibilité - Facile à ajouter de nouvelles prises en charge matérielles
- Compatibilité descendante - Maintient la compatibilité avec les API existantes
- Priorité aux performances - L'optimisation des performances est l'objectif principal
Conclusion
Hugging Face Optimum est une bibliothèque d'outils d'optimisation de modèles d'apprentissage automatique puissante et facile à utiliser. Elle fournit aux développeurs une solution complète pour déployer efficacement des modèles d'IA sur diverses plateformes matérielles, et constitue un outil important pour le développement et le déploiement d'applications d'IA modernes. Que ce soit pour le déploiement sur des appareils périphériques ou pour des services cloud à grande échelle, Optimum peut offrir des améliorations significatives des performances et une optimisation des coûts.