seedvr2 · git:20261104.63e3f8e · 2026-11-04 · sha256 a4444b6d79278eb1
seedvr2 git:20261104.63e3f8eA
Immutable. This exact content never changes and is served at /api/v1/blob/a4444b6d79278eb1.
--- name: seedvr2 description: Use when packaging, running, validating, or reviewing official SeedVR2-3B restoration of robot observation video, its S3 workflow, or objective and visual evidence. --- # SeedVR2 video restoration Use this skill for the first-class `npa-seedvr2` batch tool and its evidence. Read these files before changing behavior: - `npa/src/npa/workbench/seedvr2/` - `npa/docker/workbench/seedvr2/REDISTRIBUTION.md` - `workflows/testing/seedvr2-video-restoration.yaml` - `docs/workbench/seedvr2.md` Also load `npa-cli-conventions`, `toolref-argv-contract`, `author-npa-workflow`, `real-components`, `solution-licensing`, `secure-image-build`, `gpu-selection`, `testing-conventions`, and `agent-visual-feedback` when their surfaces are involved. ## Ground truth - Source is `ByteDance-Seed/SeedVR` at `e4de8c24441a67e1b7df56abea10645059bb1185`, Apache-2.0. - Model is `ByteDance-Seed/SeedVR2-3B` at `37255ff8cccfb01071b87f635a5948ca8d53117c`, Apache-2.0 and public. - Runtime requires all four payloads and verifies the fixed sizes and SHA-256 values in `npa.workbench.seedvr2.schemas.MODEL_FILES`. - The real entrypoint is upstream `projects/inference_seedvr2_3b.py` under one-process `torchrun`, seed 666 and sequence-parallel size 1. - The candidate hardware contract is exactly one full-memory non-MIG H100 (`sm_90`, default) or explicitly selected B200 (`sm_100` with qualified native extensions), a digest-bound `NPA_TASK_IMAGE`, and the full NPA source revision baked into that image. A caller-supplied revision, tag, compatible image, MIG slice, or successful import is not capability evidence. - Model weights, customer video, outputs, credentials, and populated caches are runtime-only. No per-run model terms prompt is required for these public Apache-2.0 weights. Do not silently replace upstream inference with interpolation, sharpening, another restoration model, or a synthetic stub. The bicubic image exists only as an explicit review baseline. ## Operate ```bash npa workbench workflow validate-spec \ workflows/testing/seedvr2-video-restoration.yaml npa workbench workflow plan-spec \ workflows/testing/seedvr2-video-restoration.yaml --run-id seedvr2-plan npa workbench workflow submit \ workflows/testing/seedvr2-video-restoration.yaml \ --var bucket="<your-bucket>" \ --var seedvr2_input_uri="s3://<your-bucket>/inputs/low-resolution.mp4" ``` The canonical graph is `probe -> restore -> verify -> review -> quality_boundary`. Keep the CPU probe, GPU inference, digest-bound GPU identity/readback verification, and review stages separate. The final CPU boundary publishes advisory diagnostics but must retain `quality_qualified=false`, `sensor_truth_qualified=false`, and `downstream_use=review_only`; successful publication is evidence completeness, not restoration acceptance. Every command uses `--input-path`, `--output-path`, and `--run-id`; restore also receives mandatory `--probe-path` and must reject a changed run ID, input bytes, or media. Artifacts move through S3 and are create-only per object. A partial publication remains failure evidence; retry it under a new run ID and prefix. Source and output frames must stay within the reviewed 1920x1080 area budget; output dimensions must also preserve source aspect ratio and be divisible by 16. Inputs must contain at least three decodable frames; the CPU probe and restore input check reject shorter clips before model resolution or GPU inference. Configure the optional service with `SEEDVR2_TOKEN` and `SEEDVR2_ALLOWED_S3_ROOTS`. Keep authentication, request serialization, canonical unescaped storage-root authorization, local-MP4-only media decoding, and the purpose-specific credential-free subprocess environment allowlists. ## Evidence contract Retain source, degraded input, bicubic baseline, restored candidate, and light-degradation negative control as separate MP4s. Record exact commands, frame mapping, source/model/image/commit identities, timestamps, hardware, decoded media properties, and SHA-256 values. Verify S3 bytes after upload. Treat `verification.json` as artifact/runtime consistency evidence only; pair it with the platform workflow receipt that identifies the actual producer pod. Treat `quality-boundary.json` as a fail-closed use-policy record, not a passing quality certificate. It must bind the exact source/result/candidate hashes, fully decode both videos, require matching frame counts and rates, and report the temporal and motion-hallucination diagnostics separately. The existing temporal diagnostic is sensitive to all four retained quality-rejected B200 outputs at its unchanged defaults, but the calibration cohort is too narrow and correlated to make it blocking. The existing hallucination diagnostic passes all four and measures added motion rather than static invented detail. Keep both advisory until a separately frozen, independently labeled benign/adverse/diverse and held-out calibration supports enforcement. Never use either diagnostic to call generated texture sensor truth. For the pinned RoboPro `roboreal_all_80tasks` robot-kitchen asset, compare candidate and bicubic against the original high-resolution reference. Its real-world capture origin is unverified; the immutable quality pack describes synthetic footage, not independently authenticated physical-robot capture. Report per-frame, per-stratum, and aggregate LPIPS and SSIM; optical-flow warp error; bottle-mask centroid error and IoU. Keep all failures and negative-case regressions. Run matched, blinded image-capable annotation and calibrated VLM review. A presentation score cannot override objective or provenance failure. The review package must remain non-blended and visibly identify bicubic-left and SeedVR2-right. Never describe generated texture as recovered sensor truth. ## Limits SeedVR2 does not prove recovered geometry, camera calibration, policy success, or suitability as training ground truth. Upstream warns that heavy degradation, large motion, light degradation, and small inputs can cause incomplete restoration, unpleasant generated detail, or oversharpening. Preserve the source recording and state these limits in user-facing evidence. ## Publication and validation The image version remains `0.1.0-cu130-unbuilt` and `UNVALIDATED_PUBLICATION_TOOLS` must contain `seedvr2` until exact built-image scans, anonymous registry verification, real workflow evidence on the declared GPU, objective metrics, real VLM review, and independent review all pass for the same commit and digest. Use the repository interpreter: ```bash npa/.venv/bin/python -m pytest \ npa/tests/workbench/test_seedvr2.py \ npa/tests/cli/test_seedvr2_cli.py \ npa/tests/workflows/test_seedvr2_workflow.py \ npa/tests/docker/test_seedvr2_container.py -q npa/.venv/bin/python -m pytest \ npa/tests/guardrails/test_skills_index.py \ npa/tests/smoke/test_golden_eval_manifest.py \ npa/tests/orchestration/npa_workflow/test_catalog_doc_sync.py -q ``` Never report unit tests, a local image build, or the golden-eval declaration as real GPU, objective-quality, VLM, workflow, or publication evidence. ## Explicit conditioning and B200 contract H100 and `sample` remain the defaults. `restore --conditioning-mode posterior-mode` selects only upstream `vae.use_sample=false` in an owned copy of the pinned 3B config. Preserve the exact 3B weight pins, seed, entrypoint one-step/CFG 1.0 overrides, input and quality gates. Configuration hashes do not establish GPU execution or a quality improvement. Both upstream branches still consume the encoder wrapper's posterior sample draw; verify real post-encode RNG and downstream noise equality before a paired experiment. `--expected-gpu B200` validates the assigned device and baked native inventories; resource allocation stays in workflow `seedvr2_gpu` (default H100). Build with matching `90;100` FlashAttention and `9.0;10.0` Torch/Apex targets, qualify the actual immutable image and kernels, then freeze an encoder-only control before any candidate quality run. Private 7B evidence does not qualify this 3B path. Historical 3B quality failures and the held-out partition remain unchanged.