Home
Login

Biblioteca de inferência e treinamento acelerados que fornece ferramentas de otimização de hardware para Transformers, Diffusers, TIMM e Sentence Transformers

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

Apresentação Detalhada do Projeto Hugging Face Optimum

Visão Geral do Projeto

🤗 Optimum é uma biblioteca de otimização de modelos de aprendizado de máquina especializada, lançada pela Hugging Face, e é uma ferramenta de extensão para 🤗 Transformers e Diffusers. O projeto se concentra em fornecer ferramentas de otimização de treinamento e execução de modelos com máxima eficiência para várias plataformas de hardware de destino, mantendo a facilidade de uso.

Endereço do Projeto: https://github.com/huggingface/optimum

Principais Características

1. Suporte a Múltiplas Plataformas de Hardware

Optimum suporta várias plataformas de aceleração de hardware convencionais:

  • ONNX/ONNX Runtime - Inferência de aprendizado de máquina multiplataforma
  • ExecuTorch - Solução de inferência para dispositivos de borda PyTorch
  • TensorFlow Lite - Otimização para dispositivos móveis e de borda
  • OpenVINO - Otimização para hardware Intel
  • NVIDIA TensorRT-LLM - Aceleração de GPU NVIDIA
  • AWS Trainium & Inferentia - Chips dedicados da AWS
  • Habana Gaudi - Processadores Habana
  • AMD Instinct GPUs - Suporte para hardware AMD
  • Intel Neural Compressor - Compressão de redes neurais Intel
  • FuriosaAI - Plataforma de hardware FuriosaAI

2. Exportação e Otimização de Modelos

  • Conversão de Formato: Suporta a exportação de modelos Transformers e Diffusers para formatos como ONNX, ExecuTorch, TensorFlow Lite, etc.
  • Otimização de Gráfico: Realiza otimização automática do gráfico de computação do modelo
  • Técnicas de Quantização: Fornece várias soluções de quantização para reduzir o tamanho do modelo e a latência de inferência
  • Ajuste de Desempenho: Realiza otimização de desempenho para hardware específico

3. Aceleração de Treinamento

Fornece wrappers de treinamento otimizados, suportando:

  • Treinamento com processadores Habana Gaudi
  • Treinamento com instâncias AWS Trainium
  • Treinamento otimizado com ONNX Runtime GPU

Método de Instalação

Instalação Básica

python -m pip install optimum

Instalação de Aceleradores Específicos

Selecione o comando de instalação correspondente de acordo com a plataforma de hardware necessária:

# 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]

Instalação a partir do Código Fonte

python -m pip install git+https://github.com/huggingface/optimum.git

Principais Módulos de Funcionalidade

1. Exportação de Modelo (Export)

Exemplo de Exportação ONNX:

# Instalar dependências
pip install optimum[exporters,onnxruntime]

# Exportar modelo
optimum-cli export onnx --model bert-base-uncased --output ./bert-onnx/

Exportação ExecuTorch:

# Instalar dependências
pip install optimum[exporters-executorch]

# Exportar modelo para dispositivos de borda
optimum-cli export executorch --model distilbert-base-uncased --output ./distilbert-executorch/

Exportação TensorFlow Lite:

# Instalar dependências
pip install optimum[exporters-tf]

# Exportar e quantizar
optimum-cli export tflite --model bert-base-uncased --output ./bert-tflite/

2. Otimização de Inferência

Usando ONNX Runtime para inferência otimizada:

from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer

# Carregar o modelo otimizado
model = ORTModelForSequenceClassification.from_pretrained("./bert-onnx/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

# Realizar inferência
inputs = tokenizer("Hello world!", return_tensors="pt")
outputs = model(**inputs)

3. Técnicas de Quantização

Suporta várias soluções de quantização:

  • Quantização Dinâmica - Quantização em tempo de execução
  • Quantização Estática - Quantização baseada em dados de calibração
  • QAT (Quantization Aware Training) - Treinamento com reconhecimento de quantização

4. Otimização de Treinamento

Usando Habana Gaudi para treinamento otimizado:

from optimum.habana import GaudiTrainer, GaudiTrainingArguments

# Configurar parâmetros de treinamento
training_args = GaudiTrainingArguments(
    output_dir="./results",
    use_habana=True,
    use_lazy_mode=True,
    gaudi_config_name="Habana/bert-base-uncased"
)

# Criar treinador otimizado
trainer = GaudiTrainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)

# Iniciar treinamento
trainer.train()

Vantagens Chave

1. Facilidade de Uso

  • Interface Unificada: Design de API consistente com a biblioteca Transformers
  • Ferramentas de Linha de Comando: Fornece a ferramenta de linha de comando optimum-cli para simplificar as operações
  • Otimização Automática: Seleciona de forma inteligente a estratégia de otimização ideal

2. Melhoria de Desempenho

  • Aceleração de Inferência: Melhora significativamente a velocidade de inferência do modelo
  • Otimização de Memória: Reduz o uso de memória
  • Redução do Consumo de Energia: Otimiza o consumo de energia

3. Pronto para Produção

  • Estabilidade: Submetido a extensos testes e validação
  • Escalabilidade: Suporta implantação em larga escala
  • Compatibilidade: Integração perfeita com o ecossistema Hugging Face existente

Cenários de Aplicação

1. Implantação em Dispositivos de Borda

  • Aplicações de IA em dispositivos móveis
  • Inteligência de dispositivos IoT
  • Otimização de sistemas embarcados

2. Otimização de Serviços em Nuvem

  • Serviços de API em larga escala
  • Tarefas de inferência em lote
  • Sistemas de resposta em tempo real

3. Aceleração de Hardware Dedicado

  • Otimização de clusters de GPU
  • Aceleração de TPU
  • Adaptação de chips de IA dedicados

Ecossistema da Comunidade

Projetos Relacionados

  • optimum-intel - Otimização dedicada para hardware Intel
  • optimum-habana - Suporte para processadores Habana Gaudi
  • optimum-neuron - Suporte para chips AWS Neuron
  • optimum-nvidia - Otimização para hardware NVIDIA
  • optimum-benchmark - Ferramenta de teste de benchmark de desempenho
  • optimum-quanto - Backend de quantização PyTorch

Recursos de Documentação

Arquitetura Técnica

Componentes Principais

  1. Exportadores (Exporters) - Responsáveis pela conversão de formato do modelo
  2. Otimizadores (Optimizers) - Executam várias estratégias de otimização
  3. Quantizadores (Quantizers) - Implementam a quantização do modelo
  4. Tempos de Execução (Runtimes) - Fornecem tempos de execução de inferência otimizados
  5. Treinadores (Trainers) - Wrappers de treinamento otimizados para hardware

Princípios de Design

  • Modularidade - Cada módulo de função é independente e combinável
  • Extensibilidade - Fácil de adicionar suporte a novo hardware
  • Compatibilidade com Versões Anteriores - Mantém a compatibilidade com a API original
  • Prioridade de Desempenho - Otimização de desempenho como o principal objetivo

Conclusão

Hugging Face Optimum é uma biblioteca de ferramentas de otimização de modelos de aprendizado de máquina poderosa e fácil de usar. Ele fornece aos desenvolvedores uma solução completa para implantar eficientemente modelos de IA em várias plataformas de hardware e é uma ferramenta importante para o desenvolvimento e implantação de aplicativos de IA modernos. Seja para implantação em dispositivos de borda ou serviços em nuvem em larga escala, o Optimum pode fornecer melhorias significativas de desempenho e otimização de custos.