在m1/m2芯片的mac电脑上运行Stable Diffusion的全步骤

最近开源社区里最火的项目肯定有Stable Diffussion一个席位。作为一个AI通过文本描述绘画的开源项目,其优秀的生成结果和极快的生成速度也让它在AI绘画项目中一夜封神。

图片

不过遗憾的是,这类AI项目要在苹果公司的自研芯片m1/m2上运行有点麻烦。虽然技术社区有一些文档和教程,但要真正跟着教程把项目所需的环境部署好,还是要爬很多坑的。我把整个爬坑的过程记录下来,希望能对所有使用m1/m2芯片mac的朋友有所帮助。大家都应该体验下这个如此有趣的项目。

注意:学会科学上网是必须的,不然各种依赖的安装速度能慢哭你。

1. Python环境

我们需要Python3.10来运行Stable Diffusion。如何确定你电脑中Python的版本呢?

打开终端输入:

python3 -V
#output Python 3.10.6

如果输出的Python版本是3.10及以上的话,就可以继续下一步了。如果还不是的话,就需要我们更新Python

我们可以通过安装Homebrew来安装或更新Python。

brew update
brew install python


在进行下面的步骤前,请务必确保你电脑中Python版本大于3.10。

2. 克隆仓库以及安装依赖

首先我们需要克隆Stable Diffusion这个项目仓库

git clone -b apple-silicon-mps-support https://github.com/bfirsh/stable-diffusion.git
cd stable-diffusion
mkdir -p models/ldm/stable-diffusion-v1/

然后创建并激活python的虚拟环境

python3 -m pip install virtualenv
python3 -m virtualenv venv

source venv/bin/activate


注意以下这行代码

source venv/bin/activate

每次我们打开终端想要运行Stable Diffusion的时候,都需要先使用它!

接下来,安装此项目所需的依赖

pip install -r requirements.txt

在安装过程中如果看到一些错误类似Failed building wheel for onnx ,我们可以通过brew安装这些系统包来解决

brew install Cmake protobuf rust

3. 下载权重包

前往 Hugging Face repository ,点击Access repository按钮。(可能需要先注册一个账号)

图片

然后在该页面上下载sd-v1-4.ckpt (约4 GB大小),将其重命名为model.ckpt并保存至上面创建的目录models/ldm/stable-diffusion-v1中。

*请确保以下路径的有效性models/ldm/stable-diffusion-v1/model.ckpt

4. 快乐的玩耍

如果以上步骤都没有报错(这不太可能!),那么我们就可以在终端中输入以下内容让AI为我们绘画了

python scripts/txt2img.py \
  --prompt "a monkey riding a horse in outer space, like a knight" \
  --n_samples 1 --n_iter 1 --plms

其中prompt参数最为关键,AI会通过这个参数中的文字描述来进行绘画,你怎么描述,它就怎么画!

比如:

python scripts/txt2img.py \
  --prompt "Asia girl, glossy eyes, face, long hair, fantasy, elegant, highly detailed, digital painting, artstation, concept art, smooth, illustration, renaissance, flowy, melting, round moons, rich clouds, very detailed, volumetric light, mist, fine art, textured oil over canvas, epic fantasy art, very colorful, ornate intricate scales, fractal gems, 8 k, hyper realistic, high contrast"  \
  --plms --ddim_steps 100 --H 512 --W 512 --seed 8

我的m1 max 64G内存需要花20秒左右,在运行结束之后,就可以去outputs/txt2img-samples/查看AI绘制的画作了。

下面所有的图都是AI通过这个描述画出来的,我觉得这个技术可以称之为“脑补技术”。

图片

我遇到的坑,以及解决办法

  1. pip install -r requirements.txt这一步里,安装依赖taming-transformers时始终报错。

    图片

    解决办法:不管它,直接开始运行。

  2. 手动安装所有遗漏的依赖

    由于pip install -r requirements.txt时报错了,所以有一些依赖没有安装上。在运行的时候会这些缺失的依赖会一一提示

ModuleNotFoundError: No module named 'PIL'

每当遇到这类问题的时候,我们都手动安装一下依赖包

pip install pillow

需要注意的是,提示缺失的依赖包名称和安装时的名称并不完全一致,比如PIL实际的包名称叫pillowimwatermark叫做invisible-watermark等。


3.  `NotImplementedError: The operator 'aten::index.Tensor' is not current implemented for the MPS device`
    
    遇到这个问题时,我们需要设置一个环境变量`PYTORCH_ENABLE_MPS_FALLBACK`,值为1
    
export PYTORCH_ENABLE_MPS_FALLBACK=1

微信里搜 “大帅老猿” ,分享更多有趣的前沿技术

物联沃分享整理
物联沃-IOTWORD物联网 » 在m1/m2芯片的mac电脑上运行Stable Diffusion的全步骤

发表评论