comfyui:通过工作流创建任务,完成任务。常用于文生图,图生图,文生视频,图生视频,图片,视频风格迁移,换脸,高清化,。各种功能需要对应的模型及插件实现。
api: comfyapi提供功能包含:system_info(系统状态),get prompt(查询当前任务数),post prompt(提交任务),history(查询完成任务详情(如果未完成返回空对象))
企业级应用面临的挑战:
可用性,可扩展性,高并发,安全性,合规性,国际化。
comfyui 单节点:同时只能运行一个任务,在执行任务期间,新增的任务会自动添加到任务队列。由于某型模型在特殊参数下会占用大量算力资源,可能会造成服务崩溃,存在任务丢失系统不可用的隐患。
comfyui集群:comfyui集群可以很好的解决高并发,可用性问题。但由于comfyui的任务都是异步任务,给扩展性带来了几点挑战。
1.当一个任务提交到某个节点,可后续如果查询到另外的节点则会查不到任务。
-
当任务量突增后又开始骤减,集群节点的伸缩也是问题,可能出现某老节点存在大量任务堆积,但新节点只能分配个别任务。合适的扩缩容器时机也难以把控。
伸缩.png -
在集群扩容时,启动速度也是要关注的地方,由于comfyui中的很多模型占用很大的存储空间,如果启动机器后一一下载可能花费数十分钟,这样不但占用带宽,而且等容器启动正常工作,可能原节点组已经积压大量任务。
启动ing.png -
任务分配问题,comfyui使用sd模型制作一张简单的文生图可能需要1-3s,但是如果制作图片生成视频,视频生成视频,受分辨率,视频时长,帧率影响,可能要几分钟甚至数十分钟,如果将耗时任务和非耗时任务统一在相同集群执行可能造成非耗时用户难以接受。
queueTime.png -
工作流管理,不同的效果需要不同的工作流json。 随着技术的改进,部分模型,工作流程也会发生变化,在多人开发环境下工作流管理会开始变的混乱。
image.png