舒适的包装:使comfyui工作流程可共享

- ?包装工作流环境作为工件:将工作流环境保存在带有Python软件包版本,Comfyui和自定义节点修订版的.cpack.zip trifact中,以及模型hashes。
- 解开工件以重新创建工作流环境:拆开.cpack.zip trafact的包装,以使用确切的Python软件包版本,Comfyui和自定义节点修订版以及模型权重来重新创建相同的环境。
- 将工作流部署为API:将工作流程部署为具有可自定义输入和输出参数的静止API。
动机
Comfyui Manager非常适合找到缺少自定义节点。但是,当与他人(您的受众或团队成员)分享comfyui工作流程时,您仍然可能听到这些回答:
- “找不到自定义节点”
- “找不到正确的模型文件”
- “缺少python依赖性”
这些是工作流共享中的基本挑战 – 每个组件都应完全匹配:自定义节点,模型文件和python依赖性。 NPM和诗歌等现代PACAKGE经理引入了“锁”功能,这意味着记录每个要求的确切版本。 Comfyui Manager并非为此而设计。
我们从社区中学到了这一点,并开发了舒适的包装来解决这些问题。单击单击,它将整个工作流环境捕获并锁定到.cpack.zip文件中,包括Python软件包,自定义节点,模型哈希和必需的资产。
用户可以使用一个命令重新创建确切的环境:
comfy-pack unpack workflow.cpack.zip
这意味着您可以专注于创意工作,而舒适的包装处理其余的工作。
用法
安装
我们建议您使用Comfyui Manager安装Comfy-Pack。只需搜索舒适包装,然后单击“安装” 。重新启动服务器并刷新您的comfyui接口以应用更改。

或者,通过git克隆项目存储库。
cd ComfyUI/custom_nodes
git clone https://g*i*th*ub.com/bentoml/comfy-pack.git
要安装舒适的包装CLI,请运行:
pip install comfy-pack
打包一个comfyui工作流程及其环境
您可以打包工作流程和将工作流程运行到可以在其他地方打开包装的工件所需的环境。
- 单击包装按钮创建.cpack.zip伪像。
- (可选)选择要包含的模型(仅记录模型哈希,因此您将不会获得100GB的zip文件)。

解开comfyui环境
解开.cpack.cpack.zip Artifact将恢复工作流程的Comfyui环境。在解开包装期间,Comfy-Pack将执行以下步骤。
- 准备使用用于运行工作流程的精确软件包的Python虚拟环境。
- 克隆comfyui和自定义节点从工作流程所需的确切修订中。
- 搜索并从拥抱脸和Civitai等通用注册表中搜索并下载模型。使用同一模型解开工作流程不会导致多次下载模型。相反,模型权重将象征性地链接。
打开包装:
comfy-pack unpack workflow.cpack.zip
可以通过将HF_Token设置为环境变量,然后再拆卸包装:
export HF_TOKEN=hf_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
comfy-pack unpack workflow.cpack.zip
例如,CPACK文件,检查我们的示例文件夹。
将工作流程部署为API
您可以使用HTTP的任何客户端将ComFyui工作流程变成可呼出的API端点。
1。注释输入和输出
使用comfy-pack提供的自定义节点来注释以用作输入和输出参数的字段。要添加舒适的包装节点,请右键单击并选择添加节点> Comfypack >输出/输入> [选择一个类型]
输入节点:
- ImageInput:接受图像类型输入,类似于官方的LoadImage节点
- StringInput:接受字符串类型输入(例如,提示)
- 信息:接受int类型输入(例如,尺寸,种子)
- AnyInput:接受组合类型和更多输入(例如,自定义节点)

输出节点:
- ImageOutput:输出图像类型,类似于官方的保存节点
- fileOutput:输出文件路径作为字符串类型,并在该路径下保存文件

正在进行更多的字段类型。
2。服务工作流程
从http://127.**0.*0.1:3000(默认)启动http服务器,以服务/生成路径下的工作流程。

您可以通过指定通过您的舒适包装节点配置的参数来调用 /生成端点,例如提示,宽度,高度和种子。
[!注意]舒适包装节点的名称是用于API调用的参数名称。
调用端点的示例:
卷曲
curl -X \' POST \' \\ \' http://127.0.***0.1:3000/generate \' \\ -H \' accept: application/octet-stream \' \\ -H \' Content-Type: application/json \' \\ -d \' { \"prompt\": \"rocks in a bottle\", \"width\": 512, \"height\": 512, \"seed\": 1 } \'
Bentoml客户端
在引擎盖下,舒适的包装利用了统一的模型服务框架Bentoml。您可以使用Bentoml Python客户端调用端点:
import bentoml with bentoml . SyncHTTPClient ( \"http://127.0.***0.1:3000\" ) as client : result = client . generate ( prompt = \"rocks in a bottle\" , width = 512 , height = 512 , seed = 1 )
3。(可选)打包工作流程和环境
将工作流程和环境打包成一个可以在其他地方解开包装以重新创建工作流程的工件。
# Get the workflow input spec comfy-pack run workflow.cpack.zip --help # Run comfy-pack run workflow.cpack.zip --src-image image.png --video video.mp4
4。(可选)部署到云
通过访问各种GPU和快速缩放量,部署到Bentocloud。
请按照此处的说明进行操作以获取您的Bentocloud访问令牌。如果您没有Bentocloud帐户,则可以免费注册。

安全指南
CPACK文件仅包含工作流环境的元数据,例如Python软件包版本,comfyui和自定义节点修订版以及模型哈希。它不包含任何敏感信息,例如API键,密码或用户数据。但是,解开CPACK文件将安装自定义节点和Python依赖性。建议从受信任的来源解开CPACK文件。
Comfy-pack具有严格的打开包装模式。您可以通过将CPACK_STRICT_MODE环境变量设置为true来启用它。它将牺牲一些灵活性和安全性。目前,舒适的包装将:
- 在Python软件包安装中使用更严格的索引策略
正在进行更多的安全功能。
路线图
该项目正在积极发展。目前,我们正在研究:
- 增强的用户体验
- Docker支持
- 本地.cpack文件管理具有版本控制
- 增强的服务功能
社区
Comfy-Pack由Bentoml团队积极维护。随时与我们的懈怠社区联系!
贡献
作为一个开源项目,我们欢迎各种贡献,例如新功能,错误修复和文档。以下是一些贡献的方法:
- 通过创建github问题来重新发布错误。
- 提交拉动请求或帮助审查其他开发人员的拉请请求。
