ONNX 模型库
返回模型

说明文档

适用于 ONNX Runtime CUDA 的 Stable Diffusion Turbo

简介

本仓库托管了 SD Turbo 的优化 ONNX 模型,用于加速在 Nvidia GPU 上使用 ONNX Runtime CUDA 执行提供程序的推理。它无法在 CPU 和 DirectML 等其他提供程序上运行。

这些模型由 Olive 使用如下命令生成:

python stable_diffusion.py --provider cuda --model_id stabilityai/sd-turbo --optimize --use_fp16_fixed_vae

有关如何使用本仓库中托管的 ONNX 文件运行 SDXL 流水线,请参阅使用说明

模型描述

性能

延迟

以下是在 NVIDIA A100-SXM4-80GB GPU 上生成 512x512 尺寸图像的平均延迟:

引擎 批大小 步数 ONNX Runtime CUDA
Static 1 1 38.2 毫秒
Static 4 1 120.2 毫秒
Static 1 4 68.7 毫秒
Static 4 4 192.6 毫秒

Static 表示引擎是为给定的批大小和图像大小组合构建的,并使用 CUDA graph 来加速。

使用示例

按照演示说明操作。示例步骤如下:

  1. 按照这些说明安装 nvidia-docker。

  2. 克隆 onnxruntime 仓库。

git clone https://github.com/microsoft/onnxruntime
cd onnxruntime
  1. 从本仓库下载 ONNX 文件
git lfs install
git clone https://huggingface.co/tlwu/sd-turbo-onnxruntime
  1. 启动 docker
docker run --rm -it --gpus all -v $PWD:/workspace nvcr.io/nvidia/pytorch:23.10-py3 /bin/bash
  1. 从源码构建 ONNX Runtime
export CUDACXX=/usr/local/cuda-12.2/bin/nvcc
git config --global --add safe.directory '*'
sh build.sh --config Release  --build_shared_lib --parallel --use_cuda --cuda_version 12.2 \
            --cuda_home /usr/local/cuda-12.2 --cudnn_home /usr/lib/x86_64-linux-gnu/ --build_wheel --skip_tests \
            --use_tensorrt --tensorrt_home /usr/src/tensorrt \
            --cmake_extra_defines onnxruntime_BUILD_UNIT_TESTS=OFF \
            --cmake_extra_defines CMAKE_CUDA_ARCHITECTURES=80 \
            --allow_running_as_root
python3 -m pip install build/Linux/Release/dist/onnxruntime_gpu-*-cp310-cp310-linux_x86_64.whl --force-reinstall

如果 GPU 不是 A100,请根据 GPU 计算能力在命令行中更改 CMAKE_CUDA_ARCHITECTURES=80(例如 RTX 4090 为 89,RTX 3090 为 86)。如果您的机器内存小于 64GB,请将 --parallel 替换为 --parallel 4 --nvcc_threads 1 以避免内存不足。

  1. 安装库和依赖项
python3 -m pip install --upgrade pip
cd /workspace/onnxruntime/python/tools/transformers/models/stable_diffusion
python3 -m pip install -r requirements-cuda12.txt
python3 -m pip install --upgrade polygraphy onnx-graphsurgeon --extra-index-url https://pypi.ngc.nvidia.com
  1. 执行 ONNX Runtime 优化推理
python3 demo_txt2img.py \
  \"starry night over Golden Gate Bridge by van gogh\" \
  --version sd-turbo   \
  --engine-dir /workspace/sd-turbo-onnxruntime

onnxruntime/sd-turbo

作者 onnxruntime

text-to-image
↓ 0 ♥ 5

创建时间: 2024-01-19 22:42:27+00:00

更新时间: 2024-01-23 23:56:54+00:00

在 Hugging Face 上查看

文件 (13)

.gitattributes
LICENSE
README.md
model_index.json
scheduler/scheduler_config.json
text_encoder/model.onnx ONNX
tokenizer/merges.txt
tokenizer/special_tokens_map.json
tokenizer/tokenizer_config.json
tokenizer/vocab.json
unet/model.onnx ONNX
vae_decoder/model.onnx ONNX
vae_encoder/model.onnx ONNX