Skip to content

[H3 CI]: add video serving metrics and GPU energy [DO NOT MERGE] / 新增视频服务指标与 GPU 能耗(暂勿合并) - #2894

Draft
edwingao28 wants to merge 22 commits into
mainfrom
feat/h3-video-ci
Draft

[H3 CI]: add video serving metrics and GPU energy [DO NOT MERGE] / 新增视频服务指标与 GPU 能耗(暂勿合并)#2894
edwingao28 wants to merge 22 commits into
mainfrom
feat/h3-video-ci

Conversation

@edwingao28

@edwingao28 edwingao28 commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Description

Run H3 video benchmarks through InferenceX GitHub Actions → Slurm → H200, retaining original playable media, provenance, video/audio checks and measured GPU power/energy. Add opt-in closed-loop client concurrency and a bounded C1/C2/C4 smoke matrix using one two-GPU allocation.

通过 InferenceX GitHub Actions → Slurm → H200 执行 H3 视频测试,保留原始可播放媒体、来源信息、视频/音频检查及实测 GPU 功率/能耗。新增可选客户端闭环并发,以及复用同一次双卡分配的 C1/C2/C4 小规模测试。

  • Preserve serial baseline/candidate regression by default. Serving workers submit the next request after media download; validation runs separately. Retain every scheduled outcome, raw lifecycle timing and job ID, including failures and unfinished attempts. / 默认保留串行 baseline/candidate 回归。服务模式在媒体下载后提交下一请求,校验独立执行;保留每个计划请求的结果、原始时间和任务 ID,包括失败及未完成请求。
  • Run exactly four measured requests per concurrency with separate warmup. Reuse the existing supervisor, UUID ownership checks, media verifier and cleanup; stop later cells on failure. Resolve Slurm-assigned physical device minors to GPU UUIDs before launch. / 每档并发正式测量四次,预热单独记录。复用监督器、GPU UUID 归属检查、媒体校验和清理,失败后停止后续档位;启动前将 Slurm 分配的物理设备编号映射为 GPU UUID。
  • Export delivery latency, completion counts, throughput, observed client concurrency and optional deadline goodput. Integrate GPU-board energy once across overlapping requests. Retain prompt/seed/settings, model/runtime pins, memory samples and raw artifacts; unavailable measurements remain null. / 导出交付延迟、完成计数、吞吐、实际客户端并发及可选截止时间有效吞吐。重叠请求的 GPU 板级能耗只积分一次;保留输入、版本、显存采样和原始产物,缺失指标保持空值。
  • Keep the existing paired-result contract and portable reports. The serving matrix has its own raw summary/report; paired frontend export is skipped for this single-runtime smoke. / 保留现有配对结果契约与离线报告。并发矩阵提供原始汇总及报告;单运行时测试跳过配对前端导出。

Validation / 验证 — 30a8a65d839e67bb67e979f7e34987f82baa2696

  • Current-head Linux CPU CI: 555 passed, entry-shell syntax and workflow lint passed. Local relevant checks and incremental changelog validation passed; historical changelog entries remain unchanged. / 当前提交 Linux CPU CI 555 项通过,入口 shell 语法、工作流 lint、本地相关检查及增量 changelog 校验通过,历史条目保持不变。
  • Real two-H200 serving CI: 12/12 measured requests technically valid, zero failures, plus three separate benchmark warmups. Slurm 82338.0, worker-10, two allocated and two participating H200 GPUs; reused the prepared runtime. Allocation released after 54m33s. / 真实双 H200 CI:12/12 正式请求通过技术完整性检查,零失败,另有三次独立预热。Slurm 82338.0,节点 worker-10,分配及参与均为两张 H200,复用已有运行环境;54 分 33 秒后释放分配。
  • Original artifact: serving-smoke.json, report/index.html, per-request records, 15 original MP4s, telemetry and power reports. Offline verification checked all 106 file hashes, all 12 report video references, raw concurrency/latency arithmetic and independently integrated raw power samples. Fixed-input media hashes match; prior full-decode evidence was reused for identical bytes, with technical checks passing. / 原始产物含矩阵汇总、离线报告、逐请求记录、15 个原始 MP4、遥测及功率报告。本地核对 106 个文件摘要、12 个报告视频链接、原始并发/延迟计算,并独立积分功率采样。固定输入的媒体摘要一致,复用相同字节的完整解码证据,技术检查通过。

Same frozen workload at all three loads: MiniMax-H3 42ed227…, SGLang 71de97b…, TP1/Ulysses2, no DiT CPU offload, 50 steps, seed 11, one drum-taps prompt, 1344×768, 107 frames at 24 FPS (4.458 s decoded video), native 32 kHz stereo audio.

