在启动Stable Diffusion时一直报Torch not compiled with CUDA enabled警告,一开始没在意本着能用就行的态度凑活用,每个图都耗时十多秒,然后本着好奇Torch not compiled with CUDA enabled这个警告去搜索解决方案,都没说这个警告解决了有什么用,并且网上资料东拼西凑根本不能解决问题,本着专研解决问题的心态花一晚上解决这个警告,并将计算速度提高了十倍基本4G的模型2秒能出图。

出现这个问题是两个方面一是的确显存不足

本地环境:windows11 13900k 32G Nvidia 3080ti

当前显卡驱动版本:

注意上面的CUDA12.0.147不一定要和CUDA Toolkit 版本一样,但是CUDA Toolkit一定要和pytorch中版本一样

我没用conda太麻烦了,直接裸装到本地python环境速度还快,下面是步骤:

正式开始

首先要安装cuda_11.6.0_511.23_windows.exe 这个版本必须要和pytorch官网对应(其实不一定非要安装最新的cuda老的也可以的只要版本对上),然后安装pytorch可以从官网或者本地,如果安装过程中出现以来报错,可以检查手动安装依赖再重新安装

网盘地址:

我用夸克网盘分享了「cuda驱动」,

链接:https://pan.quark.cn/s/678739c40a91

关于CUDA Toolkit 与你的显卡驱动版本对应关系可以参考这个文档,他都是大于等于也就是说你的cuda老版本也没关系 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 可以如上图看显卡版本或者cmd命令行执行nvidia-smi查看

1.下载CUDA Toolkit

https://developer.nvidia.com/cuda-11-6-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local

cuda_11.6.0_511.23_windows.exe (全部下一步)

2.安装pytorch

https://pytorch.org/get-started/locally/ 参考地址

pip都是在cmd命令行安装如果没pip去baidu查一下python pip安装教程,python版本我这里是10.0

组合脚本(在线安装):

pip install protobuf==3.20.0 requests==2.28.2 torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 –extra-index-url https://download.pytorch.org/whl/cu116

本地安装(可选)

下载地址:https://download.pytorch.org/whl/cu116/torch-1.13.1%2Bcu116-cp310-cp310-win_amd64.whl

pip install protobuf==3.20.0 requests==2.28.2 torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 torch-1.13.1+cu116-cp310-cp310-win_amd64.whl

python命令行:

import torch

torch.cuda.is_available()

如果返回true表示安装成功

50步加了很多关键词才19秒不到

如果20步只要3秒,并且分辨率也高不会崩溃。

另外补充就是分辨率采样过高报错问题:

RuntimeError: CUDA out of memory. Tried to allocate 31.29 GiB(GPU 0; 12.00 GiB total capacity; 4.29 GiBlready allocated; 5.1l GiB free; 4.37 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

————————————————

解决思路作者地址:通过设置PYTORCH_CUDA_ALLOC_CONF中的max_split_size_mb解决Pytorch的显存碎片化导致的CUDA:Out Of Memory问题_梦音Yune的博客-CSDN博客

对于小显存我设置成

set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32 貌似也能解决问题,这个需要在启动bat里面加入一行就行了