Project Icon

ADI-Stable-Diffusion

基于ONNXRuntime的Stable Diffusion推理框架

ADI-Stable-Diffusion是一个C++库和命令行工具,利用ONNXRuntime加速Stable Diffusion模型推理。该项目具有小巧的包体积和高性能,支持多种采样方法和调度器,适用于不同版本的Stable Diffusion模型。它为开发者提供了便捷的工程部署方案,可用于构建灵活的图像生成和编辑应用。

敏捷扩散推理 (ADI)

CI 状态


敏捷扩散推理 (ADI) 是一个带有命令行工具C++ 库。旨在利用 ONNXRuntime 的加速能力和 .onnx 模型格式的高兼容性,为 Stable Diffusion 的工程部署提供一个便捷的解决方案,具有合适的包大小和高性能。

为什么选择 ONNXRuntime 作为我们的推理引擎?

  • 开源: ONNXRuntime 是一个开源项目,允许用户自由使用和修改以适应不同的应用场景。

  • 可扩展性: 它支持自定义算子和优化,允许根据特定需求进行扩展和优化。

  • 高性能: ONNXRuntime 经过高度优化,可提供快速的推理速度,适用于实时应用。

  • 强兼容性: 它支持多个深度学习框架(如 PyTorch、TensorFlow)的模型转换,使集成和部署变得方便。

  • 跨平台支持: ONNXRuntime 支持多种硬件平台,包括 CPU、GPU、TPU 等,能够在各种设备上高效执行。

  • 社区和企业支持: 由微软开发和维护,拥有活跃的社区和企业支持,提供持续的更新和维护。

如何安装(命令行工具)?

方法 1:使用包管理器安装命令行工具

## 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

方法 2:从发布版本下载

你可以从**发布资源**中找到最新可用版本。包的文件树结构如下:

--bin
    --adi
--lib
    --[对应平台的 ADI 库,如 libadi.a]
    --[对应平台的 ORT 库,如 libonnxruntime.dylib]
--include
    --adi.h
--CHANGELOG.md
--README.md
--LICENSE

解压后,你可以简单地将 binlib 目录安装到你的系统中,或者直接进入解压后的 bin 目录,开始使用 adi

方法 3:在本地构建 [adi-lib & adi-cli]

  • 提供了一个自动化脚本,以更轻松地在你的设备上编译 ADI。

只需执行脚本 auto_build.sh

# 如果你不传递 BUILD_TYPE 参数,脚本将使用默认的 Debug 构建类型。
# 并且,如果你没有通过 [options] 启用某些 ORTProvider,脚本将根据平台选择默认的 ORTProvider
bash ./auto_build.sh

# 示例-MacOS:
bash ./auto_build.sh --platform macos --build-type debug
           
# 示例-Windows:
bash ./auto_build.sh --platform windows --build-type debug
                    
# 示例-Linux(Ubuntu):
bash ./auto_build.sh --platform linux --build-type debug
           
# 示例-Android:
bash ./auto_build.sh --platform android \
           --build-type debug \
           --android-ndk /Volumes/AL-Data-W04/WorkingEnv/Android/sdk/ndk/26.1.10909125 \
           --android-ver 27
           
# 示例(带额外选项)如下,构建发布版本,启用 CUDA=ON TensorRT=ON,并自定义编译器配置
bash ./auto_build.sh [参数] \
           --cmake /opt/homebrew/Cellar/cmake/3.29.5/bin/cmake \
           --ninja /usr/local/bin/ninja \
           --arch-abi x86_64 \
           --jobs 8 \
           --options "-DORT_ENABLE_CUDA=ON -DORT_ENABLE_TENSOR_RT=ON"

目前,该项目提供以下[选项]:

