内容提要
本文介绍了在AWS上部署面向美术团队的Stable Diffusion图像生成平台ComfyUI的方案,包括模型的自动化加载和图片生成,存储成本的降低,GPU实例成本的降低以及全球加速的实现。方案以基础设施即代码的方式进行管理,减少了运维成本。
延伸解读
模型存储与加载的性能权衡
方案将模型存放在 S3,GPU 节点启动时同步到本地 Instance Store,利用其低延迟提升模型加载和切换速度。但 Instance Store 容量有限,若模型总大小超出,需改用 EFS 或其他存储。这提醒读者:性能优势与存储容量需权衡,模型规模增长时需提前规划存储方案。
GPU 成本优化与弹性伸缩
方案使用 Karpenter 管理 GPU 实例扩缩容,并混合使用 on-demand 和 spot 实例以降低成本。但 spot 实例可能被回收,且 Pod 扩展需等待节点初始化与模型同步,可能影响响应速度。读者需根据业务对稳定性和延迟的敏感度,调整实例类型比例或预留策略。
自动化模型同步的机制与边界
通过 S3 事件触发 Lambda,再经 SSM 让所有 GPU 节点同步模型,实现了模型更新的自动化。但该机制依赖节点上的 SSM Agent 和正确的 IAM 权限,且同步为全量操作,模型频繁变更时可能带来额外开销。部署时需确保角色权限配置正确,并关注同步对节点性能的影响。
全球加速的适用场景与限制
可选部署 CloudFront 为 ComfyUI 提供边缘加速,适合跨地区美术团队协作。但方案中 ALB 仅配置 HTTP,CloudFront 源协议设为 HTTP_ONLY,且动态请求禁用缓存,加速效果主要针对网络传输而非内容缓存。若对安全性有要求,需额外配置 HTTPS 和证书。
Q&A
ComfyUI 相比其他 Stable Diffusion 界面有什么优势?
ComfyUI 是基于节点式工作流的 Stable Diffusion 方案,优势包括:在 SDXL 模型推理上性能优化,图片生成速度比 webui 提升 10%~25%;高度自定义,可精准控制生成过程;workflow 以 json 或图片形式易于分享;对开发者友好,可通过 API 调用。
这个方案如何降低存储和 GPU 实例成本?
方案使用 Instance store 作为本地缓存存储模型,结合 S3 存储模型和输出图片,降低存储成本;GPU 实例采用 spot 实例和 on-demand 实例混合,并通过 Karpenter 自动扩缩容,从而降低 GPU 实例成本。
模型是如何自动同步到 GPU 节点的?
当模型上传到 S3 或从 S3 删除时,会触发 Lambda 函数,通过 SSM 对所有 GPU 节点执行命令,将 S3 上的模型同步到本地 Instance store。GPU 节点初始化时也会通过 user-data 从 S3 同步模型。
部署这个方案需要哪些前提条件?
需要提前安装并熟练使用以下工具:AWS CLI、CDK、kubectl、eksctl、Docker、npm 等。具体可参考方案部署指引中的准备工作部分。
如何测试部署后的 ComfyUI 是否正常工作?
可以通过 API 测试:在 test 目录下运行 invoke_comfyui_api.py 脚本,修改 SERVER_ADDRESS 为 ingress 地址,执行脚本调用 workflow 生成图片。也可以通过浏览器访问 ingress 地址或 CloudFront 域名,使用 ComfyUI 前端界面进行测试。
CloudFront 边缘加速是如何配置的?
执行 cdk deploy CloudFrontEntry 部署 CloudFront 分配,该分配以 EKS Ingress 的 ALB 作为源,源协议策略设置为 HTTP_ONLY,缓存策略设置为 CACHING_DISABLED 以加速动态请求。部署完成后输出 CloudFront URL,可通过该 URL 访问。