Repository navigation
[new-model] Open-H3-Regenerate-2K: 768P H3 draft to 2560x1440, served on the OpenAI video routes - #2035
[new-model] Open-H3-Regenerate-2K: 768P H3 draft to 2560x1440, served on the OpenAI video routes#2035aryan5v wants to merge 14 commits into
Conversation
…urve branches, refine sampler)
…with example and serving YAML
Merge Protections🔴 1 of 1 protections blocking · waiting on 👀 reviews and 🤖 CI
🔴 PR merge requirementsWaiting for
This rule is failing.
|
[Medium impact] The PR appears safe to merge, with one non-blocking cookbook filtering issue. Findings
Fix with agent prompt### Issue 1
docs-site/lib/cookbook-pages.ts:136
The new `backendModels` mapping makes the directory use the page's first tag, `"Video to video"`, instead of the recipe's super-resolution task. `taskLabel()` does not recognize that tag and falls back to `"Text to video"`. Users filtering for `"Video upscale"` therefore cannot find this model. Add a matching task label or use a first tag that maps to `"Video upscale"`.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
|
…mer instance attach() remembered the lazy proxy's id, so after the transformer was released and loaded again the new instance never got its 50 curve hooks and later requests ran without them. The branches now attach to the materialized module and mark that module, so each loaded instance gets its own hooks.
…P too The FSDP (DTensor) merge path still cast the adapter to the BF16 base before multiplying, so an FP32 adapter merged differently with FSDP on. Both paths now share one helper, which also moves the factors to the weight's device.
…ting comments FLASH_ATTN bypassed the cuDNN attention the refine stage selects; TORCH_SDPA keeps it.
FASTVIDEO_H3_ADALN_CACHE and FASTVIDEO_H3_ADALN_TABLE compute the AdaLN modulation with F.linear instead of the projection modules, so the Sharp curve hooks never ran and refinement silently lost all 50 branches. The pipeline now refuses both before loading the transformer.
…e Regenerate-2K refine With dit_cpu_offload and no layerwise offload, the refine stage never staged the transformer like the stock H3 stage does, so it could stay resident through the 2K VAE decode. It now moves it to the device for the refine and back to the CPU in finally, and releases layerwise-offload buffers there too.
The configurable recipe had no page, no backend-model mapping and no sidebar entry, so the directory treated it as example-only and the deployment link redirected to a missing path. The recipe task now groups under video upscale.
| "FastVideo/FastVideo-Minimax-FastH3-Preview-v0.2": "fasth3-preview", | ||
| "FastVideo/FastVideo-FastH3-4-step-Preview-v1-VSA-DataFree": "fasth3-4step", | ||
| "FastVideo/FastH3-OmniRef-NVFP4-QAD": "fasth3-omniref", | ||
| "Efficient-Large-Model/Open-H3-Regenerate-2K": "open-h3-regenerate-2k", |
There was a problem hiding this comment.
The new backendModels mapping makes the directory use the page's first tag, "Video to video", instead of the recipe's super-resolution task. taskLabel() does not recognize that tag and falls back to "Text to video". Users filtering for "Video upscale" therefore cannot find this model. Add a matching task label or use a first tag that maps to "Video upscale".
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs-site/lib/cookbook-pages.ts
Line: 136
Comment:
**Model gets the wrong task**
The new `backendModels` mapping makes the directory use the page's first tag, `"Video to video"`, instead of the recipe's super-resolution task. `taskLabel()` does not recognize that tag and falls back to `"Text to video"`. Users filtering for `"Video upscale"` therefore cannot find this model. Add a matching task label or use a first tag that maps to `"Video upscale"`.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Purpose
Adds NVlabs' Open-H3-Regenerate-2K as a video-to-video pipeline. It takes a 768P MiniMax-H3 draft and regenerates it at 2560x1440 in three refine steps. It is served through the OpenAI video routes (
POST /v1/videos/syncandPOST /v1/videos).The reference's dense BF16 forward (
standard_fwd) is the parity target. Its Sol-Engine path (Sol-Attn, MXFP8, CUDA graphs) and its fast 24-layer VAE decoder are not ported.Draft while we follow up on speed (NVFP4 decoder, FastH3 refine base) in stacked PRs.
Changes
OpenH3Regenerate2KPipelineinfastvideo/pipelines/basic/open_h3_regenerate_2k/. It reuses the MiniMax-H3 DiT, VAEs and community-LoRA path. The merged rank-576 refiner LoRA loads as a constructor-time adapter.fastvideo/models/upsamplers/minimax_h3_latent_upscaler.py);adaln_t_table;(1 - s0) * upscaled + s0 * noise;base_model/. The component loader also acceptsbase_model/<name>module paths.open_h3_regenerate_2k, with no workload type (none exists for video-to-video, same as Kandinsky6 SR).video_reference(the draft);data:video URLs stay refused, and local paths needserver.media_roots.docs/inference/open_h3_regenerate_2k.md, and a support-matrix row.Test Plan
pytest fastvideo/tests/pipelines/test_open_h3_regenerate_2k.py fastvideo/tests/entrypoints/test_openai_open_h3_regenerate_2k.py fastvideo/tests/layersstandard_fwdon one GB200, using the same draft, seed, prompt and noise.tests/local_tests/open_h3_regenerate_2k/test_upscaler_parity.py.pre-commit run --files <changed>.Test Results
CPU tests and pre-commit pass.
The transformer outputs are close but not bit-exact. The likely cause is the two different H3 implementations (diffusers' and FastVideo's), not the ported pieces.
Warm timings on one GB200:
Licences
base_model/, the refiner LoRA and the fast VAE.adaln_t_table.bin, which must be fetched fromComfy-Org/MiniMax-H3.Known gaps
Checklist
pre-commiton the changed files and fixed all issues