前因

我是在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

在这里插入图片描述

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