74 lines
3.2 KiB
Markdown
74 lines
3.2 KiB
Markdown
# LTX-2 Local Tests
|
|
|
|
Local-only parity, registry, and pipeline-smoke tests for the `ltx2` FastVideo
|
|
port. Most tests depend on a checked-out `LTX-2/` directory at the repo root
|
|
(`FastVideo/LTX-2`) and converted Diffusers weights; without those they will
|
|
skip or fail. Skipped in CI; run locally on a single GPU.
|
|
|
|
## Reference Assets
|
|
|
|
| Field | Value |
|
|
|---|---|
|
|
| Model family | `ltx2` |
|
|
| Workload types | `T2V` (video + optional audio) |
|
|
| Official reference | `Lightricks/LTX-2` (local clone) |
|
|
| Local reference dir | `LTX-2/` (with `LTX-2/packages/ltx-core/src` on `sys.path`) |
|
|
| Official commit/version | `<TODO>` |
|
|
| HF weights | `Lightricks/LTX-2`, `FastVideo/LTX2-base`, `FastVideo/LTX2-Distilled-Diffusers` |
|
|
| HF revision | `<TODO>` |
|
|
| Local weights dir | `<TODO>` (env: `LTX2_DIFFUSERS_PATH`, `LTX2_FASTVIDEO_GEMMA_LOG`, etc.) |
|
|
| Source layout | `<TODO: diffusers / raw_official / mixed>` |
|
|
| Needs conversion | `<TODO>` |
|
|
|
|
> Use only the env-var **name** for tokens (e.g., `HF_TOKEN`). Never paste a token value.
|
|
|
|
## Shared Environment Setup
|
|
|
|
Run from the FastVideo repo root in the same env used for FastVideo. See the
|
|
`add-model-prep` skill for canonical clone + install commands.
|
|
|
|
```bash
|
|
# Clone the official reference under the FastVideo repo root.
|
|
git clone <official_repo_url> LTX-2
|
|
uv pip install --no-deps -e ./LTX-2
|
|
```
|
|
|
|
Do not change core dependency versions (`torch`, `diffusers`, `transformers`,
|
|
`flash-attn`, `triton`, CUDA packages) without explicit approval.
|
|
|
|
## Official Environment Status
|
|
|
|
```text
|
|
dependency_changes: <TODO>
|
|
official_env_status: <TODO: imports_ok | private_deps_need_stubs | blocked>
|
|
private_dep_stubs: <TODO>
|
|
blocked_on: <TODO>
|
|
```
|
|
|
|
## Tests in this directory
|
|
|
|
Run the whole family:
|
|
|
|
```bash
|
|
pytest tests/local_tests/ltx2/ -v -s
|
|
```
|
|
|
|
| Component | Test | Concerns | Status |
|
|
|---|---|---|---|
|
|
| `text encoder` (Gemma) | [`test_ltx2_gemma_encoder.py`](./test_ltx2_gemma_encoder.py) | encoder + connector | `<TODO>` |
|
|
| `text encoder` (Gemma, full parity) | [`test_ltx2_gemma_parity.py`](./test_ltx2_gemma_parity.py) | full Gemma parity vs official | `<TODO>` |
|
|
| `transformer/DiT` | [`test_ltx2.py`](./test_ltx2.py) | LTX2VideoConfig DiT parity | `<TODO>` |
|
|
| `transformer/DiT` (audio modality) | [`test_ltx2_audio.py`](./test_ltx2_audio.py) | audio-conditioning DiT parity (imports helpers from `test_ltx2.py`) | `<TODO>` |
|
|
| `vae` (video) | [`test_ltx2_vae.py`](./test_ltx2_vae.py) | LTX2VideoEncoder/Decoder parity | `<TODO>` |
|
|
| `vae` (video, official path) | [`test_ltx2_vae_official.py`](./test_ltx2_vae_official.py) | LTX2VAEConfig + VAELoader path | `<TODO>` |
|
|
| `vae` (audio) | [`test_ltx2_audio_vae.py`](./test_ltx2_audio_vae.py) | audio encoder/decoder/vocoder parity | `<TODO>` |
|
|
| `pipeline` (smoke) | [`test_ltx2_pipeline_smoke.py`](./test_ltx2_pipeline_smoke.py) | VideoGenerator end-to-end smoke | `<TODO>` |
|
|
| `registry` | [`test_ltx2_registry.py`](./test_ltx2_registry.py) | sampling/pipeline registry resolution | `<TODO>` |
|
|
|
|
## Review Notes
|
|
|
|
- Required before handoff: non-skip PASS for each component parity test,
|
|
including reused components that own weights or numerical behavior.
|
|
- Pipeline parity may start as a scaffold; final handoff requires non-skip
|
|
PASS or an explicit blocker accepted via the escape-hatch process.
|