Skip to content

Add GitHub benchmark workflow - #412

Open
jarcherNV wants to merge 5 commits into
mainfrom
dev/jarcher/benchmark-ci
Open

Add GitHub benchmark workflow#412
jarcherNV wants to merge 5 commits into
mainfrom
dev/jarcher/benchmark-ci

Conversation

@jarcherNV

Copy link
Copy Markdown
Collaborator

Adds a workflow-dispatch GitHub Actions job for the local demo benchmark harness. The job runs the standard LingBot and Omnidreams baseline/candidate benchmark suite, summarizes performance and quality metrics in the Actions summary, and uploads the generated benchmark artifacts for inspection.

Adds a workflow-dispatch GitHub Actions job for the local demo benchmark harness.
The job runs the standard LingBot and Omnidreams baseline/candidate benchmark
suite, summarizes performance and quality metrics in the Actions summary, and
uploads the generated benchmark artifacts for inspection.
@jarcherNV jarcherNV self-assigned this Aug 4, 2026
@greptile-apps

greptile-apps Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds an automated GPU benchmark workflow for the seeded OmniDreams quality scenario.

  • Installs the CUDA and Python benchmark environment and runs baseline and candidate jobs.
  • Writes performance and quality metrics to the Actions summary.
  • Trims caches and uploads generated benchmark artifacts.

Confidence Score: 4/5

The PR is not yet safe to merge because the benchmark summary remains incorrect and mutable external Actions can replace the reviewed runner code.

The workflow still looks up gen_fps even though the harness emits normalized FPS keys, and its four external uses: declarations remain pinned only to mutable tags or branches.

Files Needing Attention: .github/workflows/local-demo-benchmarks.yml

Important Files Changed

Filename Overview
.github/workflows/local-demo-benchmarks.yml Adds the benchmark workflow, but the summary still reads an unsupported FPS key and the external Actions remain mutable.

Reviews (5): Last reviewed commit: "Rename demo benchmark job and probe base..." | Re-trigger Greptile

else (((. * 10 | round) / 10 | tostring) + "s")
end;
.scenarios[]
| "| \(.id) | \(.status) | \(.wall_time_s | duration) | \(metric("gen_fps") | fmt) | \(metric("quality_score") | fmt) | \(metric("quality_similarity_score") | fmt) | \(metric("quality_psnr_db") | fmt) | \(metric("quality_rmse") | fmt) |"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Broken generation FPS lookup

When the benchmark summary reads a completed scenario, it queries gen_fps, while the harness records FPS under normalized keys such as pixel_fps_median_fps or wall_present_fps, causing the “Median gen FPS” column to report n/a even when FPS data was collected.

Knowledge Base Used: Local Benchmark Harness

echo "Detected GPU compute capability: ${compute_cap} -> sm_${arch}"

- name: Checkout
uses: actions/checkout@v4

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 security Mutable workflow action references

The workflow selects checkout, setup-proxy-cache, setup-uv, and upload-artifact through mutable tags or branches, allowing an upstream reference change to replace reviewed runner code and expose the checked-out repository or benchmark environment. Pin each action to a reviewed full commit SHA.

How this was verified: Each new uses: declaration resolves a tag or branch rather than a full immutable commit SHA.

Converts the local demo benchmark workflow from manual-only to an automatic,
non-blocking PR and merge-queue canary. The workflow now runs the shorter
30-second LingBot and Omnidreams seeded quality scenarios, keeps
baseline/candidate comparison for quality metrics, and still uploads the
benchmark artifacts for review.
@jarcherNV jarcherNV changed the title Add manual GitHub benchmark workflow Add GitHub benchmark workflow Aug 4, 2026
Narrow LingBot's pipeline encoder config to the concrete camera-control
encoder it already requires so Tyro can parse the full runner schema used by
the local benchmark canary.

Add a smoke test for the benchmark runner arguments to catch future CLI schema
regressions before they reach the benchmark workflow.
Remove LingBot from the automatic benchmark canary for now because the GitHub
runner cache volume does not satisfy LingBot's 200 GiB Hugging Face checkpoint
preflight.

Revert the LingBot CLI typing/test changes from the previous patch and keep
LingBot benchmark scenarios available for local/manual runs.
Rename the local demo benchmark workflow/check to Demo Benchmarks to avoid
confusion with the existing Omnidreams WorldLens canary.

Trim large uv cache directories before Actions cache upload, matching the
existing GPU canary pattern, and add a temporary non-failing DNS/TCP reachability
probe for the baseline artifact host.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant