# 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`