Comfyui容器化部署与简介

目前使用 Stable Diffusion 进行创作的工具主要有两个:Stable Diffusion WebUI 和 ComfyUI。本文重点介绍ComfyUI的部署使用。
ComfyUI 可定制性很强,可以让创作者搞出各种新奇的玩意,通过工作流的方式,也可以实现更高的自动化水平,创作方法更容易传播复现,支持多任务批量提交到comfyui,支持websocket对接。 但是 ComyUI 的上手门槛有点高,对 Stable Diffusion 以及各种扩展能力的原理需要有一定的理解,动手能力要求也比较高。但作为专业的软件化平台,更适合软件团队集成或二次开发有实际价值的应用。所以我们更推荐使用ComfyUI的方式替代WebUI。

环境准备

插件

  • 插件管理器

git clone https://github.com/ltdrdata/ComfyUI-Manager.git

  • 翻译

git clone https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation.git

  • 中文提示词输入,绘画节点

git clone https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet.git

  • 美化辅助,文本补全,吸附网络

https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git

  • ControlNet预处理器

https://github.com/Fannovel16/comfyui_controlnet_aux

  • 分块采样器插件

https://github.com/BlenderNeko/ComfyUI_TiledKSampler.git

  • 放大插件

https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git

  • Derfuu插件

https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes.git

模型

准备如下模型:
  • stabilityai/stable-diffusion-xl-base-1.0
  • stabilityai/stable-diffusion-xl-refiner-1.0
  • stabilityai/sdxl-vae
  • stabilityai/control-lora
  • xinsir/controlnet-canny-sdxl-1.0
  • vaeapprox-sdxl
  • controlnet-canny-sdxl-1.0
  • SargeZT/controlnet-sd-xl-1.0-softedge-dexined
  • thibaudcontrolnet-openpose-sdxl-1.0
下载地址:

插件可以提前下载,也可以通过ComfyUI-Manager。我们更推荐采用手动下载的方式,个人控制性更强,后期升级维护更加可控。

#checkpoint
git clone https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
git clone https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0
#vae
git clone https://huggingface.co/stabilityai/sdxl-vae#vaeapprox
wget https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/download/v1.0.0-pre/vaeapprox-sdxl.pt#controlnet
git clone https://huggingface.co/stabilityai/control-lora
git clone https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0
###dexined soft edge preprocessing
wget https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined/resolve/main/controlnet-sd-xl-1.0-softedge-dexined.safetensors
###ZoeDepth repo 中的默认参数将其着色为灰度
wget https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe/resolve/main/depth-zoe-xl-v1.0-controlnet.safetensors
###OpenPose
wget https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0/resolve/main/control-lora-openposeXL2-rank256.safetensors
wget https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0/resolve/main/OpenPoseXL2.safetensorsgit clone https://huggingface.co/kohya-ss/controlnet-lllite

base 与 refiner 模型的区别
base 模型是用来做文生图,refiner 模型是用来做图生图的。首先,使用基础模型(Base)模型生成(有噪音的)潜在变量,然后再由专门用于去噪的精修模型(refiner)进一步处理。基础模型stabilityai/stable-diffusion-xl-base-1.0本身也可以作为独立模块使用,串联起效果更好。

模型分类简介:
Checkpoint

Checkpoint 是 SD 的核心,是最基本的必备模型,体积较大,也被称为大模型。越大的模型代表融合的元素越多,表现的效果细节越丰富。不同的大模型使用不同的图片训练而成,对应不同的风格,相当于最底层的引擎。我们在模型网站筛选 Checkpoint 就是筛选大模型。大模型后缀分两种,ckpt 和 safetensor 。一般 ckpt 融合的数据多一点,safetensor 融合的数据少一点,模型侧重不同,各有优略,不代表好坏。

VAE

VAE(Variable Auto Encoder,变量自动编码器)是一个添加到稳定扩散检查点模型中的文件,以获得更鲜艳的颜色和更清晰的图像。VAE 通常还有改善手部和面部的额外好处。模型可以内置 VAE,也可以使用一些通用的外部VAE,某些外部VAE甚至比内置VAE工作得更好。 如stabilityai/sdxl-vae 可以配合基础模型stabilityai/stable-diffusion-xl-base-1.0使用。

ControlNet

ControlNet 是一个控制预训练图像扩散模型的神经网络。它允许输入调节图像,然后使用该调节图像来操控图像生成。它调节图像类型众多,例如涂鸦、边缘图、姿势关键点、深度图、分割图、法线图等,这些输入都可以作为条件输入来指导生成图像的内容。

loras

低秩适应模型,在不改变原有模型的情况下去添加一些额外的低秩举证以调整模型权重。提升模型性能以及适应性
可以理解为stable diffusion(SD)模型的一种插件,和hyper-network,controlNet一样,都是在不修改SD模型的前提下,利用少量数据训练出一种画风/IP/人物,实现定制化需求,所需的训练资源比训练SD模要小很多,非常适合社区使用者和个人开发者。

hypernetworks

中文名字叫超网络,功能和embedding,lora类似,都是对生成的图片进行针对性的调整,它是一个附加到稳定扩散模型的小型神经网络,主要用于修改控制图像风格。使用比较少,有逐步被Lora 代替的趋势。

GFPGAN

GFPGAN 是开源的人脸修复算法,它利用预先训练好的面部 GAN(如 StyleGAN2)中封装的丰富和多样的先验因素进行盲脸 (blind face) 修复,旨在开发用于现

Embedding

它是一种用于提高AI绘画效果的技术,可以将一组图片的特征提取出来,保存为一个小文件,然后在生成图片时,通过输入关键词来激活这个文件,从而实现风格的转换或人物的还原。Embedding大小只有几十K或几个M,它可以同时调用多个文件进行混合。它必须基于一款模型来生成和使用

源码下载

1:下载代码仓库
git clone https://github.com/comfyanonymous/ComfyUI.git
2、下载所有插件并存放在:ComfyUI/custom_nodes/
image.png
3、根据前面准备的模型,把模型存放在指定宿主机目录,使用时挂载到容器

├── Codeformer
├── controlnet
│?? ├── control-lora
│?? ├── control-lora-openposeXL2-rank256.safetensors
│?? ├── controlnet-canny-sdxl-1.0
│?? ├── controlnet-scribble-sdxl-1.0
│?? ├── controlnet-sd-xl-1.0-softedge-dexined.safetensors
│?? ├── depth-zoe-xl-v1.0-controlnet.safetensors
│?? └── OpenPoseXL2.safetensors
├── deepbooru
│?? └── Put your deepbooru release project folder here.txt
├── GFPGAN
│?? ├── alignment_WFLW_4HG.pth
│?? ├── detection_Resnet50_Final.pth
│?? ├── GFPGANv1.4.pth
│?? └── parsing_parsenet.pth
├── hypernetworks
├── karlo
│?? └── ViT-L-14_stats.th
├── Lora
├── Stable-diffusion
│?? ├── sdxl-turbo
│?? ├── stable-diffusion-2-1
│?? ├── stable-diffusion-xl-base-1.0
│?? └── stable-diffusion-xl-refiner-1.0
├── VAE
│?? └── sdxl-vae
└── VAE-approx└── vaeapprox-sdxl.pt18 directories, 11 files

本地环境部署

创建虚拟环境

conda create -n comfyui python=3.10
conda activate comfyui

安装pytorch和相关依赖

#安装pytorch
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simpl
pip3 install torch torchvision torchaudio

安装相关依赖

pip install -r requirements.txt

插件相关依赖,在第一次启动时会自动安装部署

修改配置文件

cp extra_model_paths.yaml.example extra_model_paths.yaml
编辑 extra_model_paths.yaml
修改checkpoints的路径和其他模型路径,请根据你实际放置位置来修改:
vim extra_model_paths.yaml

a111:base_path: /app/ComfyUI/checkpoints: models/checkpointsconfigs: models/configsvae: models/VAEloras: |models/Loramodels/LyCORISupscale_models: |models/ESRGANmodels/RealESRGANmodels/SwinIRembeddings: embeddingshypernetworks: models/hypernetworkscontrolnet: models/controlnet

容器化部署ComfyUI

准备Dockerfile文件

FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
ENV LANG=zh_CN.UTF-8
WORKDIR /appRUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
RUN pip config set install.trusted-host mirrors.aliyun.comCOPY ComfyUI/ /app/ComfyUI/
WORKDIR /app/ComfyUIRUN pip install --use-pep517 -r requirements.txt
RUN pip install -r  custom_nodes/comfyui_controlnet_aux/requirements.txt
RUN pip install -r  custom_nodes/ComfyUI-Manager/requirements.txt
RUN pip install -r  custom_nodes/ComfyUI_Custom_Nodes_AlekPet/ArgosTranslateNode/requirements.txt
RUN pip install -r  custom_nodes/ComfyUI_Custom_Nodes_AlekPet/DeepTranslatorNode/requirements.txt
RUN pip install -r  custom_nodes/ComfyUI_Custom_Nodes_AlekPet/GoogleTranslateNode/requirements.txt
RUN pip install -r  custom_nodes/efficiency-nodes-comfyui/requirements.txtEXPOSE 8188
CMD [ "python","main.py ","--port 8188"]

执行构建

docker buile -t qingcloudtech/comfyui:v1.0 .

启动容器

docker run -it --gpus all \
-p 8188:8188 \
-v /u01/workspace/models/stablediffusion:/u01/workspace/models/stablediffusion \
-v /u01/workspace/comfyui/output/:/app/ComfyUI/output \
qingcloudtech/comfyui:v1.0 python main.py

启动容器(docker-compose方式)

准备配置文件
version: '3.8'
services:comfyui:image: qingcloudtech/comfyui:v1.0container_name: comfyuicommand: python /app/ComfyUI/main.pydeploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]volumes:- /u01/workspace/models/stablediffusion/:/u01/workspace/models/stablediffusion/- /u01/workspace/comfyui/output/:/app/ComfyUI/output#- /u01/workspace/ComfyUI/extra_model_paths.yaml:/app/ComfyUI/extra_model_paths.yamlnetwork_mode: host
执行启动命令:
docker-compose up -d

演示访问:

http://127.0.0.1:8188
image.png


【Qinghub Studio 】更适合开发人员的低代码开源开发平台
QingHub企业级应用统一部署
QingHub企业级应用开发管理
QingHub演示
https://qingplus.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348106.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

录屏快捷键在哪?3个快捷键,教会你快速录屏

在数字化时代,录屏功能已经变得日益重要,无论是工作汇报、教学演示还是游戏分享,我们都需要借助录屏工具来捕捉屏幕上的精彩瞬间。而录屏快捷键,作为一种高效的录屏操作方式,能够极大地提升我们的录屏效率。那么&#…

echarts地图添加外边框(散乱地图块添加区域边界线)

需求: 蓝色边是街道地图,也是实际有用的地图,可以点击拖动之类,由于太散乱,现在增加一个灰色边表示外面区县(不可点击),让他看起来是一个整体 下面这个图是我最后做出来的案例 难…

JavaWeb6 Tomcat+postman请求、响应

Web服务器 对HTTP协议操作进行封装,简化web程序开发 部署web项目,对外提供网上信息浏览服务 Tomcat 轻量级web服务器,支持servlet,jsp等少量javaEE规范 也被称为web容器,servlet容器 Springboot有内置Tomcat nginx…

阅文集团CEO侯晓楠:建立10亿生态扶持基金,为好内容搭建舞台

6月12日,由安徽省文化和旅游厅、安徽省文学艺术界联合会、黄山市人民政府指导,阅文集团、黄山旅游发展股份有限公司主办的2024阅文创作大会在黄山召开。 据「TMT星球」了解,大会总结了过去一年阅文在“AIIP”业务升级思路下创作生态和IP领域…

Linux部署项目

手动部署 1.在IDEA写一个有关springboot项目 在windows客户端可以通过localhost:8080/hello 访问 2.用packge 命令将该springboot项目打包 并在target目录下找到打包的jar包 3.上传到linux上 个人习惯在usr/local/app 下上传该项目 创建切换到app目录下 mkdir /usr/local/ap…

AOSP12隐藏首页搜索框----隐藏google 搜索栏

目录 第一步:修改文件 第二步:修改文件 第三步:重新编译源码,启动模拟器 第四步、运行效果 第一步:修改文件 源码文件路径: packages/apps/Launcher3/res/layout/search_container_workspace.xml,将…

跟着AI学AI_09 PyTorch 简介

PyTorch 简介 PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队(FAIR)开发。它提供了灵活且高效的张量计算功能,并支持动态计算图。PyTorch 的易用性和灵活性使其成为深度学习研究和生产应用中广泛使用的工具。…

C++开源软件:跨平台本地密码管理器KeePassXC/KeePassDX

KeePassXC、KeePass和KeePassDX在功能、平台和特点上有所区别,以下是对这三款密码管理器的清晰区分: KeePassXC: 平台:跨平台,支持Windows、macOS和Linux等主流操作系统。 安全性:使用AES加密算法&#x…

LeetCode | 66.加一

这道题有多个思路,可以依次取数组的每一位,乘10后加下一位,直到最后一位,就得到我们数组所表示的数字,然后加一,然后把新得到的数字再转化为对应的数组,我的做法是直接取数组的最后一位&#xf…

[CUDA 学习笔记] 稀疏矩阵向量乘法(SpMV) CUDA 实现与优化

稀疏矩阵向量乘法(SpMV) CUDA 实现与优化 本文主要围绕基于 CUDA 的 SpMV 实现进行介绍, 包括几种典型稀疏矩阵存储格式下 SpMV 的朴素实现, 以及 CSR 格式下的几种优化实现. 稀疏矩阵存储格式 稀疏矩阵即含有大量零元的矩阵. 对于稀疏矩阵, 像稠密矩阵一样使用二维数组来存…

组织创新|AI赋能敏捷实践,助力企业敏捷转型

在工业5.0时代,随着项目变得越来越复杂,对效率的需求也在增长,致力于敏捷转型的组织正在寻求创新的解决方案来应对常见的挑战:工作量不平衡、低效的任务分配和知识孤岛等等。对此,AI等尖端技术的潜力可以帮助实现更高效…

译译交友项目介绍

一、 项目背景 随着社会的进步,英语作为一种国际语言,很多人都在学习英语,然而现在很多人都会因为学习英语而烦恼,有时还会因为是一个人学习而感到枯燥。面对情绪的低落,往往会使学习更困难。因此,我打造了…

电视剧推荐

1、《春色寄情人》 2、《唐朝诡事录》 3、《南来北往》 4、《与凤行》 5、《利剑玫瑰》 6、《承欢记》

uniapp使用vue3语法构建自定义导航栏,适配小程序胶囊

具体代码 <view v-if"isCustom" class"nav-content-container" :style"height:navContentHeight px;"><slot name"left"></slot><slot name"middle"> </slot><view :style"width:…

网工内推 | 深信服、中软国际技术支持工程师,最高13k*13薪

01 深信服 &#x1f537;招聘岗位&#xff1a;远程技术支持工程师 &#x1f537;任职要求&#xff1a; 一、专业能力和行业经验&#xff1a; ①具备友商同岗位工作经验1.5年以上&#xff0c;具备良好的分析和判断能力&#xff0c;有独立问题处理思路&#xff0c;具备常见协…

SpringAI调用OpenAI Demo

Spring AI 在maven的setting.xml <mirror> <id>spring-milestones</id> <name>Spring Milestones</name> <mirrorOf>spring-milestones</mirrorOf> <url>https://repo.sprin…

C++ 12 之 指针引用

c12指针引用.cpp #include <iostream>using namespace std;struct students12 {int age; };int main() {students12 stu;students12* p &stu; // 结构体指针students12* &pp p; // 结构体指针起别名pp->age 20;// (*pp).age 22;cout << "…

sqli-labs 靶场 less-7 第七关详解:OUTFILE注入与配置

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 7 SQLI DUMB SERIES-7判断注入点 进入页面中&#xff0c;并输入数据查看结果。 发现空数据提…

【Python】成功解决ModuleNotFoundError: No module named ‘PyQt5‘

【Python】成功解决ModuleNotFoundError: No module named ‘PyQt5’ 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念&#xff0c;所以我们要先明确一点&#xff1a; JavaScript中一切引用类型都是对象&#xff0c;对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…