文章目录
- 前因
- 解决方案
- 后果
前因
我是在conda环境下创建stable diffusion的虚拟环境,虚拟环境下pytorch、cuda和cudnn的版本如下所示。服务器上的CUDA版本是11.2,GPU是P40,内存22G。
import torch
>>> torch.__version__
'1.12.0'
>>> torch.version.cuda
'11.3'
>>> torch.backends.cudnn.version()
8302
运行stable Diffusion,如果没有xFormers进行GPU加速,内存不够。但是xFormers的安装过程是一部血泪史,每次安装都会出现不同的问题。特此记录一下问题,一遍以后出现相同问题时能回头快速查看解决方案。
在执行pip install -e .
命令阶段,首先出现了fatal error: cuda_runtime_api.h: No such file or directory
,在setup.py中找到CUDAExtension,在include_dirs中添加/usr/local/cuda/include,如下图所示。
然后再执行pip install -e .
命令时,运行有二十多分钟,本以为要大功告成,成功安装xformers时,出现了cc1plus: fatal error: cuda_runtime.h: No such file or directory错误,折腾一下午,终于解决。
解决方案
首先查看了/usr/local/cuda/include和/usr/local/cuda-11.2/include文件夹,发现cuda_runtime.h文件已然存在。
搜到好多方案都说要在~/.bashrc
文件添加如下CUDA路径,我一直添加的都是后两行,source ~/.bashrc
更新bashrc文件后,bug一直存在,经过多方尝试,在~/.bashrc
文件后面添加下述三行,xformer才能安装成功。看来第一行的CPATH才是最重要的。
export CPATH=/usr/local/cuda-11.2/targets/x86_64-linux/include:$CPATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/targets/x86_64-linux/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.2/bin:$PATH
经过一顿折腾,终于成功安装xformers,运行模型stable-diffusion-2-1生成
768
×
768
768 \times 768
768×768大小的图片,GPU内存占用不到10G,可以愉快玩耍了。
后果
xformers成功安装之后,运行如下命令行,生成下述九宫格可爱的喵咪图片。
python scripts/txt2img.py --prompt “a best-quality photo of a cute cat” --ckpt v2-1_768-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda