Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

IT资讯
IT资讯
IT资讯
1262
文章
278
评论
2025-02-1714:35:56
评论
42 3762字

背景

近年来,机器学习在很多领域都取得了令人惊喜的应用,比如半年前开始火的绘图 stable diffusion ,再比如最近 openai 的 chatgpt 。我一直想尝试下这些有趣的应用,然而苦于手头上没有合适的硬件。因为这些应用基本都要求有较好的显卡,且一般运行于 Linux 平台。而我手头上唯一一台拥有显卡的设备,是装着 Windows11 的 PC,在去年将其升级到 4070ti 后,主要作为原神和崩3的专用机,其他时间基本处于闲置。最近突然奇想,能不能用这台机来跑机器学习应用呢?经过一番折腾,最终实现了在 Windows 上通过容器运行 stable diffusion 的目标。

 

 

 

 

 

实现

物理机安装 Windows11 ,通过 WSL2 完成虚拟化,运行 Ubuntu 20.04 作为 Guest OS 。为了部署的简化,Windows11 通过安装 Docker 来运行相关应用。

 

 

 

系统配置

 

 

Windows 开启 WSL2

管理员身份打开 PowerShell 并运行:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

 

WSL2 安装 Ubuntu-20.04

wsl --set-default-version 2
wsl --install -d Ubuntu-20.04

 

 

安装完后重启 Windows,通过 wsl --list 可以查询到系统:

适用于 Linux 的 Windows 子系统分发:
Ubuntu-20.04 (默认)

打开开始菜单中的 wsl 或者 ubuntu 20.04 都可以拿到 terminal 。

 

 

 

 

 

(可选) 支持 ssh 连接到 wsl

 

为了方便局域网内的其他设备能够通过 ssh 连接,要么将 ubuntu 通过桥接接到路由器上,要么在 Windows 上通过端口映射将 22 映射到 ubuntu 。我尝试过桥接方式,结果发现 Windows 网络不稳定,特别是 logitech flow 也跪了,无奈放弃,走端口转发:

netsh interface portproxy add v4tov4 listenaddress=* listenport=22 connectaddress=172.25.179.90 connectport=22

 

根据网上文章,建议重装 wsl 的 ssh server :

sudo apt-get remove openssh-server
sudo apt-get install openssh-server
sudo service ssh restart

 

Windows11 防火墙放开 22 端口:高级安全防火墙 - 入站规则 - 新建规则,新增 tcp 端口 22 的入站规则

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

 

 

 

 

 

安装 Docker

 

Windows 11 安装 Docker for windows ,安装完后选择 WSL2 的 ubuntu 作为后端

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

这里踩了一个坑,装了 4.17.1 发现调用不了 GPU ,无奈降级 4.17.0 ,见 https://github.com/docker/for-win/issues/13324 。据说 4.18.0 修复了这个问题。

 

 

 

启动容器

 

docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu20.04 nvidia-smi

若能够输出以下内容,表示 docker 调用 GPU 正常:

Fri Apr 7 12:52:17 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02 Driver Version: 531.18 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| 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 RTX 4070 Ti On | 00000000:01:00.0 Off | N/A |
| 0% 30C P8 2W / 285W| 3219MiB / 12282MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1 C /python3.10 N/A |
| 0 N/A N/A 141 G /Xwayland N/A |
| 0 N/A N/A 10635 G /Xwayland N/A |
| 0 N/A N/A 24057 G /Xwayland N/A |
+---------------------------------------------------------------------------------------+

 

 

 

 

 

 

安装 Stable Diffusion

 

我们配置好了带 GPU 的 docker 环境,接下来就通过 docker 运行 Stable Diffusion 。推荐使用项目 https://github.com/AbdBarho/stable-diffusion-webui-docker :

clone 后进到目录,通过 docker compose 启动后:

下载模型:

docker compose --profile download up --build

 

 

启动服务:

docker compose --profile auto up

启动后会监听 7860 端口,通过浏览器访问即可:

随后就可以填入魔法咒语画画啦,试试朋友发给我的一组:

prompt:

(Realistic painting style:0.9), (faux traditional media:1.0), masterpiece, best quality, bokeh, depth of field, looking to the side, kamisato ayaka (springbloom missive), kamisato ayaka, official alternate hairstyle, official alternate costume, blunt bangs, butterfly hair ornament, hair flower, blue dress, 1girl, butterfly, grey eyes, flower, hair ornament, light yellow hair, outdoors, solo, hat, sky, blue nails, cloud, bangs, long sleeves, holding, looking at viewer, blue butterfly, blurry, braid, dress, day, blurry foreground, blue sky, breasts, medium breasts, cloudy sky, blush, index finger raised, blue flower, smile, closed mouth, holding fan

 

 

negative prompt:

(worst quality, low quality, extra digits, male:1.4)), bad_prompt, (loli, child:1.2), easynegative

 

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程
Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程
Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程
Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

 

开始运行后会有个进度条,生成速度取决于显卡硬件和左侧选择的参数,同等硬件下,生成分辨率越高、batch 越大,耗时越长:

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

此时 GPU 已经跑满:

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程

 

 

 

 

 

 

 

加载新模型

 

自带的模型并不能画二次元小姐姐,我们可以下载模型来画,比如著名的 waifu :

https://huggingface.co/hakurei/waifu-diffusion-v1-4

下载文件目录中的 wd-1-4-anime_e1.ckpt 后,放到 stable-diffusion-webui-docker/data/StableDiffusion 目录下,重启容器,即可在页面左上角的 Stable Diffusion checkpoint 找到该模型,选中后就可以开始大炼小姐姐了。

Windows系统当中利用Docker容器化部署Stable Diffusion的详细教程非常 fancy ,至于画不好手的问题,已经是老生常谈了。

 

 

 

 

 

 

 

 

  • Copyright ©  PC在线云端  版权所有.
  • 转载请务必保留本文链接:https://www.gaofumei.net/ai-share-tutorial/12737.html
Orgorg速率最高可达1000Mbps,流畅观看Youtube 4K、TikTok,支持 Windows、Android、iOS、Mac,支持 微信、支付宝 付款!
全球数据中心,多点BGP保证速度,无视晚高峰,全天4K秒开,IPLC专线无惧封锁
全IEPL /青云跨境,高峰时期稳定8K播放,流媒体影视, ChatGPT 解锁保障,客户端无日志保护您的隐私安全,稳定运行5年+
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: