背景

最近关注了stable-diffusion.cpp,一个用纯C/C++推理扩散模型的方案

之前一直在用ComfyUI推理SDXL或Z Image Turbo,想试一下stable-diffusion.cpp会不会更快

我的电脑用的是AMD的780M核显(gfx1103),虽然目前AMD官方没有该显卡的ROCm驱动,但可以通过社区项目TheRock安装ROCm驱动

所以我的环境是780M TheRock ROCm
stable-diffusion.cpp 已经提供了 ROCm 的预构建,理论上可以直接下载运行
1
但这个版本在运行过程中会报错:
2
因为这个是基于AMD官方的ROCm驱动编译的,与TheRock ROCm目前还有兼容性问题。为了正常使用,可以自行编译stable-diffusion.cpp ROCm版本

编译过程

环境配置

首先,需要安装 TheRock ROCm 的相关开发组件 rocm[libraries,devel]
这里用 780M 举例,详细安装命令请自行参照 TheRock 安装

pip install --index-url https://rocm.nightlies.amd.com/v2/gfx110X-all/ "rocm[libraries,devel]"

注:安装时建议创建一个虚拟环境或独立环境安装

等待安装完成后就可以在 pip 看到相关包了
在这里插入图片描述
在这里插入图片描述

此时,运行rocm-sdk init就可以得到环境目录:
在这里插入图片描述
把环境目录下的 binlib\llvm\bin 放到环境变量 PATH 中:
在我这里就是:
D:\ToolChain\micromamba\envs\therock\Lib\site-packages\_rocm_sdk_devel\bin
(ROCm 相关组件)
D:\ToolChain\micromamba\envs\therock\Lib\site-packages\_rocm_sdk_devel\lib\llvm\bin
(ROCm附带的Clang编译器)

配置好环境变量后,在终端运行clang -v,就能看到如下提示:
在这里插入图片描述
至此,编译所需的环境就配置好了。

注:因为后续需要cpp编译,默认使用ninja构建,如未安装,请自行下载。

编译过程

首先,通过git获取源码:
git clone https://github.com/leejet/stable-diffusion.cpp.git
在这里插入图片描述
接着进入目录,执行子模块初始化与更新
git submodule update --init --recursive
在这里插入图片描述
下载好文件后,就可以创建build目录,手动创建或者直接执行 mkdir build && cd build 都可以
然后就可以运行 CMake 生成 ROCm 后端构建文件:

cmake .. -G "Ninja" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DSD_HIPBLAS=ON -DCMAKE_BUILD_TYPE=Release -DGPU_TARGETS=gfx1103 -DAMDGPU_TARGETS=gfx1103 -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON

注:参数中的 gfx1103 对应 780M 核显,其他显卡请输入正确的对应编号。

然后直接运行构建即可:
cmake --build . --config Release
在这里插入图片描述
等待一段时间后,就可以看到结果:
在这里插入图片描述

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