cog-comfyui
在Replicate上运行ComfyUI工作流:
https://replicate.com/fofr/any-comfyui-workflow
我们建议:
- 在网站上尝试您喜欢的工作流,确保它能正常运行
- 使用您自己的实例在Replicate上快速高效地运行您的工作流(请参阅下面的指南)
- 使用生产就绪的Replicate API将您的工作流集成到您自己的应用或网站中
包含内容
我们尝试包含了许多最受欢迎的模型权重和自定义节点:
如需请求更多自定义节点或模型,请提出问题,或使用Replicate上的"train"标签来使用您自己的权重(见下文)。
使用方法
1. 获取您的API JSON
您需要ComfyUI工作流的API版本。这与常见的共享JSON版本不同,它不包含节点的视觉信息等。
要获取您的API JSON:
- 通过设置图标打开ComfyUI设置中的"启用开发模式选项"
- 将您的工作流加载到ComfyUI中
- 使用"保存(API格式)"按钮导出您的API JSON
2. 收集您的输入文件
如果您的模型需要输入,如用于img2img或controlnet的图像,您有3个选择:
使用URL
修改您的API JSON文件以指向URL:
- "image": "/your-path-to/image.jpg",
+ "image": "https://example.com/image.jpg",
上传单个输入
您也可以在运行模型时上传单个输入文件。
该文件将被保存为input.[扩展名]
– 例如input.jpg
。它将被放置在ComfyUI的input
目录中,因此您可以在工作流中这样引用:
- "image": "/your-path-to/image.jpg",
+ "image": "image.jpg",
上传包含输入的zip文件或tar文件
这些文件将被下载并解压到input
目录。然后您可以根据它们的相对路径在工作流中引用它们。
例如,一个包含以下内容的zip文件:
- my_img.png
- references/my_reference_01.jpg
- references/my_reference_02.jpg
可能在工作流中这样使用:
"image": "my_img.png",
...
"directory": "references",
运行您的工作流
更新所有输入后,您现在可以运行您的工作流。
一些工作流会保存临时文件,例如预处理的controlnet图像。您也可以通过启用return_temp_files
选项来返回这些文件。
如何使用您自己的专用实例
Replicate上的any-comfyui-workflow
模型是一个共享的公共模型。这意味着许多用户会向它发送可能与您的工作流很不同的工作流。这会导致内部ComfyUI服务器可能需要频繁地将模型换入和换出内存,这可能会减慢您的预测时间。
ComfyUI及其自定义节点也在不断更新。虽然这通常意味着最新版本正在运行,但如果自定义节点发生破坏性变更,您的工作流可能会停止工作。
如果您有自己的专用实例,您将:
- 将代码和自定义节点固定到已知的工作版本
- 通过只在内存中保留您的模型来获得更快的预测时间
- 从ComfyUI自身的内部优化中受益,特别是在重复运行相同工作流时
使用您自己实例的选项
要从模型中获得最佳性能,您应该运行一个专用实例。您有3个选择:
- 创建私有部署(最简单,但您需要为设置和空闲时间付费)
- 使用Cog创建和部署一个分支(功能最强大但最复杂)
- 从train标签创建一个新模型(简单,您的模型可以是公开或私有的,您可以使用自己的权重)
1. 创建私有部署
前往:
https://replicate.com/deployments/create
选择fofr/any-comfyui-workflow
作为您想要部署的模型。选择您的硬件以及最小和最大实例数,然后就准备就绪了。您将被固定到您部署时的版本。当any-comfyui-workflow
更新时,您可以用它测试您的工作流,然后使用新版本再次部署。
您可以在Replicate文档中阅读更多关于部署的信息:
https://replicate.com/docs/deployments
2. 使用Cog创建和部署分支
您可以使用这个仓库作为模板来创建您自己的模型。这让您可以完全控制ComfyUI版本、自定义节点以及用于运行模型的API。
您需要熟悉Python,并且还需要一个GPU来使用Cog推送您的模型。Replicate有一个很好的入门指南:https://replicate.com/docs/guides/push-a-model
示例
Replicate上的kolors
模型是一个很好的例子可以参考:
- https://replicate.com/fofr/kolors (带有自定义API的模型)
- https://github.com/fofr/cog-comfyui-kolors (新的仓库)
它是从这个仓库创建的,然后使用Cog部署。您可以浏览该仓库的提交记录,了解更改的内容和方式,但大致流程如下:
- 使用此仓库作为模板
- 首先运行脚本
scripts/prepare_template.py
,以删除示例和不必要的样板代码 - 修改
custom_nodes.json
以添加或删除您需要的自定义节点,确保同时在cog.yaml
中添加或删除它们的依赖项 - 运行
./scripts/install_custom_nodes.py
来安装自定义节点(或运行./scripts/reset.py
重新安装ComfyUI和所有自定义节点) - 将工作流添加为
workflow_api.json
- 更新
predict.py
以创建新的API,并更改update_workflow
方法以修改JSON的正确部分 - 使用
cog predict -i option_name=option_value -i another_option_name=another_option_value
在GPU上测试模型 - 使用
cog push r8.im/your-username/your-model-name
将模型推送到Replicate
3. 从train标签创建新模型
访问Replicate上的train标签:
https://replicate.com/fofr/any-comfyui-workflow/train
在这里,您可以提供HuggingFace和CivitAI上的权重的公共或私有URL。如果URL是私有的或需要认证,请确保包含API密钥或访问令牌。
查看训练日志以了解在工作流JSON中使用哪些文件名。例如:
从HuggingFace下载:
...
tar文件大小:217.88 MB
====================================
使用新模型时,在JSON工作流中使用这些文件名:
araminta_k_midsommar_cartoon.safetensors
运行训练后,您将拥有自己的ComfyUI模型,其中在模型设置期间加载了您自定义的权重。为防止他人使用,您可以将其设为私有。私有模型在Replicate上的计费方式与公共模型不同。
本地开发
克隆此仓库:
git clone --recurse-submodules https://github.com/fofr/cog-comfyui.git
运行以下脚本以安装所有自定义节点:
./scripts/install_custom_nodes.py
您可以在custom_nodes.json中查看节点列表
从Cog容器运行Web UI
- GPU机器:启动Cog容器并暴露8188端口:
sudo cog run -p 8188 bash
运行此命令会启动Cog容器并让您访问它
- 在Cog容器内:现在我们可以访问Cog容器,我们启动服务器,绑定到所有网络接口:
cd ComfyUI/
python main.py --listen 0.0.0.0
- 本地机器:使用GPU机器的IP和暴露的端口(8188)访问服务器:
http://<gpu-machines-ip>:8188
当您访问http://<gpu-machines-ip>:8188
时,您将看到经典的ComfyUI网页表单!