95 lines
4.8 KiB
Markdown
95 lines
4.8 KiB
Markdown
|
|
# FL2VA Turbo
|
||
|
|
|
||
|
|
The hot runtime can keep both official LightX2V FL2VA Turbo adapters resident and switch them per request without rebuilding the packed NVFP4 base model.
|
||
|
|
|
||
|
|
## Variants
|
||
|
|
|
||
|
|
| API value | Official artifact | NFE | Video/audio shift | Schedule |
|
||
|
|
| --- | --- | ---: | --- | --- |
|
||
|
|
| `4step` | `minimax_h3_fl2v_turbo_4step_v1.1_768p_comfyui_bf16.safetensors` | 4 | 6/3 | Uniform shifted training-Euler |
|
||
|
|
| `8step` | `minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors` | 8 | 12/3 | Uniform shifted training-Euler |
|
||
|
|
|
||
|
|
Downloaded from Hugging Face revision `ec01fa4c86263832faa0bd1d6d8f36a281eaabb2`:
|
||
|
|
|
||
|
|
| Artifact | SHA-256 |
|
||
|
|
| --- | --- |
|
||
|
|
| 4-step v1.1 Comfy BF16 | `449d80f301ac571622c72e28b8fd72a4b3681b7a8df8a92f17c8f6ec43f56558` |
|
||
|
|
| 8-step v1.0 Comfy BF16 | `2339acdf19bfe123f46b971ea35d367a84adb85de43627e1eceafa5a5b2b111e` |
|
||
|
|
|
||
|
|
The older unversioned 744 MB adapters remain on Spark but are not loaded by the hot service.
|
||
|
|
|
||
|
|
## Implementation
|
||
|
|
|
||
|
|
Each official file contains 624 tensors covering 208 linear targets: four projections in each of 50 denoiser blocks and two token-refiner blocks. The runtime validates the complete key set, dimensions, rank, and alpha while loading.
|
||
|
|
|
||
|
|
The adapters are applied dynamically:
|
||
|
|
|
||
|
|
```text
|
||
|
|
output = NVFP4_base(x) + strength * (alpha / rank) * B(A(x))
|
||
|
|
```
|
||
|
|
|
||
|
|
The BF16 branch receives the original activation. It does not receive the base checkpoint's `pre_quant_scale`-modified activation, and the LoRA delta is never merged into packed NVFP4 weights. Fused QKV uses rank/alpha 384; the other released projections use rank/alpha 128.
|
||
|
|
|
||
|
|
Turbo sampling maintains independent native video and audio states. The 4-step and 8-step variants use their own shifted sigma grids and positive data-ward training-Euler updates. The original beta/RES sampler remains unchanged when Turbo is disabled.
|
||
|
|
|
||
|
|
## Hot API
|
||
|
|
|
||
|
|
The compose service registers both adapters with repeated startup arguments:
|
||
|
|
|
||
|
|
```text
|
||
|
|
--turbo-lora 4step=/turbo/minimax_h3_fl2v_turbo_4step_v1.1_768p_comfyui_bf16.safetensors
|
||
|
|
--turbo-lora 8step=/turbo/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors
|
||
|
|
```
|
||
|
|
|
||
|
|
Select one per request:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"prompt": "A calm restaurant at dusk.",
|
||
|
|
"output": "/output/example.mp4",
|
||
|
|
"width": 960,
|
||
|
|
"height": 544,
|
||
|
|
"frames": 124,
|
||
|
|
"seed": 440408,
|
||
|
|
"turbo": "4step"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
The server chooses and enforces four or eight steps. Use `null` or `"none"` for the base path. Turbo and denoiser caching cannot be combined. `/ready` reports `available_turbos` and `current_turbo`.
|
||
|
|
|
||
|
|
## Matched GB10 Benchmark
|
||
|
|
|
||
|
|
All runs used the same Posly first frame, prompt, seed `440408`, 960x544 canvas, 124 frames, Sage2, FP16 tiled VAE, and no audio output.
|
||
|
|
|
||
|
|
| Mode | Steps | Sampling | Total wall | Speedup vs base 8-step | Sampling reduction |
|
||
|
|
| --- | ---: | ---: | ---: | ---: | ---: |
|
||
|
|
| Base beta/RES | 8 | 148.1 s | 179.3 s | 1.00x | baseline |
|
||
|
|
| Turbo v1.0 | 8 | 121.1 s | 152.3 s | 1.18x | 18.2% |
|
||
|
|
| Turbo v1.1 768p | 4 | 60.4 s | 91.2 s | 1.97x | 59.2% |
|
||
|
|
|
||
|
|
The 4-step run was 1.67x faster end-to-end than the 8-step Turbo run. These are observed hot-service request times, not isolated steady-state kernel timings; shape-specific compilation can affect the first request.
|
||
|
|
|
||
|
|
## Validation
|
||
|
|
|
||
|
|
- 22 unit/contract tests cover disabled exactness, dynamic branch arithmetic, adapter selection, both official sigma grids, and independent AV training-Euler updates.
|
||
|
|
- Both official files loaded with all 624 expected keys and all 208 target dimensions validated.
|
||
|
|
- Both variants generated matched 960x544x124 FL2VA proofs.
|
||
|
|
- Both variants completed joint AV smoke runs and produced stereo 32 kHz AAC muxed outputs.
|
||
|
|
- Base warmup remains bit-preserving while no adapter is selected.
|
||
|
|
|
||
|
|
Comparison outputs:
|
||
|
|
|
||
|
|
```text
|
||
|
|
\\192.168.1.162\StoryStudioAssets\H3-output\posly\proofs-960x540\01-posly-hero-turbo4-v1.1-seed440408-5s.mp4
|
||
|
|
\\192.168.1.162\StoryStudioAssets\H3-output\posly\proofs-960x540\01-posly-hero-turbo8-v1.0-seed440408-5s.mp4
|
||
|
|
\\192.168.1.162\StoryStudioAssets\H3-output\posly\proofs-960x540\01-posly-hero-turbo4-left-turbo8-right-seed440408.mp4
|
||
|
|
```
|
||
|
|
|
||
|
|
## Quality Notes
|
||
|
|
|
||
|
|
For the Posly restaurant source, both Turbo variants avoided the severe central lens flare produced by the base-model trials. The 4-step result appeared slightly more compositionally stable; the 8-step result showed more subject motion. Both still brightened the exterior over time, so Turbo does not by itself satisfy the fixed-exposure requirement.
|
||
|
|
|
||
|
|
The adapters were released against the BF16 H3 base. Dynamic use over the pruned NVFP4 checkpoint is operationally validated here but is not an upstream-certified pairing. A future strict parity gate should compare per-step denoiser outputs and final latents against the latest LightX2V BF16 reference.
|
||
|
|
|
||
|
|
SLA Turbo is intentionally excluded. It requires LightX2V's separate 85% dynamic sparse-attention path and should not be represented as equivalent to these dense variants.
|