GPU API 技术参考与验收档案
模型目录、工作流矩阵、调度接口、性能基准与生产验收记录
阅读说明
本页保存完整技术契约、工作流矩阵、性能数据和生产验收记录,供 Proxy、Scheduler 与 GPU 工作流维护人员使用。首次接入请先阅读 GPU API 总览。
- Canvas Proxy API:登录会话、画布权限、积分与任务归属
- Partner API:独立导航、API Key、幂等键与服务端调用
- Proxy 视频类工具箱:视频换脸、视频脱衣、视频换人、视频姿势
- XCamShow Partner 视频 API:Bearer 鉴权、四种组合接口与完整 Python 示例
- XCamShow Partner 图片 API:图片换脸、图片脱衣、姿势切换、BFS 换头
- Proxy 图片类工具箱:图片换脸、FLUX.2 Klein 换脸/换头、Krea2 Turbo v2.5 图像编辑、图片脱衣、姿势编辑、BFS 换头、BFS 换身体、图片超分、图片换人
- 工具箱 API 总览
本文是当前 Infinite Canvas GPU 接口的权威索引。浏览器只调用同源 BFF /api/proxy/v1/*;BFF 校验登录会话、画布权限、积分预扣与任务归属后,转发到 Proxy /v1/*。COMFY8020_KEY、内部调度地址、GPU 实例地址、LoRA 路径和供应商结果 URL 均只保留在服务端。
DreamID-V 开发站短片试运行
video-face-swap-dreamid 适配器源码 SHA 为 4dd5898aba8a58349cf5c4b81c7388f43e4f9e74,画布工具模式及配置显示修复 SHA 分别为 0b87bb25aafde095d73a6731dec67542e6c5b4e5、b7eb34497821abe9ef7943bec2898a6a2e686c68;GPU 6 为 NVIDIA RTX PRO 6000 Blackwell Server Edition(97887 MiB)。输入为同一张 512px 人脸图与 1.5 秒 MP4;两个模式均输出 45 帧、30fps、1.5 秒 AAC 音频,首中尾关键帧已对照。结果并不代表 15 秒或多段质量通过。
| 模式/入口 | 输出 | 任务耗时依据 | GPU 6 显存依据 |
|---|---|---|---|
| faster / 画布 480p | 464×832,SHA-256 4b8b825d17b2fe68db815c00fce7528b09493af95d3ced72f778ea60312cc155 | NAS 输入/结果落盘相差约 115 秒;浏览器记录 2 分 03 秒 | 每约 0.5 秒采样 302 次,总显存最大 32854 MiB;采样文件见验证记录 |
| faster / 画布工具箱真实生成 | 464×832,与上行同一输出 SHA-256;画布刷新后可播放 | 浏览器画布记录 2 分 01 秒 | 每约 0.5 秒采样 183 次,总显存最大 32854 MiB;采样文件见验证记录 |
| dwpose / Partner 720p | 720×1280,SHA-256 63082dedf56502798f24bf0bf1d8e347aa01c7ca74ecfee941e763e5b5faca24 | NAS 输入/结果落盘相差约 13 分 13 秒 | 运行中一次观察约 58 GiB 总显存,非连续峰值,不得用于调度门槛 |
这里的显存为整卡总占用,包含同卡其他服务,不能解读成 DreamID 独占峰值;排队与 GPU 执行阶段尚未分别计时。正式站晋升前需独占窗口补测多段真实输入、连续峰值与阶段时延。原始样本与运行证据见 reports/dreamid-v-dev/VERIFICATION.md。
通用约定
- 所有浏览器请求都必须登录。创建任务需要
owner或editor画布权限;查询结果允许viewer;取消需要owner或editor。 - 计费请求必须带
X-IC-Operation-ID。同一 operation ID 不会重复创建任务;重复提交返回既有任务或 HTTP409。 - BFF 返回
x-ic-operation-id和x-ic-credit-status。异步创建通常为held,成功结果为settled,提交失败或确认取消为released,上游结果不确定时为unknown。 - 文生图 JSON 请求使用
Content-Type: application/json;图片编辑和/videos一律使用multipart/form-data,即使文生视频没有文件也不能改用 JSON 或 urlencoded。由浏览器或 HTTP 库生成 boundary,不要手写。 - multipart 中图片 part 必须携带真实的
image/*MIME;视频 part 必须携带受支持的video/mp4或video/quicktimeMIME。application/octet-stream和只伪造文件后缀不属于有效媒体声明。 - 公开
model只传稳定模型 ID。不得传 GPU 地址、工作流文件名、LoRA 文件路径、内部节点 ID或供应商凭证。 - HTTP
400表示参数不兼容,401/403表示会话或权限问题,404必须结合稳定code处理;409表示任务尚未完成或 operation 重放,429表示额度/限流,502表示上游响应或媒体校验失败,503表示模型或调度能力未配置。任务不存在与任务不属于当前用户统一返回task_not_found和相同文案,调用方不得据此枚举任务归属。
接口总览
| 方法 | 浏览器路径 | 用途 | 计费 |
|---|---|---|---|
GET | /api/proxy/v1/live | Proxy 进程存活探针 | 否 |
GET | /api/proxy/v1/ready | 必需配置与生成能力就绪状态 | 否 |
GET | /api/proxy/v1/health | 图片/视频模型及供应商健康汇总 | 否 |
GET | /api/proxy/v1/providers/status | 各模型依赖探测详情 | 否 |
GET | /api/proxy/v1/models | 获取模型、能力、可用状态及缺失原因 | 否 |
GET | /api/proxy/v1/krea2/poses | 获取公开 Krea2 姿势 LoRA ID | 否 |
GET | /api/proxy/v1/scheduler/status | GPU、显存、队列与工作负载只读快照 | 否 |
GET | /api/proxy/v1/scheduler/capabilities | 工作流 × GPU 部署和有效路由矩阵 | 否 |
POST | /api/proxy/v1/images/generations | 同步文生图 | 是 |
POST | /api/proxy/v1/images/edits | 同步参考图编辑 | 是 |
POST | /api/proxy/v1/images/generations/tasks | 异步文生图 | 预扣 |
POST | /api/proxy/v1/images/edits/tasks | 异步参考图编辑 | 预扣 |
POST | /api/proxy/v1/images/tasks/{id} | 查询图片任务(空 JSON 体) | 否 |
POST | /api/proxy/v1/images/tasks/{id}/cancel | 取消图片任务 | 释放或保持 |
GET | /api/proxy/v1/images/tasks/{id}/content?index=0 | 读取并校验图片结果 | 结算 |
POST | /api/proxy/v1/videos | 创建视频任务 | 预扣 |
POST | /api/proxy/v1/videos/{id} | 查询视频任务(空 JSON 体) | 否 |
POST | /api/proxy/v1/videos/{id}/cancel | 取消视频任务 | 释放或保持 |
GET | /api/proxy/v1/videos/{id}/content | 读取并校验视频结果 | 结算 |
模型发现与 GPU 状态
存活、就绪与供应商探测
GET /api/proxy/v1/live只确认 Proxy 进程可响应,返回{ "alive": true },不代表 GPU 或模型可用。GET /api/proxy/v1/ready检查必需配置与至少一个实际生成通道;部署探针应使用此接口而不是/live。GET /api/proxy/v1/health返回图片/视频 provider 汇总以及每个生成模型的ready、missing。GET /api/proxy/v1/providers/status返回底层依赖探测详情,用于配置诊断;不得把此接口中的单个通道状态替代/models的逐模型结论。
GET /api/proxy/v1/models
响应中的每个模型包含 id、capability、ready 和 missing;明星模型还包含 name、alias、modes 和公开 trigger。该接口返回中央 GPU 工作流、供应商模型及当前不可用渠道的全量动态目录,数量会随配置与供应商发现变化;下文中央 GPU 矩阵不是 /models 全量清单。客户端必须以 ready 为选择依据,并原样展示 missing 中的诊断原因,不得只按模型是否出现在数组中判断可用。文档站通过主站公开的只读投影动态展示 id、name、capability 和 ready;具体 missing 诊断仍只在登录后的同源 /models 返回。
正在从 GET /api/proxy/v1/models 读取实时模型目录…
上表在浏览器中通过主站只读投影实时请求当前环境的 /models;新增、下线或探测失败的模型不需要手工同步到本文。本文后续列出的中央工作流和性能矩阵只记录实现结构与实测数据,不能用来生成模型选择器,也不代表完整模型目录。
能力探测只能说明节点、模型资产和路由满足静态条件。中央工作流变更后还必须执行最小真实请求 canary;节点 schema 漂移或运行时参数缺失时,模型不得仅凭静态探测继续标记为可用。
查询参数 refresh=true 会刷新供应商/工作流探测,但不会绕过服务端鉴权。
GET /api/proxy/v1/scheduler/status
返回物理资源、ComfyUI 实例、显存、利用率、运行/等待数量、工作负载和当前用户可见的归属聚合。refresh=true 或 force=true 绕过 Proxy 短缓存。响应不含原始实例 ID、主机地址、任务提示词和内部任务 ID。
GET /api/proxy/v1/scheduler/capabilities
返回工作流部署状态与实际路由矩阵。只有管理员的 refresh=true 会触发中央调度器深度探测;普通用户仍读取缓存。字段语义详见 API 响应约定。
图片生成
文生图
同步与异步入口使用相同 JSON:
{
"model": "krea2",
"prompt": "电影感人像,柔和轮廓光",
"size": "1024x1536",
"n": 1
}model、prompt必填;n默认为1。size是否生效由模型决定。Krea2 的 Proxy 长边上限 1536、每边限制到256–1536;GirlsLike 每边256–2048且要求 32 的倍数;固定工作流忽略客户端尺寸时,前端不应发送无效选择。krea2_pose仅用于krea2,可选值由/v1/krea2/poses返回;强度范围0–2。- 同步成功返回
{created, data:[{b64_json}]};异步创建返回{id,status:"pending",compute?}。
参考图编辑
POST /api/proxy/v1/images/edits 与 /images/edits/tasks 使用 multipart:
model=krea2-v21-edit
prompt=保持人物身份,只改变姿势
image=<FILE>
output_sizing=source_ratio
seed=12345
krea2_pose=doggy
krea2_pose_strength=1.0同名 image 字段可以重复。output_sizing 只接受 source_ratio 或 source_exact。当前中央 GPU 图片工作流约束如下:
| 公开模型 ID | 调度工作流 | 输入 | 关键参数 |
|---|---|---|---|
krea2 | krea2-t2i | 0 图 | size、n;当前文生图未透传 seed |
avatar | avatar | 1 图 | 人脸定位裁切 |
krea2-turbo-v25-edit | krea2-turbo-v25-edit | 1 图 | prompt、seed、output_sizing、可选 loras |
face-swap | face-swap | 2 图 | 图1底图,图2身份;普通模式 |
face-swap-pro | face-swap-pro | 2 图 | Pro 后处理 |
head-swap | head-swap | 2 图 | 图1底图,图2身份;普通模式 |
head-swap-pro | head-swap-pro | 2 图 | Pro 后处理 |
krea2-bfs-v1 | krea2-bfs-v1 | 2 图 | 图1底图,图2身份 |
krea2-bodyswap-v1 | krea2-bodyswap-v1 | 2 图 | 图1姿势场景,图2身体参考 |
krea2-girlslike-{alias} | girlslike-krea2 | 0 或 1 图 | 明星身份由模型 ID 固定 |
krea2-edit | krea2-edit | 1 图 | prompt |
krea2-v21-edit | krea2-v21-edit | 1 图 | output_sizing、seed、可选姿势 LoRA |
krea2-v21-multi-edit | krea2-v21-multi-edit | 1–4 图 | 图片顺序、output_sizing、seed |
krea2-i1.2-edit | krea2-i12-edit | 1 图 | prompt、output_sizing、seed |
muse-v35-undress | muse-v35-undress | 1–2 图 | 图1必填、图2可选,output_sizing、seed |
comfy-qwen-edit | qwen-image-edit | 1 图 | prompt |
comfy-faceswap | face-swap | 至少 2 图 | 图1底图,图2脸源 |
seedvr2-upscale | seedvr2-upscale | 1 图 | 4× 超分,长边上限 4096 |
krea2-identity-edit | krea2-identity-edit | 2 图 | 单阶段 Identity Edit;prompt 必填;图1场景,图2身份 |
krea2-person-swap-v1 | krea2-person-swap-v1 | 2 图 | 双阶段 BFS 换头 → BodySwap 换身体;输入顺序同上 |
flux2-klein-9b | flux2-klein | 3 图 | 三张有序参考图、提示词;固定输出 1 张 |
comfy-* 旧别名会在 Proxy 中规范化到同一工作流。任何新增 GPU 图片模型必须同时更新本表、模型发现接口、计费策略和本文档契约测试。
muse-v35-undress 接受 1 或 2 个按顺序提交的同名 image 字段:第 1 张为目标主体图,第 2 张为可选身份/身体参考图。只提交 1 张时,Proxy 省略 image_b,Scheduler 保留来源工作流自带的中性图 2 占位参考;显式提交第 2 张时才覆盖该节点并保留独立参考分支。0 张或超过 2 张会返回 400。提示词固定在 Scheduler 权威工作流中,前端展示相同文本但不能覆盖它;当前提示词明确要求只重建原服装覆盖区域,保持脸、发型、体型、姿势、手、构图、背景、光线及所有非服装区域不变。权威模型链为 krea2_turbo_fp8_scaled → KNPV4.1_pre → identity_edit_v1_2 → Krea2EditModelPatch → KSampler 193:178 → VAEUtils Decode 193:300,API 只保留 SaveImage 186 一个最终输出。
ComfyUI 原始工作流画布
下列画布由 Scheduler 权威 workflow JSON 的真实节点和连线生成,不是手绘流程示意图:ComfyUI UI 格式保留原始画布坐标,API prompt 格式按真实依赖关系自动排版。每张图均提供可导入/审计的 JSON 快照;manifest.json 记录来源路径、节点数、连线数和 SHA-256。运行时生成的 Krea2 T2I 没有独立文件,因此快照直接对应 Scheduler _knp_t2i_graph,姿势与 GirlsLike LoRA 节点仍由服务端白名单在提交前动态插入。
Krea2 文生图基础画布
对应 krea2,也是 GirlsLike 文生图动态注入身份 LoRA 前的基础图。
GirlsLike Krea2 单图编辑画布
对应 krea2-girlslike-{alias} 的单图编辑模式;文生图模式使用上一张 Krea2 T2I 画布并动态插入明星 LoRA。
Krea2 单图编辑画布
Krea2 v2.1 单图编辑画布
Krea2 v2.1 多图编辑画布
Krea2 Identity v1.2 姿势编辑画布
Muse V3.5 一键脱衣画布
当前快照是从用户提供的 API JSON 按唯一最终输出依赖闭包裁剪出的 20 节点执行图:保留目标图与图2的独立编码/Conditioning 分支,模型链固定为 krea2_turbo_fp8_scaled → KNPV4.1_pre → identity_edit_v1_2 → Krea2EditModelPatch,仅执行 KSampler 193:178,再由 VAEUtils Decode 193:300 输出到唯一的 SaveImage 186。快照不包含重复保存、预览或与最终输出断开的调试节点。
Qwen 图片编辑画布
FaceSwap 换脸画布
SeedVR2 4× 超分画布
Krea2 Identity 图片换人画布
图片任务生命周期
// POST /api/proxy/v1/images/tasks/{id},body: {}
{
"id": "TASK_ID",
"status": "completed",
"created": 1780000000,
"data": [{ "url": "SERVER_OWNED_RESULT" }],
"compute": {
"kind": "scheduler",
"phase": "completed"
}
}状态使用 pending、completed 或 failed。生成页面应轮询任务接口,完成后通过 /content?index=N 获取字节;content 接口会重新验证图片可解码,编辑任务还会拒绝退化/错误页结果。取消响应的 status 为 canceled、cancel_requested、not_cancellable 或 not_supported,客户端不得把后面三种显示成已取消。
GPU 视频生成
POST /api/proxy/v1/videos 只接受 multipart。纯文生视频没有文件时也必须按 multipart 提交所有标量字段;urlencoded 或 JSON 不属于该接口契约。通用字段如下:
model=minimax-h3
prompt=人物转身走向窗边
seconds=5
resolution_name=720p
ratio=16:9
fps=24
seed=12345
input_reference[]=<FILE>当前中央 GPU 视频工作流:
| 公开模型 ID | 调度工作流 | 输入 | 约束 |
|---|---|---|---|
minimax-h3 | minimax-h3 | 0–1 图 | 5–15 秒;纯文生模式按 resolution_name;24fps 与原生音频 |
minimax-h3-fl2v | minimax-h3-fl2v | 正好 2 图 | 图1首帧,图2尾帧;图片驱动输出当前跟随输入尺寸规则 |
minimax-h3-l2v | minimax-h3-l2v | 正好 1 图 | 单图作为尾帧;图片驱动输出当前跟随输入尺寸规则 |
minimax-h3-r2v | minimax-h3-r2v | 1–4 图 | 参考生视频;图片驱动输出当前跟随输入尺寸规则 |
minimax-h3-dasiwa-t2va | minimax-h3-dasiwa-t2va | 0 图 | DaSiWa C-MMH3-16 文生音视频 |
minimax-h3-dasiwa-i2va | minimax-h3-dasiwa-i2va | 正好 1 图 | 单图作为首帧 |
minimax-h3-dasiwa-fl2va | minimax-h3-dasiwa-fl2va | 正好 2 图 | 图1首帧,图2尾帧 |
minimax-h3-dasiwa-l2va | minimax-h3-dasiwa-l2va | 正好 1 图 | 单图作为尾帧 |
minimax-h3-dasiwa-ref2va | minimax-h3-dasiwa-ref2va | 1–4 图 | 多图人物、场景、风格或物体参考 |
scail2-person-swap | scail2-person-swap | 1 图 + 1 视频 | 人物图 ≤30MB;MP4/MOV ≤500MB;视频须含可解码音轨 |
ltx2.3-10eros-video | ltx-video | 0–1 图 | 720p/1080p;seconds、fps、横/竖/方形 |
MiniMax H3 文/图生视频画布
MiniMax H3 首尾帧画布
MiniMax H3 多图参考画布
SCAIL-2 视频换人画布
LTX 720p 文生视频画布
LTX 720p 图生视频画布
LTX 1080p 文生视频画布
LTX 1080p 图生视频画布
MiniMax H3 的 resolution_name 并非所有模式都具有相同语义:纯文生模式按所选档位输出;当前生产回归中,718×1280 图片驱动的 FL2V/L2V/R2V 即使请求 480p 仍输出约 1440×2560,而无图 T2V 的 480p 输出为 640×352。调用方应把图片驱动模式视为跟随输入图尺寸规则,不要以请求档位预分配固定输出尺寸;该观测不是供应商长期 SLA。
MiniMax H3 DaSiWa 输入路由与真实 GPU 复验
画布按输入图片数量实时筛选模式:1 图可选 I2VA、L2VA、REF2VA;2 图可选 FL2VA、REF2VA;3–4 图只可选 REF2VA。REF2VA 的产品契约是 1–4 张参考图;超过 4 张时应提示精简素材。前端不得展示与当前拓扑不匹配的模式,也不得把多图静默截断后提交给单图模式。
候选提交 78e61ce0b0a7979da053fcb5cb50441300c52ab2 在生产 Proxy → Scheduler → vps66 链路完成固定参数 canary:480p、9:16、5 秒、24fps、seed 20260905。能力探测确认 vps66 的 8 个 RTX PRO 6000 Blackwell 实例对 I2VA、FL2VA、L2VA、REF2VA 均为 routed + ok。以下 50000 MiB 仅为 Scheduler 配置门槛,不是实测显存峰值;本轮没有 200ms 设备遥测,因此不填写峰值。
| 拓扑 | 模型 | 任务 ID | 排队 / GPU 执行 | 输出验证 | 视觉结论 |
|---|---|---|---|---|---|
| 1 图 | minimax-h3-dasiwa-i2va | ee627254119a460ca35eb870bb45941b | 4.275s / 110.054s | MP4,686155 bytes;5 帧抽样 | 身份、服装、肤色、背景稳定,转身连续,通过 |
| 2 图,同一角色首尾帧 | minimax-h3-dasiwa-fl2va | 499339cc608640f991528abe67e514bb | 4.943s / 401.101s | H.264 + AAC,1280×704,24fps,5.175s,2343415 bytes | 身份和服装连续,首尾构图转换自然,通过 |
| 3 图 | minimax-h3-dasiwa-ref2va | c862d46cd565477388491cd8c54ce226 | 7.336s / 407.372s | H.264 + AAC,1280×704,24fps,5.175s,2255528 bytes | 主角色身份、服装、背景和转身动作连续,通过 |
L2VA 补充单样本:直接调用 Scheduler /v1/minimax-h3-dasiwa(未经过本轮 Canvas/Proxy/积分链路),固定 mode=l2va、5秒、480p、9:16、seed20260905,任务 task-idem-b1265d8667ea1403aa9936b3762e6561455b6c67473b3cbe245ca5e1f3786076 成功于 vps66:8189。排队5.244秒、GPU执行67.675秒;实际输出H.264/AAC、352×640、24fps、124帧、5.175秒、714853 bytes,全量解码退出0。输出SHA256 e833f84b317e602e575d3eee2c159f16227ce35934e6ca9277e3d7608fa8d155。已查看源图、5帧联系表和最后可解码画面,身份/服装/背景基本一致,无明显重影或肢体破损;仅此中性单样本的抽样视觉检查通过,不代表全场景时序质量。
运行镜像 infinite-canvas-scheduler:51f522830d5373f921694abb99dd390f9c914ae2,运行容器基础工作流 /app/workflows/minimax-h3-dasiwa.json SHA256 f56452d2bb97e19d5bb31e2c006cf2cc8b4afc6156455a5414009cc5e13b6682。输入SHA256 c56b08fa77aca4fa12248b7c936698bfc1e7c29a5fdd8072c0148508f1d9aee9。200ms设备遥测在任务窗口内采到GPU1共342条,基线36570 MiB、设备峰值76565 MiB;其他卡采样利用率未见非零,但未建立独占租约,不能认定模型独占峰值或稳定容量。证据:ecs110 /tmp/ic-l2va-submission.json、/tmp/ic-l2va-result.mp4、/tmp/ic-l2va-contact.png、/tmp/ic-l2va-tail.png;vps66 /tmp/ic-l2va-acceptance/telemetry.csv 与 summary.json。本次采样进程已停止;未据此修改调度显存门槛。
另一次 FL2VA 任务 edfd53f96c534cfc81ea90f5701512cb 使用两个不同角色作为首尾帧,虽然链路完成(4.950s 排队、395.100s GPU 执行),但出现身份融合和早期帧畸变,视觉判定失败,不计入质量通过样本。这验证了双图模式不仅要校验数量,还应在提交前提示首尾帧保持同一角色;质量验收不得以 HTTP 200 或文件可解码代替。
创建返回外层 Proxy 任务 ID,后续只使用该 ID 访问:
POST /api/proxy/v1/videos/{id}:使用空 JSON 体查询,返回pending、completed或failed。POST /api/proxy/v1/videos/{id}/cancel:返回真实取消结果。GET /api/proxy/v1/videos/{id}/content:成功后流式读取视频并完成积分结算。
图片与视频的公开任务查询统一使用 POST 和空 JSON 体;Proxy 内部查询入口也以 POST 为 OpenAPI 权威方法。旧内部 GET 路由只保留兼容且不出现在 OpenAPI 中,浏览器 BFF 对查询路径的 GET 固定返回 405 / method_not_allowed 与 Allow: POST。
供应商 GPU/API 视频模型也复用这四个公开生命周期接口,但其模型参数与参考媒体限制以模型发现结果及前端对应模型配置为准;不得直接调用供应商任务地址。
超时、重试与机器可读错误
- 同步图片接口可能因上游 OOM 返回
502,也可能先被网关以504结束等待而上游仍在执行。5xx或客户端超时不证明请求未执行,不要更换 operation ID 盲目重提;预计长于网关等待窗口的工作优先使用异步/tasks入口并以原 operation ID 恢复。 - Proxy、边缘网关和供应商各有独立超时,部署值可能不同;单次观测到的等待秒数不是稳定 SLA。
image_output_local_black_collapse表示图片通过了上游执行但被本地质量校验判定存在大面积局部黑块。其 HTTP 状态为502,通常需检查工作流输出或输入组合,而不是反复下载/content。404 / resource_not_found:路径、能力或受保护资源对当前用户不可见。404 / model_not_found:请求的模型不存在或当前用户不可见。404 / task_not_found:任务不存在或不属于当前用户;两种情况的状态、code 和文案完全相同,防止任务枚举。404 / VIDEO_TASK_MAPPING_MISSING:已确认归属的外层视频任务丢失 Proxy 映射;响应带 operation ID,客户端可停止宽限轮询并提示重新生成。405 / method_not_allowed:图片或视频任务查询误用了GET;改用POST,不应重建任务。
Proxy 到中央调度器
以下接口仅供 Proxy 使用,要求 Authorization: Bearer <COMFY8020_KEY>,不对浏览器开放:
| 方法 | 内部路径 | 说明 |
|---|---|---|
GET | /v1/gpus | 原始 GPU、实例、队列与 workload 清单 |
GET | /v1/capabilities?endpoint=...&refresh=true | 节点/模型能力与有效路由 |
POST | /v1/{workflow} | 提交已登记工作流;JSON 或 multipart 由工作流定义 |
POST | /v1/images/tasks/{id} | 查询图片任务;内部旧 GET 仅兼容 |
POST | /v1/videos/{id} | 查询视频任务;内部旧 GET 仅兼容 |
POST | /v1/tasks/{task_id}/cancel | 请求取消中央任务并返回 canceled 确认位 |
Proxy 向调度器提交时附加经过签名的任务归属信息;公开响应只保留清洗后的 compute:kind、phase、公开资源标签、GPU 型号和分辨率,不回传地址、Token、内部目录、原始 owner header 或工作流图。
性能与显存基准
所有由本项目中央 Scheduler 执行的 GPU API 在上线、工作流图变更、模型资产变更、推理参数默认值变更或 GPU 型号变更前,都必须重新实测,并把结果更新在本节。仅有能力探测成功、配置显存门槛或一次成功输出,不算完成性能基准。
统一测试口径
- 在
ecs110隔离验证目录对准备发布的同一候选提交发起请求;推理仍由登记 GPU 节点执行,不在本地 Mac 运行。 - 每个输入模式先冷启动 1 次,再连续测量至少 3 次热运行;图片固定记录代表尺寸,视频固定记录输入分辨率、输入时长、输出分辨率、输出时长与帧率。
- API 总耗时从请求开始计到结果字节完成并通过图片解码或视频容器/解码校验;异步任务同时记录排队时间、GPU 执行时间和总耗时。文档填写热运行
P50 / P95,样本不足 20 次时还必须列出每次原始值,不把 3 次样本伪装成统计稳定的 P95。 - 显存占用使用任务实际落卡的设备遥测。提交前记录空闲基线,执行期间至少每 200ms 采样一次,记录
峰值已用显存和相对基线增量;不得把 Scheduler 的ENDPOINT_VRAM_MB配置门槛写成实测峰值。 - 同卡存在其他运行任务、采样丢失、任务跨卡、结果校验失败或工作流自动重试时,该轮标记无效并重测。原始记录至少保留候选 commit、工作流 SHA、公开模型 ID、输入摘要、GPU 型号、采样间隔、每轮耗时、每轮显存峰值、输出校验和与退出状态。
- 供应商托管模型仍测试 API 总耗时;供应商未提供逐任务显存遥测时明确记为“供应商不可观测”,不填估算值。下表只覆盖本项目能够逐卡采样的中央 GPU 工作流。
中央 GPU 工作流基准矩阵(非模型目录)
配置门槛只用于调度前筛卡,不是测量结果。待测项在发布验收前必须以真实值替换;同一工作流存在文生图/图生图、单图/多图、不同分辨率或视频时长分支时分别追加行,不能合并成一个最好结果。
| 公开模型 / 用途 | Scheduler 工作流 | 必测输入模式 | 配置门槛 | API 总耗时 P50 / P95 | GPU 执行 P50 / P95 | 峰值已用 / 相对基线 | GPU 与样本 | 状态 |
|---|---|---|---|---|---|---|---|---|
avatar / YOLOv8 头像裁切 | avatar | 单张人物图 → 512×512 PNG | 15000 MiB | 单次生产闭环 14.25s;正式 P50/P95 待测 | 八任务观测 1.234–14.382s;正式 P50/P95 待测 | 待隔离窗口采样 | RTX PRO 6000 Blackwell;八卡能力核验 + 8 并发输出解码 | 生产闭环通过,正式基准待测 |
krea2 | krea2-t2i | 1024×1024 文生图;姿势 LoRA | 15000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-girlslike-{alias} | girlslike-krea2 | 文生图;单图编辑 | 36000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-edit | krea2-edit | 单图编辑 | 32000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-v21-edit | krea2-v21-edit | 单图编辑;姿势 LoRA | 36000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-v21-multi-edit | krea2-v21-multi-edit | 1 图;4 图编辑 | 40000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-i1.2-edit | krea2-i12-edit | 单图姿势编辑 | 36000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
muse-v35-undress | muse-v35-undress | 1024×1824 图1 + 默认图2 → 760×1360 | 36000 MiB | 18.903s / 20.987s | 14.082s / 14.113s | 33317 / 32448 MiB | RTX PRO 6000 Blackwell;1 冷 + 3 热 | 历史候选通过;当前生产回归需重验 |
muse-v35-undress | muse-v35-undress | 1024×1824 图1 + 1088×1472 显式图2 → 760×1360 | 36000 MiB | 20.475s / 20.857s | 14.256s / 14.813s | 34308 / 32896 MiB | RTX PRO 6000 Blackwell;1 冷 + 3 热 | 历史候选通过;当前生产双图被质量校验拒绝 |
comfy-qwen-edit | qwen-image-edit | 单图编辑 | 45000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
comfy-faceswap | face-swap | 双图换脸 | 45000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
seedvr2-upscale | seedvr2-upscale | 2×/3×/4× 超分;长边 4096 边界 | 80000 MiB | 待测 | 待测 | 待测 | RTX PRO 6000 Blackwell;待完成基准样本 | 能力与单次生产验收通过,基准待测 |
krea2-identity-edit | krea2-identity-edit | 单阶段双图换人 | 25000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
krea2-person-swap-v1 | krea2-person-swap-v1 | BFS 换头 → BodySwap 换身体 | 80000 MiB | 待测 | 待测 | 待测 | RTX PRO 6000 Blackwell;8 GPU 池 | 单次生产验收后补正式基准 |
flux2-klein-9b | flux2-klein | 3×512² 有序参考图 → 1248² PNG | 40000 MiB | 20.186s / 20.347s | 13.622s / 14.370s | 22815 / +22124 MiB | RTX PRO 6000 Blackwell;1 冷 + 3 热,另 1 次显存采样 | 候选实测通过 |
minimax-h3 | minimax-h3 | 文生视频;首帧图生视频 | 50000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
minimax-h3-fl2v | minimax-h3-fl2v | 首尾帧视频 | 50000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
minimax-h3-r2v | minimax-h3-r2v | 1–4 张参考图视频 | 50000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
video-face-swap | video-face-swap | 13.833s / 415 帧源视频 + 1 张人脸图 → 512×896 BFS PNG + 最终 MP4 | 80000 MiB | 单次生产闭环 318.747s(含排队);正式 P50/P95 待测 | 单次分配到完成 313.228s;BFS 中间图约 17.680s 可读 | 待隔离窗口采样 | RTX PRO 6000 Blackwell;单次生产组合任务 | BFS 与最终视频解码通过;正式基准待测 |
video-person-swap | video-person-swap | 13.833s / 415 帧源视频 + 1 张人物图 → 512×896 BFS+BodySwap PNG + 最终 MP4 | 80000 MiB | 单次生产闭环 338.577s(含排队);正式 P50/P95 待测 | 单次分配到完成 332.179s | 待隔离窗口采样 | RTX PRO 6000 Blackwell;单次生产组合任务 | 中间 PNG 与最终 H.264 MP4 解码通过;正式基准待测 |
scail2-person-swap | scail2-person-swap | 人物图 + 短视频;分段视频 | 70000 MiB | 单次热运行 297.221–297.222s;P50/P95 待测 | 单次热运行 297.218s;P50/P95 待测 | 49062 / +7520 MiB(单次热运行) | RTX PRO 6000 Blackwell;13.833s / 415 帧单样本 | 固定输入 A/B、显存采样与完整解码通过;正式基准待测 |
ltx2.3-10eros-video | ltx-video | 720p/1080p 文生;720p/1080p 图生 | 50000 MiB | 待测 | 待测 | 待测 | 待测 | 待测 |
| 公开模型 / 用途 | Scheduler 工作流 | 必测输入模式 | 配置门槛 | API 总耗时 | GPU 执行 | 峰值已用 / 相对基线 | GPU 与样本 | 状态 |
|---|---|---|---|---|---|---|---|---|
| 数据处理去字幕(PaddleOCR + STTN-DET) | video-clean / subtitle_remove | 硬字幕视频 | 32000 MiB | 46.91s(单次) | 46.91s(单次) | 4767 / 4081 MiB | RTX PRO 6000 Blackwell;生产单次 + 200ms canary | 生产 VDE → Scheduler → GPU 闭环通过;样本判定 uncertain,原视频保持不变 |
| 数据处理去水印(精确轮廓 + DiffuEraser) | video-clean / watermark_remove | 稳定文字/图标水印视频 | 32000 MiB | 306.794s(生产单次,含排队) | 306.548s(生产单次) | 待补独立显存采样 | RTX PRO 6000 Blackwell;1280×720、477 帧、30fps | 生产 VDE → Scheduler → GPU 闭环、自动定位、完整解码、关键帧视觉与原 AAC 音轨通过 |
当前生产只读遥测确认 Scheduler 能返回逐卡总显存、空闲显存、利用率、队列和工作负载;该快照不是基准结果。采样时观察到 8 张 GPU 均有运行任务且合计仍有大量排队任务,因此没有用受污染的并发数据填写上表。正式基准应在隔离、无其他任务占卡的窗口执行。
最新生产回归(单次结果,不是正式基准)
生产回归覆盖 23 个模型/输入用例,17 个通过、6 个失败;8 个只读接口均返回 200。下列耗时是各用例单次端到端观测,只覆盖最短视频时长,不具备排队时间、逐任务 GPU 执行时间、200ms 逐卡显存、候选 commit 与工作流 SHA 等正式基准字段,因此不得写入上表的 P50/P95:
| 用例 | 结果 | 单次总耗时 |
|---|---|---|
krea2 同步文生图 / 异步文生图 / 姿势 LoRA | 通过 | 22.747s / 24.249s / 15.817s |
krea2-girlslike-iu 文生图、krea2-girlslike-lyf 异步文生图 | 通过 | 21.022s / 19.947s |
krea2-edit 单图编辑 | 通过 | 30.959s |
comfy-qwen-edit / comfy-faceswap / seedvr2-upscale | 通过 | 24.404s / 138.077s / 26.837s |
flux2-klein-9b 三图合成 | 通过 | 28.429s |
minimax-h3 T2V / FL2V / L2V / R2V(均最短 5s) | 通过 | 62.949s / 88.910s / 104.444s / 129.877s |
scail2-person-swap(约 4s 且含音轨) | 通过 | 94.941s |
ltx2.3-10eros-video(最短 5s) | 通过 | 435.652s |
krea2-v21-edit / krea2-v21-multi-edit / GirlsLike 单图编辑 | 失败:节点 792 缺必填输入 | 6.823s / 5.058s / 7.400s |
krea2-i1.2-edit | 失败:提交路径引用未定义 image_b | 0.366s |
muse-v35-undress 双图 / krea2-identity-edit | 失败:image_output_local_black_collapse | 51.926s / 30.411s |
muse-v35-undress 单图在本轮通过(30.043s),但双图以多组图对、尺寸和 seed 重试仍被同一质量规则拒绝;krea2-identity-edit 也出现相同回归。历史候选基准保留用于追溯,不代表当前生产行为。原始记录进入仓库并包含必要的脱敏输入与退出状态之前,本节只作为问题复现摘要。
video-face-swap 本次生产验收使用 Scheduler 候选 92da340c29f2a3f9dfedc69fb4c1102a1854406e、视频创作台候选 86d7ac802ae7bd70dcc25ab27cf019f74e79293b 和工作流 SHA-256 5a592ae7e036b3f1efa6219a75ab000d4f2eb976897ebcac8adcc39be2cb0c00。任务 task-4eea370c817548d78d3cedd63f007adc 落到 NVIDIA RTX PRO 6000 Blackwell Server Edition;输入为 13.833s、415 帧竖版视频与 1 张 PNG 人脸参考图,提示词 the woman is dancing,seed 77。排队 5.519s,分配后约 17.680s 得到 512×896 RGB PNG BFS 中间图,分配到最终完成 313.228s,最终 H.264 MP4 和中间 PNG 均通过媒体读取与解码。该轮没有 200ms 逐卡显存采样,也不足冷启动加 3 次热运行,因此显存与稳定 P50/P95 保持待测,不以 80000 MiB 调度门槛冒充峰值。
video-person-swap 的尺寸链修复使用 Scheduler 候选 65ac7f96c75e69eb566fc8e28622d30b6e0d83ed 和工作流 SHA-256 7c09a7948c65ff0b0e1f6bd04a2e913c3c05c25b67867a41fbc30705b517764c。生产任务 task-8c5fb7ce8c4b47cca1511b645dfa0abf 落到 vps66:8194 的 NVIDIA RTX PRO 6000 Blackwell Server Edition;输入为同一 13.833s、415 帧竖版视频与 1 张 PNG 人物参考图,提示词 the woman is dancing,seed 77。排队 6.398s、GPU 分配后运行 332.179s,输出 512×896 RGB PNG 的 BFS+BodySwap 中间新首帧及最终 H.264 MP4,两者均通过读取与解码。该单次生产闭环不作为稳定 P50/P95 或显存峰值。
avatar 使用主站候选 98ee8990cd94232d524ecc445f20cbc31ae5f1cd、Scheduler 候选 d5a64225d4dbf482e1cafa565239deb15a3790b5 和工作流 SHA-256 d17fb81664430bddcf95d0f4613b0a2a60ca49d2ba7f38b6e48a5d9a58eb2eac。固定输入为 1024px 宽人物肖像 JPG;能力刷新确认 vps66:8188–8195 八个实例全部 routed + ok。并发提交 8 个任务的排队原始值为 20.500 / 33.474 / 80.755 / 50.389 / 82.619 / 60.664 / 66.909 / 69.600s,GPU 执行原始值为 3.315 / 14.382 / 1.234 / 5.698 / 3.753 / 1.835 / 2.831 / 3.438s;八个结果全部解码为 512×512 RGB PNG,单文件 600126 bytes。随后通过生产 Proxy 的 POST /v1/images/edits/tasks 完成一次端到端提交、轮询、OSS 持久化闭环,总耗时 14.25s。该时段存在其他 GPU 任务,故数据只证明八卡路由能力和输出契约,不填写显存峰值或稳定 P50/P95;原始 Scheduler 任务记录保存在 ecs110:/home/gy/avatar-canary-report.json。
video-clean Worker canary 使用 Scheduler 候选 06d674809a8a92fbb1d2383635975e14312584eb、工作流 SHA-256 240116061f31cce9e748effe65e2ef0f4dd1b6a0c0584caca76a43b42a00bf32 和固定 VSR 镜像摘要 sha256:7a9c720c0491f129ab39bffa6ca59b736dfcdab0350fe871005624fc8b6fe99a。在队列为空的 vps66 GPU 7(NVIDIA RTX PRO 6000 Blackwell Server Edition)以 nvidia-smi -lms 200 原生 200ms 循环采样:去字幕输入 SHA-256 4c1f33de3957436dde22dcecf4e19c1ecf8252f5c544ecdb6f565b44e26d0ff6(1280×720、240 帧、30fps),新容器总耗时 47.77s,239 个显存样本的基线/峰值为 686/4767 MiB,输出 SHA-256 bcdaf73df4a6a0d54f81459876a8ce4b6129942719461261a0e6172a0d4f8be8,解码为 1280×720、30fps、8.034104s,manifest 严格解析为 cleaned,detector/restorer 为 PaddleOCR 2.10.0 / STTN-DET。去水印输入 SHA-256 202f98b87c327cdb6b0b689ef48027d58f7ea2461ada8aa44dc063598f7e326b(640×360、92 帧、29.97fps),新容器总耗时 38.32s,192 个显存样本的基线/峰值为 686/3669 MiB,输出 SHA-256 afc03e09dd5417ea1c487faa18f713dc366aa78e8c035db335dd6cb827248156,解码为 640×360、29.97fps、3.069736s,manifest 严格解析为 cleaned,detector/restorer 为 PaddleOCR 2.10.0 / ProPainter。以上记录证明两套独立 Worker 模型和显存峰值,不冒充尚未启用生产路由后的 API 排队/GPU 执行/P50/P95;原始记录保存在 GPU 主机 /opt/vde-gpu-cleaner/canary/06d674809a8a/。
去水印链路升级使用 Scheduler 候选 8cd88a9aabc3c1776247ee371c33c5bd12c43606、同一工作流 SHA-256 240116061f31cce9e748effe65e2ef0f4dd1b6a0c0584caca76a43b42a00bf32、固定 VSR 镜像摘要 sha256:7a9c720c0491f129ab39bffa6ca59b736dfcdab0350fe871005624fc8b6fe99a 与 DiffuEraser 提交 8e6f279ac7531e27ad1849c6f8dab5372a8597e7。固定输入 SHA-256 5c1ad77bbca0a2ca421ac637ae4887f1a2171ede762a6ddd910d8a38c0b48894(1280×720、477 帧、30fps、15.9s),空闲卡单次全片运行总耗时 307.714s,其中 DiffuEraser 推理 261.924s;输出 SHA-256 c1ad471762599d4901fb1ae968b07dab0acef19d991e9a8fb1f30e6ae8fee0d2,文件 8202477 bytes,完整视频解码通过并包含 15.893s、746 帧 AAC 原音轨。严格 manifest 判定为 cleaned,488/488 帧覆盖完整,自动检测命中一组上下叠加水印,restorer 记录为上述 DiffuEraser 固定提交;1、4、8、12、15 秒关键帧检查确认水印消失,运动头发与背景纹理连续,未出现矩形模糊块。该次没有取得可靠的逐卡显存时序,因此显存列保持待测,不以 32000 MiB 调度门槛或受其他进程污染的宿主机总显存冒充峰值。原始结果保存在 GPU 主机 /mnt/cypher/model-store/diffueraser/experiments/integrated-engine-full/。
升级后的生产闭环任务 task-idem-1e04117b8a4fd8e9b21d98880f76e2e2a9a434a67bcf5ae3d7c34a79f9d3826e 经 ecs110-us Scheduler 落到 vps66 GPU 0;排队 246ms、运行 306548ms,严格 manifest 为 cleaned,488/488 帧覆盖完整,restorer 为同一 DiffuEraser 固定提交。生产产物 SHA-256 6544d026ad7959e6c174625ac3cb60c90e3ee93118dd3960ef6b7a702e67f7b3,8200474 bytes,解码为 1280×720、477 帧、30fps、15.9s,并保留 15.893s、746 帧 AAC 音轨;1、4、8、12、15 秒关键帧复核通过。该记录证明现有 VDE / Scheduler 契约已经路由到新 Worker,不代表稳定 P50/P95,也没有补录未采到的显存峰值。
生产端到端验收使用 Scheduler 2a7aca09d86cf0bd571fd67372ce5e72ee319166、VDE e09f82824928681cdf598cb7faa6b38e0a29aaee 和 34.547s 的既有真实视频资产。八个 vps66:8188–8195 候选均经独立 Cleaner Bearer 数据面返回 ready,普通 Comfy API 仍使用原 19193–19200 隧道,Cleaner 上传/能力探测单独使用 19203–19210。去字幕任务 task-idem-ef3a6aca... 落到 vps66:8188,排队 5.69s、调度到完成 41.22s、总计 46.91s;去水印任务 task-idem-8019c34b... 同卡顺序执行,排队 4.62s、调度到完成 42.86s、总计 47.48s。两者均覆盖 842/842 帧、CUDA 执行并分别报告 STTN-DET / ProPainter;本样本没有高置信度命中,严格契约返回 uncertain 并保留原 Variant。首次启用前两条任务保留了 gpu_cleanup_capability_unavailable 失败原因与自动 retry 记录,修复部署后的新任务均一次成功。单次生产样本不足以形成统计分位数,表中 P50/P95 明确标注为单次观测。
flux2-klein-9b 使用 Scheduler 候选 fc6b2fdea52ff35b4e71e116d7c272184f3df82a 和工作流 SHA-256 c8faba9631872f4530792de1812a1163b541b8b7b2d27d89d8ddeff79abff7ac。输入为三张 512×512 RGB PNG,固定 4 步采样,输出均为 1248×1248 RGB PNG。首次运行的排队 / GPU / API 总耗时为 5.031s / 13.726s / 18.758s;三次计入热样本分别为排队 6.036s / 3.855s / 5.147s、GPU 13.622s / 13.501s / 14.370s、API 总耗时 20.347s / 17.873s / 20.186s。表中 P95 按三次热样本观测最大值记录,不外推为稳定分位数。另一次同输入模式的显存采样运行耗时 19.465s,GPU 执行 13.635s;vps66 物理 GPU 5 以约 100ms 间隔取得 232 个样本,空闲基线 691 MiB、峰值 22815 MiB、相对增量 22124 MiB,其余 7 张卡保持基线且全部 Comfy 队列最终为空。五个输出均完成 PNG 解码;热样本 SHA-256 为 62ada72f…a9e、70c5606e…249c、a8ced970…1366,显存样本输出为 07cbac10…348f。原始任务记录保存在 Scheduler /data/flux2-klein-benchmark-hot.json,显存原始样本保存在 vps66 ops/deployments/flux2-klein-9b-20260831-072430/scheduler-benchmark-vram-valid.csv。
muse-v35-undress 的 krea2_turbo + KNPV4.1_pre 最终 Scheduler 候选为 a3dae0d14f0aee75a041a0d4127c7225d408c500,已包含当前生产 Scheduler ca52d96964dfe684685422683c16ccad6d1e5a10。API 工作流 SHA-256 为 c73fb03f4f39cd7163272e725938dd5de3675dec8ace0ed90ddaa5d9804401b2,文档规范化快照 SHA-256 为 a67cd174776860564f8dc50a26fb813b026e6fa914ef12ae1f39504cf402cfd1,固定提示词 SHA-256 为 113b21b95e30e222f9f57dad6692b12b6ccfded65afd99e7eaca93fd00c43692。提示词把编辑限制在原服装覆盖区域和最小边界融合像素,保护已可见皮肤、脸、头发、手脚、姿势、构图、背景和光线;图2若不清楚显示同一成年人(包括中性占位图)则完全忽略。每轮 Comfy history 都核对到 krea2_turbo_fp8_scaled → KNPV4.1_pre → identity_edit_v1_2 → Krea2EditModelPatch → KSampler 193:178 → VAEUtils Decode 193:300 → SaveImage 186,恰好 20 个节点、1 个 KSampler、1 个 SaveImage,正向提示词确实接入 193:178,最终输出仅来自节点 186。
本次 API 总耗时按隔离 Scheduler 的 POST /v1/muse-v35-undress → /v1/tasks/{id} 轮询 → 鉴权 /view 下载并完成 PNG 解码 计量,不再把直连 Comfy 的 /prompt 时间冒充 Scheduler API 时间。单图分支锁定无其他任务的 vps66:8193(物理 GPU 5、内部 Comfy 19198,NVIDIA RTX PRO 6000 Blackwell Server Edition),使用图1 SHA-256 c1ed41ec1740c76f5a0a2a4397545af93a166d82664077b516aaa3c9df3caf11(1024×1824)与工作流默认图2 SHA-256 6d21ae0a265aabade9c0f37bd396b5dbad616d2475890a01d217ec4efc28074c(768×768)。seed 919156720936100 的冷运行排队 / GPU 执行 / API 总耗时为 3.424s / 14.362s / 22.085s;seed 919156720936101–919156720936103 的三次热运行分别为排队 2.599s / 2.521s / 2.602s、GPU 执行 14.113s / 14.049s / 14.082s、API 总耗时 18.903s / 18.760s / 20.987s。
显式图2分支锁定另一张已释放模型并确认空闲的 vps66:8195(物理 GPU 7、内部 Comfy 19200,同型号 GPU),使用相同图1与图2 SHA-256 9e6fdc552fb20b44155ea5bf943c891b5570e40d8af1a5ffa999be52a3b39d5a(1088×1472)。seed 919156720936300 的冷运行排队 / GPU 执行 / API 总耗时为 3.820s / 14.533s / 21.732s;seed 919156720936301–919156720936303 的三次热运行分别为排队 2.432s / 4.206s / 2.822s、GPU 执行 14.195s / 14.813s / 14.256s、API 总耗时 19.452s / 20.857s / 20.475s。
显存由 vps66 宿主机 nvidia-smi --loop-ms=100 直接逐卡记录真实时间戳:单图有效窗口 925 个样本,间隔 P50 / 最大值 100 / 107ms,卸载基线 / 峰值 / 相对峰值为 869 / 33317 / 32448 MiB;显式图2有效窗口 944 个样本,间隔 P50 / 最大值 100 / 108ms,对应为 1412 / 34308 / 32896 MiB。每轮 Comfy 队列最大 running 为 1、pending 为 0,未出现候选之外的 prompt ID。两分支共 8 个计入样本的输出全部通过 PNG 解码且均为 760×1360 RGB,逐轮文件哈希、像素哈希、任务 ID、prompt ID、实际图谱、原始计时与采样日志保存在 artifacts/muse-turbo-knp-a3dae0d/benchmark-final.json(SHA-256 1e5ca580237d31b471696694f21ee60adb5513ca0cbdad87a98ceade4c35a008)。样本均少于 20 次,表中 P95 是三次热运行的观测最大值,不表述为稳定分位数。
seedvr2-upscale 的生产集成验收使用 Scheduler 候选提交 77113f2e0bfd210547463d3f630402492e41c633 和工作流 SHA-256 ae70b47c99cdb1fc6cdb0ecb58da8912a6515b5af2b52490c0ea4061317383d2。vps66 的 8188–8195 八个实例均通过 10 类节点、2 个模型资产的能力核验;单次 2×、max_edge=512 小图请求落到 vps66:8192,任务记录为排队 5.34s、GPU 执行 6.75s、创建到完成 12.09s,输出解码为 512×916 RGB PNG(3828 bytes)。这次记录只证明路由、推理和输出校验闭环,未在 200ms 逐卡采样窗口内取得显存峰值,也没有冷启动加 3 次热运行样本,因此不填入 P50/P95 或显存列。
已撤回的 704×1248、双重模糊参考图候选曾进行一次效果 A/B:目标图 SHA-256 50e041608f6a9d54f84154f7c05934a5e8bc003bbefb55cc47503d279f78161f、源视频 SHA-256 91c79b237aa347c1bedfdcc8d03962d9a12c39883faa6db9443092aadda1e87c(1080×1920、415 帧、30fps、13.833333s、AAC 立体声)、98 词终态英文 prompt SHA-256 f4356d19ac82765ccdd70bffffc5028c45f91d2ab46384b0e9bc903164981547 和 seed 6384881630681871233。纯灰参考底基线输出 SHA-256 为 f96eceab5fa3d5256dfa3391decaa7dbcba84402ce45807929397953e63e0aea;双重模糊参考背景输出 SHA-256 为 d412bb1e1643a968a31c5cdd7c66d90dfd07890703ebcc98829e8288fab79d9a。五个等距抽帧的单组人工对照只观察到该已撤回候选的灰白人物描边减弱,不能外推到当前附件同源工作流。
该已撤回候选的 Scheduler 提交为 4a025d067d35143c694720109f001ea4a97a8162,原始工作流 SHA-256 为 da1b8c20fff33d0bedc1b8e18e7a8a9a600fe622e8c80f833867df442464f07c,文档规范化快照 SHA-256 为 05ea3ce19cdd9593c21f07bbf3c35575564c8f5f2d707a4d63629f546c3cedd9。在无其他排队任务的 vps66:8192(物理 GPU 4,NVIDIA RTX PRO 6000 Blackwell Server Edition)执行该工作流、相同输入和 seed 6384881630681871234,Comfy history 记录 GPU 工作流执行 741.790s;输出 SHA-256 723946d022ebf25303f4df8195e7f0ef430fe8919ab5acdd9e5150b5be67ca5b,探测为 H.264 704×1248、415 帧、30fps、13.833333s,并含 44.1kHz AAC 立体声音频。另一次与该执行图逐节点等价、仅 _meta.title 不同的候选运行记录总耗时 726.139s,在 GPU 4 上采集 2500 个显存样本,空闲基线 772 MiB、峰值 58244 MiB、相对增量 57472 MiB。这些数据只保留为已撤回候选的历史记录,不写入当前工作流的 P50/P95 或正式显存矩阵。
当前附件同源候选的 Scheduler 提交为 ca52d96964dfe684685422683c16ccad6d1e5a10,原始工作流 SHA-256 为 80b224cbafb38fa264983568b13976b5c186a1bb1fb086aca14438f18b2c3bdd,文档规范化快照 SHA-256 为 f17d4548f91ff6870956c668a5f833e2f425df83e2bee5a43771c4e712e574d2;manifest 核对为 70 个节点、119 条连线。内部尺寸为 512×896;Resize Image v2 原始参考图直接连接 CLIP Vision 与 WanSCAILToVideo.reference_image,图内默认提示词为 the woman is dancing、默认 seed 为 77。
新旧工作流固定 A/B 继续使用上述目标图、源视频、98 词 prompt 和 seed 6384881630681871233,均落在 vps66:8192 的物理 GPU 4。附件同源 A 输出 SHA-256 为 b62d2a4f0dc02db86dbc4b29e2ca0eb7a0c6adf4c64a5e826f9c7a001ff742f7,热缓存执行 297.631s;当时线上候选 B 输出 SHA-256 为 5942cae07715b5cb2a4bb02f6160ebf0f6c2711d824eab65d2e901bba2f341c9,冷执行 725.375s。两侧均为 H.264、415 帧、30fps、13.833333s 且含 AAC 立体声,完整解码退出码均为 0;A 为 512×896,B 为 704×1248。观察到 A 会更明显带入目标参考图的地板、门窗背景,B 对源视频场景的全帧 SSIM 更高(0.743695 对 0.708872)。该 A/B 证明两套图实际输出不同,不把单组场景指标外推为人物换人效果结论;耗时对比也因 A 命中 22 个缓存节点、B 未命中缓存而不视为受控性能基准。
同一附件图的单次显存采样 prompt 为 780e028d-c087-48ea-bca0-b3d38b34cfdb:队列等待约 3–4ms,直连 worker API 总耗时约 297.221–297.222s,Comfy 执行 297.218s。GPU 4 空闲基线 41542 MiB,绝对峰值 49062 MiB,相对增量 7520 MiB;1472 个样本的采样间隔中位数为 200.000ms、P95 为 202.000ms。输出 SHA-256 为 5df68c0b2467364e5cc0d6c3b9fad627aef9d12e1ea28669d0247c7a8c95cbf7,完整解码退出 0。该轮命中 24 个缓存节点,且执行中物理 GPU 5 短暂出现另一任务(GPU 4 无外来 prompt),因此只作为当前图的单次隔离落卡证据;冷启动加至少 3 次热运行及 Scheduler 端到端 P50/P95 仍待正式基准,不把这一次样本写成稳定统计。
8 卡与 16 实例容量判断
一次生产拥塞快照显示,65 个任务全部来自 scail2-person-swap:8 个运行、57 个排队,每张物理 GPU 正好运行 1 个任务并排队 5–6 个。取消全部任务后的空闲基线如下;卡号按生产 8188–8195 映射为 GPU 0–7。
| GPU | 总显存 | 拥塞时已用 | 拥塞时利用率 | 取消后已用 | 取消后利用率 | 拥塞时任务 |
|---|---|---|---|---|---|---|
| 0 | 97250 MiB | 41.3% | 100% | 0.8% | 0% | 1 运行 / 5 排队 |
| 1 | 97250 MiB | 52.2% | 100% | 0.8% | 0% | 1 运行 / 5 排队 |
| 2 | 97250 MiB | 44.5% | 100% | 1.0% | 0% | 1 运行 / 5 排队 |
| 3 | 97250 MiB | 47.2% | 100% | 0.8% | 0% | 1 运行 / 5 排队 |
| 4 | 97250 MiB | 41.3% | 2% | 0.8% | 0% | 1 运行 / 5 排队 |
| 5 | 97250 MiB | 41.6% | 100% | 0.8% | 0% | 1 运行 / 5 排队 |
| 6 | 97250 MiB | 52.2% | 100% | 0.8% | 0% | 1 运行 / 6 排队 |
| 7 | 97250 MiB | 45.6% | 100% | 1.0% | 0% | 1 运行 / 6 排队 |
Scheduler 为 SCAIL-2 配置的单任务门槛是 70000 MiB,并按物理 GPU 资源限制同卡并发。把同一批 8 张物理卡从 8 个 ComfyUI 实例改成 16 个实例,不会增加安全并发量,反而会让两个重任务争用同一张卡并增加 OOM 风险;只有扩到 16 张物理 GPU,才接近把该工作流吞吐翻倍。历史 5 个成功任务的 GPU 运行时间为 98.3s / 312.6s / 314.5s / 728.1s / 734.0s,中位数约 314.5s,但输入长度不一致,只作为容量告警,不写入统一基准矩阵。
本次 65 个任务来自视频创作台连续点击造成的重复提交。扩容决策先以修复提交反馈、防重复点击后的真实到达率为准:若修复后高峰仍持续让 8 张卡全部运行且队列等待超过目标 SLA,再评估增加 8 张物理 GPU;不以重复点击形成的 57 个排队任务直接证明需要扩容。
新增 GPU API 检查清单
- 在 Proxy 模型清单和工作流映射中登记稳定模型 ID。
- 在 BFF 访问策略中登记只读、同步计费、异步创建、查询、取消或内容归属规则。
- 明确请求格式、文件顺序、数量/尺寸/时长限制、超时、取消和输出校验。
- 给模型与能力探测保留真实错误,不把不可用模型伪装成可用。
- 按“性能与显存基准”的统一口径完成冷启动和至少 3 次热运行,填写实际耗时、逐卡显存峰值、原始样本和输出校验;不得沿用旧工作流或旧 GPU 的结果。
- 更新本文的接口总览、模型矩阵和基准矩阵,并更新
gpu-api-docs.test.ts覆盖;任何待测行都表示性能验收尚未完成。 - 运行
python3 scripts/sync-gpu-workflow-docs.py,提交对应 JSON、SVG 和 manifest;确认画布节点/连线 SHA 与 Scheduler 候选提交一致。 - 在
ecs110隔离目录验证同一候选提交,再按完整 Git SHA 窄部署和运行生产验收。
DaSiWa Turbo 加速验收
候选 Scheduler 99e1ee341d80d29eeb59bcc58e9b63626023764a:保持主模型与 DaSiWa 图,T2VA/I2VA/L2VA/FL2VA 启用通用 FL Turbo LoRA、8 步;REF2VA 保留无适配器、25 步,尚未完成其独立加速验证。
同卡 RTX PRO 6000 Blackwell Server Edition / GPU1 / ComfyUI 8189,I2VA、704×1280、5 秒、24fps、seed 77,使用同一张参考图和成年人物自然呼吸提示词:
| 指标 | 原 25 步 | Turbo 8 步 |
|---|---|---|
| Comfy 提交到完成观测 | 183.15 秒 | 72.26 秒 |
| 执行事件耗时 | 181.953 秒 | 70.233 秒 |
| GPU1 总显存采样峰值 | 47808 MiB | 74024 MiB |
单组顺序 A/B,Turbo 有节点缓存;不是冷启动对照、P95 或画布端到端承诺。2 秒采样包含常驻显存;其余卡采样时空闲。调度预算改为 80000,另有 4096 保留量,不冒充实测峰值。
两次 node_errors 为空、输出节点 2568 成功;ffprobe/ffmpeg 退出 0,H.264 704×1280、5.166667 秒。每条抽查 5 帧,身份/服装/背景稳定,未见明显拉伸、撕裂;完整时序、其他模式和长视频仍需补充验收。
原始图、输入引用、submission/history、逐卡显存样本、抽帧位于 vps66:/tmp/ic-dasiwa-turbo-canary/;命令、图 SHA 和回滚基线见 Scheduler docs/DASIWA_TURBO_VALIDATION.md。15 项单测通过,旧模板未修改。
生产复验
已按 GitHub main 的上述 Scheduler SHA 窄部署,scheduler_production_check=ok、production_runtime_check=ok。线上 Scheduler I2VA 实际排到 GPU4 / 8192,队列 6.065 秒、执行 137.008 秒,提交后观察到成功约 145.91 秒。真实入队图确认 Turbo LoRA 与 8 步生效;成片 704×1280、5.166667 秒,解码及 5 帧抽查通过。此项覆盖 Scheduler API,不包含浏览器、Proxy 持久化及积分闭环。旧镜像和完整运行环境已保留,回滚 Compose 配置校验通过。