基于Conda在Apple Silicon上部署stable-diffusion-webui

流程与ROCm那篇文章一致。


#

与\(\text{AMD}\)显卡部署\(\text{ROCm}\)平台加速\(\text{PyTorch}\)进行图形计算不同,\(\text{Mac Mini}\)自带\(\text{Apple}\)提供的\(\text{Metal Performance Shaders (MPS)}\),因此无需手动部署\(\text{CUDA}\)或\(\text{ROCm}\)等平台,\(\text{PyTorch}\)也可以正常调用\(\text{Apple GPU}\)进行张量加速运算。

# 新建并配置\(\text{Conda}\)环境

本帖利用\(\text{Conda}\)将基础环境与支持运行\(\text{stable diffusion (SD)}\)的娱乐环境分隔开。环境内需安装\(\text{Python 3.9 or later}\),以期支持后续正常安装与运行\(\text{PyTorch}\):

# 新建Conda环境
conda create -n SD python=3.11.11
# 进入新环境
conda activate SD

安装\(\text{PyTorch}\)

进入新虚拟环境后,开始安装深度学习领域最为广泛使用的开发框架\(\text{PyTorch}\):

pip install torch==2.7.1 torchvision==0.22.1
需要注意的是,本帖没有直接安装截至目前最新发布的\(\text{v2.8.0}\)版本,而是安装\(\text{v2.7.1}\)版本及其对应版本的\(\text{torchvision}\)。理由是,经实际测试,\(\text{v2.8.0}\)运行\(\text{SD}\)时无法输出任何有意义的图片结果。

# 部署\(\text{SD}\)

为从\(\text{GitHub}\)上下载\(\text{SD}\),需为\(\text{Mac}\)安装以下软件:

brew install cmake protobuf rust git wget

进而利用\(\text{git}\)克隆项目至本地:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

至此,确保终端依旧在使用为\(\text{SD}\)准备的新环境,查看命令行最前面是否带有括号,并标注对应的环境名称。确定无误后,进入\(\text{SD}\)根目录,根据目录下\(\text{requirements.txt}\)手动配置依赖项,由于上一步已经安装\(\text{torch}\)和\(\text{torchvision}\),因此配置时会自动跳过:

pip install -r ./requirements.txt

# 运行

到这里,\(\text{SD}\)及其依赖环境已部署完成。之后每一次运行时,需确保终端在使用对应\(\text{Conda}\)环境,并在启动命令行增添启动参数,如下所示:

# 确保终端在使用为SD准备的新环境
conda activate SD
# 终端进入SD根目录后,执行下述代码启动SD
python launch.py --skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate

其中,第一个参数旨在跳过\(\text{CUDA}\)检测,不添加将报错,因为\(\text{Mac Mini M4}\)没有搭载\(\text{CUDA}\)平台;第二个参数旨在使用\(\text{Upcast}\)采样,在启动\(\text{–no-half}\)时无效,并通常能得到与之相似的效果,但运行速度更快、内存占用更低;第三个参数旨在禁止\(\text{VAE}\)模型切换为\(16\)位浮点数;第四个参数旨在强制使用\(\text{CPU}\)运行\(\text{CLIP Interrogator}\)标签生成模块。因为该模块无法在\(\text{Mac}\)上稳定使用\(\text{MPS}\)加速运算。

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments