一、部署形态一览
| 形态 | 代表 | 适合 | 成本模型 |
|---|---|---|---|
| Serverless 按请求 | RunPod Serverless / Replicate / Modal / Fal | 流量波动大、MVP | 按秒计费,闲时 0 |
| 独占云 GPU 实例 | RunPod Pods / Vast.ai / Lambda Labs | 稳定流量 | 按小时租,7×24 |
| 自建 K8s | AWS EKS + G5 / 自有机房 | 大规模、数据合规 | 硬件+电费+运维 |
| SaaS 平台嵌入 | Leonardo / Civitai Generator / Tensor.Art | 不想维护 | 每图付费 |
决策直觉:日请求 < 1 万 → Serverless;1-10 万 → RunPod Pods 固定实例;> 10 万 → 自建 K8s。
二、RunPod Serverless(入门最友好)
RunPod 是 2023 年起最火的 GPU Serverless 平台,按秒计费,模型支持最全。
1. 核心概念
2. 部署 ComfyUI 最短路径
- RunPod 控制台 → Serverless → New Endpoint
- 选模板
runpod-worker-comfy(社区镜像)或自己的 Docker 镜像 - GPU 类型选 RTX 4090 / A40 / A5000(看模型大小)
- 挂 Network Volume(先用 Pod 填进去 SDXL/Flux 模型)
- Handler 用 runpod-python SDK 写好后塞进镜像
3. Handler 骨架
# handler.py
import runpod, json, base64, requests, time
from comfy_client import run_workflow # 前一章那套
WORKFLOW_TEMPLATE = json.load(open("/workflow_api.json"))
def handler(job):
inp = job["input"]
wf = build_workflow(WORKFLOW_TEMPLATE,
prompt=inp["prompt"],
seed=inp.get("seed", int(time.time())),
steps=inp.get("steps", 25))
imgs = run_workflow(wf) # 本地 ComfyUI 后端
return {"image_b64": base64.b64encode(imgs[0]).decode()}
runpod.serverless.start({"handler": handler})
Dockerfile 要同时起 ComfyUI 和 handler:
# Dockerfile
FROM runpod/base:0.6.2-cuda12.1.0
WORKDIR /app
RUN git clone https://github.com/comfyanonymous/ComfyUI.git
RUN pip install -r ComfyUI/requirements.txt
RUN pip install runpod websocket-client
COPY workflow_api.json /
COPY handler.py /
COPY start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]
# start.sh:后台起 ComfyUI,前台跑 handler
# cd /app/ComfyUI && python main.py --listen 127.0.0.1 &
# sleep 5 && cd / && python handler.py
4. 调用 Endpoint
curl -X POST "https://api.runpod.ai/v2/YOUR_ENDPOINT_ID/run" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": {"prompt": "a cat wizard, magic sparkles, oil painting"}}'
# 返回 job_id,轮询 /status/{job_id} 拿结果
# 或者用 /runsync 同步调用(短任务)
三、冷启动优化
冷启动 = 容器从 0 启动到第一个请求能处理的时间。SDXL 冷启动典型 20-60 秒,Flux 可能 60-120 秒——用户等不了。优化技巧:
四、其他 Serverless 平台对比
| 平台 | 特点 | 价格(H100 小时单价) |
|---|---|---|
| RunPod Serverless | GPU 类型最全,社区镜像丰富 | ~$2.0 + 按秒 |
| Replicate | Cog 打包格式,公开模型市场,共享 $ | 按请求,~$0.001-0.01/图 |
| Modal | Python 装饰器定义 function,DX 优秀 | ~$4/h H100 |
| Fal.ai | 专做 ComfyUI/Diffusion,极快冷启动 | 按秒,~$0.5-2/h |
| Baseten | 企业友好,可私有部署 | 定制 |
| Beam | 冷启动快,社区小 | 按秒 |
——把模型发布到 Replicate 后,别人用你的模型,你分钱。有些 ComfyUI 工作流作者把热门工作流(如 AI 写真 pipeline)封成 Cog 上传,月入 $1k-5k。产品方用也方便——调别人发布好的模型,不用自己部署。
五、独占实例(RunPod Pods / Vast.ai)
Serverless 单价高但空闲时不花钱,独占实例反过来——单价低但 24×7 都在烧钱。适合"QPS 稳定在某值以上"的产品。
价格参考(2025 年中位数)
| GPU | VRAM | RunPod Pod | Vast.ai 最低 |
|---|---|---|---|
| RTX 3090 | 24GB | $0.22/h | $0.15/h |
| RTX 4090 | 24GB | $0.34/h | $0.30/h |
| A40 | 48GB | $0.39/h | $0.35/h |
| A100 80GB | 80GB | $1.64/h | $1.2/h |
| H100 SXM | 80GB | $2.79/h | $2.0/h |
| H200 | 141GB | $3.29/h | — |
Vast.ai 是"闲置算力市场",价格最低但稳定性参差——适合训 LoRA / 跑 batch,不适合 24×7 生产(主机主可能下线)。
盈亏平衡点
Serverless vs 独占的拐点:worker 平均 utilization ≈ 40-50% 时两者成本接近。
假设一张图平均 15 秒(SDXL,含冷启):
Serverless:$0.00069/s × 15s = $0.01/图
独占 4090($0.34/h = $0.00009/s):
连续跑满:$0.00009 × 15 = $0.00135/图(7.5× 便宜)
利用率 20%:$0.00135 / 0.2 = $0.00675/图(还是便宜)
利用率 10%:$0.0135/图(比 Serverless 贵)
→ 一天至少 2000+ 图才考虑买独占 4090 Pod
六、自建方案
单机 Docker Compose
小团队 / 企业内网,最简单:
# docker-compose.yml
services:
comfyui:
image: yanwk/comfyui-boot:cu124-latest
ports:
- "8188:8188"
volumes:
- ./models:/root/ComfyUI/models
- ./custom_nodes:/root/ComfyUI/custom_nodes
- ./output:/root/ComfyUI/output
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
worker:
build: ./worker
environment:
- COMFYUI_URL=http://comfyui:8188
- REDIS_URL=redis://redis:6379
depends_on:
- comfyui
- redis
redis:
image: redis:7-alpine
Kubernetes 多 GPU
企业级:每张 GPU 一个 Pod,用 Nvidia Device Plugin 分配。
# comfyui-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: comfyui
spec:
replicas: 4 # 4 张 GPU
template:
spec:
containers:
- name: comfyui
image: your-registry/comfyui:latest
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: models
mountPath: /app/ComfyUI/models
volumes:
- name: models
persistentVolumeClaim:
claimName: comfyui-models-pvc # 共享 NAS/EFS
---
apiVersion: v1
kind: Service
metadata:
name: comfyui-svc
spec:
type: ClusterIP
selector:
app: comfyui
ports:
- port: 8188
targetPort: 8188
配合 HPA(Horizontal Pod Autoscaler)按队列长度 / GPU 利用率自动扩缩容。
七、模型分发与更新
多实例共享模型有几种方案:
| 方案 | 优点 | 缺点 |
|---|---|---|
| 共享 NAS(NFS/EFS) | 一份数据多实例读 | 首次读慢,多并发可能瓶颈 |
| 镜像内置 | 启动即用,单实例最快 | 镜像巨大(20GB+),推拉慢 |
| 启动时下载(S3) | 镜像小 | 冷启动慢(每次几十秒) |
| Nvidia NIM / 分层镜像 | 分层,模型层只下载一次 | 工程复杂 |
模型热更新
新 LoRA 上线不想重启全集群:
- 放到共享 NAS 的
loras/,ComfyUI 下次用 LoraLoader 时自动扫描(但可能要重启 UI 让列表刷新) - 用
POST /object_info不刷节点定义缓存——更彻底的办法是容器级 rolling restart
八、成本估算模板
做产品前先估算,避免上线一周烧光种子轮:
单图成本 = (GPU $/h ÷ 3600) × 单图秒数
假设 SDXL 一张 10s @ 4090($0.34/h):
单图 = (0.34/3600) × 10 = $0.00094
每千图 = $0.94
月流量估算:
DAU 1000、人均 5 图/天 = 5000 图/天
月 = 150,000 图
成本 = 150,000 × $0.00094 = $141/月(纯 GPU)
+ Serverless 溢价 1.5-3× = $210-420/月
Flux / Hunyuan 视频:
Flux 单图 ~30s,4090 → $0.003/图
Hunyuan 5s 视频 ~600s(含冷启),H100 → $2.8 × 600/3600 = $0.46/视频
对比产品收入:订阅 $10/月,每用户 200 图成本 = $0.19。毛利 98%——这就是 AI 图生意赚钱的底层算术。视频毛利薄得多。
九、监控与可观测
- 业务指标:QPS、P50/P95 延迟、失败率、用户 MAU
- 基础设施:GPU 利用率、VRAM 峰值、OOM 次数、冷启动率
- 成本:单图成本(按 GPU 秒算) vs 营收(按订阅/次付费算)
工具栈:Prometheus + Grafana(K8s 自建)、RunPod Dashboard(Serverless)、Langfuse / Helicone(如果串了 LLM 做 prompt 优化)。
十、合规与安全
- 内容审核:所有生成图过 NSFW 分类器(
Falconsai/nsfw_image_detection或阿里/微软云 API),违规不返回 - 人脸/身份:涉及人像合成必须有用户授权 + 数据删除机制(GDPR/个保法硬要求)
- 水印 / C2PA:2025 起多国要求 AI 生成内容标识,建议输出时加隐水印(invisible-watermark)
- 模型许可:Flux.1 dev 非商用;部分 Civitai Checkpoint 禁止商用——上线前把所有用到的模型逐一核查 license
- 日志脱敏:prompt 可能含用户 PII,存储前做脱敏/限定保留期
- 防 prompt 注入:过滤已知恶意 prompt(绕过 NSFW 过滤/生成违法内容的模板)
十一、上线 checklist
- ☑ 核心工作流测过 100+ 随机 prompt,失败率 < 2%
- ☑ 冷启动 < 30s(预热 + Network Volume + FlashBoot)
- ☑ P95 延迟记录并设告警
- ☑ 失败重试机制(最多 3 次,指数退避)
- ☑ 队列长度告警(超过某阈值自动扩容或拒流)
- ☑ NSFW / 暴力 / 政治敏感检测
- ☑ 所有模型 license 合规核查
- ☑ 用户数据 / 生成图保留策略明确(默认 30 天?)
- ☑ 单图成本监控,月预算告警
- ☑ 回滚预案:新版本 workflow/模型可快速切回旧版
- ☑ ComfyUI 不对公网;若对外,前面必须有鉴权 + 限流
- ☑ 流量高峰演练(同时 100 个请求,系统表现如何)
十二、反模式
- 不估算成本直接上线:月底账单 $3000 才发现模型参数没量化。
- 冷启动不优化:首张图 60s,用户全跑了。
- Serverless Min=0 用于高频产品:每次都冷启,付的每 1 秒里 30% 在加载模型。
- 把 ComfyUI 原生 UI 直接给用户:用户可以上传任意文件 / 装任意节点 / 执行任意代码,RCE 风险。
- 独占 H100 24×7 跑 MVP:日请求 < 100,$2000/月烧掉,应该用 Serverless。
- 模型不 pin 版本:社区 Checkpoint 作者更新 v11,你的产品画风悄悄变了还不知道。
- 全部 prompt 存日志:用户 PII 泄露风险 + 存储成本爆炸。
- 没跑压测就承诺 SLA:真流量 5× 峰值时才发现 VRAM 不够。
十三、本章小结
① 部署形态按流量决定:低频用 Serverless(RunPod/Replicate/Fal),中频用独占实例,高频 K8s 自建。
② 冷启动优化四件套:Network Volume + FlashBoot + Min=1 + Warmup——能把 60s 压到 3-5s。
③ 单图成本算式:
(GPU $/h ÷ 3600) × 单图秒数 × Serverless 溢价系数;SDXL 0.001/图、Flux 0.003/图、Hunyuan 视频 0.5/条。
④ 上线 checklist 少说 12 条(本章十一节),NSFW / 合规 / 水印 / 回滚预案一个都不能漏。
从第 1 章"什么是 Diffusion"到这一章"生产部署",你已经掌握了把 AI 生图从玩具变成产品的完整链路。Diffusion 模型技术日新月异,2025 年的 Flux / Hunyuan / Wan 到 2026 年可能就被超越——但工作流思维 / 参数直觉 / 工程架构这三样东西是跨代际的,掌握了就能跟上任何新模型。
下一步:挑一个你想做的产品场景(AI 写真 / 漫画上色 / 产品图生成 / 视频二创),把本书的工作流模板组合起来,用 ComfyUI 跑通原型,再按第 11-12 章搭成服务。三个月后再回头看,你会发现自己从"调参工"升级成了"AI 产品工程师"。
祝你出好图。