2024-01-11 部署Stable Diffusion遇挫记


点击 <C 语言编程核心突破> 快速C语言入门


部署Stable Diffusion遇挫记

  • 前言
  • 一、一如既往的`GitHub`部署
  • 二、使用的感受
  • 总结


llama
create by Stable Diffusion; prompt: fire water llama

前言

要解决问题: 由于近期的努力, 已经实现语音转文字模型, 通用chat迷你大模型的本地部署与使用自由, 貌似还缺了一个图像, 别无选择 stable diffusion

想到的思路: stable-diffusion + Web UI, 既然已经有人搭了台子, 咱们唱戏就完了.

其它的补充: 这是我部署AI模型最不顺利的一次, 因为笑脸被墙了, 导致很多问题.


一、一如既往的GitHub部署

https://github.com/AUTOMATIC1111/stable-diffusion-webui 这是网址, 如果GitHub不能登, 就不要看下面的了.

直接下载最近的Releases, 按照说明, Windows直接运行stable-diffusion-webui/webui.bat, 但我的Windows一如既往的抛出数百行错误提示, 于是没有纠结, 转战Linux.

Linux玩法和Windows不一样, 需要先安装一些基本依赖:

# Debian-based:
sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0
# Red Hat-based:
sudo dnf install wget git python3 gperftools-libs libglvnd-glx 
# openSUSE-based:
sudo zypper install wget git python3 libtcmalloc4 libglvnd
# Arch-based:
sudo pacman -S wget git python3

这个很简单, 然后下载并运行webui.sh文件(只需一个文件, 它会帮你全自动部署), 这个刚开始是没有权限, 需要运行一个命令:

sudo chmod +777 目录/webui.sh

详见https://blog.csdn.net/qq_47346664/article/details/120132193

但是我遇到了第一个问题, 重新下载torch, 这个问题有点大, 因为我部署whisper的时候下过6g的东西, 里面有这玩意儿, 它要更改版本, 可能其它的模型调用就会有问题,

于是我决定手动下载相关依赖, 根据依赖列表, 事实证明, 这浪费了大量的时间, 并且导致重复下载以及反复更新, 听我一句话, 对于这种版本冲突, 没辙, 老老实实的按照人家给你的方案装.

我的python下载的包, 不知为啥, 没有在PATH里, 所以, 可能会产生重复安装, 于是给包所在的lib文件夹, 添加到PATH中, 详见
https://blog.csdn.net/ymtianyu/article/details/105973953

之后的历程就是各种错误, 比如安装 PyTorch-Lightning 可能会重装torch(https://blog.csdn.net/qq_60592939/article/details/129177520),

安装tb-lightly失败, 需要更换pip源(https://blog.csdn.net/weixin_46455141/article/details/131353266) ,

安装xformers可能也有坑(https://blog.csdn.net/GranteZhou/article/details/131808110),

我刚开始没装, 后来老报错, 最后用用户启动命令行webui-user.sh文件加入如下命令自动安装,

另外的条目是解决显卡内存不足导致崩溃的, 显存小于8g的估计都要用上, 这是在官网查各种issue得到的精华, 没这条语句, 估计低端显卡都要崩, 而且根本无从查起.

export COMMANDLINE_ARGS="--medvram --xformers --no-gradio-queue"

在趟过了这些坑之后, 我们下载模型, 对, 依赖小10个G, 模型还要至少4个G, 网络不行, 还是绷不住.

v1-5-pruned-emaonly.safetensors, 这是基础模型, 当你完成部署后, 让你进入网页http://127.0.0.1:7860/ 但很快报错, 因为没有模型文件.

笑脸已经被墙了, 会登梯子的, 自己下, 不会登梯子的, 一如既往的阿里福音书:
https://www.modelscope.cn/home 自己搜索, 下载, 一定是我给的这个模型, 或类似的, 不是微调的那种.

下载到/stable-diffusion-webui/models/Stable-diffusion 路径下面.

以为这就完事了么, too young, 还有最后一个坑:

Can‘t load tokenizer for 'openai/clip-vit-large-patch14', 这个是openai的分词器, 但是是在笑脸, 所以被墙了, 你会发现, 网页可以进, 但是就是一会就蹦,

为什么呢, 因为没上面这个, 模型加载完, 没法用, 直接崩溃.

能上笑脸的自然不会出现这个问题, 不能上的, 去阿里福音书搜, 记住不需要下载模型文件, 但要把所有的json txt文件下载下来, 放入一个文件夹clip-vit-large-patch14,

然后, 搜两个文件mudules.py一样的名字, 不同的文件, 在文件中搜索openai, 找到 openai/clip-vit-large-patch14 的那一行, 把它换成你自己下载文件的那个文件夹的绝对路径, 每个文件两处, 一共四处, 详见(https://blog.csdn.net/qq_39352483/article/details/133883932)

之后, 如果你和我一样, 就应该可以愉快的玩耍了.

注意内存, 16g可称乞丐版了, 稍微开点应用, 就蹦.

二、使用的感受

首先, 比较慢, 这不是模型问题, 是我的贫穷问题, 我的错.

其次, 同样的prompt, 每次不一样, 更改尺寸也不一样, 风格也会变,

最后, 真的, 对内存小的设备及其不友好, 显存内存不足都是崩溃的主要原因.


总结

愉快的玩耍是以足够的硬件为基础的, 目前没有类似llama.cpp的穷人解决方案, 至少我没看到, 知道的可以告知一下.


点击 <C 语言编程核心突破> 快速C语言入门


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/343100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.傅里叶处理图片原理和代码实现

在这里首先声明&#xff0c;本文纯粹看了别的博主的文章&#xff0c;觉得博主写的原理清晰明了&#xff0c;容易理解&#xff0c;很详细&#xff0c;在这里写一遍是作为笔记&#xff0c;方便以后再翻看时容易查找。大家可以参考下面这个博文&#xff1a; 图像的傅里叶变换_图像…

Fast.ai

网址&#xff1a;https://colab.research.google.com/ https://colab.research.google.com/notebooks/gpu.ipynb#scrollTotMce8muBqXQP 克隆此存储库后&#xff0c;请确保您已 nbdev_install_hooks在终端中运行。这将安装 Jupyter 和 git hooks 以自动清理、信任和修复笔记本中…

43-函数的声明定义,函数表达式定义,函数的调用,声明提升,参数,形参,实参

1.函数声明定义 function 函数名(){} 2.函数表达式定义 匿名式函数表达式 var 函数名 function(){} 命名式函数表达式 var 函数名 function 函数关键字(){} 3.函数的调用 var fn function f(){alert("aaa");}//函数名&#xff08;&#xff09;//函数想调用几次…

线性代数:由矩阵 AB=A 可以推出 B=E 吗?

其实&#xff0c;类似的问题在十几年前的各种提问中就出现了&#xff0c;而且&#xff0c;根据 A B A A BA ABA 推出 B E BE BE 有时候也相当 "符合直觉”&#xff0c;但如果追根问底&#xff0c;矩阵 B B B 到底应该是什么样子的&#xff0c;却很少有详细的解答。 …

供排水管网管理信息化的必要性

供排水管网是城市供水系统的大动脉&#xff0c;它负担者将优质水源输送到最终用户的重要职责&#xff0c;对供水系统有着极其重要的作用。城市供排水管网埋设在地下&#xff0c;规模庞大&#xff0c;仅靠人工难以管理。同时&#xff0c;由于城市的发展&#xff0c;管网连接结构…

C++ Webserver从零开始:基础知识(一)——Linux网络编程基础API

前言 本专栏将从零开始制作一个C Webserver&#xff0c;用以记录笔者学习的过程 如果你想要跟着我这个专栏制作一个C Webserver,你需要掌握以下前置基础课程知识&#xff1a; 1.C/C的语法&#xff08;在Leetcode刷100~200题的程度即可&#xff09; 2.计算机网络基础知识 3…

工业相机相关概念词介绍:ISP算法、线阵相机、常用术语

工业相机相关概念词介绍&#xff1a;ISP算法、线阵相机、常用术语 ISP基本框架及算法介绍相机的常用设置50个常用术语 0. ISP基本框架及算法介绍 ISP(Image Signal Processor)&#xff0c;即图像处理&#xff0c;主要作用是对前端图像传感器输出的信号做后期处理&#xff0c…

伴随矩阵定义和计算

一、伴随矩阵定义 1&#xff09;代数余子式 代数余子式也很好理解&#xff0c;在余子式的基础上多了一个-1的次方而已。 2)余子式 余子式很好理解&#xff0c;就是除了这个元素&#xff0c;出去该行该列剩下的行列式的值。 求每个元素的代数余子式&#xff0c;按行求&#xf…

Chrome 浏览器插件从 Manifest V2 升级到 V3 版本所需要修改的点

一、Manifest V2 支持时间表 Chrome 浏览器官方已经给出确定的时间来弃用 V2 版本的插件了。 最早从 2024 年 6 月的 Chrome 127 开始&#xff0c;我们将开始停用 Chrome 的不稳定版本&#xff08;开发者版、Canary 版和 Beta 版&#xff09;中的 Manifest V2 扩展程序。受此变…

Ansible的切片特性与多机器选取

一、【概述】 本文介绍一下Ansible的多机器选取和切片特性&#xff0c;这个还是一个比较有用的技巧&#xff0c;可以快速选取仓库中我们需要的机器清单。 因为该特性可能与其他工具语法稍微有些不一样&#xff0c;时间长了会忘&#xff0c;值得记录一下 二、【具体说明】 1…

【Effective Objective - C】—— 熟悉Objective-C

【Effective Objective - C】—— 熟悉Objective-C 熟悉Objective-C1.oc的起源消息和函数的区别运行期组件和内存管理要点&#xff1a; 2.在类的头文件中尽量少引入其他头文件向前声明要点&#xff1a; 3.多使用字面量语法&#xff0c;少用与之等价的方法字符串字面量字面数值字…

SQL-修改表操作

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…