探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!

1前言

最近AI真是火得不行,先是AI绘图,然后是ChatGPT。我自己也试用了段时间,写作文还挺给力的。不过,OpenAI把中国的IP屏蔽了,而且用户多得让人头疼,使用体验没那么顺畅。可偏偏全球就这一家,真是无奈,只能将就着用。相比之下,AI绘图就轻松多了,都是开源的,自己搞个服务器就能爽快玩起来。

恰好我手上有一台2080Ti的工作站,之前用来训练模型的,现在部署个绘图工具简直轻而易举,于是我就开始了这段折腾之旅~

2效果

先给大家看看我生成的一些图片吧。

汉服 COSER
探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南! 探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!
大海 2B小姐姐
探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南! 探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!

轻松上手Stable Diffusion,AI绘图不再难

现在AI绘图工具可真不少,比如Novel AIDisco DiffusionStable Diffusion等,想要快速入门,我还是觉得Stable Diffusion最简单。

Stable Diffusion是一个将文字转换成图像的AI模型,这个工具是开源的,能在家用电脑上轻松部署(对硬件要求也不高)。只要你有一块6GB显存的显卡或者16GB内存的电脑,甚至只用CPU也可以生成图像,并且只需要几秒钟,完全不用担心预处理和后处理的问题。

在GitHub上,有个项目能够快速让你用docker运行Stable Diffusion,还有UI界面,超级方便。本文就是基于这个项目进行的。

项目地址:
https://github.com/AbdBarho/stable-diffusion-webui-docker

准备工作

  • 需要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

这样就OK啦~

小贴士

配置完成后别忘了重启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. |
|===============================+======================+======================|
轻松搞定搭建步骤,快来试试吧!

终于要动手了,准备好了吗?

第一步,先把代码克隆下来。

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

接下来,我们需要下载模型,这可是十几个G的大工程哦。

只要网络稳定,基本上一次就可以搞定。

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

第二步,开始运行程序。

这里需要选择一个用户界面来启动,auto是我推荐的选项,它的功能最齐全。除了这个,还有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,就能看到这个界面了。

探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!

接下来,输入你的提示词,就能开始画图了。我这里用的是一个风光图模型,想画一幅美丽的风景画。

探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!

如果你遇到问题跑不起来,也别担心,可以翻到后面的“疑难解答”部分看看。

如何使用

刚开始肯定会有点懵,为什么画不出那么酷的效果呢?

  • 提示词

  • 模型选择

轻松上手生成图像的技巧

首先,我们得了解一下什么是提示词,也就是用来描述你想要生成图像的内容。简单来说,Stable Diffusion 是通过你给出的英文描述来判断生成的画面应该是什么样子的。所以,写得好坏直接影响到你得到的图像效果。至于怎么写提示词,这部分我们就不深入讨论了,网上有很多相关的文章,可以去找找看。

至于模型,它是一个统称,里面包括 Checkpoints、LORA、Texture 等等。具体的安装和使用方法,可以参考模型网站上的教程,跟着做就行了。

你可以通过以下这些网站来组合生成提示词:

这些网站上有不少用户分享的成品图和描述,值得一看:

  • https://prompthero.com/

  • https://openart.ai/

如果你想下载模型,可以去这些网站看看:

  • https://civitai.com/

  • https://huggingface.co/

常见问题解答

报错信息

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: rpc error: code = Unknown desc = dockerfile parse error on line 8: unknown instruction: cat (did you mean cmd?)

解决方案

你可以参考这个链接:GitHub 解决方案

修改 stable-diffusion-webui-docker/services/AUTOMATIC1111/Dockerfile 文件,将第一行

# syntax=docker/dockerfile:1

改成

# syntax=docker/dockerfile:1.3-labs

然后在构建时加上 DOCKER_BUILDKIT=1 的参数:

DOCKER_BUILDKIT=1 docker compose --profile auto up --build

pip依赖安装失败

这通常是因为网络问题。尽管你已经设置好了 docker 的代理,但在构建过程中不会自动使用这些设置,所以需要重新配置一下。

