# Экспорт в продакшен

Экспортируйте модели Transformers в различные форматы для оптимизированных рантаймов и устройств. Разворачивайте одну и ту же модель на облачных провайдерах или запускайте её на мобильных и edge-устройствах. Вам не нужно переписывать модель с нуля для каждой среды развёртывания. Свободно разворачивайте модель в любой экосистеме инференса.

## ExecuTorch

[ExecuTorch](https://pytorch.org/executorch/stable/index.html) выполняет модели PyTorch на мобильных и периферийных устройствах. Он экспортирует модель в граф стандартизированных операторов, компилирует граф в программу ExecuTorch и выполняет её на целевом устройстве. Рантайм является лёгким и заранее вычисляет план выполнения.

Установите [Optimum ExecuTorch](https://huggingface.co/docs/optimum-executorch/en/index) из исходного кода.

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

Экспортируйте модель Transformers в ExecuTorch с помощью CLI-инструмента.

```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"
```

Выполните следующую команду, чтобы просмотреть все параметры экспорта.

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

## ONNX

[ONNX](http://onnx.ai) — это общий язык для описания моделей из разных фреймворков. Он представляет модели в виде графа стандартизированных операторов с четко определенными типами, формами и метаданными. Модели сериализуются в компактные файлы protobuf, которые можно развертывать в оптимизированных рантаймах и движках.

[Optimum ONNX](https://huggingface.co/docs/optimum-onnx/index) экспортирует модели в формат ONNX с использованием объектов конфигурации. Поддерживается множество [архитектур](https://huggingface.co/docs/optimum-onnx/onnx/overview), а расширение функциональности выполняется легко. Экспорт моделей можно выполнить через CLI-инструмент или программно.

Установите [Optimum ONNX](https://huggingface.co/docs/optimum-onnx/index).

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

### optimum-cli

Укажите модель для экспорта и выходной каталог с помощью аргумента `--model`.

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

Выполните следующую команду, чтобы просмотреть все доступные аргументы, или обратитесь к руководству [Экспорт модели в ONNX с помощью optimum.exporters.onnx](https://huggingface.co/docs/optimum-onnx/onnx/usage_guides/export_a_model) для получения подробной информации.

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

Чтобы экспортировать локальную модель, сохраните файлы весов и токенизатора в одной директории. Передайте путь к директории в аргумент `--model` и используйте аргумент `--task`, чтобы указать [задачу](https://huggingface.co/docs/optimum/exporters/task_manager#transformers). Если вы не укажете `--task`, система автоматически определит её по модели или использует архитектуру без специфичного для задачи слоя.

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

Разверните модель с любым [рантаймом](https://onnx.ai/supported-tools.html#deployModel), поддерживающим ONNX, включая 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

Экспортируйте модели Transformers программно с помощью Optimum ONNX. Создайте экземпляр `ORTModel` с моделью и установите `export=True`. Сохраните ONNX-модель с помощью `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/")
```

