# ONNX Runtime

🤗 [Optimum](https://github.com/huggingface/optimum) menyediakan pipeline Stable Diffusion yang kompatibel dengan ONNX Runtime. Anda perlu menginstal 🤗 Optimum dengan perintah berikut untuk dukungan ONNX Runtime:

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

Panduan ini akan menunjukkan cara menggunakan pipeline Stable Diffusion dan Stable Diffusion XL (SDXL) dengan ONNX Runtime.

## Stable Diffusion

Untuk memuat dan menjalankan inferensi, gunakan `ORTStableDiffusionPipeline`. Jika Anda ingin memuat model PyTorch dan mengonversinya ke format ONNX secara langsung, atur `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]
> Membuat beberapa prompt dalam satu batch tampaknya membutuhkan terlalu banyak memori. Sementara kami menyelidiki masalah ini, Anda mungkin perlu melakukan iterasi alih-alih menggunakan batch.

Untuk mengekspor pipeline dalam format ONNX secara offline dan menggunakannya nanti untuk inferensi, gunakan perintah [`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/
```

Lalu untuk melakukan inferensi (Anda tidak perlu menentukan `export=True` lagi):

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

    

Anda dapat menemukan lebih banyak contoh dalam [dokumentasi](https://huggingface.co/docs/optimum/) 🤗 Optimum, dan Stable Diffusion didukung untuk text-to-image, image-to-image, dan inpainting.

## Stable Diffusion XL

Untuk memuat dan menjalankan inferensi dengan SDXL, gunakan `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]
```

Untuk mengekspor pipeline dalam format ONNX dan menggunakannya nanti untuk inferensi, gunakan perintah [`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 in the ONNX format is supported for text-to-image and image-to-image.

