AI文本生图模型Stable Diffusion部署教程

本文基于CentOS8进行Stable Diffusion开源框架部署.

1. DNS配置(但是今天出现了偶尔无法下载问题)

为了加速Github访问,我在本机配置如下

(sd) [root@shenjian stable-diffusion-webui]# cat /etc/hosts
127.0.0.1 shenjian localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
185.199.111.133 raw.githubusercontent.com
20.205.243.166 github.com

具体IP可通过https://tool.chinaz.com/dns/github.com获取当前可用最快IP

2. 下载 stable-diffusion-webui 仓库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
(base) [root@shenjian ai]# git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
正克隆到 'stable-diffusion-webui'...
remote: Enumerating objects: 30459, done.
remote: Counting objects: 100% (148/148), done.
remote: Compressing objects: 100% (81/81), done.
remote: Total 30459 (delta 84), reused 111 (delta 67), pack-reused 30311
接收对象中: 100% (30459/30459), 33.39 MiB | 12.59 MiB/s, 完成.
处理 delta 中: 100% (21311/21311), 完成.\
3. 下载其他仓库

webui 仅仅是一个外层界面包装,核心功能是通过其他仓库(或以仓库的形式、或以安装包的形式)支撑的。其他仓库需放在 ./repositories 文件夹下:

mkdir repositories

然后依次下载以下仓库,并切换到合适的版本以避免可能的版本适配问题:

stablediffusion

git clone https://github.com/Stability-AI/stablediffusion.git ./repositories/stable-diffusion-stability-ai
git -C ./repositories/stable-diffusion-stability-ai checkout cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf

taming-transformers

git clone https://github.com/CompVis/taming-transformers.git ./repositories/taming-transformers
git -C ./repositories/taming-transformers checkout 24268930bf1dce879235a7fddd0b2355b84d7ea6

k-diffusion

git clone https://github.com/crowsonkb/k-diffusion.git ./repositories/k-diffusion
git -C ./repositories/k-diffusion checkout c9fe758757e022f05ca5a53fa8fac28889e4f1cf

CodeFormer

git clone https://github.com/sczhou/CodeFormer.git ./repositories/CodeFormer
git -C ./repositories/CodeFormer checkout c5b4593074ba6214284d6acd5f1719b6c5d739af

BLIP

git clone https://github.com/salesforce/BLIP.git ./repositories/BLIP
git -C ./repositories/BLIP checkout 48211a1594f1321b00f14c9f7a5b4813144b2fb9
4. 建立并激活新 conda 环境

conda加速配置

vim ~/.condarc

替换内容如下

channels:- defaults
show_channel_urls: true
default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

然后创建虚拟环境

conda create -n sd-webui python=3.10
5. 安装 requirements.txt 中的依赖包
pip install torch torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tb-nightly
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装其他依赖包

pip install ftfy regex tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install open_clip_torch xformers -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r repositories/CodeFormer/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 方式一:可尝试该安装方式,不行换另外一种
pip install git+https://github.com/openai/CLIP.git
# 方式二:
git clone https://github.com/openai/CLIP.git
cd CLIP 
python setup.py install
6. 下载基础模型

从链接下载基础模型(Stable Diffusion v2.1,safetensors 格式,5.21 GB),放在 ./models/Stable-diffusion/ 下。当然也可以下载其他基础模型

7. 启动webui.py
# 有同学python webui.py启动,我这边报错了,然后用下面命令启动
# 其实在webui.sh中包含了上述大部分步骤
./webui.sh -f --skip-torch-cuda-test --precision full --no-half

OK,启动成功

Calculating sha256 for /home/shenjian/ai/stable-diffusion-webui/models/Stable-diffusion/v2-1_512-ema-pruned.safetensors: Running on local URL:  http://127.0.0.1:7860To create a public link, set `share=True` in `launch()`.
Startup time: 230.0s (prepare environment: 226.1s, import torch: 1.4s, import gradio: 0.5s, setup paths: 0.4s, other imports: 0.4s, setup codeformer: 0.2s, load scripts: 0.4s, create ui: 0.3s, gradio launch: 0.1s).
df955bdf6b682338ea9b55dfc0d8f3475aadf4836e204893d28b82355e0956d2
Loading weights [df955bdf6b] from /home/shenjian/ai/stable-diffusion-webui/models/Stable-diffusion/v2-1_512-ema-pruned.safetensors
Creating model from config: /home/shenjian/ai/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/configs/stable-diffusion/v2-inference.yaml
Applying attention optimization: InvokeAI... done.
Model loaded in 5.6s (calculate hash: 3.6s, load weights from disk: 0.2s, find config: 0.7s, create model: 0.2s, apply weights to model: 0.7s, calculate empty prompt: 0.2s).

