市面上有很多可以被用于AI绘画的应用,例如DALL-E、Midjourney、NovelAI等,他们的大部分都依托云端服务器运行,一部分还需要支付会员费用来购买更多出图的额度。在2022年8月,一款叫做Stable Diffusion的应用,通过算法迭代将AI绘画的精细度提上了一个新的台阶,并能在以秒计数的时间内完成产出,还可以在一台有“民用级”显卡的电脑上运行。

通过Stable Diffusion,可以绘制出各种风格的作品,比如动漫风、插画立绘、国风水墨、3D建模,甚至是照片级的拟真图像,而借助诸如LoRa、ControlNet等衍生功能,还可以做到精准控制美术风格、角色细节、姿势、动作、构图等。更更重要的是,他是全面开源的,这意味着你可以在自己的电脑上部署整个程序,使用它出图、作画是完全免费而且不限量的!市面上大多数商业级的AI绘画应用,都是基于SD去开发的。

尽管Stable Diffusion非常亲民,但他还是有一定的配置要求的,它需要一张性能足够强大的独立显卡提供算力进行绘制。实际上,“跑得动”和“玩得爽”是两种不同的体验,算力上的差异会极大的影响AI绘画时的出图效率,也正是因为此,有很多同学因为个人电脑捉急的配置而错失了深入体验Stable Diffusion的机会。等一下,你知道京东云吗?京东云GPU云主机是提供GPU算力的弹性计算服务,具有超强的并行计算能力,正在深度学习、科学计算、图形图像处理、视频编解码等场景广泛使用,为您提供触手可得的算力,有效缓解计算压力,提升您的业务效率,并可弹性扩展,助您快速构建异构的计算应用。

在经历了一系列的探索后,我为你总结出了一套零基础的、非常好上手的借助京东云GPU云主机部署安装Stable Diffusion WebUI以及相关工具和插件的保姆集教程,请查收。

一、创建GPU主机实例

1.1 创建GPU云主机

京东云GPU云主机的标准型的配置包含Tesla P40 24G显卡、12核48G,跑Stable Diffusion体验非常好,配置推荐如下:

配置 推荐 说明
系统 Ubuntu 20.04 64位
规格 GPU 标准型 p.n - p.n1p40.3xlarge 12核 48G Nvidia Tesla P40 24G显存
系统盘 100G 系统盘建议100G
带宽 5M 建议5M

1.2 创建安全组并绑定

首先在左侧菜单【安全组】创建一个安全组,在【入站规则】和【出站规则】中分别添加并开放7860、7861、8080、8888端口。其中



然后在实例详情中,点击【安全组】-【绑定安全组】绑定刚刚创建的安全组。

二、环境安装

2.1 安装GPU驱动

在英伟达官网根据显卡型号、操作系统、CUDA等查询驱动版本。官网查询链接https://www.nvidia.com/Download/index.aspx?lang=en-us

注意这里的CUDA版本,如未安装CUDA可以先选择一个版本,稍后再安装CUDA.

点击Search



如上图,查询到合适的版本为510. 然后可以使用apt安装对应驱动版本,使用apt安装更方便一些。

# 安装510版本驱动
apt install nvidia-driver-510
# 查看驱动信息
nvidia-smi

如安装成功,则可以展示如下提示信息。

2.2 安装CUDA

访问英伟达开发者网站先选择CUDA版本(版本要对应2.1中GPU驱动支持的CUDA版本),再根据操作系统选择对应CUDA安装命令,访问链接https://developer.nvidia.com/cuda-toolkit-archive

如上面安装确定所选择驱动对应的CUDA版本为11.6,根据安装命令安装, 以下命令适用Ubuntu 20.04 x86_64, GPU驱动510版本

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

2.3 安装Python 3.10

Stable Diffusion WebUI目前最低支持Python 3.10,所以直接安装3.10版本,安装命令:

	apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3.10
python3.10 --verison

