提高Stable Diffusion十倍计算速度以及解决内存崩溃问题

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

在这发一个推广:GitHub - stablediffusion-website-online: stable diffusionAI绘画 AI画图生成平台,适合自己开绘画平台网站,包含图片生成及图片浏览

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

本地环境: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驱动」,

链接:夸克网盘分享

关于CUDA Toolkit 与你的显卡驱动版本对应关系可以参考这个文档,他都是大于等于也就是说你的cuda老版本也没关系 CUDA 12.2 Release Notes 可以如上图看显卡版本或者cmd命令行执行nvidia-smi查看

1.下载CUDA Toolkit

CUDA Toolkit 11.6 Downloads | NVIDIA Developer

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

2.安装pytorch

Start Locally | PyTorch 参考地址

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的博客-优快云博客

对于小显存我设置成

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

### 解决 Stable Diffusion 中遇到的 OutOfMemoryError 错误 当运行 Stable Diffusion 时,如果 GPU 显存不足会触发 `torch.cuda.OutOfMemoryError` 错误。这通常是因为尝试分配超出可用显存量的内存所致。 #### 调整批处理大小和图像分辨率 减少批量大小(batch size)可以显著降低每次迭代所需的显存量。同样地,减小输入图像尺寸也会有效缓解这一问题。对于大多数模型,默认设置可能过高,适当调整这些参数能够提高稳定性[^1]。 ```python # Example of reducing batch size from default value model.batch_size = 1 ``` #### 设置环境变量优化内存管理 通过配置特定于 PyTorch 的环境变量来改进 CUDA 内存分配策略,比如使用 `PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:<value>` 来防止碎片化并更高效利用现有资源: ```bash export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 ``` #### 使用扩展插件释放未使用的缓存 安装专门设计用于自动清理不再需要的数据结构从而腾出更多空间给新请求的应用程序或脚本,例如 sd-webui-memory-release 扩展可以在每次生成之后清除不必要的张量和其他对象以节省宝贵的 VRAM 容量[^3]: ```bash git clone https://github.com/Haoming02/sd-webui-memory-release.git extensions/ ``` #### 更改可见设备ID 有时切换到其他具有更大容量或者当前负载较低的 GPU 可能解决问题;可以通过修改代码中的环境变量指定要使用的具体硬件单元[^4]: ```python import os os.environ["CUDA_VISIBLE_DEVICES"] = "1" ``` 以上措施综合运用可以帮助克服由于显卡 RAM 不足而引发的各种挑战,在不更换物理硬件的情况下尽可能发挥已有系统的最大效能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值