在 docker compose 的配置文件中添加 build args 来设置代理服务器。

可以参考这个文档:
Docker Compose 文件配置

修改 docker-compose.yml 文件:

auto: &automatic
<<:*base_service
profiles: ["auto"]
build: ./services/AUTOMATIC1111
image: sd-auto:49
environment:
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api

改为:

auto: &automatic
<<:*base_service
profiles: ["auto"]
build:
context: ./services/AUTOMATIC1111
args:
- HTTP_PROXY=http://host:port/
- HTTPS_PROXY=http://host:port/
image: sd-auto:49
environment:
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api

显卡驱动问题

报错信息:

Error response from daemon: could not select device driver "nvidia" with capabilities: [[gpu]]

可能是你需要安装 NVIDIA Container Toolkit。

可以参考这个文档:
NVIDIA 容器工具包安装指南

注意:这个工具需要 CUDA 版本 11.6 以上,如果你的版本低,请先更新。

添加软件源

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) 
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

轻松安装和配置 NVIDIA 容器工具包

&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | 
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

如果你在使用像 LinuxMint 这样的 Ubuntu 衍生版,记得要手动把 distribution 环境变量设置成对应的 Ubuntu 版本。例如,我现在使用的 Mint 21 就相当于 Ubuntu 22.04,所以要记得设置 distribution=ubuntu22.04

安装步骤

sudo apt install -y nvidia-container-toolkit

进行配置

sudo nvidia-ctk runtime configure --runtime=docker

重启 Docker 守护进程

sudo systemctl restart docker

参考资料

  • 项目地址 -
    https://github.com/AbdBarho/stable-diffusion-webui-docker

  • 基础入门博客 -
    https://newzone.top/posts/2022-09-05-stable_diffusion_ai_painting.html

来源:今日头条
原文标题:快来玩AI画图!StableDiffusion模型搭建与使用入门~ – 今日头条
声明:
文章来自网络收集后经过ai改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!

《探索AI绘画的奇妙世界:StableDiffusion模型搭建与入门指南!》有10条评论

  1. 文章对Stable Diffusion的介绍非常实用,尤其是新手入门的步骤讲解很清晰,真是受益匪浅。期待自己也能生成一些有趣的作品!

    回复
  2. 这篇文章对Stable Diffusion的搭建过程讲解得很详细,特别是对于硬件要求和网络配置的说明,让我对自己的设备配置有了更清晰的认识,准备尝试一下。

    回复
  3. 这篇文章对AI绘图的介绍特别实用,Stable Diffusion的搭建步骤写得很明白,适合新手学习。希望能看到更多实例和效果分享。

    回复
  4. AI绘图的门槛真的降低了,Stable Diffusion的使用体验也很不错。文章里的步骤很清晰,让我对搭建过程有了更深的理解,希望能看到更多应用案例!

    回复
  5. Stable Diffusion的搭建流程相对简单,很适合像我这样的新手。文章详细讲解了硬件和软件的要求,让人对自己的配置有了清晰的认识,期待自己也能试试生成图像!

    回复
  6. 对AI绘图的探索真是让我大开眼界,Stable Diffusion的使用流程简直太友好了,自己在家就能轻松生成想要的图像,期待尝试更多功能!

    回复
  7. Stable Diffusion确实是个很棒的工具,简单易用,让我在家也能尝试AI绘图。文章里的配置细节讲得很清楚,特别适合新手。希望能看到更多实用的教程!

    回复
  8. 这篇文章对Stable Diffusion的搭建过程讲解得很到位,尤其是针对硬件和网络的要求,帮助我解决了很多疑惑,期待能自己尝试生成一些有趣的图像。

    回复
  9. AI绘图的确是个有趣的领域,Stable Diffusion的使用方法简单易懂,适合很多人尝试。希望能看到更多关于它应用的分享。

    回复
  10. 这篇文章详细解释了Stable Diffusion的搭建流程,特别是对新手来说非常友好。硬件和网络的要求讲解得很清晰,让我对操作有了信心。期待更多实用的分享!

    回复

发表评论