Spaces:
Build error
Build error
# Pyramid Flow's DiT Finetuning Guide | |
This is the finetuning guide for the DiT in Pyramid Flow. We provide instructions for both autoregressive and non-autoregressive versions. The former is more research oriented and the latter is more stable (but less efficient without temporal pyramid). Please refer to [another document](https://github.com/jy0205/Pyramid-Flow/blob/main/docs/VAE) for VAE finetuning. | |
## Hardware Requirements | |
+ DiT finetuning: At least 8 A100 GPUs. | |
## Prepare the Dataset | |
The training dataset should be arranged into a json file, with `video`, `text` fields. Since the video vae latent extraction is very slow, we strongly recommend you to pre-extract the video vae latents to save the training time. We provide a video vae latent extraction script in folder `tools`. You can run it with the following command: | |
```bash | |
sh scripts/extract_vae_latent.sh | |
``` | |
(optional) Since the T5 text encoder will cost a lot of GPU memory, pre-extract the text features will save the training memory. We also provide a text feature extraction script in folder `tools`. You can run it with the following command: | |
```bash | |
sh scripts/extract_text_feature.sh | |
``` | |
The final training annotation json file should look like the following format: | |
``` | |
{"video": video_path, "text": text prompt, "latent": extracted video vae latent, "text_fea": extracted text feature} | |
``` | |
We provide the example json annotation files for [video](https://github.com/jy0205/Pyramid-Flow/blob/main/annotation/video_text.jsonl) and [image](https://github.com/jy0205/Pyramid-Flow/blob/main/annotation/image_text.jsonl)) training in the `annotation` folder. You can refer them to prepare your training dataset. | |
## Run Training | |
We provide two types of training scripts: (1) autoregressive video generation training with temporal pyramid. (2) Full-sequence diffusion training with pyramid-flow for both text-to-image and text-to-video training. This corresponds to the following two script files. Running these training scripts using at least 8 GPUs: | |
+ `scripts/train_pyramid_flow.sh`: The autoregressive video generation training with temporal pyramid. | |
```bash | |
sh scripts/train_pyramid_flow.sh | |
``` | |
+ `scripts/train_pyramid_flow_without_ar.sh`: Using pyramid-flow for full-sequence diffusion training. | |
```bash | |
sh scripts/train_pyramid_flow_without_ar.sh | |
``` | |
## Tips | |
+ For the 768p version, make sure to add the args: `--gradient_checkpointing` | |
+ Param `NUM_FRAMES` should be set to a multiple of 8 | |
+ For the param `video_sync_group`, it indicates the number of process that accepts the same input video, used for temporal pyramid AR training. We recommend to set this value to 4, 8 or 16. (16 is better if you have more GPUs) | |
+ Make sure to set `NUM_FRAMES % VIDEO_SYNC_GROUP == 0`, `GPUS % VIDEO_SYNC_GROUP == 0`, and `BATCH_SIZE % 4 == 0` | |