This repository provides a minimal, runnable pipeline for Stable Diffusion 3.5 Medium + PromptDecomposer (T5 branch).
After downloading model weights and a minimal dataset subset (COCO images), you can train and run inference directly.
long-prompt-decomposer-sd35/
├── src/lpd/ # Core library code (models, pipelines, utilities)
├── scripts/train/ # Training scripts
├── scripts/infer/ # Inference scripts
├── scripts/eval/ # Evaluation scripts
├── scripts/exp/ # Experiment wrappers
├── scripts/run_profile.py # Unified profile-driven entry point
├── configs/ # Accelerate config and profiles
└── docs/ # Notes and documentation
scripts/train/lpd_ella_t5_sd3.py.TextDecomposer -> PromptResampler), not full UNet/LoRA finetuning.src/lpd/pipeline_lpd_sd3.py).TextDecomposer in scripts/train/lpd_ella_t5_sd3.py.PromptResampler in src/lpd/models.py.num_components: controlled by --num_components (default 4).decomposer(encoder_hidden_states_t5).num_components; each element has shape [B, num_tokens, hidden_dim].encoder_hidden_states_t5).--component_dropout) to include empty-condition cases.[negative_prompt, prompt] when CFG is enabled."".attn_maps supervision is used in this minimal training pipeline.transformer, vae, text_encoder, text_encoder_2, text_encoder_3.luping-liu/LongAlign (Hugging Face datasets, streaming by default).caption, path, source (with fallback caption keys handled in code).--image_root + path.--source_filter coco.model.safetensors (decomposer weights).model.safetensors is also saved in output_dir..safetensors path.model.safetensors export for checkpoints and final model.--dataloader_num_workers=0.python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install -U huggingface_hub
Make sure your Hugging Face account has accepted the model license first.
huggingface-cli login
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium
huggingface-cli download stabilityai/stable-diffusion-3.5-medium \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium
LongAlign metadata rows with source=coco typically use paths like coco2017/train2017/xxxx.jpg.
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images/coco2017
curl -L -o /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip http://images.cocodataset.org/zips/train2017.zip
unzip -q /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip -d /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images/coco2017
rm /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip
Optional: localize LongAlign metadata (instead of streaming from Hub):
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta
huggingface-cli download --repo-type dataset luping-liu/LongAlign \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/detailmaster
huggingface-cli download --repo-type dataset datajuicer/DetailMaster \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/data/detailmaster
Core required paths:
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium--image_root /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_imagesMetadata source defaults to luping-liu/LongAlign.
If you downloaded local metadata parquet files:
--dataset_name /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta--no_streamingcd /ABS_PATH/long-prompt-decomposer-sd35
wandb login
accelerate launch --config_file configs/acc_config.yaml scripts/train/lpd_ella_t5_sd3.py \
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium \
--output_dir /ABS_PATH/long-prompt-decomposer-sd35/logs/lpd_sd35_minimal \
--image_root /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images \
--source_filter coco \
--resolution 512 \
--train_batch_size 1 \
--gradient_accumulation_steps 8 \
--learning_rate 1e-5 \
--max_train_steps 2000 \
--checkpointing_steps 200 \
--validation_steps 200 \
--num_components 4 \
--num_tokens 128 \
--decomposer_heads 32 \
--decomposer_layers 6 \
--token_length 512 \
--report_to wandb \
--tracker_project_name lpd_sd3 \
--wandb_run_name sd35_coco_minimal \
--wandb_entity <YOUR_WANDB_ENTITY> \
--dataloader_num_workers 0 \
--mixed_precision bf16
Notes:
num_processes: 1 in configs/acc_config.yaml.dataset_name=luping-liu/LongAlign with streaming enabled.python scripts/infer/lpd_sd3_infer.py \
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium \
--decomposer_ckpt /ABS_PATH/long-prompt-decomposer-sd35/logs/lpd_sd35_minimal/checkpoint-2000 \
--prompt "A cinematic long prompt ..." \
--negative_prompt "" \
--output_dir /ABS_PATH/long-prompt-decomposer-sd35/output/infer \
--save_decompose \
--num_inference_steps 20 \
--guidance_scale 4.5 \
--max_sequence_length 512 \
--dtype bf16 \
--device cuda
Outputs:
compose.pngcomponent_0.png ... component_{N-1}.png (if --save_decompose is enabled)During training, logs include:
loss, diff (if enabled), kd (if enabled), lrhuggingface-cli login, then download stable-diffusion-3.5-medium.data/longalign_images/coco2017/train2017.wandb login.python scripts/run_profile.py --profile configs/profiles/lpd_ella_t5_sd3.json -- --help
Python
100.0%
This repository provides a minimal, runnable pipeline for Stable Diffusion 3.5 Medium + PromptDecomposer (T5 branch).
After downloading model weights and a minimal dataset subset (COCO images), you can train and run inference directly.
long-prompt-decomposer-sd35/
├── src/lpd/ # Core library code (models, pipelines, utilities)
├── scripts/train/ # Training scripts
├── scripts/infer/ # Inference scripts
├── scripts/eval/ # Evaluation scripts
├── scripts/exp/ # Experiment wrappers
├── scripts/run_profile.py # Unified profile-driven entry point
├── configs/ # Accelerate config and profiles
└── docs/ # Notes and documentation
scripts/train/lpd_ella_t5_sd3.py.TextDecomposer -> PromptResampler), not full UNet/LoRA finetuning.src/lpd/pipeline_lpd_sd3.py).TextDecomposer in scripts/train/lpd_ella_t5_sd3.py.PromptResampler in src/lpd/models.py.num_components: controlled by --num_components (default 4).decomposer(encoder_hidden_states_t5).num_components; each element has shape [B, num_tokens, hidden_dim].encoder_hidden_states_t5).--component_dropout) to include empty-condition cases.[negative_prompt, prompt] when CFG is enabled."".attn_maps supervision is used in this minimal training pipeline.transformer, vae, text_encoder, text_encoder_2, text_encoder_3.luping-liu/LongAlign (Hugging Face datasets, streaming by default).caption, path, source (with fallback caption keys handled in code).--image_root + path.--source_filter coco.model.safetensors (decomposer weights).model.safetensors is also saved in output_dir..safetensors path.model.safetensors export for checkpoints and final model.--dataloader_num_workers=0.python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install -U huggingface_hub
Make sure your Hugging Face account has accepted the model license first.
huggingface-cli login
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium
huggingface-cli download stabilityai/stable-diffusion-3.5-medium \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium
LongAlign metadata rows with source=coco typically use paths like coco2017/train2017/xxxx.jpg.
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images/coco2017
curl -L -o /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip http://images.cocodataset.org/zips/train2017.zip
unzip -q /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip -d /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images/coco2017
rm /ABS_PATH/long-prompt-decomposer-sd35/data/train2017.zip
Optional: localize LongAlign metadata (instead of streaming from Hub):
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta
huggingface-cli download --repo-type dataset luping-liu/LongAlign \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta
mkdir -p /ABS_PATH/long-prompt-decomposer-sd35/data/detailmaster
huggingface-cli download --repo-type dataset datajuicer/DetailMaster \
--local-dir /ABS_PATH/long-prompt-decomposer-sd35/data/detailmaster
Core required paths:
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium--image_root /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_imagesMetadata source defaults to luping-liu/LongAlign.
If you downloaded local metadata parquet files:
--dataset_name /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_meta--no_streamingcd /ABS_PATH/long-prompt-decomposer-sd35
wandb login
accelerate launch --config_file configs/acc_config.yaml scripts/train/lpd_ella_t5_sd3.py \
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium \
--output_dir /ABS_PATH/long-prompt-decomposer-sd35/logs/lpd_sd35_minimal \
--image_root /ABS_PATH/long-prompt-decomposer-sd35/data/longalign_images \
--source_filter coco \
--resolution 512 \
--train_batch_size 1 \
--gradient_accumulation_steps 8 \
--learning_rate 1e-5 \
--max_train_steps 2000 \
--checkpointing_steps 200 \
--validation_steps 200 \
--num_components 4 \
--num_tokens 128 \
--decomposer_heads 32 \
--decomposer_layers 6 \
--token_length 512 \
--report_to wandb \
--tracker_project_name lpd_sd3 \
--wandb_run_name sd35_coco_minimal \
--wandb_entity <YOUR_WANDB_ENTITY> \
--dataloader_num_workers 0 \
--mixed_precision bf16
Notes:
num_processes: 1 in configs/acc_config.yaml.dataset_name=luping-liu/LongAlign with streaming enabled.python scripts/infer/lpd_sd3_infer.py \
--pretrained_model_name_or_path /ABS_PATH/long-prompt-decomposer-sd35/weights/sd3.5-medium \
--decomposer_ckpt /ABS_PATH/long-prompt-decomposer-sd35/logs/lpd_sd35_minimal/checkpoint-2000 \
--prompt "A cinematic long prompt ..." \
--negative_prompt "" \
--output_dir /ABS_PATH/long-prompt-decomposer-sd35/output/infer \
--save_decompose \
--num_inference_steps 20 \
--guidance_scale 4.5 \
--max_sequence_length 512 \
--dtype bf16 \
--device cuda
Outputs:
compose.pngcomponent_0.png ... component_{N-1}.png (if --save_decompose is enabled)During training, logs include:
loss, diff (if enabled), kd (if enabled), lrhuggingface-cli login, then download stable-diffusion-3.5-medium.data/longalign_images/coco2017/train2017.wandb login.python scripts/run_profile.py --profile configs/profiles/lpd_ella_t5_sd3.json -- --help
Python
100.0%