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

[复制链接]
查看906 | 回复0 | 2023-8-10 13:00:08 | 显示全部楼层 |阅读模式
在启动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秒,并且分辨率也高不会崩溃。
                         
                         
另外补充就是分辨率采样过高报错问题:

  <blockquote class="kdocs-blockquote" style="text-align:left;">   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里面加入一行就行了
  
  
  
  
  
  

来源:https://blog.csdn.net/cnor/article/details/129170865
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则