--- license: other license_name: tencent-hunyuan-community license_link: https://huggingface.co/Tencent-Hunyuan/HunyuanDiT/blob/main/LICENSE.txt language: - en --- # HunyuanDiT LoRA Language: **English** ## Instructions The dependencies and installation are basically the same as the [**original model**](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT). We provide two types of trained LoRA weights for you to test. Then download the model using the following commands: ```bash cd HunyuanDiT # Use the huggingface-cli tool to download the model. huggingface-cli download Tencent-Hunyuan/HYDiT-LoRA --local-dir ./ckpts/t2i/lora ``` ## Training We provide three types of weights for fine-tuning HY-DiT LoRA, `ema`, `module` and `distill`, and you can choose according to the actual effect. By default, we use `ema` weights. Here is an example, we load the `ema` weights into the main model and perform LoRA fine-tuning through the `--ema-to-module` parameter. If you want to load the `module` weights into the main model, just remove the `--ema-to-module` parameter. If multiple resolution are used, you need to add the `--multireso` and `--reso-step 64 ` parameter. ```bash model='DiT-g/2' # model type task_flag="lora_jade_ema_rank64" # task flag resume=./ckpts/t2i/model/ # resume checkpoint index_file=dataset/index_v2_json/jade.json # index file results_dir=./log_EXP # save root for results batch_size=1 # training batch size image_size=1024 # training image resolution grad_accu_steps=2 # gradient accumulation steps warmup_num_steps=0 # warm-up steps lr=0.0001 # learning rate ckpt_every=100 # create a ckpt every a few steps. ckpt_latest_every=2000 # create a ckpt named `latest.pt` every a few steps. rank=64 # rank of lora PYTHONPATH=./ deepspeed hydit/train_large_deepspeed.py \ --task-flag ${task_flag} \ --model ${model} \ --training_parts lora \ --rank ${rank} \ --resume-split \ --resume ${resume} \ --ema-to-module \ --lr ${lr} \ --noise-schedule scaled_linear --beta-start 0.00085 --beta-end 0.03 \ --predict-type v_prediction \ --uncond-p 0.44 \ --uncond-p-t5 0.44 \ --index-file ${index_file} \ --random-flip \ --batch-size ${batch_size} \ --image-size ${image_size} \ --global-seed 999 \ --grad-accu-steps ${grad_accu_steps} \ --warmup-num-steps ${warmup_num_steps} \ --use-flash-attn \ --use-fp16 \ --ema-dtype fp32 \ --results-dir ${results_dir} \ --ckpt-every ${ckpt_every} \ --max-training-steps ${max_training_steps}\ --ckpt-latest-every ${ckpt_latest_every} \ --log-every 10 \ --deepspeed \ --deepspeed-optimizer \ --use-zero-stage 2 \ --qk-norm \ --rope-img base512 \ --rope-real \ "$@" ``` Recommended parameter settings | Parameter | Description | Recommended Parameter Value | Note| |:---------------:|:---------:|:---------------------------------------------------:|:--:| | `--batch_size` | Training batch size | 1 | Depends on GPU memory| | `--grad-accu-steps` | Size of gradient accumulation | 2 | - | | `--rank` | Rank of lora | 64 | 8-128 are all possible| | `--max-training-steps` | Training steps | 2000 | Varies with the amount of training data, about 2000 steps are enough for 100 images| | `--lr` | Learning rate | 0.0001 | - | ## Inference ### Using Gradio Make sure you have activated the conda environment before running the following command. > ⚠️ Important Reminder: > We recommend not using prompt enhance, as it may lead to the disappearance of style words. ```shell # porcelain style # By default, we start a Chinese UI. python app/hydit_app.py --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # Using Flash Attention for acceleration. python app/hydit_app.py --infer-mode fa --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # You can disable the enhancement model if the GPU memory is insufficient. # The enhancement will be unavailable until you restart the app without the `--no-enhance` flag. python app/hydit_app.py --no-enhance --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # Start with English UI python app/hydit_app.py --lang en --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # jade style # By default, we start a Chinese UI. python app/hydit_app.py --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # Using Flash Attention for acceleration. python app/hydit_app.py --infer-mode fa --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # You can disable the enhancement model if the GPU memory is insufficient. # The enhancement will be unavailable until you restart the app without the `--no-enhance` flag. python app/hydit_app.py --no-enhance --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # Start with English UI python app/hydit_app.py --lang en --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain ``` ### Using Command Line We provide several commands to quick start: ```shell # porcelain style # Prompt Enhancement + Text-to-Image. Torch mode python sample_t2i.py --prompt "玉石绘画风格,一只猫在追蝴蝶" --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # Only Text-to-Image. Torch mode python sample_t2i.py --prompt "玉石绘画风格,一只猫在追蝴蝶" --no-enhance --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # Only Text-to-Image. Flash Attention mode python sample_t2i.py --infer-mode fa --prompt "玉石绘画风格,一只猫在追蝴蝶" --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # Generate an image with other image sizes. python sample_t2i.py --prompt "玉石绘画风格,一只猫在追蝴蝶" --image-size 1280 768 --load-key ema --lora_ckpt ./ckpts/t2i/lora/jade # jade style # Prompt Enhancement + Text-to-Image. Torch mode python sample_t2i.py --prompt "青花瓷风格,一只猫在追蝴蝶" --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # Only Text-to-Image. Torch mode python sample_t2i.py --prompt "青花瓷风格,一只猫在追蝴蝶" --no-enhance --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # Only Text-to-Image. Flash Attention mode python sample_t2i.py --infer-mode fa --prompt "青花瓷风格,一只猫在追蝴蝶" --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain # Generate an image with other image sizes. python sample_t2i.py --prompt "青花瓷风格,一只猫在追蝴蝶" --image-size 1280 768 --load-key ema --lora_ckpt ./ckpts/t2i/lora/porcelain ``` More example prompts can be found in [example_prompts.txt](example_prompts.txt)