三档使用完全相同的固定负载:MiniMax-H3 42ed227…、SGLang 71de97b…、TP1/Ulysses2、关闭 DiT CPU offload、50 步、种子 11、同一鼓点提示词、1344×768、24 FPS 共 107 帧(解码视频 4.458 秒),原生 32 kHz 双声道音频。

Client concurrency / 客户端并发 Valid / 有效 Delivery median / 交付中位数 (s) Valid clips/hour, both GPUs / 双卡有效视频每小时 Mean two-board power / 双卡平均板级功率 (W)
1 4/4 119.50 30.12 1373.87
2 4/4 237.68 30.26 1378.11
4 4/4 297.69 30.27 1377.92

Latency is submission to downloaded media. Hourly throughput is normalized from the roughly eight-minute measured delivery window per cell, excluding preparation and warmup; it is not an hour-long sustained test. Board power covers first submit through last observed provider completion, includes intervening gaps, and excludes host/unselected GPUs. Energy is 163.88–164.18 kJ per valid clip. Increasing client concurrency did not materially increase observed throughput in this small sample; GPU-parallel batching is not established.

延迟为提交至视频下载完成。每小时吞吐由每档约八分钟的交付测量窗口换算,排除准备和预热,并非持续一小时实测。板级功率覆盖首次提交至最后观测到服务端完成的区间,包含中间间隔,不包含主机及未选 GPU。每个有效视频能耗为 163.88–164.18 kJ。本次小样本提高客户端并发后,观测吞吐基本不变,不能据此认定 GPU 批处理并行已实现。

Limits / 限制

Four samples per load do not establish P90/P95, sustained capacity or cross-hardware superiority. Queue/execution timestamps, actual batching, fixed offered arrival rates, multi-replica launch, calibrated perceptual quality and full deployment cost remain unavailable. Technical validity does not establish paired fidelity or release qualification. The matrix therefore retains ci_accepted=false and release_qualified=false even though the requested smoke passed. Earlier serial 8-second and 4-second evidence is retained separately.

每档四个样本不足以给出 P90/P95、持续服务容量或跨硬件优劣。排队/执行时间戳、实际 batching、固定请求到达速率、多副本启动、校准后的感知质量及完整部署成本仍不可用。技术完整性不代表配对保真度或发布验收,因此本次 smoke 通过后仍保留 ci_accepted=falserelease_qualified=false。历史八秒与四秒串行证据分别保留,不混入本次结果。

Keep DO NOT MERGE: draft PR, currently conflicts with main. Dashboard/database integration and release qualification remain outside this backend change.

保留 DO NOT MERGE:PR 仍为草稿,当前与 main 冲突。本后端改动不包含 dashboard/数据库接入及发布验收。

Related Issue

No linked issue. / 无关联 issue。

Type of Change

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other (please describe)

Checklist

  • I have tested my changes locally
  • I have updated documentation if necessary
  • For every change that can affect benchmark performance and every recipe addition or modification, I have appended a new entry to the physical end of perf-changelog.yaml and have not edited historical entries
  • Before merging via reuse, an authorized maintainer (OWNER/MEMBER/COLLABORATOR) has commented /reuse-sweep-run on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the sweep label will no longer automatically kick off new sweeps. Remove and re-add the label to force one.

通过 InferenceX GitHub Actions 和 Slurm 运行 H3 视频负载,复用已准备的环境并保留媒体、测量数据和报告。
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Thanks for the contribution! Please reach out to respective companies' CODEOWNER to fill in the latest PR_REVIEW_CHECKLIST.md before pinging core maintainer on Slack for review. In order for the signoff PR check bot to trigger, you must follow the PR_REVIEW_CHECKLIST.md template correctly, including the phrase As a PR reviewer and CODEOWNER, I have reviewed this and have.

For PR verification, add the full-sweep-fail-fast label (strongly recommended) to this PR — the benchmark sweep only runs on labeled PRs. Use full-sweep-enabled only if you need matrix jobs to keep running past a failure.

PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. See GitHub's docs on re-running failed jobs


感谢你的贡献!请联系相应公司的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,然后再在 Slack 上联系核心维护者进行审阅。为了触发 signoff PR 检查机器人,你必须正确遵循 PR_REVIEW_CHECKLIST.md 模板,包括保留英文语句 As a PR reviewer and CODEOWNER, I have reviewed this and have

如需进行 PR 验证,请为此 PR 添加 full-sweep-fail-fast 标签(强烈推荐)— 基准测试 sweep 仅在带有标签的 PR 上运行。仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled

PR 作者有责任确保合并后所有 GitHub Action 任务完全通过。 很多时候失败只是偶发抖动(flake),重新运行失败的任务即可解决。参见 GitHub 关于重新运行失败任务的文档

