yokon's blog

如何白嫖 Stable-Diffusion 服务

2023.04.21

最近一直有朋友问我,自己设备配置不行怎么使用 Stable-Diffusion,问我有没有共享的 Stable-Diffusion AI 绘画服务能体验一下,付费也行。说实话听到付费我确实心动了,但我的机器作一次图30s起步,而付费的云服务器动辄一个月4k+,只好抑制住这份心动。

但是总有办法的。Google colab 就是答案。 Google colab 地址:https://colab.research.google.com/ 需要玩家自备工具去访问,或者找朋友帮忙操作,启动后 gradio 的地址可直接访问。

新建 Notebook

post45_1.png

打开 colab 后新建笔记本,我们点击右上角的连接按钮。

post45_2.png

然后点击底部 更改运行时类型 选择 GPU 保存。

post45_3.png

查询 GPU 资源

from psutil import virtual_memory

ram_gb = virtual_memory().total / 1e9

print('Your runtime has {:f} gigabytes of available RAM\n'.format(ram_gb))

post45_4.png

和 Notebook 的使用方式一样,直接在输入框里输入代码,然后点击左上角按钮执行即可。 避免重复执行已经执行过的代码,可以点击左上角的【+代码】,添加一个新的代码 cell。

执行结果输出 Your runtime has 13.6 gigabytes of available RAM 这样的形式,表示当前运行时进程存在 GPU 资源。可以开始我们的操作了。

注意:

  • 下文的代码都是在每一个新的代码 cell 中执行,在新的代码 cell 中输入代码块中的代码后,都需要点击左上方执行按钮执行,不在赘述。
  • 直接复制代码,执行时出现错误,需检查代码的编码是否正确,或者重新输入代码中的每个空格。
  • 本人的 colab notebook 分享链接会在文末给出,不想看文章的可直接跳到最后 ORZ。

重启运行时进程

如果我们选择保存 GPU 资源后,colab 没有自动重新连接资源,可以执行下面的代码,重启进程。

import os
os.kill(os.getpid(), 9)

这段代码会终止当前运行时进程,该进程将由管理器自动重新启动。

安装 stable-diffusion-webui

在新的代码 cell 中输入下面命令,并执行。来安装 stablediffusion-webui 以及相关依赖。

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

# 安装依赖环境
!COMMANDLINE_ARGS="--exit " REQS_FILE="requirements.txt"  python launch.py

安装模型

下面的命令以我常用的 chilloutmix_NiPrunedFp32Fix 为例,大家需要什么模型,直接以相同的格式,修改或者新增下载连接和文件名即可。

# 下载 chilloutmix_NiPrunedFp32Fix.safetensors
!curl -Lo models/Stable-diffusion/chilloutmix_NiPrunedFp32Fix.safetensors https://civitai.com/api/download/models/11745

# 下载 EasyNegative.pt
!curl -Lo embeddings/EasyNegative.pt https://huggingface.co/datasets/gsdf/EasyNegative/resolve/main/EasyNegative.pt

安装插件

这里以中文本地化插件为例,大家需要安装 ControlNet 等插件,同样以这个下面命令形式下载即可。这里我直接用 git clone 从 GitHub 仓库下载:

!git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git extensions/stable-diffusion-webui-localization-zh_CN

git clone 后面是插件地址,再后面是插件文件夹。

安装 VAE

安装 VAE 以及下面的 Lora 方式和模型一样,大家根据需求来。

# 创建VAE文件夹
!mkdir models/VAE

!curl -Lo models/VAE/vae-ft-mse-840000-ema-pruned.ckpt https://huggingface.co/dector/vae-840000/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt

安装 Lora

# 创建Lora文件夹
!mkdir models/Lora

!curl -Lo models/Lora/hanfu_v30.safetensors https://civitai.com/api/download/models/39043

启动

因为用--share参数共享服务,会启用默认的安全保护设置,插件功能会失效。这里带上--enable-insecure-extension-access 参数开启,如果要分享给别人使用,这里需要谨慎些。上篇文章说过 --gradio-auth 参数用于设置前端登录的账户名和密码,需要替换的可自行修改。

# 启动
!COMMANDLINE_ARGS="--share --enable-insecure-extension-access --disable-safe-unpickle --gradio-debug --gradio-auth yokon:yokon666" REQS_FILE="requirements.txt" python launch.py

大概运行 1 分钟左右,直到 colab 打印了下面这样的日志,就表示启动成功了:

Running on local URL: http://127.0.0.1:7860
Running on public URL: https://39793c2bc407de4916.gradio.live

我们在新窗口打开输出的 gradio public URL 地址,输入 yokon/yokon666,就可以愉快的玩耍了。

**Tips:**这里的链接大家可以分享给好友或者在其他地方使用,本人测试过,即使不使用平台不让说的那种上网方法,也可以正常访问。

一些设置

开启中文

我们安装了中文插件,但是为了更好的体验,仍然需要我们手动设置下。

顺序点击 setting -> User interface -> Localization,选择zh_CN

post45_5.png

然后点击 Apply settings同意设置,在点击Reload UI 重启 UI。这里可能重启后并没有生效,没关系,我们只需要停止启动代码 cell 的执行,然后重新执行即可。

快捷设置列表

如果希望生成图界面,可以快速选择 VAE 等设置,可以设置用户界面的快捷设置列表。输入下面的配置(可根据自身需要删减):

sd_model_checkpoint,sd_vae,sd_checkpoint_cache,sd_vae_checkpoint_cache,initial_noise_multiplier,CLIP_stop_at_last_layers,sd_hypernetwork

post45_6.png

和上面插进配置一样,同意设置然后重启 UI,不生效重新执行启动代码 cell。 效果如下:

post45_7.png

开始玩耍

一切准备就绪后,我们就可以开始玩耍了。下面我以真人+汉服的风格为例,给大家提供提示词等参数,然后生成图片。

Prompt

我们在提示词输入框输入(这里我们使用前面安装的 hanfu lora):

extremely detailed CG unity 8k wallpaper,(masterpiece),(best quality),(ultra detailed),(ultra realistic),(Best character details:1.2),dynamic angle,professional lighting, photon mapping, radiosity, physically-based rendering,blush,golden proportions,(shiny skin),makeup, (wavy gray hair and a sophisticated sense of style),(parted lips:1.1),red lipstick,wide shoulders, (hanfu, song style outfits, 1girl, light yellow with green with white short shan, light yellow with green with white pleated skirt, (red songmo: 1.2)),(Sky of background: 1.4),(full body: 1.2),looking at viewer <lora:hanfu_v30:0.75>

Negative prompt

在反向提示词输入框输入:

(EasyNegative:1.2),(Bad_Prompt_v2:0.8),(Bad_Hands_5),sketch by Bad_Artist, (worst quality, low quality:1.4), (bad anatomy), watermark, signature, text, logo,contact, (extra limbs),Six fingers,Low quality fingers,monochrome,(((missing arms))),(((missing legs))), (((extra arms))),(((extra legs))),less fingers,lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, (depth of field, bokeh, blurry:1.4),blurry background,bandages,

Meta

其他参数

  • Size: 768x1152
  • Seed: 3276150485
  • Steps: 50
  • Sampler: DPM++ SDE Karras
  • CFG scale: 7
  • Clip skip: 2

面部修复和高清修复设置根据自己经验来。

然后点击生成按钮。这个时候可能界面会没有反应,大家不要惊慌,我们点开 colab 页面,看到打印如图的日志,表示已经在生成了,进度到 100% 就 OK 了。

post45_8.png

然后点开 stable-diffusion 的界面,就看到图片生成好了,我们可以点击保存按钮,然后下载生成的图片。

post45_9.png

好了,到这里本篇文章就结束了,祝大家玩的愉快。

最后共享下我的colab https://colab.research.google.com/drive/1iWqnnreXoKhEA7c6bOQae5rlk4Jv5cE7?usp=sharing 以及我生成的几张图片。

作品分享

post45_10.png

post45_11.png

post45_12.png

post45_13.png