# 1. 选项列表
option(ORT_COMPILED_ONLINE           "adi: 使用在线onnxruntime(ort),否则本地构建" ${SD_ORT_ONLINE_AVAIL})
option(ORT_COMPILED_HEAVY            "adi: 使用重度编译,${Red}仅用于调试,默认关闭${ColourReset}" OFF)
option(ORT_BUILD_COMMAND_LINE        "adi: 构建命令行工具" ${CMAKE_STANDALONE})
option(ORT_BUILD_COMBINE_BASE        "adi: 将代码合并在一起构建单一输出库" OFF)
option(ORT_BUILD_SHARED_ADI          "adi: 构建ADI项目共享库" OFF)
option(ORT_BUILD_SHARED_ORT          "adi: 构建ORT为共享库" OFF)
option(ORT_ENABLE_TENSOR_RT          "adi: 使用TensorRT提供程序加速推理" ${DEFAULT_TRT_STATE})
option(ORT_ENABLE_CUDA               "adi: 使用CUDA提供程序加速推理" ${DEFAULT_CUDA_STATE})
option(ORT_ENABLE_COREML             "adi: 使用CoreML提供程序加速推理" ${DEFAULT_COREML_STATE})
option(ORT_ENABLE_NNAPI              "adi: 使用NNAPI提供程序加速推理" ${DEFAULT_NNAPI_STATE})
option(ADI_AUTO_INSTALL              "adi: 构建完成后自动安装ADI-CLI到当前系统,需要管理员权限" OFF)

如果您确实需要,请启用(仅限真正需要时使用,不推荐)。

如何使用?

示例:1步Euler_A img2img潜在空间可视化

  • 以下展示了[示例:1步img2img推理]在潜在空间中实际发生的情况(跳过所有模型): sd-euler_a-1step-latent-example.png

  • 您可以使用CMake生成的命令行工具执行此项目的相关功能

执行1步img2img推理,如:

# 可选(如果使用本地构建且未安装):切换到./[您的adi路径]/bin/,例如:
cd ./cmake-build-debug/bin/

# 以下是使用此工具的示例:
# sd-turbo, img2img, 正面提示词, 推理步数=1, 引导=1.0, euler_a(用于1步目的)
adi \
 -p "日落时分水中的一只猫" \
 -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

现在,您可以尝试一下了~ (0w0 )

额外信息:

开发进度检查表(最新):

基本管道功能(主要)

  • [SD_v1] Stable-Diffusion (v1.0 ~ v1.5, turbo) (2024/06/04后测试)

  • [SD_v2] Stable-Diffusion (v2.0, v2.1)

  • [SD_v3] Stable-Diffusion (v3.0)

    • v3.0 (HuggingFace):预期的下一代版本,带来更多改进和新功能
  • [SDXL] Stable-Diffusion-XL

    • SDXL (HuggingFace):用于更大规模模型和高分辨率图像的实验版本
    • SDXL-turbo (HuggingFace):社区驱动的优化版本,更快速高效
  • [SVD] Stable-Video-Diffusion

调度器能力

  • 策略

    • 离散/方法默认(discrete)(2024/05/22后)
    • Karras (karras)
  • 采样方法

    • Euler (euler) (2024/06/04后 ✅已测试)
    • Euler Ancestral (euler_a) (2024/05/24后 ✅已测试)
    • 拉普拉斯金字塔采样 (lms) (2024/07/09后 ✅已测试)
    • 潜在一致性模型 (lcm) (2024/07/04后 ✅已测试)
    • Heun预测-校正器 (heun) (2024/07/08后 ✅已测试)
    • 统一预测-校正器 (uni_pc)
    • 伪数值扩散模型调度器 (pndm)
    • 改进的伪数值扩散模型调度器 (ipndm)
    • 扩散指数积分器采样多步 (deis_m)
    • 去噪扩散隐式模型 (ddim) (2024/07/12后 ✅已测试)
    • 去噪扩散概率模型 (ddpm) (2024/07/09后 ✅已测试)
    • 随机微分方程中的扩散概率模型求解器 (dpm_sde)
    • 多步中的扩散概率模型求解器 (dpm_m)
    • 单步中的扩散概率模型求解器 (dpm_s) 分词器类型
  • 字节对编码 (bpe) (2024年7月3日后 ✅已测试)

  • 词片编码 (wp) (2024年5月27日后 ✅已测试)

  • 句子片段编码 (sp) [如有必要]

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号