访问http://127.0.0.1:7860

欢迎关注公众号算法小生

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

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

相关文章

WPF真入门教程27--项目案例--设备数据实时监测

1、上图看效果 今天要做的一个案例是这样的效果,它能实时监测车间设备有关数据,并以表格和图形显示在界面上,这个比上个案例要复杂些,颜值也高些,通过这个来巩固wpf的技能,用到了命令绑定,样式…

论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理

深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理这里写目录标题 前提介绍摘要引言设计性能优秀任务粒度合理Cilk框架和基础fork/join的可移植性FJTask框架设计思路线程映射关系拆分子任务排队及调度设置调度管理 标准示例 未完待续 前提介绍 Doug …

C# 图解教程 第5版 —— 第21章 异步编程

文章目录 21.1 什么是 异步21.2 async/await 特性的结构21.3 什么是异步方法21.3.1 异步方法的控制流21.3.2 取消一个异步操作21.3.3 在调用方法中同步地等待任务21.3.4 在异步方法中异步地等待任务21.3.5 Task.Delay 方法 21.4 GUI 程序中的异步操作(*)…

获得利润和成长,应采取什么步骤, 澳福认为只需坚持一点

大多数交易者通常会考虑在外汇交易中获取利润,但只有少数人会思考这样一个问题:为了获得利润和专业成长,应该采取什么步骤。像“外汇交易怎么赢利”这样的文章很受市场欢迎,但是很少有人在交易中使用这些文章中给出的建议,因为在生…

面试题:说一说多线程常见锁的策略 ?

文章目录 前言一、乐观锁和悲观锁1.1 定义1.2 生动有趣滴例子1.3 版本号机制 二、读写锁2.1 读写锁的由来2.2 生动有趣de例子2.3 ReentrantReadWriteLock 类 三、重量级锁与轻量级锁3.1 定义3.2 生动活泼の例子3.3 自旋锁(Spin Lock) 四、公平锁与非公平…

Spark原理——Shuffle 过程

Shuffle 过程 Shuffle过程的组件结构 从整体视角上来看, Shuffle 发生在两个 Stage 之间, 一个 Stage 把数据计算好, 整理好, 等待另外一个 Stage 来拉取 放大视角, 会发现, 其实 Shuffle 发生在 Task 之间, 一个 Task 把数据整理好, 等待 Reducer 端的 Task 来拉取 如果更细…

JAVA数组以及小练习

目录 数组的概述和静态初始化 数组的地址值和元素访问 数组的遍历 数组的动态初始化 数组练习 数组的概述和静态初始化 package 数组;public class array1 {public static void main(String[] args){//格式//静态初始化//数据类型 [] 数组名 new 数组类型[]{元素1&#xf…

0104 AJAX介绍

Ajax 的全称是 Asynchronous Javascript And XML (异步 JavaScript 和 XML )。 通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是 Ajax Ajax 能让我们轻松实现网页与服务器之间的数据交互。 浏览器…

一杯干红葡萄酒的酿造

一杯干红葡萄酒的酿造 一、什么是干红葡萄酒? 干红葡萄酒是指葡萄酒在酿造后,酿酒原料(葡萄汁)中的糖分完全转化成酒精,残糖量小于或等于4.00/L的红葡萄酒。 干红葡萄酒按颜色分可以分为 1,白葡萄酒:选择用白葡萄或浅色果皮的酿…

【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析

基于MATLAB的多模光纤模场分布的仿真分析 一、引言 (1)多模光纤的概念 多模光纤(MMF)是一种具有较大纤芯直径的光纤结构,其核心直径通常在10-50微米范围内。与单模光纤(SMF)相比,…

【C++刷题】位运算

【C刷题】位运算 一、二进制中最右侧的11、位1的个数(1)题目链接(2)解析(3)代码 2、比特位计数(1)题目链接(2)解析(3)代码 3、汉明距离…

Flink定制化功能开发,demo代码

前言: 这是一个Flink自定义开发的基础教学。本文将通过flink的DataStream模块API,以kafka为数据源,构建一个基础测试环境;包含一个kafka生产者线程工具,一个自定义FilterFunction算子,一个自定义MapFunctio…