将 H3 工作负载的 changelog 条目关联到草稿 PR。
Comment thread experimental/video-generation/evaluator/mvp_runner.py Fixed
edwingao28 and others added 10 commits September 8, 2026 13:03
将 H3 冒烟执行状态与回归阈值分开,保留媒体、预热、测量和清理验证,并约束 H200 资源范围。
在 CI artifact 中保留 H3 环境准备记录和入口脚本,便于核验镜像来源及启动方式。
SGLang 镜像包含 setuptools-scm 生成且被忽略的版本模块;将该文件纳入固定哈希清单,同时继续拒绝其他意外 Python 文件及越界链接。
为 H3 HTTPS 请求显式设置 TLS 1.2 最低版本,保留系统证书信任和主机名验证。
从已记录的运行目录提交 Slurm 分配,并使用兼容的作业步骤查询字段。补充目录归属回归测试,保留严格的资源归属检查。
为调度器测试固定有效的 runner 名称,避免 GitHub 托管 runner 的显示名称影响本地调度器替身。
为 H3 运行时使用数字设备编号,并在导入 SGLang 前通过 CUDA 驱动核对有序 UUID,保留设备归属和遥测约束。延长有界 Slurm epilog 等待,避免资源已取消但清理尚未完成时误报。
在原有清理期限内等待已归属 H3 进程的 GPU 内存释放,仍拒绝未知或复用的进程身份,并保留超时失败。将 H200 示例主机内存改为实际运行验证过的 1 TiB。
按 GPU UUID 和进程 ID 核对遥测归属,允许附加的进程身份字段,同时拒绝重复、重叠、缺失或内存数值不一致的记录。失败报告保留原有清理状态并展示有效测量。
@edwingao28 edwingao28 changed the title [H3 CI]: run video workloads through Slurm / 通过 Slurm 运行视频负载 [DO NOT MERGE][H3 CI]: run video workloads through Slurm / 通过 Slurm 运行视频负载 Sep 9, 2026
新增固定的 8 秒、192 帧 H3 工作负载设置,保留 4 秒设置及现有分辨率、帧率和音频要求。验证请求协议与解码预期,追加性能变更记录。
新增分阶段 GPU 功率与能量校验、版本化前端结果契约和可信 CI 证据复用;复用既有 H200 A/A 结果,通过有预算上限的 Slurm 硬件检查保留来源与清理证据。
Comment thread experimental/video-generation/ci.py Fixed
Resolve the prepared Python path inside Enroot because its absolute symlink is invalid in the submission host namespace. Preserve early failure artifacts. Name and restrict public GitHub receipts explicitly; the CodeQL trusted-name heuristic had classified admission metadata as a secret.

在 Enroot 内确认 Python 身份,避免提交节点错误解析容器的绝对符号链接;保留早期失败制品。明确公共 GitHub 收据的命名和字段,修复 CodeQL 对 trusted 名称的启发式误判。
Accept NVIDIA PCI IDs with or without a hexadecimal prefix. Reclassify sealed raw inventory in a new export while retaining its original GitHub and Slurm identity; avoid allocating GPUs again for artifact interpretation.

兼容 NVIDIA PCI ID 的可选十六进制前缀。导出时复用已校验的原始硬件证据并保留原始 GitHub、Slurm 身份,避免仅为解释制品而再次分配 GPU。
将结果契约中的重放链接固定到已发布提交,确保下载后的双语文档可直接访问完整执行说明。
@edwingao28 edwingao28 changed the title [DO NOT MERGE][H3 CI]: run video workloads through Slurm / 通过 Slurm 运行视频负载 [DO NOT MERGE][H3 CI]: publish video metrics and measured GPU energy / 发布视频指标与实测 GPU 能耗 Sep 9, 2026
新增可选的 H3 闭环并发测试,记录请求交付延迟、结果计数和截止时间内的有效吞吐;并发 GPU 能耗只积分一次,保留串行默认行为及未校准状态。
@edwingao28 edwingao28 changed the title [DO NOT MERGE][H3 CI]: publish video metrics and measured GPU energy / 发布视频指标与实测 GPU 能耗 [H3 CI]: add video serving metrics and GPU energy [DO NOT MERGE] / 新增视频服务指标与 GPU 能耗(暂勿合并) Sep 9, 2026
新增单次分配内的 C1/C2/C4 并发烟测,每组四个测量请求,单独记录预热、失败、中断和原始视频。两卡模式只申请两张 GPU,保留既有配对回归行为。

def _port_available(port: int):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as probe:
probe.bind(("127.0.0.1", port))
预检仅验证冻结配置,实际进入已准备的测量容器后再加载功率积分依赖。补充隔离 Python 路径的启动检查。
以请求截止时间判断 watchdog 关闭连接导致的异常,保留服务端已报告的失败或取消结果;覆盖不同底层关闭异常。
两卡 Slurm 分配使用设备编号 4、5,而 NVIDIA 查询编号不同,导致容器入口报告找不到设备。按驱动的设备 minor 映射 UUID,再核对实际查询结果,避免把 Slurm 编号当作 NVML 编号。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants