# ONNX Runtime

🤗 [Optimum](https://github.com/huggingface/optimum) fournit un pipeline Stable Diffusion compatible avec ONNX Runtime. Vous devez installer 🤗 Optimum avec la commande suivante pour bénéficier du support d'ONNX Runtime :

```bash
pip install -q optimum["onnxruntime"]
```

Ce guide vous montre comment utiliser les pipelines Stable Diffusion et Stable Diffusion XL (SDXL) avec ONNX Runtime.

## Stable Diffusion

Pour charger et exécuter l'inférence, utilisez `ORTStableDiffusionPipeline`. Si vous souhaitez charger un modèle PyTorch et le convertir au format ONNX à la volée, définissez `export=True` :

```python
from optimum.onnxruntime import ORTStableDiffusionPipeline

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipeline = ORTStableDiffusionPipeline.from_pretrained(model_id, export=True)
prompt = "sailing ship in storm by Leonardo da Vinci"
image = pipeline(prompt).images[0]
pipeline.save_pretrained("./onnx-stable-diffusion-v1-5")
```

> [!WARNING]
> Générer plusieurs prompts en lot semble consommer trop de mémoire. Pendant que nous investiguons, vous devrez peut-être itérer plutôt que de traiter en lot.

Pour exporter le pipeline au format ONNX hors ligne et l'utiliser ultérieurement pour l'inférence, utilisez la commande [`optimum-cli export`](https://huggingface.co/docs/optimum/main/en/exporters/onnx/usage_guides/export_a_model#exporting-a-model-to-onnx-using-the-cli) :

```bash
optimum-cli export onnx --model stable-diffusion-v1-5/stable-diffusion-v1-5 sd_v15_onnx/
```

Ensuite, pour effectuer l'inférence (vous n'avez pas besoin de spécifier `export=True` à nouveau) :

```python
from optimum.onnxruntime import ORTStableDiffusionPipeline

model_id = "sd_v15_onnx"
pipeline = ORTStableDiffusionPipeline.from_pretrained(model_id)
prompt = "sailing ship in storm by Leonardo da Vinci"
image = pipeline(prompt).images[0]
```

    

Vous trouverez d'autres exemples dans la [documentation](https://huggingface.co/docs/optimum/) de 🤗 Optimum, et Stable Diffusion est pris en charge pour la génération d'images à partir de texte, la transformation d'image en image et l'inpainting.

## Stable Diffusion XL

Pour charger et exécuter l'inférence avec SDXL, utilisez le `ORTStableDiffusionXLPipeline` :

```python
from optimum.onnxruntime import ORTStableDiffusionXLPipeline

model_id = "stabilityai/stable-diffusion-xl-base-1.0"
pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "sailing ship in storm by Leonardo da Vinci"
image = pipeline(prompt).images[0]
```

Pour exporter le pipeline au format ONNX et l'utiliser ultérieurement pour l'inférence, utilisez la commande [`optimum-cli export`](https://huggingface.co/docs/optimum/main/en/exporters/onnx/usage_guides/export_a_model#exporting-a-model-to-onnx-using-the-cli) :

```bash
optimum-cli export onnx --model stabilityai/stable-diffusion-xl-base-1.0 --task stable-diffusion-xl sd_xl_onnx/
```

SDXL au format ONNX est pris en charge pour le texte-vers-image et l'image-vers-image.

