快来玩AI画图!StableDiffusion模型搭建与使用入门~

前言

最近AI很火🔥,先是AI画图,然后就ChatGPT,后者我已经用了一段时间了,用来写作文挺不错的,但OpenAI屏蔽了中国IP,加上用户太多啥的,用起来没那么爽,但没办法全球只此一家,只能捏着鼻子用。而AI画图就不一样了,全是开源的,自己部署一下可以玩个爽~

正好我们这有台2080Ti的工作站,之前用来训练模型的,现在部署个画图应该轻轻松松,于是就开始了折腾之路~

效果

先看看我生成出来的一些图片

汉服COSER
imageimage
大海2B小姐姐
imageimage

Stable Diffusion

AI画图有 Novel AIDisco DiffusionStable Diffusion 等模型,为了快速上手,我选择了最简单的 Stable Diffusion ~

Stable Diffusion 是一个「文本到图像」的人工智能模型(AI 绘图工具),开源且能部署在家用电脑(对硬件要求不高)上。使用 Stable Diffusion,你可以在拥有 6GB 显存显卡,16GB 内存或只依赖 CPU 的电脑上生成图像,并且仅需几秒钟的时间,无需进行预处理或后处理。

前置条件

  • Linux系统(炼丹绕不开的,推荐Ubuntu系;Windows可以借助WSL,但折腾)
  • NVIDIA显卡,6G以上显存(当然AMD显卡或者没显卡用CPU跑也行,但不在本文讨论范围)
  • CUDA版本 11.6 以上
  • 通畅的网络(能够正常访问GitHub、下载模型)

配置docker网络

安装这个 Stable Diffusion 模型,需要下载很多模型,单纯基础模型和数据就得十几个GB,这些都是要从国外的服务器下载,所以为了安装顺利,先来配置一下docker的代理。

Dockerd 代理

在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在这个 proxy.conf 文件(可以是任意 *.conf 的形式)中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,proxy.example.com:8080 要换成可用的免密代理。

Container 代理

在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json。以下配置,只在Docker 17.07及以上版本生效。

{
  "proxies": {
    "default": {
      "httpProxy": "http://proxy.example.com:8080",
      "httpsProxy": "http://proxy.example.com:8080",
      "noProxy": "localhost,127.0.0.1,.example.com"
    }
  }
}

这个是用户级的配置,除了 proxies,docker login 等相关信息也会在其中。

Docker Build 代理

虽然 docker build 的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入 http_proxy 等参数。

如果是通过 docker 命令启动的容器,可以使用以下命令

docker build . \
    --build-arg "HTTP_PROXY=http://proxy.example.com:8080/" \
    --build-arg "HTTPS_PROXY=http://proxy.example.com:8080/" \
    --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
    -t your/image:tag

不过我们一般使用 docker compose 工具,所以接着看看 compose 的配置方式

version: '3.9'
services:
  app:
    build: ./services/AUTOMATIC1111
    image: sd-auto:49
    environment:
      - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api

改成

version: '3.9'
services:
  app:
    build:
      context: ./services/AUTOMATIC1111
      args:
        - HTTP_PROXY=http://proxy.example.com:8080/
        - HTTPS_PROXY=http://proxy.example.com:8080/
    image: sd-auto:49
    environment:
      - CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api

这样就搞定了~

Tips

配置完记得重启 docker daemon

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:无论是 docker run 还是 docker build,默认是网络隔绝的。如果代理使用的是 localhost:1234 这类,则会无效。

CUDA

推荐使用 LinuxMint/Ubuntu 系统自带的驱动管理器安装最新的显卡驱动。

系统方面之前用的是 LinuxMint18(基于Ubuntu16.04) ,看了下 NVIDIA 的官方网站,这系统太老了,已经没办法用上新版驱动和CUDA了,所以我又花了一下午时间把系统升级到 LinuxMint21(基于Ubuntu22.04),然后装上驱动,Ubuntu系装驱动真是方便,一键搞定,没有任何波折😃,而且驱动附带的 CUDA 也装上了,不用额外折腾,舒服了。

nvidia-smi 看看驱动信息

Thu Mar 30 21:39:45 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.89.02    Driver Version: 525.89.02    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:C1:00.0 Off |                  N/A |
|  0%   30C    P8    26W / 300W |   1350MiB / 11264MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1394      G   /usr/lib/xorg/Xorg                114MiB |
|    0   N/A  N/A      3198      G   cinnamon                           38MiB |
|    0   N/A  N/A    508973      C   python                           1192MiB |
+-----------------------------------------------------------------------------+

CUDA版本是12,完美~😃

搭建步骤

终于要开始搞了

先把代码 clone 下来

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

build step 1: 下载模型,需要十几个G的模型

(只要网络通畅,一次搞定没问题的)

cd stable-diffusion-webui-docker
docker compose --profile download up --build

build step 2: 运行本体

这里是选择一套 UI 来启动,这个 auto 就是 UI 的名称,除了这个,还有 auto-cpu (没显卡用的)、 invokesygil 这几个,我试了之后还是 auto 最好,功能最多。

invoke 的界面比较简洁,似乎速度也比较快,但很多模型和LORA之类的都没法用了~😑

直接 auto 吧,不要纠结

docker compose --profile auto up --build

驱动、网络没问题的话,等它构建完可以看到类似的信息

stable-diffusion-webui-docker-auto-1  | Creating model from config: /stable-diffusion-webui/configs/v1-inference.yaml
stable-diffusion-webui-docker-auto-1  | LatentDiffusion: Running in eps-prediction mode
stable-diffusion-webui-docker-auto-1  | DiffusionWrapper has 859.52 M params.
stable-diffusion-webui-docker-auto-1  | Applying xformers cross attention optimization.
stable-diffusion-webui-docker-auto-1  | Textual inversion embeddings loaded(1): pureerosface_v1
stable-diffusion-webui-docker-auto-1  | Model loaded in 41.4s (calculate hash: 38.2s, load weights from disk: 1.6s, create model: 0.3s, apply weights to model: 0.3s, apply half(): 0.2s, load VAE: 0.8s).
stable-diffusion-webui-docker-auto-1  | Running on local URL:  http://0.0.0.0:7860

然后浏览器打开 http://ip:7860 就可以看到这个界面

输入 prompt 就可以画图了,这里我用了一个风光图的模型,画一幅风景画

如果跑不起来也没事,可以看看后面的「疑难解答」部分。

如何使用

刚开始肯定一脸懵逼,咋画不出高大上的效果啊?

  • prompt
  • 模型

首先,得学会使用 prompt,也就是生成图片的描述,Stable Diffusion 通过英文文字内容来描述场景或物体,以此来决定生成的图像中会出现什么。文字描述是决定图像生成质量的关键因素。具体如何写 prompt 不在本文讨论范围,请自行搜索相关文章,网上很多。

模型是个统称,其中包含了Checkpoints、LORA、Texture之类的,不细说了,按照模型网站上的教程安装使用就行。

这里直接将该软件分享出来给大家吧~

1.stable diffusion安装包

随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。

最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本

在这里插入图片描述

2.stable diffusion视频合集

我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入坑stable diffusion,科学有趣才能更方便的学习下去。

在这里插入图片描述

3.stable diffusion模型下载

stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。

在这里插入图片描述

4.stable diffusion提示词

提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。

在这里插入图片描述

5.SD从0到落地实战演练

在这里插入图片描述

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。

这份完整版的stable diffusion资料我已经打包好,需要的点击下方添加,即可前往免费领取!

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值