为ComfyUI项目发布线上服务

更新时间:
复制为 MD 格式

在项目开发阶段完成模型、插件和依赖的安装后,可通过发布功能将当前生图环境制作成快照并部署到线上服务。发布后,在项目开发阶段对插件和依赖的调整不会影响已发布的线上服务。

功能介绍

为保障线上服务稳定可靠,项目开发环境与线上服务环境相互隔离。可在开发环境中调试和迭代 ComfyUI 生图环境,待该环境能稳定运行预期的工作流后,通过发布将确定的生图环境版本部署到线上服务。

ComfyUI生图环境

组成

说明

模型

工作流所需的各类模型(Checkpoint、LoRA、ControlNet 等)

位于models目录下

插件

社区或自研的自定义节点(Custom Nodes)

位于custom_nodes目录下

依赖

ComfyUI 主程序及各插件的 Python 依赖包

缓存

工作流运行所需的辅助模型、数据集等

通常位于.cache目录下

项目开发与线上服务分别维护可变不可变的生图环境,通过隔离保证线上 API 调用的稳定性。每次发布时,平台会将当前项目开发的生图环境制作成快照,并用该快照更新线上服务。

发布流程概览

阶段

说明

1. 快照制作

将项目开发环境中的插件、依赖和必要缓存打包拷贝,生成快照并存储于 snapshots目录。模型(models)不包含在快照中,线上服务项目开发环境共享同一份模型存储。

生图环境越复杂(插件和依赖越多),快照制作所需的时间越长。

2. 服务部署

快照完成后,平台自动更新线上服务的函数配置并触发平滑轮转:启动加载新快照的新实例,新实例健康检查通过后销毁旧实例。显示发布成功即表示函数配置已更新,实例轮转已开始。


操作指南

准备工作

项目开发中使用工作站完成生图环境调试,确保模型、插件、依赖、缓存能正常运行工作流。详见:创建ComfyUI项目快速入门

说明:若发布前已完成调试,建议先保存并关闭工作站,再发起发布,以避免发布等待期间产生不必要的工作站计费。

步骤 1:发布线上服务并查看发布记录

  1. 进入项目详情页(在控制台点击项目,再点击目标 ComfyUI 项目)。

  2. 在项目详情页右侧点击发布线上服务按钮。
    首次发布时,平台会引导完成线上服务的资源规格与弹性策略配置;后续发布将默认复用线上服务 > 配置管理中的配置。

  3. 发起发布后,在线上服务 > 发布记录页面可查看当前发布任务的详细进度。

说明:同一时间仅允许一个发布任务处于发布中状态。如需发起新发布,请等待当前任务完成后再操作。

步骤 2:观察实例状态

当发布记录显示发布成功后,线上服务的实例轮转正式开始。可通过以下方式观察轮转情况:

入口

观察内容

线上服务 > 服务概览

实际最小实例数的变化

线上服务 > 实例列表 > 推理实例

各实例的运行周期,判断新旧实例替换情况

说明:实例轮转速度主要取决于生图环境的启动时间。若工作站启动时间较长(例如存在加载较久的 ComfyUI 插件),每次发布的轮转耗时也会增加。

常见问题

发布:制作快照阶段

Q:发布时提示目录大小超出限制怎么办?

生图环境过大会影响快照制作和后续实例轮转速度。平台在制作快照阶段会校验相关目录大小,超过默认限制时会中止发布。

目录

默认限制

排查与处理

插件目录custom_nodes

5GB

用于存储 ComfyUI 插件源码。通过 项目开发 > 实例列表 > 登录实例,在终端执行:cd ~/comfyui/custom_nodes && du -sh * | sort -rh

按大小倒序查看。检查并清理体积较大的插件目录,确认是否存在非预期文件(如误放至此的模型)。

缓存目录.cache

5GB

存储工作流运行时按需下载的辅助模型和数据集。建议清理后在工作站中重新运行一次所有核心工作流,由相关节点自动下载所需缓存。

若确认目录内容无异常且业务确需更大配额,可通过提交工单联系评估并提高配额。

发布:服务部署阶段

Q:为什么在函数计算控制台修改的配置被回滚,或导致发布失败?

FunArt 通过自身发布流程管理和覆盖函数计算(FC)的配置,以保证环境一致性和版本可追溯。在函数计算控制台的手动修改不会同步回 FunArt,且会在下一次发布时被 FunArt 的配置覆盖。

注意:强烈建议不要直接在函数计算(FC)控制台修改由 FunArt 创建和管理的函数配置。所有配置变更应在线上服务 > 配置管理页面进行。

若因在 FC 控制台修改导致服务部署失败,请先根据错误提示在线上服务 > 配置管理中修正配置,再在线上服务 > 发布记录中对失败任务执行重试。重试时将跳过快照制作阶段,直接进入服务部署。

实例启动与轮转阶段

Q:发布成功后,为什么线上服务的配置未真正生效,且实例仍是旧版本?

此为正常现象。「发布成功」仅表示函数的新配置已成功修改,配置的最终生效依赖实例轮转(新实例成功启动并完成替换)。

若等待较长时间后实例仍未轮转,通常表示新实例启动失败。可按以下步骤排查:

  1. 判断轮转状态线上服务 > 实例列表 > 推理实例页签中,通过实例的「运行周期-存续时长」判断新旧;新实例的存续时长会从零开始计算。

  2. 排查启动失败:若长时间无新实例出现,先检查线上服务 > 服务概览是否存在明显的实例启动错误信息,再结合函数日志定位原因(例如 ComfyUI 非预期地跨境动态下载辅助模型等)。

Q:如何优化实例启动(轮转)时间过长?

线上实例的启动时间取决于最近一次发布时项目开发工作站的启动时间。优化工作站的启动速度即可缩短轮转耗时。

优化方向

操作建议

分析插件加载耗时

启动工作站后,在项目开发 > 运行日志中用关键词 Import times for custom nodes检索,查看各插件加载耗时,重点优化加载过久的插件。

检查预热工作流

若在线上服务 > 配置管理中配置了工作流预热,发布前需在项目开发环境中完整运行一次预热工作流,确保辅助模型和文件已提前下载至缓存,否则新实例预热时实时下载可能耗时过长或导致启动超时。