PIP设置国内源,由于默认源在国外,所以安装可能经常会出现timeout等问题,使用国内源可以很大程度避免下载包timeout的情况。将如下内容复制到文件~/.pip/pip.conf当中,如没有该文件,先创建touch ~/.pip/pip.conf

	[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

2.4 安装Anaconda

非常推荐使用Anaconda。Anaconda可以便捷获取包且对包能够进行管理,同时对Python环境可以统一管理的发行版本。安装命令也很简单:

	wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
bash ./Anaconda3-2023.03-1-Linux-x86_64.sh

创建Python3.10.9环境,并使用该环境

	conda create -n python3.10.9 python==3.10.9
conda activate python3.10.9

2.5 安装PyTorch

首先在PyTorch官网查询对应CUDA版本的Torch,如上述章节2.2中CUDA 11.6需要安装pytorch1.13.1

# 使用conda安装,两种安装方式二选一
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia # 使用pip安装,两种安装方式二选一
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

三、部署Stable Diffusion WebUI

3.1 下载stable-diffusion-webui

注意首先激活Python3.10环境:

conda activate python3.10.9

然后下载stable-diffusion-webui

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

3.2 安装依赖

cd到stable-diffusion-webui目录安装相应的依赖,如有访问网络超时、失败等,注意按照章节2.3中设置国内源,如果再次失败,重试几次一般都可完成安装。

cd stable-diffusion-webui
pip install -r requirements_versions.txt
pip install -r requirements.txt

3.3 启动stable-diffusion-webui

安装完成后,执行如下启动命令:

python launch.py --listen --enable-insecure-extension-access

这一步骤会下载一些常用模型,如果遇到下载失败,根据报错提示在huggingface.co下载模型放到对应目录,如下载stable-diffusion-v1-5模型,搜索找到https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main

点击图中下载按钮,下载v1-5-pruned-emaonly.safetensors到stable-diffusion-webui/models/Stable-diffusion目录,其他模型同理。

模型下载完成,再次执行启动命令,提示已启动到7860端口,则可以通过IP+7860端口访问:

公网建议设置访问密码,注意替换下面命令当中的username:password为用户名、密码。

python launch.py --listen --enable-insecure-extension-access --gradio-auth username:password

上述命令非后台运行,如需后台运行可以使用nohup、tmux等方法实现。

3.4 使用stable-diffusions生成图片

下载一个模型到/stable-diffusion-webui/models/Stable-diffusion目录,模型可以在https://civitai.com/查找,如下图所用majicMIX realistic模型。下载完成后点击左上角刷新按钮,然后选择刚下载的模型,输入Promot和参数即可生成图片。

附上图所用Promot和参数

Prompt

1 girl a 24 y o woman, blonde, dark theme, soothing tones, muted colors, high contrast, look at at viewer, contrasty , vibrant , intense, stunning, captured in the late afternoon sunlight, using a Canon EOS R6 and a 16-35mm to capture every detail and angle, with emphasis on the lighting and shadows, late afternoon sunlight, 8K

Negative prompt

(deformed, distorted, disfigured, doll:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, 3d, illustration, cartoon, flat , dull , soft, (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs,

其他参数

四、常用相关工具与插件

4.1 安装LoRa插件Additional Networks

使用Lora必不可少的插件,Additional Networks可以用来控制checkpoint+LoRa或者多个LoRa模型生成混合风格的图像,并且可以设置Lora模型的Weight。安装方式如下:

打开stable-diffusion-webui,点击【Extensions】- 【Install from URL】输入https://ghproxy.com/https://github.com/kohya-ss/sd-webui-additional-networks.git

然后点击【Install】等待安装,直到在【Installed】中显示,然后直接用命令重启stable-diffusion-webui(不是reload webui),强烈推荐所有插件安装完成都命令重启stable-diffusion-webui,可以免去很多麻烦。

最后点击【Setting】-【Additional Networks】输入LoRa文件夹的绝对路径,如/root/stable-diffusion-webui/models/Lora(示例,请填写你的系统路径),然后【Reload UI】等待重启完成。

然后可以在【txt2img】或【img2img】中选择Lora模型并设置权重使用。

4.2 安装ControlNet

作为Stable Diffusion必装插件,ControlNet 允许用户对生成的图像进行精细的控制,以获得更好的视觉效果,ControlNet让AI绘画的可控性有了质的突变,让AGIC真正的可以投入生产使用。

打开stable-diffusion-webui,点击【Extensions】- 【Install from URL】输入https://ghproxy.com/https://github.com/Mikubill/sd-webui-controlnet.git

然后点击【Install】等待安装,直到在【Installed】中显示,然后直接用命令重启stable-diffusion-webui(不是reload webui)。

由于controlNet会使用很多模型,所以在重启的时候会默认下载,如果下载失败或超时,需要手动下载到controlnet目录。

访问huggingface.co找到controlnet的地址:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

手动下载上面模型文件到stable-diffusion-webui/extensions/sd-webui-controlnet/models目录,查看已下载controlnet模型:

下载完成,重启stable-diffusion-webui即可在【txt2img】或【img2img】使用。

4.3 Jupyter Notebook

Jupyter Notebook是一个基于网页的交互环境,可以用来编辑、运行Python代码,可视化看到运行结果。同时提供了基础的文件树操作功能等。

如已在章节2.4中安装了Anaconda,直接使用以下命令运行notebook

jupyter notebook --allow-root --NotebookApp.token='设置你的token'

访问IP+8888端口,可以开始使用notebook

4.4 模型训练工具Kohya_ss

Kohya_ss是公认推荐训练Stable Diffusion模型的可视化工具,尤其在windows平台支持比较好,经过尝试在linux直接使用会遇到各种环境原因的问题,为了避免这些问题,十分推荐使用docker安装。

先按照docker官方文档安装好docker,Ubuntu安装docker文档:https://docs.docker.com/engine/install/ubuntu/

由于在docker容器中需要使用GPU资源,所以还需要先安装NVIDIA Container Toolkit

sudo apt-get update \
&& sudo apt-get install -y nvidia-container-toolkit-base # 查看是否安装成功
nvidia-ctk --version

然后下载kohya_ss:

git clone https://github.com/bmaltais/kohya_ss.git

如下图,修改kohya_ss/docker-compose.yaml文件端口为0.0.0.0:7861:7860(将kohya_ss的7860端口映射到宿主机的7861端口,因为7860会被Stable Diffusion WebUI占用),

启动参数设置为"--username xxxx --password xxxx --headless",注意替换xxxx为需要设置的账号密码

然后执行

docker compose build # 首次执行需要build

docker compose run --service-ports kohya-ss-gui

过程中会从huggingface.co下载模型文件,如果下载失败,可以尝试手动下载到目录kohya_ss/.cache/user/huggingface/hub/models--openai--clip-vit-large-patch14/snapshots/8d052a0f05efbaefbc9e8786ba291cfdf93e5bff,最后的hash值注意改成对应的版本。

下载地址https://huggingface.co/openai/clip-vit-large-patch14/tree/main,注意下载全部文件

下载完成,然后访问端口+7861端口,可以开始使用Kohya_ss训练模型了。

五、总结

安装完Stable Diffusion及上面的推荐插件,你的Stable Diffuion已经具备强大的生产力。后续我会继续同大家一起探索和分享更多的使用经验,敬请期待系列文章下一集。

现在购买京东云GPU云主机新人即享99元7天的一折体验价(合0.59元/小时),即刻开启炼丹之旅。



作者:京东科技 王雷

来源:京东云开发者社区

一份保姆级的Stable Diffusion部署教程,开启你的炼丹之路的更多相关文章

  1. Eclipse for C/C++ 开发环境部署保姆级教程

    Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...

  2. Window10环境下,Stable Diffusion的本地部署与效果展示

    Diffusion相关技术最近也是非常火爆,看看招聘信息,岗位名称都由AI算法工程师变成了AIGC算法工程师,本周跟大家分享一些Diffusion算法相关的内容. Window10环境下,Stable ...

  3. 最新版本 Stable Diffusion 开源AI绘画工具之部署篇

    目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...

  4. 自建本地服务器,自建Web服务器——保姆级教程!

    搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...

  5. 保姆级别的RabbitMQ教程!一看就懂!(有安装教程,送安装需要的依赖包,送Java、Golang两种客户端教学Case)

    保姆级别的RabbitMQ教程!一看就懂!(有安装教程,送安装需要的依赖包,送Java.Golang两种客户端教学Case)   目录 什么是AMQP 和 JMS? 常见的MQ产品 安装RabbitM ...

  6. 【保姆级】利用Github搭建自己的个人博客,看完就会

    大家好,我是辰哥~ 作为一名喜欢技术的爱好者,平时喜欢把自己学习技术的心得或者一些踩坑.易错的过程记录下来,首选的是技术平台(博客),今天辰哥来教大家如何利用Github来搭建一个自己的个人博客平台. ...

  7. Mysql读写锁保姆级图文教程

    摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...

  8. 强大博客搭建全过程(1)-hexo博客搭建保姆级教程

    1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...

  9. 从 GPT2 到 Stable Diffusion:Elixir 社区迎来了 Hugging Face

    上周,Elixir 社区向大家宣布,Elixir 语言社区新增从 GPT2 到 Stable Diffusion 的一系列神经网络模型.这些模型得以实现归功于刚刚发布的 Bumblebee 库.Bum ...

  10. Stable Diffusion魔法入门

    写在前面 本文为资料整合,没有原创内容,方便自己查找和学习, 花费了一晚上把sd安装好,又花了大半天了解sd周边的知识,终于体会到为啥这些生成式AI被称为魔法了,魔法使用前要吟唱类比到AI上不就是那些 ...

随机推荐

  1. vue高阶函数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 【Vue】前端解决跨域问题

    Vue解决跨域问题 什么是跨域:违背了同源策略,即协议名.主机名.端口号必须一致.浏览器与服务器之间存在跨域问题,而服务器与服务器之间由于通过Http通信是不存在跨域问题的.     如图所示,浏览器 ...

  3. React课堂笔记2

    一.JSX 1.1.什么是JSX JSX = JavaScript XML,这是React官方发明的一种JS语法(糖) 概念:JSX是 JavaScript XML(HTML)的缩写,表示在 JS 代 ...

  4. 理解Linux系统: 进程

    Linux内核版本: 2.6.11.12 编写代码: 创建进程 创建进程使用fork系统调用,官方文档对于fork的描述: fork() creates a new process by duplic ...

  5. Runtime类继Robot类自动登录QQ后改进版2.0

    自动登录QQ2.0上线!!! 最近呢,有很多人问我自动登录QQ的小程序不够完善.看过我上一篇博客的人都知道,在登录QQ时运行Robot移动鼠标不够严谨,有时候会移动出错.很多小伙伴就会说了," ...

  6. 关于Java中对象的向上转型和向下转型

    什么是多态? 同一个类调用同一个方法会产生不同的影响/结果 这就是多态 public class Pet{ public void eat(){ System.out.println("Pe ...

  7. 一文详解RocketMQ-Spring的源码解析与实战

    摘要:这篇文章主要介绍 Spring Boot 项目使用 rocketmq-spring SDK 实现消息收发的操作流程,同时笔者会从开发者的角度解读 SDK 的设计逻辑. 本文分享自华为云社区< ...

  8. Linux下ftp常见问题总结

    Linux下ftp常见问题总结 似乎拖欠了几篇文章了@_@,来公司半年了,成长了不少!从大学毕业,直到看到http://blog.csdn.net/leixiaohua1020  雷霄骅(然而天妒英才 ...

  9. Azure DevOps(二)Azure Pipeline 集成 SonarQube 维护代码质量和安全性

    一,引言 对于今天所分析的 SonarQube,首先我们得了解什么是 SonarQube ? SonarQube 又能帮我们做什么?我们是否在项目开发的过程中遇到人为 Review 代码审核规范?带着 ...

  10. structed streaming 触发器trigger

    structed streaming的执行批次,较spark streaming有所改变.更加灵活.总结下来,可大白话地分为三类: 1尽可能快的执行,不定时间 2按固定间隔时间执行 3仅执行一次 详情 ...