File size: 6,388 Bytes
2ea2835 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # Asset Preparation
The source release includes training and evaluation code, the training configuration, and example prompts. Model weights, training reference data, and generated videos are stored separately.
## Required assets
| Use | Assets |
|---|---|
| Inference | Wan2.1-T2V-1.3B base weights, text encoder, tokenizer, VAE, and a trained Anonymous Video Generation checkpoint |
| Training | Inference base assets, the Self-Forcing ODE initialization, three frozen feature encoders, reference features, and NystrΓΆm summaries |
The trained Anonymous Video Generation checkpoint and reference collection are not distributed in this repository. Encoder weights alone are insufficient to reproduce training with the provided configuration.
## Model families (local files required)
- Wan2.1-T2V-1.3B
- Self-Forcing initialization
- [DINOv3](https://github.com/facebookresearch/dinov3)
- V-JEPA 2 ViT-L
- VideoMAEv2-Large
For the supplied configuration, DINOv3 uses ViT-L/16 features from its final layer; V-JEPA 2 and VideoMAEv2 use layer 15. VideoMAEv2 is pinned to revision `9981a9c8f77118c421e5228e1b219468a4b0238d`, and the DINOv3 source is pinned to commit `6876159a11b4df116f30f667f8c9888617df0751`.
## Directory layout
Place assets under a common root. The following filenames are retained for compatibility with the supplied configuration:
```text
ASSET_ROOT/
βββ checkpoints/ode_init.pt
βββ models/
β βββ Wan2.1-T2V-1.3B/
β βββ dinov3-src/
β βββ dinov3_vitl16_lvd1689m.pth
β βββ dinov3_vitl16_lvd1689m.pth.provenance.json
β βββ vjepa2-vitl-fpc64-256/
β βββ VideoMAEv2-Large/
βββ teacher_banks/triple_video_new8682_824/
β βββ manifest.json
β βββ ... # All feature shards referenced by the manifest
βββ experiments/triple_video_new8682_824/
βββ source/new8682_824_matched.jsonl
βββ references/
βββ dinov3_vitl16_f20mean5_k1024_m256_matched5k.pt
βββ vjepa2_l15_last64_k1024_m1024_matched5k.pt
βββ videomae_v2_l15_fixed5x16_k256_m256_matched5k.pt
```
The reference collection contains 8,682 videos stored in 272 feature shards. The `matched5k` suffix is a legacy filename; the manifest determines the actual collection size.
Keep the feature shards, manifests, and summaries together without changing their contents or sample ordering. Preserve the DINOv3 provenance file and the VideoMAEv2 `download_manifest.json` alongside their weights.
## Configure asset paths
From the `1.3B/` directory:
```bash
export ASSET_ROOT=/path/to/video-generation-assets
python scripts/prepare_config.py --asset-root "$ASSET_ROOT"
```
The setup script generates a local configuration with relocated asset paths. Generated configurations are excluded from version control. Asset and source-hash preflight checks are not run by the launchers.
## Reference feature preparation
Preprocessing is performed once, before generator training. It requires the raw captioned reference videos, the frozen encoders, and a CUDA device. Training subsequently reads the saved features instead of decoding those reference videos again.
1. **Prepare the prompt/video manifest.** Each entry binds a caption to an MP4 basename in a fixed sample order. The loader in [`matched_video_manifest.py`](../code/utils/matched_video_manifest.py) expects a JSONL manifest and its `.meta.json` sidecar, including the source-data identity. A plain prompt text file is not a training manifest.
2. **Extract all three representations.** [`extract_triple_matched_teacher_bank.py`](../code/tools/extract_triple_matched_teacher_bank.py) reads the manifest and raw videos and writes feature shards plus a `manifest.json`. Supply the source manifest, video root, encoder paths, and model identities. For the released collection, set `--expected-count 8682` and `--shard-rows 32`; the default sample count in this lower-level tool is different.
3. **Build the fixed summaries.** [`build_triple_nystrom_references.py`](../code/tools/build_triple_nystrom_references.py) reads the extracted feature bank and writes one NystrΓΆm reference per encoder. Supply the bank and model identities and set `--expected-sample-count 8682`. Keep the reference files together with the feature bank from which they were built.
Run the preprocessing tools from the `1.3B/` directory with `PYTHONPATH="$PWD/code"`. Their `--help` output lists the required manifests, encoder identities, and output paths.
The feature protocol used by the training configuration is:
| Encoder | Video sampling | Representation | NystrΓΆm landmarks |
|---|---|---|---:|
| DINOv3 ViT-L/16 | 20 frames across the 81-frame video, pooled in groups of 5 | Final-layer features, 1,024 tokens per video | 256 |
| V-JEPA 2 ViT-L | Last 64 contiguous frames | Layer 15, 1,024 tokens per video | 1,024 |
| VideoMAEv2-Large | Skip the first frame, then use five 16-frame clips | Layer 15, 256 tokens per clip | 256 |
Encoder revisions, feature sampling, source ordering, and preprocessing metadata must agree between the reference assets and training configuration. Re-extraction can change serialized hashes; it should not be assumed to recreate the supplied assets byte for byte.
## Using another reference collection
A new collection requires a new manifest, feature bank, NystrΓΆm summaries, and a training configuration with matching paths and identities.
Update the local configuration for a new experiment. Changing the reference collection should not be expected to reproduce the reported VBench score.
## Local snapshot preparation
All model loaders require existing local directories. Hosted model repository URLs, repository IDs and automatic downloads are omitted from this source release. The legacy-named `download_videomae_v2_large.py` stages an existing local snapshot using `--source-dir` and an empty `--output-dir`; it does not download files. If the source includes a valid pinned `download_manifest.json`, that manifest is preserved for compatibility with frozen reference banks. A snapshot without a manifest gets a new local manifest; rebuild matching reference assets and update their configuration identities before training. `prepare_config.py` reads model identities from an available local feature bank into private local configuration files.
|