# Exportando para produção

Exporte os modelos do Transformers para diferentes formatos, otimizados para runtimes e dispositivos. Implante o mesmo modelo em provedores de nuvem ou execute-o em dispositivos móveis e de borda. Você não precisa reescrever o modelo do zero para cada ambiente de implantação. Implante livremente em qualquer ecossistema de inferência.

## ExecuTorch

[ExecuTorch](https://pytorch.org/executorch/stable/index.html) executa modelos do PyTorch em dispositivos móveis e de borda. Ele exporta um modelo para um grafo de operadores padronizados, compila o grafo em um programa ExecuTorch e o executa no dispositivo de destino. O runtime é leve e calcula o plano de execução antecipadamente.

Instale o [Optimum ExecuTorch](https://huggingface.co/docs/optimum-executorch/en/index) a partir do código-fonte.

```bash
git clone https://github.com/huggingface/optimum-executorch.git
cd optimum-executorch
pip install '.[dev]'
```

Exporte um modelo do Transformers para o ExecuTorch com a ferramenta de linha de comando.

```bash
optimum-cli export executorch \
    --model "Qwen/Qwen3-8B" \
    --task "text-generation" \
    --recipe "xnnpack" \
    --use_custom_sdpa \
    --use_custom_kv_cache \
    --qlinear 8da4w \
    --qembedding 8w \
    --output_dir="hf_smollm2"
```

Execute o comando a seguir para visualizar todas as opções de exportação.

```bash
optimum-cli export executorch --help
```

## ONNX

[ONNX](http://onnx.ai) é uma linguagem compartilhada para descrever modelos de diferentes frameworks. Ele representa modelos como um grafo de operadores padronizados com tipos, formas e metadados bem definidos. Os modelos são serializados em arquivos protobuf compactos que podem ser implantados em runtimes e engines otimizados.

[Optimum ONNX](https://huggingface.co/docs/optimum-onnx/index) exporta modelos para ONNX com objetos de configuração. Ele suporta muitas [arquiteturas](https://huggingface.co/docs/optimum-onnx/onnx/overview) e é facilmente extensível. Exporte modelos por meio da ferramenta de CLI ou programaticamente.

Instale o [Optimum ONNX](https://huggingface.co/docs/optimum-onnx/index).

```bash
uv pip install optimum-onnx
```

### optimum-cli

Especifique um modelo para exportar e o diretório de saída com o argumento `--model`.

```bash
optimum-cli export onnx --model Qwen/Qwen3-8B Qwen/Qwen3-8b-onnx/
```

Execute o comando a seguir para visualizar todos os argumentos disponíveis ou consulte o guia [Export a model to ONNX with optimum.exporters.onnx](https://huggingface.co/docs/optimum-onnx/onnx/usage_guides/export_a_model) para mais detalhes.

```bash
optimum-cli export onnx --help
```

Para exportar um modelo local, salve os arquivos de pesos e do tokenizer no mesmo diretório. Passe o caminho do diretório para o argumento `--model` e use o argumento `--task` para especificar a [tarefa](https://huggingface.co/docs/optimum/exporters/task_manager#transformers). Se você não fornecer `--task`, o sistema a inferirá automaticamente a partir do modelo ou usará uma arquitetura sem uma cabeça específica para a tarefa.

```bash
optimum-cli export onnx --model path/to/local/model --task text-generation Qwen/Qwen3-8b-onnx/
```

Implante o modelo com qualquer [runtime](https://onnx.ai/supported-tools.html#deployModel) que suporte ONNX, incluindo ONNX Runtime.

```py
from transformers import AutoTokenizer
from optimum.onnxruntime import ORTModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-8b-onnx")
model = ORTModelForCausalLM.from_pretrained("Qwen/Qwen3-8b-onnx")
inputs = tokenizer("Plants generate energy through a process known as ", return_tensors="pt")
outputs = model.generate(**inputs)
print(tokenizer.batch_decode(outputs))
```

### optimum.onnxruntime

Exporte os modelos do Transformers programaticamente com Optimum ONNX. Instancie um `ORTModel` com um modelo e defina `export=True`. Salve o modelo ONNX com `save_pretrained`.

```py
from optimum.onnxruntime import ORTModelForCausalLM
from transformers import AutoTokenizer

ort_model = ORTModelForCausalLM.from_pretrained("Qwen/Qwen3-8b", export=True)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-8b")

ort_model.save_pretrained("onnx/")
tokenizer.save_pretrained("onnx/")
```

