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.mzph.cn/news/850640.shtml

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

相关文章

Kimichat使用案例010:快速识别出图片中的表格保存到Excel

文章目录 一、介绍二、图片信息三、输入内容四、输出内容五、markdown提示词六、markdown输出一、介绍 如果有一张图片格式的表格,想要快速复制到Excel表格中,那么一般要借助于OCR工具。之前试过不少在线OCR工具,识别效果差强人意。其实,kimichat就可以非常好的完成这个任务…

文件怎么去重?5个技巧,教你删除重复文件!

一般来说,在处理大量文件时,你可能会遇到重复的类似文件。这些文件占据了电脑上不必要的磁盘空间,导致系统性能下降。而这些文件可以是不同类型的,如照片、视频、音频、存档、文档等。正因如此,您需要通过文件去重来删…

质量小议38 -- 60岁退休的由来

总是要有个标准,质量更是如些。 标准不是固定不变的,与时俱进。 关键词:当时的人均寿命;渐进式 60岁退休。 22大学毕业开始工作(当然可能会更早),到60岁退休,要工作38年。 …

C++ 史上首次超越 C,跃至榜二

TIOBE 公布了 2024 年 6 月的编程语言排行榜。 C在本月的TIOBE指数中成功超越了C,成为新的第二名。它是一种被广泛应用于嵌入式系统、游戏开发和金融交易软件等领域的编程语言。这次的排名是C在TIOBE指数中的历史最高位,同时也是C语言的历史最低位。 T…

(2024,自监督 ViT,全监督 ViT,损失可视化,MAE,RC-MAE,自蒸馏,EMA)可视化自监督 ViT 的损失景观

Visualizing the loss landscape of Self-supervised Vision Transformer 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0 摘要 2 基础:MAE 和 RC-MAE 3 损失景观 3.1 分…

QT C++(QT控件 QPushButton,QRadioButton,QCheckBox)

文章目录 1. QPushButton 普通按钮2. QRadioButton 单选按钮3. QCheckBox 复选按钮 1. QPushButton 普通按钮 QPushButton中的重要属性 text:按钮中的文本icon:按钮的图标iconSize:按钮中图标的尺寸shortCut:按钮对应的快捷键&a…

Unity3d使用3D WebView for Windows and macOS打开全景网页(720云)操作问题记录

问题描述 使用Unity3d内嵌网页的形式打开720云中的全景图这个功能,使用的是3D WebView for Windows and macOS插件,720云的全景图在浏览器上的操作是滑动鼠标滚轮推远/拉近全景图,鼠标左键拖拽网页可以旋转全景图内容。网页的打开过程是正常…

IDEA创建Mybatis项目

IDEA创建Mybatis项目 第一步:创建库表 -- 创建数据库 create database mybatis_db;-- 使用数据库 use mybatis_db;-- 创建user表 CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,email VARC…

transformer中对于QKV的个人理解

目录 1、向量点乘 2、相似度计算举例 3、QKV分析 4、整体流程 (1) 首先从词向量到Q、K、V (2) 计算Q*(K的转置),并归一化之后进行softmax (3) 使用刚得到的权重矩阵,与V相乘,计算加权求和。 5、多头注意力 上面…

记一次postgresql拼接函数string_agg() 和row_number() 使用

PG两个函数使用需求和简单介绍 需求背景介绍第一个需求背景是这样的需求升级一下接下来讲讲STRING_AGG()基本语法排序 然后我们再说说ROW_NUMBER()基本语法使用 row_number() over (partition by) 进行分组统计使用 row_num限定每组数量 需求背景介绍 第一个需求背景是这样的 …

【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。

操作环境: MATLAB 2022a 1、算法描述 蚁群算法(Ant Colony Optimization,ACO)是一种通过模拟蚂蚁觅食行为的启发式优化算法。它由意大利学者Marco Dorigo在20世纪90年代初提出,最初用于解决旅行商问题(T…

从《千脑智能》看大模型

千脑智能与大模型 千脑智能介绍 世界模型千脑智能理论——对大脑的全新理解旧大脑:演化的历史烙印新大脑:智慧的创新引擎新旧大脑的互动与争斗启示与借鉴 大脑对信息的处理和建模六根六尘六识 新脑:智能的创新中枢旧脑:生存的本能…

Spring的Controller是单例还是多例,如何保证线程安全的。

目录 验证是否单例(默认单例) 多例测试 单例对象成员变量测试 多例对象成员变量测试 解决方案 结论: 补充说明 答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。 正…

求宇文玥在水下的浮力和赵丽颖捞他的时间

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料 2024年汉东省在达康书记的带领下率先实现高考试点改革。为让更多的考生能提升对他们的理解和记忆,把电视剧的场景融入考试题目中。确保学生看一遍就懂,想…

STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)

文章目录 前言一、STM32点亮LED灯的原理1.1GPIO是什么1.2点亮LED灯的原理 二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写1.LED灯操作函数介绍HAL_GPIO_WritePin函数原型参数说明示例代码 HAL_GPIO_TogglePin函数原型参数说明示例代码 2.代码编写3.烧写程序 总…

(三)React事件

1. React基础事件绑定 语法&#xff1a; on 事件名称 { 事件处理程序 }&#xff0c;整体上遵循驼峰命名法 App.js //项目根组件 //App -> index.js -> public/index.html(root)function App() {const handleClick () > {console.log(button被点击了)}return (<…

k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA详细解释与安装

文章目录 前言VPA简介简单理解详细解释VPA的优缺点优点1.自动化资源管理2.资源优化3.性能和稳定性提升5.成本节约6.集成性和灵活性 缺点1.Pod 重启影响可用性2.与 HPA 冲突3.资源监控和推荐滞后&#xff1a;4.实现复杂度&#xff1a; 核心概念Resource Requests 和 Limits自动调…

AI大模型学习(非常详细)零基础入门到精通,收藏这一篇就够了

前言 随着人工智能技术的快速发展&#xff0c;AI大模型学习正成为一项备受关注的研究领域。为了提高模型的准确性和效率&#xff0c;研究者们需要具备深厚的数学基础和编程能力&#xff0c;并对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法&#xff0c;AI大模…

python如何输入回车

Python默认遇到回车的时候&#xff0c;输入结束。所以我们需要更改这个提示符&#xff0c;在遇到空行的时候&#xff0c;输入才结束。 raw_input就是从标注输入读取输入&#xff0c;输入的是什么就是什么。 文档解释&#xff1a; The function then reads a line from input,…