Home
Login

Una biblioteca para la inferencia y el entrenamiento acelerados con herramientas de optimización de hardware para Transformers, Diffusers, TIMM y Sentence Transformers.

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

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

  1. Exportadores (Exporters) - Responsables de la conversión del formato del modelo
  2. Optimizadores (Optimizers) - Ejecutan varias estrategias de optimización
  3. Cuantificadores (Quantizers) - Implementan la cuantificación del modelo
  4. Tiempos de ejecución (Runtimes) - Proporcionan tiempos de ejecución de inferencia optimizados
  5. 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.