ADI-Stable-Diffusion:加速您的Stable Diffusion推理
Stable Diffusion作为一种强大的AI图像生成技术,已经在各种应用场景中展现出巨大潜力。然而,如何高效地部署和运行Stable Diffusion模型一直是一个挑战。为了解决这个问题,ADI-Stable-Diffusion应运而生,为开发者和研究人员提供了一个高性能、跨平台的Stable Diffusion推理解决方案。
什么是ADI-Stable-Diffusion?
ADI-Stable-Diffusion是一个基于C++的库和命令行工具,旨在加速Stable Diffusion的推理过程。它利用ONNXRuntime的强大功能和.onnx模型格式的广泛兼容性,为Stable Diffusion的工程部署提供了一个便捷的解决方案。该项目的主要目标是在保持较小包大小的同时,实现高性能的Stable Diffusion推理。
为什么选择ONNXRuntime作为推理引擎?
ADI-Stable-Diffusion选择ONNXRuntime作为其推理引擎,这一决定基于以下几个关键因素:
-
开源性: ONNXRuntime是一个开源项目,允许用户自由使用和修改,以适应不同的应用场景。
-
可扩展性: 它支持自定义算子和优化,允许根据特定需求进行扩展和优化。
-
高性能: ONNXRuntime经过高度优化,提供快速的推理速度,适用于实时应用。
-
强兼容性: 支持从多个深度学习框架(如PyTorch、TensorFlow)转换模型,使集成和部署变得更加便捷。
-
跨平台支持: ONNXRuntime支持多种硬件平台,包括CPU、GPU、TPU等,能够在各种设备上高效执行。
-
社区和企业支持: 由微软开发和维护,拥有活跃的社区和企业支持,提供持续的更新和维护。
ADI-Stable-Diffusion的安装与使用
ADI-Stable-Diffusion提供了多种安装方式,以适应不同用户的需求:
-
使用包管理器安装命令行工具:
- macOS (Homebrew):
brew tap windsander/adi-stable-diffusion brew install adi
- Windows (git-Bash + Chocolatey):
curl -L -o adi.1.0.1.nupkg "https://raw.githubusercontent.com/Windsander/ADI-Stable-Diffusion/deploy/adi.1.0.1.nupkg" choco install adi.1.0.1.nupkg -y
- macOS (Homebrew):
-
从已发布版本下载: 用户可以从GitHub的Release Assets页面下载最新可用版本。
-
本地构建: 项目提供了一个自动化脚本
auto_build.sh
,可以更容易地在本地设备上编译ADI。
使用示例
ADI-Stable-Diffusion的使用非常直观。以下是一个使用命令行工具进行1步Euler_A img2img推理的示例:
adi \
-p "A cat in the water at sunset" \
-m img2img \
-i ../../sd/io-test/input-test.png \
-o ../../sd/io-test/output.png \
-w 512 -h 512 -c 3 \
--seed 15.0 \
--dims 1024 \
--clip ../../sd/sd-base-model/onnx-sd-turbo/text_encoder/model.onnx \
--unet ../../sd/sd-base-model/onnx-sd-turbo/unet/model.onnx \
--vae-encoder ../../sd/sd-base-model/onnx-sd-turbo/vae_encoder/model.onnx \
--vae-decoder ../../sd/sd-base-model/onnx-sd-turbo/vae_decoder/model.onnx \
--dict ../../sd/sd-dictionary/vocab.txt \
--beta-start 0.00085 \
--beta-end 0.012 \
--beta scaled_linear \
--alpha cos \
--scheduler euler_a \
--predictor epsilon \
--tokenizer bpe \
--train-steps 1000 \
--token-idx-num 49408 \
--token-length 77 \
--token-border 1.0 \
--gain 1.1 \
--decoding 0.18215 \
--guidance 1.0 \
--steps 1 \
-v
这个命令演示了如何使用ADI-Stable-Diffusion进行图像到图像的转换,同时指定了各种参数,如模型路径、调度器类型、采样步数等。
开发进展
ADI-Stable-Diffusion正在不断发展,目前已经支持多个Stable Diffusion版本和功能:
-
基础管道功能:
- SD_v1 (v1.0 ~ v1.5, turbo)
- SD_v2 (v2.0, v2.1)
- SD_v3 (v3.0)
- SDXL 和 SDXL-turbo
- SVD (Stable Video Diffusion)
-
调度器能力:
- 多种采样方法,如Euler、Euler Ancestral、LMS等
- 不同的采样策略
-
分词器类型:
- 支持BPE、Word Piece等编码方式
结语
ADI-Stable-Diffusion为Stable Diffusion的推理提供了一个高效、灵活的解决方案。通过利用ONNXRuntime的优势,它不仅提高了推理速度,还简化了部署过程。无论您是开发者、研究人员还是AI爱好者,ADI-Stable-Diffusion都为您提供了一个强大的工具,以探索和应用Stable Diffusion的潜力。
随着项目的不断发展,我们期待看到更多创新功能和性能优化。欢迎社区成员参与贡献,共同推动ADI-Stable-Diffusion的发展,为AI图像生成领域带来更多可能性。
让我们一起探索ADI-Stable-Diffusion的无限潜力,开创AI图像生成的新纪元!