AMD核显推理Stable Diffusion

目标

近期,我开始了尝试使用Stable Diffusion进行文生图和。为此,我也尝试了多种在线服务,如WHEE。虽然在线平台能够提供不错的生成效果,但是生成的图片太多的话最终还是需要收费的。
因此我想尝试在本地部署SD模型进行图像生成。目前我手上性能最强的主机只有UM790 Pro迷你主机了。可是它搭载了AMD的核显iGPU(AMD Radeon™ 780M),虽然它的性能接近GTX1650,但是部署SD模型肯定没有英伟达的GPU方便,并且还不支持ROCm。

在此记录一下我使用UM790 Pro本地部署SD模型的流程,希望能帮到大家。如有问题,还请批评指正。

准备条件

  • UM790 pro迷你主机(搭载780M核显)
  • 核显需要支持DirectML,否则只能使用CPU

环境准备

  1. 安装conda环境
    conda的安装这里就不赘述了,可以直接参考百度。安装完成之后,我们需要创建python3.10的环境。网上参考资料说directml好像最高支持到3.10(不保真)。
    conda create -n sd_directml python=3.10.13
    conda activate sd_directml
    
    我这里安装的版本为3.10.13,之后的操作建议都在这个conda环境中进行。
  2. 安装pyenv
    由于之后使用的SD项目安装时会自动创建pyenv环境,因此如果没有安装pyenv的话还需要进行安装。windows环境下安装pyenv的教程如下,在此就不进行赘述了。
    python多环境管理工具——pyenv-win安装与使用教程
    安装完成后在工程目录下进入和退出pyenv环境可使用如下命令
    venv\Scripts\activate#进入
    venv\Scripts\deactivate.bat#退出
    

安装stable-diffusion-webui-directml

首先将其项目克隆下来

git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git
cd stable-diffusion-webui-directml
git submodule init
git submodule update

之后我们执行脚本进行安装

webui.bat --skip-torch-cuda-test --precision full --no-half

在安装的时候会安装onnxruntime这是我们使用iGPU进行模型推理的关键。但是安装的并不是directml版本,因此在脚本执行结束后,我们需要退出脚本并进入到工程目录下面的pyenv环境中手动安装onnxruntime-directml,具体命令如下

venv\Scripts\activate
pip uninstall onnxruntime
pip install onnxruntime-directml
#venv\Scripts\deactivate.bat

之后可以执行python命令查看当前onnxruntime支持的excutionprovider

import onnxruntime as ort

# 获取当前系统上可用的所有执行提供者
providers = ort.get_available_providers()

print("Available Execution Providers:")
for provider in providers:
    print(provider)

不出意外的话会看到dmlexcutionprovider,说明我们可以使用directml调用iGPU运行SD模型了。

项目配置

重新运行命令

webui.bat --skip-torch-cuda-test --precision full --no-half

在打开的web界面中找到Settings->ONNX Runtime,并按下图进行配置
在这里插入图片描述
其中的”Use ONNX Runtime instead of Pytorch implementation“就是选择是否使用ONNXRuntime的,勾选后就能调用iGPU,取消勾选就是使用的CPU。

文生图测试

在这里插入图片描述
在这里插入图片描述
以上简单生成了一个小狗睡觉的图片,可以发现效果还可以。在实际测试中,发现采样20步使用CPU推理时需要1分半钟,使用GPU时只需要半分钟,速度有了明显的提升。

除此最基本的使用之外,还支持微调模型的使用,可以参考
【Stable Diffusion】微调模型详细教程 - embedding, hypernetwork, LoRA

参考资料

要在AMD核显上运行stable-diffusion,您需要按照以下步骤进行操作: 1. 首先,您需要克隆stable-diffusion-stability-ai文件夹下的内容。可以使用以下命令将其克隆到您的计算机上: git clone https://github.com/lshqqytiger/stablediffusion-directml.git \[1\] 2. 接下来,您需要克隆AMD显卡版本的webui。使用以下命令将其克隆到指定目录: git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml.git \[2\] 3. 如果您在访问Github时遇到困难,您可以配置Github代理。这一步骤是可选的,如果您没有问题访问Github,可以跳过此步骤。 4. 对于AMD版本的webui,虽然开源说明中没有指定要安装webui根目录下requirements.txt文件中的依赖,但最好还是安装一下,以免在运行过程中出现一些意外错误。您可以按照以下步骤进行安装: - 打开CMD,并进入webui生成的python虚拟环境所在目录。该目录通常为stable-diffusion-webui-directml\venv\Scripts。 - 执行以下命令安装依赖项: .\python.exe -m pip install -r ..\..\requirements.txt \[3\] 完成上述步骤后,您应该可以在AMD核显上成功运行stable-diffusion。请确保您的计算机满足相关的硬件和软件要求,并按照上述步骤正确安装和配置所需的文件和依赖项。 #### 引用[.reference_title] - *1* *2* *3* [stable-diffusion-webui手动安装详细步骤(AMD显卡)](https://blog.csdn.net/weixin_40660408/article/details/130139799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxfeng~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值