Descripción detallada del proyecto Hugging Face Optimum
Resumen del proyecto
🤗 Optimum es una biblioteca especializada de optimización de modelos de aprendizaje automático lanzada por Hugging Face, una herramienta de extensión de 🤗 Transformers y Diffusers. El proyecto se centra en proporcionar herramientas de optimización de entrenamiento y ejecución de modelos de máxima eficiencia para varios hardware objetivo, manteniendo al mismo tiempo la característica de facilidad de uso.
Dirección del proyecto: https://github.com/huggingface/optimum
Características principales
1. Soporte para múltiples plataformas de hardware
Optimum admite varias plataformas de aceleración de hardware principales:
- ONNX/ONNX Runtime - Inferencia de aprendizaje automático multiplataforma
- ExecuTorch - Solución de inferencia para dispositivos perimetrales de PyTorch
- TensorFlow Lite - Optimización para dispositivos móviles y perimetrales
- OpenVINO - Optimización de hardware Intel
- NVIDIA TensorRT-LLM - Aceleración de GPU NVIDIA
- AWS Trainium & Inferentia - Chips dedicados de AWS
- Habana Gaudi - Procesadores Habana
- AMD Instinct GPUs - Soporte de hardware AMD
- Intel Neural Compressor - Compresión de redes neuronales de Intel
- FuriosaAI - Plataforma de hardware FuriosaAI
2. Exportación y optimización de modelos
- Conversión de formato: Admite la exportación de modelos Transformers y Diffusers a formatos como ONNX, ExecuTorch, TensorFlow Lite, etc.
- Optimización de gráficos: Realiza automáticamente la optimización del gráfico de cálculo del modelo
- Técnicas de cuantificación: Proporciona múltiples esquemas de cuantificación para reducir el tamaño del modelo y la latencia de inferencia
- Ajuste de rendimiento: Optimización del rendimiento para hardware específico
3. Aceleración del entrenamiento
Proporciona envoltorios de entrenamiento optimizados, que admiten:
- Entrenamiento con procesadores Habana Gaudi
- Entrenamiento con instancias AWS Trainium
- Entrenamiento optimizado con ONNX Runtime GPU
Método de instalación
Instalación básica
python -m pip install optimum
Instalación de aceleradores específicos
Seleccione el comando de instalación correspondiente según la plataforma de hardware requerida:
# 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
# Hardware 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]
Instalación desde el código fuente
python -m pip install git+https://github.com/huggingface/optimum.git
Módulos de funciones principales
1. Exportación de modelos (Export)
Ejemplo de exportación ONNX:
# Instalar dependencias
pip install optimum[exporters,onnxruntime]
# Exportar modelo
optimum-cli export onnx --model bert-base-uncased --output ./bert-onnx/
Exportación ExecuTorch:
# Instalar dependencias
pip install optimum[exporters-executorch]
# Exportar modelo para dispositivos perimetrales
optimum-cli export executorch --model distilbert-base-uncased --output ./distilbert-executorch/
Exportación TensorFlow Lite:
# Instalar dependencias
pip install optimum[exporters-tf]
# Exportar y cuantificar
optimum-cli export tflite --model bert-base-uncased --output ./bert-tflite/
2. Optimización de la inferencia
Utilice ONNX Runtime para la inferencia optimizada:
from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer
# Cargar el modelo optimizado
model = ORTModelForSequenceClassification.from_pretrained("./bert-onnx/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
# Realizar la inferencia
inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)
3. Técnicas de cuantificación
Admite múltiples esquemas de cuantificación:
- Cuantificación dinámica - Cuantificación en tiempo de ejecución
- Cuantificación estática - Cuantificación basada en datos de calibración
- QAT (Quantization Aware Training) - Entrenamiento consciente de la cuantificación
4. Optimización del entrenamiento
Utilice Habana Gaudi para el entrenamiento optimizado:
from optimum.habana import GaudiTrainer, GaudiTrainingArguments
# Configurar los parámetros de entrenamiento
training_args = GaudiTrainingArguments(
output_dir="./results",
use_habana=True,
use_lazy_mode=True,
gaudi_config_name="Habana/bert-base-uncased"
)
# Crear un entrenador optimizado
trainer = GaudiTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
# Iniciar el entrenamiento
trainer.train()
Ventajas clave
1. Facilidad de uso
- Interfaz unificada: Diseño de API consistente con la biblioteca Transformers
- Herramientas de línea de comandos: Proporciona la herramienta de línea de comandos
optimum-cli
para simplificar las operaciones
- Optimización automática: Selección inteligente de la estrategia de optimización óptima
2. Mejora del rendimiento
- Aceleración de la inferencia: Mejora significativa de la velocidad de inferencia del modelo
- Optimización de la memoria: Reduce la ocupación de memoria
- Reducción del consumo de energía: Optimiza el consumo de energía
3. Listo para la producción
- Estabilidad: Probado y verificado exhaustivamente
- Escalabilidad: Admite la implementación a gran escala
- Compatibilidad: Integración perfecta con el ecosistema Hugging Face existente
Escenarios de aplicación
1. Implementación de dispositivos perimetrales
- Aplicaciones de IA para dispositivos móviles
- Inteligencia de dispositivos IoT
- Optimización de sistemas integrados
2. Optimización de servicios en la nube
- Servicios de API a gran escala
- Tareas de inferencia por lotes
- Sistemas de respuesta en tiempo real
3. Aceleración de hardware dedicado
- Optimización de clústeres de GPU
- Aceleración de TPU
- Adaptación de chips de IA dedicados
Ecosistema comunitario
Proyectos relacionados
- optimum-intel - Optimización dedicada para hardware Intel
- optimum-habana - Soporte para procesadores Habana Gaudi
- optimum-neuron - Soporte para chips AWS Neuron
- optimum-nvidia - Optimización de hardware NVIDIA
- optimum-benchmark - Herramienta de pruebas comparativas de rendimiento
- optimum-quanto - Backend de cuantificación de PyTorch
Recursos de documentación
Arquitectura técnica
Componentes principales
- Exportadores (Exporters) - Responsables de la conversión del formato del modelo
- Optimizadores (Optimizers) - Ejecutan varias estrategias de optimización
- Cuantificadores (Quantizers) - Implementan la cuantificación del modelo
- Tiempos de ejecución (Runtimes) - Proporcionan tiempos de ejecución de inferencia optimizados
- Entrenadores (Trainers) - Envoltorio de entrenamiento optimizado para hardware
Principios de diseño
- Modularidad - Cada módulo de función es independiente y combinable
- Extensible - Fácil de agregar nuevo soporte de hardware
- Compatibilidad con versiones anteriores - Mantener la compatibilidad con la API original
- Prioridad de rendimiento - La optimización del rendimiento es el objetivo central
Resumen
Hugging Face Optimum es una biblioteca de herramientas de optimización de modelos de aprendizaje automático potente y fácil de usar. Proporciona a los desarrolladores una solución completa para implementar de manera eficiente modelos de IA en varias plataformas de hardware, y es una herramienta importante para el desarrollo y la implementación de aplicaciones de IA modernas. Ya sea la implementación de dispositivos perimetrales o los servicios en la nube a gran escala, Optimum puede proporcionar mejoras significativas en el rendimiento y optimización de costos.