From 4df75a30cd8e1338cac09f724ae2cf28035dcd37 Mon Sep 17 00:00:00 2001 From: wehub-resource-sync Date: Mon, 13 Jul 2026 12:31:40 +0800 Subject: [PATCH] chore: import upstream snapshot with attribution --- .gitignore | 41 + CONTRIBUTING.md | 141 ++ LICENSE | 201 ++ README.md | 282 +++ README.wehub.md | 7 + assets/longlive2/LongLive1_teaser.png | Bin 0 -> 1108090 bytes assets/longlive2/fig_framework_overview.png | Bin 0 -> 117675 bytes assets/longlive2/first-video-frame.png | Bin 0 -> 1922640 bytes assets/longlive2/logo.png | Bin 0 -> 187553 bytes assets/longlive2/teaser.jpg | Bin 0 -> 531181 bytes configs/fp8/inference_fp8.yaml | 51 + configs/inference.yaml | 48 + configs/inference_sp.yaml | 51 + configs/nvfp4/inference_i2v_nvfp4.yaml | 94 + configs/nvfp4/inference_nvfp4.yaml | 75 + configs/nvfp4/train_ar_nvfp4.yaml | 96 + configs/nvfp4/train_dmd_nvfp4_step4.yaml | 126 ++ configs/nvfp4/train_i2v_ar_nvfp4.yaml | 101 + configs/nvfp4/train_i2v_dmd_nvfp4_step4.yaml | 142 ++ configs/train_ar.yaml | 85 + configs/train_dmd.yaml | 102 + configs/train_i2v_ar.yaml | 89 + configs/train_i2v_dmd.yaml | 104 + docs/FLASH_ATTENTION_3_AND_HOPPER_SUPPORT.md | 103 + docs/getting_started.md | 430 ++++ example/long_example.txt | 8 + fouroversix/.github/workflows/_build.yml | 215 ++ fouroversix/.github/workflows/build.yml | 47 + fouroversix/.github/workflows/pre-commit.yml | 16 + fouroversix/.github/workflows/publish.yml | 101 + fouroversix/.gitignore | 16 + fouroversix/.gitmodules | 21 + fouroversix/LICENSE.md | 21 + fouroversix/MANIFEST.in | 12 + fouroversix/README.md | 167 ++ fouroversix/docs/index.md | 3 + fouroversix/docs/matmul.md | 3 + fouroversix/docs/ptq.md | 69 + fouroversix/docs/quantization.md | 3 + fouroversix/mkdocs.yml | 8 + fouroversix/pyproject.toml | 110 + fouroversix/scripts/__init__.py | 0 fouroversix/scripts/create_test_case.py | 87 + fouroversix/scripts/generate_kernels.py | 136 ++ fouroversix/scripts/hadamard_code_gen.py | 111 + fouroversix/scripts/ptq/__init__.py | 0 fouroversix/scripts/ptq/__main__.py | 105 + .../scripts/ptq/coordinators/__init__.py | 4 + fouroversix/scripts/ptq/coordinators/base.py | 105 + fouroversix/scripts/ptq/coordinators/local.py | 185 ++ fouroversix/scripts/ptq/coordinators/modal.py | 152 ++ .../scripts/ptq/evaluators/__init__.py | 34 + fouroversix/scripts/ptq/evaluators/awq.py | 134 ++ .../scripts/ptq/evaluators/evaluator.py | 204 ++ fouroversix/scripts/ptq/evaluators/gptq.py | 99 + .../scripts/ptq/evaluators/high_precision.py | 45 + fouroversix/scripts/ptq/evaluators/rtn.py | 106 + .../scripts/ptq/evaluators/smoothquant.py | 238 +++ .../scripts/ptq/evaluators/spinquant.py | 240 +++ fouroversix/scripts/ptq/evaluators/utils.py | 100 + fouroversix/scripts/ptq/experiment.py | 22 + fouroversix/scripts/ptq/tasks/__init__.py | 0 .../wikitext_train/preprocess_wikitext.py | 48 + .../tasks/wikitext_train/wikitext_train.yaml | 16 + fouroversix/scripts/ptq/utils.py | 25 + fouroversix/scripts/resources.py | 388 ++++ fouroversix/scripts/speedtest/__init__.py | 0 fouroversix/scripts/speedtest/matmul.py | 93 + fouroversix/scripts/speedtest/quantize.py | 108 + fouroversix/scripts/test_on_modal.py | 30 + fouroversix/scripts/train/__init__.py | 0 fouroversix/scripts/train/__main__.py | 244 +++ .../train/configs/transformer_1B_bf16.json | 26 + .../train/configs/transformer_1B_fp4.json | 31 + .../transformer_1B_fp4_fouroversix.json | 31 + .../train/configs/transformer_340M_bf16.json | 25 + .../train/configs/transformer_340M_fp4.json | 30 + .../transformer_340M_fp4_fouroversix.json | 30 + fouroversix/scripts/train/prepare_dataset.py | 15 + fouroversix/setup.py | 296 +++ fouroversix/src/fouroversix/__init__.py | 33 + fouroversix/src/fouroversix/csrc/bindings.cpp | 36 + fouroversix/src/fouroversix/csrc/fp4_gemm.cu | 187 ++ .../src/fouroversix/csrc/fp4_gemm_sm120.cu | 414 ++++ .../csrc/include/element_traits.hpp | 171 ++ .../src/fouroversix/csrc/include/fp4_quant.h | 57 + .../csrc/include/fp4_quant_kernel.h | 505 +++++ .../csrc/include/fp4_quant_launch_template.h | 147 ++ .../csrc/include/hadamard_transform.h | 56 + .../fouroversix/csrc/include/hardware_info.h | 41 + .../fouroversix/csrc/include/kernel_traits.h | 141 ++ .../fouroversix/csrc/include/static_switch.h | 61 + .../src/fouroversix/csrc/include/utils.h | 701 ++++++ .../fouroversix/csrc/quantize/fp4_quant.cu | 245 +++ .../fp4_quant_bf16_mxfp4_rht_sm100.cu | 11 + .../fp4_quant_bf16_mxfp4_rht_trans_sm100.cu | 11 + .../quantize/fp4_quant_bf16_mxfp4_sm100.cu | 11 + .../fp4_quant_bf16_mxfp4_trans_sm100.cu | 11 + .../fp4_quant_bf16_nvfp4_rht_sm100.cu | 11 + .../fp4_quant_bf16_nvfp4_rht_trans_sm100.cu | 11 + .../quantize/fp4_quant_bf16_nvfp4_sm100.cu | 11 + .../fp4_quant_bf16_nvfp4_trans_sm100.cu | 11 + .../fp4_quant_fp16_mxfp4_rht_sm100.cu | 11 + .../fp4_quant_fp16_mxfp4_rht_trans_sm100.cu | 11 + .../quantize/fp4_quant_fp16_mxfp4_sm100.cu | 11 + .../fp4_quant_fp16_mxfp4_trans_sm100.cu | 11 + .../fp4_quant_fp16_nvfp4_rht_sm100.cu | 11 + .../fp4_quant_fp16_nvfp4_rht_trans_sm100.cu | 11 + .../quantize/fp4_quant_fp16_nvfp4_sm100.cu | 11 + .../fp4_quant_fp16_nvfp4_trans_sm100.cu | 11 + .../src/fouroversix/matmul/__init__.py | 3 + fouroversix/src/fouroversix/matmul/backend.py | 60 + .../fouroversix/matmul/cutlass/__init__.py | 3 + .../src/fouroversix/matmul/cutlass/backend.py | 147 ++ .../src/fouroversix/matmul/cutlass/ops.py | 183 ++ .../src/fouroversix/matmul/frontend.py | 115 + fouroversix/src/fouroversix/matmul/pytorch.py | 41 + fouroversix/src/fouroversix/model/__init__.py | 11 + fouroversix/src/fouroversix/model/config.py | 194 ++ .../src/fouroversix/model/modules/__init__.py | 7 + .../src/fouroversix/model/modules/gpt_oss.py | 395 ++++ .../src/fouroversix/model/modules/linear.py | 355 ++++ .../fouroversix/model/modules/linear_ori.py | 257 +++ .../src/fouroversix/model/modules/qwen.py | 326 +++ fouroversix/src/fouroversix/model/quantize.py | 127 ++ .../src/fouroversix/quantize/__init__.py | 6 + .../src/fouroversix/quantize/backend.py | 69 + .../src/fouroversix/quantize/config.py | 51 + .../src/fouroversix/quantize/cuda/__init__.py | 3 + .../src/fouroversix/quantize/cuda/backend.py | 91 + .../src/fouroversix/quantize/cuda/ops.py | 46 + .../src/fouroversix/quantize/frontend.py | 122 ++ .../fouroversix/quantize/pytorch/__init__.py | 3 + .../fouroversix/quantize/pytorch/backend.py | 112 + .../fouroversix/quantize/pytorch/reference.py | 368 ++++ .../fouroversix/quantize/quantized_tensor.py | 248 +++ .../quantize/transformer_engine.py | 109 + .../fouroversix/quantize/triton/__init__.py | 3 + .../fouroversix/quantize/triton/backend.py | 79 + .../src/fouroversix/quantize/triton/kernel.py | 672 ++++++ fouroversix/src/fouroversix/quantize/utils.py | 96 + fouroversix/src/fouroversix/utils.py | 134 ++ .../weight_conversions/__init__.py | 13 + .../weight_conversions/conversions.py | 45 + .../fouroversix/weight_conversions/gpt_oss.py | 99 + fouroversix/tests/__init__.py | 0 fouroversix/tests/test_correctness.py | 196 ++ inference.py | 670 ++++++ inference_sp.py | 578 +++++ model/__init__.py | 6 + model/base.py | 545 +++++ model/diffusion.py | 574 +++++ model/dmd.py | 494 +++++ pipeline/__init__.py | 7 + pipeline/causal_diffusion_inference.py | 1045 +++++++++ pipeline/causal_diffusion_inference_sp.py | 254 +++ pipeline/self_forcing_training.py | 774 +++++++ requirements.txt | 42 + scripts/compute_sp_vae_chunk_halo.py | 163 ++ scripts/decode_lightvae_latents.py | 346 +++ scripts/decode_vae_latents.py | 167 ++ scripts/merge_lora_generator.py | 130 ++ scripts/save_merged_nvfp4_generator.py | 246 +++ tests/test_dmd_i2v_conditioning.py | 51 + tests/test_fp8_inference.py | 29 + tests/test_i2v_dataset_frame_accounting.py | 40 + tests/test_i2v_sequence_parallel_config.py | 63 + tests/test_i2v_teacher_forcing_context.py | 192 ++ train.py | 47 + trainer/__init__.py | 7 + trainer/diffusion.py | 1120 ++++++++++ trainer/distillation.py | 1483 +++++++++++++ trainer/sp_helper.py | 18 + utils/DATASET_PROMPT_LOGIC.md | 243 +++ utils/__init__.py | 5 + utils/adaln_triton.py | 126 ++ utils/config.py | 174 ++ utils/dataset.py | 1073 ++++++++++ utils/distributed.py | 149 ++ utils/error_buffer.py | 321 +++ utils/fp8.py | 78 + utils/i2v_conditioning.py | 71 + utils/inference_utils.py | 312 +++ utils/kernel/README.md | 54 + utils/kernel/__init__.py | 10 + utils/kernel/kv_dequant.cpp | 20 + utils/kernel/kv_dequant.py | 82 + utils/kernel/kv_dequant_cuda.cu | 244 +++ utils/kernel/setup.py | 41 + utils/lightvae_5b_wrapper.py | 423 ++++ utils/lora_utils.py | 102 + utils/loss.py | 98 + utils/memory.py | 146 ++ utils/misc.py | 39 + utils/nvfp4_checkpoint.py | 169 ++ utils/nvfp4_kernel.py | 296 +++ utils/position_embedding_utils.py | 105 + utils/quant.py | 818 +++++++ utils/rope_triton.py | 135 ++ utils/scheduler.py | 194 ++ utils/torch_compile_utils.py | 117 + utils/wan_5b_wrapper.py | 582 +++++ wan_5b/__init__.py | 16 + wan_5b/configs/__init__.py | 39 + wan_5b/configs/shared_config.py | 20 + wan_5b/configs/wan_i2v_A14B.py | 37 + wan_5b/configs/wan_t2v_A14B.py | 37 + wan_5b/configs/wan_ti2v_5B.py | 36 + wan_5b/distributed/__init__.py | 1 + wan_5b/distributed/fsdp.py | 43 + wan_5b/distributed/sequence_parallel.py | 477 +++++ wan_5b/distributed/sp_training.py | 575 +++++ wan_5b/distributed/sp_ulysses_inference.py | 209 ++ wan_5b/distributed/ulysses.py | 47 + wan_5b/distributed/util.py | 51 + wan_5b/image2video.py | 431 ++++ wan_5b/modules/__init__.py | 19 + wan_5b/modules/attention.py | 306 +++ wan_5b/modules/causal_model.py | 1882 +++++++++++++++++ wan_5b/modules/causal_model_sp_ulysses.py | 601 ++++++ wan_5b/modules/model.py | 591 ++++++ wan_5b/modules/t5.py | 513 +++++ wan_5b/modules/tokenizers.py | 82 + wan_5b/modules/vae2_1.py | 658 ++++++ wan_5b/modules/vae2_2.py | 1050 +++++++++ wan_5b/text2video.py | 378 ++++ wan_5b/textimage2video.py | 619 ++++++ wan_5b/utils/__init__.py | 12 + wan_5b/utils/fm_solvers.py | 854 ++++++++ wan_5b/utils/fm_solvers_unipc.py | 802 +++++++ wan_5b/utils/prompt_extend.py | 542 +++++ wan_5b/utils/qwen_vl_utils.py | 363 ++++ wan_5b/utils/system_prompt.py | 147 ++ wan_5b/utils/utils.py | 159 ++ 234 files changed, 41407 insertions(+) create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README.wehub.md create mode 100644 assets/longlive2/LongLive1_teaser.png create mode 100644 assets/longlive2/fig_framework_overview.png create mode 100644 assets/longlive2/first-video-frame.png create mode 100644 assets/longlive2/logo.png create mode 100644 assets/longlive2/teaser.jpg create mode 100644 configs/fp8/inference_fp8.yaml create mode 100644 configs/inference.yaml create mode 100644 configs/inference_sp.yaml create mode 100644 configs/nvfp4/inference_i2v_nvfp4.yaml create mode 100644 configs/nvfp4/inference_nvfp4.yaml create mode 100644 configs/nvfp4/train_ar_nvfp4.yaml create mode 100644 configs/nvfp4/train_dmd_nvfp4_step4.yaml create mode 100644 configs/nvfp4/train_i2v_ar_nvfp4.yaml create mode 100644 configs/nvfp4/train_i2v_dmd_nvfp4_step4.yaml create mode 100644 configs/train_ar.yaml create mode 100644 configs/train_dmd.yaml create mode 100644 configs/train_i2v_ar.yaml create mode 100644 configs/train_i2v_dmd.yaml create mode 100644 docs/FLASH_ATTENTION_3_AND_HOPPER_SUPPORT.md create mode 100644 docs/getting_started.md create mode 100644 example/long_example.txt create mode 100644 fouroversix/.github/workflows/_build.yml create mode 100644 fouroversix/.github/workflows/build.yml create mode 100644 fouroversix/.github/workflows/pre-commit.yml create mode 100644 fouroversix/.github/workflows/publish.yml create mode 100644 fouroversix/.gitignore create mode 100644 fouroversix/.gitmodules create mode 100644 fouroversix/LICENSE.md create mode 100644 fouroversix/MANIFEST.in create mode 100644 fouroversix/README.md create mode 100644 fouroversix/docs/index.md create mode 100644 fouroversix/docs/matmul.md create mode 100644 fouroversix/docs/ptq.md create mode 100644 fouroversix/docs/quantization.md create mode 100644 fouroversix/mkdocs.yml create mode 100644 fouroversix/pyproject.toml create mode 100644 fouroversix/scripts/__init__.py create mode 100644 fouroversix/scripts/create_test_case.py create mode 100644 fouroversix/scripts/generate_kernels.py create mode 100644 fouroversix/scripts/hadamard_code_gen.py create mode 100644 fouroversix/scripts/ptq/__init__.py create mode 100644 fouroversix/scripts/ptq/__main__.py create mode 100644 fouroversix/scripts/ptq/coordinators/__init__.py create mode 100644 fouroversix/scripts/ptq/coordinators/base.py create mode 100644 fouroversix/scripts/ptq/coordinators/local.py create mode 100644 fouroversix/scripts/ptq/coordinators/modal.py create mode 100644 fouroversix/scripts/ptq/evaluators/__init__.py create mode 100644 fouroversix/scripts/ptq/evaluators/awq.py create mode 100644 fouroversix/scripts/ptq/evaluators/evaluator.py create mode 100644 fouroversix/scripts/ptq/evaluators/gptq.py create mode 100644 fouroversix/scripts/ptq/evaluators/high_precision.py create mode 100644 fouroversix/scripts/ptq/evaluators/rtn.py create mode 100644 fouroversix/scripts/ptq/evaluators/smoothquant.py create mode 100644 fouroversix/scripts/ptq/evaluators/spinquant.py create mode 100644 fouroversix/scripts/ptq/evaluators/utils.py create mode 100644 fouroversix/scripts/ptq/experiment.py create mode 100644 fouroversix/scripts/ptq/tasks/__init__.py create mode 100644 fouroversix/scripts/ptq/tasks/wikitext_train/preprocess_wikitext.py create mode 100644 fouroversix/scripts/ptq/tasks/wikitext_train/wikitext_train.yaml create mode 100644 fouroversix/scripts/ptq/utils.py create mode 100644 fouroversix/scripts/resources.py create mode 100644 fouroversix/scripts/speedtest/__init__.py create mode 100644 fouroversix/scripts/speedtest/matmul.py create mode 100644 fouroversix/scripts/speedtest/quantize.py create mode 100644 fouroversix/scripts/test_on_modal.py create mode 100644 fouroversix/scripts/train/__init__.py create mode 100644 fouroversix/scripts/train/__main__.py create mode 100644 fouroversix/scripts/train/configs/transformer_1B_bf16.json create mode 100644 fouroversix/scripts/train/configs/transformer_1B_fp4.json create mode 100644 fouroversix/scripts/train/configs/transformer_1B_fp4_fouroversix.json create mode 100644 fouroversix/scripts/train/configs/transformer_340M_bf16.json create mode 100644 fouroversix/scripts/train/configs/transformer_340M_fp4.json create mode 100644 fouroversix/scripts/train/configs/transformer_340M_fp4_fouroversix.json create mode 100644 fouroversix/scripts/train/prepare_dataset.py create mode 100644 fouroversix/setup.py create mode 100644 fouroversix/src/fouroversix/__init__.py create mode 100644 fouroversix/src/fouroversix/csrc/bindings.cpp create mode 100644 fouroversix/src/fouroversix/csrc/fp4_gemm.cu create mode 100644 fouroversix/src/fouroversix/csrc/fp4_gemm_sm120.cu create mode 100644 fouroversix/src/fouroversix/csrc/include/element_traits.hpp create mode 100644 fouroversix/src/fouroversix/csrc/include/fp4_quant.h create mode 100644 fouroversix/src/fouroversix/csrc/include/fp4_quant_kernel.h create mode 100644 fouroversix/src/fouroversix/csrc/include/fp4_quant_launch_template.h create mode 100644 fouroversix/src/fouroversix/csrc/include/hadamard_transform.h create mode 100644 fouroversix/src/fouroversix/csrc/include/hardware_info.h create mode 100644 fouroversix/src/fouroversix/csrc/include/kernel_traits.h create mode 100644 fouroversix/src/fouroversix/csrc/include/static_switch.h create mode 100644 fouroversix/src/fouroversix/csrc/include/utils.h create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_sm100.cu create mode 100644 fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_trans_sm100.cu create mode 100644 fouroversix/src/fouroversix/matmul/__init__.py create mode 100644 fouroversix/src/fouroversix/matmul/backend.py create mode 100644 fouroversix/src/fouroversix/matmul/cutlass/__init__.py create mode 100644 fouroversix/src/fouroversix/matmul/cutlass/backend.py create mode 100644 fouroversix/src/fouroversix/matmul/cutlass/ops.py create mode 100644 fouroversix/src/fouroversix/matmul/frontend.py create mode 100644 fouroversix/src/fouroversix/matmul/pytorch.py create mode 100644 fouroversix/src/fouroversix/model/__init__.py create mode 100644 fouroversix/src/fouroversix/model/config.py create mode 100644 fouroversix/src/fouroversix/model/modules/__init__.py create mode 100644 fouroversix/src/fouroversix/model/modules/gpt_oss.py create mode 100644 fouroversix/src/fouroversix/model/modules/linear.py create mode 100644 fouroversix/src/fouroversix/model/modules/linear_ori.py create mode 100644 fouroversix/src/fouroversix/model/modules/qwen.py create mode 100644 fouroversix/src/fouroversix/model/quantize.py create mode 100644 fouroversix/src/fouroversix/quantize/__init__.py create mode 100644 fouroversix/src/fouroversix/quantize/backend.py create mode 100644 fouroversix/src/fouroversix/quantize/config.py create mode 100644 fouroversix/src/fouroversix/quantize/cuda/__init__.py create mode 100644 fouroversix/src/fouroversix/quantize/cuda/backend.py create mode 100644 fouroversix/src/fouroversix/quantize/cuda/ops.py create mode 100644 fouroversix/src/fouroversix/quantize/frontend.py create mode 100644 fouroversix/src/fouroversix/quantize/pytorch/__init__.py create mode 100644 fouroversix/src/fouroversix/quantize/pytorch/backend.py create mode 100644 fouroversix/src/fouroversix/quantize/pytorch/reference.py create mode 100644 fouroversix/src/fouroversix/quantize/quantized_tensor.py create mode 100644 fouroversix/src/fouroversix/quantize/transformer_engine.py create mode 100644 fouroversix/src/fouroversix/quantize/triton/__init__.py create mode 100644 fouroversix/src/fouroversix/quantize/triton/backend.py create mode 100644 fouroversix/src/fouroversix/quantize/triton/kernel.py create mode 100644 fouroversix/src/fouroversix/quantize/utils.py create mode 100644 fouroversix/src/fouroversix/utils.py create mode 100644 fouroversix/src/fouroversix/weight_conversions/__init__.py create mode 100644 fouroversix/src/fouroversix/weight_conversions/conversions.py create mode 100644 fouroversix/src/fouroversix/weight_conversions/gpt_oss.py create mode 100644 fouroversix/tests/__init__.py create mode 100644 fouroversix/tests/test_correctness.py create mode 100644 inference.py create mode 100644 inference_sp.py create mode 100644 model/__init__.py create mode 100644 model/base.py create mode 100644 model/diffusion.py create mode 100644 model/dmd.py create mode 100644 pipeline/__init__.py create mode 100644 pipeline/causal_diffusion_inference.py create mode 100644 pipeline/causal_diffusion_inference_sp.py create mode 100644 pipeline/self_forcing_training.py create mode 100644 requirements.txt create mode 100644 scripts/compute_sp_vae_chunk_halo.py create mode 100644 scripts/decode_lightvae_latents.py create mode 100644 scripts/decode_vae_latents.py create mode 100644 scripts/merge_lora_generator.py create mode 100644 scripts/save_merged_nvfp4_generator.py create mode 100644 tests/test_dmd_i2v_conditioning.py create mode 100644 tests/test_fp8_inference.py create mode 100644 tests/test_i2v_dataset_frame_accounting.py create mode 100644 tests/test_i2v_sequence_parallel_config.py create mode 100644 tests/test_i2v_teacher_forcing_context.py create mode 100644 train.py create mode 100644 trainer/__init__.py create mode 100644 trainer/diffusion.py create mode 100644 trainer/distillation.py create mode 100644 trainer/sp_helper.py create mode 100644 utils/DATASET_PROMPT_LOGIC.md create mode 100644 utils/__init__.py create mode 100644 utils/adaln_triton.py create mode 100644 utils/config.py create mode 100644 utils/dataset.py create mode 100644 utils/distributed.py create mode 100644 utils/error_buffer.py create mode 100644 utils/fp8.py create mode 100644 utils/i2v_conditioning.py create mode 100644 utils/inference_utils.py create mode 100644 utils/kernel/README.md create mode 100644 utils/kernel/__init__.py create mode 100644 utils/kernel/kv_dequant.cpp create mode 100644 utils/kernel/kv_dequant.py create mode 100644 utils/kernel/kv_dequant_cuda.cu create mode 100644 utils/kernel/setup.py create mode 100644 utils/lightvae_5b_wrapper.py create mode 100644 utils/lora_utils.py create mode 100644 utils/loss.py create mode 100644 utils/memory.py create mode 100644 utils/misc.py create mode 100644 utils/nvfp4_checkpoint.py create mode 100644 utils/nvfp4_kernel.py create mode 100644 utils/position_embedding_utils.py create mode 100644 utils/quant.py create mode 100644 utils/rope_triton.py create mode 100644 utils/scheduler.py create mode 100644 utils/torch_compile_utils.py create mode 100644 utils/wan_5b_wrapper.py create mode 100644 wan_5b/__init__.py create mode 100644 wan_5b/configs/__init__.py create mode 100644 wan_5b/configs/shared_config.py create mode 100644 wan_5b/configs/wan_i2v_A14B.py create mode 100644 wan_5b/configs/wan_t2v_A14B.py create mode 100644 wan_5b/configs/wan_ti2v_5B.py create mode 100644 wan_5b/distributed/__init__.py create mode 100644 wan_5b/distributed/fsdp.py create mode 100644 wan_5b/distributed/sequence_parallel.py create mode 100644 wan_5b/distributed/sp_training.py create mode 100644 wan_5b/distributed/sp_ulysses_inference.py create mode 100644 wan_5b/distributed/ulysses.py create mode 100644 wan_5b/distributed/util.py create mode 100644 wan_5b/image2video.py create mode 100644 wan_5b/modules/__init__.py create mode 100644 wan_5b/modules/attention.py create mode 100644 wan_5b/modules/causal_model.py create mode 100644 wan_5b/modules/causal_model_sp_ulysses.py create mode 100644 wan_5b/modules/model.py create mode 100644 wan_5b/modules/t5.py create mode 100644 wan_5b/modules/tokenizers.py create mode 100644 wan_5b/modules/vae2_1.py create mode 100644 wan_5b/modules/vae2_2.py create mode 100644 wan_5b/text2video.py create mode 100644 wan_5b/textimage2video.py create mode 100644 wan_5b/utils/__init__.py create mode 100644 wan_5b/utils/fm_solvers.py create mode 100644 wan_5b/utils/fm_solvers_unipc.py create mode 100644 wan_5b/utils/prompt_extend.py create mode 100644 wan_5b/utils/qwen_vl_utils.py create mode 100644 wan_5b/utils/system_prompt.py create mode 100644 wan_5b/utils/utils.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3656a21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +.DS_Store + +__pycache__/ +*.py[cod] +*$py.class +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ + +longlive_models/ +wan_models/ +videos/ +logs/ +outputs/ +wandb/ +debug_save/ +pretrained/ +.codex/ +.claude/ + +# Local reports and generated release artifacts +*.html +*.log +*.out +*.err +*.mp4 +*.pt +*.pth + +# Optimization experiment records +agent/logs/ +agent/runs/ +agent/profiles/ + +# Native and build artifacts +*.so +*.egg-info/ +build/ +dist/ +fouroversix/build/ +utils/kernel/build/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..57534a7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,141 @@ + +## LongLive OSS Contribution Rules + +#### Issue Tracking + +* All enhancement, bugfix, or change requests must begin with the creation of a [LongLive Issue Request](https://github.com/nvidia/LongLive/issues). + * The issue request must be reviewed by LongLive engineers and approved prior to code review. + + +#### Coding Guidelines + +- All source code contributions must strictly adhere to the [LongLive Coding Guidelines](CODING-GUIDELINES.md). + +- In addition, please follow the existing conventions in the relevant file, submodule, module, and project when you add new code or when you extend/fix existing functionality. + +- To maintain consistency in code formatting and style, you should also run `clang-format` on the modified sources with the provided configuration file. This applies LongLive code formatting rules to: + - class, function/method, and variable/field naming + - comment style + - indentation + - line length + +- Format git changes: + ```bash + # Commit ID is optional - if unspecified, run format on staged changes. + git-clang-format --style file [commit ID/reference] + ``` + +- Format individual source files: + ```bash + # -style=file : Obtain the formatting rules from .clang-format + # -i : In-place modification of the processed file + clang-format -style=file -i -fallback-style=none + ``` + +- Format entire codebase (for project maintainers only): + ```bash + find samples plugin -iname *.h -o -iname *.c -o -iname *.cpp -o -iname *.hpp \ + | xargs clang-format -style=file -i -fallback-style=none + ``` + +- Avoid introducing unnecessary complexity into existing code so that maintainability and readability are preserved. + +- Try to keep pull requests (PRs) as concise as possible: + - Avoid committing commented-out code. + - Wherever possible, each PR should address a single concern. If there are several otherwise-unrelated things that should be fixed to reach a desired endpoint, our recommendation is to open several PRs and indicate the dependencies in the description. The more complex the changes are in a single PR, the more time it will take to review those changes. + +- Write commit titles using imperative mood and [these rules](https://chris.beams.io/posts/git-commit/), and reference the Issue number corresponding to the PR. Following is the recommended format for commit texts: +``` +# - + + +``` + +- Ensure that the build log is clean, meaning no warnings or errors should be present. + +- Ensure that all `sample_*` tests pass prior to submitting your code. + +- All OSS components must contain accompanying documentation (READMEs) describing the functionality, dependencies, and known issues. + + - See `README.md` for existing samples and plugins for reference. + +- All OSS components must have an accompanying test. + + - If introducing a new component, such as a plugin, provide a test sample to verify the functionality. + +- To add or disable functionality: + - Add a CMake option with a default value that matches the existing behavior. + - Where entire files can be included/excluded based on the value of this option, selectively include/exclude the relevant files from compilation by modifying `CMakeLists.txt` rather than using `#if` guards around the entire body of each file. + - Where the functionality involves minor changes to existing files, use `#if` guards. + +- Make sure that you can contribute your work to open source (no license and/or patent conflict is introduced by your code). You will need to [`sign`](#signing-your-work) your commit. + +- Thanks in advance for your patience as we review your contributions; we do appreciate them! + + +#### Pull Requests +Developer workflow for code contributions is as follows: + +1. Developers must first [fork](https://help.github.com/en/articles/fork-a-repo) the [upstream](https://github.com/nvidia/LongLive) LongLive OSS repository. + +2. Git clone the forked repository and push changes to the personal fork. + + ```bash +git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git LongLive +# Checkout the targeted branch and commit changes +# Push the commits to a branch on the fork (remote). +git push -u origin : + ``` + +3. Once the code changes are staged on the fork and ready for review, a [Pull Request](https://help.github.com/en/articles/about-pull-requests) (PR) can be [requested](https://help.github.com/en/articles/creating-a-pull-request) to merge the changes from a branch of the fork into a selected branch of upstream. + * Exercise caution when selecting the source and target branches for the PR. + Note that versioned releases of LongLive OSS are posted to `release/` branches of the upstream repo. + * Creation of a PR creation kicks off the code review process. + * Atleast one LongLive engineer will be assigned for the review. + * While under review, mark your PRs as work-in-progress by prefixing the PR title with [WIP]. + +4. Since there is no CI/CD process in place yet, the PR will be accepted and the corresponding issue closed only after adequate testing has been completed, manually, by the developer and/or LongLive engineer reviewing the code. + + +#### Signing Your Work + +* We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. + + * Any contribution which contains commits that are not Signed-Off will not be accepted. + +* To sign off on a commit you simply use the `--signoff` (or `-s`) option when committing your changes: + ```bash + $ git commit -s -m "Add cool feature." + ``` + This will append the following to your commit message: + ``` + Signed-off-by: Your Name + ``` + +* Full text of the DCO: + + ``` + Developer Certificate of Origin + Version 1.1 + + Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + 1 Letterman Drive + Suite D4700 + San Francisco, CA, 94129 + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + ``` + + ``` + Developer's Certificate of Origin 1.1 + + By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or + + (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or + + (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. + + (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. + ``` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a10204 --- /dev/null +++ b/README.md @@ -0,0 +1,282 @@ +

+ LongLive2.0 logo +

+ +# 🎬 LongLive 2.0: An NVFP4 Parallel Infrastructure for Long Video Generation + +[![Paper](https://img.shields.io/badge/Paper-LongLive_2.0-brown)](https://arxiv.org/abs/2605.18739) +[![Paper](https://img.shields.io/badge/Paper-LongLive_1.0-orange)](https://github.com/NVlabs/LongLive/tree/v1.0) +[![Paper](https://img.shields.io/badge/Paper-LongLive_RAG-yellow)](https://github.com/qixinhu11/LongLive-RAG) +[![Video](https://img.shields.io/badge/YouTube-Video-red)](https://www.youtube.com/watch?v=7oQALy32fiU) +[![Code](https://img.shields.io/badge/GitHub-Code-blue)](https://github.com/NVlabs/LongLive) +[![Demo](https://img.shields.io/badge/Demo-Page-green)](https://nvlabs.github.io/LongLive/LongLive2/) +[![Docs](https://img.shields.io/badge/Full-Documentation-brightgreen)](https://nvlabs.github.io/LongLive/LongLive2/docs/) + + +
+ + + +[![Watch the video](assets/longlive2/first-video-frame.png)](https://www.youtube.com/watch?v=7oQALy32fiU) + +
+ +## 💡 TLDR: Infra with NVFP4 and parallelism for both training and inference + +

+ LongLive2.0 teaser +

+ +## News +- 🔥 [2026.07.08] We support FP8 inference on LongLive 2.0. Please refer to [here](https://github.com/NVlabs/LongLive#fp8-ptq). +- 🔥 [2026.06.01] We released [LongLive-RAG](https://github.com/qixinhu11/LongLive-RAG), a general retrieval-augmented framework for long video gen. +- 🔥 [2026.05.30] LongLive2.0 now supports I2V AR teacher-forcing training and I2V DMD distillation for Wan2.2-TI2V-5B. +- ⚡ [2026.05.25] We optimized the NVFP4 inference path with fused Triton RoPE/adaLN kernels, reduced KV-cache synchronization overhead, in-place quantized KV-cache updates, faster FP4 KV dequantization, pinned VAE transfers, and safer LoRA-before-quantization setup, improving overall throughput by **18.6%**. +- 🔥 [2026.05.13] We release **LongLive 2.0**, infra with NVFP4, parallelism and multi-shot for AR training, DMD distillation, and inference (⚡45.7 FPS). The original LongLive 1.0 is now in the [v1.0](https://github.com/NVlabs/LongLive/tree/v1.0) branch. +- 🔥 [2026.04.12] LongLive supports kv cache compression with [TriAttention](https://github.com/WeianMao/triattention), with 50% KV reduction and no quality drop. Check it [here](https://github.com/WeianMao/triattention/tree/main/longlive) +- 🎉 [2026.1.27] LongLive is accepted by **ICLR-2026**. +- 🔥 [2026.1.11] LongLive supports adapting LongLive's original RoPE into KV-cache relative RoPE and generates infinite long videos! +- 🔥 [2025.11.3] We implement LongLive on linear attention model [SANA-Video](https://nvlabs.github.io/Sana/Video/)! Now SANA-Video can generate 60s interactive videos in real-time. +- 🔥 [2025.9.29] We release [Paper](https://arxiv.org/abs/2509.22622), this GitHub repo [LongLive](https://github.com/NVlabs/LongLive) with all training and inference code, the model weight [LongLive-1.3B](https://huggingface.co/Efficient-Large-Model/LongLive-1.3B), and demo page [Website](https://nvlabs.github.io/LongLive). + +## Introduction + +**LongLive 1.0**: Real-time Interactive Long Video Generation. [You can find it here](https://github.com/NVlabs/LongLive/tree/v1.0) in our V1.0 branch. + +**LongLive 2.0**: an NVFP4 Parallel Infrastructure for Long Video Generation +- For training, it supports + - [x] Balanced sequence parallel for T2V/I2V AR training (teacher-forcing). + - [x] T2V/I2V AR training on multi-shot (or single-shot) videos. + - [x] NVFP4 (or BF16) for both AR training and few-step distillation. +- For inference, it supports + - [x] NVFP4 inference (W4A4) and NVFP4 KV Cache. + - [x] TorchAO FP8 PTQ inference (W8A8) from the BF16 checkpoint. + - [x] Multi-shot attention sink. + - [x] Sequence parallel inference. + - [x] Async decoding. + + +

+ LongLive2.0 framework overview +

+ + +**LongLive 1.0**: Real-time Interactive Long Video Generation. It accepts sequential user prompts and generates corresponding videos in real time, enabling user-guided long video generation. The key insights are attention sink, KV-recache, and streaming long tuning. + + +

+ LongLive1.0 framework overview +

+ +## Getting Started +- [Full Documentation](https://nvlabs.github.io/LongLive/LongLive2/docs/) +- [Installation](https://nvlabs.github.io/LongLive/LongLive2/docs/#installation) +- [NVFP4 Setup](https://nvlabs.github.io/LongLive/LongLive2/docs/#nvfp4-installation) +- [Training Modes](https://nvlabs.github.io/LongLive/LongLive2/docs/#training) +- [Inference](https://nvlabs.github.io/LongLive/LongLive2/docs/#inference) +- [Data Organization](https://nvlabs.github.io/LongLive/LongLive2/docs/#training-data) + + +The default git clone fetches objects from all branches, including our demopage branch, which contains large assets. For normal use, only the main branch is needed. Please clone only main with: + +```git clone --single-branch --branch main --depth 1 https://github.com/NVlabs/LongLive.git``` + +### Quick Start + +#### BF16 + +```python +import torch +from omegaconf import OmegaConf + +from pipeline import CausalDiffusionInferencePipeline +from utils.config import normalize_config +from utils.inference_utils import ( + load_generator_checkpoint, + place_vae_for_streaming, + prepare_single_prompt_inputs, + save_video, +) + +prompt = "A compact silver robot walks through a clean robotics lab." +merged_checkpoint_path = "LongLive-2.0-5B/model_bf16.pt" + +config = normalize_config(OmegaConf.load("configs/inference.yaml")) +device = torch.device("cuda") + +torch.set_grad_enabled(False) +pipe = CausalDiffusionInferencePipeline(config, device=device) +load_generator_checkpoint(pipe.generator, merged_checkpoint_path) +pipe = pipe.to(device=device, dtype=torch.bfloat16) +place_vae_for_streaming(pipe, config) # honor streaming_vae + vae_device when set +pipe.generator.model.eval().requires_grad_(False) + +noise, prompts = prepare_single_prompt_inputs(config, prompt, device) +video = pipe.inference(noise=noise, text_prompts=prompts) +save_video(video[0], "videos/quickstart/sample.mp4", fps=24) +``` + +`place_vae_for_streaming` is a no-op unless `inference.streaming_vae` is true and `inference.vae_device` is set, so toggling streaming-pipeline decode in your yaml is enough — the script does not need to change. + +#### FP8 PTQ + +Download `model_bf16.pt` from +[`Efficient-Large-Model/LongLive-2.0-5B`](https://huggingface.co/Efficient-Large-Model/LongLive-2.0-5B), +set `checkpoints.generator_ckpt` in `configs/fp8/inference_fp8.yaml`, and run: + +```bash +python inference.py --config_path configs/fp8/inference_fp8.yaml +``` + +This loads the BF16 generator, applies TorchAO row-wise dynamic FP8 W8A8 PTQ, +and then enables the existing `torch.compile` path. With the provided 5B model, +300 eligible core Linear layers use FP8; six small conditioning/output +projections stay in BF16 for stability and to avoid FP8 overhead. + +The validated stack is Python 3.10, PyTorch 2.8.0+cu128, and TorchAO 0.13.0 on +H100 (SM90); compute capability 8.9 or newer is required. The supplied config +uses `torch_compile: auto`. Its `max-autotune` warm-up can take several minutes +while guard/shape variants are compiled, so use repeated inference and exclude +all compile/warm-up samples when measuring steady-state performance. Set +`torch_compile: false` for a short eager-mode smoke test. + +The supplied config uses the single 8-latent-frame block validated on H100. +Longer generation introduces additional KV-cache shapes and may trigger more +compilation or eager fallback; validate the intended frame count before +benchmarking or deployment. + +#### NVFP4 + +Point `checkpoints.generator_ckpt` in `configs/nvfp4/inference_nvfp4.yaml` at the downloaded checkpoint and set `model_quant_use_transformer_engine` according to the backend you are using: + +- TransformerEngine checkpoint (`model_te.pt`): `model_quant_use_transformer_engine: true` +- FourOverSix checkpoint (`model_4o6.pt`): `model_quant_use_transformer_engine: false` + +`setup_nvfp4_pipeline` handles checkpoint loading, NVFP4 module wrapping, weight materialization, dtype/device placement, and the streaming-pipeline VAE relocation for both backends — the bf16 `pipe.to(...)` shortcut is unsafe here because it would cast the quantized buffers. + +```python +import torch +from omegaconf import OmegaConf + +from pipeline import CausalDiffusionInferencePipeline +from utils.config import normalize_config +from utils.inference_utils import prepare_single_prompt_inputs, save_video, setup_nvfp4_pipeline + +prompt = "A compact silver robot walks through a clean robotics lab." + +config = normalize_config(OmegaConf.load("configs/nvfp4/inference_nvfp4.yaml")) +device = torch.device("cuda") + +torch.set_grad_enabled(False) +pipe = CausalDiffusionInferencePipeline(config, device=device) +setup_nvfp4_pipeline(pipe, config, device) +pipe.generator.model.eval().requires_grad_(False) + +noise, prompts = prepare_single_prompt_inputs(config, prompt, device) +video = pipe.inference(noise=noise, text_prompts=prompts) +save_video(video[0], "videos/quickstart/sample_nvfp4.mp4", fps=24) +``` + +## Training Modes + +LongLive2.0 supports both T2V and I2V training. Each modality follows the same two-stage recipe: AR teacher-forcing training first, then DMD distillation from the AR checkpoint. + +### T2V Training + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_ar.yaml \ + --logdir logs/train_ar \ + --wandb-save-dir wandb \ + --disable-wandb + +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_dmd.yaml \ + --logdir logs/train_dmd \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +### I2V Training + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_i2v_ar.yaml \ + --logdir logs/train_i2v_ar \ + --wandb-save-dir wandb \ + --disable-wandb + +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_i2v_dmd.yaml \ + --logdir logs/train_i2v_dmd \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +For I2V configs, set `algorithm.i2v: true` and `algorithm.independent_first_frame: true`. `data.image_or_video_shape[1]` is the full latent sequence length, for example `96`, not `96 + 1`: the clean image latent replaces the first latent during denoising and that first latent is masked out of the training loss. For I2V DMD, set `checkpoints.generator_ckpt` to the I2V AR checkpoint used to initialize the student. + +## Models + +| Model | FPS ↑ | Params | VBench ↑ | Multi-shot | +| --- | ---: | ---: | ---: | :---: | +| [LongLive-1.3B](https://huggingface.co/Efficient-Large-Model/LongLive-1.3B) | 20.7 | 1.3B | 84.87 | | +| [LongLive-2.0-5B](https://huggingface.co/Efficient-Large-Model/LongLive-2.0-5B) | 24.8 | 5B | 85.06 | ✅ | +| [LongLive-2.0-5B-NVFP4-4Step](https://huggingface.co/Efficient-Large-Model/LongLive-2.0-5B-NVFP4-S4) | 29.7 | 5B | 84.51 | ✅ | +| [LongLive-2.0-5B-NVFP4-2Step](https://huggingface.co/Efficient-Large-Model/LongLive-2.0-5B-NVFP4-S2) | 45.7 | 5B | 83.14 | ✅ | + +## Awesome work using LongLive + +- [DreamForge-World 0.1](https://trydreamforge.com/): Adapts the LongLive AR video stack with a residual action pathway for low-compute real-time controllable world modeling. +- [DreamX-World 1.0](https://arxiv.org/abs/2606.16993): Follows LongLive by adapting the model on long sequences with long rollouts and local temporal windows for stable long-horizon AR world generation. +- [SANA-Video](https://nvlabs.github.io/Sana/docs/longsana/): Combines SANA-Video with LongLive to build LongSANA, a real-time minute-long video generation variant with constant-memory KV cache. +- [Daydream Scope](https://docs.daydream.live/scope/reference/pipelines/longlive): Wraps LongLive as a streaming AR video diffusion pipeline for interactive text-to-video and video-to-video workflows. +- [MemFlow](https://github.com/KlingAIResearch/MemFlow): Builds on the LongLive codebase and adds adaptive memory retrieval for more consistent long narrative video generation. +- [ShotStream](https://github.com/KlingAIResearch/ShotStream): Builds on LongLive’s distillation procedure for real-time streaming multi-shot AR video generation. +- [Stream-T1](https://github.com/FrameX-AI/Stream-T1): Builds on LongLive's codebase and algorithm, adding test-time scaling with noise propagation, reward pruning, and memory sinking. +- [KVPO](https://github.com/Richard-Zhang-AI/KVPO): Builds on LongLive and related AR video codebases to perform GRPO-style alignment through historical KV semantic exploration. +- [LoL](https://github.com/justincui03/LoL): Builds on LongLive to study and mitigate sink-collapse for ultra-long AR streaming video generation. +- [TriAttention](https://github.com/WeianMao/triattention/tree/main/longlive): Integrates trigonometric KV-cache compression into LongLive's causal inference pipeline, reducing KV memory inside LongLive's local-attention window. +- [StreamEdit](https://github.com/DSL-Lab/StreamEdit): Provides a `LongLive_StreamEdit` implementation for training-free streaming video editing built on the LongLive v1.0 codebase. +- [Streaming Autoregressive Video Generation via Diagonal Distillation](https://github.com/Sphere-AI-Lab/diagdistill): Builds on the LongLive codebase and supports direct initialization from `LongLive-1.3B` checkpoints for streaming AR video distillation. +- [Forcing-KV](https://github.com/zju-jiyicheng/Forcing-KV): Adds hybrid KV-cache compression to LongLive, including LongLive inference and interactive-generation scripts. +- [Dummy Forcing](https://github.com/csguoh/DummyForcing): Unifies Self-Forcing, LongLive, and Causal-Forcing pipelines with LongLive inference, VBench, and interactive-generation configs. +- [MemRoPE](https://github.com/YoungRaeKimm/MemRoPE): Uses LongLive as a supported base model for training-free infinite video generation with evolving memory tokens. +- [Astrolabe](https://github.com/franklinz233/Astrolabe): Supports LongLive as a distilled autoregressive video backbone with LongLive-specific RL configs and LoRA initialization. + + +## License +This repository is released under the Apache 2.0 license. See [LICENSE](LICENSE) for details. + +## Citation +Please consider citing our work if you find them useful: + +```bibtex +@article{longlive_2.0, + title={LongLive2.0: An NVFP4 Parallel Infrastructure for Long Video Generation}, + author={Chen, Yukang and Wang, Luozhou and Huang, Wei and Yang, Shuai and Zhang, Bohan and Xiao, Yicheng and Chu, Ruihang and Mao, Weian and Hu, Qixin and Liu, Shaoteng and Zhao, Yuyang and Mao, Huizi and Chen, Ying-Cong and Xie, Enze and Qi, Xiaojuan and Han, Song}, + journal={arXiv preprint arXiv: 2605.18739}, + year={2026} +} +``` + +```bibtex +@inproceedings{longlive, + title={Longlive: Real-time interactive long video generation}, + author={Yang, Shuai and Huang, Wei and Chu, Ruihang and Xiao, Yicheng and Zhao, Yuyang and Wang, Xianbang and Li, Muyang and Xie, Enze and Chen, Yingcong and Lu, Yao and others}, + booktitle={ICLR}, + year={2026}, +} +``` + +```bibtex +@article{longlive_rag, + title = {LongLive-RAG: A General Retrieval-Augmented Framework for Long Video Generation}, + author = {Hu, Qixin and Yang, Shuai and Huang, Wei and Han, Song and Chen, Yukang}, + journal = {arXiv preprint arXiv:2606.02553}, + year = {2026} +} +``` + +## Acknowledgement +- [Self-Forcing](https://github.com/guandeh17/Self-Forcing): the AR training codebase and formulation we build upon. +- [Wan2.2](https://github.com/Wan-Video/Wan2.2): the base video diffusion model components used in this release. diff --git a/README.wehub.md b/README.wehub.md new file mode 100644 index 0000000..b66babe --- /dev/null +++ b/README.wehub.md @@ -0,0 +1,7 @@ +# WeHub 来源说明 + +- 原始项目:`NVlabs/LongLive` +- 原始仓库:https://github.com/NVlabs/LongLive +- 导入方式:上游默认分支的最新快照 +- 原作者、版权和许可证信息以原始仓库及本仓库 LICENSE 为准 +- 本文件仅用于记录来源,不代表 WeHub 是原项目作者 diff --git a/assets/longlive2/LongLive1_teaser.png b/assets/longlive2/LongLive1_teaser.png new file mode 100644 index 0000000000000000000000000000000000000000..af5a346f05833be87419b697cdab414d74a25d8d GIT binary patch literal 1108090 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

F8nY;p8;lq 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

    GY|9VJ`(! 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%0DCpL$<~MU9H%8SoS3RUA=&WJ*8Or_+Rc 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�VQ4D=)q9B2l8Qz^k{3{DGc8Ud!0= zSU%IW%NIEZ-Y}!!L_kzm}f7N;+= z)%gUy%L+QKLn)rNI{s6rC2+ymZ^mH5Gu)kAacp0hxxQf812~H(fpF&>-wE$wt#bH& z@I^iyWx$nX#K@pi9@oxY&hvo#-iiAvd`}2S@HD%wk1)>Jh@itTJZ1u&?DC!Ea{GoSq*s|kFq>o>5;2r=Mk({eiRs7`iH@2+ zfkyf)sOnawNpJ+L?g-WaLWg^4eu79yk30&TyOTHsX<&BKj`R#NqF0jsYri?)HP;9I z@ggj?$@}6V5e2w5$#FuC4w z1DS~O2sQPcJP1A3vDGgXeVCb2pK=owy2k1`QBk{3GS-qoc={0e6vn7T>6W8 zyqCf-1f`VR^R7||^w6KP4$I4%5B_YU6E|Jsn7>zF_1t0fv8=H)Y?)f<=Ka*`2Qcc0 z7K5V?s8d6l?NEQyMB?yKjOAVk5A!um2_BUtl?fMEZ|$?jwi&z}y$s}-lH@NfitCR zbgU|AjcpRIO={*r`?k@E`wa3Vr;r_@HrFa&;=IqV=xvhASps=a`4^V_^zq5^zx=m< zz?j=AzxnGwUmoL#!13!{U@dGunn(ZJEw@(Y%DFvs-NAzrFNrLg#=b85HQ`&NH z7C?snm*0F5Bm5P3*CcZ;PU&~+@sX303+0jNyXEr5H;D$vJaO)PDS!M5_&y3A<%`gh zJTAQj?qpV`(7xlihdmLQvV-iNb(g)`&*N1?=Ul5Vmx$$^7L%gLF8;);av8;z-URhY z?4+uVta%Mi7%=h$EWBeMXhXfr2C8OE)p5nxK&QoM;vILT*D|e3r^JkCsu<*1Gj2EB ziA6Hc&oaqverCz(*&!wwilV@3XK>Xp#h{MK|9~(I8Yr`%4aPwlFDtk@a2-!OnJ~=< zg6u5vSx%!U^h_(gK=imDR0~hxRY+IpLQzCHQHHt$#f}vc-=}QPnXr=_95VlS3PCUq za+#1y6Z_fx5-uz*@Cl=a6piYu+ZYz9Lj~nJ#))R)m8rw;KtvVnguy}QMCy6ao=NT^ z!p`-Xj57izWu;PJG93K~Le9V#jLwCc&w!<)u@l&?+_+s{e&br1MS%J%zxi*J^XxKQ zLpXfn^;cMkA#lK)4S_F%;b;hyix^^^s1(lm=Wd(eMj=bg@O_UnP2J@&!KCUUFq0EA z#?1V&;L2SG?&wexJ^=6IV^cAtJE_|S|J9ws8r?w< zAJ125gvcnOERM2ea`Z+RN;ne;ZUh2_Orr`2yfmbMy-VL|h@q?TEW_KI-IpefgWS$1 z?>k09n=GQp=LFy`oHpJqYbbmzb`XKd9fUF^FaT~)MDp=$7mZ)Ovx`#1-cg}2%{e88 zPK#$3_|y=wiqLli57A8op8*W$HkYmcfyqDiw;xmU-KU;<^9TMmd4AwF82bNrlK+H8 z`Bnk!;>x5SNCUffvS{O59Qw~xufj?5+YuolSBD>rt|$q-x57DB8hw~v31vl;0sbLs zpa!}r1*IIQ6QvYSG`?^^@qlLl@^-v?B@nI$I7CJsW?w0+IL3vdBYi+;I_=ENx^P$U zWD*0GBS(hHiL;AU2t*i@#>Y8ZaIounfk4*f{6+*EMh=Q{6|a2(&-Tmk85f~nVN&!! z$Z;3iQ)dZpcn4VbCd=2p@*Vic^_)TNj;B#~$_*IT0H`S^MrP>RR;cwmU>Ca&9Z${) z{!j^BjUknn%pGB;x#I<1<|5lX@(1Ug9D9J^zq^GuI<9h!5hG;Cm$<+{I#!UhuACv==koP z(ivqZ3r7DDgnPtE;88o3W^m0}xT}nLH2ecCcSYCaTG}7-cKJ&4Kqr6^aB%ztJ87Oe z%QN5umoA!xQ{L6G4`@JyAfD09)Czw`v1F*>VU8CV*tvsIfw1?}%m<4oz`)5IPDj7+ z^B*hUdHJpKofltacj`fT|5Hzvg~g*0E}PI*Dk)tEQ5iJ0R(4o$>$JA3!G_zLL^F{_ zXXnq9t2Zu`^Cvsy_?%v`C|b5}mM{H_*Wqy*1~?aLb0|VOj1!!(z$65IcWn=Y`upMl zB~3U-rbB7p<;}OCCk#$|oMVh}ePG}wPF2^r$IedLn4KGZD^G|Q=d}(>y(xCK8$Cuo zxXsSe>qJj6oxnL@fW=Ij!*ADRQlv@Ti#xu8e%NeMzU&h&(lt#Uh%oQeY*BLdUtzR9 zNX@+mcOG25>skND4!~KD$yaU0Xf=5%F_83FK6}RLcc?)^# z0Hu2t^3I(O1{+4&;oX{#K6a-yIA$cXz{c>A_iMS*qRBuH70fClR+)|aEUfyY6k`N$ zI=7K`n{!Wh*?B1(DmESeF0ffL&~_KT@(P~0fa0G9vc`Me>aA6-?b6q?)cKL5BZ-%p zqx;INJm@nHpE>V_|MR1MR~p)Iu}gcr=bW1a49byp2V!k&h=qqnCaQRW_Tb&EA^9Wk zqi}QaVOc6Gl$TY0c&!uYQJiola1#9wA3u+SCdLpV@QkyoP{V@`f}*U6{aIZ`~>vUt;Gb&X8+3EW@@H%&YmteFTG58;1t-!C=|gz7mLXLcvv407S!LtEqP4l z46X6g`K0TaV<__`f$8L<$B5`NTrS-1mKI@9hsNe`BJ!*_JpcO&GZmPYCoY`-QZcop z%s%DDN!T?8d8!ftTH?ouvaR@&KB>PqL!WTV`ED2GpAcpZ#g#IL3b1YzKg_oD`TUVZ z%G+kHT`RNTcK+0HoJVJgI>0)IHIXul4t>rTVxlU&ZMBjGCNs+PzUz*RA0Oc$AYX11 zrDS-YQ{>^hogAqI{Kx|67Ba_oXpiGk`ZR>C@+*a;t`tN2rrd!54C{m))X-*aeYB_E ziX-noNVVr47+%GbYs`mJ^G1E&Cn{;H{NgWVekyoZ@@Hc}_kr_GlgH8@t|8^~C$a(X z*HmfAK6I`16O$Q9@&xC)DMAu{=ChxSd?NqZWvpcmB%6l3Chg;>DDSaN%2>8hcy^J= z#iWhKON< zJgpo(2E1r)cK4AbIpa_nrqx4k;zaTl*5@wxXJ%NRTOV-PcAa&(@IQ$^wApXVPonHi z98T`DyFIEkjMGm({zRERjUkLk4%^H#ogR)!t3*5@a@CDDFID&{N*k%Nj>;rU9b+sk zwutf*8nOIZSL*Ip7Z`YQn1sV;d^;~eA}AWiapF0Sy`5tiIOajnh1ZWIZgbAt4o>1$ zBi%I)U0?^8q23 zkrT%+qweTTtD#mNx`9DPr#35h%@o?>eaD7%+7~KVo&Ti?S8k*9#Q_cyH4=cdN`189 zG`0y-qF(w=j*4=R+sTuQ3_);dcU_Y2L zE&>pEXUz6A9HSA95y)_EjNpd2?fm`yz8KG#2S z2Rem}u=Abpcj&=RmM0%OLA0%{I070G={|a`eb;7v51So4(`G zVX~|gnC}O$*+;IoO=GNElr!e$7s@nk`Ro6|e_lRxcB)*tv|2v@Yahqq1P5Vc%MNQ? zHwZMaSaD#h5TvXh{Nr==Of{cRfyn-f%!CdkbE@|mc|<3z^if#-i$erE)j9ch? z1rvd`Q;M~bCfj#*W*ST zdP>{K=RcD)YVudsjrsN9PjD0b)cneQhbiMiy6X2xEvm|PW)Cj8sIMkp@MQsxCBI1r z@^^V$KVu_n`ZxAK64^4Bn2YNzjP;dI)yMv| zuRVrSxNWi#Flry^ELQ827V8me<|B`M%DDwZRro6X?jl&qBfYP#y~=m+I~Mn{RPTGQ zq4&BeAw>qh(279#UvlRK=VNIu^pkecHp(%tbvM^tj{LJN(!NG%>oR$4T)z2}@swZu zLC5AiUv=}l(Ujx( z^dn4;1LjXDOy}s`zV5+UrP4tKs-d%{2=n*Qi|9bPO$dK+w}+z9dOccWknaI_$`(A% zwLyBpqO6mz{BHhoPaZmoeP9I#%xpXgZNhKJSRtr2I|ehZxyw~>=9TwrnGJ;R{;tt) z$Uz^SJ9mn_Y`WQ8hgVvM9S2PP0{UR4;`B)Xs1Gww$;)wwI=}{X&^Ms_6pW=Dd7Sj; z&)k=XG}rz6mfPWGNXEK-Gk>U-c^>4ZO<9ZhGUMg|x%D7XvfSOjRXPhJ<+uN{e@006 z;qq(0_-r}8aFn@ox-4=o*5a|9a^-fbymk%!=5Du+1*&kAX$v*9{vkiZnO#}b_5UX4 znJ>dr+sp|)>KvbDrW@WzAB@qO4Q+Ec!n)=P-3v0he~$_f_yHFZ=`F9pfq3h;o2xu( z#fWV39*$1!9T)#EbwQW#NN*=*#sNs=iyZE1vPmlBi+Yq zQbaMgfIO6P@ffe2=mJQkg+^u#qB5+kl6X(X-rz#P&rXXcuoHdItKjV*t%&xVG|#yZ z$ziAhMtL%3cM!W!&!FbE=U2NZ5~z1iNSq;zQAZCOz3;LBfZ5t28LvW2Jd7DYmaAgQ z+BH^dz%(qB#H(U>A1_scAEphwnq>2|C&CAllu1X~ZD;$(5YP;dr=aS&>SJuJ>A<*D zDx6`r%?1qpfBm2T9%1m05JrNKn=Is11$(}$j5ckgBAH!w!gH^BvQ!*N)M7wKh9wxG zgw`f>ii64B?uN?Qrms{ojDep6U>U{%K&6a0QozrG(Dpf@P>+MP8L;A=!U!$BU5*pJ zqqjkLBN%sU5>F>uyUGGl-lM1{Gm}>AJNtZx2}8rNh^~VlymC)v?iLE5U6{Xu=!O$P z-UEje;MBZKo8Mp&bNv#qU%HmXy!5X-oCdHW!2)0q2s+*|oB@9 z#j$O2%=ymPwC4{)Pj^>iMArD_IHv~cwJfh5q=&B`+^t>VGn)3UvD&bu=HfAFK3 zq}>zVWzn~VuHngx4Sa+RKx54DiJ)w6;d%4rC<8QU)mH zP7cjw7mICj=M=A!SQyd<$S?1-S;PvLW6MRa3TpY9A;WYQ(aC1GJ;&TI1NNX}cH@{g z!Y4uwSc5OqMkeeI#t6r@Mpkz&g-@i)KDF|t5x#{Y!5tB8b~`FqZ*Rfld$XLKeTNY2 z^b2Ek7+A*P<+~W4HCDv|fb-;40y!p)GyfDnexh|*G{NEA5>EyLXFrO6_Wb9QIP z38_3g3%!*XaXxYCXgPXhnkX#5$JtC8vqN%~#7N;rTtw%p)eAc=8F}>6I^h;qRA!^ewUQ?(_(|F9$#R z5!&dn9q`3q$vilS2pr)?$Jw>o+e1#kSas76DVMoIH&D)c9I!dNP%#ah3pcG zm(|*6a;O)M4sh*8brKG%W9J zc%qM$4QfetO{G%{+GnNebIUtC8;={+qm~Qu(s2SnF2^uAx#v&oXcTZld{|+>V#`%j z|8c3GHAb3EWDRNEwjSb{_NOv=1^=>xG%pE@wF(Q0WyZ4dh;!MFix%#gTCfi0CUd9N=JHi(pFaI*}a5VhA{%rc*Z{-k^WyFEgf~ZGBoV&73k%3bK zk66SwfD zvlDx1(gy1mA2vJ6es*T@fd7n07O<&|Jo3ND?zB<7*8Uc5=oA<`7`mg%T0vIcghz4~ z@isetGz7C3gs{H!2V=I4cf1J4VVm+8gDrMOvU72A9NA;99=UYq%5u4kv*}GyL%q(5 zohd@Q;?(I`ibGCG@C=RTOglIUz(*IR%g!a90Z&K83@z|bA3J89{L8B-pI~tl7?&!V znVo5~_%oVM460ydZ0cC#LwV&U4z-sr-a`5x#;KEY6p<6zBL~b>0^c-gsBG3AjT5gG zC}Zas6)JHjnjz|}FFO{4U*-gqw{3TM&^PWVXwIA$a`7$=xE}DnLwb*KMc^3b8Y-T^ zF&DW_2icXSrE>e7>rsHd@6nUgJzthMCd+x>^CBTAMhUxQ7;o7vM`3Yt4kE0_{in6Q zO?Zpzr9s-&rk^H@TmcQY! z%!l<^}a=$t_$xJ1+a<43IbC6xr|*$`b*k7Brv(u}Qotx7n9_;Dg}?-9Ufte9$1p zb>0dNXoom z`^KFs<)8nvuM%bJR{52Wf0*%zq6$ZmBS+@Y6S%&I-Wkswn2V)~9woNGZCTJ$ls{Y} z&H-Dkc?dZ&jUl7!xGoV(d`HJ9k5rJ}+U_ogS0jPqm=J=Ia;(LVt(!hLRxJB9~-1bk_^3oH?4Ox-5!MggB zJ$Sm24mOeRS$>qsW5}o|0}t3)Gm4=TRHR?!rQ&P{=eB*1wSfO<)KQ^mM=OJNXoD}9 z*Rh~H2<72GCx201a89cf;%?3^=bnoS`*{~*P6!6*m{b5#8pJ&ThXxHS?yxnK@Ak|_ zId|q1A&RT~!E_QicLI6XC?9Qiu=W*{NF!@m;S|V~S>rd&u;jiK=iLx6y7q|6!9jjGds`>W&bD!_j;~KmI zekUoCbyO(x^S%Fw0260WgVBVW--edkZDa*$0GK?k&r}_Wav2;s9&EPws*XGGBJ_41 zkrxR3BLgAXj)#@8{uV2kTlq+%@Jf)@y!(GM_vS&CUe{sY?e}`$yQgR0F*Dd#8XyUP zq$rXACDLNFFs4cg#fp{Ks!A%Za#F5xRa~i*|IR;_W5<VgL+g?U~;9?zi^q{C?+tUrz%B7?&wIx!v!*Z@KHa=bn4+Ip>}$FVy0=C)+M8 z#4oe5$V|Hx4-*Y=oW_aD=Pt4 zUD}Uv4z6y!FJ1{}t7I(4rl?|Sy_QuFr0UU6 zM|J~vhUq{jcLtcRbdO9QZ*rtp2l-zYM*#I8lT!IrVH`R~^{`n6Az`X;G#S+=FZz<> z9d?izU;~KUv5E|YKB6qKsh=ZnJpND~7{Y_`pZp)|V3;Z{g>KX_V;(oV_co@Jj$owP zk8H#3LgJ|P5I0qa z`_lU#c_$>P|oE89>|-2d$fQ$~bwwFo+C> z4QSB1ma_vNL!PbjeH&fjj=VhT6mT1p z-u0`czJ)N)QD`3d=bBJCjmBzbqVYoXH*utw(n!l~gY+KBlmqx_fqd*EH%sISFt5nZ zi)SFL-V*a1UA6&;F)o!o7YQO2FSoQK13inMwRENNLAd79VOLs@vpu*soVIz*Ks zJ~-mMT7$`vZW}-T;un1Y2{cfOsuvC5Rn#$*-Nkj5ZJVty7Fhz)f#*?Jyke{aciW;- zXzp(_Ab#$k@+Xpni+JL@wrVssz)yH1WQYsAy)r!`;L|GZBTG+mI~WT(;tbA_F*doD zpHLoYA;LCfTomg%N*F|YfK>@QAM~+~E~*si0w#>RZFr1zj2yPef0%CDW>Z_oaj4u6 z-H)59JU?E;NR5!f;{w;QDU>oPB+9cay}WGTl_>fII_d@}q{^{&muqpYrGhlPR**r} zI6OyEK|aV?xo(h;&&=A<6LsdM2ZErd2dU$cDct{C_c|~P8p)cF6n;c2~`n_Cd5#%T8QOH`|WK*@Cb21`be8^Vl!xt5_R4k@dCXJ$X>}9xbRGR zMcZ7rY^wv>ab2S!q;Ty{kDc3}e&?TlIsF%3e>#2s@BL4VPWw+E&^sks{kH9 z-O!ocP+SVKT(kVfyvmF^9v$jB&vGOe#hcJsxo(qJ21c3O@|J6#MHU5}jT_d%e-j~d z=6?e@?*S9JmjKBC@SOw2fu#U0c3p6t0qsMrzFDvd03roUfUpTp8^kEUoI?ehD$|wLDFE!KFQe?5bu6ghjk{5UX<6-rodPV zAp_eNyQg73x@nA)rAk#5yIKI-R|7C$M+Sz|ObbOG31r;0%N?LT?w)XZV;MkRnX%4Y zA$hb6lp(ZjAG>%e>^_pY?1mv9q&<$W>5DJ~#8N1o(GRpzouuFz@1> z^PNfx9TzBgb|?xv%N;~$?9MB>Vb46#MOK>$Tm`WiY4ycFRzcj8-m`L4gb5dwa4G=$ zSv)s^a}#0}!ff$?c2b*+Q`QT76^wza7<=XB<&qSi) zs10sMu<_)VUAY5Sm>|c1jCQyn?s$`M^=CPdYz5)7qaut>Rh;xnpN1>6}D#b-K!Wzo)mA4kHAbB8@I%=s877l)Ot` zxyyO_OZMjct|6D3Us)xC&+?ZS?;ZA*7HQr)>R;O%mR^z9EN9XEBu#VXxCSXsrYhqQ z(!)l8aS=x)is}fT3sYGHh3rr*KJ2XHx4SdNM078^k->%THE;}fj<94KsL!YQTjviE zdk9(_QI4$*l(sSpvS4`4!Cf|!FIH^2KklGVcTx-{4tys%)`;{#bUEXa$y-Jo-STqda0X$^ud8Qj1-@-c1fdaw7u7|VQte~t$_)3Me- zA#Y+~;F%|S8rg#R)T+!{=m|nMsq47R+=OoT(5@(q6xk}&n!@1rB3M-DMBEB4>vNte zGMOLvv(4^s*CnDUs-8{HqR!`@_gD3dU0y6S=2&#!V4>X28QKSerk(%EE9v^RYeC~q zpFUO0OBHthjI(31&e_@QD2cX`1?`F&0R#E0U^GzhEv-$*dCK**(e%bjU;3~A>GiZd zgsVv4d3d0iZW{+TCNY=5&F~<~>~nV>NCysh#&&l)fYssz=Zal>rk>W{qVf>@X$ae8 zE`RIMyW{*e`%^l6*YOXBtKm9jDvax?Gye@QroJ|=K%x0H1YpwbObMVBJ6J!my9ZMr za5p z=;P@iyWnNMC9Kl37K-B#m^*020d}-XS6W=V+w%46E9t41ew;2{yq<1S?zQQww6&Vf z93R6i-UBEO7SoYq6KUUmjJP(yBN2qGbWf(zAmEJTl{HDwVx5%qwXtBNf8EVwf6UI_ zOrs|rN{b5!Qkk39sMGev+4TMoJdnQdpZ~-3{ySbsO9-yP9MWL~g%WXoeioMG2E}Qh z#DYPqZP6cW+*n`bSv##Wo&)z#RxK=ImAf$;g7tprp3}tS6!QtNczu2=J@L?8>6d@$ zV`*V|j8i|pk$0>l{V*8;~k(MVY)oQMl2*9(~Mb?INtV#O#SvgdHc0V47zolYcPjG3(P{A zVC!;QxePqPsVX=fG>5i&1W*V-iRTVJ`5Whb7x7v7L!02C@d(P(EC1#laIn0%`IqjSCUTJJVO9CkxXB%@3_nL5PrCN9=^E}vPR zWk(}o%n*qntuwZGPt0NmIyKAn6nsPoB_o%@LKcX6gVTjpgdt(fq2QQxN9qvPn_AB z4Qmt}TIpyJd`hOF_FGrChw$W(vDItZhN4M^johHkmTkUZCq|sT7>l+>@x*}Mci^>^ z)PL?ssy0uh<}Ca=UV*frjvZpHe&RAx`)~sn3q10oe%(zvf$nl40_aOXl0|U^L%)ZQc=@Q+3 z6*@P?SUq)Ql(f`y6eCxSf#89$3j?2M6LYnE*ZNwMV>H&%rEAbuwDsp6xu5aApB?kK zTNbC?;lXYiAs8JKzX~m#@ABwye2Y`|qqHszhKLvI1)tJnck1hTNET^Y*dW(Z9ZSlSR6` zZGYN;#^5^z-W<<2c>WNV4GN3$`it__&~sdd{Prq5;WElGROuKzY^Fme4k5tq4_ErL zbMxuxSFWUckK#J8cVD`E>1N^tr?-Xw^j98-j*q6V{Ohl!X@(oqWAHZe9F{EVi(}>W zUb^E*^?f$@@J)^h$I7(J_0XeK6MO}x&@D@aNTvZ9>{9&ZPE*I)HCM{;#VlU zxzI~V4ceS%Fy|++F87ndA8|z-an2-Fq>o+J!Xn19nF(cC8)201cfE3O?~zv-|H+ps z#2Ur)toH(5&SR7jcu#rVoIBayEuZak+U5L0^osHZnOe#VO%%vb4|R@BWBp4f>BXzaXro}zxvuo)s~6JMoAf(D+CWe@+9{a+& zvyUmGCLa!u**lKG;PHvnIX|Bc&^NY6b3l7i==MSbui;vLKfKk%7z!!yW(Thm9r$Yv zX5Y^@E~@g?>07ohegmw?f~k;JKG2b zl`0=LR%X%|M!I(#oJy0Nf!SdP{|Y$Y5=!{yyZoJF!B^~kSX|3bFx=lY6j{FG9XP%B ziNcg3ye)tD!CT?ob1L7{+z6g2It$!tb&QQ8x#Pc>OM^$rIN{h6Z{ob$;N4v3!vBGX zh8>kRF4nyE5BQj!>9)I^!-SXkDBgh4>@HItm&?phjkMsO25-idUb_A=j<5#R2su}J z&6{{`TS~l)`NBBFH+l($FnBD|#_^Tqi^wH%;>)~q{?b`_LIX7*p8_t-`{GKjx6ksJ zls0DXMx>AboR2rs?Hu?8pAA)njT#o{nNyq~dV^irTg!v#=sLW}(sCM{ zkQiRVC|wuxTWMiqoZ~9sL*$btIWi3Rcof5qzX$iH>u=7a6SobgDm12A=co)^!1lC{ zr8lp%(;t3=V-*-kqx922H*#Y-ropimh;^_#M=r})9689@tZ!0R>qEVy^48uqiTkqr z6Z|e-zmZmt;pvQ>)CohZfgR4{<_wE1WHZJShUGd&IH|N;L&;Ugn4$r^*5T(zN8y8E zusmi+SbMysg;lxsX!Hz83(oKhBr7mUJd`FG-)kg&M6{NC2fC1&+XjlDk}e>|ix|pP zx8MiboTqEQWj+E^WaQ1KZ=Xo(^K0pAU;IB=-`q%#JaSh$i5upLQDB2yWqN)!HSu)1 z+RGXXm(D#Hy6BZKk232i2j&=Ia{z9by;d%-7c0FO^fKSJTLWp0v9*cPe%cKigwFOl zvkPfS5T49vj`deQ+r(3zyjaM6_4?YE*Do~;IKwEL^mz>gI4n@Om^ex=+Dv*l9zMd! zNQN?wzwZ^wxV$&%yM#S43W;G6={>T|G&HBm^z2Vu|?$DE`5V!<*J4|z|qJ{13a?y$TBad3uRyE4%k?1&Rj*?#134qm$BdPrcSLes zzv~sw8s=h+NLOT<=rxoezJsI%0^}Bz#wHfnC6B?op#6Jhv0`d58*t4*M`X(B#t1Xy z7&N56XOc6p-$<`rcrAVGv4?i)sPHpC>npw2gRHfQF(5Na&;ZyCMTX4NXtW|7gc@Q< zYixTjuP?ZxL*3}JH`qIv_OV9o!yhR!4sHbrrs@D@7S>4$%T=YsF+ zu;W|W>TzaO`ZUC;(fTf`y>-42&jka1W!k)sW^Us(D_Z~Yt313V9ug!4eg~uaS(-OPL zVJ|Tff-j?g-8J6?S8<$5S$yEVj@)4`YC=QYB`+`3>G(pbD1H@qN|EK9%VY3R zI9rh-h%*7!K(O*@eke0#AC@RD()tkx=*tRRu^SL~m@`&*zQl<0dtk zd+Ce+UC#lMfr>knwKAPvZL=y2>$b@X$^Ap#|^O9zKr1^QZRA@$MzMoTF3F8Dzd=+sHWgN$qbY7Q$uZ`GY; zx!^_*8q!Vw<12oP>w;3{N5ac1e={vH*506DLJq_$qf&-tm8pHd8w=gWt-O6xB#L_H zH~HIlhBBAk9P%^Q=@H%@yLkBT{Zp(s{=L(`EumE_KW}^S9yi97i7cD6o7M{u()qrJ zMQacsnIwSY0$#!&ZuR($odrA(mpSC6FjXs$UUrJPQ(Nmrtz%W@>S{+zNEbq$+a@7$ z$799agDgB1A~kWnE#c7`)gaR%F;+OCJ4s!2T4yI5Yc9dwW{{Ir?A(oWjiu(GobQ7X zbs+Iy4p`R7Q5onplvHNYL1CdF z73~&nhS)-^Y^IZ4w#cP!QKmvn`%K{oR!|UW&s`fq;j;y7XR+EprecM*LdGBtOyU&a z09DcFuaL{n0zAN)vgyN_)g{i+8BP;N4*~2v;99z{;2aUB(@YG4_L4&mH9E%pYCJ2V;k}ZFr`I z83-Jn*(NOy0(Rnq90LFqwvIh|oCO5+f>6mwdp=!z>f1Y6f{=9koJmvqaw84-Op$#w;_BNq6TGv}=vD06$CVl}b*Fwbi;0u!) zVkAE9fIa{|;`$k7W2=8A7V=Fjmp9UUeAc;M2cvb|-cZTF;?unK__3@@c2Kq#y0MMm zrGj9!n~G%xx?`7mVI-nJz(f@k?7;)m;ju819&%mTRiMM5uxOEH+R1&m4(lm|040ML zg<}ci&OvEH>=I$Y6F3ATx`P7BJlxF`E{S-d_Xj@#8|t*XxRu)gs8E9vDI z-b_n0w+x5iH?*^P{&@_05dPKI=hObfXVMtTpHDvVXpCLQyoyhO$`m4@3D- z4kGw_?ebjuqo*&X*Ufkn?uu{)!t}IK$&21erGUs+=e^ktA4XcauWvMMl7GVm1wu*} z<)h;x%m)hTRQlm&8CYSk4Rb{upvl8E;5fx|+#+*CdSD=|C3vT3Qw)TWWx=`4B2yex z=)Q^DT-#!3aIU>$&AT4P@Ks#19R#!Qxc37n`umwD>*<+ip2HFyx8}?l`(Wa9wWb#U zckl~y;Vm<3=}si8E34_!<;&^H?@v!Z^-Oy77v7(aAKTBlV3*Ph zFL$TgPaRH=f9OuEbK7a2vwxOQwl;CCIm{xz(mEcVMKr+MVh676r(kF_BRbmRZsqkn zetg%B8{`R;LBP>5yH{SelI{lfCqz4|pGhLnWJiDRv z;SYa^d0{wx>5sk=E&|QUMUQ3F7|+sM;U4AtvIvrC`>zb!?V)t&*r9aj5Hv%Eg;WjC zVkEKn;4YC3+(vC8Z0exQlpo0<3)5t-Rjx||s*G>l8OmE&k3JR!v+PLCVxg1{ax{P* zVb+;9%*9XML7(fY(&}dghGc{q{LJjkO7x+**oU^%GV|izmS;g*&YAPE)>Z6SXWGYn z>D=t1x~8i&0YVa$hvwmpGzzXT=z#5a7p-XBgf40TxrH_OIQVh=#1Y0lJ0+migW;x9 z`XFBAzHr`D@o28Xr5nYrbTH$iB{`={UyH_x^L+f%rMf((al{Rktkz%QK}~~6+HQ55 z2xVh@@FW^SeB*gGV>uQ}OyErz&QTQ}N%8zO9al=iET8A{vI-mxw#D-vg;^MvGHwD) zv{{cDw#6>!Q*q=AjG3g5))ua)-0~c5K@Ye3c8}ZGgvLuZ7-pve(NYHi3Z`k<jlc(j_V&_z-GR8V}`xid(W^EB;Objlm|0)I=b@?L~^zhAY;K+hn1is*;o-FiI zw9O9HZpzb$F?ccZ&AG<~N+z%+`p`a5@NVhU2|Ov+Cpo4d2Iea5iIZ^y0~)<)@m#@y z=SP~i3ZhWHlebiiH zAN-epk8!b`{>AV8tMtgj_aJnA82Z`6d^(m+pE{5pdhjmhjNbIYzx8w$ zk0a+mi0C8wv5ev_Yz2M>Ib)5H9eZ}A>oNyGku^yW3`NYJ{S|x}Q8qZ*WPov`GCR}7 z$Pj!~xK0GyA-$umUh6%~HLOB{9Qggk8tlq{$v4(o_==eNc=8UqT+pkDzfYntaM^Q3xYk)PR!evAi< z?~`(uh^eKm6mQB{7kMds^i~#vN#npbXGj$F3eb_4hEz0C0c|MUW89em23knzgqLtC zt6{zL>=l7H&hfex&24pOj90>=q!y-^_T@aBf5S)(KDX-G=FpA6kLVv#QtttFLUy~h zbUtHjmgC(c%Q}p6=bs9mQFb^t+^v?|>(Cxge8y1|m#mdj~$$_}OJQw02+wdH`Ky zE^rq*#lSb>K?+{o9q0{=cF30Jr1d4K%}4k|$dN~Rsk&SOY*Q=j~Jdhmh!(~XrI zX>mhuTi<#|?6EnuJLBzE@`Iq1exY4WF162@Aan0=55J-`dLo>)6d_QEN(K73!TDXU>)AJ&id9$=5dqfy^vWDdw2YSLmDNt zT-y?23`#c*&;o{K;EME7uK{AL@)1&SB@M`Ma3jJt^mm6bp7GH>c8rpO{?UVkX#+z^ zRMPT5%KY+NU_76{TgY|I{R~CljiNzPJ~!8#t*^8( zms`R#mvt-OOxGe>&`hr^)_4I!3Trd(=jXsITFxD?-GT2dVdVIYIDA>Nz4=C&K8HqX z6m0FBJLJYx{`sc@*ATEO_#};C+b9{7FNHw_a!=f`!9yY^L>Ea=vXRy?%y{*}R(f`A0XY^@hp}EZ-um)hKEyU&eDg*+exNT6o#Ple+N0+>CKT4q8Q#KG zK0M}trklLPY4C|1=l650*u`r%!+mexuwFrdHLwvMg^EhAN`c$AN-wTl6Gp`fSQ6j9 zvkg8m?EZSI5u`}O``GcyrRzF*dgaLmL8~Fm>6K`Aw~I1HLVuP$DAv40v=~Cz0`oh_6s}tAZ4PC1fFo8@z1ov zM64?zWH06S`H6RBuu@R?{1b{XY9{0-z$EZwxl`g zFxJ3ncWPUTJf3+ajOWz5q>s`WpW76NZfW>!KABFLg7N2AV15r=AhP@y zOAvUeTeXaL#^zD*-38sXk8@s`SN6RXF}`iEgfQv`?+n#q4es@jv`ad`zw@Xx+iP_Y zgB9dg@7u@K9ERS36=_PT- z``AnvNFi_NtZbRm59H+`7nLuuow+=D>4u2z{n|ySikF8g17Hn<8)par-eQdSGi#Y3?fgI)WJdQHLBTyJQ1%1lAad>lNU19&121ZfQ;>-BfY8ald!W_C; z#{(JgasH@p=k-YD+eiQa#FgBKLc{hllA%c&u(^&=!E6OfIN9EqgRH1QnB^bhOAq7e zt*^Mx{aNBb^bgN-e;AcKb`t_Eu3aD67xrrOE&a8Ghm-pc;{}hk!$0|N{^#`CZ$F&A z@OOSG9l32PogTV|w-(mDll}1E@X~s2=8VodYYt~Xb!IHm;ic^ju8;#u4O}A)5)(gUg=D8m%f`{@I(B@y3%{z ziQDSA9CHQac;>rXc+1V(L++Xawx;#9zd468ay*WkTUSM7p4$FB&x<_Ev}N7$uTP0< zoIOcy#r^rNG8Ovy^4Lu+g2;;cySGh(*U#HSeqvmM;FAo92u{R(Fet%Lf%GDVgEk|( zNKfuE2`+m1v%~y2NV@oVHdsGGDbEofMM*it02~+|3Ze0f&paQ>;V~?uT`Y_E4mxx3 zJXYPgDP+`QO=2!`F!IQrUzr-`<{tapoQ-vt47!<&g7cCey&yLqUj^%67?2aVQQgXu7+SAF#dnZGi++ZQ$VM;xOKO(8gGV7KWqHoz z;YrfyIA#~q^4u&DXghUP$g78d8iGZwJ0;5ELzA74u4663eAG*O>>XVRe30wnQeRj6 z*3C0AB$hi0o`~!-&r7raWDXP@Ds+@^!Mc3<+xNBBjs6-57Xd zo1^VT`fz7SM~e6E@)PCzG*@+*!g;Cg(%Qcdm-|b&QAGf2Fpu&R4~nmMd*-Y6e9jAV zw4Z-gF#Uh%P?jkkqM{C_fKd*dvM^bd4(t_eb0os3urM%DIu3>uq=7 zaxJ}(iE~1=7G1cCjP)sarNBLCE7w&7g%z#(tRMKL8}}GkSh%_Sjif=VgWiE7-B=^` zu-KC^)cv7l$N+g>(M|))Ko+0orJ%FHwM?({!DqQIrDH{}GEU0LI+!@)@U9__5+!IJ zbiuJ8rbrWG7Z0~8Xfy&*psjlxQW1w(5VpLahZRAvD5EH5J05JG^;WQV`t)gJjw*i{ zbbNGIKE&Ljo1_|xWXH;pBag?pVk*dI!DHc+c1OSac3RLykd9M;NzN=<|^i6QQIQ z0)8}_aePbr>{}Iu;|NmI1eVAbYiSGGt|hy3lJqym5CXqCI8sBQD7>jP?uT=J7OxQq zw@io7MEdmZb4Sy$J5HzDZ#xz9<{Y~T2L`a9ym=#i{RcmZxF?8z*TW~%2R`^g6wBkl zNrj(yA4DvSiSE7Up7g#4AB4t2TM-m4qg1zVZrr#TXL~A0xpL)d^s@}U_+(e>ve~oP z#ZirtdYu<(uSQ_o%stLe>lj(haeTze%2K*=^-7wtt?&rLcxGv~_oca+n+Qm*rojhK z;Q}AQNY_Fd>48?0e~q(*YTJ`x5W%Dq{TV=|aB(2;#Ii9E$P6iTk26eF7>Up8D0$bA z5IAogro}&c^?X`fUH~8K>EXv8fmi55PK&ALzSyTw9t87|9o`tZ_~uV<_fI@Na7a0~p3!wR%hP>Jlk3 zHE+hR^PeuPyG2@p^M=av-}yVAPREZQPftJneEPGeeh9@%>Ga|KSpG5}qfFmq4k_!F zQ%3T4{VLyk*4@m_<-iTca=FO1UpE=EJ~POll`U71Sv-z8%5m>~_PAnf`2^?CJV!R* z8CudiVS^!2oRJ7j)=@-g(LBdW?vb&hsfuCB#n&&TUhrdxMS9RhERbRxQ-H3+olmWk z#+eFoteuLYn9IG3>PiFbD;J)b9!R@3F$j^0iko48D6q&&dQ_INg#y#IMBlTJk*_pp z{8RQ(JSe^tFh*MLrQx{(3Z61d%uGW*1*X>9V`%(X&q~)?)YI~+?6}u6lVeZb(KKEw z3@-Tu^YYKc^0K`l5XjXse`%h0`>+4xn?>z@`sd+0kEZ+Xe}FPF@2n!J+T$!nek=ql z2q9M%SO_vck%FR-pM?!mxx(DVEUDFX(%`ka8FS{4hC>J~JM1)J$&X%}9pfu?j!{@c zfk773OQGt}fr&VGa)aI1^46pB)6zf;wDg9=vNpBH@W$jg3Z*o-Xj5rv{CLTQ3jU2X z@SJnteB*qsk)zWfHm^0LqZugr z5dt6BkE5Ad`u*SgMtbbicc+gc1Rcg8YJF~jI?cr#Tc;f@cZkwX%X7_;+W{8JYclJK z=RWh}vt``GOIy6Yc#$(RkDf`FFJDT3@!cP$r{9=Ppa0vpr(=f?#{0>Msr11QJdF31 z@ifP-CJn0e1acK)tDjtWJ^k>NZ>Qn0L*QHw$|jWN1%2q!Vz3C|8A@;kyhMf^dck#{ zQSH>`+_+qCgnjZMjAh4B7T6PkcvaU-)Y10s{cprf+wEiEUHJ1fd9; z2BDv9f1_L%m3Q%;fk2LY=U#Sk5QUK z@8rKMHGAtIrTraij?9ZPJR+~$ZWXuke!>x+hqk&F6wiVNQ8B$5Z8Kk6M{&>j!Nzq# zqpFM_Tj{%=LJ=wLc89Fx`a%PCgYfHTCrjLszJb+A?4svgb~PQ*Q2OHOfTY4L8wZ${ z8`9*QgcUI7#=h)DfMmS__XIxm^<~u6=U(%?q?cwD8IoR{QOIXrKGRU$k{y>Z7LCij z^q->0lYQTKv6NMA0)PqOfAu5e_7JG|Hixq~N-E_ROh8;#Zae?0bzCDIOmSHz!{V_Dt4%R7?lDm$G{j0`Pj=% zKX>2{3hak(vi~U!L|VrdbbV|)4Z+`x42*N`E&1Zzpu%xTT|J)FiyDYQB5D$ z{FcI3=i^49ke1)iVsP=daBnlqEVvGMWsn6QUy>=uN!jP1dyF5W`MeB~ zEZ$|fmubuQ@BB4>ndeXC^Ulb7?@8$VV$kT(eo}!h?NV9dc*=@Jaf0g@XV7B)q{(i= z@wxEH3Oed5W5E1vFnz#`>)_Wo%0N7U_=W7PA0y>Hk4K;idGmxgsQe=<9qn83axdKhQ0ah9YaxWq|fm}Hdde*Aqai@7aiLY5_QMef&?Wl6!tUlBXlVua&TZrk ztE>mBl@(;D7^^m!OE5+qKR6ucq&rt1IOx$als9+?dbA2YY3PTcXYW*c>&@l#y)Ru% z$1pCcv(7nq@)++pE&wl89p<-g}2N!p}&hSxn3H3_}n0UHaN7p?GNK}U)8&pd5}c;PnMxWPn1Km z<~FRe1+*W-gFXaKb>_|QKXWC$e(6ej@)I9ojel1<4DC#nwbZ+c5#$Q%+#O8tyD;jP z@g(D*jh05+m9>cNqMf+tbtn_T6W3sRPP*;H@pSy~A&e$#tU(#q490N`*yk4(kV`ef z%Moh9;B7}S$do@C#Q?%}-K(!%!4uqa%x}s$Jpx8~RE=Zs#53zt@~^f{ILA{eSO*If;^m`y%G`3Cz2D`0=+Sp8 z%gZr8(}_W+jOW@kXsFrIp3t>KyOsOqHG;6uV=&7F@`gXVh`PW_8NBXc*Rk>z;q3E` zjrHiy5sqUlYiM4ExR2vmz+LWLw^%QEJiW_hj0083H}lx?y*Zt5aege7dKHb@c@2g$;l`-OwuFDj!wB_)(eeDuzo?LzL?SL9cf(Qg_f)TC|liJ>nJ-lyr>lOI{;|1p54MgdK2YR3!$ZQ z_Nh}x*l>n?*)pK58ovrF%hV{K3?=yd6-Ufhxb6+2r+MTcP8xv}u8SnP#claM?qk~K z1sSSPcmD0ggX0G98^N2+@X6uy&;O6-kO4N+-~P-!>7fsFr-OJp)tIdt517|)LSsCt zN%{(6>Z-jTgM=!$Xy04BI9B$*b@G0TIiyX0%%aL#W8Jj4(oUxjp1`iZgNMvjHY2Tv zC+bn=7B?vAJxe@sZD8<&ignA=Z90Jk!dIw^6wa zjQlNMRR;NvG8B~$*q6`v^}Y-qhZNxEsjw+?D#u_Mue_JWl-F;|sEqj6@GFl0wFMjG zXAf9@D(@0NF(nca^p6Fs=W{6laZ+$W8arKNBJzDzd8dmatPVJB^Gob4c?kLt^X%;IJz@UL~w;R7kx$S&@$h z03;5=ksE0|1-Mks<_2TUB@43-zFnPgN}9wBWa2glSfeFucjrCbbx> zP0plr&r$=J>S9(=PKWv-?uho9U;ZFe4ycMx8P?`2vM#bfYFxaGz&0=h-?KAKFl<#bgAK&?Am<7EqQdBlBfhXoJ;~FH2N!m8~(M{YA%0l58#FW&= zGw21tvyUoRzzPy4Yx_i{xD#G54aAkIeCkILBK|ok^{cc4Pc&9A z&Jeqo@`OuSEWDj;Wqy38LdhLCZE)QD#Ygc>1|xPC)6QU&C=V7WCT(kO9is_;(T{Xl z5K`YcDf*ik7%e_oaKR9}%fY^be+LeX9~lKZi5)$jU*tl*A9(nC8*cDkxwe!JF$q_h zfO~QA(`P%0UiOWBu{U^Me#+<83Z@x2*F$QQYP>WxwK^<84@uwoS zJDeW^PcTlG?tysddnNF6YU2>D4&gF zo;(dEjh8WI1DEmwL$*)ln2T+VfL3sOJ={0RE$+!-zydzhXM{y38`;AJy4gBm_ab}~ z7UsGWyTu%XdHj`iXtB$%4B~q*H6+mxK>@E7Rsd2e6?fb%WR`qohBoIZgB!b}cqii; z_)IS5H^JH5lPFewrs0&&q?6J);StXvme!fX+`D_!K%YW?qfWH6hd!?&xKweaYqAbZ z{{n8t4UeA~Ouzk!GikirzEQ!C2aqT3qpQrLFU{UuNLMajODni2er>&ye#~(jD_1Y2 z1(YlOEKce$NRQrkdyF~T=C0uo_>ogL^97?cwNwCL)Uya>e3gY~YYbPEt2+J8V^Ofw zXnUsvgDT8T%V&VT3PAGhqTM-70dtLA+UHK4O6Sg=g%C8Ech`Xn{mM8$bLLF?ug;w% z7Z(wr9Jn~YfVTt|SFsx%SD2A4FBJ|7S8=cx!Ta#Ya43YcaDO`;W^pWyckU6E;YOB) zyw@r?bj>XNtMhD~U5V1c8eTNq2_gNgb9U15(mIAbqiJz&D-^z$QKUO_3=HnzVto_< z?4*|vI-Wdn5@Uc9{%aTg*H15zf1ko{AhaQ{ST-AD}LKeHBG&;~r&YN%Cq`W+ybUiIU zCF86+b$KT%p~oQWM>G}&+5Mh%)>y&#&Sx4G%2(M#dcXKgoZI-+ORtg-c)W!G0b#eLS^oeIJPEQkCoa)|on zr&-yaT^Sh(ZCfb;3An5qmT+*_HS zPgkxX2<0tmeJD{qO|i4lHmFeataS|o741m-g-1W*rx$wP!y>Yc3*=DVkRp$5YDsm4 zBc#EuK7y3FpV4E|(tMW=RjsP?(dgcGgj5Zk@ z-{P-9W0$-(@VR}KpU1Vx0>tFI%HR<{?g|mU3TK3W#y9hnzn50Pe_+I^qQSYJ-iqgz zD?EgYb#IW*I?7j%jDcZDeP;&JH@|v5UB@8d$xnPFO|hO@W}NKQS1{SzNjLP%=VF06 z1|0;KtgpvBI44@Z^PqEp_fRkBj`d?V>%@UHJAF0%<3D{W<{CMe@BHa^VkhAQMiIaG zu_x06ULksz@fiD1-<)!C2GVl<%!a1EH4P;5{A*!4;w5%RPaim#GlX;G2L{yhIOAUbY!t zgC}}9@CYV0siuQd!<_%Q8e?7=dk3Ca!Gnh423=&%xRdxj1LMN(Cd}e;ySa%VMLZHe z!~>FUp;%LpOEc(4cb5ZaI$QyZ(6$|=fZOMca6ZyBo+GK!_|`G2q0$<=^&HjVE}dtl zTW4Os>+bv0Ap|?uu3e4%tdE{5>`(jJb*ATj3k3Ot4zwc&%gJpeTk;d{48*h9JabI7 zntHu5m|xLg?mV})?1x<*)%@M{S%A$pl|kWpjFrfj2-e43sah9w!{EFWa{}#WwZgD> zesfG_p3Yd(P+?#hG_h!>G*M#$DTWZ_dD%A8RNYJCv%Kz(8)9kH9~tq$aiAx>tJkih zl(~X(WIPL3&5^P!yN~0UP98gqkl!QJs0RX66@44E-ZX+xt%Wjn?FZM>&MY)>3Rkvx zwy8JpKg8}Y=kRXu&)vA)tlU%WUE{KG zJUx8d$#nX$2h%EsbDo3gQD+_Spc~%V9q2oQY*OH;huF0S-c{&udpN^Hm@quEn4KE&glDPQl3W^XCVJEDY{r>)OgnI~x;olV)YRxNL z?APd9uH{XF-{#tvl1=fJQ4wP!9`A`yr!Z&H&(?C!^9t*rcDK9+^@i85f6BDAFk-Xh zyoNBX{AL{*?#NQv*^6w5v+mM2{`eXAsq=Uk`e-_L>}Z;uzlrhZ73c+0E<6GOzVHGi zFDUJcaYMceRQV5{$?+`g^xUzk7o=sp1n_cvT&hT11f5^_?a!xWo`36`-$=(!olGD7 z$VU*kPNkmKYC3fIFy1>JVNBQ4S&k>!kJ0+8mzUBE3Vr!vWnan`M6^}B3&fEFw4(_= zN*@jT_hYmzV)NWNB<3UTca_k*RLSI6v~CS}LXU0ndT)sSD)ld%47hZfhoj7qU-FAktI<6rv3fRCOUxo=4u#p%>@QJjVXT)<2SB8x^yCB~M4^zM%mO1M0n^1lgogyWT5BH&f z;{7a={{?s~-L*>tHH@&HL&Kx#wxi?e_){bz zv(kXiYa&Yk@w#*|&Ag8l56FiR`OGz*$p_h1`Ul!x!7X`b5ZFT(Jnpl(+LNx|*iJX7 z*C1nl32Nz)l6uLgS1?58h`0_ijvb82z$j#bz3?9s>EhLCXgTFLR-%ozJckDIkYVPd zD>Jz4U9RD&133_i@jlk=gK@4caztR-Pa9&lCVbiQ@>*JiznSCr#h0(7+u!#f@L(>2 z!4=>2^x=`2!ov1sucHMn1cZ&lONn#z3Ggj&&)bk~6!ptvD$hx}qW8UN8HYU_okaiE*4WW` zE*&17;P@3>>ocbxJ#sAFci%mDjoV7!`oa11!xvs<V1`pUjHRW@MFC5Ut8$E4fX}I5q<1Z7u#7023wft7>WPOw&KLH8 zm$&ky9||pf5!GCNX0SZHr`xX*zwxcxXar5*Oui`4| zA^wSM1YsHV0ugpF90391x%AEPU)gH(Hko?H zICQZOIaIB_jFHg|X#YMuZ?euoY1_tdSsK&B29e7b=hEHxouW;-Kb&8bbKID|mcIYi zbUIEQ213Sy@;r=bNr#?AS~84c*E7ai@TfJ6XnLT(dVR=Umiwp)Pd-RHU%0x6{Bko5 z+|R}v6!%T&ta?2AMqX@-BNy#s*Rz}Kq~FF6e&p~0@N*#Daog?iY5-P1slOOi!Jky* z?VJ=Za37h|8^ z;=T*__2{19(eJopG=1yOew2Rnmp@8>{~z6*e&J)koK9khIm8hn1AQB582Q`Pt1Wmo z^gFDzySpcldMMAp=$~WKN`Apj6t+P?Zee7Aa4Jn5c_6KDG~U#a@wD%dN0=a|)i4&^ z=|d;83gbOKu1w1f3_H-s(ctf{PvbS@VtTHfR>BV^ssvtt4?!Y0Pbq%Bm!4b+*>J}D1)H?LqSx6 zgqO73OW+g~MP+#7gr6q?;2ni$LKH5ydD3RV9dHRkL4ByNbu9@`hMcg`Vlp#SDunD) zHP-f39zb$F`hR-CQ*tZ~}&Fzgy&` z;1V((=`+l88uK?_+bQmq!_RBuc@G`qOm&nKoP{GlQs(11%S@`>b1b#6#?BG1a#x0#8V8w?yzqm>_#0 zEf=-}2GOn(XLj3dBtG_`e54aW%W}wfgvE>Qxb6Q6c(e(@*Mjr~b`?!fhvA(ecAwW! z_>H7tgakWGhUQ;XfsAvoUO)AWSN5eN*o{)fHb$C)emY1rWMb%&#xG$ljgZb4fkr5RHh9MRAjV4eyDr$)HC(`u zV5Kt`@9&&CoKCTO=un06Peu*S#HkHmg9q{q^nGdP^ubj9z;XJFbA~#j>HC-F)9?Hf z6tRps^y%q3xqJ>wY|lN99Skn~T~yM(Ui+K5Rx!vjOy(-gh^4yQNRbK21GHZ2-DDC5 zdJN@EfR1O;NPdLZHcAomjNPeNs-792N@w>Up}tUOBG^I~;s*OgSI@f)CGZIPM4z{C zNk?PIiqeB_)+}#l8?p`cTS?Dcn@{&VFvS8HPXnOJ)+)QP-g-9mbH?@Er;nmoKb|gZ zEv7XV02TTg5bmj0G}bCoeT^>DHKBPt``C-AvQMHtxdTK zMD?oR+|>n7FvyN0pG${lW~Mm@6-741H&A_#uzOSiRfBn;$&M$EIZcO7pNaUww?<#Z zToX{vG*~cesq0+-#`T%>KmB*Vn{;=-Lf-Dyf8>F?$ovUBjBs`!f}nL2r5(od1n!{y8TpZw(2LO22b zxEmz%W6pzI7j2N|0wbe9XY_W=w~R}K_)cII+yYMwGQJ$OA~07OkDUtb9)0NM=r-2TPIRM%T!`3F!88}PF15lu4#8^sHAe??3vSH z%-~M{&5bD=70W4LUwe$Rp$F0kUISdPJ9pBn9N~eb^%AZ(Z?Hq1wr+E_n{bK_pdKoV zoT~!Hj%(h5Ml7CDs8g>IcEHar&XXTTi@q*GK!bR0o)tC?jUn*(qHA@tk*qfzj7+u- zJsYUpBz_%X-2mf13`{7)-2?7Gk1=7UlrNnu`Rw4M$U~UMBGW-(9Op~vCU?7hIdSwP z<3|uHD0A(U^Hi`QWzRt+w!#J%`YPFsZ^%8af|(r%+nDmvpDLUCz{w8t(!lZV^vu(5 zrAyc6)31H%qv^=hWV*?@bl0!FmR5W2pzYufbsRu(5Nix^h<;X~?#|p%+#VZj&xmtB z>pi;$-uT5EHp0~$I9$hbE@pXp_+*2bd?b2 zgSRH0hD~~ok`_SmX#>JV;yBkx2V92?w%Hj63|>ds|M@2$Prv#rzr>MHv+SN2s30faj<9)S=g^YzX^mGUuJUFnSrmrx2Iz-3&Pe7_0xI>Lg1lqgxj zvn(*v6=}v1VlXE;UcpcXcpbi5_nkg>eJE{@@ebY40L!|pvnyqJVKwmiCi$F%w`_y3 z>v;WA0WI#SjB)(}1z@a-XHs2i!BfFBE}a70uO;xJR}F<9RV0--0+^9 zV@&wQxm}$0lJv&Qca&nD@gm2Gj^}~p`rL&Ih9C(=hYvz%Nxs6Xi}M9lqC4-&gX+b` z^6m2wu#rb#2>2t7bB*OZY!UJE*?m#JtXNxJT}c-%Tu49i zSeJJR^k(|-LubSD6NT=esx{U#hPlupSn%Qy;+F~6gX*;hPH9M#}e+?QHTv9tTs>c^K57<<-8`1l3&$3 z!M3ys-p)F>hH%GErFSI#-+%mX(;s~4%Qh<=fL*u=Z#4{!J%r)dJ?Bng?20#}ePe0i zMkgKQD30pLv9$l-LVD`2{tCm*t9T+>ig{9*m-B*ab>S3n3p1VFmN^J0`0cwKq#Y6XiFwo;u5;hycUx^-UKi1% z*Cjm4Uy~>|%0g4V^Mx5=b6Wsue_If@3y)~n$t%nQ3KZ?dOezBefHFag?RnWuNJ)IQ1vv! zgPn}vm1{qFq$;$q2WvKESlh0DSAY|Sahz_(I0eT*yb5zbhM98}Ms#=>bAE7lU>n&9 zW^eEd@`_}FtW5)p_4Vy^`SoSqa1m1-@88;YMvoc#pKC=!Tbe*Ah%^nPwtfT$8Ld7>Q9#~tMW6U9k9Ndo#l(JZF zwxAIWjTKPX+rJ`BhIO9fn(!p{8&4y@=tCng<_(q+w6CaLhD*E(+%vPF(Z(a0C5U^u z5O4_?3wO(Qp3ZgPxn2W+r1YVUfl+5?GvpKvj2OQ8C$FXTrB-_K!;fHSbd2MY;3+yo zX|Xz*Hh8YFV^%V|j)U&7t_#Bl_=bKAUL%N`wjtUq&BA*p9tJ8XziaHabZ&U&=}QS# zC0h2aZ+}01=0o=)1KUJdbx(TY7aqe<{#d#?JBrf;HIOE?^r75AfZ`~$y@!9 z`=lwKR)nkwHnHVt800)p|FVeG2vZ(aW7aS(EEB!sx9k^X&u(5&7Hq$@z}I*Oosx$# zNaM}lZgwuJYFJzbo*ArOcL#La8;0vDVR$YshUZtG zQ&*Z1LHL(-uzjThHE0Ks%qyrKFD=`#5ynH7N5;B?_tHE<$Khk)6z`3~dKnyyF~u{z zIF@57^R5K|V?`OGG3NJD!5y#%{-)_i?iWVgWUF#om`Pt;gJ{6!#=VzcdO59PO zB?n^@`_jn4Nep3@(ut!-dDov_JO66x8X8Mur%odl2mi$R-8BU5rcD4Z7fGF?Ty9mM zo45D7f#>Qe%V*+F?o&rjj%XH+*Nm(5BkSl;j4(dJs0Lon*e%u~a8<~t;c@`?CU76Y zd*}{Fdj7Bf{rNO~VJLm-H$I*Y-nKtgkH8DUJNI=@aTLZ9^rz0Qee{zUTZKLm*c((9X1j`}?lRG_XC2cRqD3%sOkeXoqcILwSDwm6uSOPo-n`9mddTAWd*| zP(Q{8pZ?4z(}NG*2fa9&e)Quj$SglrMogHZd84Xq`!Gliesz4y7~;_x8XaUJ)7lQnKhLWuGCcP?ARr?ZL=t2W0Dh4$EcqY+ zS!m&+(D%F}pALCu<|IeA{ruA|v*$gH7eQ!J)Y0D_>S$UAY?MP$rilrVYZ(iL-!5J} zgG?chuH3aEsuX7@G~D^j0@($NN@FJwWY)F{7@ECs;id?pw?fmHlqj3xC{LvsWstY- zcdfhcJtGmLOk}q7A&X+j6@A3QOwN&DcfS3T^Ro`d$g%Qo0a@bbK?r$>v@PmvcfK=3 zTI!cG0e(a<4?pGbGmRu|g~8k)A8}91c=u>4+>)J+{-H3>$x$(=hXffZ7q${miDwvA zke3s;^jRDM9moaz;Kqs1s#v;~Yc43=MX8~P3Np*6A~;mJ;W_E+FwE}y=u=?=UYN!O zwi99&{#ZT>0pTnTm@@^$xFEjIos^Al-uy=$`mkt%&!=KkhW~6;o^i~+lhJFE)_TV~ zkuO5|8_5DUa^GO-MC{WCr_${#Am>qx&Rm;eELaEf7wBBLnEv6LGwA^Cuhx0i2fl7P z-h3^L;y34=`^^Wr1mhTtvo~Hm-1GJJ*n1-HiSz%>rL}fEfjcg}plQN`DJXV$sXq6P z5gCx6N5MfBfh;O2>|AK$Ubl^#+Krv7FdA2J)4qr$^a=`eJR5+io4|JyJgOmx?dE(^ zcU0JeI}EfKO@O(ILPCbu`DmMXDz5T{$THG@TLbskr9W`sOZj ztat|=@<19cuG+Ihoa=n|$p@LBQ3kg*u_~WS-~G-D>FT9L&KAQP2yp0^*_&VtfMR{@ z#u=YLA!=&MlzGiJ{2+`eB_ZWl61RI%xVX>~_e)O?rmwKb3>WUyL&lAz^y$Wr!ta6MA2giTOfSae|+;R=ZHG~mM2*|uaiH1S|TR(0F z*on{1KKQZA><%&P-**yPP21}?$p9f5uH(CU7oeTE#D-S%RB&nA#V&pN@i5Ho?Sssj zrh^`>)4u&&_p<}y#?71L11+Kc?v%0(?z)FE;jW#9I?Qx~uENU^v>4hco#xuHItm;o z*gZXl5MoFdX10?!THYFL-!_W^y-y%#N43NUW^;#Kaf_{`5cVqk&{d!18rm!{o$nMT zsic)|*{@X$8C-ZN0Fb7YJ7YAI2wbHw>16IB(uJTd(;@L|90jek*z-kIT5}O`11F%D zjT-gPy+5^B7P^3wsy%4R#Ezq&@(%(;iJ<`_ea4<%wTR z@4NF` zt{fxHfESq%Je$h-z`rfZaN+j&J;y_V{g>bQ4oXao9x+_N-R=y>o@lwRQcGoN7820k zzFT%Tp)Z+rd5c`pqO3*Kk!oA8emcE;ya@dsemt!&5Ax&@oHts$cL0`{WdsP zaT{7|8Sm?4Ov-yS*3s@lvfA@#Z{m4MHF)+-vUOF1z$dOTCG=ck)#EjIJZB zskHAnc+r{X4E8N{>_D@iXK}6>X|}0L>|6kL(RbjuR6>hryV|nZq|dGygr(fuYcBuo z3F|IjXGGJ~U~W|sb#<{@9RYU}uTUG{Lkl`uVcpTd&CV7c40Ip2$(Ze(gl0jP#l1Q> zD4#9gCBJOQ{F=2uF#+tQF;N@{QeXmccpgY8-pJn>$MGvqm=}!ZQ!b{R*FyM5u8tGq zxHC=~;$qiee2)xJh};D4>f~QBoeDX|IGhFbY^1}tAH=QxV*1Db^2_NT{n~@+fjiD( z6^}=dOVbzwpm^l3-9V@XjBSzY5A$|T7-qLa@Ygh`sZf>Y04~!seg|+t+y?L?>|WB9 z=nzJ&2XG;;A z(o+Rp-6+rlS9vyu@?PB4sI#~KNYt-};fA}~tcP?}<*0N~7{xPT&U4TI&g&Tzigb3_ zhE`LB7kEZXRdC76yN2730&{itS~|hm#Sdd#bojs|Bx)O>&LIR6_oNH2zn)%v;RSY+ zGf%6;%Y|!p>6G(T*tvIok+uiV;U& zWG^pfU!mOa=s|(*_ToSKLPecYqC)lwt5_JCn{WpDeHofuE#WZz%KX@aYNMaX) zPgc*lqT7K(kQ9hJk|$|g2!SI3@lo(eA5`9Xlm$Sfe~XGEf<4>?Z8u*c8)isOgbq#$hQ-5MMQrknUgrLD}+@?qZAa zMSV*;9c^{qkM`^^hjVOz5TNgaAK}iv%pGdp(g^ujOUOnT@|OGdO{GsBIv0YZ>o>14 zCZ(a)pB=~Q-za|;ql@gVXE55e4c?Do$gq$30Eh8ua~@a1?8aLJeW(AbgxICv9H~{|9yF{jIdwaYNH$ju53h z^YpDt7t>=8-5m-$y@@>Y?Dx}i&pw+Tz3Wi=_{Tq%dYHH5o#a19N8m^M4`K{91|PPP zo_z9S=__CPYI@_9%W3=&#~UILR`D0(Ghj_&)Jwk2XF=X7jl1|VR^Sq_S;AvN8yx=BZ~gM_ zcwfWFcC&%89Xu3Kr~^s@`1@Xrk-ay)&+-^IWAWOjxqRpJGK9Cu;zncWs0XmE=^>?P zM4q2=g~j_Ehw%gN5ABwXw??7j&+QS*Q%_Sz(eJh z@E-PsKtmEt9e5G9++$!W%t8t}D&Gv8FyvWXX{L+MEpr6M5pW!@9_)G^#XAlI1Yki? zDa)PB{%Nq7%V5W|$9>gNY($l4ulOu1 zt0n1CzF$~A%?Aa9MBT6hfH*03v=&a*tugtIbJK%ZeD{J0j^ zg{E;Gb*T;X{9{_ZISezH*V>%-{UWXVanM z8qoKo=U;t`^4ieyk?4QRIRahJ#wN7Z<_8G!-0ro(KFipbX-?oB&xL2EYs{zc@WRbH z#7=f-gY{O<;SSsA6EZYU>neVh^ijO8Gw!0jymQ_)SiG2TFilym_j*YRx=lXv6D7U} zImsnNS;jTkkMg7TeHew9c~rzNE~%_I;5)A^%U`2ya12j*o%Jw|Ioq6NT08X1{03^+ zoE7p9)+*3-!#Z>C#W&vy`QIeo6f~G{9&DrYslj)zBV$?zSGVBsT$La9d)z2Q9n+>em8GVTG@-G2*jX~3+8*W3U-edn)ZO5>L@Se|7Ge1~N=4znk2 zg~0!eCNvvL1?@A5X(Bxrt{I&7qkiyE9q`J2bB>P9H)?^?L~NIkj~Ad&e%i|Nj)AC9wjSafe~#rayrg8kIE7aq;NrW| z(~M(<6@*z>LDoO}q95Y9yhZ{0Ec3{4rxg*`h?ze6oG}1DxGVP{-||{aa4gw3!j#Gc z>|Ou-O$66Ge{DfL+WRqM@1Y71UKHc;k-=fW!gwesleny7F=oS^5CqsQw?YyW=(LNy zKw43>U^GEGGj}k0&UUL{7cLGOL%A>uufDU#c5;daGXcgJH zAS(%|b+F9}w0tjanXmIRdIYKoqVV2bjqs0c~CV4 zNi?281><2sP-xHPEjFz%I4FmYo3!NpG6CR*BHSHc^}Ilcrg;YghFb_`V+bkjqTB%( z8ePB0vRmCc?uzROc_fxANDWtDN)4OTRof*)43?-l<#KPjAO!K7dxpypYI+vOxb8<_ zm`{$3r;Ar+(@hu)bE1}!Rt$^X^H#bD8A8#FTq+4RkpeX_zv`ndU|J}iBzB>I27iR5 z`8cqfEU23>^ieP1EkjaewvZU_gl7XXv;zFJV~3V~1YuNc0d6XIhQ0%LS_>l~8ik80 zV2n(P{znlCL#IoNiJ`twvUq+--lb$ssC&`R9bhPKdM^>${Qx+hi;LoS4jD3#y1)ws zQPx?j_+A#8PG)WTCEPg*c!HRhKe-ofLDAL-W1f>O*#I@lQ~3g66DBkx7T-QMp4MpV z#9c;tCr&glSkNA*4`Qo=P61xOlPd7h)t_!vMMnG3n%HC+dfS+v@%U}wR_%Q3n29HH z4SQdiT@kGJp4;;AyFT-!CBJ*HfW3vhJ(hJbh+Wu!@>gZQ`DjAqivkiWVz7M~b$|}r zM|e7p``N*r{V@jT2mei)>B7}AyUyoOoX-<;nSI1-2+ut0oV61Qan3DdH(mp#q6ZI> zdP?X4U_G3_+CyKeC?9Ogu;h9u?Dd$324lAux=?|!i289~*0r}Yg1{>ap&a|+5ra0e zQ8za7*k1d>V75Idue$jJ-nk2jYw5=FO_qmj?d{>rmmj@yAzgXvTKYHt`;Q}?wK;ow z6nC&wsXovScZIhjpg+jY8+WX^le49k)`%3P#hUmmqw7u~@!Opc&2@I;AT(Fd-wP8` zGQ1sJ3Gb+(Abkac4wZUZ+zm0V9Hi@9cTt9UIfmLu|F&tX=~X854=cdxhS^xgl@5Y- z+RNK0KgOMtla2H_IIGYesE`+oIpd&&rRB#pZP1ltq-B7NO?0Qr*M6M7`}8yEPBhUY zty$dp+=MD$+Ddxj$OjTO z3d{usZ%%49EXo^7Uc=Ba(kKa*_3X% zG=m{FF2Nqho*#@ws0M8mbLJ3Aj-V{q?$K>Ji+XtKj2n3#+J=_J98BC$03??Z9Mc{!&pEg~eSIo9YS&d7A0R?s*)$}Ud?^yW2&p~d3jB6zRj032gsV_n5n zet;9#xQOqx%bMppsR%rDO!w;07q0tM-W6OQ9ZMHp zemv3y~Lf_Ce9Y?R4exWt8n03c#m1v=ws81H^0xztD~F=D?w; z^!s1@qjcdWI}+JdCtcQZd5Mp60?r`V83B#~c7|hAmFX-(NiXu( z&zt2M1pY!p0TfsVbqhK+1h-pFVd+O#nW4W|Udn`CeZ^><2 zktm<|jL$GoBvPD{E>lO~4g6EKu9xm;R3QzJml#BllUR}62zA%_9v?Z2Z>Ksgyv*e0K z>p95;)~eU*-9SJ8KdilZkmtvB*w^!$``nqG*<<$J#qQ!J0D>e4fTRE(G9~aRmE=%T zNwOnLOj(grE+;8h{z;Xql2RO3RE`x}CM`;Glt`rIh$g9n6bX_bNZbpM00Ar(yV!eY zXXn1p-%LKA*WaF*1(uX$vS)t3-}mVA_3PKK-+TQUSjnH7zTn2{YBzi>NS|IWs1 z&@1MTj-%-;1|Mt8OUvwdSEwr8_iQ%z4z02qxCtx#A?A$d$qQ;rxs7QWp@Ka8F8Jgn z(u|OPt=V~~D-A${r%}#b!&UP%bw9@$-*C`YB|;ZR@hr1WxrI69MGSDd=Aj$FBigMn zGw8JamN_ngFa35+(4fH!lhe?IwRCWxGySih|8Dw~kN2a@d0+au zUC*Y=m*G>~&59e&MRxS8vWu&Uod$J0o{Y{9rxjd-hk*#`8xg>GPPXlqFBTTA9lV}n z?pgA4M}@lmS3o=%(?qCE}iSAP8$m|O8?0NvcTuQ%Ot+kUR|?lbv;*trEiv&625 z(IIwPqQuaMPldgLNc-T|Klu;SxwB`}OB~nH+k=1}+?c1&*Eoit4+ALq3_V9UuIJbd z)m_JsQQE_rt-oUcWqE$5yVzBB1_W%`p)a7@Q7m?0BwAnTO&@sV5sa_)re|OLZk$(m zJ1*yEsQX<#??{)fT|?OAEDHTuukhEd`2iuijsAEYL-S_Ob&Us`k?Zhkb&YI@9juAYnA#_to0Q(i}esN`4$` z3KnB=x9%FY0z{+}VF^trCIXMitd69XJ)FnN|HFy2@X ztbh;lwM(ojE-{a{5Wje7YM7)CzA*twax16(qJeEkM4ImZKW=OuZ_S?HASodd0(!r>6UDZ8nYE$sZ!5JA{$>?(b1r{8Pvd}|nB#f$*Vl(85_|GXccu9 zvd^5nknZW;oj&`y&!p^C@Qbafe^IXOFfi|e4o&&uYDsmcQmJqW=z~01)qjYj9)fB zA{2&iWqj&EGR8A)atFP1(YW$R!OIm~0SH=x9jeN=70gM%P6o_Hhb8iEJRFUT8DcC6owX5ToU z8mv|JPMPmEaj^kha&DwtYc9OapE~Lh%WS!fdA#66oOKQoTeUE9*isMsB!@=aJ~NME zbbr9PtiltGIjk>5Mcxse+l-sE4|bw$0hhS&Ze0j47rPlh$RUev2f8qR^f*kUdmIzPjz`vw9&eYrFL9g?H1bMkI`!0OI!EO$q2`r#?cCR& z=G&!T#M3hp*{%RoH{sY;4Vl(kSJIA~cBiwiUrn6=N!e@F+-RmF)?NF~q!(TtN^k4x zOFixI6ONm3d7Rg}8t2jjpq_5%8`Bi@>)b>=4Y7_H=-!pCx?^;iGrXCTrC+v-S_NEI z!qrCx|w-%?^P59?s-%7lkL>2mN@EljGt&feJehbp2%dX zF$L#x(087{ytp#MkxQNFb&j0-=fCwA=@)|4XD%wQ+)iK>Xq`w%*^MXwYj}&f zfT7N}zV|AIN6)6m9(xR4sXM&R$b-K4;*05)<40k4Fa~E*>PMNSu}K@op>6QM;yEG! zU@c|N^N5Ck@`P>F5%&O;m%U_3%Y}<$TP2cX!+Y0Gt_K~5${MVH{Kt>H2=g^_rqBFx ztV?Uo{}B9v@;urn07Pd*@O9$y3LS}3RUH_ zO=>zRM+zv88LU^HN@*c7hIQOU8_E6`_ie|jipo`v-{Os9vMAQ;;KKxhhPS`#c0nHR z%~M?R!y}$Gq%n+c!#Lc&;du_yM6RRV(!|Z{(3$uy@XTENh?lNa9CPXzm}5|yd2L-w zc=L6hw{tP;@XY2EG%gxVbx7)T>vQXzcc6P`c}lZ|3pe>uR9Eh@x&?|PEqooiq!@WFd7jiZd-Hi&n5ewUsIXWuhFbF_{9JUuy=_Ut=KI_8nw=v+54GTjg! zusT_9&Idl`I#}6ltW_^Ti(W>5FbJL5vD%;3-q;R*hs+PJh^w5@IWgZU zduh}_n!KFRl^;#A&Z>b+Ey$MF@hmYi-I|`qRn-u%n1@%`v#Tf7@jSZ9xU5lD6LiTP z@YoKfIpkJdJZtX2VA|<}Pe-@Ur0sY_+}%-2XS?g^BAWw-*q|`G*aaWS zW-Ff0qjOpW#_P;~U28k3j`(GNSqij?u+p`Zwzb#srGg>uo+G(E(1P03XsXX~+z&@t zTs?I*EsPGQ-hDgL`7 zs2=&NWj6xrU=IRDtlyTg8T4RsziV%I3$Da3k7?r0K@1?1J zEN_v`3Jt7Pw_z~qCK~xLmFZ_ry_RNPMd=TZ66tcTKk~P8_m3?wr?3zK`I#Lgo(?iA z974KEc9xk-2BZ@#1FeobA%gZDt7U7~OJOFXKs^1->y14iN8chm&KZbi%abse=Pep=~Gw6g=c1Ktcvl zEYNsjWb5E-g6*)raSMg^Dl>$_z`@5G+s?m3$q+(J2AfK9U)T;^bU5*a>t$doA=OG% zAzCQ5saw?F^mYhR67$x|TLp>bHu2n7B^W;lB#X#6x6U*a8EuGo)-6}hUq3V@^0mtJ z9OMJ04@OScYfZE@+$^%Fa)*4JO9ZaF>s)qc2=}x!4l;*QjCwmP41Sl7gDOAu&Go@5 zC|uJbaR0&GSWUT$dpxbFK=&mH{V^0+=DW@BQjSk@l3ZGy1-nXQnFM>&chNpNasfel zm3?Fs@0e+|=&jHdxC&eFgWpw*24Zp}C+ifR613caz}e^SR1|NarVta<$|`;AQx>n? z5GWV!?m}wByq_F{@Vi6AF_i^j_7jkTIBqhp)JonfaE;an)1KQVY=UW_zg4DbJ=%h> zsfDxfWO%iNYbMen{kWp_4ngwnRc<%saaW#6JXV2AAA+LUYZK`egwoq^Gb}8Y74lMd z7qIShi%Ex!T7Zo-z|pGXkyYAm{(6a>VprxCnKMt{8q8a~)}5T=Bl^IGSu1|MEXFAk zbQf1kjA0iRmUA6G5Z7n_+2L;$c{5kXmJRcqa~$o_m*T#=tYNr;0w=*FPOzgcjtG_M zLus-$i2?zuyL2%PvuGRQ)U8p}=Hu)vaugv=KUBlVg!+Lhc%Homz9j9vq}^Dzp6<8o0QFa@*2JfA$@*V{>w3iZg2$c!%)-j7~>qcL?;) zzHttrVr#g;bLUvW!0^UkdDewGO5ar=>2h;yjNQXb;w~lv?|9$DS#`_|Rvec!nbC1k zu91qFY-7iozp*IiN`>F52n2p^=X^)=pXFGG2F8e1$Qfq*hM*d_DHz0^s`ZNroL__U zO4(JCtD51cfVq8}3#<%d$6qH5k>bGpoR`*&aBcxZq;_0%I+0567v`q}*A>i%(F^_A z#_s85T#yfAeQZ!TZdlX$Fm`v*&(%Djv4l<1kRrnkjAPt%Fg9*QF#dhUxirh2WCkrH zSIKVyH&50}jB(7D?9b(bB9MddA4mfRLM0iW3<%2FpA!X5eC0n&>lK?IGud?`?2uo2eeb{ zjy{h2`BoIL6YOUAcYpHvlEqtofAd#=j`r+GXU?2Ylg!JV-SQH-w_DkP*oaY+@M!@S z1)lfZdw+U+HBNj6xcPz}(O1jB#9J+|6`0!BS8)S8j1b9jcB938sg!-7Cyt!8cLqym z5eh05JdelKmvP@3qBl1lYh+Vp27YU#m>GR{}G_^5QG$Rg8&jb{Aef)}Yn$ z8iqFd$T>>klRHU}vGSgN2FH}y1T`U@#q=o~L#hzGodbeL z(%QHvFE^uI|Gau{HYI=Sq0v`)R!5=kwT6^=evfX8^+w6wUw2!rBDA<=XM6gyFFcyo z<|fm}-o6t{5IceG1-y8`8)QR~T&wIFUcQ6*LOzE^SWY_z4z|a6RPPw>pqxWUFo~PsnVC7} zkEhe&n{EzzZN9CYP3h{;XeiIyF?i6RU>hzBn>0T3kIWqZZEc7i$X{_N z-J0CE1KgFvE4aJ+@>d@Reoc6n=}j-cb_O@@2&h1yE0-_P?I`qFJ50f27)rn7R=xF` zVlodWA<5_>l9Djf&AiT)KPP4&mcPQn%$X}R1Y+(qtYcUbq=;+V75J62q6|wSaPJV0 zz^{t-e9bro4&glm++9aGYnd_LgC=k%JybD8-i|eCr`0mgz+dVwtqKna)$^!#E}{C) zZ7EfVT2)oMF4~)Kh?Ao^ei_Y`(549sW!Db&UC=&o%WK#3!Q+yTzpk%0LWO_jURc`S zy2}i>^1?i>3*M8@Tb^%3+H3@|$k0qOZ=sq#)JIAt&Q}-`yrI<>+a|&9 zHr9yEjP)jPp@rQ}R5#q72M+Np)|HG`ceS_*(k;4f?p<@+KN>a}oG**gSfy8hUU--X zX*ZB8pa12IEg`r&t zMZw(|Q>@WeFiy9wHqo`S<0`Lr^R=Gq+L^1q_u@=ctXcdWKR-`kK)I5zj}*&A++DH)pE zO224ChKzuPr%ECD2l;|JbFy_(ndaOk5S3HNV~NxDn`>}tOaH+qE~4D5;JVN~pYFT= z{&d^%W3)T359DbN>_3?9d*?gS)6cz-Ui#wKVjZOW)i)0}>tFavy=#r*ep%&3-? zQ__@QpO-wZOSh3S;HJkogZ(@FwLt|C|TjAdnB!c31u(w41d=bi^sMY0=&btktfh-3D#P1=f|n>YeAx8PybWhFVk zn|Z}08A-Ej&N73m6Mn0yy)pg2zxRjyz9Zdz$6k*2+lIF&_%vu!3(B>&=|$v%DAu4E z3m7xDVAM*(_)soHg4dqc7hj_ z2Y+bVV>jIt*8@BH!6m#Fu&&ozOwfPc8%MY}uX$?=dwSReGH@6=i6N&3bOhJX!SB*n zrY+;aI)$Q*U*RatEuqxgjP>f1!G}ReCm!gCD_uRXe@{Ao>}VPq8iE#kraSWmboAQv zawyQ1k*ZoKrQ` zmLq&rROX%jIfuxw%B^Zn)Fb0;DbLy&GXD^DjviOP>%Y($|oZ7 zHNeq|J~X{YK~ytXyyj7q2WP{$noo5MG8V^FM$=F5Ch@*1)Z=x4h?R`;ogckkM>*Q6 z?g6;ZlV)fHk8@WUFRXX;!WK9S51B~~7{izl9*{AP09-($zkFq^AhY(Uw4i|I&DGXm z9sC#s;|d9tF~NKw7i7Z>w6b{2ioPMX>v*Vr91#R0NeLb1ner$%i&}5{EjPhBDdo&T zo-L06qLGxS8}ZEFPOv_<%i!^lc{N3ULbJs~6O=rRBZ@?^q%>`0$WOq~dxD!}Bj0=n zX~VD|xY4s|YWG_Djeq=qr2qM!{6zYhpSwSGqF?D@t~dyP-`K&Xoz9hXVWb0?V!DYP zK^!;AB$$uXDYY}>C_PGWeGo@FTT|O4OnB3`a~FD1yjLQR?dWPuPd@Wps-38(uRiul zdgA%Zh@_X<6@M~vy6x86Vm&=D0G*7vSB%bbwLGqKc_AYrZ#{VUiCyXfmQZls-dHJu z4xi_@@txXED_mf>03x2B!cbWTwh)2X5=~+6coo?hiV-)D z?h1*BlMy@LJJ@BkC5R%Jp$TFFeTeb{4}3vA0%>SZ5LL>NaSA~Y74=;%-}lBRJxFew zvVxIGhj=m;E;35{<*X#2-~oXN6r!oXMb{n31KF|Wj)JV5G~4W|oy81r7A8)tvD29X zt&0MLJQUH%N;K=7tuOO}%$%Y>gTkW7 z1?LsA3WJz9$<%zs7~R%Ke*y;=meDWtO|*^p%Lq5ZIE`I~D=6F7abc+-+C^uaafyIQ z*ZPeJYC|{&^H@WH6!>O2G)%G;f83Nss{NSH-xD4#B83=%ItQ@^=4-mp1d&x@d0vGJ zp*e(#o$QQU>%uaUg@G_}=e>RCL?ue`6Tv<;SMgSSVFWOC8qx?#m?nO8{o;fY6Djd3 zTl#>V=*-j~D&!7viMYFQ=W+DNk#Nhr4F#18^s#Yvm{Rrl zw+TH6=_x$=SYjItozSB_!ms)#%edRjx@vDUcJt}q>WYyO@mtxa(U}f%jbRB8!G@h0 zD1=&NFC^B*{BlwUit;P$l;f;TRF!Abd3K(U@;9mK9OXLa&7c_X!i;a39UMzo3F?Ya z`Q$Q6y(V{{(>WN>v(uPGAb8Qlz%h+|X;9!HbLO~SU%_>g=d^I+vw#Qv)`()lT`C6S zWgG(EncP(<=NG(>D2^YP59uH;qzhXA3(00Iir>cBD(=1#|D{*?jA$ZaP3>Y=TBQYV zoIQvEi^t5UFmmCdJ03@{$g05(~3lQ=GZ{^wZCU(MMNzU(h(q>cyhF4cxY` z2T)LVu&8eX4|FFey;7O(STn9;+OuERQ8qcp^kTuLuzO;BBn@oG^*5HGw#e}$omIeM zU0Pva4bs)vMZmS=rhSV5!S_O5re9ZxDrWQ&(#!cxx<5B`0@rirN79+shH-6AS&ns- z^E=t4-plzTcw*%2Zd@XeZfj+vh9Kq7}(I=iu z?|JY0QfCi}IL<|L-8+X%#j7a(8Ch8C&M+4(rzv*s@7TRN9XQa&na4Bf*wG^>0^gs` zzxHCfdf`<1(1(9H4eZ{Ne)luK&-qnProltU<5+_(lroNuQioirT(5jBR#m}^jj_qt zhWBa5h~$~aA5XvZD?iF#S0w-dKmbWZK~xL#O)l^*qtIfFQ9k_OJ?W<&`AGWux4xae z@a1nrCjanPe=)ri;p8-KKL79!Kg+pMBM4D@WJP3!({>8!!!@7%XrI#F zpa)*_%==Qt=JQIxY--~1U**GGg`nOLyDC&xaxD*~ASmj_z4?^9%D9&XYYf9%J_xhg z`}xfw6e8A#+dkKKZMcFtJq z@Ek{qLVj!{hbT$=tCVV-;S6HYm(lK=|kx*2@q% z7uk&vIfX?kPHnUNOB=LzVVt9M!mt7KBwox&;tiUlU;gNa(uW^-5YssLJ817(C(4C4 zPGQYGo_Y~>$(x=(`BJ)e?le0?v65MLkES#cK0X7MvBdo2!bI5c%s<1rI1elh!n1@} zs8cs%Z8ZWZ?{D;LTyw}p<~|kwRYsS-s_Q?Q&`5oV8PDy%%p+IneNHCs#PA4?TMqT5 zuYB!9>X_e^9)9?}Y0rT}Oij$2xQLsWoC?9-f;$%}+?}KH(hv>sPQi~t2l11>#_-l_ z@zJ9Utf#mf_(@xvFyxU}Eify1=ui-U7?|Rau%U5EJCC#5^$L;w`R}h-crGtkKp*-&iysqJzU*op%v61w?hu#m))WZe4 z3iRd*?<0R`o-WDPF`8Q8Sc_?n=Qw}nY~b~?*bEO-C-+6!7uxO-h4as|M=c)3bANwm zz{M<#d+A6TPi%36g@i_aIpi^Jj`AGB!k`e%^@#DcB`MK8>P1)y^EZc*wqzo%l(8>f zh_@=x&C_{a-YVCJK0%l-TiT=`hj!N7UDZ5T)X=`$|+@;Ki57tuIus~gz@HB3D>Ho zeN%}1s%JS%@{0SMr!tAa>8d<&EQGHCv*N>lmag!E39M(zvS;$|c?8o~#+yU#tGD*+ zMm%wV{G{tE%q!xNxNuW%bNcoRucg|V*V3>4+DFp^4;@M`zw%n@N4YhIA23v)_+6t9JnZ$@Eh{{nP1{mtVoa@-*wOyrU;%NeG}C zS)UkMnM3S2VJ8ic29|#Ez0dXVBJ|{8v{F+5DvUzb#q;Cv$#vdcymFP@ODWxP#~sm* zS>Vvt_KMk1PlUwMyBh?WA7K)hwd-;=<|pS5>j<9(3{~n_3G?9v*F1->D$lJ;@FL;{ z<%G8<6A+Jokw(CPFu4*w%8l|TkJpTI^q&(A@k7=V5lv4%z}*-2rF~%E8Df`lRfu?? zAkue^wL)Js@`!iDmtI@eTSDYfo|b~keg3`iQ{G*dc1s$bZ_+Q7!4=AJgoSxkAF_<==nt-?l!rPd2SINLJt+A zJ)P<0ljqhIi2W0EXu97umQ^7%5LGZ4w@gUFv3#PkC#w|1%AO^+*$JPH53J zI6P^%@dsa2f{OzVn+0TqQ_zb!+Bivqofzl@Po?(TjAKRlSHGF7j?-i$c0H?ZJ~%XFCd_=9RQCfw3zzMc&Ras!L)sa<7NBJi%+> zQpZzJ565HJXX3HXG!SzxF^*~NGmUFqAGHwAaVQ@-hxeaYgBgurba@%wRNr;iJ?S|N zea6`JtL&?cQzJ?1G)ODsStF#tdkSFY)gzSihQa>7Q7CYLgs{0y9?rPR-Euk$6BiBET|5pLI+LqJmv-?eXciap z=pOx}_cZau&0ZPQ<}JTX@@NYe)o(VevV=S~av9u4+kC#6ziG7h%;PEdU1^(MJj`EM zDVuiO2~Umpm(h{<+^~`VmTRAt=jIXh%#kuQZXTJF-p4KpJdJZ*OH(ItY{Q@~<}y5=LS*K|7v$I5m`bx;qm)qgEM+xeuPj zEPY2NRaZq#O8+!_?1+CP@R)#@=ZO)rpfdK%%nuoeJL+Og&yy{1^x7wcDz29*`ByN) zfpU`$K7zLP?rKf{<8MC(zdV{g{NeW_GuoaG?_~FWEAtedpr`O|HHxf6{ZAvF<(iS9 z<@L#pJ)617qsW zbRxg<2+57HU4Ut0XrJRn90*tatTVUr*7C{*QKsg2D%vobEnll% z)b74za9_Il!1lDg89EHV*MVo-MZE8HY4uCcTj-B7WQoa-m}5Z<&&6(_)3f5mp)64* z#6rbIC(9r(Qw3jk_XBZ4ai9XNFuHcA7BvcK#AG|mKtGUIR(yLSBNJ(SA3(9JOdM5K zu3?quKv7VTnUG9aW&X`6TzzmA=f9~?;!h@=aqsIOrf~*BMJ(L?WC?ZZR)bK>m&d|f zVou+v5Xg&g(wmo=F`!&jMTUG!tO7TT!D~=H1a`SjYE{hN9j$f0d<0Qyf;f8ObYkhc|7f8x1!ee-94O#IP$Czg#hLLqqf}VI-1vY zfqbG2Cj#O~O#85`z4vXmhRf0{;LPpK%n3qYcBQB=%S6CQoZM|YiUOGk@lEEV4lz(@ zzfxxr3-s#-^{{h!W}m8vvTThY)|qf6YFrU-K6M}@+<}s6TW4FE>*->GLI}w2uv$CD z4RbK&fS{cfbu)rwePk`Mt4O9j_zT({1`>=7VMz7?)66`QhW6clbTEkP@VU!zo<@uj z+fP0;JQnV6yX{sKoSc<{u&bA|h;BW86d|k&Y}yJAskCQ)PE!zSU0~V{8G4Di#MA!K zK*#4=8%xWSm`p)h625vv(B55@;3<&2!^}Q zojcaq?Xa=4D8yv+8EvkyC~E+?HYtoLa3fuF*QxFm1HZu^a8vw@5eR-Q+0oQjH>dnS zJ2=O01v;(|X8*~|yoFsiLYIVVTO;ZQ(H)EmMO>KZMF6x8!=83rR<5#ul$g3?aq(h4 zx^mBSg}wlX#RZCp_i@2Ipxf1-{KG^7QgcPEO2_ww!t^x@2@q4WoD41*=W zgpcA-uf-nox$W3s+BG-;&A>f7$5)&gsE4owSDNmf2=sUh0FV zrYD}vMo7;4bGX%aLD_~2!S)Vz*K~0<5`A8bBCKZ!R$>7{k4YQpcSA6Bd9m*2RMuFXB39(?z`00e^J_fvn8zVy|n z)9xKR(!kzb>3#QMRgY`+PIeaEdB^SS3g4G@?7uC2?u%bffAvRyl|K0QKZwGQMJ%u_ z%%t_m_-+eW1n}Ou#b;V?hH#%a);;(Skj!?uNWbOQW582>%CmYGSzzIIj(PnqtnQ`H z7cQI+T-v^^C7s|5-UrzAbNJBVbn)bCxXgs&j4!ZLa$hKonp5PaKM|Z~f>mkSJhf zUxiZ0fiE8wJX5A!@tpjf*YkNMp;JCZu-olE21!>NQ+CzJdbllb@T;oFpaytN+`G-dGTEM zS`*tEH(aaCGB5j78fEZXPZ=tyh4mP8c8F(J*j;}AO&H}g&!#1m4xQ~NDZq`!W_AKE z;C4)J6*UZPdi!zJxf6y3KIx{t9BnY3&bV_3VN*NfzXf_RaA0rDBQ5}I&~F#4HZKfS zZ3lpLVO+ zd^-2!H`6j}*cR-anqW#52n`PIW<22Q(2rGNTqd>flz&I8@!mQAR{K_~v z%0}FLOZ}<~eyC=I+ynW#^oe)&_cA=BS(UNvbJriu%!dY_2i=T%kRkJwbFydZDm<26 z9zQmaUU+FZU7Ptv`r!K?#BKSW)Y^z5WOXjih;PQQL9}%Kmv$)lSww-R;Lozd7^f;L z)*6+-VRO9E0_qXzX<%*_@FKC-8)Jie=f)D&8PnEP`Xx?wLJw8$Jom)&>5o76r|E^K zzMD=%Zw#7y>EO=!>;M|P;fqrU1=$6_FxU;woOt7M`g@POFWrCNyV5Jr%c08`aN~MV zU`5~55#))-o$TIaFCP437xOAY?p-^hKZU#Z3(#uYY+#7g`bZ zaCmq@h+oPzG-DiST-&R63u&!F!dq^;nf1mZ^WcTpHD+AvoU7}vd=>_QKGK?v^7;6Ied(s#2HA1B zlIDje(gloySHkVp4+C(&kkQ7?YVgfdw-Gj^(izqg^pJlvF zxF)lYp_lTWj%(NVo_~uhH7%PTcsmQP)Ff}YI+KPFhB5;Xm%2_6nefQHZ%-4$*V5$G zD?ttjCwQ+XyA3WUJ79EEqTee+lloSw;R8hM?V z|K!c-dp|iR_z`H9{8uPIoKG!-dPrqT|JPK$gKN_AMhr*S;YaN^mC_y!aq}+DKp$RC z|M!3TPWs3P-&=}ud(A>9yb)+tZ~IB zh2k;B#Bc8XSSQ=#jP1_8DRz@7M~JoqAnR|CC+LHhaSRC^aaf8WUm5MM^3#Ayxsu@u z21WDml5d=TEwy*`lV=|H^4Zc<*WezJ5qSa-Wg7BJK9@((khUn)%}*FnHP-r4TgH=R z!h8J1pMNQR^@TTrPq>ps&$}P`JE4?$EaDgis6$?R!1(L9!wU$1Kw@4sZgh`GX6ry_Xlb{dz72^y%7J11)nQF9$de(ryPsKkCYyH(Y zOxcif67M&6=5G`qxk?3X2bGI4kZ~w7%SBOEq^FEhZ~0K7n}{?Sj@CuRL4GRBK&DYw zV8laVX&s%H%`XRAn;R<)F7n`b=VRh!e6QNN@q&_pqp&fKbaMsSipKz~AX~Y}xxUYx zzLuUi(~wRVz(!grVGi#@6y zC=LpK`@ke#*I;pecR+i>K1qOf7xz;diCMU0tcC4aEm?$uZ>LdJbD;_k9f^avaOa`b1+b z+hw`Y|5k(tx>wI_;*E8v0+c4!eD;lFT@ok$>P6FFT;i|+G)QZvrk0@DYzP3a^ZX+JmgjkSTHm=Q zm{(Cw1FTL_aG8g4RO=?~oyCLF)Wvf_w=Tnj8^poOmoLS&9tUm|#3jQVGTn(W*B)RV z@OQ0ah!H6;qkQMdc*4DN8}4EXq{&7+ad)^w&IO0{Rc1yeR2*3lbCkI5`ev(PS|lWj zLF0P+&414-mu3pv;1w-^u*{}D@z3W$`z*+SY%SNPqKQ0KR^V}LD!!}aQR9u9Dy=ze z;>0FD8PB2)(WI!qMHy^I37du_(zv`1GwZE!HuEP{6e!h;)|PCn@a8o&&2tiuz&ZKo zoG`b~h(<3dh`}6-5jZfn-O9}^Mwt64L70V17sKN+=Q##fkvn&hz~ft2*qGMY-Of>x zm(ux$UFi}Y7FRL!ZbR1*vK#OmjX+g<`>d(t?r<1wY=V?)8E(paL}HoLqT;iYG9 zce;)$b|1XUvu0l9XvSf0d7Oqa0=>=6z;iN!%_Ztl)EPkkWWaeHs-?*ewvYs?VRsk7ton9K#VXKe)oRbX3hqTSXh z02oEZSFpEHm}6JGwDHu1jR>sT(hT@61~$Ndx?ZZW(W^!WIIiXGoEMtFsqlaR4#{8S zxjDm9wV}pQK2yIXPC8G0=tCb&r%#`b^_LZK%xE;M*B`H~l0m$SdQms&vCr)@`3Pa{ z+Oy0{zAKwf9SbuvSJU@jyueW$--~qn_U()2pFe+&m{2p3?#CFUL_cz{e+;?^cj8y* zWJ4XwVdV=zWK!)Y#qiw5^T2%K2rQZC2mrxZO_^!#c~VuxUv|SY6i6K%?pZ_%w0vC{ zXwzik&M$eGt@RVoVL1+FWCqRbjf-GMW;EYYLREgGsM1oW{1-`xNyb5^T-;ID3Q6-q zJTs^vR3&d2Qs0|Cb2?E}Txz`~y)$_LY*fxW2vp>+F_BuLntAa2Zu@IK!(=u%|SHF zWit^1-(?zp`>`WwC(1Z$*u}t?P}mo};YJ!f6LCrBWF#XL_2yn?!+|bQF;8JwS6ZrY zz+m}N4_d{$VEE}o;SvHr@tsKP2pDAUg3+Rlbrwb%gG74Dv|Z*KL>a}YN@KHDnW6QS zf(sQW?Rpx3D4AF6^yJ+dZBaSyxq7YCQ_HM2EHRhorqcwwes}H|U~z7}TSFn`L{Y~d za4WbZd^{^{anAEUR$}4fxbb|FI)I!<__Bms70Xsow1gXK4KOrhyZNTWSSzu+ef%;m z>blYr7UBymJVI2%`&R0H6*q(zPzFvgacjhI3T4wG_3zr=mj-aL)PsT_pa4U6_I5Dg zvR@m*>%{Ch(RFRB7Wxo*895nIMpiI56JrzU9e3QxZp=~YF^@1{fk}Nh&9FOYiJbyV z7<9~X?OB)N%q%r~^D>RVkp?Yp2P8OYdj3}7OOJ^^ncfaqw>0S5T5p=LkBN+Y^UX{r|Tn$x($1-^xxFU0;cL4O< zARAV4xMGvy^x{YOGDlDxYtaIlaRlLQ*Sb60RKm28$M;?zN^^V+${hV@pcFcQR@{*t z>P3NsvIvGJyodk~y}pQj;sY2EWjC_u^&Iq0nCCv~!UoN7$!WYf#)CWg%)1U=+XSI( zb$xFh98DJ2U`#w0Kir|$h)^x&Iua>>bBuWJ?s1tY@3lD3&l#W04dx{6)P-b9J410@ z3h=7lmnPZ?T?>!JtkRnRW`z=fDrb5cgjE@Ll`SBfBrx5CZ$ z3i`5TIg38-We^Q6{A^^qJ6CDna`TS#!uL<6%NJftzw(Jsq;}5dY{B?pWQm11F4MbN z=-+kw5!?fF-p-4s(kTRvfAFvWIK6FmN_Rc@Uc77UO-J_P68*Jn=~MsWGimUyz3JS! zODs4PT*K(=_KZ2+ese(-3lt{{@Ff_g(jLZ}ZPUG63*)S`(>gmZ%zKz93IxZ4yPA$4 zzd77`{_}tH2S$m|iSfs?-#wXL`u_J3Ry>?;zvJ#S!6N^=FP}`0eeCnVl4QywmJbrp#b`#Khe9 zVx>zIK_n08Jqhx!&xKnR%qQPf&qQjTNhgZ3H_kve4}$Z)X>!{%63cCJF(9rQOWrA{ zlvz2Z=?g;>edw_@rq$zvN?79u?Lhz+X&DR7T~qLCScFS5+OnwtZzG8g&yc zJc}}|k1(!6DI@T>x@l#MM*+0LbcW!`PzZ%!2be6-=h8Nf4)4C@_TV8q;7b}^z)_z3 zt}_ls(u^B+oncVAvc|c5^^#pRIv& zqqMAr{_8|I<<84?k1l{1Y8xg`Wb; zh1=4PkP3suRgQYVz9*Ep3XT+=5j;8(dSJ3(qsW9pK9HO?Q$SiME#*(xmgOMD914xJ-|~tp0lsz*rGDv zbcTWDtELpUa$UICa^+oxTXtf=OgL|eTU`ge=Y8MnNJN~=lE;oYhk&iV9r>#6kbeIXrAk+R_+dQ*W z@!?%c{;SM`v4)J&d}^SU%qbF{Io4qdtjEqa!powJ{_wr~(m(p84@Wy)r#hytUKwJ? zBIk{cucZ_0jvJX+NjD+uc>2Pn^aVa8ybW(2J6H?U@H%9DcJ$y1p1Qa`wZgG;51w%i zny>&4vkIgh)CB`1l}a=49J2`g=9ng$SyzZ{i!@JX?9$Xplmu7!7&KJbfzkGn-5iYo zy!OL)Kgb#3!gu=OWI6#aK0%*4_N7l!Th|)lev`B+t->=4`L;sK8$(f7;IoMXTio*4c{&I>*E!_=v9B~PwQucHgTE`_lXWv+akvOy&10RlknyEadZN-8 zbMSb3x-vALKK<#hq<{R6K8oj#U91JCQ_s#GcJkv^5|1TQc+(5MlQn(~C7L^EEzd4gRccY&xM_gSZ#?NZl5t@jTba)&B5fEXTlg^9pgKVG9^8%;Awv zCE=rwKaoE6(;rGFo_P|ZlWqi|dWrIE;;A%(vGO##)b}4a7>3aq-?P!PyVnQz>`ljx z9miPnMAX%GDCBe;&Lejy^AOE|o_3^1?z;`cfh7!AC)3wH{}sI0fiJsyQ)h2qsx4HC z!f4%FzsNemEbH6`)>O)`^nHZ2InYrWz&s`_X}BN~9^NRIY(j1&j}!)vv|p^#*H8=3 zgcKl*Hd};V7HhcoHWS;c;MaD=v54jqwb;Zfy^V#;DxPosvNAcgPcb7iqJ> zymgE3uk>Q8fm>-p$*274CCU0(M&>KZ8=vHQNPqK~vXmU8&shmr;+Hr1H`+jQr{O<7@}akl^0H;Z!=rqq`0d zq&h|!uXC-p%n@X3J6KFR?rg7Xu2NU$^bAYazwoHShIGz?8#6F%k8#Sg@-*lrU!xd7 zHR3|Ki5O9L&Pm* zNEsA?n>j*;L^)=_u^StWOp2l?8x7_$?K}Hayw0!$R~Z-W^trjXA#DxgOvk?7D~{js zK>DN4d>RiUzm~r7=wmUz>k?kxcp6^u(xpqtrF!Cs4$ltm>)Rf2JbG4saBy%iHV()S zW*)L?Q&n;CC?EzLyO}$?-ONOgj#5Q<9A#(nx?GEJ*C&tXr5y{%#3sft_LbKF=fcnj znw%+QoDMRTYT&JO%{u@?0UV z0(07JG2&!JT1X;{`Hno5xmsW5G&2ZUfORYR=pDel@rgQ~8Zm^RF5;5BvO(S_<0iC?enzX1 z=0Tk%#(Oh@_C{p#MfWEhHlZHLH@?JG)C_5kjXx@9#T(&VH6zj~TXplK5RqS$Pjxei z+6I_L66G|TbkNksepBG_R+-6G8W*y!t+lM+EgU06-OM1m2|RZk7yOKh%FpxoZo zltwYe9%H^*Lbkis2)DfzAF5_5o35cN@D;^JaLgx;1(j=BZNO6-)l*xmEU}sSlkNOL zGxB;LUJ`!AYeiRi-6szKf_hKJeqvr!cFLMwTIU9yW5XI9NAJ4I!92!7+9=IcC$Ke$=jLOBX7Hjnc zP~V#Gf6g_i{NoEUI9mP!`#>=p0VcB$V?v{m3iW~pM5obv1iwX~SR{#5gkUi8CGYv; zIy#zkt5^+dz2vTP6FcOL8i*OGE4s-$^L8AE@Y1p?21DX4$?@LBgg~u|qkf{XAxfrP z@2xOx-~}Wq*EJU(X=8dLp3JybB?^J8Pi`y7#B&!fB7)314UG4t&X!?$x@R*4Jjh3+ zQy^h|!UZ@B*ky#IljD*Gh#8Am5l8(@-fc))(k-G4)Gee|{0ec+Ae6GyK_*Y;ufMAY zVLO&(0+(`EXq<#XX1oo7qeM>y$_kb;x^?%RX$|%jQ*6M-np=H$9O|x8f)ol06c4&U z?8LIp2(1pbc_z~-t0SS~o9L!6_*<^yLG?v-B9wP@74c$dGnpx%c2LnK;N1@X^pQ8- zmTs8W)_jd&UyGNX$8!_P+5>yo9YlUAO!Sc8WT^rwTuzhNev9DjE-Qs?tv3cON@bdpTQs-|k%@Jc}`Bf03V7xby4;bCPxmfas)gAiiBHh-J+W9$2JohcOa6Rm1RDbC4)q#$pcfz7W^rdQW5 zrmxpt=MLinK8wHwXDSHyRhA%No#(^v+Ok3}l(i_-mk=m4@LuF;fJw71Onr<46bmjO z=qDM57_!iWZVV6HnIm59X9r3rOn4&(2Q4e?n7}8uJBAvuEWG>PcLwaf^8fwEG(2=J za9D+s=XDCRR$RU}RSNDY++nq{BfA9{AKHC1?by~&yzD}-gNZ#9R4Dq_FpThd2Q=sW zxeGyeWH=UB+&aEtw_==VeWxJ35k|rBDPB8%yf#FW_{~F31~SKKz-4M&gG=JP%&h04 zH^FG@TFQRh*1J8%kYkQvovsaEVqtS0SK9}{Z!86wsIOeb3KQjduSY2`M!x>&H`2Er z{SG^qj)hhD49wo>D1sl{%}-g!w#8P>*qMLEET}Q+-D_NYsY_` z^ZM3N%-eU32uG$+Sh{OxnuT<`j5k8fCX~ZDuwxtsryVQIB@{<(D9qQPr&nq38gt^F z13NgoW^Wieh4Pa8g`M=ppn;TzE0(M!s4h7>FqqJq9+Dh%P+VGoIgw_lxS|>n0^a#D zzV-C$8iwRm0MDQ$GRwBv;IA~xUei;7{bS!)ALm19q%OB|zd=vj5h|RBqx-Tt@1m~6 zjeMv}i|&(fZ&dnP<>Bt#JFzNfB(WnZ%7H$I@{rUnFf}x@O7S6ovBxpKhVhvXGpu+F z{gMXND+@(&ZyQQ9+oAB%F>v7UVGMzW(-*$xu4EZU3lLQf}3 zm)+1YM)#e!-30Ed)SgJ+dF(`b9*fZBxmwzZ5Jz{YBV)rbs|XaS);bJrbaj9)SJ=6{ z4aQNrref4ZxCU49FHJ0NRztvA^)rS?wkL#Bwu?CSr)|*C;1@pfaJqDLgfhosemQn< zF#Z0&{uB!H$Ah>Y*?%D2gWJr{eE!c;!?&MdmoM{n6X#jsi9{m;X>15<$rBLfz-3W# zIa9gdvd;`*Ne;a2tC%!$iXZyzjLZ_1oXmrdX(RZ%)vU?UW1zkAM>I8}L+r$rk}9I` z<$bPKzVh3CUk$njzED&v9x$TL(cdbac*y?}ixEpRjq{^8Y=}ABexr`^37#b_{sk4}7{k%}Dn0cUMh5BmB6wwxw^Wd1 zEkcM0?iD=991L$PCt94#(-5xUQxUMq57eNChTyZA#G3W{%g&QKj@_AhTDG&er+k#; z9SFVFT6Dh2PI1a>L|M1O-Ky@-poi|P9-SDEyZ{S49Rg40nVS960UcqESm(0{tr4u2 zrzNy&7%lVHQJk*PzT(bK&KGtjg8k+~eG0sr>2FPwJ8^^C0o_D!q=Kno4#fm(yfx;> zpdIXFM%NWbWk~;uRd&^F89yAaggn>g#U8*G(Rd1NlF_qZ1CIinaTA!zDN{g6JvxnxWIGg z1ZkND2f|J`NZ*}nj3Xb|#CR*95x@Bl_{7{7l_qM$rYuV8hL%ks*zCms*Rk6Tudr(e zN4#|GPjBF9?4Nu6bUJ$U7)D-w>G8)OPj8$#oem%297=Xq%+g+Y z;^G~|7S#|yS?^pAAWwabR{oR@3(!@q+Lp`cucHxOTQpK?W~s8la5 z++&w0Sy`rrK{w(~O)aEz5J(1o?cfS#)la;Mm}a;o*goN(jT6XG8YeyGMGI|iWvrUQ z`&c`0=ld4;Olg|+&q@>`Sy=;+p zf+JNhc$io|vO=q-fSgcvw~uSo65Tce19i(x;~SL9PJx++n-SD+F~_A@1HN z!Fht$5sVqvlp8ycd1@WP7&a8KB^A+VQv-Cf5uRp&b=MFcaK^jI3zB*7Z3F28w=-7Y z>CLlEBl`7I;WKC1t%+g&$}D}; zk$U?$8y)(uSGr6qT=BE+rQ9Xx{t{9%jlNd!wY|^=uLA=)OCQfMZ1v1zkeaE;*LCCl zw;oIf2K!SFw6T9%cN%QRdkGAaE;YwEW@hRXN)wcx7cPvZYnMjT;bS+m2Ju`+@?s7U zo*AZD(d|5y1Naq4?wx=xVav66A)*p|dL1tLj$ps4z!WE)*OpnwTAuylT$=|{&c+n> zt!aE8YZmee+#!v2^Krxi*UpvhSaaw13bK~L!QM2{GMoP3cfOQ<_UG?Scj29_p{YOZ zhaL@SR88h#)I>d&m~0lMb-5apV;SHGxU)t-IHu$;TA2r}ht>6yTk3UwU_S&;$ZvV) z8$&2F`SrO*%_=*h9P-x9@d9h#?|k#C>D=kl>HHhu2trv6>pKUwr^Oq?-|#KKIJ1y2V~*|cb1X`(NyP_r%7bLW)kWACL4wvEJ@A9v2wz$7com2b#n$s6YS zZ7SIM&-%pB{mDb{43m-0`4^Y7rb@)#a2 zIGh6hLEdhfwcrKhZc8Yx=aI2o8=gb3znmtg7SdP0^>q5e*>h<>Ui9R2=a9E9;$5Oc zIW6^bU8OQN8+j}9@`xCSAocN`o_0LGRLbuzXQ~tJ=BEm!W$;|2IX$%;A75f}&e3;= z)5A9%Nk{kXVV%h_Zk;OTGH{}aQgbI2()NJst_{U#vb2k85ZTikC^-pNPh z{s-s5g-i=A&3a_qwGGDcoji@SBLdF?-}2oL{LVS~+Wsr;^FCku?aE$HqT(2O8D6o$ zgN+}K#lAf$ef^u~@E&z8{ld@Omv$XIlnx>1o9v!LiG)YSOC0M+-_0ZYSZhXhRn=8| zw~7vnaKBBq&RxL+a&55ej5Fnz$kDv2jS-7_ackU|%Bok&nrp~+#pVWRfXAK&jKF2b z+|=}B`t9HTSLrXm@@=Fx*#XP|^QULhw;>l2_NPvs1@~)d_uk#%jkA}z@Zk?UobJ2t zzVzJ}UcmT%g1pMyR@H&L+#Hzeo!9zNO*&XQV;veejub-IC|08P*|Jr`OYK%rB>D$1aLL zKLbrcM&;af00pXErS-Da1mD?=9ILgqn6?czrCoKrdx8HW949%oKx8T>F*b6IWE*agD=NB z|7EVJK5>wt0fF}zM5PCEyggE~3Z75U@q7tkEAkzi^X9pJjs-CRQUYLLgGMl)`z zwVl#O>m+`xf@{tr5tnsDmc{V`TBAZdSFdUx_og>@TTtke(Y*GV`6^Fd0>6|WKKkgR zA#Z>B>8HR|Ha`S^!W;lRr`b4>=NdM4F>m%@Xw=PSxMp}PWuEfe`}ggQ^UIa#ha5nl z@t@20lDf6QN4BDj=bgLr7nA`b<5}mZKSS_0K={WMHmUWGBS-3`A%hKyprsxi;vfp+ z1m6o>p=`tb1^t=MBf7UTz7nUxl*J3;x)>E`$hC6k@PfzH$Ijdg*?L66rsA5;2X7)S zK#hemto!Uo4+DfSmN*~7QUOsRIzyOGb%4qxLa2Rj*B4|*$p8~ zf!SuU8H=vS-!_QMB3eO2;`77>oKK>jG}he-E?#+@CmqUZWA~~*d$6I6>{dmkQR0>G{{3J zIcZQNFrg;A^PFyXpKEok+l)S#gKl#GFaY))fn=FiKF-NdRgY5y7p z2LYb6W|mf5m^{qd`(5LAHK zz-JEJ)-9i-U6?;c){yAB;pyKp7iiPBaJDg|cZ!QA{TN~PX_=Ps1-{TO-df>^Ju?+lut@LXZA7Q}$e zBpJUT#FKb8m>9?Mp5025ETXkOUO=gOadw2RiMw;C&oO^MSAZfCm$mNRNbD}}Wb50yf(rypD+{y09)T^)`|<+2uBo5ro3~KW zF8N&G)x?<9C3{Rp^xrg!$)y=4r?o+hLwJt`;nh03@n_GXFdjznhg&ENZidFLqgBU>#``Sr)Z_$wfjI{CkoH5a4BBqL=CUom=ory*DADY2Yo#NgJAk`b{sA6SzMznz?ai} zzy~nG!~q%Ljq4>{rbz=Q7aPGI+}GoFZkPq-{YURg1GwO6X51DF%S;zZPq|IBv6VA= z-6^rM#E7|kDIJ6!+zQxcz>D|6c#LAu@C-Z9SAertq>O;7Wcs3lFO`Wo+85>RB4c@$ zg_(?sgVSD-ZrW$kP#LzubT)8)xIJa}<@w*M+;>EeYx_OY63cWsK*^12;8%Q6aIXSH zW0!gAo|$#ZVho#J0gYo>JTbBLwQgE^OEb-=7?wr0#0hXmT6zE>h()RdtD%6KLuY8Df}zYC!zI-uh7oHkd(t@9Yq*~CtjNwocj9@1 zaXhPV4)=f5t&P5lV@#;tDloL)q`NL6H3kUY34BrEZ`+;UR6favG%=sHF-~o>u;{3O zGg}F%zrKE$gZ|@<=O?9 zTlp8E0<5{{0GAaQnr|Cp()q=D*azV)famfJ;qd_YSsmv`4QVDBH-^o=jN7+-+0#oV zBsi|4-@JjYt<^C!tLkGP#$&$PoM#zWGU<)(Y9_sZQqax#5k042Y`OTX!H+dDUO@c_ z?o?6OkrfNa5X_O1`*vt}sf0LQf{OS}zRah& z9!m8sM^{(6u<{%+VUUe3g*5O&*t|l#NX5I>>U`6vaRDUpoM~-mGr~msUVLz@wV@no zM%m!;9Mh9y%(+-mvw#t%E~v$2?{fhNa#%2#xAkyw%==}7J0aJV5mol8t1ufN2xT%T>BL7z^ph%MhN(^ z_v|%)n>~XaH=CV|rGDn{8H5V6C^?0!N{AVDIt{av#=USY`^bqWLxWgIRVSFqhRrK;XD_&WF$7yqP*%6KFd01(=9z zgjx+l2L~TevduA0cqfffaBp1a0$p~OG^=2>npF=UWH?3lb z*}^#1V5!FVj2&UbvR)e88e(l*jbo43smoV^c~Fmd|2KchH^bYU6KMFj7zp*P?<~m+ssJKMy;NP<$ zl60-ZbrYGo9`6Llt%7Twpo8F$EaeJ(Q*@Z|D8znteYJ+Ma1=};cYm3?^=WJBro4=g z&OJq8E$xyH+SML0(Klc5#tHn8z9^>aBtZINDG`t7}1ncnYq$mbQ=(=6S)bUJIgssIJF)cs!T&@R_vH z{O2)9S%-&8+b7d0c*K!#g`H4L1Jn6&)?}{z;4vrZALw~IFzV?VNb9W6>L}k^IRXgx z8dQj#aBVZ`GyiNh4KcQQ;7ReA3sLJx!w5*%;SW0C!|L$DmaTlD!MTb$*n85H28^#4 z2YS+(Va5>m#u*7bwAR#{d{x@_(XY4Ta=4izE~XZ)q-(4VRwpjw#+>y5b}-AZ2g>oM zFgRajt)p8<9OZZ^c!dXc z3^G^M)8OI5%v;Qx;Pi7RPNbV|xs@Y;-kHAr_!H^d-+2a4fZgE{LBqnIdiehIi@*F! z>Gqp%!DG{xhP=9y$yP`0uIm8^hMy`#&JG%&L_skC`|!$Ouq}*qZh%J zSg#W`?Sm$K@*jLG9mCM5g>%0d7U}BHRd#~zNP7l%z?)-K11~aj`YRks_)=;d`##1> zeeAMBK2qy~E>toWV3Q##&Sxx=N6T}b(lM$43^kUCF=ZU?qhjI;vfC1Je|SgwxG`sA z=3gJV5o&|;ppBu}Fpdl9jA$l_&UGE&k%B!~;0JcmCOS2g=nZ&3ajZDL2KF?kmoC=R z=d=O&IT36XvPyB zP+i$nJg;XYxK8=Elql@s?vJ6f@bkcj@^X~M>2Oo-Kex85o+t7dd zg!jT}wc=~6fbQ-Clw3PLZI=(CT0FCD>zQzEsc=+v<15!3`6uIM49}avFY>VPel*Xn zAbn0!{cvyZ7CzcB?i(m6px1k63Bk9-4H*R)u#ZVz>SY>h%)de2v$_a=N_ZH;%WFkO zYOL);zhP|KTcr(ocOWlCDaSBSm^z$dL~I{QbA9fn&b;AL-V5D~{9U{vzHzGb!GuNy zt-vNNEBJ0^>&VeeY`Z$T-O%AEhUOr{E}=!mpam0jSsoq4b-_1VUp(p<$LG>%Yr<$C zjrd`(4dy|;nM33o3!H_fDeCAVR#|%*&nZ9yuw1qcgiqwo^8E3+9w1gake#s(U6?>3 zz1qW(5UuG+?Us-+U9jjaVTd|y4V{2|TMvfE<1MKR<4HI>^a^chgbki8w3kye z@CFVH;QxiYbG%hpW8t#IXPMg-Ha%&m@4B}Y4+pLn9EZ*Hhb>sAT~5oZ7>9_XQYDS+ z+*~HSX$40CL1&@82K`qa<=D2P^ojC=4rBx;Id*FnI^hwW>(K51f)6#u$P$;8w~()OiH#N^8?j!% z3psD}EdzTE?@-Ii`sf>0R$)}w$1xwD|Le=Z>524-pYKh#-M^al^wv`kec#WVx2Jg_ zoyHjUs3d(2Ju)BDgiEK2pgK{w-ib+Mqb&26tSeM!P>|N4VO`fC z1c4~II`N))HiGSmx{yZ8dX>it1a&J-!E`2PVY4VyaK*gO0AxWAQ4ztcmuFfzDVc{% zs%Nu1xPz$LUdmYjsiOWcSxy*n_5kgTiG(~`5cEla6(H0U3_`@Le}*LAAej@9A9qNt z!Q{onL>&|ys9^2s>A>=%8|4}AvAEpUvp=lEXHkGfT>_9ai89<_zeJzr^K!INvR7Oz zz~pnMwaSt!V-Q#u?g~>IVL+SMF=#to%J?sy@N-=#_vQDxm)r!iz^~1-4Yt#M_UM2S zp0$B*>%cGqKgRn(d70S$)lO$S3NKwpdgiTbV~L$c1N2tV66?Lf!pQTagMo>BEr1gE zQAp#$${YJttE)v^K6`$cifok=!d`;8#^ixH7x@AK3af!kPN-Tqs(4ai;?8QV%~b$3 z(Z9O!ZlL^D%34NQ(54`X{{;Zzf}{~RyO6Lt3aerlGPtsgGS;BwZ&=yWkZ`dNe#-1R z2K*H-#XFaVe*Dv$f{d_Ad~wvtS%Rzk5zA2luh7uoWS|lQR3ar4G&oeRFQo0eci^&P zC|w)9mJYC6YnmPAy36lo#pztKj%!oanz3Vr^(Ygiw1KlRAb_@2H>P#0>=#hbQCo7} z46-=3PT@9<2R9lqDp2*fmM)$%eSYP>K$Xze3V7a z3vJx>hf-PV`ElB7lJgH;4DVnEO4k_WKtozO$Bs!_2ZW@KaZV9%;E=bXTBaQ?QRe96*|e#96FboILcjd!5`udl ziW+w}u*WeLQOwstu#1kRvR6e@++Rrjo%EgO&Zg|319?zDLfuS=v+obGQ#Ow%=9Sao zoyJiF#uXM!y7t|2cY5K#@$@y0;hr1Vm3oJ~n3f%AC=5NxVAq~kbCmxlFphXAglu`7 zb@XU*5Q!D>07tgJft@m!I9}~sI*V2RyWajldd2O#Dci+EghOcCMJfA6H$2w+(p{hp zUJtzTkT&|QJgg0YWCOUEg)iu@p~4)B6ov-grRoJGLPj=Tl~c{7lP}Lw=5C(1Vxc}q zADIn{bi;D{=YSeMwOh1GI=x6jtikx9Vc8bN{IDta}q{6Xf zH9gA0DhLdb9+*s_Y`ZW~1a^H(ii{6oZT6Gb-evm06K$xXJg3R@Y(?gjPY5%Af2J`$5mG(c5L^Y@`;MoX z6-+U%I9cC&=dSd^p=0Sc{^V2Xe|?}oeapAJHNE<-eQD>#6X}V=Po|5{orM2F7trD~ z{Np^k(2ucWXBK|BwP!H;KpZ_vy`<=X&xrzc@mc?$t$nLSqqu~2Lym4L^@l6T>+MxTu3|2wmvf znNVsNCJZXKRmjszQ@1P}P zSf*{2^9sCye9LyHlJbwRnv;IIfXfH!B5$^hr492P<%*Q|zURFhfBmKO;Gg|!~ZrTmk(~ns1tc> z-i0)fq+FzHr+gP|R91Df;4{M2Ks%5Zj`b7&j7EF#1287|;@0uUR_0X6bnx^nr+8pU z#$txYw;y8RbrfEqoNL>TvjBpDf12eq2N&DC|J>aRfnYL|=7XmA)tSF8ltC4~;-_i{ zWi9!fF84W~Y$s*7>~GzIW(c8bikb0ldo_3>o?c^P+UzoYDudeo4OiM94|l9c2YzC1 zgrBh62ZKJKiz$paci*`s{nmf}bovg~>fZP7UKdCCZr?eZo_p~{j(k4KZX&QlUvu$E zyN#FuG5*&wuj&N&m}_{t`xjoPYo= zc|`GxCr%>QWLyk0zd4Uw(9PnqNVm=8FAH_BSba168s!*n8eN6vcwXsCBbT5TBiqKN z<2!Q@-tcc2uMw7Id2`Fuo9T!*g^*?!VCCF0mFK+0lfHh7t7+vNa20oGnqK8s#ow)q zap*}bAfQ;ruyG#dsGo~C<{P_~XtSVC+9C{jfkkkpko|O)rQuCHgD+ahN(Mlb5D$R^ z#%@=+%r_f&XMQFVc21+Sz2k^xo+D+|-|Yv|NyM>@DAO{eEoH{&dpyfe4UpHhQywZo z>O>!iq87>s;Ebu!fWVQ?MeqW+2Igj^(ZCFfM(1`$it(7=2&;IrU|ApMjh0|tTo9Ia z+UAfc!BYqGC(p5RhlOqn3z&1@b)L3y&eY%o%r!ga&XNcC$6z&0FfUUvjsNJ;7t-VB zUq}PUju$Y@vr1cgH?o_>;}bQ6XXkYE14|Igxenq^Lu~y7+0otG3PgD}IizORfr?DB zGw%S`T#P))yp+k5(sg zC4G#=bE?7-#1}Y16hkuR{BM5S+tSTNkE zqz;PC{nR=~wX=Aj*FD^`wj;(a|hqq&_|xb*vK4T z2<+<}fn)nN^xh|I`P1E%=P6JYdLq)<87Z(sJ&$nl*NuKh{uiv<`egtK&b)+(;pA(k zk|vd@LKe4gM16>Ekx?$+O*pC&$B$@p9MQ$e7aCjOB7QuXUFM5|QK7jCAuar}xY7o` zhoO_O<6;pLIOHpK%PbFCUJf_U!lNz2cz)-4)1N3qJ(J^m&X-{NUpIy_{VdKZKY9(& zNs@fqTi+2^0ZyKLGEJX70&nRFy;khRo8?-9d32NPv~BBVK7mfC3qH7!`_TJXq}Pcv zru68lIOUR47Wz5G$b~q^FXcHmS#?vEI>H&n3p81>+s)_=F7Dctjvv;@i26rvK~mNv z*M&TLFob{M$tP3SxuL{5EBy?93{9Or@kBcI=waHDxUhO{F1n|8rEQ$F*fGPs*)EDu z|BhI6bBwTToiYLC2s$BLItjdz#x^K96x`!c9gc(kMgIVal_-&+3`UW)ogI_Z?ZP>_>$TYwcPd z1N3x!%<6d-fd2b$dt2JQYZv3^OnQVXE)E@dChgk3Jx<~~`r>i)I2r+G9C>_ko{!N_ z;Qh)0!l1Lgl*eL`lJ@{LLYDth9%MEcxQ`em0U452_7X=`@-j!P0>De*3E%;IN4$lv z9F4{^uP~ghWV@VW$(6D)6N>ou<5HmGTd9Qdq%Zy%p}?1EG$#>9#fg<@H;R$oa~OV3 z(EZ>R{LNYZnClRwL|(!uugiVKG>cqC|F*HlpQQ{p>jhUv1rVV{HlRWPa3S>WyBB9BKIcNG?)+2ETh+u3M1iL879 zUNy>s^IB+M&BR{wp zrjZGGDH%37gK1u#HBb%#z&Sg?%Tr{*y9h5aIf~j&hK5ZBi zVxM_~&cF)ogg%-2co+FN^Xs00j`UX_do(@%nP=0_Jov`+y4T&qnoxV%zh@+E?i)anR z8cZhOkscl`8w-?3zVi@@<&c2Mhl`IY?u8>Sn#U1u=BMDng6k9t!UB_Jl^t=?x0AF< zCQz2C5f51eQ96LeB0SnYm9F%S*wLn9Ohse|yPljUm1A+ZuwdRx(5dC>IfC(%B1Vm=v8#<7eHOg+Ez$GYRW~ zSY0^E0woNRvU>QKH!?xAkJe;FR~}rob1ZVP*=1W9xAjsGbJt9$p{mYqJpQ8{0`4Ux z8RlsLlOXjqEPiYmK_De!HxryGkK{F}v_eLbK`b=Wwv(jEN1ZY;ru|fo895ebfW^fR z2SJsb`aStI?#(@VhI?hXKM^Ieit~OfUwa^4t&vo=xhr^*1&)4>no?=e#lYif04`FD zqu}%|+H)*^wvna}<;I5I!Pv{lRDNJ>f#~{l6_Q2 znzo;I@arVoJFGlz%7r}_;-_eT7l>tgp{&rlm%N0}z8AuQS;a1Q+JKIvGFZBoN4Zl| zV-}BgkDYR~hl{wLK(LKd3A#GYgL5rx5&CJt4t6tYq1_7{?#Jn%J*GKstBro)iRl`t zs-N4%eII=s>2Zbylk-?t4g62tp~ssLB})RK`$(ol+dSpB1Y`G@w1&rYpa9D}xR9=thrO{*v^f?PmP**b-UEHpv`_yH~Who-@= z(|co$^bDn&H|!7sa2`Zx(li9#%tl4uC5=@WIE^oV3MDgdljM@`+_fb5CVffyOJHNi zgc<4ZGhE&{1|3@``R)Ld4f(RJvjf_nzL<7wyFJ~y@6Ple|BwG0qX>?u+_f9NO1ZSv z?2tk*R-DuUo0sg!JNiGrc>y}5r8Z(IJJd5bS{WEUK&5}%CF9MeBxK$ zSK3DWLMg_`iWG2SwlPi@!O67dV^+b}i4pll#(c#qC*!Xw5|hR93dgTe2IIcWeIBYiu59*337v-f2B zSD3Uf3!{_eup|c7IfzngRcjvb7lcJhVa_-WC1jOXQIZOGq`^M~_P|9h+vM>SJR1AhtMayRY^MoK z1&;71y4||?nVDAr+CtfXU$F3dZ zg8>YDV1gs)E{&Z-F>{9NJ6t^F6cY{9DnN1yfgykXg(<@D5@*x&C(E}T=g3d&Y8({v zS^RAa7QPo_hMkEU;W?HzIQfO3qB zB+58m7g9A%{JJ=rl|m@9h$HU?vNTAM9V|d}x%(c&Hm@7KmmU4jVhlF{A9>9tZ#`#% z4xW|wTxcI3J&_J_TDu%z_TeYsXrGQ#Xy*40v%ro)7qW!yzI6u+G)%nXqz5yhVwp~? zDS!Btj|!86E1T#Z9qmn|?`VRX-JL`y=KS#}8u0@S9!5t`O#(C%Po`_%}QUcXp%S~BOv=&mUEe6ydmA?xj|%Q zZsZ58!V_HN)0w7}<@4}T?n({~N0JMXzE zZRZ4xxw%d0@CnAQ(QpZBKmL(syTLs?k_6cUFE2r!k7T zY~nPje7v)LUwW8ktTse?&NPid9o3uw-TI67ZssI97tk-+w<$p5tTKNxZ2l67!npvL zjn{0le&!ey6?sj;Ple5V+u3O$4t+KsX<6r-vw92}Hq$KhN?7!%h?T#ryVqlcK^tD; z!EsDkE@Q3wrV#1Mvdkra^0V^{>th?of+HmfOFmh|66O8VF+K^4c(n}UIFGPB<$tp% zb8`Xme{f_a@Q*%99LtDB927>~G>dYh3+7-x-FfG$srM0u@c>PEUi_+nn;{WsNA_SG z!1%*!pypAao;h_c_MvQok9mi=;_tm%HeragsnTn>!wxMjju)Q4jH*Lr(YQ z(`Dpy)-=2hNvUsCy=CJfSzT(HNzD;kt>zzgyuS(6EgSiW>K-1g;mEw zQTSDw+aV#8sPpi~bp>-v}KAT3;Q()mOacFTx!IoJR$uRUCiJS7o1naXQ~L zOx+3)NOMK|SZ+4*C5ov{PJz7gz@4tZ?cV zM~efn@ zPxs$>OT2p&zeYt)m>>SqW9g1tKb!vHlmC#u?VayT+c8EwhH~`a!Gp=WFNZg6K>^HI zNVUX!flYjMF(1{#zSITnNe7mj>8gTtxt|Pfz%A&ZBwj9FxhKQZ zEP>M!X@y_YHa-GvI@;JG#GPT{K%Hqe(#`SBF8Xcc3$4?~I>DLxo*08-4&ov)y@Wir zD-6>cH*A2O&Q7E^y#D?)bCHvc;FrCe@?g2n|20r>p~?Q~VsHmMG8C#<^c;g;AOEX| z)5u2n;25w)+3cX^y0&5ZuN#wW1lz)KsFO_qjv50j3iT7Yqqr?+sta8LRI3+U=W zL$5+Uv9Q3e>saPXb{evPXycrNn*VYfdU?(>wVLsTx)7>UWv{D=~Glb-z3 zU%WxuK1QFl-|EzFN93Hc@$9K6bMQpV%VQyUr9y7x@|rpQrDtW(zHZuUS5NxH$4+o< z=|7@FeS6xvWe4LEgGkS0x_xjOoG}i}pGU`Vfig9;(SR?*mthw6JnBc@dNzCnymC>u z2#lH)?<@b3-u9=?fj=VWYvyu!kaKKyyW@^q)1IAs<5amzUIU1+@!^Bdr4K&x*))3M z-*HlFe|pb*-xo5chUy>xZ-1YjJ#rFyQtmDDz|#GPn8>yGcHSvKm&o49$_VYiMQ}x<7K@`(C+LX!muyWj^TRiVDdyW#Lw!eg@)aCKwMq8#VK>)ffc>3iRKfBLp} zyaJszYYCjB)5aZ+GZ)*^z2k$duVCy!MPiLf{W3T`#U`!~{g=Q(_ zLuEov@T#)d^it{aI;pg4xO3?0yE$=Xkh#$y<@W);)GLHYUbM;bPX4)(wU3=68`F+0 zZWwgYo=tV~4^BgP`paKRqc1*(u{`;4GSeXAgT_>xg@sPp*?GoMpr|UM`ME+~#3PIB zh@cL7p%*x(G@lG_js(njEr#2iq(eP zI2xs@7198`lar{wc6==T{_lP~{lE{lrMJBKjWPZW40fkmhPQEj6S@gx{39nO(hJAV z$5p$WdkH?&1z13Qm7+3TOJDShsvBJvrxDqZg-8u=t04cjjymNx=Qz5+Ap@OrX|LLq zcBPLCXV0eRIaNi&&28uzkDnS11KUGKPo(dE_q)?8UvV32U$b1DbDXs?<|wbaGacei z^W&WGagjkhHr!POPO(`oUnPy~9lG!+x|%2OEPyR^h#ReQ^bH7=fstRq%Z?O5^5u?XiK zi{4EqQK>|k#A15)=(H> zjk^f}(L0%B+7_ObZnRq9D_VuxPsM!%7dVRXBFBEjA}Vl;Pw&EZ*K|M1cm+!rM?g&6 zv8+%qwg0R#Hb0@;bbLM>qo1|GjFZMmrCo#eas z?n<}ac{|pHTjM@>cPvYbUVQ91o${hJGeW=yPQvto{xpn2^L>0&pRe;LnnA4G`K5}d!FJ5 zR-hGsPPk?6(u_y3YP}OQ3oQOxUunktt!v!z9G(y@xCzw6z$*5^KQlhn0eUF;^?y_Ma< zC?7pudx9g{gdyrg@t}`7Pz#FgMw#UijP6v8-5|hk{fffApIwGd^yLxVgaH)0i8+?> z!bPt971nu<92`iS*p=bE>2Z1k`Niae_PucKR62EZEa*Wib?^Cp;^@(+^SCSh%Q!e% z_#T`;gVO&nJ;!M`M}48Bz5tDM(@w(}1!$onj%?deaL%G^X$Q|vk}n2ArBe};omU7J1d;BzXDpHI}_>i(zHV9hE2l} z=uXX;(1N>J=qrRyX`Z~qwXO(~KHCqby)>IR`tuX?Ip;Awl@iuAlZS**5U@-8ItO$= z)RUwA*d&9?ygw#%W=2G>6V}P+ng!@_6hAuCyL&&%AyO9;kFl|n99w-i{a`*ld+c0# z!@WCMz`(jP3`XYC^W1p~0b?z^iF?hT#>k)_USc~g)S;h&{iy>7Vi)dx_uZGi{hPlz z{p}|{8|6tC9&c}*>?huL7{`)2nX_{G(=I+bws}Iq5W6pK;%Ln+?6#TZs6saBv1|Wg zI?vrTgXA?vJr;zJ5Icym)a7x{y)u(1+J;z2n`eiLW0MOcMYstVh%-;yjANuR2OrTI z&+whQxLXZAGIQv~^c2T`o}teS6RuV2d0@zGlgnKSh54573mm=U5#ha#8T#@c#yunr zTA(d#6PZ5;#k6r@--rv_eG0K=P|NYIz~ zhsLaHAJ2E+yPpNQk=TW1JwN|XUu2AAy2P07SeZ{N5Kk4I2{gRU3DEdBCjvm{xt=K< zKJrvED2?YK7RVIP=Q+hg!vPH?t*;0mn{eV*SuXqqwrZnT0Kq?sC8lGlapc?bpZp?8 zRQ!XqERE(&4Meu|$NUSeE8lrca#eJU@3{o}1Ttf3N@bELpWL*v*9dNcU2Tqi-ONJd z?JVKN_y$5Uy^uz{T9!1UD`n?*d0a(j#Ob6jgd^@CCwWMRx9#J;+daGRhUV<^6|Y&^ z?x7H(7UtiF^1*lE=sm|VV)W;sf$lWk0nN|@Zol=`w0+mk^!O8><&JTnW;}@x0JJ8EZXt%I%ZjV-nfliMnQ&j*S{|pCq)5rey zQ|y*~L%QR(ZRxIEx3RpE_^p?? zQ~{j%p!_TR0kZje1LZWG@dDI%QxR=@WZ2u}zv8}%SQbP&kyFEhorD`UZH?WUBinb! zwI$>52Kl16D1DvQ~n`^}9T*bLp@NAg^apkZ6g^Nt`qx{gg&ZRfA^LHc1&<70=*EVp0dDG_2 z7#VM25$pvNyq{)aqAz%{dB$#8iy-T)yr5q&7m#OL8dZen(Pwz+z_8FA`#SkvdnLOG zPJ^rQ;_g0aPWT5rQLCcskgbSoSrgqFUO>CNtB|q|)~}0Q&14N!A90i*xuj^_##unvQjbo_hX=Gn@X2q4F#d7XXtoj<^VUBA{Swf`@rhM<;x%3%PX|SY`)3b%=QvFnS%Em=o6`&yBrw z4~*?OvBrhhIgU)$NZ9(>Kt!Bio-@tyn)C3_16(OJ&p6^8?dMoXm_}cs(onA2!OoI! zq%nJ4Zd+TaDl>d(4|sWzV~i~==hl>WgH!5d*)b+Xa>C=(zHET$4jJpN>yj5)8C;wi z5am~C!vhDf>aM*q+_w0>I5fC!KXHWUw8`ajfx{n@)!CE+D`Z^qK6}lgBJk1@cXeH zFL4S$@h|e4pgSM8YUX8sD0SBGBl-pvvi;?Wrk~m4yR+m?gOySMM$l@1>|#BrXdQybU%Xn?L<*{z&sE+Eot49w3m zOMl2$DT(BjoprFSK2#?=MykGc_3c^a1jja z8E`@-Ec3R;*g@K$3!8{IK8G%Z*Sw%o$pZq^5A+0K{KD-G(s*KC7(h>5!A?WO||Ho!x`!nKM~G)DO=b zo8|s#5h**%UB|bW6ZG|O!r+c8-OzFMA+z_Azb3xzjOlKon4M;Bju_)2(;4`F#}?)y zflJ3xHY$N1=ckT8I`efF84mo(FQgIsmO3(9#x_v)&9PYsDUhv3$P<|2mXJJtel~_sZxT!oqMl9+$L0P=OMVb|F9h%-Nbd-@8Cey_ayUap5c$D$G^X~9o+@7|R@_0Rtj^2|0i?u?@o zw%^3{M99gWY@@+VF(TDK)_lWNFy@!bzs0S2S$FFc8^4Gar;gb!;qutwqwS`#pUyEs z{wlBa530i#+>%$BV@ng#u)Iw9H%>hW{5wVj0~VRlXEVJhOCht6x1dWC;>mo&h|)I# zK6-gdo31$^-A)f}FbMCOgnZ|PE=a$olVc9f1 zU<}zrJ)4X4#%y=9Bn-`GAtYJ2Fu+9jq%*Jbu?^?Z#cNML0v{W?$OazjsCn$af7hEh zd5@F)&OX7M><|m=$a@^8v5`}c)P1-qGGL;9-0#C?!fhA;jzm3B@xxn@YXD>fUF24b z0rOlJ`I@zvpauB={o@jRTe=#c@4KCAE3(}j8&96Wui{D}3s|G#q_p5`c#X5Bac%~= zh$|ycY4Z%b?ipfHzIPzx31$Mw7*YY(&~Sai*-IFm#2g~im{<>d@dZ0-xZF>HX1Wsx`dc?X z#MR$*(hiK-Iyb>r?z|)7=NT#S3xh%Q1D6@G_X|rG%~v8jUz+0E2-lyI~T2T=3xiZg~Ph4loy8wggrXP=QE#I(r=L;G~kH zaou@4gGEnR(xFV5nq)U3R@M#~Q7eT4Xlk1D$lKxT{pO&B^uWesrVGJK`jz>~G@S?! zvy&r;f-)`FJ5;<^Vz4g@==eq+VNgKgI97=KR19gE;{fA;>Ed`N`1VL}>(yLED`_C_Y!61oDcgSnF@@83SpZt1eH9CuaP zF{!Z&QEfChMs)e;4C=FLXGS;&W(E0q79nl(&A_q)|8m%u?QQnKq*f@$Ex)a75-qJ2v?yC=YW@4=FE%XTJ?eQC$mEonPPrVfG&caLj4KqHWXNi;a@p+C-Yq}3QZ z2d7oChLFXe3!n;*;@1mPy4cYx-A!;LtP{|A+QadyhlxupY=Q%K1ch}vb*3w_8{>d95y*Ka{vNqM3(afQ*%K!zaAXQ$3RN;_kM8PM;ZJ&vMiicpq(|zyMt)A|4 zSpRl(icP#~Qepi5yLsHu97fme$nr8-)YNt3dU-7!`IdD-M3KI~ zaa{viB9Qq)R+<5)f3%LOtOl`;G*=2as%Vs}3628sBn?t1ce>kdx~QYW_j zO}t1^{U`CrxJ5chuKEBrCP5@tg8b7?R~5}a_jxRyO<@!-^1jJN7!ePUF%#BO!D;{< z;Af+^-|#2-jojGZm=ffHlddydo%N0%#ym#8WHgE>9>fg!%i5Wem1 zbq-E>b&~u&-U1-;=3B1xF8L|Iz^e-e%e|2SGRpPb>w}o8(hVp|Zw95;Np+!aJFXpdc zlFj?q7I%p$6GnSR)Qs|=SIn|X?iZCzB3>t?lhfqSZHn);kKjCBi*MV^;AT8z;bGs( zXBMjbPjCtm_(`dIOYUr20it7BAqPqXRk4q>>oYrLtaZvVQV%S_X2QNzGlMYR{=b{uRwDWBsF>?uyGw@g8x>P@c z1;yC-^aMb(NtQT_XpI0lH~Mu;C{cv(bT5(`<%oY!#Z4LS!e!g^afS5!32i;dyhJlR z>_Ny?h;*0*K>jO){y5n|%_r-nuBsQhKQ%qf;i87VlJ>Nu8_&Z7zqj1Qr3F3RvAzCE z@p8KzlMc8^0_p4Re}TXTf0PvYM`04SgE;L<$dg1&V>$_D!m7U88&hhTzy+}vXxsHk zuK0&Br@QEn5Pvl39Bw%=*JJfkQnS4X7cwNN<^fxBUd`jGy_!1LTiHPyI^kIrSpPZy zIN5VQZ4+pUE_zOQXzbYZ=DddmYE;N;;|q+E|KdeT-Aj@4xE9TlU4K5g%b#C$LPM$> zT%x0jn6OdEY>kd2!rSFiil3SCeMVl$YZK{#qdF>MEo-b-cQk8NK?}rr7XHlq`U`?9 z+N%+nXh(znL*Y{hh5+1rA}s_#Zu< z8JX#>;QvH4&a&oZ|Zl~Mg4~U2AV!O9i{DAuXw8BiFe}J9FbP(&y zpqBZ49`jgBMDsB-$B2YkS79QqDnd>UELPl4JNYW(7t7YJhy(>^)=OEZZ@YcRwEruNY|BB_0m@Y0;c3e!`2GQ#=Py>W4Ws5rh9_MuT4TCs zqtjl46uH4{3xj^!%G+{gWTj{|d?J^)dxm~EiKK#1EEo59Q;{nH#Toq?f!zAUSDRS- zm1EkE4HTk^d_u<0myRi{>U-(N{UAnpZJ9eo-jFh(LBoHNWGVMJ9k{F zHAL(GP&n1Zn#*P)$>ZjOaW^RRqDK;TF$U|V-n!BpLHnsQ2GpMe4~jH2idklwFOP3o zfdEUDV?M)Fl(4gLplFgSPKX7RYS%#15mC)7LQ*(b+Z(@1>}3;O3tt6_6^{oL-Er~C zGBT@W8COBzL4AFf+G71b<1sYCI0Yx<7!X%-WRw40^yXR|ckObMMRi42vsCOsCr6ni zM^6x~5YfDRQ$Syu48GbBq%;(IVj7x7yvVfCtGeBcb4T)JNxp4wC%ro0*Ke5MK_OQf zJY@z@Htr%7jbBzm4JL~?7 zz4tVe1+QdG7B5NK?o1Qd^`G$++9WDGk)$mJVM}Jeg1yHR+;8#0@0G?+3Q@N2E!Bks zqS*r(0$x1*MI4dW1V9sQt_>u@s~n${M+o=wXU#!-!jGgYpg@W^iz5bSYwwS@kv|LR z|5Z6zo%`8x6#h{OzL0dyvAM{pO5sI`;220S7eFDSb+QQm`Bbm(+A#T4y9r?><~P+2 z7fGO>U5AQ`4RKx>Re!-r1LWwJ_}|oDxvO^tD-NnobQVsg~lm{wJjb71z`g zv#ekQ^l=lx0`2Go!wZ%j=|ctAQ#G-W8EEE84osNA~Pg*4C9*hX#YA30t z66IG0HIX^d9)vg9Sr7607%z@Xw@z6keH1@m#7`&8NMm{<$d2hrSz!#bkih(#UYW_> zXYqK@;I2B?-tNyzIk?vtO!AN-m*FXoVw5PJQvYB{Er338t+Ihemu*G1d+WO>!!y4!K zG^WKp6pw<4U^Vu@<&LB)(PC<GKqC zX8fcdcu`qkC9fcRoT`EsxAT|T+lQCLXUQm%4IX7uMwLp<-9^dsBd5UWiqb0LiSard zeqJUPZ)-Y>$cIkCs{xK{9-{q=blPiW1z=2wfa5pPkq5g;@mS!wla~{oTUIZ90Bj8~ zP;TLaSc*V{^u3zZX>-o?_r}rMc!KqnOV^BfhG4^0$K8h3Xg#fcQisJ`lhEZMOnv4Z+(diTARVt0+URUbBI9d(O`5>Y>}<-0I}|hlxI=VU4kr0Wxk^!r{OZDo4syGaJJkqS`Lv3Y+;gHm3U; zjh4~3Jjki@nlxCU``E#R+c)pd(-}qq4a4bT!?zrfr{>0VSK#vwpMF&w42C{Kk$OWb zF8NwXGpqq@lw7j*@AM4350Z$C4(cTOpdepL8f37jhOqF8?~vUv?-VP1rZ_I9(mCk| z3)>nxqdLVzC!Dn9rmV-=CmVUMyA`D4bALthjs0=_QAD6n9AG73#_D6h{PcGRtI!A6aiK*3(~g1*7I7;ik*CZHwV-h zK0V{aQoLL;u9@Q7x5|>!(DFQG*KE=BP28V2G4RR$rEH!#?qXWhIYWY`L47f@ zNnGT_e{0A-NeZ)e{^;c)yLBBli?nrdfrOnhbdJ`XH~2`0^uu^#%~-CdnXt?S+IK!R zJ1U#j!fV*B)gH~&Ui^fJ>JQ6fA9DWdZt@jLxBn0s3I{YvR&I%#o6GiMvQ6KT;&sW3 zI9~Y)Z$ICR^x<0RKDfm_q~8~1!6c9m&U(+djg|U}ByN_81El?3_v9qw9{xvB+iyxepp{HXi!gXGVLql;&;SL*Gaq zQ&tC|=QN?LO4;!eW~fF%Yo5~ z>^2nlC4Ae`gChc?*0wcsui{evQg9IU$Vv;f8n@@-U(&t{zsXe7kOQHXSc>&xKCTrY%ORUC|KzB)4oy9X09 zNfW)gtkG$cye}h;zD5uAlIoKpEpt80IkhqU+Ec+}807!p(U$nmd}jrRD{*r};!7YG zGq#ZTiZbv#v*h@2T0mebmx3p3K@&EV+T+u=3ltQIjDS7shSlp16v2KG5LRrV? zKCFyiZf`nhNS_D-IrBW9?%;I!hHqfv1n5)P|2l>{CM{4z3G`e0x0&&}41@^MckCv; zKimE4GywAql;(U-F>(nq{L96}w{?zXMNfYTQH+(O$2aDA^T6hOeISX{d&$3=+M_`m za*gql*Z7udBO!4gr#t_A?C#UFlLfd*QNY;``zFpcgJs+lZ8AW+B*>SJ|MbdGFi1iRvV-tJx1 z<$GGgx&gqTpg+TkM_}wlP$wPx5>(2ZiOkv2%u47fKe(jtrKvXx(**o95g31^So?jQ zYLT0I{_7}`@MHOR`P;@LEVMkWTPqoYXeSdB{@cvke6)a=KY24#S!{zSakvMdgfYx} zJNxzkWmHsqF{5x7^rXYfQsPCWlMaR$gn(am#i&fc$0{K2pH5rE9XRavU*Hfu95tCI z`N{F_uQ83M>hU&k{g!#u!UE0bgfC?|Bu7@s*E{UIx=9#~pY(^bOHC+@7mFs!;#&hkby+F3pTmWU0TM zqv~e5luI?#w={7_8oi=;eJ6P+9p(W(TqpPmqv0dz3~9*Pt=P`i?5=?3!Pw)H2B+*i zZaf(#WCr06DEX;~3x6jDvrNcJs;k!Bt>y!2SPw8?NNT2N+~e`B&yug&lwPL`n>Dy* zJC*YMx1#lGN~#NFMbWPJ@OG?`LIiDzxkwGxzF* zhDA4y=Fh;>z;?Ia)M(0DOezmL*afPv`mS5%{qfjq^AOj3Xlot6#Wey%eg=}YdrLvUv)1s}*gmb_wIMV_YoyhBB6#DSR+nt++ z!sGBSe}5BNjh`WNkU>BSM?~vSVW5*hY*VX8c>4um%f4~Oy7#)`<3}8NvG{#0vASKh z#BTx*L5(T?*nX<6i+HG8wmkyl_C$!f;%uoL$hGX1--@Slq0Byz(vF%JOHV`%BX#45} z7r_|B3HPI2*{L1T?h&=ad7W-32HxuQ+;3&=!d_4wUn_U#+w7JbX#ZgFr`GfjVu*}o zeIewf4CG!c^*Vo@FgxzJkvC00vg6Z1Sq*lPvF?|8ZThK_q=e>z=@uJ(G4nIwV*c))Zb-EW;M^$?X*lK35`)8WW+HUP&avbOHnYr7dxPw81&y=tlXlh|D{XNk(iB2?@Glo^qE6GJO`GS(~YLWaH-mfpqlGB z_@T})n+I7U0Q7ZU3}ULg~c!Q{oq3cbhmwfZ2P z?bUr1@MoEP6c+7EOSYd5U`^u;JINBrhn9wx@pTAAs35|ezIvdjz#BR1J>gv z_%v}|2y;}f6J3I3gXxbi*a~mCg5Z-SaMGCe4AT4%IdgN&Y&(2|H$#!^eTc+5Y8k4& zl|^d1-7TI~4RiB;)dK$8ap8DA)8}}+V#&j9M`rcje^NMRM~{NkUxV;^qKsRw|BJF( zJNiZ~*>|`zrqLd~%Rb!;e}H4~vWfCMn?J9^6{^)%bwV5%Jq5$Gh+4&k-UQ2N_02(S zOA`BaOQb`kYXeseI%S0YAZ6Q)9vBfH!>L;A;zWV}9NCmvc@5J8&D8HNayWL)kQ?_n z(SAJN_mWa!||kbi*OFd7)Q0=>ePS+Cj}}oUbRXaWs$2PDgR3l^1i{w z$*$R0%-Fgluv69!9`T3cDS2mjhB`zRuaFiT>oM!%agtU%e$T$m4#(szq#$7Wea~72 za%D-r%6HK2GJ904aAA4lJ#9qEd{~P9694nKFq4#v-Qf#JDW!TT0GW?SrA6!`3~qFv z)^_Q=8;=CZJGV^B?G@iCx32khMHn58CAE9+m+IE#v0K3l6W-#unz`G9z%tP-Ye%vz z8PM=686V#_G-|0oB!d^Mzb{kDYS0^o6F$PFebV_5=VuJkAT(M)9%qOePsuX%*wAL@ z45$s?w!qe@EBr*OEe2Mhno9Btux;Zhl)e&pwp=$Z->S2P1YiCV$0JD{}d^ z!?K{!_!!&;KjldV=)jaK!xwc#Fh9DZFQ|(Oy4do_SvZ;=TNBc_91L21oiAA9hWDiIzx{yAsn78W1Qq5A>$_pyro5poCEQ5O9f%pgV3xUHj_<}we=JFwYa+(kl3YEHN&v;3+cJbbUiW_?_}Nr~MhW$^{t z=y3%T^u_KqH4C^apRCV@dx?Nw)w64uS0Z)~kNR9kxbd|f8E3pT8N$@~r_kX}hR(i= z(5O8y@as3HzZHm^n|hZ+pyV1a=ic;wH${d{jX?cZcNfRNKo5QSQ~yM}lnN%tl-SA= z(ufdL}*m~rD6RX3va5-Ka+rk@04<4*XGKXn5Mch)yxkB%lyq%F1?uOI8z?RD^35%0? z=?&X=6b4YiKBESxV9Q}XoA$YqmC063h>>k7&Yl|JZ|&Q<%+#?mS7oqyPo&D~TLyLw z^?~3`&*%jQh{~%7`26Ere^JghQs78^Bow@F;{bG@WZnD{>ItI?w0_uMAyURo@~fFu zlupD7*Rb0cJ0iz6yv5;Af+-EN2UT*Qi53*c)l$n-B_H3}?d=;o<5@vXg`#K)E1YY! zFDvXeNKD`xd0QE6Kc<0er(?9ZBL~efBpI6049*m@yZKcr6S}xM3ib{+)o>+=`jx z5dYBQ_nwTz8wa5ekg3`ela?PdyItXZ%7OA%1y`(ZTp!VXbR0xt7|+9CM?) zcI-R(nwnPz#YO2Bv!=J+KnXeD*HoPkaKsB;=!Q-0Drrv(yZ!_f^a}QNH0A?WY;2eb z1*&Ty#glPZj?uF;>>FRPw

    vOV9BoA-+f#By52};E1m{6X-Mc5(Q-FV;uI9p)vW3 zt4@00lFI=Tc-$9b%!iq#wvTKsw%eQt^ow&30)KKWet%8X z%G{hs49i3%MSf>z&AtET3_t{}OqSB0tW}}!CcVTO)~O%cbtYE$m(S;7kZZ0bpnHV5 z{B|!6%MeU!64B>$SyjL|yC~)}S)J{xoi zwVPve7E~L7P4RM9%MD*egKiju`43T{DtCRxZk2P|QGp8qU`FKxL z@TmYZbBEi8`-b*;*Z5-V?f;!22O$_4oMEs0hEae_wPq^Fk;($sdz45^8%ZWuzjz)J*|g5HW74JQF7hurLy_I_lI(s++9_G4 zc@rREdjr!qnRUNX-j}llty4RCekBwmVS2$Lj7J;~q*4rRYSGqS-fJ!RF5lMIs$mg#yUJJW->5E_6Ysr znky<^p~qmH&4KhdbP-7Ww3YJu666HFo2#Q%$+zsl_w8Nfn~9oiey2u0qMxJnVK{v{5Mvr0A~xZ`t!aV0t!AWGAS+G)+wnpbEA%rCvwd9zyK_drP(>3%5|Ai3j<^%;CWga@A?J%%IOPrmy)mry zy)4oog$>Iv?jpah#P?O|?W#6A>%1Wx@hOnL66F%X!zA6*QkTUZ(5PPzQA@<~GE*!R zmIAaevnT&LwK&BXb~GlqFGSn%V0kC;3b|(HfN5#G;O;@!kWBm10CGDn9UpEJS0pwA zjq}-mG*%v9Cz|^F!T%yMvo)&Hftdqtg7a83-+By1g^G7zIvIe;Uyy(79a7!rpkfvI zr9U_%V4&SBUb2uOFNiDQsDfXM>mg8?rTvnxCE%C3xi(FzDGrtmxD{vNPWsA#?#8W& zLhPVVu;5!K*FTTbThE3d5_*LqrxAHR?n^fl8~FbIZNPW|JvC*5kHE#&rnkys`bOZk zLZR4QqN0|E}whXAkKV;48ZA1xJd(!xA5p>E1t#jVz9F&Zs-wao6>2viEnaFnS;l#J$j-Ld!s_WCo zwsoJGq%smz3@Ij1!y0G7Am@D3(wph9-Sxxk`{?`4NhbM=luM zkl-fCW}qpr;q9`y+^31--MZB2!K&a(Y{(F}$;A~tH^g(!;gc>~r4v&0`A^a*p7mgEq6m-sgEwy8_%DdcH?aOVBSLpDX z0$FUJXXZeSR$3rh?hcL&7LJnW>Z@tGI%^%OBG>&P`Jhmk9jI0&zU^+?<)G z9H(O4WNq}8tCD*O}G;QWTrQVaiFPfM~qdz<9qdV??p z#xD>wBRoXdiEN@UtT|XqYnkGASx0_pI?A*)8kUx~Y#luN;rv=U?qKM5X=1l}NHetV zw!3hb* zNMb@ZUDb0$BLWZ%9*b8t@`V?9>UZ)B+b%yyIMMly#kVQwagF)XOOa$XPHldn1~=)191;ZYGNkw|ZtbGBkS^#6; zAXRP)R~j3(?;PK}72akJuz3h}KIQH2CFJ6Wn5J1uq3gd&7eH%c7birGfCWD@1v#mCtXlNw5lJ zan4a!$XyPBMEyZMFDgO5u@F<@1au z<{NoQIJYv26~0TgiI=5K4MxiJnLfW80jEz7!N72>u~!d|32fG65uyceX=EkuC6TT% zx}ehn0F@H~gpRR1yz&TWL*bmhhO&*A5ewAn7@yuF_cMT~i5-Y+u zfuW)Fy_kn_hq}Ri-12{48ZazVYf45iBV=cZn_$!hwFO<6sOT@@bKWiG5aT;joQT)W{Cpi`D){?F%m&j$6DzXi(izXiiXsD$%9+Qb6=F7*T|~VWnW^C13liWh5v)*Vci@T z3k;<@0KU%R&xS78Ya_?{Z4f zyThIM6+aqfVaH&Jom*|0er}V@T@L3{F1MZ9Ad!{8EJs`OI-faj?ifAa>@5$`AOW1c zy4lNanw?(C_V~AOdo;Plv#EtOXfMs)C)i`>|Hza@8hEGEPQ6TG!1lhk5)&syqTQyk z77K->|COnqY55_6%A%KnVFqlKc;#;N?Qw!Dn+jKcfb0U0d8HQ09~2YfoUYX!%bQe> zYGaL&5nS?TBFZAPX2}3ZQBr#6X$~XnnScLi0xt*!McYV|_ReYi2n*41WCgJ>U&V>( z*7|DZ(w2_n32`p18J72gtG?1-nz=>nL%k?*vLmP;$VRS5x#@?*y}w|CU5fg~JZ#HV zQnAxD7qE_6{-$}WXx5G4;b%qc$-B6822kkLjLD=GT;5oeNczV!PDeLR6h7Qn%zF9= zCj@|-1GI56k*~^onKNxhd1ugzeh+B`w}v&_O=Vv{w~j*&6D5UFIlC4F)iMlfG3@fDNto zg!U|0Gj|ET*RNx$MEHUGNelFnmXUa+nrX5y0-!GE z0zm&M&yRCy)h}z^P|*2#WfY8L=BX)U0VjmD@;sN`j8`}cgh;WefJZ^Ub(@Gs;m|9E z+zSSi?|!&i{%((XEJ0HeJ(epm_*{_Ns$JydaDcEakdA2&5az7 zac{4h>k$j*LfQuV)OLn@s^v&1Mc%>|bn^Wy;nP>UVKwE+KH3eIQks^Hhz#{1S~WTW zVE1=!)$2lppu$O;x)N26UNWefy96#3dU}cC%u|s&(3Qf20$>tubn`z~K z-5sY4fo9{APmi_VBciyZ-kvi%YYCf-~hq}dH#&aQq0VU9mJ;N5R zkfhTq)SA@&fpWtvp=Q4m3+=a6_D5Oqik80t;nN_p_K)d$ODOwmN z|Ika=^7EYgo2&fO)WYYI+WcmEO=#tW;cj=+^)M?^2`DHZl-*7p%-KEvB^0_&$ zI*0)gyn>ZNH=-Kz;*qW?E(JK78v$Hlq$R`HTSbM7=RwXtP^wF(;zIc_Z3uVQ&Z#O| zk~fyvu|uknHEsY@{grEjx=RPW_uLiRy;rS;fhu>MN%o>@rX4$w#(w2(GDE4|=0fZt zB1k_)c_@z*2=dJ!=GzTtTl2>Sk@&-w3tz!=?Q~a!ulCzmXV0>$|706JP$@hJ!qYuO zVp4^2Ar+@Ssb8tre}78 z-xZtXMx=g|q3EM8=}CzG^^NX<{>FODL>g09cJn73W5lPwP_hi1M~(zA^BcFgM)24{9_+JuxL#rQhHpJOYeT&g6zng_XTpX^0ol^$3dPlor#_dx!aZVI=;97S) z65APf*5Va&znTV{fTllmjWzHG7$UcGb@NXVAp|`K_L&Iml+L@LuQ5W=Q29M~kndC$}YHJM+j58lgj!qL_6{Sx~x< z;26_*Ce$dtEY3lQEWrvd1ZOvOxoPo8W_$;OPw|@Wv(2Oh>v4oBEhoZude!|s!52Cq za0(E1ld)CZOQ%5bfUVNCW?Vo3kbh8+m` zdY5`&5^$|{Q_xI1@46cuYZIaf4tqQFf(QmF84n%U=evCQ!L0V0fT>;E4r8w>-zqm) z>#NvPVvvGB>qZ|4x>ybk!G`PAaUx7oZ3*}Jalbm#n5<3Tp@sT1@=%U7O}kqc`=&Y4 z^y+w-&$aeSqX9C}TuF0IaOD(mr6jD_$s!xhrtQ_}a#z$*4X^oHd0tDsd&#I4;W3La zvggjRWMi%G<=RDT-Y!;xH9%pN|eu z1j)M(}cKwpKAy8{d1psMbaed&X{~Lz@ID zGF&mOR%ecwG)m~9y0*&5 z0=40Ce+_qtMGL-8;{9l&`8_*vswm_JwA(ups10qJpZ6*?MeRMf@x$UTBuN3~J5@@l3D0W7 zdo-_VL)J}m=bB+(BJI5%cw7sxG3cEmFG_b~)Y4wXuISBs#2GCh!W3!!Jt~*YbFOMb z(9oBCb2A%{``IPKkG=^PWHy>K9T^)mQ>t7CvKfDzcU^YV2k`CGBBu!rBGtz0WY9qv zPpKI3v8pnav0lbMX_}%lX{U%Gt|?{H8LfXA=rh zskGieIrA^Wzx_fHKKQWgpa1jUS@ho+7?F@?koFnFjLT>h|36^n!+hL6zPK@~7efA< z+5evfC&7I_gu6}>XPry=pE#W(Ft9f;k0UvFM>7AV zPya8N8-u^PLLIuua|agxZEXHG&IZuuKmG+yhC5OI*CGBtVBDC0G5*zK{Csr%zm5O( zyK`RM`R?D>YSaGaZ~q@Kwr#lkt!v1taqVqw{8p>Y>^FCJh4uCIv)>~cudc2Rw)(;j zW{Q=~tgWqQ4FMct*x}SE>xD`(tCdD(Cr8J! zA1}wpmOKtnIUcXq=hP`Zg`CsV)4yq%nVIZBigN8nTe67ANGdZ^ew|WN-DVA&g}yj8 zK{mEp8TgZ zbVn8e0bcG6$5gSB~ zbadHfe!5Pi!pl7^(L!NGE=)@(WzsZ@9x`|ZS(sbjt+Y&p^xaog6Keyd@ zbu*FyvH)ucPW#d{(YOn!Tt?>?M`W=~|X<16NU<)9VS>J^d{b~MIL^n+vHLQ!1 zQ#srb6DpL9I?zybNBB27BpWIL% z3e6{2{==_Bd;jbaJFG(+$gevz)|FW+ zdRE^_sXGr8xw`Bp7}KM+6qnpYzYSpY=u#PYXmh{ohm4oL{M}DCF{nIr97*WeU>)yV zjBQOE@hT>P?dOZzOiX~+Z=i$ZS2B1O!j9&OnQ4Ha0q0ZI&xzeF*F)|9$io zQ=SpLEXynes5CcCG9^7*84mPbg4;T_V1RNXmo4A;ZkJWJhF>A+F8M54SOw2BG7Bk2 z4YfoN)p0L+7U1Rywdr2ph0vs zPQ=`3lXEGQ=Y0^;arvR)utfeFCfJtVs$-6;Jh3mY>&ClfrXk@n+%;)0zSZU$;?b@G z3=UGg$+GZ~Ud&Cn0&MCrf+QX-*=-m+Z#8XQ+UzuSR7y+xNAoVhWVD?578%hXshiW8&nx7tCeL`a_bY59)S|+vOtwBb$8GlV{ zb?mTa-a%l>JkVY#WKu? zaVBy{8oHLwY3|Tl>_&)ZdY*T|8=|z91u*K+=`GL6X zw{5C+Yi5}iyFA}tT>GGTkhUG^oFRts2metq^=|B8xv_bL+Dv7=J!A#-H4*G5=W*7N#QdqR`%$md{IB=hM!24+V8jNC4ETqvNTiLzd)mBFNYJ&oSo=3o#jh4sQJ!%2{~!_IehjL#lXA(^1>( zwiN=HVtnpq^cNTG9zbcJYe0Tj%5Ygr0pACCap_yu$rRz_$g+Ap4|ox>`F(X3b+M7g zL0*bjt?9TA>qtIr+RJ2*P?&mBN}cq*me4ejjjM0Ceto^`5Oi(5?$C6@dAhuoBnEwd zS%SQ1vh};2;{##o;npt`8+vgA&Krc@1y#%oKo5zY2NGI|6o2848&;jQ9w$j&CfTDD zrrxWsU#}J3*gQ`ivcia@I3M$pj8o*Apg!=#>KIWCAuFJ(Vg*kc&vQSLaBRbF3~;Gw zyNWoL9(4n($$xyCvG#K6BI*9_kUFZjsigLJ@HQuy;t!MF!Jb4DdEDY!q(V1idBrUM z&5ZKF9{6<6S8~l%_eVG!_+j)8e0EoGb{}~beBoTz*npCM(eZlJAy4vp9%R^%TP;ru zl+icuAA-C+LI6)CK*$_@LeHF`9R17SYd&(*94M~!;-D}~UhwTokmSXl-__7(H3MxJ zcKtqLy|ExezCK~QC+lS~D__CuaXPI3aJGKad`p(|c9OI0;O7Cn*ExI-Ik=9^8gx4G z_|HTj?)4n)jVYATRRe{tG~%f7xBSn?^7Y5^TATHD_Q_`@(1yg7#L*&h3tPwg)S&-K zsA2+!n)q^740tT-1V;icCCs2&9XDFrGr_Y{5p0m-%a|yS@7#ON?T5*=OCG&l=GrMX z>)@x8gMs&GPmg8rs>ShbA+|gpX1yL{eH$)3*FtN4zifp+`N_E&58eWR$-(p8d-))a z@VxcclXcXE5pCDmV0Cd{a+6ZSZ)Y|h+XVAvhOw{lWL{@?U`A4E5CkS&MG{MLs`dJ{ z{jQA>`e2c*GR=3l;=nuydK6)0RA>J+pWMkpSNczDmbpB@+F$1-)Be4tzGlTP;%^yG zYGo4l7~|U|qa@MHUHP1b-auFs_&WFCKPJQU#K?F8>v&qeF6P@H@P5#{FwE;M7rOzy zqhXfk{bmpWi^tUpRH94Ik=@39d3oy2bNw#BqcX9&_d>1XaW-#FxPkbkZr^;yA^2&v z#RUR)E#+{3zIpwhNE{3Sva~r<8LJ~6%hlQrRV?Oai{{_%2Ly?)tZ5x`o!G?%qM=?J z@LGlUv7QX$StS4%(XfoLamI_}0XW zW7X^J<;~081jc6l_v;%yN-BFP^|yRI5eza!6moRD(BSAQ5k=@Pn)t87>O;TKW5}+e znZL2*eZz`)?}vZ80UtWN9%Y_!-(@=7F72&7-Dp7O+uXC-?%d{T*4Pw5l_749)w08w56+Pwg#AAEk*oUh8QYpxR_+5_^Xv+|774hKOVC0e=#BrV~Z6wb^6}y_8~to zgooRV{W#U%=4DU zngBRPf<|gCNyk|ugGMy+{p{yyd|Wdjtb_ z31{r-%a83;fO6JSB#?kgC)Uu_kVd(3kI_B@2jx|m(GP{wcMS1%h1Rp;?4tic*;_|N z^?hOEiWn#Ecb{|i+535(eXcSNWo{EHb(9sRglm-_N6KjL+f?X}<0VG4xaB$|$`AkQ zV6dcf5Oq~(5hGd${KO5~Dndj@Z*J=jd~aGQUHduROZKQHnmt#{5WB6HJ3{VRSPOIC z4E%ESQ|`eiy}Jj}SLH*6S!kS8rTXuMiFo;0XX#_4uv(RFW#s+O8rz1XU#(9yRm z&_0yAxykSRw%4AXoY8QqNitFuWv&t7&dwNc%F*!WBk59;+z-A&Q1nGkFz(|WBt=${ zo{LExzn0KvrFY0L1rhld&4+_q@U2W0xt6#Br$v_1Z|X}feQZ&EO7QdX7y2AE{am?i zy$=hHL0P@LP;;29(OoYw-tGx#5UraN_Yk-Jn^sHvPbFUKN>cXZrQ)Zsq0c*s8D}T8 zKPl1t20rh0CNEF;nv+7+<%^xUS_Wx*Qt%Y!AT0Sp)z(m5|jwxuUXe;2-jqk%QI z%ZFzSO83?#$DQfiidx&o6}4cCs8y=sd8GyXO+K7yFW;KAWCQjir@ldiJ1;a?wdz9d zN&~s@hdWxNt&hEF9R0Y7RgnrHJPUBs@yfkSi@7jpeF3HtznmE&-Rkp+7cv;P+q2my zJ+;-mX86L`ltFq!>%`|Lb6yy)(rHF^Z1fRtt+r6C8Cj*lxcCP+FrTE20inrWxE<`B zR2X!ra*zCtXO@G(@$`I+FXt7>m3WpUeieJOQo0nwWjr6-dfR0*3$(11{D}kM zduBRpzD7P@;Cu{ys1xc}@jZjGkAlRQ;a9N`tMMbbTV;XePs0%6{4(FXUpOFLN$<$& zBy2%%@Fs4Ijp&x%PsXS-wd%LitB-84!s^IHwLUmDZWcm9Zq+^@oC5<1E4wItFp0HZ z@C>Ya`3mv~B=CGCaG?Or;L&VS;Yj6wK8z;JE;2ATfkbW$ORoj}ViH0)$4b$9le!ZN z)yLWViSzad@qPUAF^n<~rGQJc_uAMr=zfH&O!?z>C}Umxt7NC~7xJXOPZZ!uh9QoY z=`=4%hhRZ!x(H{?ARA^euz+7W7iW}yI7am7fIEp5m7qW?4|PrenHMFQ3W5o~O3oVj z)rnHZWz>Bv-gqgRC`Zaf+w++gNcbH@TI`JhSD2 zB6EJN7FObA;)eW-w+InjE+$ms3A0%a1}g*)%d0UD6&icAo9Q};H7PR0*9wJ;R%~Mx$PRc0v`9NalsF2pc`Hl%{>>>LIIp2d?eNWH zSd&}PSHGG8z9-km+pK9zai6n;255HsLaFGp(T0gO&mYlF(^?YhO?C^^>UJmbFyX3f z*;t&sOusY--g%+Dw6jHzfG4QnUYm`Dw5Y+727Qop6J>psZ3V(nzbX-A1vdS=>H+rs zUwDVF06Ln)!u1ksnA{tQJDH{a`$s?4h9nGs>Mu%m_QHUy{r}F6rjYN*NrEQ&jqnv zyn$$!?4mvnu}sqzKPdSaedSd6@N4YLI;1_E3RS=4FJE2N5=YJJvb^*?4l&V?1cDG( zWW)7-QHX&PWeytCd8EQ(iOf{I^4*MZwk27DubA9#=&%#AeT+&olxs-tJ0PuRyBW`3 z*nfC6Va>3>0fWa6Q_M|=?3|g8wj6neE0bNUZ_aoG5N6y=dNL32ERakOvvOd&DxygK zeDY_>=AEb&7TYaG3cq+S{{l2*JSFd0n}*{+mPA}wd)J6+ltdZTyInl^Twd2Qb1|Eh?38X=5%BxL^-GKPQsvlmM1GMabUYJA`*HPWD_=k# zhV2+};ffv&4;w{$RM;%Rbvz+6z(8Z7$JSzEzhx?gBR#CDGSpCt?s-~Z)9bjNHF&u zj?CauBHiu;jlu^n3xq%RLYNu@ggEk{Rl*mZ;-?I4BSuRtt1;qYql4LAGHEoP`NBi$ zUdEr>7%n`zv}CAx@soxj1`~&4sQX}FlViWHQ{IbuHnQWchU^RHtr0q#5h{-b({ zIEaLp76hM>t^^+7h!t4#saqxN6#Ujs;vO~H#LY#Lr^r8mG;h2L&+@L9-^lD6_Ke7C z`ScV;FLmFt#Q?oDOZR;b2l%s9Vd4*e(BR7I9E7td&sK8u`uOr|!YaOps(St^=wOoMyQLx-P^%<9WAe=u`!4C*0E=!i1}tq}ZS@NhQ$6wnwzdL~QOG!3GU zJs7YrEz{=qPE(clv{p7S52t?J$R<2{CqPcdPA{Cut6Ay7pmn^5Yymo*X141C> zy+doh+sqv~Ob1?^;9HvF!Eqk9$*n*SDuU|;Nr_V(=~D&^L6qQm5qwBwfuV70W&|32 zLFJ}ibYpg$f$~mT-GqM|QI_}7ye6XZLcU)L;b2IM%$(|v2i{sZL==I__)s`EK?f@_ zH&YUtFNd~n#*WS*YGu{J32VV-gKO@*Zpt*V<)hK}XsjE9UKq%8~Cj%&ieOYKOc}uw=!S19vEuMBquwuB_o1ze5JbhM@Q=4mo&eg z@H#i=(T|9$gD48aqgS|Vpw=o5?X7T#e|G|AfoOg&q>m_ju-{GpW42J6Qin_G;RORh z=#0c8?@kJSGFa>`(wdj$JFZgO}cf2_VfOTb4muh(O7VuP+yP825+*% zHrTC|j&*zw%(yUf+g_}lPP&h@4Bk=%YX~_5nEpBuae({ph4gpwXGIxN?u9K-dZ{M$9DUq29>q zbP~=rYSvP^QSMhD8vo;2_*pM^&s|*3o}VOIhD#rMLwlg%?hI7}O74uDJ;R5JL=ArK zwk~gW9qdz|aLU(*D|RR;+uPtMuBkv+tCGs0aZJCHdJnthh^~?x0}m{*AoNmRoJ1ZG zo9r`=^g5exMEXwOgV>PiEj^w%Hj?S|f@FObY32aFxH$@)A&sH>OW%YgUz53$zF`%Q z-0<>qkErx==31>q<{sm7kblXjZAr}m))2QlcI0mOD5+N6%ApdNJA0#r zCfhU=OTOvT&RO9n^>0n?@)~U&x$!4&?KTXiv?)^zTk;B86*llr$HR1&@p$~QR^ptF zMHG_j3mDH;hcq_fcKi!dm+6S}Laq^`IyF9pO`fC$3X|P$qXhLkTOsFcB=IvLR3T#V ztYn5nZ46;*S4>ALLxgQoH}MU;N*_tTisNWvLRghSfKcyhvP!= z;O3g@qyu5^MR@GPV^k~~%)4AFBK^pP^X1ZyLd~qMMQW8LJkeFTB$5NmK?;*k)bFGs zkX|rk*X%Hbs0JdexQU2X^h;JR_6OC|Az@Y@+9tl7upssX#Z6Eumiiiv|8)cNpn{oxU9r z7v24e=Z0m+L~$NaaM*km&DW*|A5ixad#H0kR^S=xf;+D;E{8lXAc|%A;4IK{v!!YGx8^iC<^jKjx)FwZJIEiR!#9 z-|we*{Ec^K!X_6ArcE|npco#?tao0=2Fs_JnO)x;4Ds761It0?V)fM9pq2yH*JYQQ zD)o@Vnlv9_=}ua$`C2foR?oXWNn0tKzRb+PtWCI1lAtizp;CtLY@*S6xSl*A23TZi zl#5S)eX9g&n7DV_qpMEfMlu zZd&XnD*eDz1YV}P7&q_m6u!+LTbo3$&9nF5Y`9($zFWR=G}RBhz{lV8J;eXe-TIa= z^)9BP14F>0JCV%csla5+_sx`)B>2kteHz{3m2 zfRB>_h4_Dr4la2#vOYu@7f3#i+>!e)>{G%8%#!w(CrH=v@3< znJU@lcVMA7`NyzAjP1k|V`@8E*kE{THoWyqO^5yCD$|kcmX-{zTs<*Ax*}a(-Y)Pb z2&TDF*#)bSaWx&EI1#2sNX(sAg3lY?$QhFVH80!mWEEKB= zh$^`2m*ur?_xX*1i<)-zjC~tiNd#rK{WWC}oIe)QZ|pcHTU3UaQMl!c-h|cB7;r5w zf`q^#Dw~;3bHgn-X|O@?cHXJu1O>yW(Hx(EoW~|!1H3NRmAxj)Ep{ek-q7h}PCkzf z2D_2B;9DniOSw50+l&N_|UcBB+f`*>_9#s#e2cYt|bXn9$;V>t8Gv{7tbm-DayEid)oCA zvYRtHa&qf1>{#)=*?9JQ63D>i(8m_tw?Vc>#HpGK)eg97Xl?zn;FyECBIVmmp%0n= zL+sg=JFY$NXd!%-Cw+{KF~$fP(MiB=jZ90$sNt=2vlzMc%KZl|#*VYHMcck(_N+Sr zH;37#XDMx01uHSC$e%aYy8#t9z%%J~x2CoXCJ@ur|X7*FiQ%ehe_mkwDD-SEpldh!9BEHpY?bO~3=lxze?gVY*c z#$EE=DcGC1R0VmiN_F1;ZI=tXZ~EJAjw}9dUae|EejMb>zo`J6nZO+9`CAcrWZ9LZ zf69(`Yp@;fw3eXjHr{jBgHiw!zMNa?{Co@ak}>A>FFohms6}TuwE`_GRb*z zHA@@H{V&8=W>wnxTlY!#u~haB@_6tB*NPM66$!(|=rahWFHK2+_k4T$IPfG94-{3g@uGOK;EF-qrZht7*+85iu_UG7T<{ z^@C#(uhx92Vb`GwGOM<2-@MZ>5tHg>wmBvMne%-1AfbccGX5NNF5UQL#L_#`McL)J zm1RNA(!Fb057|TqTA1QFhipaTsW2rWyi63thITF!cM`>aw|?4*5864PPtvZ(Rr2o> zpEv}+RB$d3-i5+hD2z1BOPjm7wbSY02Rqai1D@I^i;?2rI{0O{XtI5}_;e?o&oxEB424p0GVLIC*%k(1N{HB(lcr zysf2UL{$AWr?Ds7t#R+y6RDl6!y%J|L24k~8E6L{T~GF^ot(>JmrExG|} z&-va9{vL(i%~jjTgOztpcwbXr&}#h0;E!nR*G;<#)lWF6(lUIM&RMKXlxCk1}? z6`WCu@7x;SC1}35q;UP2iU}Q)mc#Po zQBl8!Ep*>eb3;6laD^Gww<{g54+UY%9x?DVc!{@=kyZ-woNAV$S zhcm`YvD?sVEy)3;FSnpU|Ni= zo*^UP5{La1%T>=Mzf*HQW3QW!PuL$V%pEWvx9-$V8SiKPD&4#+5xLEyx@L0gQWm=y ziHW|3e!%rHzSwQMy(y;5h2F&9BRpbW(-`Dm@}&?*oyWrZ zlCh#fJFC#0e4~%NH+M3tqI_>d2JQtLR_rbix1GHeU3}SC6s>mrfXoqJNPItB#qq6Y zkCD%I?Up9ivx}5J(bOM);E7FFOX}jf;#g^~WjIu{@VRj$A%=u^n}_S!=46c%!9}e> z!#qQ!sQqB7D{8kc9dI9CZ_E`iD<}YiO1CakF5cdphTg1jD`vfb>z_|5u+?f_e=)gw zdE}Jtgt-iy_=U5uJO&cQ@yPP=o#`{yMzeO&mKiQ75b>>VHE%o&c3IcJ=jOmveYdg5 zGvvBEn(fUx{R$u;%EpO{=NlJ1=H4139;8<@iY+ht?3NK5I93g}MR{tw<5&1BY$3;& zxkq0?FTZ|aCv6npagO=2O})FEGZl+C-fle{6#jyYetm9U(nJBwh4R&=B9VZD9>&le z`a==-cN;&2`%d5ELqcF6FaI$met@{KQajvk;f>X`GetP zGeKo_vn9$=hPeS63swlH=KaoL$f-OZ_*v`qN^!Y$L6SD|jIY2=C8|-)Mq&0M>uAhk zc-32`$^=hjPofgwT9~s9J!Y(adI#NqZrj0UK9@8!VXghE?w%w#_6!3&?e5EYzQ+i0 zQ-6;zNof9hAcM42<7h%v|7_J1+ZYxd+kS=(3sp=t zX|86Lj_`hEotoEjWjpQ@za!j^7?epV&c+X|Ab*JaBvz4tf)9M5X{WK&*mZ!{U?6sb zUB)y?OB?D0kdkr71GI&U_{ZfdFu^{-(DGh23?j|uEXlos3-lH z?v34*h>D1MrV1e}ULI!O`bJr3 zzeLZ^GH35N4o2Nf`FC2Cxd}m}QW;2<<-}guqeM0)XpLp~ll$g^-vGp6$k6|MEmwH6 zTTnHdtEJ>E7*`9NBV?}h=OGSyMPPzd=X1D5r=aA<*8PpLx?`35DR{5rE&`9YRaR~~gho>NmV-a}U zef5P`()abke>AxOB9o9EO?KuozPk7rj>6us!c&R022$MLMK}v zW;fhuo*&qtJ(-74G|xn~X8@YQy`JkotUh!@Aq;e1{=s_%fZV_c-rPYQD-S+|*#DlWVJoPC18M)--G}6=-{#Xn zxRY)>bdWkXnYz}cUB6wQFUbaT2OYm5WsY}S^GT%?;ABE^XlxVrW?8``^!!@8&;!Bp+js08x7xk7&1QX zRCg4>XjOK%7{&I(&AqZ*equ3Z;y0$0m&S?Aij9ZYGds=Fyntikwa9=gwJ9wtGle{P zCm_{7tTVuqjXNx^996%c^1AEMV;oPzg>|=Jbw4TQ*yj||ay4VY`NoB1b$A~(Cyw8*Ey5VZ*uibNKiU=OZ%E&FFs z^`X(hM23WpE#Qem&{#DvK#Ou(fmr%I3mJD>>&ACA&o&hA#(G1wpeZM^U&myM&AlJ( zh)0=1NAH!WJMG3<;*c^EAua69%a?4j{YoaZ4a(%H_H$?2A64 zl8>6GIK9U*7B$hz1ud4?-#o9b%Xd99eXk(9zD2WUp%g3emT+N>!s9PvM-8KYAVGQw zBH51*wOq=j3gF#tg=Tgo7HwxQpoJ z+o)?lZ(-ml5tth{cR@E zTFcYJU&IPTNzP}03Jtf-I#HyZTQO={i}YNrAUcRfr7lN!K)r3>Og6<642UA2le!jB zmFIaIDw*RFBx3XzwPij#2?cSV_x)CUcq4Y;8R$4`qD$%fyFbb{&vVW526asu)C%>sneecJ(%trs$2yRh1f8*#Cvt{jsgh1rDe~{Wr}K zLr!{T8uxEdk>7;RG3UbkhJav=N8x&KDUU}=K8ZyWl%5{t`^zoR&iV^-+9IY* zeNDv%Ii=os5}&vGaH+tvd6mK}L8gcQH^7`blmJ>c!T287k$nAcPSGXe*1gYaC$cp` z*w_B@cn42z$j!(bzxa^yl6io~T?p$q-KmRlMfQFax2fu>pH6f>7amLu`gDCVS0PWa zYcX(X1{MYu9SDg@etiGzgRg}~us4~#r)31ejUv+RnTL6z$k4UAO(N;(n-hV9C||8s znQ@}`9PKW|VHr-Xf;-tut4zXcOYxd!IxRp%m%>5|*06yn8_BTy(3xpSf29n&>f!nI z-o$gky;PGx^r=rv4IneJO%kGx>6m0)ibYhpo;}HfleyV!er?ASZ*Bw_vbov*Wv-+hRY0f$VJgV^9iQI9G<6Iqoe%EEVNl%k}%S!Qa z3Eb=81JYKvfP}Rx9)H%3UuI|D(6vP9;Pi0v1ndbSd~(DK5nM48{AjTo~rdw3u(lb%CGEC`5M#wZG& zybd8XC>>uGMDm@L$M4FFq#!^UGl0~Rk|nyG4>-4ZZf}LS?E{_2Mi%K!-n{%w6L>Bx z9##?ICr8`0+QfsxiB%~!$=hB%8dITCSio+5am<}4$>g*$_9r9iAUb|(H1hsLsQA@# z!*ShKm7Me%-fTKlAs<^nK1=5LnzkeDzKoYl!IPU0q!U!wJu$AIFzcOU!@C5PvR|W~ z?J!quc>Ux9vN>^av0neixWNsi+6o>SBgv<)8hOR_9hE>z2Zq3x0Wz2(=ZAXz$UPEI_efc?gcs*6)b-19{L$X$Gi4g%lE)~(@DN(_gM2HWsn~l zt9qoTTo|xnKD=*ts4_diwu-o~Y(sSr_NS z)I(t)j5}9+TARO985=-ze$LI_lFjlhBDuaQYLBDLM%;`3n#6Ic;p*;AQ9gvRErxqY zqmDz5KS%^w_Gi?imBVNeWYbb}ePGwKS}?}K=2Y#&mWGfkVl(+RB^tY=kUX)cptUsO zkwsi;e9DXD+!V9FGFwR+%%g83yWWu+`fiy;!={^fRCT#IcvU-u2h$p*Q5jHSc{kZvd9e2R=X$4 zZYFLYldLxO*5&{wj}U}2mW0@R+j05$R_)%doxT(FIPInPri@b)JSS>A7~2be&O`6D zu>=77UGXC^i_O!Sz%_a|f2J0`Ak+FSyRV)r;Jwf9rBlQ@lz1klq?5I5##_7Joyu;I zKn~xqn&TO=SS6Ve8dQBb#QiJMiM1u8i$wm67w!cb=FY>tT*ZcBaDwg~mXY$lMh5z} zbHA{$z3_XZgA#6xnHx;-(D0EmHVYxOCbttFCL|M&+%7h2bfn$2O}}Z1!xJ<*|8xK< zc@#0ilIPN8)5W*)B}zDPucI>R%zU*jDiTD!R7t_BsFTI9{AKx}DcM{mZwb|u=3PQs zYYmpgtL3z;%k6o>Vz2pJGjl&Vwfpq;3$5;TG|t2#NNT6)eq@S> zzoYW!OEJ)(RU7B#g_hD`p+39EIV^(B<3UawgMFv7ChCRRk1a!PyR7y!UC$aD}AP*Uh z4d^DV=7Ubmd_Qi!s#m{RZhAfO=%`9@S#0OwpQC@o&(U9#z_y1m#hY_Gs*0I_C z-OQ%!)Iby1ADWBj|2_}W3E$uIb`44XcQd~x#s~N(!##YzC;vE@z}E(_8t%3TN-6xi znNy#jDJ%95VXgQ7eLU9z25#|xEaAV5OdwYOeN0NReo=rD!7D}M+t`F1Q|bTK6g`$d zzCTU%T=aSqi`uK#u0u6ak0RXS)ewdw6h#B+vLynnu%AXw}V&6;vN zfL2Y)fyF|cdj8qx{GpNlV}_UOb6ocSFq#r3fOFgZ(#iPm>xWVvm~uC&-m|Sb|9)Go z=xItErSk9IKqT>zh;M2}*_L;7A0o{rOECKU?Uj!oZck%S<5yj1OU_cq&NWCn8u$b1K)S5* zt`u^Rtt{#+08(CUEyRt`lwg?qJno8b$`8sTX#d(05tME(E7%%#*o=4c` zZH0}6o98`8hk|I+rGhaX32o*GYg&OH8;0I3Z+~a|kk8^_Ne8h>v-fx&rPgL+;U4)Cx<`c>67>YP0JorO1mrst zK>5=YGRn!<;y6r3UVdVtE4s$45`K1G z>v#X+(_g#N2F)v90~}e!4j@fK0t}zk@le1`jrR&+wr&fc!z#}@%tU;O>Z{l;I>-jd zG$bIMFZI6|%MOWT6hH4-RuBUe;!#Y&-5ZQ^f0vM{(4+2mRV{$t`fKx5smXQ81#mqL z(QP}GCuE@zx{cX)qKB(MOO+A;(5~?YD$?2!hPJt%e+Bpg$?g)xKpT1?noi=!LYe@X zd?|o`*QEmvskC-dzw{UJxZpyhe+|Hr_<#xTcNzf3ghkxpi@xX#09q&Ty>zDFBQ$wk z5tCS!Kd=s@DQ0Im-FXAnac`evQMmytJ_C4orxv~+H!vbK5qCVkZTvai220;y~%nwm2s&b~(3$mn_9oFjG(O}uSJndb}0 zd$Zj} z@HC%M6k61xafK#MC)QF-j41%eIl&K*gjk+!C$kPZXfUlbNn79U&x0Z?jH`C^B!b|6aSwuPKwE{3SMB_ef7P=N%N}pm_Jqy&0l(;@?b-(lc-j^}tVV5;;s*f#5AZ{yuAx-^9}v^(3T#@pe;$g5Z4p%zsZ#Nv7rUMW zbrfYu+ff0>1n{t-3?UC(vW5{5*#tCHV_s6+AjR8%vM9^jo^jE^_%Qt<-Ju+cuHNtl z5b7=R+g_bk_0t5-C-{1A(epPm5T!xNX}nw2MM*Jt9BCtxr<_N##gksGTx0JRT@=xO z;n{X+q^f4CpeVyHqN3MFV-C^a>K+EjDpbQ7LK?dsOYrb&=&#Fqad)PE{7EaC z|E8?No=dg1E7d?8R3@QI>V)}r0I)7?6_@VbC2Y#r$Guz$XZ?79e@WzL(Qgl9fY6|k z+F!@txCg8chS%+nx{a4L3YAmL5XLtLDP1RB;y2E=r4HXa7}jqX{TcZ76E&1Kr{x^Y zk>AB=Zm^r&OD)ijRTQgx(g>jF2pvg1%9hX+UaJsqeyB)C*TV(3F(qN=lX=%6p@9>= z+<^yeJnnDO@hghd#ca_{*`CHOd>!2VKBio%W8!xlz5Q#4BH(J@9jT~U6ml^9X6i85 z0(wskadA9l(xx1>aSUu7dg4IQ9*SIixA{;XcF&t_fFR#==TBkQVQwV3A?c*a(O2RL zC_;lg;4ov!@OGWQ4NEUVJk*p59l8aP$lsB9CgnG-CNp6tZPj%)s(SRzMwHdRZ5!;g zH5bU<j$M)7!1QSduXl!rG>1e zG;n;u$Eif2Q&hl={2r+SNiGa?Mc2MCQVLgpu@hSHhOH%U{aymVWuecvu7iS%(PJcp zGj?v?Q7!$eU3j0+eBFCn8585xZ-M0DDpu|@k}jehEHXZECXN`2 z`A!GA1~dnJD;llqjR03HP@ebE4A3^mSg3sXMQA>!05U`c{2k0-tb9GT_7JtuRM7K| zRwS`&hAchw0jirpy_3O|kblmxCJf-C#rW#%Lh=Ms`oiwr*q{f5JM|9V7Es%TEez62 zJ@BY#;~4`Px^@uh{9Y*jmRTrL?l}jp7bp?}orl@MzB2_B&2X=Z-1D*RqM6oy@Bn=; zFKF-1P&{~5IK$Y^4n;Ksu6xSuL2q#RR28}yl0e2i#s=c9ohd)oHYL3MT_aP2j2CC? z(>oI9_rC-16nal^(6n=D4B+6kT=Xs8c@+|wQSiTU(JlqZcizcL%j-TjS}m51)1)=R zzc)&VMK?!cU+~K(iL|BkF9<2hv-(1VuqK&)%USVx?9XvIsDugR{VyzMDBQk8X^^pq zZ?MYaH4X2i4zNVBg|_^EOa3)9YW2DHF7^ddG&&l`U&0rYCbR@TLM zQRk8Cv?9ur3>vO>y={l4v9=3Kqx}tK(rssyrHWAaUap6O|?rI{RVP|+@_&p zY(@G&6B$!d7*DmxX6Y7pWpoE!Jm*rz_OB0q@D$iHZ!Wf23#Wb~ETR-BhO{O* z9bev1Pni><(QJ=Gs!oPhI6X(W?O815-0vTM&@-dvQ=lWo)>#P!{XivwLu$>px2IHK zZVsQBzOUq2OE0@L?)gr4p_xW`?k0ENx0CWJ6w|DQVMSM2LNuR;(z{OoI`qikJA5(K z+zN>WdUNJ5F4WUyGzX(gDS|VKwG_+sy*#B%kz%rxN0+g@D^!to&|<(9w;#B%k#_@P zeWv)M)HxBGi(1Ap!8o_ahW8+tOmKAR4NX=p-y?xyo=iej`6x*qQUcwv101Ih?c`fJ z$dJ{ql(+JWs(AZimgtG9@ifPExE|QdZU6if9J^JB9i|QaRuRG`uq2*QX;~>nSHo(h z+e26XR4-mUG2X*aR(Yf`1G-Ege19Gas67=hE8k9&2|XX725@J;;)@>-#qdue={7~= z-Xd6mf;J|NA`)TqJ{Zr-FeOY&>McOd0IkeJSJfqf2tT)lf$3Bwb3iW#(a{|A1laiO z+j01@h3#%RU!McL|A9?MZ4k~O3ri0awFDo&%Z_qjequ3J8GhA?>%x{)^6gq-qb~eg zb{2^Jvr@kQDBu5@y`q*V+W$UoQ435x?LLk+-y&DK6E(i4O{vxoqYuvltCP;6>=^2? zJmvf>(#x2lN33hQUw-*5c0(J)B}lQddB%R(?|j1eWYntK!FLe77kLxJmYLRc2!g<5;J}Sm zhk(dG1Mw2G2i0jqS4X!C#cu7}2Oe>FcY>Bk?eZyA$z`73wbAL!%KDn0#Gj>5)G+`vzw4# zf;hX6r)AF*4*1a(vc*iXOHc}z%)(bPLoXDaJ2Bwizwl0vokk4za^HkvF9i8 zE?jjXPN}zS$Ax>Q$Fa%FUM%%!pRxSsWXY^-!xbaBlvaRcz8xXGp_NU9&F@ zd5%eiCT)dtudRUKFLn6CB80Lo{D6~o3agve?eepI=(_#{4OhZL zoQ-OyQF_eCJ*VggZaq1S&-g(>CP{aB(h+xq6}x>N{XyAVHkMoI#{(;$yRb^?Iloj8 z)moa1>@MFu`3wy98s{9Wu>x=J994Q=muL#i8XDG70k*EWi zKV>W{qa0+ji{m50QMBooRW79XIXNoZv7tix^}YZ32Gce^^6$Q<8W>2f2s-lx5}Gh* zoB+dR{x(1rYe8a@zx~k3KTtnmkHIJW<(dB*fL<`p_$R>C-#vAt8|O0X;=exc?* z@|O7X_1E&4w9vg}OPO$~VW1u)m_yb}m*TbSTsQB9l1Nha=Jy_TNv{TA!_E^K7?qlq ze{l1v|M8`zlU`ZmvZ+ETUQ zo5WLR#|TMvEI0HH{2t*&*Npc!NLn;mj^NU^se;*_6sc`bt0CF+T%KN*ZpD?ou6k=I zGnP!Sfl1oLnS;3?@bM9>dbWt)m$Don|BH1S0HNJsJLiP(L13VyHpeIyG1{pHVnxQ? z@lZS|n_E;WcrdsIEy^NIQJWr;!DTK-(b@gUoQb+Znc2- zVbQl~nz7E%V$6TQx?&6NAC%ig!x$2h7|&(_Wm-pU*g*XCXfowCIwk*lm%^t=UU^2$ zk!g_gvkyjF({^dJ0t1es+w)&3zn>#T?%!|^iEtOnC%02DjNj+SYQ6g7P;DMCt|DP(Ko9Y61zmbfR2k|`2Xs-F+;DI`;WRAM)xnvoctVQE$eVm z_&6Jy)+bNW?Ndo&zH^Wj3!FRkj$A42Ss3_ptFuHbKS73`f?Z$T?tOa zdD-cc`NfEygsr_={e62gqL-z&{(?@9(W8C_?$+!CBoah-&p-ByNDDs*x)2jW4KpJO zIQ;C!X-5Aj&2dwBYGy@$xjn@*i7oK6g=<6dgdT1-&QIEb6q6gKfkND0pqIoMJxm`8 zqlWI;we3eaeFKDs6il4_G7n^QjJS`mPu8Lqe2~ zpKa*jMN{qp`Dz(%*F_qHY7t$_5Tqw7;gH46%PE=$&snd3nKu~v2``j1UDK?$D{xb6 z;zR3xCz%f5T)i~Esh>^B$Z%EF{2jdE=XX&rJQ(VET|QNrA$y{06yB~W3vZ9>1%wF* zR3Kw}jvvEBPOQk>v)FFvf)3q&&6@_}tegTnIEjOi`f|92@1LNDoz9Psc^F0l*(p{( z{S62u`Y!sN2buh%!MoP zClCpwap7m0&tE@HAo;ULOVlV#z1dKYo?faEfhe*(*0nr{$E+O?VRUf#bH>LFppqD9 zqaIaiK?fig#uq%0E*ZOV2cu9kGVz*IP1bC+tEI)@Jk?y_SnCF1@wb* zh1I;NSSEj!AOO2$nLOBL5jZbLXPlcw?1r2#IS?mNX+nEytxkjQ7?5;Ea&be1(Q3Lq z;y5Y23k#}CT{l@7{@!CuYpypO579aMi;zGResG~(sjxZ_n*% zz%B7sIyX1|rPmK@0$ZLGiab&MlW5m!_slMaQ6}YUI{#%LpQp+j6+ecmyzP=NFB%&S zA$#}2J-WY9ZdEW>M_4&i_Lcz%8rF;PweATe#i`TjC}Vur3d+p7e}vJ|z%8Bq<5?zl zoCyGLSUg@qAEzOP4`?2hGj;Gjo-O~EDm}sKE*|?39L(G z2E&qb7sUi{pn{ItG-ET6^F_LIIOkNQRZk`Koc=}qY~M)Sm~fDs`3SUQx)=MRb!8O6 z@AU;i2x_98eL^eXarFzW1y^$CxjfkD)E2_@%Bl(gdP02*v-22{55>=Z?uqjH86nL7 zx}hI0uuO+GuG+_c0C|>C{xlyFymFmPbLP^ zA?SN*oXHVOxhF!^+(b+*$Z!PL=?m`Q1l)cWi#vB{EajvnHMxR9sqdn&PjF0j@)MLJ zLbB0{k1IZ3o|$%ITR2{chMNC2HD6rZ+iB@ZJ;3%KZoU$?Fg-XnC4?q+FmTO1x(;idEU3h)p;M4UlkLqNOZRW%Rl3Zn4JoisjXFnbaIizbWF&W5_ zM|EcQYxfp%%_f`~Dj*mz)*OVaTQ`-QN}dC1%(K{j3;@;0kfu!(8mNEV@e7FS)>$y7 zU--5;`E40En|vqYPS3n(s_;K9-7g|*{qyn3cLTpwvZZ2e04-3a$aAD1?$*idpIrV@ z;verp+WX5*-dy{o^_gk*jOZEd>r#f}FRz|J^`a7$4fomtZjFlB#N$sm3rRV7^sFq| zRYk?2dvs!DSDMf8d2U4yx6!_nyV!&{V{C%FUBQ&_KZ2+D~J21j! ztBV9tV(^t_xAb1i@#d7Og|m6YO6;l?&Re#aqNr(?_yM>?cl2Y(MUU?!{@-kkVfg7? zNAenT$K>QWuK@>RLY$dtrrvSQXRrN)A^xoZlq%f-4rr&@#MhSd@%{jbwXn$8TcZP!mMM}Yg zl`!*LL=2b+8PjdRHj$AsCoSY-zhDMQS%ewx0%dHe5_TBXy!tDlA#PXFy|vRa*1GN4 z`9_~RU9Cy{c!Eh9?;eXN5Z&ye5y3F1{Fy){r>znoX&0}wbCkDj)kLY7s2_f4(Jp-2kS11l<#4iat(Hsis`4g!ekB7 zBkdw*3ZDXH@yx#M=UlEnP`@jc6DYQpRf%OYP-7n%fk_&bb#qiCQ{iiUTPeqM`GMUX@iV$>y;NZ@ z^b$*(z$?HYZ0f!VrVnZesr4iAvTWll+5mEZAZPp^AWn@=G`MY><3H83NCb)6TefX3 zjJuLk@m9BKF^T4U6Tjv)4$X9_Mr9(O`fM(OO<)g}5?03rOU4M?)5gWQMj^^7-+Yv3 z(nofA{>%lS-cEI)x0sg_WL4J5zwySo>I~k&tgu_nI_rXQg^C+*Z!Yup)0GjJvoXAV z6{IbP2hOcS$FQ>1`j4nQ6g^+e$!5)<5Ucf-RUO@IMOxaUB_e|6`VA)aZipZ7?TDeXWY{7H$+GrF23}^Ii!yI%Cf$PLejH# zF-dGGhMXi32NtN(z33>qJ+<6}KzY?n8<59JKUc@)q=AzW`1=TmB7=Dqee1OXU$+JR(|*ZAU>Sb`H6rb_yif<=iiBTa$xiAvvu4*8$dI1d0}us(1QWv{g7 zU$pZpCj3?u$YV!rqu&=IEN9&?JRWDOicz*%AvAF(cg?^r_gyk%Ns*O_bH7ep5pD55%r;O}~QnG$-*%2CtQNFow}8d>CbDGDlwRKoGeH@^30 zxUUDn6kTp*zWwtY`F`mk-fpI8kA)aVa>HiAQ-xYhHf92&S2T5>ChBtBg?+TQwSiz` zb8%_wntcxI6mv=a_$fGL(CgluNk`)ryIUj)UZWL=lpH z?~l&+_wV=XvH$EbKHGcm_v?B6td`gLOL3fJcEJ>3f?q+YhPL`j&mOxky1JJwk~NPN zKdNcACjizpUT{Tn5?b4)#iwCgc>1aEG@&rMTlx_k6OPMBG6puIe05xLJGGTqxSmz?VTx2W$7+rK8>b{F6TCeR zI_w@DjhfdTd|qgV`P3+0@@MmBgwYk2d2sHHWO?=v!#@?Via5`qpoE&7#O~w1#; zK)X5N zhwCl=oX>5iqL;d@ypTd|fK9(k%neN%_P;lLaA-?6|L!8^&+LY0c`uSr=O-x`o?sVD zzWA*m=G5o+G383Cr1N%R_nKNR>|mJwFtH4*t~gfYg}E^E&4iFF(&$AG_OQ~nizYU^ zkTT=ZNLVX z?e6-`!&aIWlE1S42t);; z*j)YUZMUMViAoO>I)_6*TtHfr?rRdj!ISpy*4CCe@de1~o6$2^B0+#Z1^%_Op zJwOZ-HiRo&!pFSAO!IWip1#c12HFvx*xLV@xdOO5_gstW{jv!BcHM}KP>m8UQrzWN zK)vG?Poh_JN$7atH$(FKE^ntUzwWjC+qS$D!XfON)~XhRMlb53rrCU#YL8Wt;nF<@9GX8+M$8>PtW={IAm5mMo!?>e;*Yd(<1uSAqKXtR z87*^(=B*ng-Y!E@OivXyu`4pm-D+sgE?KMr%x5u^r=RCt&-h_OqQK(si{zUznzSc$ z$(#O8yIYeT{r-Z@NqOq5i&;i2<%~x)&Jeloq4?0j?zk$KvTxE}n^5*4D&W&?=1>Vy z)>5Mf1)V8<^-EIIdOP=ikDP5)q(0!JWz@$pA3L~9jun)ALZkr2eAa>|FGF-2I<|8= z{YABPiQ)0$8ZaaKz`mD2M0zAlHFgq&a+ z?bp=bFZPe?CY`^*2bB0%ULX117l0~xnoR}e)S`hDdHWsZTyx4R6^2QxXy?GEblXU( z$4^#YZA##fM;89`d~V|J1XDS^hVf8(7*JQB#fRv@x?Xs>v+A> zRvg_JcJR7Q@K9eVa|m{=@O4^;O!l|QhY7{8hO|jb=SxP15d-{dW?gFMWbsza6KM;{X%3STs@t|uU z-a_IEuL^>-1kTqLlF0-p&n?5+X%?75j_ zWijm7=l`I$gAD#hVmVTnvTxuITXv?>L;}a8s8w8!D{qG31I&si0rslRu9?yB^7=?} z$wUVZi6+MU^0;8a%&1tOPc&?b2x(j7&0|l@yD^wO^K3VbD@@;X~{ z?9FQ(T*_y`w+|3V#@ZVZ$;;$#KQ!^*IUlpE#jj%SRQQXdSf7{4qP;SK1mV^t^P78T zOpn?xB@YY*A@pu2?fC%;PJLCbs(u?F)@a8fD98qCk^f8rO@`W=QcvTJi5^=Cj=GFT zAMeP$->NbD@@Cznc+cWo`L4cG-Ht&tjwpF5NDY?8|3=-iBHn zsSOIB#{P^z{j8O=R78i@qv05$=2R~8vBo;TVfmCI%DN9-oFI~+QGVJX-U(N_?PtXp z9<3RKqPyM#166I3B!xf9j8QAdCzJe*Q~5@pLbiXv9A9iL9C(Z zgwgo&HQ1cbSVd4le!2Dyz-`BwYCqu9gwdTN*Lntb%wISj?+}Eh1Xnbh>ncyZ`6ra| zT!WXd_N8X_G3*A}Aa0u5AiL5OUvX0l=cnYy()J*C;2$VR_XJeY>K}v!Ny6>ywKAjr zER$OY!dN2iC>XxniJ1K9OjkqyuxPjrs=*Ap(6}&X2sJ@j+w3f!f7s~Nw(aZL4XLNb zIs>1}+^{-U4yDxIwCi+3y^9U6?$^?kZGt=8D180KptFfFL#*#8bMIC(4zoT*v ztLu$={5p$Q#P|I2LC8sA=yWW9(d(TKrV5flEW<|Tv7TSpF&X_E>%#lW zn68{!Fr7C1b%rK}`_e02&doCh`JPO>5(W0JMMg)vnM0U($jtkbYf4a#Bu%)3->9F5 zL{~-x`)E)ujfaf~JUSZv^%e;OR;{wHtHRGQz3r4TaN>;FdCdaUT?>L6w_ep+ougoC z+crPK{l#Wi!S{!TYS5FaKLXC;2du8ozrOY9>>cSRe%UKz8ftKK10T^pNLIxNmdB4R zuU2y8%E85t+BIf(+p0OR&(mGJ7gRxl+kN{kAVsCnZtcrn3U^-;L#=J|NazD+$tJv) zA^E9Tm|+Zwc>Hv0G9z_)Np<7y_4h%kDD63mFT)=Gl?s1Wlj+i@ zbUuRsOhS6&hgRN0YFm&0Jdj!aLXTwB$qHwLQ=O+eoY0Szt?uXSskE=9d?>%?{4q$+ z?g#AP?6P|$ThqL=_0o(E8v=IUc6@m*qBLvtii5h6ms+;t|;m3 z4Bs6pPnflg1|Wp%P#=9tEA=eiSq3D|?K^AB+4^cNuaK{#{Kn`WNf~**+8z-){W522 z)omR45Ue@d?2hQ=)$T*iuw0^foSA765a;=s!YcZjEIDAhiAER9O@xN|p(p^`7Qy7A7lHNX1IZ6Jta@-$}%KgY(V|-%jMw)4LJpWh9Z6K zJ-$1>%Ls8P*)*Cfc5VPNBe;`9B6SXZwtvh$t~V>qpl&2N>y1Ay2ID}+VkE{a5Hy9> z`I3ZpJVmMvbx|vRGw8jklS&yGn9w1c;s?GE%~iCRn3P$AEbFNKvF{Q!=1g00N4sO} zrymbq!_JC(IWJ3W8lVzj>V7M7XI{lODhEs4?G@XrkF~zw48e98Gl5;R?Tp5nYMXvj z;iS64%}@(UhlFb;zM7I+F3#;0C?`BTB_qEM762HU3=b5gG|IK-?rmYO=P-YpFz7;Y zsbVyuUz6RA@<-mnmKAdTHm60o!$070s30KY5iz1Y_pqKT&MCneSPAT+3jQ|bUK93q z0(e_GRayH~01e;4Pl|`C9p^cz+5$OpUGbSm6R~B#Wz4g)n~5^S!ha&kFVLV`7XJ|9sO{*m+fE3#b&YR=#_2b zE`@w@ss6iI^PvcXh{LnKFvhU2?=D)M-?%G4VIF*sol#}P%ba+`Rk*cvmuZ@oo@sZo z$~MbI=0t*{C+F8={FQydTJtxtXj8eLCn=P61JclqNqTKVn%~ZdkiGW9-Dc*#*FLRuchtYvXuU!W=dBdDZ zz6;4njPsIP<@I=t5x6@Rf3E#JfO$}|{sSmx7S=>^VPo@?dhZ;!_jx7Eu4bLg z{Z+6b@p`d}Iy=^M!z{9FKG~tgZ?_CU5+{_|MH=p-9v~CrI&zNxVbmB@5Z+**0^Z zFxDxGIV~PJr#_i@I-Bv-)i}WyE6w8%K_`jIo@(B>Q8aYF2EhMwjcVL|ME8fRHZJA>u#`p6DwOqeYA+1cWx2(R)3(bjH&l?h<`uClW zdO5lt$2sIoyx@4I5@q#{g<^a@U+ynpEOa$x@~OPwadhPrT_njWfN~t1wl0lrdQu21TTv*@Sm!>t63hHA$fM)Y_ZRRKcAQf zO$9(#N7;G#XRqQbZ5dmKgy8bhU?)Cf!sdDsfMv(^1s@p~U`H*XajXb2MIx7l2r+bp zMUK3n4DHB08DS4$w)<~0Vl@jq1_=EnQ9EbxD3ctR*p>pmN=5@X{MZ_AXED##j4&nawQZwbJ1Y$Xt z4&k9Et6Dd10vTQz!oIeq+)#(#PNoJC-A37xc(wizqV^IZ5t-oq7-p#S$n;zqs`g87 zt)(5$zcwIS5n5|*0(! zNa{<&7Dye;VzP5Z)kpAVNUbPu72=PlQP+ljY$})^u?77{&WT~Fw;kS?Z9e_>g=GbG zlCaoGQzI7TdQ(}e8iTHL<1r=FCr!_weqs2>%T`?=xL4~LIzBOcy$x~%`7KJ6(;z*t z;w3SPRv53mFkKjn`_5M!&(p?mvGmr)8J_tbDgsd*F!l+a)B>=)BcYqiz6r< zAMq9QigNtVsL<@Z0r^fxcv^wCea2d;ufg+R+x=XG-ddAa=+DJRbwX{0^DF(K#tY)` zAby?hO7ZYQC2Zxtbc6P0!e9CE0>OrKIqU+;E_^GNJ_yAMIG)So6=fh+Dp!< zbStiBaA{YG%8k^278!-tKchS3Jag94A?>br$uVtj>h6$VVIlc@iLE_)bsr68 zNr|X;v5G}%ViI1HWow3Wh0X~sRVxMv;vU0!Y)5A)suX{NtY-_NbqjP`hkz%(p!(o$ zu(G&{q^`q=y9+pDJ+ipl=2O+a9iPriZDV8=X;iH^_q(4$hUmGz`TaO~Q7sdVVw; z?+*HMpaOVzMPT$(-XB~Sgdf9ur z!J3IE-d*iQ1%l>W)u^ZaHFD;h#>Tzf3!PWX-!eNa@!!(#fjB=YCcf<`K#0e;mF!k` zCWLsmy2b^2Kkp03t{u!7Q~SD`P*YN6t;2-@r0;g z=p<1(lDFCBlH0^UGBi$(l2Z)Q$g|1?_N16xm%=m`UX~%P5v_`$Y*`~Z7;f99I)hJZ zBkLmTS~8~gKY%wVSR>xQ%F*kPM8RL%b46NYi|Oc4Z1iR8@Zcx}frmq$cEjp=Qpjs0 zfiKKP_468J)&Q1Yl6K&?uSctxX8CX;=Xui2Gkz)($s>+>dK364*5*lN8IsBEgc;j@i*(7DA;3D>q|MmpLPDrIc2iN*fKd48w;o*!g2ck|GUPPdx|y>`?>% z(4CkS$o$$RZ#2hhOvhqs``UQsD{`lO#uff4UX!HkQ(-=t2bz6z&j9Th_k2_#x?`qm ze#LL!i^vJ<`l#n==EeKdNjV{4=_XAAhtkHQzSU*|roHjS*krzwDvUyJwEmcF^aDMA0q|L}N|!lY3U6d3ui zT^hQc|LGC?0Ax0!d_0N!02VCt|Nc0m!VRLK6I<3%=KuZ4|9L@O_|^@>KGco8L{*^! P;KxYcOt1F5>&^cI%)U7` literal 0 HcmV?d00001 diff --git a/assets/longlive2/fig_framework_overview.png b/assets/longlive2/fig_framework_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7509d33db38a0106ec5b038be641e493756a90 GIT binary patch literal 117675 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

    }QE-nyisy^^Z>dOgn9w5w+PCbXc$Z>8kVe_6Mx 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
    BU;w*aa<@ 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%0ASl>oRZ=^012Og6ZsvDaQs+DgL& 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 z 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

    N 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𝔐0O5a}B_M~E8SM^DoXuWT@ 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
    |s(e+7e{1k0fp9kcf9VHkz+=uSQD6T3?W|7ac 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

    G4taQ z>GuK7Q{8N6a=?M?Jcs`ZxJzPbyUols%Ps;QK!i=|$NxLQAr^kR1($tgu@bd2$E z-nz)Z7SC;!pRznv!%GPl0Lm-JMCi1xnY&Ze>^qiMd8ZL^r{n(s2j+_y3H)*90zuy z2dDI`Li{o_`N8j(h2zEM3{oy>(dfBUsYT%ANi#8cJrhLkg(>Sd$!A9%(LN~F`Ebia zCzH3$jwOPY{2an2cR%Ut(vC)-jM)`ekzct+e-+tg+Eatgukh_zIR`l)IcUpWB zDxjNuL+%J$6(^!DqrwDN3G7U)*bC7&@7SmXH0n90dZ1i)XMLL7vNmxYP!lkeKoFVl(BQnBH>`%M%%T!A1}C+4(7ui22`+2y z_)ZNqP%y}SB7^V~y}7?U_dI!cdJX|?wj5>%!2%M!kp*&{btV{Rh01t5waI^KzTB;| zZ>F?PF{+EB>+^HxOHUphb!|v`l8yI}JY?_&(+>QGseML#`Hi;u==jbyH@u#l@g(k= z0$oGLF`-6>#A-z(`1C2FiV5beZOv+ImwEwLfmOKUb~ZYDrOunMBIACM13X%9ZGlsV z6huC%y-5>hSfEE!+O}wQRk4wqf#@uNF+i>2bNR!&lWXmhker`>)LB_}ex$xwGWbE z@5qf@UajD$Q8!X$w;gw){QRywMi81{{cH4SOZA%U$OCo5I1E$uIL09V36Hud6-k-g zL((H31Y3{j`}RJ#US1YA0JGW0-5p}8DhXeff3T+3~MbW&UDC#;^LpW9TEA4$4y+D12n zto(JNuKT6HGVg&yRrAx%(#Sn!`xUV;4<=h{GhtkYh$djS7G*9Yw^xp@PJg*iO5+AS zlxcRZlM|h+K-5Q!@L8+^9fcLDlbRrc|+pAgY9S7 zo93VPz*#>-d?6y%&$8>(D%4hXll_-2SjzUq6{he)h+qMxauhM7 zhA2QvXTi0;0~arl;Q8=53fN~b5k$dI|kMM3%|ME%<@oj;qPliK^RpPCucUv>Ra>dW$Mo&u#p= z$rH-gs4)Me;Q9YIecNm8;OU*jV1~CFZn@#EPVB?!4U-QTWawex+c(3to6LS_cen8F zuVo-mB+F?A!eIolfX|o10nvl0XW^GUZZ{ux9j{MirQYo(Z2yD~z_Hvso&s{jMXXsF zgSWKCU+Wc~?C;VA8wsoNN7m2bpjhmX1G}Cd@CEm=!nI7g#k1Tljss|osKu_Q3Aqqn z0)K3Deu^%-Zy7glHwJFC{tDA?=8YHgFRB}Fw`uZ_YTqoqd6RDzHHuB0YIFCu&9$fF z3yJrP7SO-)cSD*#s>KOW-!Y6hN1jgr2f>`~Cm)zb{YBfs9g`uER~^)9HncKZrG%SA zvQBLiB+jush*dNs!$O)sQxB%3d$aWSVpN#uyT)T+;w9R~0r1Wu=26{K+sE3{yyp&| zI{rnK*&Mp{#36!-u!6m0IW!2a51Zs{S~&h&&IQ!F*^sm+ zJB)3|?p%%MKG#0F`}7<)AwR*~e@Qh?b`Ae78+e66=3$8zyKtK=k8?p?<5^p|3CwUi zu8X@8PEcsRQ@9+yg+TJLZr#TNsgEhCR6m2c8S~$_SfnM>o@p)zZm9ovK!Q17+njO9 zUfDil1|OxSt%!1_8rvv8Q~tx5*AP?NbVUNDNc2gAvlVw6+5Z|S!P<$Wj%dFtPf%T^ST?iF z|IEnt9R6%DGiClVQc;RecHZAdy7rTCumvNwtM9Ho)nS7#Q%cPXFg?xKqp+m{OUAhR zSCTigqQ46&>usjCc1fY4N-raB@M!am(eU=^z`m^0-yeNoI&Kxem5dQN@0&Wm1P8!_ zU-vSOuKAc^(t0PL$*Nn5G}W+oxv}wn5M+n<;dj`14((B#U^8S;R#uyHVD$_*A`I5S zsKRYwX@Zw@&M+OQMaP<)a@*;}U1Ex^@#SB2JJsnP(I?ec*~4;MM=lisNb$X6bBDku zI$nZ9Z~e#{%%IIhZ-f3FvKUAO!%^=eu6{O11#}EC5-@4ivsv%`idB)2vzbXN_n;msLFbIokO~b= zW}S|wiAIql$2;VB;|!t+;W=So7PAi{2P*?BwCAXk=Eye|u#HaqTs2v}mw6&`;Y?7S zn`BCYj51HNzQ!#~UEz-}9+CA&oM)xCaJM8aUE6VE;@X|=d$WEC8#N$7sXpexZ#5F( z*f~^$C~!QH+2X(`rq6ZT#AiMtWSw^x`!eBL*tAz4bP^W4BK6tMk?qyiWh*la7MRQknsk zW}QXz{zpwM1J}>wJNrPk^+(|O+6og&q|||)-~NsI64^WY;E&3_C5EL%nGmFNtu?RAU(}d3CW(-zw%5&D9{AT zj{BFGL{LNelPLsbhu)Ucmbs*|7Zo5#a74~B=l42w;*8j-8pF1``GND@zbR1%Ur z5!}I=y?K9fn6iFn3QGQq)wj-iv2^p~h~%w|_?PrsgpS)$slyp*f~gV?Z9Y7lI2{6G z-%`Z?i~%XwwCFnN^$I($Ac#maq5UATVqhIJ6)G0H5F%lsT77owO-8yhH#LHZN+cz# zZd&5nj^7}K=;QCB#7cjo(kUn7TTO6IKtBI>FNaAd0x5`4{a!S7gTaJ(jONY5KGxJR zbDkd$s9%>weR%-H_}EX`?f&+Z`!`+S1_re3~uSScxZ~Gx^zM$`V>&9tI0E z{hB+CdZ6t_sa~rknY8Oiv*mS$S4)N&r^oJaDDQT%c(69=kZorJw{b*{C>aCiBa4%l z4NQr+qyw6}`EMK|dOM};s`DxGYUBmDr>IhUG7sU}o}x0RABhn)N7%E_ERTVm#+A`) z!2)>(^$OD@ER_1n#C`a{yw6q$MYh5Q!f>J9cqZq^TqU>?+bGM&@HVi@hWyv35*i6w zPd65n*JDCI;>;@xjhzT%5VC(R1M4&$DcD9qt1w&9n+yqNt zvX|}pmDWO;^AA}mxLHme&9zu@Guq+YN^QU9)wCd}Yp}F*jX(RSKx_sdf)UP6d&n=f zE|I}Anh0nR=E*$RLEkmrf%i!**oO;2IMF9E-Jx&@)ZX`Cvu)J6F55}cy0ISt^`Dzwsg9O#nl& zpH^qz0Uogbq^P!5n!6|BQMvm5#mBR@_Y5;C< zBuL~VD)AIqCw^qgUl(*PNApE9xXV|Z7yN~fo~`tBtkVF*Aqik1{GZ!w;J#M>1P$w_ zzA9rBe~00~_&p8~jt0ESzXzS|V@3}NemL`|L*ja>Ns9D<{?BE=GvC_OO>gc^6qkOsF(~gEsDRevp|DYai{=-H%OfxyZx9aJ$&I(& z_b&GqSAL#zgSYY%4y-YxHbuZzjbmt4e^;$+7<2k;#ybBuRihrr&@f&hVCaRJ2r^JG z#r&^$jB%_-z;B8fU4bkS}?|q7^TFjYbOu<77|@Jbeg>gcc-`jyRIP~?`r8QRb+arG*w>8Uqe?46EY@8UI| z4B)YoA7gm_5&hBx zF*EV_@*oY7DMDmcOq4NTFfxe4ncgP_&1>BCiq%qo%&4tJmvB~}?7b-s5v18PG}4y3Nw&osyrpztmjETEpsa-cE`2&>59zC!V^BWQIQ0!BiVu&R${J|?mB8jQJ_<#2c!xpGG`Qg2;Usq4S zHVA-p&{I6=-x86@fs=~IbCLqGlvAz1V;fDtnQ8(~Xq%5mb)m1s6xjOQG5;kDA~2Ci zBnej7XJJB_HNUrx1Z8fJE!o-G^3uzByPHLuFW^B>mmW!e)2{oWymYzNh+-MN{Sbt8 zo)8UluxTlS1w(BkmaO05$r0?qh_V>~!M5Z>Es}=ywTEyVUCq5;q7{LVW9!cJ6w*;J zWmxCd3Wn?p-hoO<@Wfp$OZ6_4*%hf)1Xw7(ya?WzQ)PaFhQcg2*qq4UH`%rOEfvIC z7@yF?YX|gPPs9LQk2UB276cFMvBm#^j5}~lQbtOhmAPtu% zg9_qD6IEah^RV}51l-i47Fy==XFf+uCA2<(gIJ%qSd2!QzXw`h{Jr74NkQNjX|%xv z&S%CyAE<`&E*S~kzEkn|4;LY+pLue;?cKqx`1)_?c8p3Kr~}8KaK24#SW3%|EqOCM z!ds1BYMmc0mtQ5G}vH)K^zdC zt$8k=x5DUJ+7X6~1VS`IV2~p&peb0jQ*4lTDrZ-F%fUPlT0@LC->E2&93xwJD5|b2 zYlLt6{L7`_)Wug&cKsLto46nKZZ#1&xL>P6?MW?JvEmj#muda^QtI5cw{Dh0Vb&3U zQ{C56^pzrYP#i$s(G>ZW1IiFWLhBl;+P+;=&>ecoTBqiky+J4gbTVIJO{r=Z=D|2R zMy8&xw{|%5sXp+(zz*NoTC+m`%>$egDTY7uH8v35Qt!2?xp*^8!}| zB|(eTP;sYPv#+p_?zmUH{_bWA^T9|z_?w#Xi1_gad6+iyyk)Av{GGSf@&1+0Lw&i! zr2A%IX-RX_q`hsX77+4|>>@LfYZra}8=+O1WHk_+{m+PPlm;42#Qvj@WkWbagagpA(3s(FeVo$9 zbEgiw+{`Z;)jzJYQu(gJP!+cYzsvS!SWPiSEvpaE*40%uuzTf5Dp6Sbhv!Z`KnDdc zS4Ts7BPS$ric>X-P7VxubC!P-yTV#xFvKf}{(jAE;MCzHOaDh5xjr=v;-u=t`}R{K z&U>@9C9ujsN>8=zcsP zr`p6feUm^_d~JRb)=1q8L2ZV zma6gC9ug_ah+AXNKLU7RQv?Gs4x-8duj`Au&NQbonLN$xS)xi<3?pA+!wkkc{#+n6 z9vX;U0E*nx;6#U;m4YSE#BU7_pLjn!LMR?#Y=IS&`>^dc?>yE3uj%g#nt)vv<5#(yeKw;!>E%X6%Q;I&Q)#PHq2wzjQ4 z#%Ne?xfYM)Oy{=WRNG{|roa2HtH8PRp~Ux-T~p(IjQtsWn*lm~7thN_b9(^b+;%A9 zQpgX$qb2e79yO`8TI|mFS49v&z}0xZt->CPt+iZ_UdSkFuW8P=+`Vb4^DUBTtc&Cuf!|0UNninSg1aD?_RH zhqhj=m0)yI%jw7SZeM~$FyUCTat00@P{;j`LytmHPC4|Qnpgq_1sZif9?|o8S<8_N zv^yY?6>L6Qz$Yz-?wS}~Qjek*er2gw+I2^710BfFa%JdwQ}V!8=F<)oo;f`|y$5HH z0X7tZ`M3;yWs_5WvwbuLV+0XJ+&KtmI2pZ*Bi?NG{M{Iu<4*5&oH&LepNz{|!hR_% zUzVleGrr-X2k`ZL0bLpLKG6-ekF+H#DPwwubc*yu38Z$OQF`}dr z0v90#886G2NnUi@=BS`0+307byUx)DoBxqG*#AW`DDTY^ht%$N;fL9e^7Ob}nBk;y zQ>z1_6YS{aQX|+>jp*pih81{jWKk1~$nJXwpOvne%uDYYkoaCDSM#k=T27Iz)Oq-|hh z)!OTKVmKTFs8G!SSjYlL-{c8ZC9|rFXAcB3S4QG~d)+VDbAYh5|K@Qi&9EZ1*-(fi1tG-H3ECx;o;^ z)hiKeeJkt7TWbKnAU_>b`7%X&{=qv}=`(31wm2&o5A}g*?+(;U9E|TUwmj_TZ>&8o zRMHZa#~gAA;<5E$njPT*YNc5k^iDQ+$;qf9%r&DSGO45Ey*#59hz!-oxg2VR(;b@EN*`NIatJw^ll0k)EgxS>6Zps;G%B3f|smL8m@U?i5tJCLlczNuy96iDYIJBSmf(%0W5cBt+ zr}uL?w^v+1tIQjh!_OzQrDr;$7L-f=vy2YIB55_|A@*SzruJpvpabxa7$Bvyl31$& z`h7MY_*u78X|VASN2u>Ta|~aN@082?>RM)p(II{^tt=zaz2hY2>2lu7Jmi_`_M%Lu znT~bJSg?kA<2?uaO3%n4g_}p&ld(s3Xsj+BovU9*N;M;c2RY`*&ellIkc?+#y+D)$ZS>;MD>CJl2DBosX1&Pp*3Oe7F;DZ15(;d@(INS&x#Y4&l!(+L`SW< zUD9gCE%8(;*&4RSu1EOjqbGuAtywsSat0b1O#EXk_H9Q5F^+I$VoHy`zG7)Y^4v5n9!Mo6+%q zmP;Qzh(D`90v&Xv8krqF-p@Ihhf2!K6V+;^ERq*YE=_q^dxTBKj`&{ulVS)do2MWX zE?p_G2%%(C2J_}9(~FSXna6q-&C_h_)#o$|V!#d$T)W}GJm(+&Scy&ex9|yaF(o?_e&Y!7bQkpw9$*2wk6{ubx>FGHhf1>4E_ax;W z^Tc>~`T-eG^bfqGC7xg0*8YfS1{Bwe-pmfnnB|)C{Xs*6WMd*IS9_QRl_&4O{sV9e z5@Q^{gC8f5=^kTZW5u&(vtg0a}|GZ>bZ}OT2;6tHPyvh=)Ll? z_g3RZ6L0GZ0U1&J7vxC8D+!d+)@*1y1WaUka(L124fK@mkpLj_7^$}*-M?+!J-fqb z@xCz5w=K^f9ngA3G)?&OvrY=`espCFhDwT4TmxzSSjrirdaGzzh%X^|?e`ww###V+1*d}=f3dR=uOShgJpDO5_Q(G0TCx3H{R zQSZxX7Lh-vC`?@)9F*QAqPFR>g(jAbnySt`=+P#>#JX2RNr<30RaBfshT23w@pEGSZ>T(&w2GhMkKWWAZ&;xkN z3D3y^q8}om7$`+1r51?aTR+k3MK*b0Jt)Q68Cp?gV_2m|c%lnVnC5E+vvErLpzdn{$LgBZD`aw$ZV@W3$t-ZQHhO+g2y(*tT`{^M2>b{sp<# znrqBaRd+?5jG#^hspK-{poi2nPMww_0k$(YNt}x(2$ao}7rPQNd-_WjNG>SVg_yf8 zA<8~YTi^mj`t_8qoOtrD_2~LQgcyYHsmR_46)5KtFZJKD=OEfg8|#bkE3_{ZQ4t)H zuXD3@_Np~VP@JWxcY$B1EY_J)R(S;=3kMW9USf}e?lWn!i#)=)tvNZPYLWT<9ibsV z`d!1J4i2op+W6G@tmh?*%h4_ed<3DYYL8z{@D%b}} z`%=5{*8h#R(sV00`Pu4JaTIw|EZ$0)vNpNz)x;J78U*s~9N#e#5ki05Tot`SJ+~oU z&X-THW@wtk&Y7utKJW#7b_C|D7>!%M)O3FcS(FC09;>+-i(a|&h_ml04T1JI(yA-} z8lQuibmE$=!%3%V*=XfZ)9XpEhJ7>UT61ife0zA$HhH|%t&qXkFX&+m-=fLAKpcQ6 z*w`v9T~uJ*TRTI|+&}UklfZ@2vfkgw0r1+REgfZ!b65o>j6#4WE{LFuY+Q7bwj5uE z?Ew6zxs{-3TY&r?BIp*zbN|o*?L16+ftP23I!SpW#4Q@ftU!9vZs?=xQ4r;1Tcdpv znvalFx69#Nj{`VvJ!-X#wtB5e4oJ~1VYm<~9VideFkWtds&fQCoS(oV9kE&$WQi<8 z9a7B0E_I8l?)}v;FDWKxT9CkH4FyC=l@j0u#&W zgB)Y`XEQp9%V9Vd2V3zC@qNoHjqZM>Wkjf?m2H+LYlQGPgR74yh=VXjI42c0UZ{Ev zvt#%CcU%S+EF<$Qv$3KQzS1elTN~SEQQK(5s!L;2iP7hBb7p*UqcmA$h?7*v5>sQQ zQx@d*&17D->uTUI1&k&uDXT}Oo=3ZE9Hp-l_m(vVrnAjlx%(|_v?B>=HSvccsSa8! z?&@z@{x#@z&|F1HinInyEQe@RhDH7eM zt(Zb=$47z-9x)EWk!S8g><1Bbb%#X&H~mH@PCD|YlA%Ak-+#5rdBFJDsy~i_Iuk7q zMO0YT_od1ruIaZ9wa>HGc5BU7Cp4J;Q1Y4>&|e05nduzWgF}g(i#H8gf+OWv!@HMn3d@j0&v6t#;l;|a5abK z@5_xqzk=%!Z}q2j_S57qy}!NAPw#y|vBq%Oq9shD9et8bfv#rMT&Nx=Ch@2J@V?IK_0t%Y2kE$yOYDBNw(g&*~ zQCjiX*!LDLVM+73P+bq>V3VClfK^iR$%8Ft5X#9Ig$g2d&0@Yp+=v!V>Q2WieCnetwl?_r=!RpFSh~rOhylRUv;mCNpkx3HY%2Hd!AgnAh_ZykLDzQ0fT}_z+FC9Ei_!Mm3%(t;p)a z2bIOrX75%hUZu~gw0&f}7o@f~x#!b^l=fYU?(;eD9`*?K!BcS+k>h%S|3p#&w@85E zCZlZ+tBTjuV$0I|68>?&C>3{`ll!LxAk8N8uO(x11)0mDNX_mz!LlSz{cVNr!D==A zw|HuX3Df3IOuDBJhcz!e~plu zjl7Qc6fN_uV7tQ!n;pJgh?RIV?jhFpPso^xg|$>EZ4`ERL=)ll>jQhe&zjVKk@1n{ z4?l?z`OAeJc9BQ!Hb6c#R6VBZ5e+UTKsbRq`B&8!pJ+AGCkpJb1`wftP}s7xDz~SO zdCW7Q^Kd&(#q{tty_yZMX<6Siw|et3KtNW-bQ*)}%m=CSp)_1^sO&S#~9xx2sQxWl%{k{1BC zjw03&aB`R!ew}!0VLq(Jzb|vs3>~RpVSlyW_fsVJczqktk>MPfbb0NODKV??ZM`g$ zZ!lX}FoS-aCgA;|C7d0kL2&y5>U=}f|0ZxjNzC0Gz18B%hr6Z_gT3!jSwg(OAlNx-S zY>(pKkPk{Ku<7Lf9sPl4Y_$?P&7*53K*A`zMU03umE*6slvT1e=^81b1yG9h13CY} zzT#-RRiWG7fGFRRa~hN^cG=)Rq${5zS8G;PDfsogmq4L2RzRsCwR&@|=!kr2FA~2h z3Xkj|7$}sLS2z?2xl$g}I8`E418%ikE=D{R=QXlpdKRcUJ1&qJV}f(hQA11ioCHyR zp2ep>t?DAv2x1I(YDA%r>aK4>ge)EZ~?fQE5{uW#Uiv(;q1(Sy7mv%#bXS zg}&rqR^0z6oSOO%fuVI>z^{374wlcnF){2$O(@UKm!@v#hH5l5Dj47pI?U$@sqShI z^Rw|8APSW|W~KcmztI9Z-PKU5#c4QNy^$p_-HXw-wB+558#(%wxr!*Ng4hzCd!#k5 zy!B<1eoR`^Tk2VkFz0>Qk;HT)I`V|nbidc3cHRe}BWft4(7Btm{^fZ&_r6pA$oOqB z^a?v~7xSAcKc1WbYU48f;g!~`Hau{ezT4h(8H2@x=)2%^-f?1|*K*`?0sZ!XOL}R!r;P0sbX1)3uy%N6pRg8^% z9r>l@^pC_0*j1EMwj>Kl&k9jy-L@F3 zm8s|ki^*cTBLQ<%P|qZnE09Q%Cx}R1*LCgb1c>dqj(^(%YrsvBsC1RV*0kuss&bNA zAx*t$kVb=hn0VGU)vGM+TUnm*8uu(@SA=4zcXJ)o=r>5 zrhiWuXt9=vQ?2GyC&Ib%JxTf;cy1>m-y+sJYu4v4o;~Yy4E?miPxD^LQ!`k5b8)d9 zIJjtuvP_<=Gi2>?uhaFVY_-bi9GxhXcOhJ;*_KMx>8GD%l) z`AqZI0&CW}Xx^ZG^f1?q1}i_mFtM1?#@$^1tB9qcbqk$%H6^6)=Hi)MZ;t|pg=kOD zdg+sC-bO@WyUx@q=JbX_Y;@bh4(`Mt2sK`Iq3P2a(T}n8u-gn)FBiiL{W)@F>Uqy^ zNjt}YxRIJwdcd31RVrrCa$m30pGH3^ior)FGA?l4czD!E9+w;`d%t#`kZ+luzqhBE zcj>9?9r5#Qdyh@x9~s#D0Y}JyRIw?H(fVQ3nDtuoabvOk6QjGwfJarYY{$SH2pxj(WU8jp#M_d$`_}q9etUx2rECvNzL}!{+9O zSM5_0LmyA?wA|7RstC)O)Y-Q(uP+xRE0SW_99ZJPuxIO#Sf(>NohPpA%fZ5IvZJt_ zreT+F@tPRL&D_B?bjOL11(ocO9)(v~@hzHrRc_xx-H{fSEt^{v!Do{ym3L1U^h8MB z7WcxWNe*(-pOq{@G~~K*AY^&3Hfu+=D^n9SGjZd%!gJ3`wLaN#W^k4SY66yKXX6JC zZ#>m?I35hG!SiO++rME2su$u>(@DjMHtv<+f7H4Bb!Z`Yc^)JBiGp)l{cVl)`Adj$ z`Bw3Ix*>ttuSnb8m_g%BZG7PYH+*Yjc*``BZpZZF=W8}MF}Xx4ov15uz**OJh6>x| z&X5!!Hc6r=i3#Bd8y^^Gg1e&{%l2sM;a{_o;PB|EFh6CK)?1uQ7BA=PSxb_?S;ScA z@-CkUR%D#}d7z}dyMe1#8p3B&n0&s!S;=C7DG=rrojpDa3#Sf-o^L*|Hj2;rtoCuR zPH=iIQ$^py%(;fX4u>-m?z%ZviIA1!0qmY5CJzbY$rtbx60_%tee)X7ekk{l2eT*< zcl*vT6tQv%OB-#vP!}AsuGXEQCozyF$WpOi2XlleM~`wBBVZlj1N*6ULjUenfHVOd zX7|mJr}xM_{C>qHXxqq)o?x7y?;rAMk93)m0q-jqy%&M2gh$eY#av=kUW2r@|#c(KXxqB2ck z=KYp2-k}F|yp>VEH~V>*oOS4^+^!#S(4hdD+U(qn-xkPHS#!cNb7}4m+|#v;sM2cP zle4F4CM@YtJMq@pd{47Kmh5v%Ch};x?&QAk!-+g4iKschGnRubq*B|0NtrTJOHCKU z?VRDC=lGF(<=-xQ)2RldtyZnyAL`V<$?#{E(`{1aSYuuDCL(1u?qo7{gL02I!grZI z8V+F}<`Ux`0EFq2mQ@rlsa@`oA-T4xq^F8%ksA6YmhhcX#mJmC%pXDaDyp7fg*WHL+Q32+6jo0>zDqE115N=u6dibVA9U|?=K^xxq@a|c z4}jHLW|Rw~tg4m2IW5z%l;_A~J|PX`)UT&oCX3&7NEQEie|<0U+_(;Vp0^UVa$I%C zvfCb^9l4x<>rg3pnc9f&#C+Ggv5GgV@1*6bWI}L9o3_^2TJ!+y)3L;l&U*(tUuCbC zVuqcue!zLVmg9uhG;2th8*C$@Mkv@vkb}0#1z}7uhO70fRsGwZ#`oO+=QgSO4Elni zbIQ97Pak?>A4>ZVDRXq{S-)|_YS7mQ}?Oz z^VnM5*1ra$AQ_1i1q8FwsmcI~A`k5;eX;X?ENQr!i{kT4)>_9?^?c8mZJjqd)!u!2 zmJhp`Nct+%Wc>~Go>vm^AuKUc+u~$%>auiQ#$EPMp}4%`$m?qk4?7flAM}6UGo+yH z1K^o)Sc&o#_eL!6dN-*lzt(!uK_-H#AW#PXd@y5-v*xWLJRI#beq3l_!b!vs zp@{I?GZC6S<7iEasK90iQURZJz3&xB%k+7ZjNFGPUWDd_+Cu&CJ+4UsWHGEE)MS$j z784wJSjQv-I25YRDS6b}ZX3rW3~1Ca$bppfPM*^eXh>L|5o77`iBw0h&V3IJLeGtk zC1U4s*jG|A+B+&>1qPd0kwcx3I_Fav9ELk-T>dG;ce7r66?@e?1-p_?1NS=pnlQo} zmD0(3@~rxd&*4$YV&8-&;9{GjmYDso_oB%v(K33X8Y`+>Ur;oGGIGFTb0aQ9wXncc zd@BCrMZnZ6`Tj@J?Zc8W9%~0f{8*8YK2^54M$GL6hX}36%IoC!PmJc$8 zois7W=Rqdfk)SnM5}%Ghf1pqqpZ*mF9k2;Sid)C5Qz_~MdCBI{D#&A+bcBy6medFh zbDVq;*dSK~Ys@ha9Dy6f(RnA3u-zfhhS2Bp$>)N{q+=~&`?(3R4D{)P>Rc}qH`MNs zHcuv7pB@p`8f_B%0n#TX1;0usS4FvS)$8IzCQ|(HIVLKfbvx%`&=*FYBPf_C@XT-3 z*w^Er*G5>(`iq;A$^~w+BZJ`VTNA52?s{Oa9BXy)yeUQrpAx{KX$EcyufxmKf)iyy zOyih>Ohx)AE7ErvCBSU~j>ev3QeiF@Pstg}4GV*h5@t^Lo=mN4n14p&lw{O8{~+qK z$^NK;g@_v53IB_M&FWW$GLGE{8AOQ{6}aO?aGRw!_s9=~&UtSWleZ=_6`u1jIfFQ- zc-Mc%GC&Bo4HA$ff;`}vgxu9;Y+d5q_yWOn_wH>4Dye^BB8UR~RiCu8SAW4qcB@A4 zFN{QTn80#Orl6&HIC+PD><2lx4NOkr48}2MLAGCKiwTk(r%2h)a%wMP8_c;3h)rkH z4=FkPM%-Q<1!~;SV)g$j+-U?TjIR4!p;+CGIPNh~w;Kouxo+At$#AuW|JopVK`Igx zgsw{x-M80Q=l)d7ZRS5?pE~Y-f~m&YYHjctc*t0u$KpBL^GkW)hn#)Z&_%EzKeD}| zkh9#~tu=$?ck<91ejIP32Mx*=tk~B5W~knb)i9wno@S2@pedw?t`hUR(Vu;!n3O?% zGdka>c?yv9x@K&)&^pAAWao8Sv;)RmLIdf1chJh11({jhgrO=-h)M2j=A+m}HU@B1 z^5)!AhH;7N-*&o3A8%*8xT}ymy-WW#I1sK3xDHMiCm?yzV!TnTWti@2swO27A&Nl( zsN&N2Cll&lV>Dibg%$JPyO^5vV1(O_xaw+S~1j0j* z!W!iyPQgV6ua2kz=Av6OQ}}GLPL!@y%>yQ` znU=XWu!ClIZL?fAh=KB8W?}+4FglP=0woj@U|v21awm)HYBcdbBftN1z`62SrO~vk>;6B0dpm90 zWmYZfajC{%l0#ekTkYZEV#(x*L^2gsr_lahMO5U+`cRj#v)<7ctQ! zv58EO)0hw=a@Z^}sfu+^={Cag501!gP-pMl`T|^_3uj3>k4YAXWtD#Mp%~)f04Q@1 zCXYU9jA39Kn&2a{xkQDB#O<+|gI5D;AhoLSNwE49jJ)F-fu_w`0H*=hf1KB#C1$R4 z04cMmO0}CZ_#Ty#~^A{LX4}CJr z)8!^>Xe4wz^#{*I&Y)+$?|sg_iALo44Q@3gitDIRcI-I7GB3(kq6YnA1?Hjrbra6=UM91r$ zbQt3COHwCTe>szK9!s@xp7S7|ylousSjTIdy;$%d1}FyY3|+bP(Ekez>nk^lJnsl{ zm{P2#1IqYD7rahu(j}Sts>hVDKOd(-OLnP{@0zUeJC%kFsu3e493_{xVc(F(o!~LZyN!0NEiJpnJ@14C&1^rho*o3mYS(ySujMx`9D*K zKC~^SJu0NBFa;4g^|qQ0_>bHSH4sOIfCA#E+Nr_XlkCLkgM;(A#cT@#6x0J7h&Q77 z#yg{4KearL1b$Xbq;}Kl)C6w3?)5BN!CXm%LP)JrF<{W3=b9<&zkRk0S{zTMlN>@Y zk*5JDHKr%xz=#sd8!xPIQQXIB6P{6HF%$aRmr2KIS}810n!ltWPq^6>78;M!91Yw^ zlg_Nx$G&ihC7^c34vBKWzI3%?nMWp7J~r`~l_p$6T7_>}MwL(REeHh@$=ND8E@o~OPcflP9Yr>v(%K(-%>_|QPBpJwEJE7`4^!+ zTulxO)a>*hEu@c#OD>S2aOk}EO(nMQ-};m z3djb{~!5%ic@}s-8ZFcY0QQ;k1b($p7sv zY_fLbn+3cIKLW+bCFc_~(qh(-dk`FJiBOgmGZYXaKokzF%Ljr(t}xLU$(Yf*23#P% zrwGGqm3S?gHw3bV7f|A4Z1NQO zTz}eLP`VcL=wWIhq*7h|FYF7Ay-Rz_ihD#iF;Z;AL4NCzTzzJDNX3QT z=oNLf=^THX+pw>?`K1%(X6S-IB65cIr=?f;>q4(w>Ss7E1|e%`wW3%R{&cgoxI8=x z7i!_P-z^((=^0hHgz!)pe+pmjgGVgdA{3B(9;x05$u!H;D|y9r^bUR<6vzpTb=V`T zJ%i30t7-b6o3Tv&chGRI&}0&p)xGNfFdOUkmJr{KL43B@yhdI~XPo!0UijeeN4n)B z=$C_dn;p?m7PUhy=vnx@9F|xJwp2VCk>BNm-^bu~-x|ZF!lA@~o7Tp&6ZT;lOkrps zS0rYUi*^Ma_J(=Tp&A){dcv(rCbBtYbJ1^XnSPZd1{gnTUO9IPkXXrP zzuNQ}=%N>XcQJjSwN|@c0^9C;A9F^j69Fkbo~z-RgiG)0e4dnr`}(pbGw;xt(x8p? zn}YHN?1_%Ole7(y8m7Ptaja@>OXu!my@T*)F8^_y${-^@ar`fo5tg*XWa!vNCd`I* zw)8`qTTS@*ZHdrtNnM1#)%+MUib>5?XZ$w-(LW7SMui605XX)Zt7{6<_#ip_b5 zzhmem0h;gt;edn6*j@Z~XKQ%9F2hiPHokA0a6BT5HN@d8P9r$EQzO{Svr@%~QZCOV zPcWOOs3yjmL?l%n=#a&FFysU%NW-Z?c~X1k#`(FGW=hi0MB8z6LMyL+8*N1#;~Q@} z@l)kh85pjDqXU_DEG_{_EPn{P-66bNjOpOL8CEN2-09!QN~X2XuM~ud9WQJGri}?n zm252etC75FuXqoNfKMFPI{A=k-D?N_wL7YVNTD`oTIcUJPbRxkkL~Nn)<4fE8UhlgJ!Q&grm$ z0~|$c)K#d`lvhQ@PK|MwmycKJ+5n9Rre^H3EX+nzA=9f?f)S#gt%eX}00`vdUT zq>jTC*{*F{4{JGaE>hX1ozozj8F* zRRIBbwMyc=WCb@#Q&`)6qAXnbtD)4o@>R>ZOb;2FlF){RtSj~0y+MMGO|VhW;)AIs z#9vc#E9e1nZw>(i2#T`h#A0oR3g_6`@(iwIb3c3)9T7PNsI^)?V7UpJq(flM<9NzR z5pr+d8~VUHk#vkC4z{I0N{+T)e^|>@Jxjem%#qsJO5k;mPEy4kk4n)IbvW9rGit|ZrY^+@xg_T zrNeXMjz!#6w|(rF^Q8$4noSVzLGY-3~IOD7C;~W0X4)X??biDM@bf zq$lo0gIY_&{aqH4Zj8c~HYJ^p z9kjst;(O1_!Tg1tRs3LkI*DywA2+*tIR4>zY2zgLN&28o3|W2}GeO|gckYrT zu;V(Dr)orLwlS$(y866Rn3v7EpKWrK@OlTFku?IeVci5|=njw4A}DL3vQ@0>;oqpW zwQL$@NBY0-VkI*4o0YDc5ZA1l7kc2|jgOhp6VHPkaH2R3lmYxMm&WQ1V@j3>RCm#Am!}h-_NJ&b!hcpwKdh@ z=*nkvkN9sr(3CEoF|+~EScKuNM@k?SKwv4*tP*wqYIAUT597y2>J7}~N`Aa0#w~0E zE7(pH@ZVHo7f)dUtHcgq%>LZ|YezIIEq6J=DA4^P{CT>6EH(^L#|<#!B-q7*x!U<+ zakPex*}P~b+~{jf*ak{4tNWAF;=KeE08z#RT-p?G{j77brIdX9z)pli$m4qh zP$IiZ#ab>+21s57{QO4ow*=k#w@paly+EFCQmNh8FrBM+X4b-*Uk}g%@Xg9Htk$S~ zW!AvKrMB=5ivI8Hx3WKqzf_(TrouA5X=cAu>yGf_)OCj*KTU+K_2?J;>q}p&(5^@a z1OOYX20o)bByx7mhBY3=wqg>?_kMy4hzzl*9v5qx*afNkSztSQ@oaAk@ZFTxzIK=E z{H|)PnEu7mO-R!-^CBOZRXL*(F8HbM{C%-hYXN?cbGN9j+{@j{>;_h$eBqncgcHwi zCsGjW(B(mYc-VF7a&K4b&n*R?8*HrfS@^w?wWD;$(r`R`ZJ+C3A_2ENe(uKEL(hjkPNDRL{quh)`&%-X99yC3UC-%v zY!MryLMWM;va4k9Z7gZr^;GMYd*wBV(h%P0EiDQ${2-n(mNQsbi451|weg3e4%T3; zC8_6NA!LjKkrUdVLG~cznV;*`HnxS{R#3KHTOo;u$MR~LBh0kV%RRObXt$b@juv2G z7DzoY<_4jrSPH^d227NKu~?lB*X|cZ%{QM*4ePfq2p**Gt;W|`$2?xi5tE0NLdH`YW$@pg`j_!#s zEuM5AU>vRlH#ont-)$G&>hf>C{%5H&QGm7-%)c?b*aPe?DYdp|URU6!XB%6swc#}| z&R~vfy7gkQAO^XbWI)KGmh0jIESqS$-}IC z5-bclcXz&uY9gmSYbYLWpdc<#U#KrNiP=i5Oc~%ZTTR|{qCPW&OpA!B#qrW3y8U=W z=>(=@sZ;r#?6;SmQw0GGdNKg5?a(vFKb*4TThb-NU`B|6)#Ja_!w|4XqYUe&PN~Ts zO3{_2pY~1Ol7?U(Z5LoNvq*&UwMnfaqNLJ@tbSf_nPlnD{1@GPH-*P|q3iYX9$6=Q zr=iQdvpL(MMNTPTAq8<`7pE|3LHID1KH&oPJOEE0@c+qa`(6S%37{x!?cJsIk>V;q zxZd*>8H~?DShrIcIC4ZcU%bxYqxWk5H1~gi{9b4)A)}X}p^Ni1n-P5nZ%c1z;9B6t zj!A0^;4~bo3s%|7?UN~x20hHUIo5)YTtUemO)^{%PpMkzwkn&$ArsXq;Wfub5!j*APfs0@HPqjfuBI@EzCV;O?iz*=v?`b? z{!7$ABu5|j2m9dOU0X7(>fn+!K>+fIePh~AS( zkx2FDUXiSTgN5A2lO*J~a{&YrPoF<^%3ZWo^vn!Q179GUaC}~pBFkl9o(0QXp;=z5 z>^*{b09A(U)`3Z(E;oXl4&UmEl{MphnjNUVC((3m!R{TnWJ;rpD|=~)HZ z*DIQ#if134Au7J;hKXxbKh87x;5MP08pXaj!<}+_V>Y<(ECLEv_*~?E-8SCLQ?K62 z&R&wk%v6C??wJX=4}2SM!5UU6Li00|K`}523W6xEJW=2y4#4Gj9gHSlpj#YA4N-y@ z1>4yDZAO@gRG&fG+q;l$u3)05>wm-{$f+Ts?Xd7P6r2(zlb?x!`pI`%K0=ORubB- z*$cQLL*li6;cB2NzN<}SZ4wZRY6cf$qa5&LA0;w+bQ*u^oKe`)?kCmP(b^?o_1gP|G07S2b4IMa{ST zR;kN;InQ0=oZRq)#ZFYrUBa`N1)^V=*YAND$9^Ut{}B97j2O6*EfZPEDG$(X6a)MH zKl6DPz7i_cXvU@WLh3={f6F(WLe0g1L6K#B_rA;Nr(K!-NX}k^=~zvvd)k9nndfef zfx-bjS4Vi)ofM4=SNAxOr_Cv5LV86OHWz$l>0qY?w3B25EzI$8wyjuthp=?cN%tmG z`XAeeK~8*6{x-#3g-T~wnsXq7@wCxG!ZAA z*lfJ#nwYJZoM&JX{qNGIcN3HUY>{R8|$IL{j=k37sBn|Ck42(v9Zncay?>E*u*Dz`1!Rymc@sU^H@ZVWkH?!7N$+k9%Gcj3?3=U7r?+az*oUsS#fu}1?9AC4`{42 zRJN62nRAA?HRp%{Gb5cF-Ke~Z<2VNK#|aige(9|3)6CHiaa;oZ>mdd4@peBv{!jx? zJ_3yAml6v4l`)0DxLw6}1oa5IyYS!=2E*)L>%j_=E;R%?QmOAn+H5Cb1I&X$fjl7) zjF-oA97;l7ZgXVi^eL?KRd)!B-#=_*)s&$&s=9x6{rPWSyp1a{LrQ5?TTA|(`~5;_ zpZ4XNu%*wt3cbV3E|-cLNCbGW0Q-BWw@hJtXS_B1pY+lNsr^tdUC`?1@ruXt2u(s0 z!L8N$iX--D|6iOB=M@;l>D1&&wMZin|nP!w49oI z_T(;cGZylNDRcl8p!FGSv}#enT*JE^^6F>7+DT=Ltpo>Y;$v%d$vX1IY^>bUfM?G@9>B+2n9kMzp^?1Z|* z&gPDN|5@9-+tEE^EHUu7>dfik(m*quCrHEpdC)`zNGlX8pX!skg?YsX)YGa zyWE}98ysY5>i%%6atqxcb@{S8c_eLlYxd#8uy5N2xgPl! z)~b7>8jt&02Lrfr8$Zk3nycW^_5KnEoO@ZOF$Uew=E#=ABH68&i_Du#CvM232z2HQaXjkMf@wY|B-_f52_Q#^YW+PURgEoKgT{Fyb*Y+x3I0s$E2NCQ#C zU&F8TiUf>w{Iwr`GC`oE#Pq!yVH*KkUpI`ohHupi&QQI!VptSh?$X&8P>SxU+KqD^ z;TDW7GdJz%m;3Vfp7?3&ADu5p37cMr@3Rcs-9M}l=w;ZX`rn$bOz(;Ogr zhh!}C(8H^N14}2Ne=2U&_Hv)4E8fW!myLh<(TnYRnOb~}oW^+cfxRH) z;N9cbdk5ETE|ZE++=}}@sRVn9QQg-C#1m0#)-Hmql&ofWyJMF-t&dJJOIL;qm+oXm zB$>4~CGV!f3AG3>RBsWQU;Hf`;!6_7gC(>AI2}EXv)~={)Px6ja1g8c54?%8@)PKK zBrr+Z<4)i+`+I1D9O)Ix&5q{(hJ!@;DZ6A}B7jBoJntXF%M0fG_VBo?&*?jvD@IpN z&C^S#lX@7EZ?LHNsVU)!i<}Gr2>qBcja_nndA+BUPy^ZuQTxjd9L8|>A%ssnQOZu^ zNJ?-MnI`z4pZ3UdH`d!n07oCtr$aCo#QKHCH%r{7am_$plf7(7kn=JPUC1Q?$%9`IyYqJ2|e|a zq+OBLnMw2Cm_Z10p|D&Zc+SbyYHRh1GAx%=#Dh%0`uVZp&pz}CToA;)L;oIUxlX>Y zGOg1vS&#_LxhfSOtwh&yi$ox<+}7D^)?l_l!+n=se*X=jX{vB{W+oRhByz&w|J#Hk z4Z!I504~>pDH5*DQk%phH8Ykle+V2J;}?JcFe5zH5yK%Ec(m)T1+CQ$dv$6WR#g8W zU30r5ZY9$FcZ!&I`zYdn>!2kS7oEnIo;SUmwfOXi`#E48*?+6pONU>in0$YyPPL>v zO8B1LI`QoCsiJ*O0>LK05{ba{I7!;_fSr~1*nCU@#zF*E_T z?aFIA|50DzZqF=5MWEaby@@|&43zB5MSyDFwWiUL(aI$*lRYi7tr-)Y2`ZFcW^rJc zvJ||Wx+H~5;AM}`UUJkiahBcVYuAB+&O+^UlV-1E{L&u53Icc!r>g&u%TzOxf%Y#? zX@M}K`wwn=O3&7Jtr&PP;Vd>&CHeTZ#PKrya12?iBC=llJG#W%Fw8v@cgRi`lP2cb z?hbB()pwGyKZJ-nRa2-~K0e=^38m{3iD^Qls*#119Z!|y8-fQTS+SNiN zzsSn6M_#FuN138m)(eanPh|>C8Aph@$Wu@fu>^hsmm`^!$D7XYp4-*$hI<(K$*!lI z@!_f|j?z)Bj|m>n?nE>xeW#TI;uN4Sp)FVE4okif{6G){?~G^n`_dfT9ugi>udH zF!kDBk_Z#UOC2bDOhpliG*~|p2y;TbeVAlZXmd}F51#IWcC-&<3rWW~uNUPU2fg}{ zMM))PJJKjHiHWFP$;K6W9I1%3uXwMhGa$vGV;p^wJLAd>^YGdkw;h$Z6?s-%^-IB+ z;6hcB9RI14IKO+B5F)Vx>&`(J-pkZYn8*hcN{9wT^AKu|vfv7D!uHZMTBghAK%*Jp z!c<%`|D>-0Q}Kf_E$C*@&}oR7R9kjM2_ZJXo_VXW5xDCCJfCjiogV*VQ@`Bu>5=3h zl&@fnN-aa(klN6K2t)tv9{XF1&w)j2lTs{||IsVAvQc=QBq>~+S;3@tEi;@#K_s)nY{1zTvUpO;)ubc&e~CpGRVVLgs{TfUHFr96RhcT#!Gg*?dnDK%hKf zP|a0oKlq8aPoh(fgWOa6QLk2ZdTEVr3NH@LKhW+E5u6ltSx+3AGDHw0H8WcBv#0?? zd;&%HAE8F>1zJqC?PlLnKD0-C?R97SW1+rnX2UMowybT`fcOJy18g5)(cP|>z_A=i zPW6;vAPgM`g*ZIjk8)~qM6yxzS2H%_uJXil;NJvh7YFtraeolbpCt}uUM@G=!Y&FS!Nv0-qJ znRyd=J))o%y_o;?me5Ls_}Hw`#Jjk_d~uWv3hCe4H;Lne8{{vo`BC@p7 z&eF$fTT-8KjB;r;{c0Bg&5(NVIQQ6O>h8-DaGaoDS(t?E>yfJ=aj(mJjzsO2UKB-6K*Cy~|qG}+uHg=S`;3}{Tdyl5-gz$~8jM#Zgr1R&gIpx9a%0#`OM_-}VWyk+A zYqbu!Z3(YmEj(9kR!SPeSKNx&bl%m-+Gj}GLX}tH|GZd~>E2{CJShwVu7f=IJ@=hD z&5-}q-crG&@ChGtKh%}z^j6fg{a`2ld~0VdZ{YAuLsI+DNcf}*7AKO!S^ExnJe+!z zqBu0Fm_2x6FWl9c&RPB}wLW<*Q=d)76j;vSFWbK^pFGQ-FLiGTm}2b{M6AjF5QhEL zfc${PEw7*?U)}a4L!Ot3qix^oJ8K@}qL;Rj=^>z;3w~zf@%r{=ZyP0-@Cpa$HTJe= z7CfEurJC!DtAfOcDJ%gKlp~*^4Np#R&d#UxogT#6>H)|B|KD`ijlVfaA+1RxcZHcv)R2F{QFap z#vmBJvo4+l*ba`BiI`MfUx6EJ-B=;}d+iVU2&E=OYG&L6SOWhX5NU&a*$N_U?%VRg#XWxltQ>|n&b{&OW zQkp5kk4IL*XA#wM(~|3vFfw>RAU8^}4fo0*Zxwajvx%-wzBQm@1nN8=n*qejTUOpS z_auT?AD5IMN&lvxk=*oD%N!trWaJ9p1d&9n|1Vo6nX^A7Y32mo7ipV_tnS`UB7)!V zBi=6)mTI*XWZ0ZUQG<_&YyyQ2l+tw=;#@-=5zlmz&F$RILsRpUaFP{4tztHeneE(t)A&B zJ8K$3UdfBp+YsBs|MnmM<6NYI7kyJw$WL4Z_TKtqXRmqfsF_1)^W5#CoY>ZGAVdEA zx&GF}@OckJiXD6D4|(<$bt^f5+#hgSD-ib&}+8wOu#RpTW#H4+BnN!1;W}_}7T>a=|!F7%%z`#xZJLylYT0*E3b~z4sq7;t8sT ztn0GYf#>7L?6ef&0n32a7WnExX1*iV0x({?=J`1K!gZ*f*n^XJrq}NL?U|{3`6GsO z1O6RY#cG%A|FCxY*6{gCy}n*svuU*$2oD@MP@(6!K5!j%JJsa*CJ+%-$E5Y(H`lL} zJHMZj-l_WbJ>J)Mc!rP1x{{s)hQ1iG?H@4R&W`^(+^$8OX_%c==MO7<8AO^@hNTa~Otl_O05^~k=N zeDva^`Hw)3n(IUyCfv0>_P|rH*AR2pE@ip%x>rNvR6EA@ffq$~?%p=wGN~^aiIZwft@ZP#+|U|ryWRlmcuCk5F#tmVBC;-A1ppy}!ZV-tvB1X#Zg@qxKEP`iwFS=o2b_aVGF?#A1 zb5V=VNxq3%Q2WZY%xKvIE>pxn5llc}#_4>~$o$r(!TP_BQQf4#6d+QtQD*1if@ zns-4;5h*5IF7Ft}3BNBRrg1{d(a6bbR9f|w?E>~b5^>q2kbM47yn-D4{P?E#!K0we zH{c5dzDyiAaNreSi=*4S8WJ^Cyn0{fTA3#k=c$d9)Xa`EdFI*Pz zMj8_?7uElN|Jwz>-zOvy3;{UVa}Dg9$b;Iuq!0pJCJ`$3hS%NrvqyQNY**|3G)D-8 zz$b(daE>RnSxictzl;;!-+$x%_j`U1DOm=+l&y4Xd#TdJGM5dQC5j?d|25Qh|L*1t zf~RNqe(64KAA<*p{^RlVHb36!^B{oOW+}JXl=s=LYp&l(Jl@9|)}qGu?8^6+wH|@~ z1IFSLk%RjjIB;NreipY+sK|kJ%z)mwAmnGg$BcMR1sUk#sIjn_wGQ2L>Y zZ6V6j!kJV@pKs2+soY|m007Bp774+~^BfpNY!PU|7*wMZJz+eq+SQOuo8U!|i5WhYQ}vgHr#{AJW@jgx<$ zij}2}uP%8lQ5{&09d{}M5hNNNo=G(NxsfWgRU#k>1VSKS2*40LBT{G`x4z9m1V~Qy zj?k4o0_@J};(T-BcP~Zak{jg4i+NPx3-vEG$Y?Oc)6UK2u z2n6D&nUXR&d`6nje+xN5jQymJOxGVoozY^BP_Z_%@N?TJt7s3eU5MTx(tM8XXdk1$wLzG0Xn;4d9ctv!N zM2@5n(!DCS2_#h>8sFsL8Cmjk2@q36Bw&gOV~lxDVvFcU);4Sdo=L|o4*}tH((yzL zolgZRiV+($THs}z5JdpuOme86q9W5*@2b*|U(HS+5X1yf@UcWFIUYV&x;SK;0|yQ~ z6xkj*W5SDmAd*a||Ns2o|D&C&zwwMfzfyGmBD3G5cOGz;)bZ@Ou`d6v`rW7tkj(E^ z-*?}gJ=*;8I1W$j55+@XyA<6bMwLE^0z$A2!AIXZ@FHkPW`vxvt<}m_uYPXjcHq{? z+qE64d^Vkr$$W&A18lXMs6IZBmPe!~(n$1a7!an4NI#Bv|2^XJ&pR#`3%8JfKna9N zpED+yO06~nru;W_o~d5{$TOLe>d~+B#y<#Vmph$K7=}|0+z{i0w<+R$9xx06(>UUC z84+W`G$q6+n3854i7|ma3yFywDVd#Wp7nt^uOAJXa~i`<+2Dc7=JP{223xqdJzgO& zz<~n?4jede;J{aaXJA6LxsyF}3lRkA(|tw<4m=nAz}!ILZwTZd(652bAamdu=o_?r zx4%XaEa~msv4zI5rIw|7m+|}_kHZmW?!Xgq*vk$aIB)|FiR5cSo$}El42M_8ev`pN;Y0Z=yLk1lk;n=_rhKxuMM~8>MwJ& zB;uMR@1G-B^#1cY5OENTI}wW=M!)3qD-wBzceDR`+RlW*SsN4N>1mAktCre`WN!OMxBpQBe_qWR^H%_ zY$xf9uoCWt03p;o^(X=$Aqm?&Y2K4D5JM+Srd6m-K;5;q!_Yuq`Wvz=APUJfD%Sgs0!)X7oBiB`(#Ima;)3qd%=N(^~guA+K*H1WGtjI5{ z3#otqytZ)Ljb@q)h)$$Gop3shm?R;|i1&+NN@{guTM%8d*Wh7hXNA;zdtGY#SInD0>S0<(w?ClxleT!dcD$!LGu!Fnr*DeYW#ExFXg?e{ za2Foo-#YNqarBh~F9^cn8#?gwaAi97Kz;{-{wJd!$Yw!{%_7|&kz`&C5A@z0@Akk77B=_#b9XK~`qF{t z!26tX3f4)D$iLS_J+dkDP`bYgR6_AsC}CYSgMWqMDU2$v!7L4i8q3 z#))PmWI}nn#F8DQOq3Njh&uW7sahF%!{_qhkdADZM1aZKlLaB@zj~uUl@P$9$Wz%6 zkcxXnqm~1CGp%fq2gn>VkEPUWd)IHRkji`D#+e%miJr7?we^<`|36`Eb1ye-em&)) zre$m+|1*1iych;cvcD~1BiY6g*Uf?`$%Ch{X@}$l^-1I6kq}5o`?wH@^&BOE=rfYd zWh}bcCy9~nY#e0QwE)pl4wUg#KV$?=1R5Db81u6w5sWb!q0;9teU~Z5vQFz=tmQpp z!ix;FTOg)0+h!AgZ@OW{GHD#?IS(8-@Fh{t(tTF;|Nj5{e;|p^c1t!*kb~ds&0GhwC^U}FYqOFSG#mxZ7uWq8dq;*eJ&0?{G;F| z{kqQzbYtZr%RxsGa(O5Je)ZMqCYwa6-yM$Rp9$$jm%e(vZ(Yr=e75x>ULFD$$WfY2Nt<~rS~j@&&A%g zoS>N?fgF_qgkczLQW${UbeN5xuHTjb z=syb}B&+tJ?~Z$k?R&2KHtTd2&^vhKGyagyC@G=NSbBF~Oi$J;u4F-bCCsyo&au|U zZfE{1q?>Q96TX<;V7|~b@|dm5DlUG^Mn>71Bet&FbJ-W^i?4zY*}SzwKD!rLa{P&F z?~jLPTz8-5@m>!c0HCxHA`FE9a^r<}IRUV5eP6jpc4pjU_;kYAvaB|%Z)28?7{L1Co2)FfQtH&H@2-2-M6up|dcV+)Iqnaz`xbWz!9T;; z(FK(`+l{uFmYVx;6-mw<}16mGsD0!~&w}~v181EOAA%bR{%g)+olyHCuDZ9|B^8K^SzC$VA zr5yDpI^A6SSUxvEAnMFn)M3dD%|u=k=oi;)7^IzcdL05K&nEy8nVeKzs)X{C4=c&O zj`A+mZ^#ROSuX@cNeT0;#0w??vqjwYtqu$$H|utWEdPoC(6JcB1OBt^H#3XnJm-p7pEToNYAG zOr9>yT}45kwY4G3z21nA02Nni)-c3%k5(4VzmpoKm}~MpE9spiM`!ovbTa(%9nNLl z>bW;$#J&!z4O)JxulK&Ebt4W<`-upcLlZ&G|DDc5ehxsRCytj3reM+CKoBFvrzrWD z%V#>p#T zU8vG$0R#$`;apHM2QmV`WBeU)xg;g`)l23~9T#9`pJTI|`RSE4$mY*m`{j4x(&}tp z3`WK8NdP4flfH`(a5|rHj&F!5VjLqbmv>w)Bi`TNF@_1_7!hN!N5E}OW=|561KkF3 ztvmI``?0R9!#T;mmcHZ58fA9h^x9q{C}r1D^V zdEB$^?!IPaDELqNemKwrRet5V>3W`?Y;U3V%`uD&&eMOI-+kpgv z!Eb$Q1=J_8uhDi-sInApsQiR}?4Tub19yqnE5AL+mh$1~)LEVC{qt^pCFK9GP^#j(2AJFdC zis--FN5>sq!Ck`nw^C1@ip8s~Hum`M^+u6Gq@sMREsIv?kpl-F4qK192J}i^A<-Gj zRx&t=-hXeMW4-%4yygdhtVjAuuN1J zl&JHai1p$QV4%1al|1i}=m7zfrO9Tf(-#0p5Qq@`dLsdeq>eGdBEeasDe=NK0!TaF z^G7H4*UwHx$5Fz6wHd4)_JVRRB!GY*oSok^YwwSVgi<*c&7tVgY04<^bM1SzVAlke zIud$uzM~?^dl^*j*K}gc2+`CS>Nae4yHJ-?=4U^+JqdHQ(YMvHs#;sWyZ-*>gKu5h z?Ului>?5eloAWXVP*R-NF+c0|7L_CjAz+#&NQwZ0MWrXiX~Gl}l5MK+%nK1fV6y1* zrEfVwL!g^qVrn-s1e>s`Z8NqlCr^^rrGn#@3^AZYuYtxjl((T3%Zn9)ym=kw~-9)osWG#3A8wiMYIv7%$N_ zee3016_-S^{l}3iyA+to4X{|O1yeyWfn80Z`4HjGUe z28akwr-<`;z&K8Ldwav>a>3>O9Wg~rQ$k8WoFc|aZ54Ud$mDrJ>01R&-|jTkeACKD z<5fxOA41~$f}n?GKa@qVoL9l^)e$?4cO4rI+X-C;JM-YU~F0e9h=g9NEU`rba2YHpKJ$~J4 z?N&w?_#5~-EHZ@bU)pQUF@xq8h#V|QgTUX@u7%lj_4AGv(5 zK6Dzn@zdJ-G57c3^f-|5C_nmL_jW$SgDbHr*H!bn&v65AjEA2HVybOh+vm;<$kZ77 zR$a{N<=KDTXqclgg1{^wW`r;l!}W@Bv8`V*j;UcpiXpAJGu^QY9BJ)e5p=BP2M!$g zg2-zs0W6H9o{p7sT>&B`UApT?o@c~6@K~rT&!fMyi6LyqJVLxu!5INU!J^LxT$evw zt|25TWKkeg22U-cj=ho);N;vaJuM6wQjTSL(J86(Ggo%*61wLDgs$bDfD(m%c5RmF z{5JuMSWD_>ni21t3=j5*9<`n=S{XACIM}tU1bfmb^nnDBWZWx)%p9@F9ospQwY8~} z$9qO(wuhmm!KvPqaZS8QM%pI`I1EM%Nl3!Q;ksSK!_d!TV6eF>r<%`iL!+I=3_k3u;jn-U1Bh+nB#b#gRG05wsr20_buWScba3+_u^k3_D-c?L1t-`c3I6z?TI zZ=RRhP*HWrt!!;;&rSh22S$hyDd|{~B#k1!|+IA|McAN(Mv z-GKuK4m=sUR(SNd_49OD>&<&rd?xD1;CrS@sp6kD*R`_sqR5@o@jYwO9rUDCXF7cv zaY-}T@a$>aX8llSGkwjK|Ept7-lUcHp;4Y)crEY^#`f*{J(*2@JaFJTwn$@ZP+jOs znJGb1x}BJR1?*&V-^AVA@FBO@2V1BY9DkS%Nhq6(G}wWF127DXFc3Jfscc4?&+HGW zZs6_A)#uiK_#DiAraG4eV({q<62ZU$W0>%Eiui{Kzh%NSMkHHrbH*#6Y^LxhOM+<} zt$2cv1tlZ3SFJ|Qy}FiN>jYzs;!gdUKuUdRe9LNEVx*LCI-PJnNBsH~ zF-;@JF=84g{C@v!gnGS3ZG2*OD`YZ9CT=#J**{a?=I|{DieDG^$cVe%*@NfQhgmUg zZhcAYs#Xbv!85{ObqbP{Y(|jQ%(v%WPeqw3z6{pno>ek_TK3?zjf9_z+gCT2Hay#D zwp07>Rpg-0d(!)|Bpvv9_z4@)4jedeU=PH0lMKi7c;FV~9ZWML_FA;>Eya?JJjBdq zoOS}e{-y+aC)HG?_R7rM73v>9@FlR3?WwXyetXy<+GQq-5y_b9Sk!fNcTpJ>submT|6~+yFHb}xH>0(0XXlv|^1SL-PWs;2CLZ;U z5+o6XDMvGDox&akRG%uv3B)IjvSSeyi3oDVIsZtM=<@=Av(CUwNZyf25ZE2Oh47w( zmL30i(OA4=ua;LL zTJ$3kZprg`(?H$?0U!aVbV7^~(==g<6T&zm#)K&)#2AsHlIRng10d;E1C7L|<)v!h z1VcA%gy5SLlt3>LNU=(HKYz^HxiKRddBe1S#z$(B0z<~n?z7$laPF41;?}Per zZqn67H~VVFK(!%+As}$D4Krpo5Vv&6%eslOu1SPpI6(y9bHGRwVvL|j7&%}Zr^@0} z+DUC532};u!-NnHBBK0v z>dOcALhXZ|L*?iS2M!!KaNxj!0|)*T9+YLM{LKdrEa1^yh-;GR>e+K%YNtFs!O8O; z(cYu$hCunaqU@Gz(neO%GYGOE0USEhfosUoBo`r1ELzwd2J5?wLr>q$zTxmZaNxj! z0}sP?yb8+yL@Azda=XWt(r*?;E}5>f<2Y{P)-A`WcivvpML<< zx$944vZ+Wv`Xx~vUw_^zlEauJ+YiG>GHEo#dsN4qBrg?#zI<+ePsvF172&?B&GOUdVy-J?0=<5z ze%O*Ld(rBx;Je4Dy@!nyWu6(p&+gZtWgcdCHNnQ3&V3-&-;xNzFkl!4#267zXT%sW zMkNQtm@;Vq2}n^tPg7JvybX1)Pq6-_8)Mqov~9X{l+7F2nXXv^{IieAdanGkacHR; zZ-;mBz<~n?y6~v4JFi+fx?oau$W^mao;*F@yoSwBTX7ut`dF7Mh1NGeS8YV#9eRaP*+D4Xr1WbU)j7fCQ(CR{G>`1|jF0{~2M%FJ<2jFe2`;5O*P z{2l?8?c4tW8*f^fh0npNNN^(%Lte{dP@f!pgW z$K^4$4jede;J|?c2M+uZT<#x$?;)VyBOp^RE$>eP-PUeYrFi7o`R(<$l+~V{i8W@t z3B%BwzowvOGQa(25vBA&1ff^K=RME5L!lda^2xRN6Rh?1)iH1-&DMA7Uk45x_&gA` z^QNRapwY8Poimy8O(kkn?bHFn@*dqv z1|*9>FPXeb6@lJ4uNArFj?nP;^v3m|_Os~d7FwE+kV8|W)L3OkuAayossLD$J#Er+ zNXa=)j18Gkp1@Lw^lD&FwwXbR=`1Oy;B=Zg@>pDwv0a4VmO&4IR>v=6du$8Tp(m68 z<{3HN<&TQQoDvX|Z9p|bJ5q_p<}x$0Rq-*=>2rj{6*i5>z2#`!@x)~Xgc*25#xk$91*7pF_IGK zlOQDqGjO?Bx?GVw7R%Vz+U7fpfF;xSb;DBC8H-Npj&J=D>C-_NZ+|0_*%6}y8m1>1jl=>y9tjY zE!Vc{CQ~ZVo4b8^# z8>XE)Tiyc3ZhWeIfd6^~xF5D`*J5V5|- z0mDFG4mh3O@b)(5P5p6-xLhtsDdBRN@cZ{~OqUTcO3sdm>h8<2+&1o`bjfS}^8@!` zZd2WH<<9eu_w;9w>MtFV+!w(s+tO;gWwIbg*$0tcx84U19QZnzuT?Gye8>!AJ}`CF z9x}**E0C&xx=mZq*E_Ldcc?#CUtV%WCDkDZU|$6babs5A+*sY*Yff*zTDR_f`zL1) z#PUj-{oTAnd$?n3-@LSo#`kbr3tY2V71PEo*0l9fXr)$*cgK{Ex6zn-29+6!y<4aD zx=b@7V6c1$_3mzuIN2+aE!xlqJL`IVZh{-To{3bYA1-Z<{HdOyZYqSiX1^4hOZwpWCi^PF0pzYvD)q6EA8R84Az93Rb7F{qG1-mn8c)&e?|@w9b%MSAWphrGkX}pbVD1`l ztEl(Q&$Vbp%b9h#`Un~h_!hgM0LMs~Z3#wQI@Y!~g*?mg!NTzRi?WLKV{u^ztHjs%lrFfctMwE^wQ5 zF3Z0=NuVNC-Gh|N5|asg`s{oZDS3O@!X}Ng&kKMcB1y2DFqEiWp0zypywhp_=*?+f z*IPG<_ct6A$NT1Txgo--k2)E_xaV-J^KFrwJ)0Bu|?z z0Yt$2?@8Nl=G+v~i1m4H%=MK_sVK6VYuK}T+WWXs4Z4ayb`bTIYpZ#!XSu9VX_Hjx z^SLn3=vG~lOT8W44LM|_jH=K%d4BUA3-~u#`NB1?i$o^wHcp{X5FfF>{~7t zv8c7QZmP^TQk_D{6D!3Xb5aEt2Iu-_eTv&liteYF*=JF=ZAafCAEuS`?Rwt)+*+2m z3n}ZKE*;j=`*XUtmOIznpNBomZ{zm4wfvpu-;bSlT0LD>+T;`Mw5u$1`WOjAUD8}`LeT5c_i|Wu}2(@N2yNLS7 zD-`YXx$k-TF4f+|`5o%~G{uN%8WCf}loFCg~Aat$xJQ?|$-iK{5Y#-Zo8^uj(feAV45#xhzO^uld}i$J}dItu#AccAb_Yt40sl5!zV4xo3~V5qzE70m7F}%6Ss4elO6~lp~ZEp&AT~k z_YF6Dx^hvj`W0A6jUhfI^BR@lD-Osy} z<_$w?2=9&CEec{yNOiPDcML97zahJW2+D3>qP*6Mh#K2b$bLTarK*s|NwHDiE$p*j zysnnA6?JDVa!hwqsLz2m_Yeq+-6u}YCW5fOy9AZf)H}%l4^X1~0HUC#ShC-;EUIOd zS`1K=FWcWNarK@IUa9$0sMDuXB682sha$*|pjOd@sa#2BkgUmrH0yiIp5e+??>L&@ zNTSZa6v5STmShEMOK_2_RW_5DE2G0m^#W!wbwsiOfGkqI%ARhdPOe{NxxA9z{r`Er zYWj=ygO)Izf9SR^k;yz=1%$EzU6Mvqj}n!zQ#rRl>)6X49wHA~{k$ z(oqk9+v?S`2e{!%sOVnRZ{4-GD(9B9`bw=f+q?H(%CUK$q;`(1hzK7Mh5oxl4!k!? z<@y!#mAA7A=7(W>-^nX!dP}J_6V>y2XYyz^nmSR-g*MY`^XylUO$R9JqT6t8Y6X|= z=1P|IL&L0>`NI8irP6CP?w&5|KX#|BMsHo7Kyzlo71SHk0qA!$OWwK416l}sxDQUaN-?)neR@5W{)0g~zgQuGFP zUBSxnHP<7K`(29tyPYWoK=famMjmQ&y*@CVCF?JOVNe}9&&Lq8RgiiY zy-r)1_SXB*gM5AjbT_gmvCa7=k%(ZNE*Qs)Wm=mMtyzh=UE9p&sL{_8E|+%@C5&Ul zH0eKrzT7YnD3AqG(DK3%5SVZ}oe@LHIz~(g;e_+)P0P1_#O&wz^QcWmGixGG!)lAO z0~xjMOr4`kEP`6i{@#Q<4%@p@4$R>K$ZS)iq>>oGB~=7AevP%@Tt^N2r)+d z{rBH^zg#e0F1TDSMzR;AsL}0Xv`rM^(Tq)^&9=G1cUaf`YWvo*H?IZ=djQsgsI1{0 zk!as6|FPJs@88$-JD>ipn|y@evA14*Nu^yKYTH(8`;zKc@28x{yc8Q#MaoO|y}7g5 zA$_Y>o-J-|GJ5Qodp5Fs(UD0~=P~@e-dO0#HO+lyKl?H%i#22mQv3sRkaQ;-!8Uhk zezI)Hf#NoM_tpAFz?qCx>Qwd1s$aA|rQ65jlTD5p`+M-diph#^=CRnV{oH|Cx4roa z>}sz&bc}njS|e(us^*$rhctVcSA6MDS{Ye8AF>3SdIa_sbjJvp&2z=N*$Fb_dKijt zs_;R|S_b=GHb+xK$@MY-*Q@H^)c*s!mMeb{nU7o`NGxDq3H^Q2JYbjVl%;q7`Ma5K z3@;B+$pLeJ(VyM&b+EFQuJMRhmqem`5zWTpo*qo5vlgAtbwF4^!o6DCOi#>Td9?&H zi8LAS8=tvLEy#e^bHzyf()lDux;H&JC36~Ulzz)ppBuSsxTdO&R*c)FcFo5UQSXMg z-yJ8d0bcTiQZg%`IYU3MZP0Z40?jY!oqGdnBF3Ng@5Z24-vb+@R@#0Wb1)Om=M#n@ zU^)-xoSraVCd8O9joK$-Ou3(^4YxLK8#$jyH_O-au>GeV?eo{Vy>`g#Z~Iwth0rHg zJQ%(atmxiuKT+dq`OILOn4HkIOZ@E-frxTHeRWa#*2sJd6GgQ#;FZ%)A2{&!P_K{u z`P3t%KJ1RSl(n+>uIXyKs&~gkd40pkS`@(j6`{Kn(s@}@_{;mNusCUE$yRCO%C(KH z$7?0X_3|~VU%!pQk0s#2*pLtBPQdPlPrW`LuU;xaH?@**CeW*&zv%173*CV)Xfu69 znQb1_h|E@`*|a*7W~G-m1p2Bxk7`>-h9k_@td3tWpLb*3U7Hkaj@(tadX#URKeX)u z(_5<1-{>}3_5X<1yP?A_`2=>{d(hng*&MCJc5dmQ^d#25iMyB_`?#Z4#rIgFb&0-aw+tl{H zlD$(((_c4ze6c!n`!2m-YhPk6I|+yb{`Ft~!rQMC#_4vm)XPzpd{fN80b zvve*FfsOo1n4}JSlTUH1FX@wg414A+_f_|5T$AVX zufEZ1b`R=&rrGCi#7Ox4>!X!U<#rTm%ews$y%xt(=y zHM7)qrml(`(fNJ2v0k03%<-|)R*5)p;G=Q#&dvV%1`lyjlj+rf<7e$qv0qXFxD)=+ z-{_HE4TUJuI$Qw2$#K23LCXvhvN$eQ#(@I|J|A6Y!p6DBwEHt~pX1;b_aSM-rw}ll z&tPT@!wG>0FaktECX3`qw*aJ0Q6;cwC`z7(gldOzi8d|WIuUNmH1bMo)VeWR$@8%? z0C<%0RLP*K+A!Q{m!OdY8H^HrFejrDk3MBY38dv~mGwU2GHd6TRZ(=!NX^~j1WDC= zlu9&r7;$`QK%u2En9PYc0GG=1nYQIKNFB9e%vAO{HJWdhCt$e9DG>vDt}AXA;}Q@6(b<0d%TSzf)t zcL|MV+Mn9)iGKZv=XB=RGU9O2Z+6bHvrWyQma1^g;q!PLYs7x6xvOq$%Q-{Jt`&h2 zOw1fmiPW) zs4J2cOmon;Q5)R{wHd^T2^^F>e>$CUI-emD(PT%qId2*h;#Ap@1c+0@Xnt4CgvU9P zW*A1ijiZs}DeKq6Fd&4%&Iz{hTaXAyW_L`awmD9)GBumJ&$}tcT(9oaQL%Y^#K!Uh zvoYhF5*oE%+|@10Rn^v^x_cSQd-un&Q*b zX(mY}Em=hzo1+$%Ud#A?;J|^e1vj*zns1Id<=MCviJr_EuhAunWtG4=%6SOpcsdOT z!+;?Kg!2i3gOR!!Bn${EK^W#BgTLXKnk;0;{CFroH4*6N>UDw$TXe|R>O1|`t;~u| zpI4H+N22%ZS#yzVTUTTTGCz{?WjK@UMN)NN(TMC-yD<7rBq9O#a+N|L%-xoCa%%6F zwd2w`E}-n-0s!U&2q8{M<&usenuQj|SR#!Irh8Q<0B#_#&(je;9=DL_0o2T%r_|#sLpQ|+oZkiv!+>ELF%A*KG+`P?j29)* zr>f7SD2P#0sK*2#B}~aTca$+(w%as!tUj+;P>xr1;J|?cUmsOC+z*SM=^}9^mtPkY zimWBeC2HeFn?L`lO?IZs?lY6!dh$jkk2UxU;c(u*F216t@W33s5$5{x;_cq~x{s0j z=eTAUASn5L7zUi*&iL!EzW@?U@4+ ze7Kho($b;Gi0wQ8oHU?EN&;bE81#Kj(}efS1;2m)gWvyL@XtU0;4+OE$AkzC4v`X! z><)-5jS5bv*S3BCDAbc7ee-pvsog^#V5#*1&VNue4`K#2@NQnG2V z|0q@Xl(IhVcF+0VuHBnP_Gy~0N?c<$-vq5~-hK>vfrYMIushaay?LntF@#EB(GtBm zK$x9-55L;|B}}RDfs`{2960dZk#csa<(OaprP}C!;J_CEIk(^iWzu`$k1`y7-UB@} ziVk_C_y-BWWM#5N3N^tq@0hpKj(&OI5ttL^=VUiYnl>|Ka#vdP#W}Ju=`)D)J9WkT zZ}WL0@Yqmu;AcVUoq&>jo$~2aYCZ0TGRYhXx9J>114%)Gx|1{#fTaAe{@<(6-NY`){jV$je%h8nOb=au$$|K9lZ=Sxh z`^)?X+khc;nDvVM4WUdlXA8$3$s?{iiM+kEAx~K)38Exfo63gG7QQxvE_)Gk*B%@wrANan3+vcAf z8IK7e05MLOh7*Qi!Zbz1D2Pcnq9}o0EaFcBC&pmEYjrg10KvvUr(^US$|du{3%{G( z|N1(;`r%%<{&(Q!4bD0Jz<~n?em11}q)z%jm>YJ9(V4M-pCtc?DU7zNeB;BANnb|( z>MiB#O?rESWrA5nB2hVTCl%!dNhk*nJQAx!pbl~dELqWwHt+E<*b}_wo}qoO9sKrs zeOzPBwUhjvkV)J5`yJK#5Y5N^hprNT;rUwoR;+A304m$b+}=d?9}bMuDd2QI;dB}> z3_%I-Az+$DjH5=DKTRWI9Lz4Gey(YpFphE2KSc!7lmLllt2Fx=NJ;tU2_cy6(Xu#? zrxS+h3_j`oX$W8jC~77{4?x1i_E{}K0fcUh3KVaS@;>2mx!`h%h%r_{Cn_5e z6+*J>?8Q#8ox$Ks;Ty?h&weM(di_G!Td%fX-;TO;CvJ%VLe==p&}0u%4exsL zuxuXH*t&J4^HO?Q?e{#(wR_->tP(#N_YIE~Nzm5qWW6=Jb;x}yXo4k)=vq8Yv9;!l zXBd91u?s-$5W6#Q?KxjZ$}2wleR%Rb|MWW;zRml%2Ol$+_WHbUFs*CQeD+;nA2!|Z zk9)sBy({>hU1bMe3T1PmZ0cpT)O0V_N?#0t5AIR}<`sBVP@nAN#1*%lANX?+mlyy! z=;|Hh`TV|WA`KHlaN;~8gkVuaJ4Tbm%A!lkXQyd7@Msu$2>9bc+>qt{vmQ_rSRIAl z6qZ<#=I0UUR~6Dvl=Sa%sNQ#z=VNs!FQvo7IB?);ASk)A6Z+?odWt&@X08hqm6$Sd z*rWCcD!X271+1fK9N3Nde6sv*>j;;1MC^ya!DN_#)9Hls+Z)0Vz`>)37g>df0SYFh zGQh?i2jGs5HFKkqxCR%@B*%emD>3k&pZ(3WtrykGC%{j;ANtNyRQ zYY;0P0qVE|EUP{%_2EYUw(Ger4Ta%8tUiF8)b% zQrl#TgfIk?Psoh%vWPn0K7^kO&}gZoLqeP;lZ|HA<|(L(?k*bEJtYB2%+B3fR*Er| zX!3azB9w$LMV`+Qy(@CPM_|x%lt4cW%LxC;Jo?FGH31=-GciS&@w(Rrr7ar+HoP}1 zo1ib(Jx1do>xY3U>paBnT($mS#)zT^`TSA7H+7cyfSP?i*4kcZqxBcR=?G^VTOkAt zVZbmXi^>-<#*#5XN%RpZC2&kgNmJ;Gz#`TQq9Bhs@%34%c{$JZi>KM~re4)S@quLy7|JIp!+-s%>GEl^1@i!nAU7jABn!UTaIPhh}%)V zvHvm%9`o$Cxrw9&a*JLHohjGL(T`-(a7)}Eys?O~Z>h&)H0bp=` zZve7gHN)2Jwcu3uL|ETH2PL)9I;c9H$7t=NCbg3Rn3IFu&NU1}X$KZC%$_3z;()=4 z^lxV*2rie1-@ixv^UvS-=bzvB{ri%$3IH@~mbq~8oRRx#gzN)90K4U8SAJTjhL~M7 zuPLsJhyX@GxxQ%R@cI4fzrY>D;i^WtjJu0?d1U{XET-&=)c;&^wAz#Uw)-tCHa_*w zLL0_x`MUs`!64fUROg+>u?g*JCD_)ZFt6XTzKPNe8tjZq&=Oh>ydbvUPSMi{)b5XX zsLeBh)_Rw(t&57L-of1WB@-|q)FRi(eky((N`c}O{e z)x~&UHxyA%qi{PZ)+l zQy2$U`Gg78y?E0A0RR9=L_t)91R)?ws>mz?Ac1KBQ5B6u075X5Xw_B7#eYjfN-&LD z&k&cFdL&?SM^CULab~=o&sp3t?$)(g%2&+P43pXqMzbzYNJeZ|1*D;$6Cf!9&A1b= zL@**W8hy0&TfhVmB@pR+pUI!ro)$9;wd*<%HTSHe(2HGftG-L7sLT)xtm=guK3t($ z8`|?w^~^5+x-(OKrP_948w2$G1R`~Gg2YUkQJK4`+okTeVoOr-6oG`@+G)|bt36v5dB^`?~A_|mHVEv28)6NSb>bapr8uGf- z8%6G0kc+ zuBvmdN0d4U_XiHVFdD(6KjTt6&1O%fZyqc}jH&>$P52DEruW@l?ac#gQtA!my1cPs zc&qmC_3yTGdDz+r*T+uVTm7k$7rVEd-*f)m-+Qh#RX@xxYz0uaS$9uA@Bmnlfo4;z z=}oIPVTNYX`m=$VqeNCU+n@4d?m>XzZ`sv-|#|d@?EZ39$E|Aw}I> zoB&wa2rX*&bCRy5g;Qs)XpoI$=j7X_dYv+@Q7XF!Q!!k6_Gf&oDmh=mayW&mBK|qM zq2T%qTMz|82tzv$NP@`H-z&2@`m>?-mSnaX{THK>++!>OoE)mRx&44Ku-YTps0IEv zYpTo$IN=;l0F~edDMtJ{y&?Ujo63Lx{*7sjYL8(udrk>-z+BeRG)AP!>TlJHqSw9s zHQ?>9GlmmqQhx}8{S81G0A_?Cz+WmYqJOw<<-rx^zXp5+(%fFxM4xBWs}86#T~_@t zB@Ns`+JNc{C$@2En;{?;)C)KdC!B^eQWBhogkR@~|L$LYVH`*N{r7MD^Y=gax4-|v z@Ar44nAAq+x+nn}{HMrRTZCP=gYWX+?mXYGS-tm~0Dj<)Fb`PrD%e}Enn1XaxEldG zUs1%Mia+A_tk<^$TQ9BfBv9M>Y=cgt{+O-t<0JoGN8LVqtF<)*yT5gweZE%Z3X_b+`m#B58HgO8D0KFo&aTupC* zGQU0UIk?$z=Aj*FmYd1$4>HZ<2!8Vwu+>Y5*pjN4-os@6LdyDwo(K@QvM(DS&km%! zWYcB;DLk4rd;6c0=9O2>1-bkE}GMAYh%?7a5~ z5>!p^f`%;7kM4KiTcYQ{`a?Kz9w-x`M?S3y^lhK6yoxU>&EHe4d#1{d5FXd6)wPl2 zi`GQz0|&k)ToK}muvbf@%_>|Gx!kbvnlsgFp+}bQ5$Wq=OqObQ7;rwFF`V8o3}+1C z4Iu*;Qkt1^DSw(d0~>eF;0iBZ=Zhn1ekl$0J` z07@xm73oy#9kZd2`hHsK;YW=7gBbQ3_Xb-SLp4t9es5EkTX1u{?+M zm?W6YxvY`GEw91swn^4i=h+sH9axoA?kdgOymuFAzIm_f^+;J<@hVs~qOJ*bTSD#Z znw+s#_@vjGUYm@Bp9cZvj_qx5$Sz%hRH#k)V`Hs!u#)c{C)?9A>e!(Fq{SqLjbc! z$PXCe01gZ$&Vd1P_C2?k*~8asClO@=#$LT_PhakzTSuR7X+o|q_Oh4e@~o|Lwm`E@ zG`43+APNXUGY>&3PDty{AEC5(1`i!W5%s(X)-)Z4eFpPyHQ@b@&7wtOx3kz~{JbC_={GXqRT7GJdV{N<>UX8?E z%Z3g@Syp=fXI&Si(gS*Dy%M}O9v|QFgFEjxfd;t6?(8}wvfxB~MTi)I{wqGp?K=k# z+zwZwO@WyiHh_H#cOBU%FKXH7RsPA1h34XpcmM6MB%j^4z_!syq!F~7JfD@Cjh(>S z*Iv^Q@sqI>nyEwuIB?)gL#-5Ko)jnl@{B^sfDKTM+2~h|lL8F;8mPsSf%lz1u-L`9=T7v$G5FQLJ3S zex+s|%lUS%Awr)%*}vMAn`XP&t$(x11Ht4_Mp=*DVMu1gCL089JSQZJbnms*$o0G+ zAd5MWr5w&8s@+HC>&<$jy1d-|trMZJ$h|Gp;JoaMS>N%ph%lU4jocoIJtp0&k)-s8 zBsm+x6c`+)@=RRnppjH`{_%~4F-0ZIrvyYbs3*Hmi9WwAM>V^|fozCf+aTxBoKsB^ zGeUGqf@smvl9aOA>*wV8nrh~e=-Pg88@2{i$8pdr!QNqRFLy3vqF%2Z>-x_7kwC-f ztljZ*;D*8ek1NM%!x_6`5LIW--2CWcsBDfc^Dcn{0Tda$ob$_}S z^8jQ`pqaZ%-CK!|y3v7GLC(b5n+c_Cas?_P<*GAfu7|0Oz1}?h>?LIH5G1S^$T#nC z$5@|lm_cci9)bQI-_l3OLaXNH50k~Jerkky0cFlfcgZ+#;J|L&lR?L>+;J{tIcg7R zCvRT^w?*P@QT^cAocCHlaD?}(#k zKNj_zu|}Y0bL6n4Ngl$0x3@Q(&S#v@XPkyJhz1ZbAdD$ZITCluNtEX#-5yhz8|P&? zuBWRjOv`CqB%wJ~;jz_Izswgwt6rJm+eoUu-+=6MfJUHaCwf){dmw?qCIVEgBZWHc zRAWXV(|c6TVzB=h-WGWB0z7}I3R>GL0wvX_+3|8;s(M0en7UHsm9wtH%b8yrr-T?|`NwRL5p{da?S{eETp@B6 zF}cloL2Q%OpKgqH$Bz`F&fIlI00IZl3D8JEQO9A7Ao$!LF-;Lngh^7~Py>iX<*VnS z0|yS=gFU*NIAi%0nP~@p9CFvqUASJm`u+M5>qRDwtQ1(Mw{DL=;N~}B|BY@P()!Gm z$6`g^bkf{C>BkRz1spH+z<~qb72EThZs0Bv>Dm6xwcXagT1T+=qXYSovJj1Os^I{RN2$*Re74O9XS_`l-rwKx z{(IC-4Yrv`0K_Sp{j9c!VDt06xHHb#K72)z%7F)9!+uCm53ds8RHR zwectrkWh|R4^*2+>_7fnat&k0_}M$wM9^emz3rl%=L3szRcBax6oEc{fX#;QP;mEV zRO-DB?+f#1bYDb{z~5A_Y`8jjYzGd!C|=6U;JFd)o3u8)#VkVg-11TnGDBzc>49$n zlKry6SHtkto^Kuz{lFJMHAfO=Mx4XP@dwzq_e1$V@{rT0y9u{vU@ZnO`Utf>2$&=1f0(&gfM8-By*T(NNz!l z2{9#r2Nd5CH{@hLD&#I8&LsKvjPgM&BJ%7hI#0&=7XbqjEqaOn{%3BdrGrFff43k; ze2)w2a*iZV1fqnTSlxD{>(eJq)7?CS#U_^osgAc%=k-2ZjS$X4gIN40z~95dw%Plf zzppJc8w*f3)cX4AtHl`6m}cuG|0j4M*N|>gI5cIhN4OPU04uL+U zO!k&o4C<*$?fo!hV>6Hv5NjDO=_ZSm&>_z=1hGS&Z%Oj9^?sfNssz^hm8B#|=7dgS zX}BQ>RH7<QdE+?2&O4P5->1hdPe{MASl^_yHnDE0|yQqsL(`3Wt5CB{=5G%;`*vE3G83j zJ4E~>I64*X<1#~S#VW2&bW63y4z z4N!V%e^2i*)K6Mhn-(V%dE|DsXY^kx%g2l~zqoI1)jnCUfN`2c` zSy{nX`oo^Sdv7o4MSs3^gRqnE)h4VDD3!eu0EU6_*I$1j#)NUaAcTM+1iZa@Rsgk& zO;L&Uaf)gKoWZjS%fbtsa5R2m%;3gBHS&7J4r!?~nMpUhr0CB)D{KENs#`%20X*eMa0n7nHK+1%BTXRK8 zm12>LYjdp3$?uew$0`UaYI^fx*ZUnU&T+!}3VXGCy<^RB!eG=Sq6A2^dzEr(qJ6D? zvl03OC6JTfAt>?n(HticFbfzFPQ35M4ll;=gO)+)BEK@c5#`>ouAcZAy{8LX&Eu5T+S2|XpBlS2?R32JfYmjQ;s%&E#kcTIUy!BIdje#*s6y@>nZHF+f{iR?%@&oWl9i$=df2Mme_)B* z8%p&d)9FE(gn2K>Q=(P+*VmAi4s7DVK9E;}M27om1Mv#+_Hmo-(wy8qnmU45Ub-S(SznML`u7Uf;DS?O)0@)_9H^dk*g@7<=unV!wjWI?H z!wJ(k;$qnXYSaY!Iaz+5nfvN=^KvGhm2<^>Rr200x2G1&je3<5TS(@m zY%ks;Qm(zPCQ#+fAkp2mM8(MtceLAeyB#C0oLF0jApjtaGEh4iwn!Fs?VQB)-6!^@ zt-T*s#zg=|{1bEZ=zdrIY-*0o=^c_6UJXtv)k3`H@Uxe=xVP7n?4DcbzpI+ecnvjS zp0nc7>6aCwU*=eMo&b*BI!G2Cqac!LpUq`iPCxb`=sJ$jf=@+|yJ$O6$R4sDbuqCn$3Swh@_oX%9{{S=`vJ)+p~#ROX){rSi_|6gN zS2kz%o>As)RV_Ysp9jeIWk6DEhKk}(;N39yB8@t)?B|6!s{AeI--3NB)3Ou!<{V%1 zi2;&S=5i5C?-MSk-?||Rgg|UVQyXa4dfKtVugx_*Cvz@l$DB=+C#rleam(LU)SsSn zwq8T$Rg=!MWMPYEx2kmk-;SVvnQOOKs+=7HW+f+h*$ILmDmf-39Y-vXC=k-C6V zF4}yo2BlA^=oiJkS>SG6d+Yh>r{cApk=H8cf`asgJt^~d4SK>r^qSP;qgGGKrcd7hx(R)Z za(@BlVUy;%!?k)h1=pxV(iyks0D#sq<=>0$R9qpIg~Qs|qt7#Q#OAR? z{+J*E0s#XP0&~_+mHcV%nxPCx0+MB9)c-}@yyfj?AV{^TYptFzL1Dg?zf}r}bBpVL z83=*Kohn8OcpwjQKQHOV z38r9~B}h|4%4PD=uPOc5!jE`fd=FAbl-vr)QzqdY<_f6r!n zd#;|i*0)P7ExFA%`Y1o__mIfGiwtq4G%K^_AW#`oE@1mVGBTnMv3#A|L#wsY%UbA` z$U$UmvRTw>O;)(42k+UOETCSnbbKk_5080U_m=V!fhGkDIdn}bSe^4W<%u3lep{5c zrl|_nWxmIuX$D({1Ze!;?q>+KJWDzsc?dLyG&XNl)x@%slW&8~KYF=YwSxQNMfEEG zjh12msQKiqs(pU(yFr~EJiG709&^Pm^Ihb=N1)Nc4fFRp=Mraq!QTxLgjHX2-+o)b z^-;C(6ZaOzJO?cMg!qk~ygClc&RE~Gb91@r>6sy2cVpBWr91)%>ZSJK5T z)M|^c{_U~od!6It0*3zJ8^$=VcC(Xb?9npBeNpXCP|K;H8c$Rl7}ww=gS!PdC%lpN zgCxl0={iEtUDM^(0{ZmD^(RLz-1o-j+?zRhe(eryy{;z+&Iy^%m|f=Nd01WI^3vp z^RkFN&igEKgsf&wqAtMN3AX? zUz8Pn153G{5fMmDyg)Q3pk!s;>#mhZAc^{&>>iaIBIMDz+S$6isX2-;Dt2E0c_T`G z=*2bVv-oAE46aH2z1u5Kl{O5cb-k+%0;H|ooLA``%#@v&Oq%gPL~J8Rm31fUETn{@ z2#`6|1i+aZp%DNy!n_NVs3OqMYCC_5o3PRjB0wV11P743QL;%fE3*iA=KP1ZasIV_ zp6cB{108kPH#Im;#E6ob^DdVO_&*bv1t$)W5C96+#VQ4A`Sm)i!}gzN?MOpN|&TlR4I&W`6F$3lfV|}_j0}+9Ob32`WXDmxM`w&Ni1vmyn5@5)y`Wz^IX{w;_^mM7+id4@6{zy_V0PmGtVr4)%W%B zH2e8izqQ~Un_021-a@_%b8^@mF{FCoqljkO6#~`PO3UY z@r4v2Jljwj2Wc6P{Rr3dYPi088&>U*J!kK=vUZ+-5BB;{1i0#}SzPl0Lfc;Q{N4At zXA{I9zxa+{Kt$ieij2ubNKBw?qq5#^^VWO?D1>BRy2yNNHbyK!7qQweh*>weo5GNA zt-luggKJGoQ;W>60HB-Cwc3<_QCo+AgKl`{s$@bkd#Kx)*q+~QRXaNi%>okKik15` zW{m2CSRf81{`+SOkN_pnbFd&Euy+9^tk=f6qM1a9m}h}no8+z*m<81E2jEOD*Y?S! zTbBF064ZO3T>?!+xP+2E$Jb&$-C(}E3)w;G5_m1CF z*2`h*y}xXwAA}Eh_T2)?V{ZEp$n0aMZfn!lwQM)t+pVf(*|4)-za8_@ZaD>RUn~W< zJ<-KlvQ7Qww1Mk0DOX(p3YBfc{K9q(cj{IA?)ur+@;39;@;X;J+9LpjKSUv4lR2dK zrC#G-LRR?#kmZoO+Hx~uUg6xBd$H4pt__sB4kXK7cddSs?I(Rb?@<`=)Z!1^gF1Tn zy|U!IldkR2xV^kK!o{wlW;5|UbJ{wbA)cm;}_sw;St7z>P$wuY{F{EdcTMNYTV2IedeB&Lw z)ob~*ki2fXBl1Re&>~pFUP$%9H|o7a^tTs+cQ1hwocySmu9BlqcgReOvPfl1A_npH zX7)YMcV}zA9FEwpj;|u~_E3|ww&%siSp*Z2ZpsguAx><(K9c0-1b)x%v^K<;fxwJm zU@*h@;TAE`OaxB;7l|59!tGnMHwyjZ#(CFfVyq#mVo^x)X!N>X%vI%iCT=Fmb}iLM zlaT^rMa;SHIo7gmxO%>3iy$iNoERJDgn(gS{QB#RI7JLYP&-uA^;ranF=`Nnq!G_A zml4x6Sp@Ze01(dSH=NIJkl|$QqjUW*3`lONYQ>Y)rzdHL|!%$~go)3JUY_*f{pTt6qNLut$c@Ks%Np$oxzVq5)J7MpX822fJnM4XV2pxNtqI#c~eLCGDsKC1}+9?&Q@gqv%k(hUgXl zR$aQ^dm%|LR0Wl(BMOx-hX%|Wi7_u_ag;irJy8{-tZmHO{?-ErJ{qrPw{aTn@LJV6 zup8M5-R=mk{5kslPv=BiPxhqH*85xP_}RZ*x4z?=1D^+~{@ebk4M6RO=I!R)a0DUA zeMzGy`s788WRs&w);=>TJfbtL9)xMkqEDD*(=EqOTEqzXE#n1Xrr{ za{^H@IfFzA^@zyPn_;`%4QvGy1OY&x2u1=UnHfN%gb|!Ht!7!Syvhl~G^fbu+vHJ|gx1c5&6)|p&4B&?A*OcwtxK)3jKZ^hu#|fABcbtX+fe3+s z#I}K@dhIzH*(>(hIn2QK7)a;+`rN)Wgr?*MM$E|gI(G{!l3I?!rjBFD_o1it?*j)8 z960cL*zzs9T`3d1JhFMUPPly8uFw4vdrrTHldEqnP8J{X*R5r6)p5CT(e7n+Z&bh8 zL+|3x1CMnuAJ_(YUOkHyWl=&wtmH-(CBn0kWku3sHlY6jd>%M_5eGgTVw=jPZ030G z{U}En*8edCsZn8bgI6cdK1vQ$hFA+i0Y(fE_;?&COVsTTZU8Yc{=6HccS zPNy@5VaOZ8i71n#lBCLxdA$Kh@F7_<*2Jwe)drp4eijKZ30=?)4^ZEGBc$~=>w@;9M?|W{3 z`#sd1y1a*6S;6lS)An9d2V8w6+?0i+LHho-_XkDk&Rp<4*Wg7N0fNGh#J$L?qY z-tD)%uci6{pq8lT3tyYaxo$E$k4mO{HXos83Tx%pkcAu==+gFcTuvgeU6z?w!s{XtFJF=k`)Sk_=ogX=ZzDMe4!bmL3 zE?oN8Bw8IfaNwt7o2me`n~9ttJCCB%mUGN?1r~Xi2ZZnoZ)YXVGb?F642&=Y3?YD- z7mkIJ@I;NK0@@LG{*_Rt3HE2S^w%?`-M^C&+f}JI=L$5+6;WC!;_bCSAORtQXaZG{ zYN`=c8(Vu0qtz6Q-naf(Mz;v_v%cq>fD+7ctX`lJ`H*UT zqDR_4aNxjK!GHSi{}un`|M<7&*vmSQ4tzc;qS=CTCNBAxj3Ey?j^mM${ z13wd*9V{rNq;u#|~8vx-n3`hfkQ^FJ@Xd013kYWS{LQ0Gjm6WZ7Y<&U|!8lErV#Ij4 zU^rbYD*Xfsgb;>o>&yL9_7hj1ifluZnH*Whl=o@z%tvCjPg7trMc5ZkN!CVr^=yL9 zwa;H{9=#FE9FVQuA_yTM##0Wwak*S@It}>s>ladtND`4!#5j%^#|z%yC&ZKxrzvOZ zOG*C7PUTT&U+O&`I8dQXH!Z6(6YFOI{~mg8yQc@riSx+$bp>a~*X*3@$G5M02<|F+ z|3#fJK^vvdCf{4Gp}lw6uUprf#P?kLY?)v)%DwJJ=pFq2xYMrDE$WV9b}ga%y89ns zx#_2_L-+8`ioK#%Q0qYa;K0oo4yV%hgH#jl z*8DkFNb9H$G~2#j(y7+>Stf^a!n2!i4t!_yiD_$5AL?_v#+_!zoPw#O3l))^mRY_5 zdFs329^>`#77x50b{Ha9&)*dUfM)Za`8|@Ar%I53lN~eiG7%7%kc2Pe*KGeS7w?d>m(IB!H%m3J5rhJX<*l`_a35yIGH!GS!Er-Ij@MlW}#!0~x)@!v|g$9u2y; z$+&)(s;{hf_GI&6LeaC6M~ntkUt%^LOpi~Kl4GYaBF2QNsz<)B{R_4kW^2~XzvMEg z_z{;Tojy#D_DJ;I`_yeEcdR7y;7m`1M+NuHXp%}>s13*hDLCz(gSO%mDh{ zi2W@WD$RcMo_%Ip>$LrHW^wy;eXiNLm@zOT3HoEAp-YeA-Im0|S2t*@yPq2A%$DP;iv3h*#_s<-j zJMQffnPum?DEU7(-b0`nQFh*Bm)0t!Ua#cKx(C-}$M1oy=iA9{_fI{!xl@$%PQG@R z7kwT3%}E~%Ql|nP8oFd3Ue6pKux%~;l`EXoLHNB`RTkO<(}uW6HVzw$(PaWZdI z;Kk#WByf&h;%*s0dz641KbZg&p@euP_|`my(pUYMxoT-tC!gP^T9WHXS&(AVEGfC$ z=hCS4ox$ebuioRk<8cmNlTp_}yb)2P^MlyEmm)~zuA^C;eSc_HBW&K1YM0bxV=@8F zkFjx3h!X;oND>p_%!Kh0F-`8oGGn_4C=sS9L1@D1G-M}RvglC)B@PqPie_=GIc}7s z_86Q+vlPVI)0}T5vjfkX5Z9ludEd31OUUyFRl8kMN_c-Ck*0`on81Ov{0jnTAe@F% z*1OdI%ov7xQw8O5l>3U_xEW7t>mq})le31Fu_5Wx{MZJ0-urr1wr+a{X=U8eRV8# zq-qX2aNxj!pNgx~ceQrgyh)ARMy&|43F&_9-*%@%ZbN@vD{1|bj!>O#dMo!>tu8Hf znH&YRw=UK9nq9JDLzb#65y2$Uf2hvcq1{XMJS%4F)#L4LXKnUV*Il=B*hkx_LhSEF z$~nor3&bEwMO;KBeNm;O6Itda&cxbcOOeg@WHp13+EudAdwE9x+E4Ue-$RNx@b$2i z-Fr5L%0c2f(TtofnEh4f4%}J;%Vd{CFhw9nCC-mY5M3{_`Y36)tcgV{Q$19mSu-o+ zS?|v}@}`*CVfa{w1;L=aVTS4nyRoXg&=?W3qDa9A zK@+IX=mB6w|9ERkMOE+^Qr06=nuk{g_2xGWl z7zPZ31|bN{fcdV8N?nM#vB{LG7MsFyO1Ix;4=HA3>8=1$=Xj`!k(6bwD!x8SRQi-N zJrFTS^UnfO=RNiQUDvCvTugCAPV&25L6&a?%&hhqCV&D41S@3#L~uF}h%w@HI^ldi zVH`(@XvF$yinv@fbAY63EcVPOUA)lPJ&^HSLgIdz>K-Y~vp5iz&(qDIS$}He%Gws( zO8(jXaI@l3beU#Tj8u1;=`_xX5RqklHeXZ!$Nn`Rm*Hh^-`XRCm(4)CZm~HHtw!v( zzg?e6=g`8$d`p!&bN}`0_P@uy8|PQ=AzIqX4?h%p+txD9tgP>=rM+MiZ&hirIbbQS z-Gq5ijN58($BMG2Qerj_H&eJgobPV75Ew^+)t_6)^Hn5zzjd=NEQ5g@IPer~u4PrH z{6;%H2*B`y^XW^Xq)P)bL1FFO?oRUOqfT4bSgGa)7Mo}b?}G9Ko(UU9WZ;_gfTF19 zbcxamuYEzbkkr-;zH`!a^Bei@v5wL3SRYo~yulsakU$VpL2XT;>fU+fg{%obd2C@x z&dSjw;n5S8LSxU@A<4(9%oNY%gKRk=_72}~v_9;|p2n&@Vn4af4m=TS6VXfP*@DDKP>iFlj^za-#&f;q7Ok-i+nqnL3!1 zKz}};aXz0jdA`YjGGB|(IvVS?tRn+S<-pLjtDM;*%nR)!(UV|}x4MEhf_cI6z8bG6 z!Q+a1OnoJ&`_l;su_{#nM1UrsBHjC)vs~Gn?<9J6sp@?^y=9w5T=Mhkxm?|%HYV56 zwTk>B*@{rEfgkEE%!2(9LN?GHb%OpTh^+}jQjv!=1%SaVBvO6T1=Qstm(O!AHeyL2 zf()7_+oNrJnPRt$lip86kYH)sV}e9C&{LMvZ)%Sm1@5-3iF?$!13n9ql1 z$^c1rDuX=Zi}!MwbsU>GD}A_jD~Xh7b}8znkZ6(bV$zLNDcS}S=sSsa@0%RYF9?q| znPSquQ?>hn0|%afN*+4K*=u7RaUG z*@|ArXX!WwDf& z@1+y&Cp(F2WS@hbqcSdKeV<9?+$Aw``;8TOh`QaejNjQotl8f`2$g;N=1Z#o-iEt! zP8@h5M3D6nw-e^g!$vOl=*C`sp6 z@mb90GSj=oiSww89_?6{xlZP~=Uj!Gp&4SPM$Yxg;*<1Rls5Qm2~3*IYNT!DZJCnk zp0SFu?s7*V(7O%Ib^8$52+h*W1MV;V)Ol$W_8hZ77#xax1u#P3LZAm3Ia@GI6UK2u zoK$C@k`cV4AWabykC=uLAp{H@z`=ak%m^I7B0yyeY3xR}RJ7Jyt@CQOgB7VqLm;%a z*DP&id#H~Cf=JoKKTQ*2Okh^K4ok4ImYX9==9ad8>B{TxNnDcaQ;us^)|AijHq*Wb z5DU&c0H*=x(|~at5H0HeG){2~qO zy|>k=l{$3J{;}hVs=4nvn&2%!$IsMLC{W~~Tl;_gYM;EJWv{PnKjFUo_xs{;<7d-_ zxc1vUw_l$=9*0$*(Z1uaip}hKF!4>QP01z`k!U79p!l)Lf=am#G?)Bbq;>LOn5C4N9J>EE)Nu-k4G%1$T_Iuu0pE zKHtP>@#@&+lKHuQ!~?Gm+G(`C*+EkrzJ(cW>W|%$xHgd+K~ajr#6;i#ASDceF^M3> z5{Wq*gQ1bTg_1jq`3zUp#S3~5kyMO6{#voYEKcAP?;qm*4v zz`oUH1upNt0J_m`oXnITnP<-EsQuEM;EJ$HUb0@VK@bZ0D#2wt+EY= zG(1;Bf=Ef!aXtYtCQMT(Q8qyc10f8IIB5ho4xyUoTU|t& zyDyFXue;{DV=*N`qJ$&~0paR(2M!!K@bge))J$MACsx_Zm{ugA%Gu>d%!vAI^Jk-m z_SWuR1-x$gOC{mC+|qf{H92roKHPl%#?7*RGBtnN5@yeQ18@4dki~}|4>A^glX;9v z|8v=j$n+boB@aqabfOr6DJ8^|Fgm&0^;7cEYL(by&-d{tX3vr3++CyCLC7Mq z-*}I?k8&rT83lKKpJXI@jliz&h650o5eChy5s_@}ghk(X9=Ma|%Rg0#>JD<6--=zdt5Iwdq7>3`v3*rv-tu&REYjHUkH|{rZ(_Ih`g<(}ZC-F)t;|k9#imZ;a=0mE)muH;%D1Y zeh`}MQ`M*|QRnlSraRf+jrV#`tqyzy^2UwK`S`xQ&fUzz_kPSD41w(!Y)J`z#QY{^ zSYZ2HNb@;bVFf)`jO1dm3P~00VgN^TKTWat@hJrld>*c4B%sdm`g=`IsR>*)w&pG0 z0hK==IB?*=733YhJA}Vv?6f`3lliH&l3GX2(`ewn!?@jb>%luL3xpoo{uShC_KM8WsaQjDmqLd3$n;8{R|0*xJ^>W$ygclk6B*hqI?&wg`=! zEP4$g8F8KoM$`t_(zoYGbGck9^VF>n+U>;MaHHo>A3~Ua0Fo3pF+nUF1|tM00iFRO zGs!2>_DZ4=x{{bf)!ruofI5oxS|z%NM4*u{3=zYiLRfJsX-`03xvsBicWG{nkwav>YoUNJ1L%&(fslc9vxAjfyBj7PVcn z)2c*=(mM1%zZP<=JKJcJVnrS}aNxj!0}JH&F%xT{85x4K6zo z7BbllMchgNJ#gUFaI^N|M0C4A^&Qm-8l5PS2I!Df=|liPwHj9L@3zoeW?NY!metj) z3BvZzkMq)w_jv5o=L9<$N^7^%4=fht+uM7!Iwj&hfKN4&{jmnzkc7OSu|?Epvw`b( zW(J3VI8BYcBu3A2sdmi}CU^$E5CW!Y%6@MpD5Jo>yo7rXq2VuM%0>U~e0 zvkt<^uVMsxjoO}4LW%<71QuTdYu{=BQ1_AAHliC3$o%@ZAdkm-V2YT%M6*}cVKj78 zskU_@y;tI>k^hHN9={)$?yLQG0Ry`>*mF3xQ2pSc_lz6Tp&;yz-o~cX7Kk(g9FXG$L=5wY46a%SL z0>4Me)b5>@>%UYc!>a$+DVz@+IB?)=!%4_xK4m5h1Vj)5GbqJu`1bR@yG*x?yhFAD zQ2#NXa6Z4`bQ-`xqwT5_MvaYaVQAJ6hjg9t0OCL$zs(ud@2}9_9o9)>!0UZ>V!N%G zVxNt$ize2$dQh3&lql7DjwY)}ks>|9wki3LY?#T{=K z&F-(AFq$T@CArT0Xruinq z=uzuE!n`%2JBst>Xsy^P$wB){f-tM@_G%UoB7_hiVBH*IQQH6`H0J1tj0nqGCCL4` z^l6Lw=lXJXP@!tavO&&NW-zGIJ3glg?t{+1PBdWQqJt6b8rKI7ydIWLg8$dQ`@i7- z{eS$o&#BG~hYRD2U@k(}pUVPK{doPYifyEGiEWRw@ad~>Z7POjd0c2sLYQ55>rJ|a z)frBgdW%$Ra(mSSs&wGP@Sp$3|Ka9yo2a%zNX)8l)_#fH0Uor=;=q9)1og{lhOU?d z5+_6_u%gVnA{r_o+ZxPwNK`T}mKgLJ;6v36xs61>igsLkW(b1ovfp#ex5RN#+W;4W zbou#vJpWDWbrzQ>`=?n5r_%{Z1Uxb1bV8gWV$^@knwgP&!+46et|Y`58{4r5RtdwP zfd-g>#G0X@sYpU1&i#)`&rwqUKH0+wCNI?+eCB zTHC`n>Dvbm0EO_lE5H^CACdq-biGcMvQ}Hv%UY{JE&0Z^SE~OWxQ@GQqA+*rm9w|FdV5}G=4H!Mr-|!+_U=_rsL5+XM36uTRN2LkMV zWmomxd7S&~-CqrZ{`tmF_`}dFE4fFPuaX25N+erPZD(3H`s8_P{?5!><-b+L2(HP} z*PJm2{um$L#yMnAeXJ(Nm(S(rmQ=3>(Z)jwfT}c>b<~p;RFURA-C!|FYq8NoCXlsf;+1-V3Dd_l2cyu9X!SLEVdKMP6aFn)>ZTxzA}W) z1|OkMAX!HzMurGLPD!q*$q6JHZJz9NKAy?+37}N9OadW-tqpkg?Da->Lg{-8sZy4* zN?-E49dj9VQTR84lAK}kHgt2USe#7{83AO%e7O#qW;s}N@(9!?ix8$5jl?ch)SLSu zLU|nBbbkA!i{D;6Wt z^8Rjea6(KGmuW;a2V_c8rY;dgQR16KT?L{DFgoeMbOYPuJXjRAZe}PW+v`)CyAHB^Nq|pEHhjyiV zNPFw$nDAk@*OUGM$ed4Gt3;5a&?DH!jRQBs_1bT?qb&EDL?XVSV6Facuxg z^_R-WytxW1Yr$4=?pWwv)34Ay{f?+zN=qG=rFq04e@<~7!q>A!EqgZL8|vHrL8`&k zuiMQ<)%bt`n|;1FEd=M|pKMJ3{Vds&nsOWy`n@?J97*2-f%GS0^$kk<7pp59V*5UO3* zt;~?~bqrqo9d66LtK5G1>{~deKLpwIu(P@Lyu(7C*Uh%i!aW%>zE`}T`NJBU76N$3VrrG=7ckm5;?O(o!1N@;lz0R^@g`!XC>1A`UOzR zPH-j$lR77d(|~X~VK|@d9VDbQ;XGb2j-xt+Gtt2v#gd(u3D68olJZz_0zE)ToDini z=xcy&cqRe|brQ!I!2w`RTeci{vcsJ~RBh1NIBn%xz2EF^WX@$`Gu&{FEYAWYq#Sua zQ9?=t64uCQHo<#pa`)S29U_zI>liMJ+H6Kw&h>+| z*qVJ8*6O+@YTmQbK3gT&s#E{oMMvw)P~VS8u&_VT^0@ZE1gSU3lTzfFDH9g`devV& z!&&9aaNQ?=m3p}6_qE^7C1#HKUhn3sBAX$;IQqUEi#NMEnOBAW;{+v;&$RvhG%%xK=svepA*d15mT&t35ag*6B=ZXb07w- ztJ;di1mz}hLA42>Er;PNHcIrcybG$8gtoMY-|Lld ztFHuT^{Cy{{+-?RV?u_!o*n&FakqtF$3=OHdGc%de%6ki=uX)tXP9f0}vF>i3r~Rv6 z?#=fu5g4*Uz0w$oov|fwD$z$eSGSBNG`FyLN8=LtThDXlnJP!S5pqm{1~f8^5_-zH zL>>iK0C;4;Yl5$(hhtvY3^${z_Y8(F0CG0X&5#x0zh``-91%g^^#DQykszfDd>QpF zmjE-e01)1#Waz?M2wAnhN9IJ6B$+f6n2k)-H+cAU{?{XfQPzxOG68-=c;(;p!qE+%pY+?5Q7I#6^a&^dP?0Ox?15~2p6#$;8ASkARl zeYYXi)=2JAW!6Q@=k*5Ckx2yR0Ok`sQXQC-JpcAfqb!G@QIr{3h}IISXvLC16c#p2 zo%gkULGz~(bMR5)z!lg~k|G=V{6RwcV(KR$Glarrrg+F9nai>w;?e3Y^1LiZe0|?~DpXl=o2*%nZa-h=mbQ=O z@?CClLjkY##dXDOz6tLZY&i(}zfo5K5?I9eUH2$$E+R_0hCtY&P?^Q6^uc0~EjzMB zGcl7OkzT9)OULY(+Ux3`B(`DXmexw<2os_F`6}f4R+8SmKZ4KFdnYyd+BxPb18daz z^LfDObi&)O6aM<^FZ}h_FPz`rs%RbpNJ5keiP+wss4R01I^T;x5`#~SQ#v>IPbuQ} z@4qo#CXCah4p>Tgj)yoQLL&kY1k+TWhuJq&C_yO%1}Bw?hG77kY)YO2oNGf!euDhn zouu_lKqlXL`e8{X?V7$wMiLO8?B?z3H|ey0a+$z>A_0)R&OqRx;{@thzg#BJ1PCHD zt+^3LywBUjZ!UJ@CsgYO&78v(xnDO4SU>mxCr7Ix|})!5nxF?$@oQ^J)LJ z2j-x~r+#Zu^`CCkbK8`)es#SvVfJ0xd(33`%@LW;*EOPh%1QyxUKVcA;Cd}a`M;9w zEm)IIY5ToB3`=pqD^OLTywf7D-hiH>1)zlgliA6>3AAJ*Yi`wCQlc3xc5F`Xvz2h_x;si)6Da#oNO0f0s7Kz?; zAR$@m=*|(&?(~(}T-Dh9 zw|sS=YR+ETkE*luuOu*lfe2@2oK69OfIw>J&v!CCm$RN($|h@v91ritMcB&4C-e=DsYF0Ep;@2}$Op1>zVH zFB(Z70Fq3I<_(zJPz%o?VBtrUG7eIVNX@U3=bKaoU(m90BWm+7Aq<=YED*7Fv7}{3 zX$3VAD)yB8>|z-Lbu*kkN5F7m5WAgRHxHm=KPfHPVrz`9%|h$`+^xR&s5OAQYwtaF z=+DMAoBHEqjN99U@|v*JGW#-}2Tz*GfwsQ-TW4yY$?ub8cp>B^x2s>R8_j#v7=e0X zymMzSGkN5BLFz3jWjS2nS|Gy3@qTq}o_JnARonH37QQlm%Es=eRSoO2$~vAord=mp zKkkLUlf6%W*T#w6SM0+*`&{ms%RXW*PnB)#cHDk`Jq|x0_rlKeUvsV8%dMNs zHqB>I9e_v>AQ(VklQ|h~TcT|D@ZP{wRzWiPjDg0uX=1YJQOcnrSXMw)0E_=isxiQw z1&g_oINr+nXicMq9uDnu?^KW}sw7Nvm z9arVL`g6l)kcFPi(!!6oHa#Pi| z7+2|ijm`ELv-b^l>47hRJ(KgCL|==f;Iu{Pw3g@XDBr zXnm82ecRBr@4o-abfcncPav@xKcOzK4u4ncV)cPXz=K>61c59X8-OVg#z>e52;#;! zB}~ryV&!6agjwZ}OSt>KnEmS{v`X{IN8bNBR6a> zRl@EXOHTMM*LgdU)FZ`9ag*H22wEiw)g{ys__FD>x{DF$kx&@?1Tu#!Q-Txc3Dsxv za+8tgwS52FQXm8)Axx1iJd-Y?MW-f`?-M&fH>hfrAiNBdndX* z&FkGnCT$ermC1b#PUd_mAxO$hEs|$UKp;l+{z?wp*MYU5#EvFnh&-rqYl_nASn>P-`-X#!0b3-l!z z1}@naJ&Rw|Yye|Qh#ZYTKOrz<7zU&m5LvUEG6#e(fP>ngb0meedf9qZGG-^+fUWn8 zQ$&nY_H9azJP-8epA*5$HbxW)nlz#crG~ z^EjfSZLAVnXVd?7!Q@+J;2l;sEER6W>)9K(aC;?v&X~^w54^>7e6cPp?(gj!KhWZy zA@j=m-QM6|d!OZ_p8b{E_!-#tnzf&uEbp6!l`vldHU*+Wny<+7o<*z6k*ejW9p(}9@ufnKOA^nWFpnl z*w)xi+Dl3_yeiO~Zy1-PJ8Z~)D@wzk^oCh9iU;9vNAw{3CWAk`m6Nj+RTQWNiB643 zz4uijFzA`Okt5~bLHHOlheL5vN>;$@!`OMZw~h%F$kw2 z;1qSfoRUVO_UQE_v>?-d2b6u+0T550%h`DtQ&N&3bd5+US>!Rwk#u}Y@tDbT`%^7b zN$2;jGehQ%$JWtMW;8o)a-DPT+XzClzW~}S4AQBClHj?ys7Ig&JjIn~t^vfN`3Xpr zSf7=0Deh{nHXqDED_^#X)3Za%DC_-4AbR;%kQz-h~Z;R1em61j?x6AglKgih5%3H?d7sX=w6GARvO0U zP?Om`!a$Q10p4e3`b56r^)*atHXAQV3rq|SjFfb4i~VB01q7|#D*60QTpadkzd`-L zfvJ{A34v%>*Vj70x}#zK}7B~kya`IfXf za&~OX#>e#uJ8)MM(A;iP?0otv+EQH)i!oxncoxV4w^f#9OseBeN!i{~ANQ#*+ZewM zcD_rq5Au0H7#Lwv8-Qnc@NCvl|nW1LS)m=_>tAr#A&dOn3>lax3g1=-)x#5l-RIo93-4}cUK_5Qh%av!y# zmS=E#{l{oyww7rM@q!OgAg@zgSAzB%;m?Bhcsdgh(U! zSLDrJn`spKlt14#@eop-<*VAcn8bx}%I9Y1n)_I4MFV!gN%P`_$fOP-r~{-vp8zm> zy6U>Zsfrww@)eAz-$`<6VvY8d%xP)S?2TaWjwrp)Ec%Bg0)2D( z_wo$hg~q}30L)X`0^UDW8oN0jpX(YoAf~u*rn{|T;DFOGlr-Ct^0_f4MB9uNCjd!wn^GW5W6Y_%lW5v) zAE#_2dgfrxT3*c4&L7B*YVs^9Wc@1XoI7VmRrAa(Jt=Pts5S_=(!wDigaon3e@sbJ zkpBP>+N=`pq}R;^9}&s(z=5xbL+ku$p!x$<61yA!$@qDX6uKUTD|LFsDj#@#JW?_* zG~|2xOj3%#b5d$EifAw&NZl z+e!ccCGv*B)+Qy|>9rG>2vbTX=d1j$1p4C7$>d?D(0<|Wol?@Y?Y7APK(EK&FVM6Hhd6QyEn>9^bK7p zB}~(VXoUPrjJS*!JvO-yG+zZLrq9Wp8dpKG-J?hT%u8$jX4wh35bO2(01tpxS6Cp3 zF`Bu$CeQnYQW1m+9sxpJSgwvI5lrKVlmKF%b6B6l+Qo^%WDV%Hi$YMY>d>9AzVIY= z;3cs|s-F8d8oO)7tiR^V0AORsasi8Rxbz3L6ie}sC=cV9^A8+2aNs9l%h!J3z)R!9 zsm2{2&W2k@H}_V73VN65ZhZ`gd+0vM4ZT2h<>#e;%saWSyumsOz4EoFQslJ+Pvchl z%P|#yB|L2mdvr)Mw7U7Fal}#c=W2OQSajp<L@!0Bd$834v zGeAT*g@7ppq%D{K5xOIUR4M5Vrt3mMHE-^ ztdd#NY!WddyhoDG6AN^;VXxz-&dTBugB{s^=w|oko_T)e`h1kJCTSswyv$V z<`X8zgUE0N^H5|DfXx0r1K(xNA|kxKz2$$W^BF^MB7ME_rE;#?|8gVv#uYu$&Md;V zfHc#Fl<~ks;8dcodr=J47l*e1I-iT)+ca{ZxVZK+Bk?_HfCUXc2432|~W< zZ6723nKNu-+&}DNI0p3R;(z@Q|2}`dN46j$gusvlOd?e_vMZCd0Ly65x88HRXh3Dy z#Rl>N9}Ksj+%u!@=@<`Io`Jk+d3laUrJgczK9lET%6^kNiv}-dn+ZIU$0+obI2bd%L!}iu{0komejIG&wc+qkNN!*);S;V ze?IThOx_F7jU@p=iSjwqo**zIrl>Z8#FjF%D9IANM1#xdqGOCZ~5p}RH((q!e7t`Lj zq|_M*9C84)(vGB|PN|L1n55Vjl>SiG?Eu2*q!|-^Q;D`GfAHa>j72M!!~9LyeK9MsL(#exhDz@cjFfizZ*J~>{} z^A}x_ebHvU-Z^TL*&|XC5Q%3i$XG5;u6-PW?aSgxuV$e#s>P;|>1{j|BTT1iQmUAZ z!`aAEA_Qk6F^XWd>~e>JoI~JQS#Yph}Ui}{`*~}eHeptV2H2Lxy89~2^Do>>3c`7?^3F`hKa#Hc2PQt4&KA zU?L10FmSM`Kp-(eERD9g56v;EpYwRt&|+vZP|VuKr!gIqoTI|~MpQk=$Poh2V1KQ= z9Ca-f;(kn)PCQOX(}Wb2STE)<*16TnG=7FhGGnsT<%r-w2+Rn>2_cjS{3#`n&&%YS zwrvhJ!U9$Qt#!_8`mU-aRLxyA;Y!Bj`}#8by!E z9CW@h`pd}!2YxDU;5dHjJwBp-KNCJj{YmR?U0aiis{1WO-C6qA8|Ka{TFXN~^$N8R z7V>|-C+Xr<@uS-L8aZf3N%i>SfB?}K(^UA-&>T}s=2=GIAmvr zxaXjWC~g1ov0bRg)IEP$7~sK}{3~XkZmSb^q}p3UGMj5(xAZCrd^3YS8!zOED#AFm zcF;OYfq$PzL;m`jU2Rxhd516l$$=*b!2AiHw;J`UU=_#Eck}R-*1{a9YGDO(8 zlbCEn!w4XOBtbYpI3P)|iut>;iYCfsPUDDi8ZnI#(`CXqDp@~SUr?GsL|}jecMNbI z$}fQvm)nVe%yyLfLuDgw^?u3O12sx^+nAxsc+m7MHcf|%>4dL20MGtiTut|39UAb$z##bz~w!ZP>kb zO|9rjQChdk2Xr@l@AzK0LB_##BtPkQrrOX~3^tV!pn9gP7|`vi$n`p}Y)V**JU|~o zv3gB7>80*lO+Rzv9bg+SRw6kz2DfEvdS(JLt7cXMNuwQSAH}?{%=?xdOH~~`ed62* zc-!;;IU2IgftN=nfKm0?k5e(X-)Oa_zq3X+>b45?pMT}-Rb*xax*L`r2Hynu^giE{ zxmrh1^Ha~+3LC$(u0ZAxCzI#P*l^ig%!+@VBwI(L+tnnpW?KCi@9kP$n`rJesCCHy zIjH+h)C-z7>?nC&qrN-gN5?DxBqWbGPlTMiH#<2~mU|RzBxsu#Nu#T)tgepGRPTzW zYANw~UThv@bCF_DkEHqWx0ex!D}` zf)IDKr35hB1}!$yM(zZfVF1Xw-hn<`Cq6bHyb9Kd6E{VnKk#x`4yz4vjA8lfQa+)) zT9otKxo&o!%HAN=_Z9JC{pd5N3317-Hum27p>tF!#CS}hA=6a!K+nUuyp0pHn*2LO| z*Z8dFMA&+XbbXb|KfuN`_S#q#3IUV_H|Jj zW;MH9=Wv}-z1^gtMh}93gv#1Z(0ShU-Vg{tfP@nO4InU06UOm^ahwpRmP99Ak(q^JxT;(N{Ca$G$|>68r7yE(dGi1JKTmtfxxi$9?QF~x$zn#h1GV% z^%|A3tqC)-Z3v9h>6AC$cz}V@RtlY4s^A3dk+lI01XD%XU&zt^LbMEx+;1C$A~22@ zqy!M3)Xx0=4kBQh5-y{%hI2lS%HIqWBJsQ&t-A^G5FeJ@N1yg z9rkJlQvIh63aIN5fs&1@PN8cAdiS^8qz~uDPFY) zRZG~)Wx)K+f?^vx@RiZGi_r@EO}f|QUbq-q>(+bMXCA|{Q<-bexvn?dK2Ah{;k8}9 zuY{RmCVc@~&nX?Mj+(djYNY<};-m)(b4Hq2t$O!X*+S6&sr~ThSb5yFiTS7Z-K@^c z43do@GusC4ap$zgklHzP-IZD3r1_dW?*?M6elf24_bohZp+0n_FN?mJZpC;9VDHP$ zHfy*cV_D))pMSm`_P)@k%^!u};R2~t^KSlRPB>}2GfMvZpE%4Tg|A0JZbwsBeD`xTI4Gy+6|Bzy~(EBmBIFIXB$E6Zze_8NR{!C1du`ua)&DuA%uXG zPDn8#$VbOd5J9s#4iB>qB-T6EKPip#qLmD zw&aV+2_K7Wd_Np+FNv2KmoHP1Z-T3BDV@*j*4HBMmk9JKY+cj#*C-L6G-v+ge)eIq z-p^{_NB897GU%0Dja8S!D!)kJfZ?S7PPQ4X*Hbz9rxsNA{t(Ujv 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�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�ZFxdphz%|` z9p4z_ZZc%4rFY|uqX7e%RDDn8o2a8P^FIhn=&bkMqiRIPU4CO|<+p~+0?d3{u& z8UaXlb-=a7kr4q^MS+)_cHlku*$OoWuT!ZAonʃTm-21SU^MjRpKv5NH97^#_L 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

    nd!{hK5Gd0H*rsnzG#@W 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%0Dh6hODh33KM_sc2|=m^!*IML~T?#(Q?S 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

    k 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

    (k2b+cxsOJTvv*Oy#aUn6B|q;yp} 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

    &Bl(I+NAdeKwUeVW|E=veH!gU%O5W;{9j3b|j- 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 z z7yS&{NksRf=z$I4Tv;TBqd?+}Fj+}}>*IU&9Q`HGvEeyc2dq6$Sr>+Ld^w;e!EHCs zy}9qA1M~-s`8-zO0Tc&r8)GHh_rV2C1;mn%x`4?0#svjb7|v_ZxKTo4aS~#&jFp<%cff^2Z7f;qna1G7snL1bS;GNW&4(jY0OF+oJNqI5q%vaI zMmjF?_y*iKA6&QHH{9&73Cxjq2lMKqB1+ygY~T6Y7BXRWOwUu~^ndhV0pEloIFc!L1XMlYk^`yYrU< zVvIMtHh0;??00*7aBXh$3?MuMT2;W%rd&!L0QneL?BONaD0E|sxHygxcDlTkxy;e* zKz!xW_s_vuvaAV49{@0mGw|3ezuupH3K5%%X4jt`)h&uTkNR=a;Qnw{AcuNv0x}=6 z=d{r|kG+@_HY2Wi!Dnf|jFaV$01+&5YmpSGy8evBk!9&960rast=CZb4so!68vlUpAy0e3fdDj!x4y2mosd4yu$&M; zECAPKSrAhayKPK42sLMz=JGqm1Z*2Dqx1BU%k=4O%agTY@7W)Xe>w?#oZ13*6~gZ$ z2mPt^+X4;w=Lw|9Gk`t`B$-RjGv|E!^H-|EGZXSMwIIv z?l?7}iQrMz&2uF7v4PC>s;NK(U(8`a%rdX1F#?D#!@AL(s>0yg0+J=4#tO%~abQ-mDJ?nL=t z5JW=-Ecj|7_n8@rMtquskYPqf#2r!U1 zf;l3EJJwν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­km|z^0Y`-RlMoH-Wl=3xEis0c-`JgpK9YkfPaH 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

  1. s(j3wo5uY@W3}e#;Xi!`DG!FZ>#NJMYeqwAX&Uy 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 FU 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 z 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

    OyMH;jeaSw`H3MyA)9>9v_xN>TRHpt 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%0A)YtR}$w`ZXJF$qnI|N>gZdrlT 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 z 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 9 # Hopper Compute Capability == 9.0 + return False +``` + +**Rationale:** +- Device names vary across vendors and regions (H100, H800, H20, etc.) +- Compute Capability is a reliable, standardized way to identify GPU architecture +- All Hopper GPUs report `major=9` regardless of their marketing name + +### 2. FA3 Return Value Handling + +Flash Attention 3's `flash_attn_varlen_func` has a different return signature than FA2: + +| Version | Return Value | +|---------|--------------| +| FA2 | `(output, softmax_lse, ...)` - tuple, use `[0]` to get output | +| FA3 | `output` - tensor directly | + +The code correctly handles this difference: + +```python +# FA3 path - direct tensor return +x = flash_attn_interface.flash_attn_varlen_func(...).unflatten(0, (b, lq)) + +# FA2 path - tuple return (handled in else branch) +x = flash_attn.flash_attn_varlen_func(...).unflatten(0, (b, lq)) +``` + +### 3. Automatic Fallback + +The system gracefully falls back to FA2 when FA3 is unavailable: +- If `flash_attn_interface` module is not installed +- If running on non-Hopper GPU +- If user explicitly requests FA2 via `version=2` parameter + +A warning is issued when FA3 is explicitly requested but unavailable. + +## Usage + +### Automatic Selection (Recommended) + +By default, LongLive automatically selects the optimal attention implementation: + +```python +from wan_5b.modules.attention import attention + +# FA3 will be used on Hopper GPUs, FA2 otherwise +output = attention(q, k, v) +``` + +### Explicit Version Selection + +You can force a specific Flash Attention version: + +```python +# Force FA2 (useful for debugging or compatibility) +output = attention(q, k, v, fa_version=2) + +# Request FA3 (falls back to FA2 with warning if unavailable) +output = attention(q, k, v, fa_version=3) +``` + +## Installation + +### Flash Attention 3 (Hopper GPUs) + +```bash +git clone https://github.com/Dao-AILab/flash-attention.git +cd flash-attention/hopper +python setup.py install +``` diff --git a/docs/getting_started.md b/docs/getting_started.md new file mode 100644 index 0000000..b157762 --- /dev/null +++ b/docs/getting_started.md @@ -0,0 +1,430 @@ +# LongLive2.0 Usage + +This document contains the release commands for installation, training, inference, and utilities. The root README keeps the project overview and paper figures. + +## Installation + +Create a Python 3.10 environment and install the required packages: + +```bash +conda create -n longlive2 python=3.10 -y +conda activate longlive2 +pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128 +pip install -r requirements.txt +pip install flash-attn --no-build-isolation +``` + +TensorRT is not required for the default training or inference path. If a +TensorRT utility is needed, install it separately after the base requirements: + +```bash +pip install nvidia-pyindex +pip install nvidia-tensorrt +pip install pycuda +``` + +Download the Wan2.2-TI2V-5B components and replace the `/path/to/longlive2.0/...` placeholders in the config files before running training or inference. + +If you set `inference.vae_type` to `mg_lightvae` or `mg_lightvae_v2`, download +the corresponding VAE checkpoints from the Hugging Face repository +`Skywork/Matrix-Game-3.0` and place them under `wan_models/Matrix-Game-3.0/`: + +```text +wan_models/Matrix-Game-3.0/MG-LightVAE.pth +wan_models/Matrix-Game-3.0/MG-LightVAE_v2.pth +``` + +### NVFP4 Environment + +The default installation above is the clean BF16 release setup. NVFP4 training +and inference use local CUDA extensions and are more version-sensitive, so keep +them in a separate environment. + +Known-good NVFP4 baseline inherited from the Sage branch: + +```text +Python: 3.12.12 +PyTorch: 2.10.0+cu128 +TorchVision: 0.25.0+cu128 +CUDA target: 12.8 +FlashAttention: 2.8.3, built from source +``` + +Create or activate the NVFP4 environment: + +```bash +conda create -n longlive2_nvfp4 python=3.12 -y +conda activate longlive2_nvfp4 + +conda install -c nvidia cuda-toolkit=12.8 -y + +pip install -r requirements.txt + +pip install --upgrade --index-url https://download.pytorch.org/whl/cu128 \ + torch==2.10.0 torchvision==0.25.0 +pip install --upgrade torchao==0.16.0 +``` + +If you already have a working `qlive` environment from LongLive_Sage, you can +activate it instead of creating `longlive2_nvfp4`. + +Verify the Torch/CUDA pair: + +```bash +python -c "import torch, torchvision; print(torch.__version__, torch.version.cuda); print(torchvision.__version__)" +``` + +Build the modified local `fouroversix` package: + +```bash +cd fouroversix +pip install ninja packaging psutil "setuptools>=77.0.3" + +# Optional: limit compile targets. +export CUDA_ARCHS=100 # B200 / GB200 / GB300 +# export CUDA_ARCHS=120 # RTX 50/60 series, if needed + +pip install --no-build-isolation -e . +cd .. +``` + +Build FlashAttention from source, rather than relying on a prebuilt wheel: + +```bash +git clone https://github.com/Dao-AILab/flash-attention.git +cd flash-attention +git checkout v2.8.3 +pip install -U pip setuptools wheel ninja packaging +pip install --no-build-isolation -e . +cd .. +``` + +Install TransformerEngine if `model_quant_use_transformer_engine: true` will be +used: + +```bash +python -m pip install --no-build-isolation "transformer-engine[pytorch]" +``` + +Build the fused LongLive FP4 KV-cache dequant extension: + +```bash +cd utils/kernel +python setup.py build_ext --inplace +cd ../.. +``` + +Quick NVFP4 checks: + +```bash +python -c "import flash_attn; print(flash_attn.__version__)" +python -c "import fouroversix; from utils.quant import LongLiveQuantizationConfig, quantize_to_fp4" +python -c "from utils.kernel.kv_dequant import dequantize_kv_cache_fp4" +``` + +The release NVFP4 configs and direct run commands are summarized below. See +`README_NVFP4.md` for lower-level implementation notes. + +## Configs + +The release keeps three main configs: + +```text +configs/train_ar.yaml # AR diffusion training +configs/train_dmd.yaml # DMD distillation +configs/inference.yaml # inference +``` + +TorchAO FP8 PTQ inference has a separate config: + +```text +configs/fp8/inference_fp8.yaml +``` + +The NVFP4 path keeps its configs separate from the default BF16 release path: + +```text +configs/nvfp4/train_ar_nvfp4.yaml # stage 1 AR teacher-forcing training +configs/nvfp4/train_dmd_nvfp4_step4.yaml # stage 2 DMD LoRA distillation, 4-step rollout +configs/nvfp4/inference_nvfp4.yaml # NVFP4 inference with optional KV quantization +``` + +The configs use a shared organization: + +- `model_kwargs`: arguments passed to `WanDiffusionWrapper`. +- `infra`: distributed training/runtime settings. +- `algorithm`: AR or DMD objective settings. +- `training`: optimizer, batch size, checkpoint cadence, and loop settings. +- `data`: training or prompt data paths. +- `inference`: sampling and cache settings. +- `checkpoints`: model and LoRA checkpoint paths. +- `adapter`: optional LoRA settings. Remove this section to disable LoRA. + +## Training + +### AR Diffusion Training + +Edit `configs/train_ar.yaml` to set the dataset path, evaluation prompt path, logging path, and distributed runtime settings. Then run: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_ar.yaml \ + --logdir logs/test_train_ar \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +Notes: + +- `infra.sequence_parallel_size` controls the SP group size. +- `infra.vae_halo_latents` controls chunk-halo VAE preparation. +- `model_kwargs.local_attn_size` is a model construction setting. +- `inference.sink_size`, `inference.multi_shot_sink`, and `inference.multi_shot_rope_offset` control evaluation-time generation during training. + +### DMD Distillation + +Edit `configs/train_dmd.yaml` to set the dataset path and initialization checkpoints. Then run: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=8 train.py \ + --config_path configs/train_dmd.yaml \ + --logdir logs/test_train_dmd \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +Notes: + +- `algorithm.real_guidance_scale` and `algorithm.fake_guidance_scale` are used by score distillation. +- `inference.sampling_steps` controls the distillation rollout sampling steps. +- If `adapter` is present, LoRA distillation is enabled. Otherwise the generator is fully fine-tuned. +- Auto-resume is enabled by default unless `--no-auto-resume` is passed. + +### NVFP4 Training + +Use the `longlive2_nvfp4` environment and build the NVFP4 extensions before +running these commands. Replace the `/path/to/...` placeholders in the configs +first. + +Stage 1 trains the NVFP4 AR teacher-forcing model: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=4 train.py \ + --config_path configs/nvfp4/train_ar_nvfp4.yaml \ + --logdir logs/nvfp4_ar \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +Stage 2 runs NVFP4 DMD LoRA distillation from the AR checkpoint: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=4 train.py \ + --config_path configs/nvfp4/train_dmd_nvfp4_step4.yaml \ + --logdir logs/nvfp4_dmd_step4 \ + --wandb-save-dir wandb \ + --disable-wandb +``` + +Notes: + +- `--nproc_per_node` controls the per-node GPU count. The NVFP4 examples use 4 +GPUs; set it to 8 or another value for your machine. +- `infra.model_quant` enables NVFP4 generator training for stage 1. +- `infra.generator_quant`, `infra.real_score_quant`, and +`infra.fake_score_quant` choose which DMD networks use NVFP4 in stage 2. + +After stage 1 and stage 2 are complete, you can pre-merge the AR generator and +DMD LoRA weights for inference. The export script reads `generator_ckpt`, +`lora_ckpt`, `adapter`, and `model_quant_*` from the NVFP4 inference config. + +To save a compact FourOverSix materialized NVFP4 generator checkpoint: + +```bash +python scripts/save_merged_nvfp4_generator.py \ + --config_path configs/nvfp4/inference_nvfp4.yaml \ + --output_path /path/to/model_4o6.pt \ + --backend fouroversix \ + --device cuda:0 +``` + +To save merged BF16 weights for TransformerEngine runtime quantization: + +```bash +python scripts/save_merged_nvfp4_generator.py \ + --config_path configs/nvfp4/inference_nvfp4.yaml \ + --output_path /path/to/model_te.pt \ + --backend transformer_engine \ + --device cuda:0 +``` + +The `fouroversix` export is the small packed/materialized NVFP4 checkpoint. The +`transformer_engine` export intentionally saves merged BF16 weights, because a +TransformerEngine module `state_dict` is not a compact packed NVFP4 storage +format; TE quantization is applied again when inference loads the BF16 weights. + +### Merge Generator and LoRA Weights + +For the regular BF16 release path, you can pre-merge the AR generator checkpoint +and DMD LoRA checkpoint into one reusable generator checkpoint. This keeps +quick-start inference simple: inference only loads `checkpoints.generator_ckpt` +and does not need to construct or load LoRA adapters at runtime. + +```bash +python scripts/merge_lora_generator.py \ + --config_path configs/inference.yaml \ + --output_path /path/to/longlive2_merged_generator.pt \ + --device cuda:0 +``` + +After the merge, set `checkpoints.generator_ckpt` in `configs/inference.yaml` to +the merged checkpoint. If you run the full `inference.py` entry point, remove or +unset `checkpoints.lora_ckpt` and the `adapter` section so LoRA is not applied a +second time. + +## Inference + +Edit `configs/inference.yaml` to set: + +- `data.data_path`: prompt folder. +- `checkpoints.generator_ckpt`: merged generator checkpoint. +- `output_folder`: output video directory. +- `num_samples`: number of sampled videos per prompt. + +Run: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=8 inference.py \ + --config_path configs/inference.yaml +``` + +Inference notes: + +- `inference.sampling_steps` controls the number of denoising steps. +- `inference.guidance_scale` controls inference CFG. +- `inference.sink_size` controls the standard attention sink size. +- `inference.multi_shot_sink` enables the multi-shot attention sink. +- `inference.multi_shot_rope_offset` controls the multi-shot RoPE offset. + +### FP8 PTQ Inference + +Set `checkpoints.generator_ckpt` in `configs/fp8/inference_fp8.yaml` to the +downloaded merged BF16 `model_bf16.pt`, then run: + +```bash +python inference.py --config_path configs/fp8/inference_fp8.yaml +``` + +`fp8_quant: true` applies TorchAO row-wise dynamic W8A8 quantization after the +generator has been loaded and converted to BF16, and before `torch.compile`. +It cannot be combined with `model_quant: true`, which selects the NVFP4 path. +With the provided 5B model, 300 eligible core Linear layers use FP8 while six +small conditioning/output projections remain BF16 for stability and to avoid +FP8 overhead. + +The validated stack is Python 3.10, PyTorch 2.8.0+cu128, and TorchAO 0.13.0 on +H100 (SM90); compute capability 8.9 or newer is required. The supplied config +uses `torch_compile: auto`: it skips compilation when `inference_iter` +explicitly limits the run to fewer than three samples, and enables it when all +prompts are requested. Its `max-autotune` warm-up can take several minutes +while guard/shape variants are compiled. Use repeated inference and discard all +compile/warm-up samples when measuring steady-state performance; set +`torch_compile: false` for a short eager-mode smoke test. + +The supplied config uses the single 8-latent-frame block validated on H100. +Longer generation introduces additional KV-cache shapes and may trigger more +compilation or eager fallback; validate the intended frame count before +benchmarking or deployment. + +The initial FP8 path targets `inference.py`; `inference_sp.py` rejects the flag +until TorchAO tensor-subclass behavior is validated with Ulysses collectives. + +### NVFP4 Inference + +Edit `configs/nvfp4/inference_nvfp4.yaml` to set: + +- `data.data_path`: prompt folder. +- `checkpoints.generator_ckpt`: AR or base generator checkpoint. +- `checkpoints.lora_ckpt`: optional DMD LoRA checkpoint. +- `output_folder`: output video directory. +- `num_samples`: number of sampled videos per prompt. + +Run: + +```bash +torchrun --standalone --nnodes=1 --nproc_per_node=4 inference.py \ + --config_path configs/nvfp4/inference_nvfp4.yaml +``` + +For single-GPU inference, use `python` directly: + +```bash +python inference.py --config_path configs/nvfp4/inference_nvfp4.yaml +``` + +There are two recommended checkpoint styles for NVFP4 inference: + +FourOverSix compact/materialized NVFP4 checkpoint: + +```yaml +checkpoints: + generator_ckpt: /path/to/model_4o6.pt + +merge_lora: false +model_quant: true +model_quant_use_transformer_engine: false +``` + +TransformerEngine runtime quantization from merged BF16 weights: + +```yaml +checkpoints: + generator_ckpt: /path/to/model_te.pt + +merge_lora: false +model_quant: true +model_quant_use_transformer_engine: true +``` + +Do not set `model_quant_use_transformer_engine: true` when loading a FourOverSix +materialized checkpoint. FourOverSix checkpoints store `quantized_weight_*` +buffers and can only be loaded by the FourOverSix path. TransformerEngine +inference should load merged BF16 weights and quantize them at runtime. + +NVFP4 inference notes: + +- `model_quant` enables generator NVFP4 inference. For regular BF16 +checkpoints, it quantizes/materializes weights during startup; for pre-saved +FourOverSix checkpoints, the checkpoint already contains materialized weights. +- `merge_lora` merges the LoRA checkpoint into the base generator before +quantized materialization. Set it to `false` when `generator_ckpt` already +points to a merged export from `scripts/save_merged_nvfp4_generator.py`. +- `inference.kv_quant` enables FP4 KV-cache storage; the fused dequant extension +from `utils/kernel` must be built first. +- `inference.streaming_vae`, `inference.async_vae`, `inference.vae_type`, and +`inference.vae_device` control streaming or asynchronous VAE decode. +- `torch_compile` can be set to `auto`, `true`, or `false`; the default config +uses `auto` with safe error suppression. + +### Sequence-parallel (SP) inference + +`inference_sp.py` drives **Ulysses sequence-parallel** sampling for WAN (see `configs/inference_sp.yaml` for `sp_size`, `dp_size`, prompts, checkpoints, and the usual `inference.*` knobs). Launch one process per GPU with **`--nproc_per_node` equal to `sp_size × dp_size`** (the shipped example sets `sp_size: 4` and `dp_size: 1`, so four ranks). + +```bash +torchrun --nproc_per_node=4 inference_sp.py --config_path configs/inference_sp.yaml +``` + +## Utilities + +Inspect SP VAE halo windows: + +```bash +python scripts/compute_sp_vae_chunk_halo.py --config configs/train_ar.yaml +``` + +Decode saved VAE latents: + +```bash +python scripts/decode_vae_latents.py --help +python scripts/decode_lightvae_latents.py --help +``` diff --git a/example/long_example.txt b/example/long_example.txt new file mode 100644 index 0000000..0865419 --- /dev/null +++ b/example/long_example.txt @@ -0,0 +1,8 @@ +A close-up shot of a ceramic teacup slowly pouring water into a glass mug. The water flows smoothly from the spout of the teacup into the mug, creating gentle ripples as it fills up. Both cups have detailed textures, with the teacup having a matte finish and the glass mug showcasing clear transparency. The background is a blurred kitchen countertop, adding context without distracting from the central action. The pouring motion is fluid and natural, emphasizing the interaction between the two cups. +A dynamic and chaotic scene in a dense forest during a heavy rainstorm, capturing a real girl frantically running through the foliage. Her wild hair flows behind her as she sprints, her arms flailing and her face contorted in fear and desperation. Behind her, various animals—rabbits, deer, and birds—are also running, creating a frenzied atmosphere. The girl's clothes are soaked, clinging to her body, and she is screaming and shouting as she tries to escape. The background is a blur of greenery and rain-drenched trees, with occasional glimpses of the darkening sky. A wide-angle shot from a low angle, emphasizing the urgency and chaos of the moment. +A dynamic over-the-shoulder perspective of a chef meticulously plating a dish in a bustling kitchen. The chef, a middle-aged man with a neatly trimmed beard and focused expression, deftly arranges ingredients on a pristine white plate. His hands move with precision, each gesture deliberate and practiced. The background shows a crowded kitchen with steaming pots, whirring blenders, and the clatter of utensils. Bright lights highlight the scene, casting shadows across the busy workspace. The camera angle captures the chef's detailed work from behind, emphasizing his skill and dedication. +A dramatic and dynamic scene in the style of a disaster movie, depicting a powerful tsunami rushing through a narrow alley in Bulgaria. The water is turbulent and chaotic, with waves crashing violently against the walls and buildings on either side. The alley is lined with old, weathered houses, their facades partially submerged and splintered. The camera angle is low, capturing the full force of the tsunami as it surges forward, creating a sense of urgency and danger. People can be seen running frantically, adding to the chaos. The background features a distant horizon, hinting at the larger scale of the tsunami. A dynamic, sweeping shot from a low-angle perspective, emphasizing the movement and intensity of the event. +A playful raccoon is seen playing an electronic guitar, strumming the strings with its front paws. The raccoon has distinctive black facial markings and a bushy tail. It sits comfortably on a small stool, its body slightly tilted as it focuses intently on the instrument. The setting is a cozy, dimly lit room with vintage posters on the walls, adding a retro vibe. The raccoon's expressive eyes convey a sense of joy and concentration. Medium close-up shot, focusing on the raccoon's face and hands interacting with the guitar. +A single white sheep bending down to drink water from a calm river. The sheep has fluffy wool, long curved horns, and soft brown eyes. It is positioned near the riverbank, with its front legs partially submerged in the clear water. The river flows gently, reflecting the surrounding greenery and blue sky. The background shows lush grass and trees along the riverbank, creating a serene pastoral landscape. The sheep's body is slightly tilted as it bends down to drink, emphasizing a natural and tranquil motion. Medium close-up shot focusing on the sheep and the river. +3D animation of a small, round, fluffy creature with big, expressive eyes explores a vibrant, enchanted forest. The creature, a whimsical blend of a rabbit and a squirrel, has soft blue fur and a bushy, striped tail. It hops along a sparkling stream, its eyes wide with wonder. The forest is alive with magical elements: flowers that glow and change colors, trees with leaves in shades of purple and silver, and small floating lights that resemble fireflies. The creature stops to interact playfully with a group of tiny, fairy-like beings dancing around a mushroom ring. The creature looks up in awe at a large, glowing tree that seems to be the heart of the forest. +Animated scene features a close-up of a short fluffy monster kneeling beside a melting red candle. The art style is 3D and realistic, with a focus on lighting and texture. The mood of the painting is one of wonder and curiosity, as the monster gazes at the flame with wide eyes and open mouth. Its pose and expression convey a sense of innocence and playfulness, as if it is exploring the world around it for the first time. The use of warm colors and dramatic lighting further enhances the cozy atmosphere of the image. \ No newline at end of file diff --git a/fouroversix/.github/workflows/_build.yml b/fouroversix/.github/workflows/_build.yml new file mode 100644 index 0000000..3ae1354 --- /dev/null +++ b/fouroversix/.github/workflows/_build.yml @@ -0,0 +1,215 @@ +name: ~Build wheel template + +on: + workflow_call: + inputs: + runs-on: + description: "The runner to use for the build" + required: true + type: string + python-version: + description: "The Python version to use for the build" + required: true + type: string + cuda-version: + description: "The CUDA version to use for the build" + required: true + type: string + torch-version: + description: "The PyTorch version to use for the build" + required: true + type: string + cxx11_abi: + description: "The C++11 ABI to use for the build" + required: true + type: string + upload-to-release: + description: "Upload wheel to this release" + required: false + type: boolean + default: false + release-version: + description: "Upload wheel to this release" + required: false + type: string + +defaults: + run: + shell: bash -x -e -u -o pipefail {0} + +jobs: + build-wheel: + runs-on: ${{ inputs.runs-on }} + name: Build wheel (${{ inputs.release-version }}-${{ inputs.python-version }}-${{ inputs.cuda-version }}-${{ inputs.torch-version }}-${{ inputs.cxx11_abi }}) + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + ref: ${{ inputs.release-version }} + submodules: recursive + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ inputs.python-version }} + + - name: Set CUDA and PyTorch versions + run: | + echo "MATRIX_CUDA_VERSION=$(echo ${{ inputs.cuda-version }} | awk -F \. {'print $1 $2'})" >> $GITHUB_ENV + echo "MATRIX_TORCH_VERSION=$(echo ${{ inputs.torch-version }} | awk -F \. {'print $1 "." $2'})" >> $GITHUB_ENV + echo "WHEEL_CUDA_VERSION=$(echo ${{ inputs.cuda-version }} | awk -F \. {'print $1'})" >> $GITHUB_ENV + echo "MATRIX_PYTHON_VERSION=$(echo ${{ inputs.python-version }} | awk -F \. {'print $1 $2'})" >> $GITHUB_ENV + + - name: Free up disk space + if: ${{ runner.os == 'Linux' }} + # https://github.com/easimon/maximize-build-space/blob/master/action.yml + # https://github.com/easimon/maximize-build-space/tree/test-report + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /usr/local/lib/android + sudo rm -rf /opt/ghc + sudo rm -rf /opt/hostedtoolcache/CodeQL + sudo docker image prune --all --force + + - name: Set up swap space + if: runner.os == 'Linux' + uses: pierotofy/set-swap-space@v1.0 + with: + swap-size-gb: 10 + + - name: Install CUDA ${{ inputs.cuda-version }} + if: ${{ inputs.cuda-version != 'cpu' }} + uses: Jimver/cuda-toolkit@v0.2.29 + id: cuda-toolkit + with: + cuda: ${{ inputs.cuda-version }} + linux-local-args: '["--toolkit"]' + # default method is "local", and we're hitting some error with caching for CUDA 11.8 and 12.1 + # method: ${{ (inputs.cuda-version == '11.8.0' || inputs.cuda-version == '12.1.0') && 'network' || 'local' }} + method: "network" + sub-packages: '["nvcc"]' + non-cuda-sub-packages: '["libcublas-dev", "libcusolver-dev", "libcusparse-dev"]' + + - name: Install PyTorch ${{ inputs.torch-version }}+cu${{ inputs.cuda-version }} + run: | + pip install --upgrade pip + # With python 3.13 and torch 2.5.1, unless we update typing-extensions, we get error + # AttributeError: attribute '__default__' of 'typing.ParamSpec' objects is not writable + pip install typing-extensions==4.12.2 + # detect if we're on ARM + if [ "$(uname -m)" = "aarch64" ] || [ "$(uname -m)" = "arm64" ]; then + PLAT=linux_aarch64 + else + PLAT=manylinux_2_27_x86_64.manylinux_2_28_x86_64 + fi + echo "PLAT=$PLAT" >> $GITHUB_ENV + if [[ ${{ inputs.torch-version }} == *"dev"* ]]; then + # pip install --no-cache-dir --pre torch==${{ inputs.torch-version }} --index-url https://download.pytorch.org/whl/nightly/cu${MATRIX_CUDA_VERSION} + # Can't use --no-deps because we need cudnn etc. + # Hard-coding this version of pytorch-triton for torch 2.9.0.dev20250904 + pip install jinja2 + TRITON_URL=https://download.pytorch.org/whl/nightly/pytorch_triton-3.4.0%2Bgitf7888497-cp${MATRIX_PYTHON_VERSION}-cp${MATRIX_PYTHON_VERSION}-${PLAT}.whl + TORCH_URL=https://download.pytorch.org/whl/nightly/cu${MATRIX_CUDA_VERSION}/torch-${{ inputs.torch-version }}%2Bcu${MATRIX_CUDA_VERSION}-cp${MATRIX_PYTHON_VERSION}-cp${MATRIX_PYTHON_VERSION}-manylinux_2_28_$(uname -m).whl + pip install --no-cache-dir --pre "${TRITON_URL}" + pip install --no-cache-dir --pre "${TORCH_URL}" + else + pip install --no-cache-dir torch==${{ inputs.torch-version }} --index-url https://download.pytorch.org/whl/cu${MATRIX_CUDA_VERSION} + fi + nvcc --version + python --version + python -c "import torch; print('PyTorch:', torch.__version__)" + python -c "import torch; print('CUDA:', torch.version.cuda)" + python -c "from torch.utils import cpp_extension; print (cpp_extension.CUDA_HOME)" + + - name: Restore build cache + uses: actions/cache/restore@v4 + with: + path: build.tar + key: build-${{ inputs.release-version }}-${{ inputs.python-version }}-${{ inputs.cuda-version }}-${{ inputs.torch-version }}-${{ inputs.cxx11_abi }}-${{ github.run_number }}-${{ github.run_attempt }} + restore-keys: | + build-${{ inputs.release-version }}-${{ inputs.python-version }}-${{ inputs.cuda-version }}-${{ inputs.torch-version }}-${{ inputs.cxx11_abi }}- + + - name: Unpack build cache + run: | + echo ::group::Adjust timestamps + sudo find / -exec touch -t 197001010000 {} + || true + echo ::endgroup:: + + if [ -f build.tar ]; then + find . -mindepth 1 -maxdepth 1 ! -name 'build.tar' -exec rm -rf {} + + tar -xpvf build.tar -C . + else + echo "No build.tar found, skipping" + fi + + ls -al ./ + ls -al build/ || true + ls -al csrc/ || true + + - name: Build wheel + id: build_wheel + run: | + pip install -U ninja packaging psutil setuptools wheel + export PATH=/usr/local/nvidia/bin:/usr/local/nvidia/lib64:$PATH + export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/cuda/lib64:$LD_LIBRARY_PATH + # Limit MAX_JOBS otherwise the github runner goes OOM + # nvcc 11.8 can compile with 2 jobs, but nvcc 12.3 goes OOM + + export MAX_JOBS=$([ "$MATRIX_CUDA_VERSION" == "129" ] && echo 1 || echo 2) + export NVCC_THREADS=2 + export FORCE_BUILD=1 + export FORCE_CXX11_ABI=${{ inputs.cxx11_abi == 'TRUE' && '1' || '0' }} + + # 5h timeout since GH allows max 6h and we want some buffer + EXIT_CODE=0 + timeout 5h python setup.py bdist_wheel --dist-dir=dist || EXIT_CODE=$? + + if [ $EXIT_CODE -eq 0 ]; then + tmpname=cu${WHEEL_CUDA_VERSION}torch${MATRIX_TORCH_VERSION}cxx11abi${{ inputs.cxx11_abi }} + wheel_name=$(ls dist/*whl | xargs -n 1 basename | sed "s/-/+$tmpname-/2") + ls dist/*whl |xargs -I {} mv {} dist/${wheel_name} + echo "wheel_name=${wheel_name}" >> $GITHUB_ENV + fi + + # Store exit code in GitHub env for later steps + echo "build_exit_code=$EXIT_CODE" | tee -a "$GITHUB_OUTPUT" + + # Do not fail the job if timeout killed the build + exit $EXIT_CODE + + - name: Log build logs after timeout + if: always() && steps.build_wheel.outputs.build_exit_code == 124 + run: | + ls -al ./ + tar -cvf build.tar . --atime-preserve=replace + + - name: Save build cache timeout + if: always() && steps.build_wheel.outputs.build_exit_code == 124 + uses: actions/cache/save@v4 + with: + key: build-${{ inputs.release-version }}-${{ inputs.python-version }}-${{ inputs.cuda-version }}-${{ inputs.torch-version }}-${{ inputs.cxx11_abi }}-${{ github.run_number }}-${{ github.run_attempt }} + path: build.tar + + - name: Log Built Wheels + run: | + ls dist + + - name: Get Release with tag + id: get_current_release + uses: joutvhu/get-release@v1 + with: + tag_name: ${{ inputs.release-version }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Release Asset + id: upload_release_asset + if: inputs.upload-to-release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_current_release.outputs.upload_url }} + asset_path: ./dist/${{env.wheel_name}} + asset_name: ${{env.wheel_name}} + asset_content_type: application/* diff --git a/fouroversix/.github/workflows/build.yml b/fouroversix/.github/workflows/build.yml new file mode 100644 index 0000000..25ea5e8 --- /dev/null +++ b/fouroversix/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: Build wheels + +on: + workflow_dispatch: + inputs: + runs-on: + description: "The runner to use for the build" + required: true + type: string + default: ubuntu-22.04 + python-version: + description: "The Python version to use for the build" + required: true + type: string + cuda-version: + description: "The CUDA version to use for the build" + required: true + type: string + torch-version: + description: "The PyTorch version to use for the build" + required: true + type: string + cxx11_abi: + description: "Enable torch flag C++11 ABI (TRUE/FALSE)" + required: true + type: string + upload-to-release: + description: "Upload wheel to this release" + required: false + type: boolean + default: false + release-version: + description: "Upload wheel to this release" + required: false + type: string + +jobs: + build-wheels: + uses: ./.github/workflows/_build.yml + with: + runs-on: ${{ inputs.runs-on }} + python-version: ${{ inputs.python-version }} + cuda-version: ${{ inputs.cuda-version }} + torch-version: ${{ inputs.torch-version }} + cxx11_abi: ${{ inputs.cxx11_abi }} + upload-to-release: ${{ inputs.upload-to-release }} + release-version: ${{ inputs.release-version }} diff --git a/fouroversix/.github/workflows/pre-commit.yml b/fouroversix/.github/workflows/pre-commit.yml new file mode 100644 index 0000000..d8b5fb6 --- /dev/null +++ b/fouroversix/.github/workflows/pre-commit.yml @@ -0,0 +1,16 @@ +name: Lint + +on: + push: + branches: + - main + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + matrix: + python: ["3.13"] + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/ruff-action@v3 diff --git a/fouroversix/.github/workflows/publish.yml b/fouroversix/.github/workflows/publish.yml new file mode 100644 index 0000000..eb5b172 --- /dev/null +++ b/fouroversix/.github/workflows/publish.yml @@ -0,0 +1,101 @@ +# This workflow will: +# - Create a new Github release +# - Build wheels for supported architectures +# - Deploy the wheels to the Github release +# - Release the static code to PyPi +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Build wheels and deploy + +on: + push: + tags: + - "v*" + +jobs: + setup_release: + name: Create Release + runs-on: ubuntu-latest + outputs: + release-version: ${{ steps.extract_branch.outputs.branch }} + steps: + - name: Get the tag version + id: extract_branch + run: echo ::set-output name=branch::${GITHUB_REF#refs/tags/} + shell: bash + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.extract_branch.outputs.branch }} + release_name: ${{ steps.extract_branch.outputs.branch }} + + build_wheels: + name: Build Wheel + needs: setup_release + strategy: + fail-fast: false + matrix: + # Using ubuntu-22.04 instead of 24.04 for more compatibility (glibc). Ideally we'd use the + # manylinux docker image, but I haven't figured out how to install CUDA on manylinux. + os: [ubuntu-22.04, ubuntu-22.04-arm] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + torch-version: ["2.8.0", "2.9.1", "2.10.0"] + cuda-version: ["12.9.1", "13.0.2"] + # We need separate wheels that either uses C++11 ABI (-D_GLIBCXX_USE_CXX11_ABI) or not. + # Pytorch wheels currently don't use it, but nvcr images have Pytorch compiled with C++11 ABI. + # Without this we get import error (undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationESs) + # when building without C++11 ABI and using it on nvcr images. + cxx11_abi: ["FALSE", "TRUE"] + exclude: + - os: ubuntu-22.04-arm + torch-version: "2.8.0" + - os: ubuntu-22.04-arm + torch-version: "2.7.1" + # PyTorch 2.8 only supports up to CUDA 12.9 + - torch-version: "2.8.0" + cuda-version: "13.0.2" + - torch-version: "2.7.1" + cuda-version: "13.0.2" + # Python 3.14 only has pre-built wheels for PyTorch 2.9 and newer + - python-version: "3.14" + torch-version: "2.7.1" + - python-version: "3.14" + torch-version: "2.8.0" + uses: ./.github/workflows/_build.yml + with: + runs-on: ${{ matrix.os }} + python-version: ${{ matrix.python-version }} + cuda-version: ${{ matrix.cuda-version }} + torch-version: ${{ matrix.torch-version }} + cxx11_abi: ${{ matrix.cxx11_abi }} + release-version: ${{ needs.setup_release.outputs.release-version }} + upload-to-release: true + + publish_package: + name: Publish package + needs: [build_wheels] + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - uses: actions/checkout@v5 + with: + submodules: recursive + - uses: actions/setup-python@v6 + with: + python-version: "3.10" + - name: Install dependencies + run: | + pip install -U ninja packaging setuptools wheel twine + # We don't want to download anything CUDA-related here + pip install torch --index-url https://download.pytorch.org/whl/cpu + - name: Build core package + env: + SKIP_CUDA_BUILD: "1" + run: | + python setup.py sdist --dist-dir=dist + - name: Deploy + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/fouroversix/.gitignore b/fouroversix/.gitignore new file mode 100644 index 0000000..65af597 --- /dev/null +++ b/fouroversix/.gitignore @@ -0,0 +1,16 @@ +__pycache__ +*.py[cod] +.DS_Store +.vscode +env/ +trace_*.json +*.so +exp/ +*.ipynb +.cache/ +ptq_logs/ +dist/ +*.egg-info/ +site/ +results.db +/ptq/ \ No newline at end of file diff --git a/fouroversix/.gitmodules b/fouroversix/.gitmodules new file mode 100644 index 0000000..feb3c5f --- /dev/null +++ b/fouroversix/.gitmodules @@ -0,0 +1,21 @@ +[submodule "third_party/cutlass"] + path = third_party/cutlass + url = https://github.com/NVIDIA/cutlass.git +[submodule "third_party/fp-quant"] + path = third_party/fp-quant + url = https://github.com/jackcook/fp-quant-fouroversix.git +[submodule "third_party/llm-awq"] + path = third_party/llm-awq + url = https://github.com/jackcook/llm-awq-fouroversix.git +[submodule "third_party/qutlass"] + path = third_party/qutlass + url = https://github.com/IST-DASLab/qutlass.git +[submodule "third_party/fast-hadamard-transform"] + path = third_party/fast-hadamard-transform + url = https://github.com/Dao-AILab/fast-hadamard-transform.git +[submodule "third_party/spinquant"] + path = third_party/spinquant + url = https://github.com/jackcook/spinquant-fouroversix.git +[submodule "third_party/flame"] + path = third_party/flame + url = https://github.com/jackcook/flame-fouroversix.git diff --git a/fouroversix/LICENSE.md b/fouroversix/LICENSE.md new file mode 100644 index 0000000..827e2c0 --- /dev/null +++ b/fouroversix/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2025 Jack Cook + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/fouroversix/MANIFEST.in b/fouroversix/MANIFEST.in new file mode 100644 index 0000000..2ecd064 --- /dev/null +++ b/fouroversix/MANIFEST.in @@ -0,0 +1,12 @@ +recursive-include src *.cu +recursive-include src *.h +recursive-include src *.cpp +recursive-include src *.hpp +recursive-include src *.py + +recursive-include third_party/cutlass *.cu +recursive-include third_party/cutlass *.h +recursive-include third_party/cutlass *.cuh +recursive-include third_party/cutlass *.cpp +recursive-include third_party/cutlass *.hpp +recursive-include third_party/cutlass *.inl \ No newline at end of file diff --git a/fouroversix/README.md b/fouroversix/README.md new file mode 100644 index 0000000..3ff117a --- /dev/null +++ b/fouroversix/README.md @@ -0,0 +1,167 @@ +# Four Over Six (4/6) + +[![arXiv](https://img.shields.io/badge/arXiv-2512.02010-b31b1b.svg)](https://arxiv.org/abs/2512.02010) + +_Improving the accuracy of NVFP4 quantization with Adaptive Block Scaling._ + +![](/assets/four-over-six.png) + +This repository contains kernels for efficient NVFP4 quantization and matrix multiplication, and fast post-training quantization with our method, 4/6. +If you have any questions, please get in touch or submit an issue. + +## Setup + +**Requirements:** + +- Python version 3.10 or newer +- CUDA toolkit 12.8 or newer +- PyTorch version 2.8 or newer + +**Install dependencies:** + +```bash +pip install ninja packaging psutil "setuptools>=77.0.3" +``` + +**Install fouroversix:** + +```bash +pip install fouroversix --no-build-isolation +``` + +Alternatively, you can compile from source: + +```bash +pip install --no-build-isolation -e . +``` + +To speed up build times, set `CUDA_ARCHS=100` to only compile kernels for B-series GPUs (i.e. B200, GB200, GB300), or `CUDA_ARCHS=120` for RTX 50 and 60 Series GPUs (i.e. RTX 5090, RTX 6000). + +Also, if you don't have a Blackwell GPU, you may use our reference implementation, which is slow but helpful for testing, by setting `SKIP_CUDA_BUILD=1` before running `pip install`. + +### PTQ Experiments + +To run PTQ experiments, make sure to install our test dependencies using either: + +```bash +pip install "fouroversix[evals]" --no-build-isolation + +# Or, if installing from source: +pip install --no-build-isolation -e ".[evals]" +``` + +Also, make sure all submodules are pulled and up to date: + +```bash +git submodule update --init +``` + +Then, install dependencies for each PTQ method as needed, following the instructions [here](/docs/ptq.md). + +## API + +### Quantize a Model to NVFP4 + +```python +from fouroversix import ModelQuantizationConfig, quantize_model +from transformers import AutoModelForCausalLM + +# NVFP4 using 4/6 with MSE block selection +model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B") +quantize_model(model) + +# Standard NVFP4 round-to-nearest quantization +model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B") +config = ModelQuantizationConfig(scale_rule="static_6") +quantize_model(model, config) +``` + +### Quantize a Tensor to NVFP4 + +Check the `quantize_to_fp4` [arguments](https://github.com/mit-han-lab/fouroversix/blob/f1b78701c753ea49c091ac39d85c5753b703f5ca/src/fouroversix/frontend.py#L72) for more details about how you can enable certain features during quantization, such as stochastic rounding or 2D block quantization. + +```python +import torch +from fouroversix import QuantizationConfig, quantize_to_fp4 + +x = torch.randn(1024, 1024, dtype=torch.bfloat16, device="cuda") +x_quantized = quantize_to_fp4(x) + +# Standard NVFP4 round-to-nearest quantization +config = QuantizationConfig(scale_rule="static_6") +x_quantized = quantize_to_fp4(x, config) +``` + +### Multiply Two NVFP4 Tensors + +```python +from fouroversix import fp4_matmul + +# a and b can be either high-precision BF16 tensors, in which case they will be +# quantized, or low-precision QuantizedTensors if you've already quantized them +# yourself. +out = fp4_matmul(a, b) +``` + +## PTQ Evaluation with LM Evaluation Harness + +```bash +# Round-to-nearest quantization with 4/6: +python -m scripts.ptq --model-name meta-llama/Llama-3.2-1B --ptq-method rtn --task wikitext + +# Standard NVFP4 round-to-nearest (RTN) quantization: +python -m scripts.ptq --model-name meta-llama/Llama-3.2-1B --ptq-method rtn --task wikitext --a-scale-rule static_6 --w-scale-rule static_6 + +# AWQ with 4/6: +python -m scripts.ptq --model-name meta-llama/Llama-3.2-1B --ptq-method awq --task wikitext + +# High-precision baseline, no NVFP4 quantization: +python -m scripts.ptq --model-name meta-llama/Llama-3.2-1B --ptq-method high_precision --task wikitext +``` + +If you would prefer not to worry about setting up your local environment, or about acquiring a Blackwell GPU to run your experiments faster, you may run PTQ experiments on [Modal](https://modal.com/) by adding the `--modal` flag, and optionally the `--detach` flag which will enable you to CTRL+C. +The first time you launch experiments on Modal, it may take several minutes to build everything, but following commands will reuse the cached images. + +## Notes + +This repository contains three implementations of NVFP4 quantization, each of which has various limitations: + +- [CUDA](/src/fouroversix/csrc): Supports most but not all operations needed for efficient NVFP4 training. More operations will be added soon. Requires a Blackwell GPU. +- [Triton](/src/fouroversix/quantize/triton_kernel.py): Supports all operations needed for efficient NVFP4 training, including stochastic rounding, the random Hadamard transform, transposed inputs, and 2D block scaling. Requires a Blackwell GPU. +- [PyTorch](/src/fouroversix/quantize/reference.py): A reference implementation written in PyTorch that can run on any GPU. May have some educational value. Should not be used in real-world use cases. + +When used with 4/6, these implementations have subtle numerical differences which can cause results to differ slightly, but not in a way that should cause uniformly worse performance for any of them. +For more details, see [here](https://github.com/mit-han-lab/fouroversix/blob/6bb13a8fc3b690154d11a1d6477bb6c2d09799e8/tests/test_correctness.py#L124-L132). + +Our `quantize_to_fp4` function will automatically select one of these backends based on your GPU and the quantization parameters you select. +If you would like to force selection of a specific backend, you may specify it by setting `backend=QuantizeBackend.cuda` in the quantization config passed to `quantize_to_fp4`, or `quantize_backend=QuantizeBackend.cuda` in the layer and model configs passed to `quantize_model`. + +## Contributing + +We welcome contributions to our repository, but get in touch before making any substantial changes. +Also, please make sure any code changes are compliant with our linter: + +```bash +ruff check +``` + +## Citation + +Please use the following BibTeX entry to cite this work: + +```bibtex +@misc{cook2025sixaccuratenvfp4quantization, + title={Four Over Six: More Accurate NVFP4 Quantization with Adaptive Block Scaling}, + author={Jack Cook and Junxian Guo and Guangxuan Xiao and Yujun Lin and Song Han}, + year={2025}, + eprint={2512.02010}, + archivePrefix={arXiv}, + primaryClass={cs.CL}, + url={https://arxiv.org/abs/2512.02010}, +} +``` + +## License + +This repository is available under the MIT license. +See the [LICENSE.md](/LICENSE.md) file for details. diff --git a/fouroversix/docs/index.md b/fouroversix/docs/index.md new file mode 100644 index 0000000..4c3c9c2 --- /dev/null +++ b/fouroversix/docs/index.md @@ -0,0 +1,3 @@ +# Four Over Six + +See [Quantization](/quantization) for details on quantizing tensors to FP4, and [Matrix Multiplication](/matmul) for performing matrix multiplication with FP4 tensors. diff --git a/fouroversix/docs/matmul.md b/fouroversix/docs/matmul.md new file mode 100644 index 0000000..dd99950 --- /dev/null +++ b/fouroversix/docs/matmul.md @@ -0,0 +1,3 @@ +# Matrix Multiplication + +::: fouroversix.fp4_matmul diff --git a/fouroversix/docs/ptq.md b/fouroversix/docs/ptq.md new file mode 100644 index 0000000..893affa --- /dev/null +++ b/fouroversix/docs/ptq.md @@ -0,0 +1,69 @@ +# Running PTQ Experiments + +## Install Dependencies + +Before doing anything, make sure you've installed fouroversix with our test dependencies: + +```bash +pip install -e .[evals] --no-build-isolation +``` + +Also, make sure you've cloned all of our submodules: + +```bash +git submodule update --init +``` + +Then, depending on which PTQ method you would like to test, you may need to run some additional commands. + +### AWQ + +```bash +pip install --no-deps third_party/llm-awq +``` + +### GPTQ + +1. Install Fast Hadamard Transform + +```bash +pip install --no-build-isolation third_party/fast-hadamard-transform +``` + +2. Install QuTLASS + +```bash +pip install --no-build-isolation third_party/qutlass +``` + +3. Install FP-Quant + +```bash +pip install third_party/fp-quant/inference_lib +``` + +### High Precision + +No installation necessary! + +### Round-to-Nearest (RTN) + +No installation necessary! + +### SmoothQuant + +No installation necessary! + +### SpinQuant + +1. Install Fast Hadamard Transform + +```bash +pip install --no-build-isolation third_party/fast-hadamard-transform +``` + +2. Downgrade Transformers if your installation is up-to-date + +```bash +pip install "transformers<5.0" +``` \ No newline at end of file diff --git a/fouroversix/docs/quantization.md b/fouroversix/docs/quantization.md new file mode 100644 index 0000000..7d2cf72 --- /dev/null +++ b/fouroversix/docs/quantization.md @@ -0,0 +1,3 @@ +# Quantization + +::: fouroversix.quantize_to_fp4 diff --git a/fouroversix/mkdocs.yml b/fouroversix/mkdocs.yml new file mode 100644 index 0000000..4f5bd1e --- /dev/null +++ b/fouroversix/mkdocs.yml @@ -0,0 +1,8 @@ +site_name: Four Over Six Documentation + +theme: + name: material + +plugins: + - search + - mkdocstrings diff --git a/fouroversix/pyproject.toml b/fouroversix/pyproject.toml new file mode 100644 index 0000000..3677ef9 --- /dev/null +++ b/fouroversix/pyproject.toml @@ -0,0 +1,110 @@ +[build-system] +requires = [ + "ninja", + "packaging", + "psutil", + "setuptools>=77.0.3", +] +build-backend = "setuptools.build_meta" + +[project] +name = "fouroversix" +dynamic = ["version"] +authors = [ + { name="Jack Cook", email="cookj@mit.edu" }, + { name="Junxian Guo", email="junxian@mit.edu" }, +] +description = "More Accurate FP4 Quantization with Adaptive Block Scaling" +readme = "README.md" +requires-python = ">=3.10" +license = "MIT" +license-files = ["LICENSE.md"] +dependencies = [ + "torch>=2.7.0", +] + +[project.optional-dependencies] +docs = [ + "mkdocs~=1.6.1", + "mkdocs-material~=9.7.4", + "mkdocstrings[python]~=1.0.3", +] +evals = [ + "inspect-ai~=0.3.186", + "inspect-evals~=0.3.106", + "lm-eval[hf]~=0.4.11", + "modal~=1.3.5", + "openai~=2.24.0", + "pytest~=8.1.1", + "ruff~=0.15.4", + "SQLAlchemy~=2.0.48", + "transformers @ git+https://github.com/huggingface/transformers.git@22c35ca", +] + +[tool.pytest.ini_options] +testpaths = ["tests"] + +[tool.ruff] +line-length = 88 +indent-width = 4 +exclude = ["build", "dist", "env", ".venv", "third_party", "scripts/ptq/tasks"] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" + +[tool.ruff.lint] +ignore = [ + # Various dumb rules related to docstrings + "D100", + "D103", # TODO: Remove this one + "D104", + "D107", + "D202", + "D203", + "D205", + "D212", + + "A001", "A002", # Allow variables to be named `input` + "FIX002", # Allow TODO comments + "FIX004", # Allow hacks + "N812", # Allow importing torch.nn.functional as F + "PLR0402", # Allow importing torch.nn as nn + "PLC0415", # Allow imports that aren't at the top of the file + "PLR0913", # Allow functions with more than 5 arguments + "RET506", # Allow elif after raise + "S603", # Allow untrusted inputs to be passed to subprocesses + "S607", # Allow commands to be run by subprocess without providing a full path + "TD003", # Don't require issue links on TODO comments +] +select = [ + "ALL", +] + +[tool.ruff.lint.extend-per-file-ignores] +"setup.py" = [ + "T201", # Allow print statements in setup.py +] +"scripts/**/*.py" = [ + "T201", # Allow print statements in CLI tools + "TID252", # Allow relative imports from parent modules +] +"src/fouroversix/**/ops.py" = [ + "I001", # Allow unsorted imports, because torch needs to be imported before fouroversix._C +] +"src/fouroversix/quantize/pytorch/reference.py" = [ + "S101", # Allow assert statements in reference implementation +] +"src/fouroversix/quantize/triton/kernel.py" = [ + "ANN001", # Allow missing annotations in Triton kernels + "N803", # Allow uppercase arguments to Triton kernels + "N806", # Allow uppercase variables in Triton kernels + "PLR1714", "SIM109", # Allow multiple equality comparisons in Triton kernels +] +"tests/**/test_*.py" = [ + "S101", # Allow assert statements in tests + "T201", # Allow print statements in tests +] + +[tool.ruff.lint.isort] +known-third-party = ["fouroversix"] \ No newline at end of file diff --git a/fouroversix/scripts/__init__.py b/fouroversix/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/scripts/create_test_case.py b/fouroversix/scripts/create_test_case.py new file mode 100644 index 0000000..2b0121e --- /dev/null +++ b/fouroversix/scripts/create_test_case.py @@ -0,0 +1,87 @@ +from .resources import Dependency, app, get_image + +img = get_image(dependencies=[Dependency.transformer_engine, Dependency.fouroversix]) + +with img.imports(): + import torch + from fouroversix import AdaptiveBlockScalingRule, QuantizeBackend, quantize_to_fp4 + from fouroversix.quantize import from_blocked + + +@app.function(image=img, gpu="B200") +def create_test_case( + backend_a: str = "cuda", + backend_b: str = "transformer_engine", + scale_rule: str = "mse", +) -> None: + M, N = 1024, 1024 # noqa: N806 + + torch.set_printoptions(precision=10) + + backend_a = QuantizeBackend(backend_a) + backend_b = QuantizeBackend(backend_b) + scale_rule = AdaptiveBlockScalingRule(scale_rule) + + for random_seed in range(10): + torch.manual_seed(random_seed) + + x = torch.randn(M, N, dtype=torch.bfloat16, device="cuda") + out_a = quantize_to_fp4( + x, + backend=backend_a, + scale_rule=scale_rule, + ) + out_b = quantize_to_fp4( + x, + backend=backend_b, + scale_rule=scale_rule, + ) + x_sf_a = from_blocked(out_a.scale_factors.bfloat16(), (M, N // 16)) + x_sf_b = from_blocked(out_b.scale_factors.bfloat16(), (M, N // 16)) + + print(f"x absmax: {x.abs().max()}") + + if not torch.allclose(out_a.amax, out_b.amax): + print("Backends A and B have different amax values!") + print(f"{backend_a}: {out_a.amax}") + print(f"{backend_b}: {out_b.amax}") + return + + if not torch.allclose(x_sf_a.bfloat16(), x_sf_b.bfloat16()): + mismatch_prop = (x_sf_a != x_sf_b).sum() / x_sf_a.numel() + print( + "Backends A and B have different scale factors! " + f"{mismatch_prop:.2%} mismatch", + ) + + [i, *_], [j, *_] = torch.where(x_sf_a != x_sf_b) + print(backend_a) + print("sf", x_sf_a[i, j]) + print("e2m1", out_a.e2m1_values[i, 8 * j : 8 * (j + 1)]) + print(backend_b) + print("sf", x_sf_b[i, j]) + print("e2m1", out_b.e2m1_values[i, 8 * j : 8 * (j + 1)]) + print("original") + print("x", x[i, 16 * j : 16 * (j + 1)]) + return + + if not torch.allclose(out_a.e2m1_values, out_b.e2m1_values): + mismatch_prop = ( + out_a.e2m1_values != out_b.e2m1_values + ).sum() / out_a.e2m1_values.numel() + print( + "Backends A and B have different e2m1 values! " + f"{mismatch_prop:.2%} mismatch", + ) + + [i, *_], [j, *_] = torch.where(out_a.e2m1_values != out_b.e2m1_values) + print(i, j) + print("normconst", out_a.amax) + print("sf", x_sf_a[i, j // 8]) + print(backend_a) + print("e2m1", out_a.e2m1_values[i, 8 * (j // 8) : 8 * (j // 8 + 1)]) + print(backend_b) + print("e2m1", out_b.e2m1_values[i, 8 * (j // 8) : 8 * (j // 8 + 1)]) + print("original") + print("x", x[i, 16 * (j // 8) : 16 * (j // 8 + 1)]) + return diff --git a/fouroversix/scripts/generate_kernels.py b/fouroversix/scripts/generate_kernels.py new file mode 100644 index 0000000..ccd286e --- /dev/null +++ b/fouroversix/scripts/generate_kernels.py @@ -0,0 +1,136 @@ +from __future__ import annotations + +import argparse +import itertools +from dataclasses import dataclass +from pathlib import Path + +SRC_DTYPE_MAP = { + "fp16": "cutlass::half_t", + "bf16": "cutlass::bfloat16_t", +} + + +SM = [100] # Sm100 kernels support up to +IS_NVFP4 = ["false", "true"] +IS_TRANSPOSE = ["false", "true"] +IS_RHT = ["false", "true"] + + +def get_fp4_quant_template( + is_nvfp4: str, + is_rht: str, + is_transpose: str, + src_dtype: str, +) -> str: + if is_nvfp4 == "false": + function_str = "run_mxfp4_quant" + elif is_nvfp4 == "true": + function_str = "run_nvfp4_quant" + else: + msg = f"Invalid is_nvfp4: {is_nvfp4}" + raise ValueError(msg) + + if is_rht == "true": + function_str = f"{function_str}_rht" + + return f"""#include "fp4_quant_launch_template.h" +namespace fouroversix {{ + +template<> +void run_fp4_quant_<{src_dtype}, {is_nvfp4}, {is_rht}, {is_transpose}>(FP4_quant_params ¶ms, cudaStream_t stream) {{ + {function_str}<{src_dtype}, {is_transpose}>(params, stream); +}} + +}} // namespace fouroversix""" # noqa: E501 + + +@dataclass +class Kernel: + """Representation for a kernel that quantizes a tensor to FP4.""" + + sm: int + src_dtype: str + is_nvfp4: str + is_rht: str + is_transpose: str + op: str + + @property + def template(self) -> str: + """The kernel's template content.""" + + template_funcs = { + "fp4_quant": get_fp4_quant_template, + } + template_func = template_funcs[self.op] + return template_func( + is_transpose=self.is_transpose, + src_dtype=SRC_DTYPE_MAP[self.src_dtype], + is_nvfp4=self.is_nvfp4, + is_rht=self.is_rht, + ) + + @property + def filename(self) -> str: + """The filename for the kernel.""" + + fp4_format = "nvfp4" if self.is_nvfp4 == "true" else "mxfp4" + return ( + f"{self.op}_{self.src_dtype}_{fp4_format}_" + f"{'rht_' if self.is_rht == 'true' else ''}" + f"{'trans_' if self.is_transpose == 'true' else ''}sm{self.sm}.cu" + ) + + +def get_all_kernels() -> list[Kernel]: + for op in ["fp4_quant"]: + for src_dtype, is_nvfp4, is_rht, is_transpose, sm in itertools.product( + SRC_DTYPE_MAP.keys(), + IS_NVFP4, + IS_RHT, + IS_TRANSPOSE, + SM, + ): + yield Kernel( + sm=sm, + src_dtype=src_dtype, + is_rht=is_rht, + is_nvfp4=is_nvfp4, + is_transpose=is_transpose, + op=op, + ) + + +def write_kernel(kernel: Kernel, autogen_dir: Path) -> None: + prelude = """// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py"\n""" # noqa: E501 + content = prelude + kernel.template + (autogen_dir / kernel.filename).write_text(content) + + +def main(output_dir: str | None) -> None: + if output_dir is None: + output_dir = ( + Path(__file__).parent.parent / "src" / "fouroversix" / "csrc" / "quantize" + ) + else: + output_dir = Path(output_dir) + + for kernel in get_all_kernels(): + write_kernel(kernel, output_dir) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + prog="generate_kernels", + description="Generate the flash_attention kernels template instantiations", + ) + parser.add_argument( + "-o", + "--output_dir", + required=False, + help="Where to generate the kernels will default to the current directory ", + ) + args = parser.parse_args() + main(args.output_dir) diff --git a/fouroversix/scripts/hadamard_code_gen.py b/fouroversix/scripts/hadamard_code_gen.py new file mode 100644 index 0000000..a9d3bd3 --- /dev/null +++ b/fouroversix/scripts/hadamard_code_gen.py @@ -0,0 +1,111 @@ +from pathlib import Path + +import numpy as np + +# had_16 = """ +# ++++++++++++++++ +# +-+-+-+-+-+-+-+- +# ++--++--++--++-- +# +--++--++--++--+ +# ++++----++++---- +# +-+--+-++-+--+-+ +# ++----++++----++ +# +--+-++-+--+-++- +# ++++++++-------- +# +-+-+-+--+-+-+-+ +# ++--++----++--++ +# +--++--+-++--++- +# ++++--------++++ +# +-+--+-+-+-++-+- +# ++----++--++++-- +# +--+-++--++-+--+ +# """ + +# transformerEngine style rht matrix +had_16 = """ ++++-+------+-+-- ++-++++-+-+-----+ +++-++-++--+--+++ ++---+++--+++--+- ++++--+++---++-++ ++-++--+--+--+++- +++-+-+----+-+--- ++------+-+++++-+ ++++-+---+++-+-++ ++-++++-++-+++++- +++-++-++++-++--- ++---+++-+---++-+ ++++--++++++--+-- ++-++--+-+-++---+ +++-+-+--++-+-+++ ++------++-----+- +""" + + +header = """ +/****************************************************************************** + * Copyright (c) 2023, Tri Dao. + * Adapted by Junxian Guo from https://github.com/Dao-AILab/fast-hadamard-transform/blob/master/csrc/code_gen.py + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +// This file is auto-generated. See "hadamard_code_gen.py"\n + +#pragma once + +""" + +template = """ +namespace fouroversix {{ + +__device__ __forceinline__ void hadamard_mult_thread_{N}(float x[{N}]) { + float out[{N}]; + {code} + #pragma unroll + for (int i = 0; i < {N}; i++) { x[i] = out[i]; } +} + +}} // namespace fouroversix + +""" + + +def string_to_array(string: str) -> np.ndarray: + # Convert strings of + and - to bool arrays + string = string.strip().replace("+", "1").replace("-", "-1").split() + return np.stack( + [ + np.fromstring(" ".join(string[i]), dtype=np.int32, sep=" ") + for i in range(len(string)) + ], + ) + + +def array_code_gen(arr: np.ndarray) -> str: + n = arr.shape[0] + if arr.shape[0] != arr.shape[1]: + msg = f"Hadamard matrix is not square: {arr.shape}" + raise ValueError(msg) + out = [ + f"out[{i}] = " + + " ".join([f"{'+' if arr[i, j] == 1 else '-'} x[{j}]" for j in range(n)]) + + ";" + for i in range(n) + ] + return template.replace("{N}", str(n)).replace("{code}", "\n ".join(out)) + + +def main() -> None: + output_dir = ( + Path(__file__).parent.parent + / "src" + / "fouroversix" + / "csrc" + / "include" + / "hadamard_transform_te.h" + ) + output_dir.write_text(header + array_code_gen(string_to_array(had_16))) + + +if __name__ == "__main__": + main() diff --git a/fouroversix/scripts/ptq/__init__.py b/fouroversix/scripts/ptq/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/scripts/ptq/__main__.py b/fouroversix/scripts/ptq/__main__.py new file mode 100644 index 0000000..b94a727 --- /dev/null +++ b/fouroversix/scripts/ptq/__main__.py @@ -0,0 +1,105 @@ +import warnings +from typing import Any + +import click +import modal +from fouroversix.utils import DataType, MatmulBackend, QuantizeBackend, ScaleRule + +from ..resources import app +from .coordinators import LocalEvaluationCoordinator, ModalEvaluationCoordinator +from .utils import EvaluationFramework, PTQMethod + + +@click.command() +@click.option( + "--activation-scale-rule", + "--a-scale-rule", + type=ScaleRule, + default=ScaleRule.mse, +) +@click.option("--detach", is_flag=True) +@click.option("--device", type=str, default="cuda") +@click.option("--dtype", type=DataType, default=DataType.nvfp4) +@click.option( + "--eval-framework", + "-f", + type=EvaluationFramework, + default=EvaluationFramework.lm_eval, +) +@click.option("--group-name", type=str, default=None) +@click.option("--limit", type=int, default=None) +@click.option("--matmul-backend", type=MatmulBackend, default=None) +@click.option("--max-length", type=int, default=None) +@click.option("--modal", is_flag=True) +@click.option("--modal-gpu", type=str) +@click.option("--model-name", "-m", type=str, multiple=True, required=True) +@click.option("--ptq-method", "-p", type=PTQMethod, multiple=True, required=True) +@click.option("--quantize-backend", type=QuantizeBackend, default=None) +@click.option("--task", "-t", type=str, multiple=True, default=["wikitext"]) +@click.option("--trust-remote-code", is_flag=True) +@click.option( + "--weight-scale-rule", + "--w-scale-rule", + type=ScaleRule, + default=ScaleRule.mse, +) +@click.option("--weight-scale-2d", "--w-scale-2d", is_flag=True) +def cli( + *, + detach: bool, + group_name: str | None, + modal_gpu: str, + **kwargs: dict[str, Any], +) -> None: + activation_scale_rule = kwargs.get("activation_scale_rule") + dtype = kwargs.get("dtype") + weight_scale_rule = kwargs.get("weight_scale_rule") + + model_names = kwargs.pop("model_name") + ptq_methods = kwargs.pop("ptq_method") + tasks = kwargs.pop("task") + use_modal = kwargs.pop("modal") + + # Expand shortcuts + if model_names[0] == "llamaqwen": + model_names = [ + "meta-llama/Llama-3.2-1B", + "meta-llama/Llama-3.1-8B", + "meta-llama/Llama-3.1-70B", + "Qwen/Qwen3-1.7B", + "Qwen/Qwen3-8B", + "Qwen/Qwen3-32B", + ] + + if isinstance(tasks, tuple): + tasks = list(tasks) + + if dtype == DataType.mxfp4 and ( + not activation_scale_rule.is_static() or not weight_scale_rule.is_static() + ): + msg = ( + "MXFP4 quantization only supports static scale rules. Setting " + "activation_scale_rule and weight_scale_rule to static_6..." + ) + warnings.warn(msg, stacklevel=1) + + kwargs["activation_scale_rule"] = ScaleRule.static_6 + kwargs["weight_scale_rule"] = ScaleRule.static_6 + + if use_modal: + with modal.enable_output(), app.run(detach=detach): + coordinator = ModalEvaluationCoordinator(group_name_str=group_name or "") + coordinator.start.remote( + model_names, + ptq_methods, + tasks, + modal_gpu=modal_gpu, + **kwargs, + ) + else: + coordinator = LocalEvaluationCoordinator(group_name) + coordinator.start(model_names, ptq_methods, tasks, **kwargs) + + +if __name__ == "__main__": + cli() diff --git a/fouroversix/scripts/ptq/coordinators/__init__.py b/fouroversix/scripts/ptq/coordinators/__init__.py new file mode 100644 index 0000000..67fb01e --- /dev/null +++ b/fouroversix/scripts/ptq/coordinators/__init__.py @@ -0,0 +1,4 @@ +from .local import LocalEvaluationCoordinator +from .modal import ModalEvaluationCoordinator + +__all__ = ["LocalEvaluationCoordinator", "ModalEvaluationCoordinator"] diff --git a/fouroversix/scripts/ptq/coordinators/base.py b/fouroversix/scripts/ptq/coordinators/base.py new file mode 100644 index 0000000..915fe54 --- /dev/null +++ b/fouroversix/scripts/ptq/coordinators/base.py @@ -0,0 +1,105 @@ +from abc import ABC, abstractmethod +from typing import Any + +from sqlalchemy import create_engine +from sqlalchemy.orm import Session, sessionmaker + +from ..experiment import Base, Experiment +from ..utils import PTQMethod + + +class BaseEvaluationCoordinator(ABC): + """Base class for evaluation coordinators.""" + + def get_session(self) -> Session: + """Get an SQLAlchemy session for the SQLite database.""" + engine = create_engine(f"sqlite:///{self.database_path.absolute().as_posix()}") + Base.metadata.create_all(engine) + return sessionmaker(bind=engine)() + + def get_tasks_to_evaluate( + self, + model_name: str, + ptq_method: PTQMethod, + tasks: list[str], + ) -> list[str]: + """ + Get the tasks that should be evaluated. If a group name is set, tasks will only + be evaluated if they have not yet been evaluated for this group name, model + name, PTQ method, and task. + """ + + if self.group_name is None: + return tasks + + session = self.get_session() + experiments = ( + session.query(Experiment) + .filter( + Experiment.group_name == self.group_name, + Experiment.model_name == model_name, + Experiment.ptq_method == ptq_method.value, + Experiment.task.in_(tasks), + ) + .all() + ) + + return [ + task + for task in tasks + if task not in [experiment.task for experiment in experiments] + ] + + @abstractmethod + def run_calibration_tasks( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + **kwargs: dict[str, Any], + ) -> None: + """ + Run any tasks that should be used to calibrate models for a given PTQ method + and set of parameters before running evaluation. + """ + + def save_results( + self, + model_name: str, + ptq_method: PTQMethod, + kwargs: dict[str, Any], + results: list[tuple[str, str, float, dict[str, Any]]], + ) -> None: + """Save the results of a PTQ experiment to the SQLite database.""" + + session = self.get_session() + + for task, metric_name, metric_value, full_results in results: + experiment = Experiment( + group_name=self.group_name, + model_name=model_name, + task=task, + metric_name=metric_name, + metric_value=metric_value, + ptq_method=ptq_method.value, + activation_scale_rule=kwargs.get("activation_scale_rule"), + weight_scale_rule=kwargs.get("weight_scale_rule"), + smoothquant_alpha=kwargs.get("smoothquant_alpha"), + results=full_results, + ) + session.add(experiment) + + print(model_name, ptq_method, task) + print(full_results) + + session.commit() + + @abstractmethod + def start( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + **kwargs: dict[str, Any], + ) -> None: + """Start the evaluation coordinator.""" diff --git a/fouroversix/scripts/ptq/coordinators/local.py b/fouroversix/scripts/ptq/coordinators/local.py new file mode 100644 index 0000000..59d7d7f --- /dev/null +++ b/fouroversix/scripts/ptq/coordinators/local.py @@ -0,0 +1,185 @@ +import itertools +import multiprocessing +from pathlib import Path +from typing import Any + +import torch + +from ..evaluators import get_evaluator +from ..utils import PTQMethod +from .base import BaseEvaluationCoordinator + +FOUROVERSIX_ROOT_DIR = Path(__file__).parent.parent.parent.parent + + +class LocalEvaluationCoordinator(BaseEvaluationCoordinator): + """Evaluation coordinator for running PTQ experiments locally.""" + + def __init__(self, group_name: str | None = None) -> None: + self.database_path = FOUROVERSIX_ROOT_DIR / "results.db" + self.group_name = group_name + + def evaluate( + self, + model_name: str, + ptq_method: PTQMethod, + **kwargs: dict[str, Any], + ) -> dict[str, Any]: + """Evaluate a model with a given PTQ method.""" + + evaluator_cls = get_evaluator(ptq_method) + + return evaluator_cls().evaluate( + model_name=model_name, + save_path=FOUROVERSIX_ROOT_DIR / "ptq", + **kwargs, + ) + + def run_calibration_tasks( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + task_queue: multiprocessing.Queue, + result_queue: multiprocessing.Queue, + **kwargs: dict[str, Any], + ) -> None: + """ + Run any tasks that should be used to calibrate models for a given PTQ method + and set of parameters before running evaluation. + """ + + experiments = 0 + + for model_name, ptq_method in itertools.product(model_names, ptq_methods): + tasks_to_evaluate = self.get_tasks_to_evaluate( + model_name, + ptq_method, + tasks, + ) + + if len(tasks_to_evaluate) == 0: + continue + + evaluator_cls = get_evaluator(ptq_method) + + for calibration_task_kwargs in evaluator_cls.get_calibration_tasks( + model_name, + self.get_session(), + **kwargs, + ): + task_queue.put( + (model_name, ptq_method, {**kwargs, **calibration_task_kwargs}), + ) + experiments += 1 + + for _ in range(experiments): + self.save_results(*result_queue.get()) + + def start( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + *, + device: str, + **kwargs: dict[str, Any], + ) -> None: + """Start the evaluation coordinator.""" + + multiprocessing.set_start_method("spawn", force=True) + + manager = multiprocessing.Manager() + task_queue = manager.Queue() + result_queue = manager.Queue() + + # Start one worker per GPU + num_workers = torch.cuda.device_count() if device == "cuda" else 1 + workers = [] + + for gpu_id in range(num_workers): + p = multiprocessing.Process( + target=self.worker, + args=( + f"cuda:{gpu_id}" if device == "cuda" else device, + task_queue, + result_queue, + ), + ) + p.start() + workers.append(p) + + # Run calibration tasks if necessary for each model and PTQ method + self.run_calibration_tasks( + model_names, + ptq_methods, + tasks, + task_queue, + result_queue, + **kwargs, + ) + + # Run evaluation tasks after models have been calibrated + experiments = 0 + + for model_name, ptq_method in itertools.product(model_names, ptq_methods): + tasks_to_evaluate = self.get_tasks_to_evaluate( + model_name, + ptq_method, + tasks, + ) + + if len(tasks_to_evaluate) == 0: + continue + + evaluator_cls = get_evaluator(ptq_method) + + calibrated_kwargs = evaluator_cls.get_calibrated_kwargs( + model_name, + self.get_session(), + **kwargs, + ) + + task_queue.put( + ( + model_name, + ptq_method, + {**kwargs, "tasks": tasks_to_evaluate, **calibrated_kwargs}, + ), + ) + experiments += 1 + + # Send shutdown signals (one per worker) + for _ in range(num_workers): + task_queue.put(None) + + # Collect results + for _ in range(experiments): + self.save_results(*result_queue.get()) + + for p in workers: + p.join() + + def worker( + self, + device: str, + task_queue: multiprocessing.Queue, + result_queue: multiprocessing.Queue, + ) -> None: + """Worker process for running PTQ experiments locally.""" + + while True: + worker_task = task_queue.get() + + if worker_task is None: + break + + model_name, ptq_method, kwargs = worker_task + + results = self.evaluate( + model_name, + ptq_method, + **{**kwargs, "device": device}, + ) + + result_queue.put((model_name, ptq_method, kwargs, results)) diff --git a/fouroversix/scripts/ptq/coordinators/modal.py b/fouroversix/scripts/ptq/coordinators/modal.py new file mode 100644 index 0000000..96261d6 --- /dev/null +++ b/fouroversix/scripts/ptq/coordinators/modal.py @@ -0,0 +1,152 @@ +import itertools +from pathlib import Path +from typing import Any + +import modal + +from ...resources import FOUROVERSIX_CACHE_PATH, app, cache_volume, get_image +from ..evaluators import get_evaluator +from ..utils import PTQMethod +from .base import BaseEvaluationCoordinator + + +@app.cls( + image=get_image(), + timeout=24 * 60 * 60, + nonpreemptible=True, + volumes={FOUROVERSIX_CACHE_PATH: cache_volume}, +) +class ModalEvaluationCoordinator(BaseEvaluationCoordinator): + """Evaluation coordinator for running PTQ experiments on Modal.""" + + group_name_str: str = modal.parameter() + + @property + def database_path(self) -> Path: + """Path to the SQLite database where experiment results are stored.""" + return FOUROVERSIX_CACHE_PATH / "results.db" + + @property + def group_name(self) -> str | None: + """ + The name of the group experiments are being run in. If this is not None and an + experiment with this group name and matching parameters has already been run, + the experiment will not be run again. + """ + + # Modal doesn't allow None parameters in modal.parameter() + return self.group_name_str if self.group_name_str != "" else None + + def run_calibration_tasks( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + modal_gpu: str, + **kwargs: dict[str, Any], + ) -> None: + """ + Run any tasks that should be used to calibrate models for a given PTQ method + and set of parameters before running evaluation. + """ + + function_calls_with_inputs = [] + + for model_name, ptq_method in itertools.product(model_names, ptq_methods): + tasks_to_evaluate = self.get_tasks_to_evaluate( + model_name, + ptq_method, + tasks, + ) + + if len(tasks_to_evaluate) == 0: + continue + + evaluator_cls = get_evaluator(ptq_method).with_options(gpu=modal_gpu) + + function_calls_with_inputs.extend( + [ + ( + model_name, + ptq_method, + {**kwargs, **calibration_task_kwargs}, + evaluator_cls().evaluate_on_modal.spawn( + model_name=model_name, + save_path=FOUROVERSIX_CACHE_PATH / "ptq", + **{ + **kwargs, + "tasks": tasks_to_evaluate, + **calibration_task_kwargs, + }, + ), + ) + for calibration_task_kwargs in evaluator_cls.get_calibration_tasks( + model_name, + self.get_session(), + **kwargs, + ) + ], + ) + + results = modal.FunctionCall.gather( + *[function_call for _, _, _, function_call in function_calls_with_inputs], + ) + + for (model_name, ptq_method, function_call_kwargs, _), result in zip( + function_calls_with_inputs, + results, + strict=True, + ): + self.save_results(model_name, ptq_method, function_call_kwargs, result) + + @modal.method() + def start( + self, + model_names: list[str], + ptq_methods: list[PTQMethod], + tasks: list[str], + modal_gpu: str, + **kwargs: dict[str, Any], + ) -> None: + """Start the evaluation coordinator.""" + + self.run_calibration_tasks(model_names, ptq_methods, tasks, modal_gpu, **kwargs) + + models_and_ptq_methods = list(itertools.product(model_names, ptq_methods)) + function_calls = [] + + for model_name, ptq_method in models_and_ptq_methods: + tasks_to_evaluate = self.get_tasks_to_evaluate( + model_name, + ptq_method, + tasks, + ) + + if len(tasks_to_evaluate) == 0: + continue + + evaluator_cls = get_evaluator(ptq_method).with_options(gpu=modal_gpu) + + calibrated_kwargs = evaluator_cls.get_calibrated_kwargs( + model_name, + self.get_session(), + **kwargs, + ) + + function_calls.append( + evaluator_cls().evaluate_on_modal.spawn( + model_name=model_name, + tasks=tasks_to_evaluate, + save_path=FOUROVERSIX_CACHE_PATH / "ptq", + **{**kwargs, **calibrated_kwargs}, + ), + ) + + all_results = modal.FunctionCall.gather(*function_calls) + + for (model_name, ptq_method), results in zip( + models_and_ptq_methods, + all_results, + strict=True, + ): + self.save_results(model_name, ptq_method, kwargs, results) diff --git a/fouroversix/scripts/ptq/evaluators/__init__.py b/fouroversix/scripts/ptq/evaluators/__init__.py new file mode 100644 index 0000000..b13f711 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/__init__.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ..utils import PTQMethod +from .awq import AWQEvaluator +from .gptq import GPTQEvaluator +from .high_precision import HighPrecisionEvaluator +from .rtn import RTNEvaluator +from .smoothquant import SmoothQuantEvaluator +from .spinquant import SpinQuantEvaluator + +if TYPE_CHECKING: + from .evaluator import PTQEvaluator + + +def get_evaluator(ptq_method: PTQMethod) -> type[PTQEvaluator]: + """Get the evaluator class for the given PTQ method.""" + + if ptq_method == PTQMethod.awq: + return AWQEvaluator + if ptq_method == PTQMethod.gptq: + return GPTQEvaluator + if ptq_method == PTQMethod.high_precision: + return HighPrecisionEvaluator + if ptq_method == PTQMethod.rtn: + return RTNEvaluator + if ptq_method == PTQMethod.smoothquant: + return SmoothQuantEvaluator + if ptq_method == PTQMethod.spinquant: + return SpinQuantEvaluator + + msg = f"Unsupported PTQ method: {ptq_method}" + raise ValueError(msg) diff --git a/fouroversix/scripts/ptq/evaluators/awq.py b/fouroversix/scripts/ptq/evaluators/awq.py new file mode 100644 index 0000000..0fb7b60 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/awq.py @@ -0,0 +1,134 @@ +from __future__ import annotations + +from pathlib import Path +from typing import TYPE_CHECKING, Any + +import torch +import torch.nn as nn +import torch.nn.functional as F +from fouroversix import FourOverSixLinear, ModelQuantizationConfig +from fouroversix.model.quantize import QuantizedModule + +from ...resources import ( + FOUROVERSIX_CACHE_PATH, + Dependency, + app, + cache_volume, + get_image, + hf_secret, +) +from .rtn import RTNEvaluatorImpl + +if TYPE_CHECKING: + from transformers import AutoModelForCausalLM + +awq_img = get_image(dependencies=[Dependency.fouroversix, Dependency.awq]) + + +class FourOverSixLinearForAWQ(FourOverSixLinear): + """ + Drop-in replacement for `FourOverSixLinear` that quantizes the weights and + activations during AWQ calibration. + """ + + def __init__(self, *args: list[Any], **kwargs: dict[str, Any]) -> None: + super().__init__(*args, **kwargs) + self.config.keep_master_weights = True + self.high_precision = False + + def apply_ptq(self) -> None: + """ + Override the parent method to do nothing, since we need the high-precision + weight when calibrating with AWQ. + """ + + def forward(self, input: torch.Tensor) -> torch.Tensor: + """ + Forward pass that can optionally be run in high precision. This is used to + calculate the high-precision output to compare to during the auto-scale process + in AWQ calibration. + """ + + return ( + F.linear(input, self.weight, self.bias) + if self.high_precision + else super().forward(input) + ) + + +@app.cls( + image=awq_img, + gpu="B200", + secrets=[hf_secret], + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class AWQEvaluator(RTNEvaluatorImpl): + """Evaluate a model using AWQ.""" + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, + quantization_config: ModelQuantizationConfig, + trust_remote_code: bool, + ) -> AutoModelForCausalLM: + """Quantize a model using AWQ.""" + + import torch + from awq.quantize.pre_quant import apply_awq, run_awq + from fouroversix import quantize_model + from transformers import AutoModelForCausalLM, AutoTokenizer + + # Replace FourOverSixLinear with FourOverSixLinearForAWQ + QuantizedModule.register( + nn.Linear, + replace_existing_modules_in_registry=True, + )(FourOverSixLinearForAWQ) + + save_path = save_path / "awq" / model_name / quantization_config.__hash__() + + if not save_path.exists(): + model = AutoModelForCausalLM.from_pretrained( + model_name, + device_map=device, + trust_remote_code=trust_remote_code, + ).eval() + + quantize_model(model, quantization_config) + + enc = AutoTokenizer.from_pretrained( + model_name, + use_fast=False, + trust_remote_code=trust_remote_code, + ) + + awq_results = run_awq( + model, + enc, + w_bit=16, + q_config={"q_group_size": -1, "zero_point": False}, + n_samples=128, + seqlen=512, + calib_data="wikitext", + ) + + Path(save_path).parent.mkdir(parents=True, exist_ok=True) + torch.save(awq_results, save_path) + + model = AutoModelForCausalLM.from_pretrained( + model_name, + device_map=device, + trust_remote_code=trust_remote_code, + ) + + # Apply AWQ + awq_results = torch.load(save_path, map_location="cuda") + apply_awq(model, awq_results) + + # Quantize the model + quantize_model(model, quantization_config) + + return model.to(device) diff --git a/fouroversix/scripts/ptq/evaluators/evaluator.py b/fouroversix/scripts/ptq/evaluators/evaluator.py new file mode 100644 index 0000000..5559992 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/evaluator.py @@ -0,0 +1,204 @@ +from __future__ import annotations + +from abc import ABC, abstractmethod +from contextlib import nullcontext +from pathlib import Path +from typing import TYPE_CHECKING, Any + +import modal +import torch +from fouroversix import ( + DataType, + MatmulBackend, + ModelQuantizationConfig, + QuantizeBackend, + ScaleRule, +) + +from ..utils import EvaluationFramework + +if TYPE_CHECKING: + from sqlalchemy.orm import Session + +from transformers import AutoConfig, AutoModelForCausalLM + + +class PTQEvaluator(ABC): + """Base class for post-training quantization evaluators.""" + + @classmethod + def get_calibration_tasks( + cls, + model_name: str, # noqa: ARG003 + session: Session, # noqa: ARG003 + **kwargs: dict[str, Any], # noqa: ARG003 + ) -> list[dict[str, Any]]: + """ + Get the kwargs for tasks that should be used to calibrate the given model for + this PTQ method before running evaluation. + """ + return [] + + @classmethod + def get_calibrated_kwargs( + cls, + model_name: str, # noqa: ARG003 + session: Session, # noqa: ARG003 + **kwargs: dict[str, Any], # noqa: ARG003 + ) -> dict[str, Any]: + """ + Get the calibrated kwargs for the given model and scale rules. If this model + has not yet been calibrated with these scale rules, an error will be raised. + """ + return {} + + @abstractmethod + def quantize_model(self, **kwargs: dict[str, Any]) -> AutoModelForCausalLM: + """Quantize a model.""" + + def evaluate( + self, + model_name: str, + *, + device: str, + dtype: str, + eval_framework: EvaluationFramework, + limit: int | None, + max_length: int | None, + tasks: list[str], + trust_remote_code: bool = False, + disable_inference_mode: bool = False, + matmul_backend: MatmulBackend | None = None, + quantize_backend: QuantizeBackend | None = None, + weight_scale_2d: bool = False, + activation_scale_rule: ScaleRule | None = None, + weight_scale_rule: ScaleRule | None = None, + save_path: Path | None = None, + **kwargs: dict[str, Any], + ) -> dict[str, Any]: + """Evaluate a quantized model with lm-eval.""" + + inference_context = ( + nullcontext() if disable_inference_mode else torch.inference_mode() + ) + + with inference_context: + model_config = AutoConfig.from_pretrained(model_name) + quantization_config = ModelQuantizationConfig( + activation_scale_rule=activation_scale_rule, + dtype=dtype, + matmul_backend=matmul_backend, + output_dtype=DataType( + ( + str(model_config.dtype).replace("torch.", "") + if model_config.dtype is not None + else "bfloat16" + ), + ), + quantize_backend=quantize_backend, + weight_scale_2d=weight_scale_2d, + weight_scale_rule=weight_scale_rule, + ) + + model = self.quantize_model( + model_name=model_name, + device=device, + save_path=save_path, + quantization_config=quantization_config, + trust_remote_code=trust_remote_code, + **kwargs, + ) + + if eval_framework == EvaluationFramework.lm_eval: + from lm_eval import evaluator + from lm_eval.models.huggingface import HFLM + from lm_eval.tasks import TaskManager + + full_results = evaluator.simple_evaluate( + model=HFLM( + pretrained=model, + device=device, + max_length=max_length, + ), + tasks=tasks, + device=device, + limit=limit, + task_manager=TaskManager( + include_path=( + Path(__file__).parent.parent / "tasks" + ).as_posix(), + ), + ) + + results = [] + + for task in full_results["results"]: + result = full_results["results"][task] + + if "acc_norm,none" in result: + metric_name = "acc_norm,none" + elif "acc,none" in result: + metric_name = "acc,none" + elif "word_perplexity,none" in result: + metric_name = "word_perplexity,none" + else: + metric_name = None + + results.append( + ( + task, + metric_name, + result.get(metric_name), + full_results["results"][task], + ), + ) + + elif eval_framework == EvaluationFramework.inspect_ai: + import inspect_ai + from inspect_ai.model import Model + from inspect_ai.model._generate_config import GenerateConfig + + from .utils import local_hf + + config = GenerateConfig() + full_results = inspect_ai.eval( + tasks=tasks, + model=Model(local_hf(model_name, model, config), config, None), + limit=limit, + log_dir=(save_path / "inspect_ai_logs").as_posix(), + display="none", + ) + + results = [] + + for log in full_results: + metrics = { + k: v.value + for score in log.results.scores + for k, v in score.metrics.items() + } + + metric_name = "accuracy" if "accuracy" in metrics else None + + results.append( + ( + log.eval.task, + metric_name, + metrics.get(metric_name), + metrics, + ), + ) + + del model + torch.cuda.empty_cache() + + return results + + @modal.method() + def evaluate_on_modal( + self, + *args: list[Any], + **kwargs: dict[str, Any], + ) -> dict[str, Any]: + """Evaluate a quantized model on Modal.""" + return self.evaluate(*args, **kwargs) diff --git a/fouroversix/scripts/ptq/evaluators/gptq.py b/fouroversix/scripts/ptq/evaluators/gptq.py new file mode 100644 index 0000000..00e1e4a --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/gptq.py @@ -0,0 +1,99 @@ +import sys +from pathlib import Path +from typing import TYPE_CHECKING + +import fouroversix +from fouroversix import ModelQuantizationConfig + +from ...resources import ( + FOUROVERSIX_CACHE_PATH, + Dependency, + app, + cache_volume, + get_image, + hf_secret, +) +from .evaluator import PTQEvaluator + +if TYPE_CHECKING: + from transformers import AutoModelForCausalLM + +CALIBRATION_DATASET = "wikitext" + +gptq_img = get_image( + dependencies=[ + Dependency.fast_hadamard_transform, + Dependency.qutlass, + Dependency.fp_quant, + Dependency.fouroversix, + ], +) + + +@app.cls( + image=gptq_img, + gpu="B200", + secrets=[hf_secret], + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH: cache_volume}, +) +class GPTQEvaluator(PTQEvaluator): + """Evaluate a model after quantizing it with GPTQ.""" + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, + quantization_config: ModelQuantizationConfig, + trust_remote_code: bool, + ) -> "AutoModelForCausalLM": + """Quantize a model with GPTQ.""" + + sys.path.extend( + [ + ( + Path(fouroversix.__file__).parent.parent.parent + / "third_party" + / "fp-quant" + ).as_posix(), + ], + ) + + from model_quant import main + from transformers import AutoModelForCausalLM + + save_path = save_path / "gptq" / model_name / quantization_config.__hash__() + + if not save_path.exists(): + sys.argv = [ + sys.argv[0], + "--model_name_or_path", + model_name, + "--dataset_name_or_path", + CALIBRATION_DATASET, + "--w_bits", + "4", + "--a_bits", + "4", + "--export_quantized_model", + "realquant", + "--format", + "nvfp", + "--gptq", + "--save_path", + save_path.as_posix(), + "--a_scale_rule", + quantization_config.activation_scale_rule.value, + "--w_scale_rule", + quantization_config.weight_scale_rule.value, + ] + + main() + + return AutoModelForCausalLM.from_pretrained( + save_path, + device_map=device, + trust_remote_code=trust_remote_code, + ) diff --git a/fouroversix/scripts/ptq/evaluators/high_precision.py b/fouroversix/scripts/ptq/evaluators/high_precision.py new file mode 100644 index 0000000..9855290 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/high_precision.py @@ -0,0 +1,45 @@ +from pathlib import Path + +from fouroversix import ModelQuantizationConfig + +from ...resources import ( + FOUROVERSIX_CACHE_PATH, + app, + cache_volume, + get_image, + hf_secret, +) +from .evaluator import PTQEvaluator + +hp_img = get_image() + +with hp_img.imports(): + from transformers import AutoModelForCausalLM + + +@app.cls( + image=hp_img, + gpu="B200", + secrets=[hf_secret], + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class HighPrecisionEvaluator(PTQEvaluator): + """Evaluate a model while keeping it in high precision.""" + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, # noqa: ARG002 + quantization_config: ModelQuantizationConfig, # noqa: ARG002 + trust_remote_code: bool = False, + ) -> "AutoModelForCausalLM": + """Return a model without any quantization.""" + + return AutoModelForCausalLM.from_pretrained( + model_name, + device_map=device, + trust_remote_code=trust_remote_code, + ) diff --git a/fouroversix/scripts/ptq/evaluators/rtn.py b/fouroversix/scripts/ptq/evaluators/rtn.py new file mode 100644 index 0000000..8e23abe --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/rtn.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ...resources import ( + FOUROVERSIX_CACHE_PATH, + app, + cache_volume, + get_image, + hf_secret, +) +from .evaluator import PTQEvaluator + +if TYPE_CHECKING: + from pathlib import Path + + from fouroversix import ModelQuantizationConfig + from transformers import AutoModelForCausalLM + + +rtn_img = get_image() + +with rtn_img.imports(): + from transformers import AutoConfig, AutoModelForCausalLM + + try: + from transformers import FourOverSixConfig as HFFourOverSixConfig + except ImportError: + HFFourOverSixConfig = None + + +class RTNEvaluatorImpl(PTQEvaluator): + """Evaluate a model using round-to-nearest quantization.""" + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, + quantization_config: ModelQuantizationConfig, + trust_remote_code: bool = False, + ) -> AutoModelForCausalLM: + """Quantize a model using round-to-nearest quantization.""" + + model_save_path = ( + save_path / "rtn" / model_name / quantization_config.__hash__() + ) + + if not model_save_path.exists(): + model_config = AutoConfig.from_pretrained(model_name) + + hf_quantization_config = HFFourOverSixConfig( + activation_scale_rule=quantization_config.activation_scale_rule, + dtype=quantization_config.dtype, + matmul_backend=quantization_config.matmul_backend, + output_dtype=quantization_config.output_dtype, + quantize_backend=quantization_config.quantize_backend, + weight_scale_2d=quantization_config.weight_scale_2d, + weight_scale_rule=quantization_config.weight_scale_rule, + ) + + save_kwargs = {} + if hasattr(model_config, "quantization_config"): + hf_quantization_config.pre_quantized_model_config_type = str( + type(model_config), + ) + save_kwargs["save_original_format"] = False + delattr(model_config, "quantization_config") + + model = AutoModelForCausalLM.from_pretrained( + model_name, + device_map=device, + config=model_config, + quantization_config=hf_quantization_config, + trust_remote_code=trust_remote_code, + ) + + if hasattr(hf_quantization_config, "pre_quantized_model_config_type"): + delattr(hf_quantization_config, "pre_quantized_model_config_type") + + model.save_pretrained(model_save_path, **save_kwargs) + else: + model = AutoModelForCausalLM.from_pretrained( + model_save_path, + device_map=device, + trust_remote_code=trust_remote_code, + ) + + # Fix for Inspect AI + model.name_or_path = model_name + + return model + + +@app.cls( + image=rtn_img, + cpu=4, + memory=8 * 1024, + gpu="B200", + secrets=[hf_secret], + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class RTNEvaluator(RTNEvaluatorImpl): + """Evaluate a model using round-to-nearest quantization.""" diff --git a/fouroversix/scripts/ptq/evaluators/smoothquant.py b/fouroversix/scripts/ptq/evaluators/smoothquant.py new file mode 100644 index 0000000..05b6d02 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/smoothquant.py @@ -0,0 +1,238 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +from fouroversix import ModelQuantizationConfig, ScaleRule + +from ...resources import FOUROVERSIX_CACHE_PATH, app, cache_volume, hf_secret +from ..experiment import Experiment +from ..utils import PTQMethod +from .rtn import RTNEvaluatorImpl, rtn_img + +if TYPE_CHECKING: + from pathlib import Path + + from sqlalchemy.orm import Session + + +with rtn_img.imports(): + import torch + import torch.nn as nn + from fouroversix import ( + FourOverSixLinear, + QuantizedModule, + fp4_matmul, + quantize_model, + ) + from transformers import AutoModelForCausalLM + + +ALPHA_CANDIDATES = [x / 10 for x in range(11)] +WIKITEXT_TRAIN = "wikitext_train" + + +class FourOverSixLinearWithSmoothing(FourOverSixLinear): + """ + Drop-in replacement for `FourOverSixLinear` that implements SmoothQuant-style + scaling. + """ + + def __init__( + self, + *args: list[Any], + smoothquant_alpha: float, + **kwargs: dict[str, Any], + ) -> None: + super().__init__(*args, **kwargs) + self.smoothquant_alpha = smoothquant_alpha + + def apply_ptq(self) -> None: + """ + Override the parent method to do nothing, since we need the high-precision + weight when doing PTQ with SmoothQuant. + """ + + def forward(self, input: torch.Tensor) -> torch.Tensor: + """Forward pass with SmoothQuant-style scaling.""" + + out = torch.empty( + *input.shape[:-1], + self.weight.shape[0], + device=input.device, + dtype=self.config.output_dtype.torch_dtype(), + ) + + fprop_activation_config = self.config.get_activation_config() + fprop_weight_config = self.config.get_weight_config( + block_scale_2d=self.config.weight_scale_2d, + ) + + for i in range(input.shape[0]): + s = (input[i].abs().max(dim=0).values ** self.smoothquant_alpha) / ( + self.weight.abs().max(dim=0).values ** (1 - self.smoothquant_alpha) + ) + + out[i] = fp4_matmul( + input[i] / s[None, :], + self.weight * s[None, :], + out_dtype=self.config.output_dtype, + input_config=fprop_activation_config, + other_config=fprop_weight_config, + ) + + if self.bias is not None: + out = out + self.bias + + return out + + +@app.cls( + image=rtn_img, + gpu="B200", + secrets=[hf_secret], + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class SmoothQuantEvaluator(RTNEvaluatorImpl): + """Evaluate a model using SmoothQuant.""" + + @classmethod + def get_calibration_tasks( + cls, + model_name: str, + session: Session, + **kwargs: dict[str, Any], + ) -> list[dict[str, Any]]: + """ + Get the kwargs for tasks that should be used to calibrate the given model for + this PTQ method before running evaluation. + """ + + smoothquant_alpha = get_smoothquant_alpha( + model_name, + kwargs.get("activation_scale_rule"), + kwargs.get("weight_scale_rule"), + session, + ) + + calibration_experiments = get_calibration_experiments( + model_name, + kwargs.get("activation_scale_rule"), + kwargs.get("weight_scale_rule"), + session, + ) + + if smoothquant_alpha is None: + return [ + { + "smoothquant_alpha": candidate_alpha, + "tasks": [WIKITEXT_TRAIN], + } + for candidate_alpha in ALPHA_CANDIDATES + if not any( + experiment.smoothquant_alpha == candidate_alpha + for experiment in calibration_experiments + ) + ] + + return [] + + @classmethod + def get_calibrated_kwargs( + cls, + model_name: str, + session: Session, + **kwargs: dict[str, Any], + ) -> dict[str, Any]: + """ + Get the calibrated kwargs for the given model and scale rules. If this model + has not yet been calibrated with these scale rules, an error will be raised. + """ + + smoothquant_alpha = get_smoothquant_alpha( + model_name, + kwargs.get("activation_scale_rule"), + kwargs.get("weight_scale_rule"), + session, + ) + + if smoothquant_alpha is None: + msg = ( + "SmoothQuant has not been calibrated for this combination of model and " + "scale rules" + ) + raise ValueError(msg) + + return {"smoothquant_alpha": smoothquant_alpha} + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, # noqa: ARG002 + smoothquant_alpha: float, + quantization_config: ModelQuantizationConfig, + trust_remote_code: bool, + ) -> AutoModelForCausalLM: + """Quantize a model using SmoothQuant.""" + + # Replace FourOverSixLinear with FourOverSixLinearWithSmoothing + QuantizedModule.register( + nn.Linear, + replace_existing_modules_in_registry=True, + )(FourOverSixLinearWithSmoothing) + + model = AutoModelForCausalLM.from_pretrained( + model_name, + device_map=device, + trust_remote_code=trust_remote_code, + ) + + quantize_model(model, quantization_config, smoothquant_alpha=smoothquant_alpha) + return model + + +def get_calibration_experiments( + model_name: str, + activation_scale_rule: ScaleRule, + weight_scale_rule: ScaleRule, + db_session: Session, +) -> list[Experiment]: + return ( + db_session.query(Experiment) + .filter( + Experiment.ptq_method == PTQMethod.smoothquant.value, + Experiment.task == WIKITEXT_TRAIN, + Experiment.model_name == model_name, + Experiment.activation_scale_rule == activation_scale_rule.value, + Experiment.weight_scale_rule == weight_scale_rule.value, + Experiment.smoothquant_alpha.isnot(None), + ) + .all() + ) + + +def get_smoothquant_alpha( + model_name: str, + activation_scale_rule: ScaleRule, + weight_scale_rule: ScaleRule, + session: Session, +) -> float | None: + calibration_experiments = get_calibration_experiments( + model_name, + activation_scale_rule, + weight_scale_rule, + session, + ) + + if not all( + any( + experiment.smoothquant_alpha == alpha + for experiment in calibration_experiments + ) + for alpha in ALPHA_CANDIDATES + ): + return None + + return min(calibration_experiments, key=lambda x: x.metric_value).smoothquant_alpha diff --git a/fouroversix/scripts/ptq/evaluators/spinquant.py b/fouroversix/scripts/ptq/evaluators/spinquant.py new file mode 100644 index 0000000..7a22a04 --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/spinquant.py @@ -0,0 +1,240 @@ +from __future__ import annotations + +import subprocess +import sys +from pathlib import Path +from typing import TYPE_CHECKING, Any + +import fouroversix +import modal +from fouroversix import ModelQuantizationConfig + +from ...resources import ( + FOUROVERSIX_CACHE_PATH, + Dependency, + app, + cache_volume, + get_image, + hf_secret, +) +from ..utils import get_model_size +from .evaluator import PTQEvaluator + +if TYPE_CHECKING: + from transformers import AutoModelForCausalLM + +spinquant_img = get_image( + dependencies=[ + Dependency.fast_hadamard_transform, + Dependency.fouroversix, + Dependency.spinquant, + ], + extra_pip_dependencies=["transformers<5.0"], +) + + +MIN_MODEL_SIZE_FOR_8xB200 = 32 +SPINQUANT_STEPS = 100 + +SPINQUANT_ARGS = [ + "--model_max_length", + "8192", + "--fp16", + "False", + "--bf16", + "True", + "--w_bits", + "4", + "--a_bits", + "4", + "--k_bits", + "16", + "--v_bits", + "16", +] + + +@app.cls( + image=spinquant_img, + timeout=24 * 60 * 60, + secrets=[hf_secret], + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class SpinQuantOptimizer: + """Optimize a model with SpinQuant.""" + + def optimize( + self, + model_name: str, + *, + quantization_config: ModelQuantizationConfig, + spinquant_save_path: str, + spinquant_steps: int, + ) -> None: + """Optimize a model with SpinQuant.""" + + subprocess.run( + [ + "torchrun", + "--nnodes=1", + "--nproc_per_node=auto", + ( + Path(fouroversix.__file__).parent.parent.parent + / "third_party" + / "spinquant" + / "optimize_rotation.py" + ).as_posix(), + "--input_model", + model_name, + "--output_dir", + spinquant_save_path, + "--output_rotation_path", + spinquant_save_path, + "--log_on_each_node", + "False", + "--per_device_train_batch_size", + "1", + "--logging_steps", + "1", + "--learning_rate", + "1.5", + "--weight_decay", + "0.", + "--lr_scheduler_type", + "cosine", + "--gradient_checkpointing", + "True", + "--save_safetensors", + "False", + "--max_steps", + str(spinquant_steps), + "--activation_scale_rule", + quantization_config.activation_scale_rule.value, + "--weight_scale_rule", + quantization_config.weight_scale_rule.value, + *SPINQUANT_ARGS, + ], + check=True, + ) + + cache_volume.commit() + + @modal.method() + def optimize_on_modal( + self, + *args: list[Any], + **kwargs: dict[str, Any], + ) -> None: + """Optimize a model with SpinQuant on Modal.""" + return self.optimize(*args, **kwargs) + + +@app.cls( + image=spinquant_img, + timeout=24 * 60 * 60, + secrets=[hf_secret], + gpu="B200", + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, +) +class SpinQuantEvaluator(PTQEvaluator): + """Evaluate a quantized model with SpinQuant.""" + + def quantize_model( + self, + model_name: str, + *, + device: str, + save_path: Path, + quantization_config: ModelQuantizationConfig, + trust_remote_code: bool, + ) -> AutoModelForCausalLM: + """Export a quantized model with SpinQuant.""" + + import fouroversix + + sys.path.append( + ( + Path(fouroversix.__file__).parent.parent.parent + / "third_party" + / "spinquant" + ).as_posix(), + ) + + from eval_utils.main import ptq_model + from transformers import AutoConfig, AutoModelForCausalLM + from utils.process_args import process_args_ptq + + save_path = ( + save_path + / "spinquant" + / ( + f"{model_name}-{quantization_config.activation_scale_rule.value}" + f"-{quantization_config.weight_scale_rule.value}" + ) + ) + + if not (save_path / "R.bin").exists(): + model_is_large = get_model_size(model_name) >= MIN_MODEL_SIZE_FOR_8xB200 + + if model_is_large: + msg = ( + "Automatic SpinQuant optimization is not supported for large " + "models. Please optimize the model manually." + ) + raise RuntimeError(msg) + + SpinQuantOptimizer().optimize( + model_name, + quantization_config=quantization_config, + spinquant_save_path=save_path.as_posix(), + spinquant_steps=SPINQUANT_STEPS, + ) + + sys.argv = [ + sys.argv[0], + "--input_model", + model_name, + "--do_train", + "False", + "--do_eval", + "True", + "--per_device_eval_batch_size", + "4", + "--rotate", + "--optimized_rotation_path", + (save_path / "R.bin").as_posix(), + "--activation_scale_rule", + quantization_config.activation_scale_rule.value, + "--weight_scale_rule", + quantization_config.weight_scale_rule.value, + *SPINQUANT_ARGS, + ] + + config = AutoConfig.from_pretrained(model_name) + + # Llama v3.2 specific: Spinquant is not compatiable with tie_word_embeddings, + # clone lm_head from embed_tokens + process_word_embeddings = False + if config.tie_word_embeddings: + config.tie_word_embeddings = False + process_word_embeddings = True + + model = AutoModelForCausalLM.from_pretrained( + model_name, + config=config, + device_map=device, + trust_remote_code=trust_remote_code, + ) + + if process_word_embeddings: + model.lm_head.weight.data = model.model.embed_tokens.weight.data.clone() + + model.to(device) + model_args, _, ptq_args = process_args_ptq() + + cache_volume.reload() + + model = ptq_model(ptq_args, model, model_args) + model.to(device) + + return model diff --git a/fouroversix/scripts/ptq/evaluators/utils.py b/fouroversix/scripts/ptq/evaluators/utils.py new file mode 100644 index 0000000..8ffdbdf --- /dev/null +++ b/fouroversix/scripts/ptq/evaluators/utils.py @@ -0,0 +1,100 @@ +from typing import Any + +import torch +from inspect_ai.model import modelapi +from inspect_ai.model._generate_config import GenerateConfig +from inspect_ai.model._providers.hf import HuggingFaceAPI +from transformers import AutoModelForCausalLM, AutoTokenizer + + +def set_random_seeds(seed: int | None = None) -> None: + import os + + import numpy as np + from transformers import set_seed + + if seed is None: + seed = np.random.default_rng().integers(2**32 - 1) + # python hash seed + os.environ["PYTHONHASHSEED"] = str(seed) + # transformers seed + set_seed(seed) + + +class LocalHuggingFaceAPI(HuggingFaceAPI): + """ + Wrapper around HuggingFaceAPI that allows for quantized models to be used during + evaluation. + """ + + def __init__( # noqa: C901 + self, + model_name: str, + model: AutoModelForCausalLM, + config: GenerateConfig | None = None, + **model_args: dict[str, Any], + ) -> None: + self.model_name = model_name + self.base_url = None + self.api_key = None + self.api_key_vars = ["HF_TOKEN"] + self._apply_api_key_overrides() + + if config is None: + config = GenerateConfig() + + # set random seeds + if config.seed is not None: + set_random_seeds(config.seed) + + # collect known model_args (then delete them so we can pass the rest on) + def collect_model_arg(name: str) -> Any | None: # noqa: ANN401 + nonlocal model_args + value = model_args.get(name) + if value is not None: + model_args.pop(name) + return value + + device = collect_model_arg("device") + tokenizer = collect_model_arg("tokenizer") + model_path = collect_model_arg("model_path") + tokenizer_path = collect_model_arg("tokenizer_path") + self.batch_size = collect_model_arg("batch_size") + self.chat_template = collect_model_arg("chat_template") + self.tokenizer_call_args = collect_model_arg("tokenizer_call_args") + self.enable_thinking = collect_model_arg("enable_thinking") + if self.tokenizer_call_args is None: + self.tokenizer_call_args = {} + self.hidden_states = collect_model_arg("hidden_states") + + # device + if device: + self.device = device + elif torch.backends.mps.is_available(): + self.device = "mps" + elif torch.cuda.is_available(): + self.device = "cuda:0" + else: + self.device = "cpu" + + # model + self.model = model + + # tokenizer + if tokenizer: + self.tokenizer = AutoTokenizer.from_pretrained(tokenizer) # type: ignore[no-untyped-call] + elif model_path: + if tokenizer_path: + self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) # type: ignore[no-untyped-call] + else: + self.tokenizer = AutoTokenizer.from_pretrained(model_path) # type: ignore[no-untyped-call] + else: + self.tokenizer = AutoTokenizer.from_pretrained(model_name) # type: ignore[no-untyped-call] + # LLMs generally don't have a pad token and we need one for batching + self.tokenizer.pad_token = self.tokenizer.eos_token + self.tokenizer.padding_side = "left" + + +@modelapi(name="local_hf") +def local_hf() -> type[LocalHuggingFaceAPI]: + return LocalHuggingFaceAPI diff --git a/fouroversix/scripts/ptq/experiment.py b/fouroversix/scripts/ptq/experiment.py new file mode 100644 index 0000000..4331bff --- /dev/null +++ b/fouroversix/scripts/ptq/experiment.py @@ -0,0 +1,22 @@ +from sqlalchemy import JSON, Column, Float, Integer, String +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() + + +class Experiment(Base): + """A PTQ experiment with results.""" + + __tablename__ = "experiments" + + id = Column(Integer, primary_key=True, autoincrement=True) + group_name = Column(String) + model_name = Column(String, nullable=False) + task = Column(String, nullable=False) + metric_name = Column(String, nullable=False) + metric_value = Column(Float, nullable=False) + ptq_method = Column(String, nullable=False) + activation_scale_rule = Column(String, nullable=False) + weight_scale_rule = Column(String, nullable=False) + smoothquant_alpha = Column(Float, nullable=True) + results = Column(JSON, nullable=False) diff --git a/fouroversix/scripts/ptq/tasks/__init__.py b/fouroversix/scripts/ptq/tasks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/scripts/ptq/tasks/wikitext_train/preprocess_wikitext.py b/fouroversix/scripts/ptq/tasks/wikitext_train/preprocess_wikitext.py new file mode 100644 index 0000000..e5dff22 --- /dev/null +++ b/fouroversix/scripts/ptq/tasks/wikitext_train/preprocess_wikitext.py @@ -0,0 +1,48 @@ +import re + + +def wikitext_detokenizer(doc): + string = doc["page"] + # contractions + string = string.replace("s '", "s'") + string = re.sub(r"/' [0-9]/", r"/'[0-9]/", string) + # number separators + string = string.replace(" @-@ ", "-") + string = string.replace(" @,@ ", ",") + string = string.replace(" @.@ ", ".") + # punctuation + string = string.replace(" : ", ": ") + string = string.replace(" ; ", "; ") + string = string.replace(" . ", ". ") + string = string.replace(" ! ", "! ") + string = string.replace(" ? ", "? ") + string = string.replace(" , ", ", ") + # double brackets + string = re.sub(r"\(\s*([^\)]*?)\s*\)", r"(\1)", string) + string = re.sub(r"\[\s*([^\]]*?)\s*\]", r"[\1]", string) + string = re.sub(r"{\s*([^}]*?)\s*}", r"{\1}", string) + string = re.sub(r"\"\s*([^\"]*?)\s*\"", r'"\1"', string) + string = re.sub(r"'\s*([^']*?)\s*'", r"'\1'", string) + # miscellaneous + string = string.replace("= = = =", "====") + string = string.replace("= = =", "===") + string = string.replace("= =", "==") + string = string.replace(" " + chr(176) + " ", chr(176)) + string = string.replace(" \n", "\n") + string = string.replace("\n ", "\n") + string = string.replace(" N ", " 1 ") + string = string.replace(" 's", "'s") + + return string + + +def process_results(doc, results): + (loglikelihood,) = results + # IMPORTANT: wikitext counts number of words in *original doc before detokenization* + _words = len(re.split(r"\s+", doc["page"])) + _bytes = len(doc["page"].encode("utf-8")) + return { + "word_perplexity": (loglikelihood, _words), + "byte_perplexity": (loglikelihood, _bytes), + "bits_per_byte": (loglikelihood, _bytes), + } diff --git a/fouroversix/scripts/ptq/tasks/wikitext_train/wikitext_train.yaml b/fouroversix/scripts/ptq/tasks/wikitext_train/wikitext_train.yaml new file mode 100644 index 0000000..ba16ab3 --- /dev/null +++ b/fouroversix/scripts/ptq/tasks/wikitext_train/wikitext_train.yaml @@ -0,0 +1,16 @@ +task: wikitext_train +dataset_path: EleutherAI/wikitext_document_level +dataset_name: wikitext-2-raw-v1 +output_type: loglikelihood_rolling +test_split: train +doc_to_text: "" +doc_to_target: !function preprocess_wikitext.wikitext_detokenizer +process_results: !function preprocess_wikitext.process_results +should_decontaminate: true +doc_to_decontamination_query: "{{page}}" +metric_list: + - metric: word_perplexity + - metric: byte_perplexity + - metric: bits_per_byte +metadata: + version: 2.0 diff --git a/fouroversix/scripts/ptq/utils.py b/fouroversix/scripts/ptq/utils.py new file mode 100644 index 0000000..5a20c1d --- /dev/null +++ b/fouroversix/scripts/ptq/utils.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from enum import Enum + + +class EvaluationFramework(str, Enum): + """Frameworks to use when evaluating models.""" + + inspect_ai = "inspect_ai" + lm_eval = "lm_eval" + + +class PTQMethod(str, Enum): + """Methods of post-training quantization.""" + + awq = "awq" + high_precision = "high_precision" + gptq = "gptq" + rtn = "rtn" + smoothquant = "smoothquant" + spinquant = "spinquant" + + +def get_model_size(model_name: str | None) -> float: + return float(model_name.split("-")[-1][:-1]) if model_name else 0.0 diff --git a/fouroversix/scripts/resources.py b/fouroversix/scripts/resources.py new file mode 100644 index 0000000..9707616 --- /dev/null +++ b/fouroversix/scripts/resources.py @@ -0,0 +1,388 @@ +from __future__ import annotations + +import configparser +import os +import shutil +import subprocess +from enum import Enum +from pathlib import Path +from typing import TYPE_CHECKING + +import modal +import tomllib + +if TYPE_CHECKING: + from collections.abc import Callable + +FOUROVERSIX_CACHE_PATH = Path("/fouroversix") +FOUROVERSIX_INSTALL_PATH = Path("/root/fouroversix") +KERNEL_DEV_MODE = os.getenv("KERNEL_DEV_MODE", "0") == "1" + +app = modal.App("fouroversix") +cache_volume = modal.Volume.from_name("fouroversix", create_if_missing=True) +hf_secret = modal.Secret.from_name("huggingface-secret") +wandb_secret = modal.Secret.from_name("wandb-secret") + + +class Dependency(str, Enum): + """Dependencies to add to the base image.""" + + awq = "awq" + fast_hadamard_transform = "fast_hadamard_transform" + flame = "flame" + flash_attention = "flash_attention" + fouroversix = "fouroversix" + fp_quant = "fp_quant" + qutlass = "qutlass" + spinquant = "spinquant" + transformer_engine = "transformer_engine" + + +class Submodule(str, Enum): + """Submodules of Four Over Six to add to the base image.""" + + cutlass = "cutlass" + flame = "flame" + fast_hadamard_transform = "fast_hadamard_transform" + fp_quant = "fp_quant" + llm_awq = "llm_awq" + qutlass = "qutlass" + spinquant = "spinquant" + + def has_untracked_or_unstaged_changes(self) -> bool: + """Check if the submodule has untracked or unstaged changes.""" + + git_status = subprocess.run( + [ + "git", + "-C", + self.get_local_path(), + "status", + "--porcelain", + ], + check=False, + stderr=subprocess.DEVNULL, + stdout=subprocess.PIPE, + text=True, + ) + + return bool(git_status.stdout.strip()) + + def get_install_path(self) -> str: + """Get the path where this submodule will be installed in the Modal image.""" + return f"{FOUROVERSIX_INSTALL_PATH}/{self.get_local_path()}" + + def get_local_path(self) -> str: + """Get the path of the submodule relative to the root directory.""" + return f"third_party/{self.value.replace('_', '-')}" + + def get_remote_url(self) -> str: + """Get the remote URL of the submodule.""" + + gitmodules_path = Path(__file__).parent.parent / ".gitmodules" + + if not gitmodules_path.exists(): + gitmodules_path = FOUROVERSIX_INSTALL_PATH / ".gitmodules" + + with gitmodules_path.open() as f: + # Remove leading whitespace to make it a valid INI file + gitmodules_contents = "\n".join(line.lstrip() for line in f.readlines()) + + config = configparser.ConfigParser() + config.read_string(gitmodules_contents) + + for section in config.sections(): + if config[section]["path"] == self.get_local_path(): + url = config[section]["url"] + break + + if url.startswith("https://"): + return url + + msg = f"Unsupported remote URL format: {url}" + raise ValueError(msg) + + +cuda_version_to_image_tag = { + "12.8": "nvcr.io/nvidia/cuda-dl-base:25.03-cuda12.8-devel-ubuntu24.04", + "12.9": "nvcr.io/nvidia/cuda-dl-base:25.06-cuda12.9-devel-ubuntu24.04", + "13.0": "nvcr.io/nvidia/cuda-dl-base:25.09-cuda13.0-devel-ubuntu24.04", + "13.1": "nvcr.io/nvidia/cuda-dl-base:25.12-cuda13.1-devel-ubuntu24.04", +} + + +def add_submodule(img: modal.Image, submodule: Submodule) -> modal.Image: + if submodule.has_untracked_or_unstaged_changes(): + # Submodule has uncommitted changes, build image with local copy + return img.add_local_dir( + submodule.get_local_path(), + submodule.get_install_path(), + copy=True, + ) + + # Submodule has no uncommitted changes, download from remote to save time + return img.run_commands( + f"git clone {submodule.get_remote_url()} {submodule.get_install_path()}", + ) + + +def install_flash_attn() -> None: + subprocess.run( + ["pip", "install", "flash-attn", "--no-build-isolation"], + check=False, + ) + + +def install_fouroversix() -> None: + subprocess.run( + [ + "pip", + "install", + "--no-deps", + "--no-build-isolation", + "-e", + FOUROVERSIX_INSTALL_PATH.as_posix(), + ], + check=False, + ) + + +def install_fouroversix_non_editable() -> None: + shutil.copytree( + FOUROVERSIX_CACHE_PATH / "build", + FOUROVERSIX_INSTALL_PATH / "build", + ) + subprocess.run( + ["python", "setup.py", "build_ext", "--inplace"], + check=False, + ) + shutil.copytree( + FOUROVERSIX_INSTALL_PATH / "build", + FOUROVERSIX_CACHE_PATH / "build", + dirs_exist_ok=True, + ) + subprocess.run( + [ + "pip", + "install", + "--no-deps", + "--no-build-isolation", + FOUROVERSIX_INSTALL_PATH.as_posix(), + ], + check=False, + ) + + +def install_qutlass() -> None: + subprocess.run( + [ + "pip", + "install", + "--no-build-isolation", + Submodule.qutlass.get_install_path(), + ], + check=False, + ) + + +def get_image( # noqa: C901, PLR0912 + dependencies: list[Dependency] | None = None, + *, + cuda_version: str = "12.9", + deploy: bool = False, + extra_env: dict[str, str] | None = None, + extra_pip_dependencies: list[str] | None = None, + include_tests: bool = False, + python_version: str = "3.13", + pytorch_version: str = "2.10.0", + run_before_copy: Callable[[modal.Image], modal.Image] | None = None, +) -> modal.Image: + if dependencies is None: + dependencies = [Dependency.fouroversix] + + pyproject_path = Path(__file__).parent.parent / "pyproject.toml" + + if not pyproject_path.exists(): + pyproject_path = Path(__file__).parent.parent / "fouroversix" / "pyproject.toml" + + with pyproject_path.open("rb") as f: + pyproject_data = tomllib.load(f) + + img = ( + modal.Image.from_registry( + cuda_version_to_image_tag[cuda_version], + add_python=python_version, + ) + .entrypoint([]) + .apt_install("clang", "git") + .uv_pip_install(*pyproject_data["build-system"]["requires"], "numpy") + .uv_pip_install( + f"torch=={pytorch_version}", + extra_index_url=( + f"https://download.pytorch.org/whl/cu{cuda_version.replace('.', '')}" + ), + ) + ) + + for dependency in dependencies: + if dependency == Dependency.awq: + img = add_submodule(img, Submodule.llm_awq).run_commands( + f"pip install --no-deps -e {Submodule.llm_awq.get_install_path()}", + ) + + if dependency == Dependency.fast_hadamard_transform: + img = add_submodule(img, Submodule.fast_hadamard_transform).run_commands( + f"pip install {Submodule.fast_hadamard_transform.get_install_path()} " + "--no-build-isolation", + ) + + if dependency == Dependency.flame: + img = ( + img.apt_install("pciutils") + .uv_pip_install( + "flash-linear-attention", + "ninja", + "psutil", + "git+https://github.com/pytorch/torchtitan.git@0b44d4c", + "tyro", + "wheel", + ) + .run_commands( + "git clone https://github.com/fla-org/flame.git " + f"{FOUROVERSIX_INSTALL_PATH}/third_party/flame", + f"pip install -e {FOUROVERSIX_INSTALL_PATH}/third_party/flame", + ) + ) + + if dependency == Dependency.flash_attention: + img = img.run_function( + install_flash_attn, + cpu=64, + memory=128 * 1024, + gpu="B200", + ) + + if dependency == Dependency.fouroversix: + img = ( + add_submodule( + img.env( + {"CUDA_ARCHS": "100", "FORCE_BUILD": "1", "MAX_JOBS": "32"}, + ), + Submodule.cutlass, + ) + .add_local_file( + "pyproject.toml", + f"{FOUROVERSIX_INSTALL_PATH}/pyproject.toml", + copy=True, + ) + .uv_pip_install( + *pyproject_data["project"]["optional-dependencies"]["evals"], + ) + .add_local_file( + "setup.py", + f"{FOUROVERSIX_INSTALL_PATH}/setup.py", + copy=True, + ) + .add_local_file( + "src/fouroversix/__init__.py", + f"{FOUROVERSIX_INSTALL_PATH}/src/fouroversix/__init__.py", + copy=True, + ) + ) + + if KERNEL_DEV_MODE: + img = ( + img.add_local_file( + "README.md", + f"{FOUROVERSIX_INSTALL_PATH}/README.md", + copy=True, + ) + .add_local_file( + "LICENSE.md", + f"{FOUROVERSIX_INSTALL_PATH}/LICENSE.md", + copy=True, + ) + .workdir(FOUROVERSIX_INSTALL_PATH) + ) + + img = img.add_local_dir( + "src/fouroversix/csrc", + f"{FOUROVERSIX_INSTALL_PATH}/src/fouroversix/csrc", + copy=True, + ) + + if not KERNEL_DEV_MODE: + img = img.run_function(install_fouroversix, cpu=32, memory=64 * 1024) + + if dependency == Dependency.fp_quant: + img = add_submodule(img, Submodule.fp_quant).run_commands( + f"pip install {Submodule.fp_quant.get_install_path()}/inference_lib", + ) + + if dependency == Dependency.qutlass: + img = ( + add_submodule(img.apt_install("cmake"), Submodule.qutlass) + .env({"MAX_JOBS": "32"}) + .run_function(install_qutlass, gpu="B200", cpu=32, memory=64 * 1024) + ) + + if dependency == Dependency.spinquant: + img = add_submodule(img, Submodule.spinquant) + + if dependency == Dependency.transformer_engine: + img = img.uv_pip_install( + "transformer_engine[pytorch]", + extra_options="--no-build-isolation", + ) + + if extra_pip_dependencies is not None: + img = img.uv_pip_install(*extra_pip_dependencies) + + img = img.env({"HF_HOME": FOUROVERSIX_CACHE_PATH.as_posix(), **(extra_env or {})}) + + if run_before_copy is not None: + img = run_before_copy(img) + + # Add source files after all dependencies are added so we can avoid rebuilding when + # they change + for dependency in dependencies: + if dependency == Dependency.flame: + img = ( + img.add_local_dir( + "third_party/flame/custom_models", + f"{FOUROVERSIX_INSTALL_PATH}/third_party/flame/custom_models", + ) + .add_local_dir( + "scripts/train/configs", + f"{FOUROVERSIX_INSTALL_PATH}/scripts/train/configs", + ) + .add_local_file( + "third_party/flame/train.sh", + f"{FOUROVERSIX_INSTALL_PATH}/third_party/flame/train.sh", + ) + ) + + if dependency == Dependency.fouroversix: + img = img.add_local_dir( + "src", + f"{FOUROVERSIX_INSTALL_PATH}/src", + copy=deploy or KERNEL_DEV_MODE, + ignore=lambda p: p.suffix == ".so", + ).add_local_file( + ".gitmodules", + f"{FOUROVERSIX_INSTALL_PATH}/.gitmodules", + copy=deploy or KERNEL_DEV_MODE, + ) + + if KERNEL_DEV_MODE: + img = img.run_function( + install_fouroversix_non_editable, + cpu=32, + memory=64 * 1024, + volumes={FOUROVERSIX_CACHE_PATH.as_posix(): cache_volume}, + ) + + if include_tests: + img = img.add_local_dir("tests", f"{FOUROVERSIX_INSTALL_PATH}/tests") + + return img diff --git a/fouroversix/scripts/speedtest/__init__.py b/fouroversix/scripts/speedtest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/scripts/speedtest/matmul.py b/fouroversix/scripts/speedtest/matmul.py new file mode 100644 index 0000000..64edd52 --- /dev/null +++ b/fouroversix/scripts/speedtest/matmul.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +from typing import Any + +import click +import modal + +from ..resources import app, get_image + +img = get_image() + +with img.imports(): + import torch + import torch.utils.benchmark as benchmark + from fouroversix import DataType, MatmulBackend, QuantizationConfig, quantize_to_fp4 + from fouroversix.matmul.frontend import AVAILABLE_BACKENDS + + +def run_speedtest( + *, + dtype: DataType = DataType.nvfp4, + m: int = 1024, + n: int = 1024, + k: int = 1024, + repeats: int = 100, +) -> None: + """Test speed on a B200 on Modal.""" + + x = torch.randn(m, k, dtype=torch.bfloat16, device="cuda") + y = torch.randn(k, n, dtype=torch.bfloat16, device="cuda") + + config = QuantizationConfig(dtype=dtype) + x_quantized = quantize_to_fp4(x, config) + y_quantized = quantize_to_fp4(y, config) + out_dtype = DataType.bfloat16 + + print(f"Testing with {m}x{k} @ {k}x{n}") + + for backend in [MatmulBackend.cutlass, MatmulBackend.pytorch]: + backend_cls = AVAILABLE_BACKENDS[backend] + print(f"{backend.value}: ", end="") + + if not backend_cls.is_available(): + print("Not available") + continue + + if not backend_cls.is_supported( + x_quantized, + y_quantized, + out_dtype=out_dtype, + ): + print("Not supported") + continue + + t = benchmark.Timer( + setup="from fouroversix import fp4_matmul", + stmt=( + "fp4_matmul(x_quantized, y_quantized, backend=backend, " + "out_dtype=out_dtype)" + ), + globals={ + "x_quantized": x_quantized, + "y_quantized": y_quantized, + "backend": backend, + "out_dtype": out_dtype, + }, + ) + + print(f"{t.timeit(repeats).mean * 1000:.4f}ms") + + +@app.function(image=img, cpu=4, memory=8 * 1024, gpu="B200") +def run_speedtest_on_modal(**kwargs: dict[str, Any]) -> None: + run_speedtest(**kwargs) + + +@click.command() +@click.option("--dtype", type=DataType, default=DataType.nvfp4) +@click.option("--m", type=int, default=1024) +@click.option("--modal", is_flag=True) +@click.option("--n", type=int, default=1024) +@click.option("--k", type=int, default=1024) +@click.option("--repeats", type=int, default=100) +def cli(**kwargs: dict[str, Any]) -> None: + if kwargs.pop("modal"): + with modal.enable_output(), app.run(): + run_speedtest_on_modal.remote(**kwargs) + else: + run_speedtest(**kwargs) + + +if __name__ == "__main__": + cli() diff --git a/fouroversix/scripts/speedtest/quantize.py b/fouroversix/scripts/speedtest/quantize.py new file mode 100644 index 0000000..5192376 --- /dev/null +++ b/fouroversix/scripts/speedtest/quantize.py @@ -0,0 +1,108 @@ +from __future__ import annotations + +from typing import Any + +import click +import modal + +from ..resources import Dependency, app, get_image + +img = get_image(dependencies=[Dependency.transformer_engine, Dependency.fouroversix]) + +with img.imports(): + import torch + import torch.utils.benchmark as benchmark + from fouroversix import QuantizationConfig, QuantizeBackend, RoundStyle, ScaleRule + from fouroversix.quantize.frontend import AVAILABLE_BACKENDS + + +def run_speedtest( + *, + block_scale_2d: bool = False, + input_shape: str = "1024,1024", + repeats: int = 100, + rht: bool = False, + round_style: str = "nearest", + scale_rule: str = "mse", + transpose: bool = False, +) -> None: + """Test speed on a B200 on Modal.""" + + input_shape = tuple(int(dim.strip()) for dim in input_shape.split(",")) + x = torch.randn(input_shape, dtype=torch.bfloat16, device="cuda") + + print("Testing with config:") + print(f"- block_scale_2d: {block_scale_2d}") + print(f"- input_shape: {input_shape}") + print(f"- rht: {rht}") + print(f"- round_style: {round_style}") + print(f"- scale_rule: {scale_rule}") + print(f"- transpose: {transpose}") + print() + + for backend in [ + QuantizeBackend.cuda, + QuantizeBackend.transformer_engine, + QuantizeBackend.triton, + QuantizeBackend.pytorch, + ]: + config = QuantizationConfig( + backend=backend, + block_scale_2d=block_scale_2d, + rht=rht, + round_style=RoundStyle(round_style), + scale_rule=ScaleRule(scale_rule), + transpose=transpose, + ) + + backend_cls = AVAILABLE_BACKENDS[backend] + print(f"{backend.value}: ", end="") + + if not backend_cls.is_available(): + print("Not available") + continue + + if not backend_cls.is_supported(x, config): + print("Not supported") + continue + + config = QuantizationConfig( + backend=backend, + rht=rht, + round_style=RoundStyle(round_style), + scale_rule=ScaleRule(scale_rule), + ) + + t = benchmark.Timer( + setup="from fouroversix import quantize_to_fp4", + stmt="quantize_to_fp4(x, config)", + globals={"x": x, "config": config}, + ) + + print(f"{t.timeit(repeats).mean * 1000:.4f}ms") + + +@app.function(image=img, cpu=4, memory=8 * 1024, gpu="B200") +def run_speedtest_on_modal(**kwargs: dict[str, Any]) -> None: + run_speedtest(**kwargs) + + +@click.command() +@click.option("--block-scale-2d", is_flag=True) +@click.option("--input-shape", type=str, default="1024,1024") +@click.option("--modal", is_flag=True) +@click.option("--repeats", type=int, default=100) +@click.option("--rht", is_flag=True) +@click.option("--round-style", type=RoundStyle, default=RoundStyle.nearest) +@click.option("--scale-rule", type=ScaleRule, default=ScaleRule.mse) +@click.option("--transpose", is_flag=True) +def cli(**kwargs: dict[str, Any]) -> None: + if kwargs.pop("modal"): + with modal.enable_output(), app.run(): + run_speedtest_on_modal.remote(**kwargs) + else: + run_speedtest(**kwargs) + + +if __name__ == "__main__": + cli() diff --git a/fouroversix/scripts/test_on_modal.py b/fouroversix/scripts/test_on_modal.py new file mode 100644 index 0000000..eb29804 --- /dev/null +++ b/fouroversix/scripts/test_on_modal.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from pathlib import Path + +from .resources import FOUROVERSIX_INSTALL_PATH, Dependency, app, get_image + +img = get_image( + dependencies=[Dependency.transformer_engine, Dependency.fouroversix], + include_tests=True, +) + +with img.imports(): + import pytest + + +@app.function(image=img, cpu=4, memory=8 * 1024, gpu="B200", timeout=30 * 60) +def run_tests(*args: list[str]) -> None: + """Run tests on a B200 on Modal.""" + + args = list(args) + tests_path = (Path(FOUROVERSIX_INSTALL_PATH) / "tests").as_posix() + + if len(args) == 0: + args = [tests_path] + elif "tests" in args[0] or "test_" in args[0]: + args[0] = (Path(FOUROVERSIX_INSTALL_PATH) / args[0]).as_posix() + else: + args = [tests_path, *args] + + pytest.main(args) diff --git a/fouroversix/scripts/train/__init__.py b/fouroversix/scripts/train/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/scripts/train/__main__.py b/fouroversix/scripts/train/__main__.py new file mode 100644 index 0000000..60ab80d --- /dev/null +++ b/fouroversix/scripts/train/__main__.py @@ -0,0 +1,244 @@ +from __future__ import annotations + +import os +import subprocess +import time +from pathlib import Path +from typing import Any + +import click +import modal + +from ..resources import ( + FOUROVERSIX_CACHE_PATH, + FOUROVERSIX_INSTALL_PATH, + Dependency, + app, + cache_volume, + get_image, + wandb_secret, +) + +img = get_image( + dependencies=[Dependency.flash_attention, Dependency.flame, Dependency.fouroversix], + extra_pip_dependencies=["datasets<4.6"], +) + + +def train( + *, + batch_size: int, + checkpoint_interval: int, + checkpoint_keep_latest_k: int, + checkpoint_load_step: int, + context_length: int, + dataset: str, + dataset_name: str, + dataset_split: str, + exp_folder: str, + gradient_accumulation_steps: int, + initial_load_path: str | None, + job_config_file: str, + lr: float, + lr_decay_type: str, + model_config: str, + model_name: str, + no_torch_compile: bool, + seed: int, + tokenizer: str, + training_steps: int | None, +) -> None: + import torch + + # Cache activations and gradients and set dump folder + os.environ["CACHE_ACTIVATIONS"] = "1" + os.environ["CACHE_GRADIENTS"] = "1" + os.environ["DUMP_FOLDER"] = f"{exp_folder}/{model_name}" + + # Set MODEL_NAME for wandb + os.environ["MODEL_NAME"] = model_name + + # Set NGPU for flame + os.environ["NGPU"] = str(torch.cuda.device_count()) + + if training_steps is None: + if dataset_name == "sample-10BT": + num_tokens = 10_000_000_000 + elif dataset_name == "sample-100BT": + num_tokens = 100_000_000_000 + else: + msg = ( + "You must provide the number of training steps if not using the " + "sample-10BT or sample-100BT datasets" + ) + raise ValueError(msg) + + training_steps = num_tokens // int( + context_length * batch_size * torch.cuda.device_count(), + ) + + # Start training + args = [ + "bash", + "train.sh", + "--job.config_file", + job_config_file, + "--job.dump_folder", + f"{exp_folder}/{model_name}", + "--model.config", + model_config, + "--model.tokenizer_path", + tokenizer, + "--optimizer.name", + "AdamW", + "--optimizer.lr", + str(lr), + "--lr_scheduler.warmup_steps", + "0", + "--lr_scheduler.decay_ratio", + "0.15", + "--lr_scheduler.decay_type", + lr_decay_type, + "--lr_scheduler.lr_min", + "0.01", + "--training.batch_size", + "1", + "--training.seq_len", + str(int(context_length * batch_size)), + "--training.context_len", + str(context_length), + "--training.varlen", + "--training.gradient_accumulation_steps", + str(gradient_accumulation_steps), + "--training.steps", + str(training_steps), + "--training.max_norm", + "1.0", + "--training.skip_nan_inf", + "--training.dataset", + dataset, + "--training.dataset_name", + dataset_name, + "--training.dataset_split", + dataset_split, + "--training.num_workers", + "32", + "--training.prefetch_factor", + "2", + "--training.seed", + str(seed), + "--checkpoint.interval", + str(checkpoint_interval), + "--checkpoint.load_step", + str(checkpoint_load_step), + "--checkpoint.keep_latest_k", + str(checkpoint_keep_latest_k), + "--metrics.log_freq", + "1", + ] + + if not no_torch_compile: + args.append("--training.compile") + + if initial_load_path is not None: + args.extend( + [ + "--checkpoint.initial_load_path", + initial_load_path, + "--checkpoint.no_initial_load_model_weights_only", + ], + ) + + subprocess.run(args, check=True) + + +@app.cls( + image=img, + gpu="B200:8", + timeout=24 * 60 * 60, + cpu=64, + memory=8 * 64 * 1024, + volumes={FOUROVERSIX_CACHE_PATH: cache_volume}, + secrets=[wandb_secret], +) +class ModalTrainer: + """Run training jobs on Modal.""" + + @modal.method() + def train(self, **kwargs: dict[str, Any]) -> None: + """Start a training job on Modal.""" + os.chdir(FOUROVERSIX_INSTALL_PATH / "third_party" / "flame") + train(**kwargs) + + +@click.command() +@click.option("--batch-size", type=float, default=16) +@click.option("--checkpoint-interval", type=int, default=1000) +@click.option("--checkpoint-keep-latest-k", type=int, default=0) +@click.option("--checkpoint-load-step", type=int, default=-1) +@click.option("--context-length", type=int, default=8192) +@click.option("--dataset", type=str, default="HuggingFaceFW/fineweb-edu") +@click.option("--dataset-name", type=str, default="sample-100BT") +@click.option("--dataset-split", type=str, default="train") +@click.option("--detach", is_flag=True) +@click.option("--exp-folder", type=str, default="exp") +@click.option("--gradient-accumulation-steps", type=int, default=1) +@click.option("--initial-load-path", type=str) +@click.option("--job-config-file", type=str, default="flame/models/fla.toml") +@click.option("--lr", type=float, default=1.2e-3) +@click.option("--lr-decay-type", type=str, default="linear") +@click.option("--modal", is_flag=True) +@click.option("--modal-gpu", type=str, default="B200:8") +@click.option("--model-config", type=str, required=True) +@click.option("--model-name", type=str, required=True) +@click.option("--no-torch-compile", is_flag=True) +@click.option("--seed", type=int, default=42) +@click.option("--tokenizer", type=str, default="fla-hub/transformer-1.3B-100B") +@click.option("--training-steps", type=int, default=None) +@click.option("--wait-for-pid", type=int, default=None) +def cli(**kwargs: dict[str, Any]) -> None: + # Options that are not passed to the train function + detach = kwargs.pop("detach", False) + modal_gpu = kwargs.pop("modal_gpu", "B200:8") + use_modal = kwargs.pop("modal", False) + wait_for_pid = kwargs.pop("wait_for_pid", None) + + # Wait for the previous training job to finish + if wait_for_pid is not None: + while ( + subprocess.run(["kill", "-0", str(wait_for_pid)], check=False).returncode + == 0 + ): + time.sleep(1) + + time.sleep(60) + + if not Path(kwargs["model_config"]).exists(): + kwargs["model_config"] = ( + Path(__file__).parent.parent.parent / kwargs["model_config"] + ) + + if not Path(kwargs["model_config"]).exists(): + msg = f"Model config file not found: {kwargs['model_config']}" + raise FileNotFoundError(msg) + + # Set exp folder on Modal + if use_modal: + with modal.enable_output(), app.run(detach=detach): + kwargs["exp_folder"] = (FOUROVERSIX_CACHE_PATH / "exp").as_posix() + kwargs["model_config"] = ( + (FOUROVERSIX_INSTALL_PATH / kwargs["model_config"]) + .absolute() + .as_posix() + ) + + ModalTrainer.with_options(gpu=modal_gpu)().train.remote(**kwargs) + else: + kwargs["model_config"] = Path(kwargs["model_config"]).absolute().as_posix() + + os.chdir(Path(__file__).parent.parent.parent / "third_party" / "flame") + train(**kwargs) + + +if __name__ == "__main__": + cli() diff --git a/fouroversix/scripts/train/configs/transformer_1B_bf16.json b/fouroversix/scripts/train/configs/transformer_1B_bf16.json new file mode 100644 index 0000000..448abc7 --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_1B_bf16.json @@ -0,0 +1,26 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_ratio": 4, + "hidden_size": 2048, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 32, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 24 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/configs/transformer_1B_fp4.json b/fouroversix/scripts/train/configs/transformer_1B_fp4.json new file mode 100644 index 0000000..0e6dc86 --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_1B_fp4.json @@ -0,0 +1,31 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_ratio": 4, + "hidden_size": 2048, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 32, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 20, + "dtype": "nvfp4", + "scale_rule": "static_6" + }, + { + "repeats": 4 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/configs/transformer_1B_fp4_fouroversix.json b/fouroversix/scripts/train/configs/transformer_1B_fp4_fouroversix.json new file mode 100644 index 0000000..d0cccc4 --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_1B_fp4_fouroversix.json @@ -0,0 +1,31 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_ratio": 4, + "hidden_size": 2048, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 32, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 20, + "dtype": "nvfp4", + "scale_rule": "mse" + }, + { + "repeats": 4 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/configs/transformer_340M_bf16.json b/fouroversix/scripts/train/configs/transformer_340M_bf16.json new file mode 100644 index 0000000..1df0d5a --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_340M_bf16.json @@ -0,0 +1,25 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_size": 1024, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 16, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 24 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/configs/transformer_340M_fp4.json b/fouroversix/scripts/train/configs/transformer_340M_fp4.json new file mode 100644 index 0000000..597b6d4 --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_340M_fp4.json @@ -0,0 +1,30 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_size": 1024, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 16, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 20, + "dtype": "nvfp4", + "scale_rule": "static_6" + }, + { + "repeats": 4 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/configs/transformer_340M_fp4_fouroversix.json b/fouroversix/scripts/train/configs/transformer_340M_fp4_fouroversix.json new file mode 100644 index 0000000..3ae5463 --- /dev/null +++ b/fouroversix/scripts/train/configs/transformer_340M_fp4_fouroversix.json @@ -0,0 +1,30 @@ +{ + "attention_bias": false, + "bos_token_id": 1, + "eos_token_id": 2, + "fuse_cross_entropy": true, + "fuse_norm": true, + "fuse_swiglu": false, + "hidden_act": "swish", + "hidden_size": 1024, + "initializer_range": 0.02, + "max_position_embeddings": 8192, + "model_type": "fp4_transformer", + "num_heads": 16, + "num_hidden_layers": 24, + "norm_eps": 1e-06, + "tie_word_embeddings": false, + "use_cache": true, + "vocab_size": 32000, + "qk_norm": true, + "layer_precision_configs": [ + { + "repeats": 20, + "dtype": "nvfp4", + "scale_rule": "mse" + }, + { + "repeats": 4 + } + ] +} \ No newline at end of file diff --git a/fouroversix/scripts/train/prepare_dataset.py b/fouroversix/scripts/train/prepare_dataset.py new file mode 100644 index 0000000..f1cb9d9 --- /dev/null +++ b/fouroversix/scripts/train/prepare_dataset.py @@ -0,0 +1,15 @@ +from ..resources import FOUROVERSIX_CACHE_PATH, app, cache_volume, get_image + +img = get_image(dependencies=[], extra_pip_dependencies=["datasets"]) + +with img.imports(): + from datasets import load_dataset + + +@app.function( + image=img, + timeout=24 * 60 * 60, + volumes={FOUROVERSIX_CACHE_PATH: cache_volume}, +) +def prepare_dataset(path: str, name: str) -> None: + load_dataset(path, name) diff --git a/fouroversix/setup.py b/fouroversix/setup.py new file mode 100644 index 0000000..d761d39 --- /dev/null +++ b/fouroversix/setup.py @@ -0,0 +1,296 @@ +import functools +import os +import platform +import subprocess +import sys +import urllib.request +import warnings +from pathlib import Path +from typing import Any + +import torch +from packaging.version import Version, parse +from setuptools import setup +from setuptools.command.bdist_wheel import bdist_wheel +from torch.utils.cpp_extension import CUDA_HOME, BuildExtension, CUDAExtension + +BASE_WHEEL_URL = "https://github.com/mit-han-lab/fouroversix/releases/download" +PACKAGE_NAME = "fouroversix" +PACKAGE_VERSION = "1.1.0" + +CUTLASS_DEBUG = os.getenv("CUTLASS_DEBUG", "0") == "1" +FORCE_BUILD = os.getenv("FORCE_BUILD", "0") == "1" +FORCE_CXX11_ABI = os.getenv("FORCE_CXX11_ABI", "0") == "1" +SKIP_CUDA_BUILD = os.getenv("SKIP_CUDA_BUILD", "0") == "1" + + +@functools.cache +def get_cuda_archs() -> list[str]: + return os.getenv("CUDA_ARCHS", "100;103;110;120").split(";") + + +def get_cuda_bare_metal_version() -> Version | None: + if CUDA_HOME is None: + warnings.warn( + "nvcc was not found. Are you sure your environment has nvcc available? If " + "you're installing within a container from " + "https://hub.docker.com/r/pytorch/pytorch, only images with 'devel' in " + "their name will provide nvcc.", + stacklevel=1, + ) + return None + + raw_output = subprocess.check_output( + [CUDA_HOME + "/bin/nvcc", "-V"], + universal_newlines=True, + ) + output = raw_output.split() + release_idx = output.index("release") + 1 + return parse(output[release_idx].split(",")[0]) + + +def get_cuda_gencodes() -> list[str]: + """ + Add -gencode flags based on nvcc capabilities. + + Uses the following rules: + - sm_100/120 on CUDA >= 12.8 + - Use 100f on CUDA >= 12.9 (Blackwell family-specific) + - Map requested 110 -> 101 if CUDA < 13.0 (Thor rename) + - Embed PTX for newest arch for forward compatibility + """ + + archs = set(get_cuda_archs()) + cuda_version = get_cuda_bare_metal_version() + cc_flags = [] + + # Blackwell requires >= 12.8 + if cuda_version is not None and cuda_version >= Version("12.8"): + if "100" in archs: + cc_flags += ["-gencode", "arch=compute_100a,code=sm_100a"] + + if "103" in archs: + cc_flags += ["-gencode", "arch=compute_103a,code=sm_103a"] + + # Thor rename: 12.9 uses sm_101; 13.0+ uses sm_110 + if "110" in archs: + if cuda_version >= Version("13.0"): + cc_flags += ["-gencode", "arch=compute_110f,code=sm_110"] + elif cuda_version >= Version("12.9"): + # Provide Thor support for CUDA 12.9 via sm_101 + cc_flags += ["-gencode", "arch=compute_101f,code=sm_101"] + # else: no Thor support in older toolkits + + if "120" in archs: + # sm_120 is supported in CUDA 12.8/12.9+ toolkits + if cuda_version >= Version("12.9"): + cc_flags += ["-gencode", "arch=compute_120f,code=sm_120"] + else: + cc_flags += ["-gencode", "arch=compute_120a,code=sm_120a"] + + return cc_flags + + +def get_platform() -> str: + if sys.platform.startswith("linux"): + return f"linux_{platform.uname().machine}" + if sys.platform == "darwin": + mac_version = ".".join(platform.mac_ver()[0].split(".")[:2]) + return f"macosx_{mac_version}_x86_64" + if sys.platform == "win32": + return "win_amd64" + + msg = f"Unsupported platform: {sys.platform}" + raise ValueError(msg) + + +def get_wheel_url() -> tuple[str, str]: + torch_version_raw = parse(torch.__version__) + python_version = f"cp{sys.version_info.major}{sys.version_info.minor}" + platform_name = get_platform() + torch_version = f"{torch_version_raw.major}.{torch_version_raw.minor}" + cxx11_abi = str(torch._C._GLIBCXX_USE_CXX11_ABI).upper() # noqa: SLF001 + + # We only compile for CUDA 12.8 to save CI time. Minor versions should be + # compatible. + torch_cuda_version = parse("12.8") + cuda_version = f"cu{torch_cuda_version.major}" + + wheel_filename = ( + f"{PACKAGE_NAME}-{PACKAGE_VERSION}+{cuda_version}torch{torch_version}" + f"cxx11abi{cxx11_abi}-{python_version}-{python_version}-{platform_name}.whl" + ) + + return f"{BASE_WHEEL_URL}/v{PACKAGE_VERSION}/{wheel_filename}", wheel_filename + + +class CachedWheelsCommand(bdist_wheel): + """ + Custom bdist wheel command that checks for pre-built wheels on GitHub Releases. + + The CachedWheelsCommand plugs into the default bdist wheel, which is ran by pip + when it cannot find an existing wheel (which is currently the case for all + fouroversix installs). We use the environment parameters to detect whether there is + already a pre-built version of a compatible wheel available and short-circuits the + standard full build pipeline. + + Credit: https://github.com/Dao-AILab/flash-attention/blob/main/setup.py + """ + + def run(self) -> None: + """Run the command.""" + + if FORCE_BUILD: + return super().run() + + wheel_url, wheel_filename = get_wheel_url() + print(f"Guessing wheel URL: {wheel_url}") + + try: + urllib.request.urlretrieve(wheel_url, wheel_filename) # noqa: S310 + + # Make the archive + # Lifted from the root wheel processing command + # https://github.com/pypa/wheel/blob/cf71108ff9f6ffc36978069acb28824b44ae028e/src/wheel/bdist_wheel.py#LL381C9-L381C85 + if not Path(self.dist_dir).exists(): + Path(self.dist_dir).mkdir(parents=True, exist_ok=True) + + impl_tag, abi_tag, plat_tag = self.get_tag() + archive_basename = f"{self.wheel_dist_name}-{impl_tag}-{abi_tag}-{plat_tag}" + + wheel_path = Path(self.dist_dir) / (archive_basename + ".whl") + print(f"Raw wheel path: {wheel_path}") + Path(wheel_filename).rename(wheel_path) + except (urllib.error.HTTPError, urllib.error.URLError): + print("Precompiled wheel not found. Building from source...") + # If the wheel could not be downloaded, build from source + super().run() + + +class NinjaBuildExtension(BuildExtension): + """ + Custom build extension that tells Ninja how many jobs to run. + + Credit: https://github.com/Dao-AILab/flash-attention/blob/main/setup.py + """ + + def __init__(self, *args: list[Any], **kwargs: dict[str, Any]) -> None: + # do not override env MAX_JOBS if already exists + if not os.environ.get("MAX_JOBS"): + try: + import psutil + + # calculate the maximum allowed NUM_JOBS based on cores + max_num_jobs_cores = max(1, os.cpu_count() // 2) + + # calculate the maximum allowed NUM_JOBS based on free memory + free_memory_gb = psutil.virtual_memory().available / ( + 1024**3 + ) # free memory in GB + max_num_jobs_memory = int( + free_memory_gb / 9, + ) # each JOB peak memory cost is ~8-9GB when threads = 4 + + # pick lower value of jobs based on cores vs memory metric to minimize + # oom and swap usage during compilation + max_jobs = max(1, min(max_num_jobs_cores, max_num_jobs_memory)) + os.environ["MAX_JOBS"] = str(max_jobs) + except ImportError: + warnings.warn( + "psutil not found, install psutil and ninja to get better build " + "performance", + stacklevel=1, + ) + + super().__init__(*args, **kwargs) + + +if SKIP_CUDA_BUILD: + warnings.warn( + "SKIP_CUDA_BUILD is set to 1, installing fouroversix without quantization and " + "matmul kernels", + stacklevel=1, + ) + + ext_modules = None +else: + if Path(".git").exists(): + subprocess.run( + [ + "git", + "submodule", + "update", + "--init", + "third_party/cutlass", + ], + check=True, + ) + elif not Path("third_party/cutlass").exists(): + msg = ( + "third_party/cutlass is missing, please use source distribution or git " + "clone" + ) + raise RuntimeError(msg) + + # The compiler flag -D_GLIBCXX_USE_CXX11_ABI is set to be the same as + # torch._C._GLIBCXX_USE_CXX11_ABI + # https://github.com/pytorch/pytorch/blob/8472c24e3b5b60150096486616d98b7bea01500b/torch/utils/cpp_extension.py#L920 + if FORCE_CXX11_ABI: + torch._C._GLIBCXX_USE_CXX11_ABI = True # noqa: SLF001 + + setup_dir = Path(__file__).parent + kernels_dir = setup_dir / "src" / "fouroversix" / "csrc" + sources = [ + path.relative_to(Path(__file__).parent).as_posix() + for ext in ["**/*.cu", "**/*.cpp"] + for path in kernels_dir.glob(ext) + ] + + cxx_compile_args = ["-std=c++17"] + nvcc_compile_args = [ + "-std=c++17", + "--expt-relaxed-constexpr", + "-Xcompiler", + "-funroll-loops", + "-Xcompiler", + "-finline-functions", + *get_cuda_gencodes(), + ] + + if CUTLASS_DEBUG: + nvcc_compile_args.extend( + [ + "-O0", + "-DCUTLASS_DEBUG_TRACE_LEVEL=3", + "-DCUTLASS_DEBUG_ENABLE=1", + "-g", + ], + ) + else: + cxx_compile_args.extend(["-O3"]) + nvcc_compile_args.extend(["-O3", "-DNDEBUG"]) + + ext_modules = [ + CUDAExtension( + "fouroversix._C", + sources, + extra_compile_args={"cxx": cxx_compile_args, "nvcc": nvcc_compile_args}, + include_dirs=[ + setup_dir / "third_party/cutlass/examples/common", + setup_dir / "third_party/cutlass/include", + setup_dir / "third_party/cutlass/tools/util/include", + kernels_dir / "include", + ], + ), + ] + +setup( + name=PACKAGE_NAME, + version=PACKAGE_VERSION, + ext_modules=ext_modules, + cmdclass={ + "bdist_wheel": CachedWheelsCommand, + "build_ext": NinjaBuildExtension, + }, + include_package_data=True, +) diff --git a/fouroversix/src/fouroversix/__init__.py b/fouroversix/src/fouroversix/__init__.py new file mode 100644 index 0000000..6b3adff --- /dev/null +++ b/fouroversix/src/fouroversix/__init__.py @@ -0,0 +1,33 @@ +from importlib.metadata import version + +from .matmul import fp4_matmul +from .model import ( + FourOverSixLinear, + ModelQuantizationConfig, + ModuleQuantizationConfig, + QuantizedModule, + quantize_model, +) +from .quantize import QuantizationConfig, QuantizedTensor, quantize_to_fp4 +from .utils import DataType, MatmulBackend, QuantizeBackend, RoundStyle, ScaleRule +from .weight_conversions import WeightConversions + +__version__ = version("fouroversix") + +__all__ = [ + "DataType", + "FourOverSixLinear", + "MatmulBackend", + "ModelQuantizationConfig", + "ModuleQuantizationConfig", + "QuantizationConfig", + "QuantizeBackend", + "QuantizedModule", + "QuantizedTensor", + "RoundStyle", + "ScaleRule", + "WeightConversions", + "fp4_matmul", + "quantize_model", + "quantize_to_fp4", +] diff --git a/fouroversix/src/fouroversix/csrc/bindings.cpp b/fouroversix/src/fouroversix/csrc/bindings.cpp new file mode 100644 index 0000000..4e3cdeb --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/bindings.cpp @@ -0,0 +1,36 @@ +#include +#include + +extern "C" +{ + PyObject *PyInit__C(void) + { + static struct PyModuleDef module_def = { + PyModuleDef_HEAD_INIT, + "_C", /* name of module */ + NULL, /* module documentation, may be NULL */ + -1, /* size of per-interpreter state of the module, + or -1 if the module keeps state in global variables. */ + NULL, /* methods */ + NULL, + NULL, + NULL, + NULL, + }; + return PyModule_Create(&module_def); + } +} + +namespace fouroversix +{ + TORCH_LIBRARY(fouroversix, m) + { + m.def("quantize_to_fp4(Tensor x, bool is_nvfp4, bool is_rtn, bool is_rht, bool is_2d, bool is_transpose, int selection_rule, int rbits) -> (Tensor, Tensor, Tensor)"); + m.def("gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + m.def("gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + m.def("gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + m.def("gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + m.def("gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + m.def("gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120(Tensor A, Tensor B, Tensor A_sf, Tensor B_sf, Tensor alpha) -> Tensor"); + } +} \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/fp4_gemm.cu b/fouroversix/src/fouroversix/csrc/fp4_gemm.cu new file mode 100644 index 0000000..695571b --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/fp4_gemm.cu @@ -0,0 +1,187 @@ +#include "cutlass/cutlass.h" + +#include "cute/tensor.hpp" +#include "cutlass/tensor_ref.h" +#include "cutlass/epilogue/thread/linear_combination.h" +#include "cutlass/gemm/dispatch_policy.hpp" +#include "cutlass/gemm/collective/collective_builder.hpp" +#include "cutlass/epilogue/collective/collective_builder.hpp" +#include "cutlass/detail/sm100_blockscaled_layout.hpp" +#include "cutlass/gemm/device/gemm_universal_adapter.h" +#include "cutlass/gemm/kernel/gemm_universal.hpp" +#include "cutlass/gemm/kernel/tile_scheduler_params.h" + +#include "cutlass/util/command_line.h" +#include "cutlass/util/distribution.h" +#include "cutlass/util/host_tensor.h" +#include "cutlass/util/packed_stride.hpp" +#include "cutlass/util/tensor_view_io.h" +#include "cutlass/util/reference/device/gemm.h" +#include "cutlass/util/reference/device/tensor_compare.h" +#include "cutlass/util/reference/host/tensor_fill.h" +#include "cutlass/util/reference/host/gett.hpp" +#include "cutlass/util/reference/host/tensor_norm.h" +#include "cutlass/util/reference/host/tensor_compare.h" + +#include "helper.h" + +#include +#include +#include +#include + +#include "element_traits.hpp" + +namespace fouroversix +{ + using namespace cute; + + // Adapted from example 72b + template , + typename ClusterShape = Shape<_2, _4, _1>, + typename KernelMainloopPolicy = cutlass::gemm::collective::KernelScheduleAuto, + int AlignmentA = 32, + typename ElementB = ElementA, + int AlignmentB = 32, + typename LayoutATag = cutlass::layout::RowMajor, + typename LayoutBTag = cutlass::layout::ColumnMajor, + typename ElementD = cutlass::bfloat16_t, + typename ArchTag = cutlass::arch::Sm100> + torch::Tensor gemm_fp4fp4_accum_fp32(torch::Tensor const &A, torch::Tensor const &B, torch::Tensor const &A_sf, torch::Tensor const &B_sf, torch::Tensor const &alpha) + { + at::cuda::CUDAGuard device_guard(A.device()); + + // C/D matrix configuration + using ElementC = void; // Element type for C matrix operand + using LayoutCTag = cutlass::layout::RowMajor; // Layout type for C matrix operand + using LayoutDTag = cutlass::layout::RowMajor; // Layout type for D matrix operand + + constexpr int AlignmentC = 1; // Memory access granularity/alignment of C matrix in units of elements (up to 16 bytes) + constexpr int AlignmentD = 128 / cutlass::sizeof_bits::value; // Memory access granularity/alignment of D matrix in units of elements (up to 16 bytes) + + // Kernel functional config + using ElementAccumulator = float; // Element type for internal accumulation + using OperatorClass = cutlass::arch::OpClassBlockScaledTensorOp; // Operator class tag + + using CollectiveEpilogue = typename cutlass::epilogue::collective::CollectiveBuilder< + ArchTag, OperatorClass, + MmaTileShape, ClusterShape, + cutlass::epilogue::collective::EpilogueTileAuto, + ElementAccumulator, ElementAccumulator, + ElementC, LayoutCTag, AlignmentC, + ElementD, LayoutDTag, AlignmentD, + cutlass::epilogue::collective::EpilogueScheduleAuto // Epilogue schedule policy + >::CollectiveOp; + + using CollectiveMainloop = typename cutlass::gemm::collective::CollectiveBuilder< + ArchTag, OperatorClass, + ElementA, LayoutATag, AlignmentA, + ElementB, LayoutBTag, AlignmentB, + ElementAccumulator, + MmaTileShape, ClusterShape, + cutlass::gemm::collective::StageCountAutoCarveout(sizeof(typename CollectiveEpilogue::SharedStorage))>, + KernelMainloopPolicy>::CollectiveOp; + + using GemmKernel = cutlass::gemm::kernel::GemmUniversal< + Shape, // Indicates ProblemShape + CollectiveMainloop, + CollectiveEpilogue, + void>; + + using Gemm = cutlass::gemm::device::GemmUniversalAdapter; + + // Reference device GEMM implementation type + using StrideA = typename Gemm::GemmKernel::StrideA; + using StrideB = typename Gemm::GemmKernel::StrideB; + using StrideC = typename Gemm::GemmKernel::StrideC; + using StrideD = typename Gemm::GemmKernel::StrideD; + + using LayoutSFA = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFA; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + using LayoutSFB = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFB; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + + using Sm1xxBlkScaledConfig = typename Gemm::GemmKernel::CollectiveMainloop::Sm1xxBlkScaledConfig; + + torch::checkAllContiguous("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + torch::checkDeviceType("gemm_fp4fp4_accum_fp32_out_bf16", {A, B, A_sf, B_sf, alpha}, at::DeviceType::CUDA); + torch::checkAllSameGPU("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + + check_block_scale_factor_type(A_sf, "A_sf"); + check_block_scale_factor_type(B_sf, "B_sf"); + + auto [M, N, K] = check_and_get_fp4_matmul_dims(A, B, A_sf, B_sf); + auto D = torch::empty({M, N}, torch::dtype(element_traits::scalar_type).device(A.device())); + + Gemm gemm; + + // Create stride and layout information for the packed tensors + // For packed NVFP4 tensors, we need to use the appropriate stride and layout + StrideA stride_A = cutlass::make_cute_packed_stride(StrideA{}, {M, K, 1}); + StrideB stride_B = cutlass::make_cute_packed_stride(StrideB{}, {N, K, 1}); + StrideC stride_C = cutlass::make_cute_packed_stride(StrideC{}, {M, N, 1}); + StrideD stride_D = cutlass::make_cute_packed_stride(StrideD{}, {M, N, 1}); + + // Create scale factor layouts + LayoutSFA layout_SFA = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFA(make_shape(M, N, K, 1)); + LayoutSFB layout_SFB = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFB(make_shape(M, N, K, 1)); + + typename Gemm::Arguments args{ + cutlass::gemm::GemmUniversalMode::kGemm, + {M, N, K, 1}, + {// Mainloop arguments + static_cast(A.data_ptr()), stride_A, + static_cast(B.data_ptr()), stride_B, + static_cast(A_sf.data_ptr()), layout_SFA, + static_cast(B_sf.data_ptr()), layout_SFB}, + {// Epilogue arguments + {1.0f, 0.0f}, + nullptr, + stride_C, + static_cast(D.data_ptr()), + stride_D}}; + + args.epilogue.thread.alpha_ptr = static_cast(alpha.data_ptr()); + + // Check if the problem size is supported or not + CUTLASS_CHECK(gemm.can_implement(args)); + + // Initialize CUTLASS kernel with arguments and workspace pointer + CUTLASS_CHECK(gemm.initialize(args)); + + CUTLASS_CHECK(gemm.run(args)); + + return D; + } + + TORCH_LIBRARY_IMPL(fouroversix, CUDA, m) + { + /* MXFP4 */ + m.impl("gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt", + &gemm_fp4fp4_accum_fp32< + cutlass::mx_float4_t, + Shape<_256, _256, _256>, + Shape<_4, _1, _1>, + cutlass::gemm::KernelTmaWarpSpecialized2SmMxf4Sm100>); + + /* NVFP4 */ + m.impl("gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt", + &gemm_fp4fp4_accum_fp32< + cutlass::nv_float4_t, + Shape<_256, _256, _256>, + Shape<_4, _1, _1>, + cutlass::gemm::KernelTmaWarpSpecialized2SmNvf4Sm100>); + + m.impl("gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt", + &gemm_fp4fp4_accum_fp32< + cutlass::nv_float4_t, + Shape<_256, _256, _256>, + Shape<_4, _1, _1>, + cutlass::gemm::KernelTmaWarpSpecialized2SmNvf4Sm100, + 32, + cutlass::nv_float4_t, + 32, + cutlass::layout::RowMajor, + cutlass::layout::ColumnMajor, + cutlass::half_t>); + } +} \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/fp4_gemm_sm120.cu b/fouroversix/src/fouroversix/csrc/fp4_gemm_sm120.cu new file mode 100644 index 0000000..a828c5f --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/fp4_gemm_sm120.cu @@ -0,0 +1,414 @@ +#include "cutlass/cutlass.h" + +#include "cute/tensor.hpp" +#include "cutlass/tensor_ref.h" +#include "cutlass/epilogue/thread/linear_combination.h" +#include "cutlass/gemm/dispatch_policy.hpp" +#include "cutlass/gemm/collective/collective_builder.hpp" +#include "cutlass/epilogue/collective/collective_builder.hpp" +#include "cutlass/detail/sm100_blockscaled_layout.hpp" +#include "cutlass/gemm/device/gemm_universal_adapter.h" +#include "cutlass/gemm/kernel/gemm_universal.hpp" +#include "cutlass/gemm/kernel/tile_scheduler_params.h" + +#include "cutlass/util/command_line.h" +#include "cutlass/util/distribution.h" +#include "cutlass/util/host_tensor.h" +#include "cutlass/util/packed_stride.hpp" +#include "cutlass/util/tensor_view_io.h" +#include "cutlass/util/reference/device/gemm.h" +#include "cutlass/util/reference/device/tensor_compare.h" +#include "cutlass/util/reference/host/tensor_fill.h" +#include "cutlass/util/reference/host/gett.hpp" +#include "cutlass/util/reference/host/tensor_norm.h" +#include "cutlass/util/reference/host/tensor_compare.h" + +#include "helper.h" + +#include +#include +#include +#include + +#include "element_traits.hpp" + +// NOTE: There seems to be an issue with NVCC that causes runtime errors in SM120 GEMMs +// when they are compiled as templated functions. As a result, this file contains only +// non-templated functions. See: https://github.com/NVIDIA/cutlass/issues/2478 +namespace fouroversix +{ + using namespace cute; + + // Adapted from example 72b + torch::Tensor gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120(torch::Tensor const &A, torch::Tensor const &B, torch::Tensor const &A_sf, torch::Tensor const &B_sf, torch::Tensor const &alpha) + { + at::cuda::CUDAGuard device_guard(A.device()); + + using ElementA = cutlass::mx_float4_t; + using ElementB = cutlass::mx_float4_t; + using ElementD = cutlass::bfloat16_t; + + using MmaTileShape = Shape<_128, _128, _128>; + using ClusterShape = Shape<_1, _1, _1>; + + // C/D matrix configuration + using ElementC = void; // Element type for C matrix operand + using LayoutATag = cutlass::layout::RowMajor; // Layout type for A matrix operand + using LayoutBTag = cutlass::layout::ColumnMajor; // Layout type for B matrix operand + using LayoutCTag = cutlass::layout::RowMajor; // Layout type for C matrix operand + using LayoutDTag = cutlass::layout::RowMajor; // Layout type for D matrix operand + + constexpr int AlignmentA = 32; + constexpr int AlignmentB = 32; + constexpr int AlignmentC = 1; // Memory access granularity/alignment of C matrix in units of elements (up to 16 bytes) + constexpr int AlignmentD = 128 / cutlass::sizeof_bits::value; // Memory access granularity/alignment of D matrix in units of elements (up to 16 bytes) + + // Kernel functional config + using ElementAccumulator = float; // Element type for internal accumulation + using ArchTag = cutlass::arch::Sm120; + using OperatorClass = cutlass::arch::OpClassBlockScaledTensorOp; // Operator class tag + using KernelMainloopPolicy = cutlass::gemm::KernelTmaWarpSpecializedCooperative; + + using CollectiveEpilogue = typename cutlass::epilogue::collective::CollectiveBuilder< + ArchTag, OperatorClass, + MmaTileShape, ClusterShape, + cutlass::epilogue::collective::EpilogueTileAuto, + ElementAccumulator, ElementAccumulator, + ElementC, LayoutCTag, AlignmentC, + ElementD, LayoutDTag, AlignmentD, + cutlass::epilogue::collective::EpilogueScheduleAuto // Epilogue schedule policy + >::CollectiveOp; + + using CollectiveMainloop = typename cutlass::gemm::collective::CollectiveBuilder< + ArchTag, OperatorClass, + ElementA, LayoutATag, AlignmentA, + ElementB, LayoutBTag, AlignmentB, + ElementAccumulator, + MmaTileShape, ClusterShape, + cutlass::gemm::collective::StageCountAutoCarveout(sizeof(typename CollectiveEpilogue::SharedStorage))>, + KernelMainloopPolicy>::CollectiveOp; + + using GemmKernel = cutlass::gemm::kernel::GemmUniversal< + Shape, // Indicates ProblemShape + CollectiveMainloop, + CollectiveEpilogue, + void>; + + using Gemm = cutlass::gemm::device::GemmUniversalAdapter; + + // Reference device GEMM implementation type + using StrideA = typename Gemm::GemmKernel::StrideA; + using StrideB = typename Gemm::GemmKernel::StrideB; + using StrideC = typename Gemm::GemmKernel::StrideC; + using StrideD = typename Gemm::GemmKernel::StrideD; + + using LayoutSFA = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFA; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + using LayoutSFB = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFB; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + + using Sm1xxBlkScaledConfig = typename Gemm::GemmKernel::CollectiveMainloop::Sm1xxBlkScaledConfig; + + torch::checkAllContiguous("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + torch::checkDeviceType("gemm_fp4fp4_accum_fp32_out_bf16", {A, B, A_sf, B_sf, alpha}, at::DeviceType::CUDA); + torch::checkAllSameGPU("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + + check_block_scale_factor_type(A_sf, "A_sf"); + check_block_scale_factor_type(B_sf, "B_sf"); + + auto [M, N, K] = check_and_get_fp4_matmul_dims(A, B, A_sf, B_sf); + auto D = torch::empty({M, N}, torch::dtype(element_traits::scalar_type).device(A.device())); + + Gemm gemm; + + // Create stride and layout information for the packed tensors + // For packed NVFP4 tensors, we need to use the appropriate stride and layout + StrideA stride_A = cutlass::make_cute_packed_stride(StrideA{}, {M, K, 1}); + StrideB stride_B = cutlass::make_cute_packed_stride(StrideB{}, {N, K, 1}); + StrideC stride_C = cutlass::make_cute_packed_stride(StrideC{}, {M, N, 1}); + StrideD stride_D = cutlass::make_cute_packed_stride(StrideD{}, {M, N, 1}); + + // Create scale factor layouts + LayoutSFA layout_SFA = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFA(make_shape(M, N, K, 1)); + LayoutSFB layout_SFB = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFB(make_shape(M, N, K, 1)); + + typename Gemm::Arguments args{ + cutlass::gemm::GemmUniversalMode::kGemm, + {M, N, K, 1}, + {// Mainloop arguments + static_cast(A.data_ptr()), stride_A, + static_cast(B.data_ptr()), stride_B, + static_cast(A_sf.data_ptr()), layout_SFA, + static_cast(B_sf.data_ptr()), layout_SFB}, + {// Epilogue arguments + {1.0f, 0.0f}, + nullptr, + stride_C, + static_cast(D.data_ptr()), + stride_D}}; + + args.epilogue.thread.alpha_ptr = static_cast(alpha.data_ptr()); + + // Check if the problem size is supported or not + CUTLASS_CHECK(gemm.can_implement(args)); + + // Initialize CUTLASS kernel with arguments and workspace pointer + CUTLASS_CHECK(gemm.initialize(args)); + + CUTLASS_CHECK(gemm.run(args)); + + return D; + } + + // Adapted from example 72b + torch::Tensor gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120(torch::Tensor const &A, torch::Tensor const &B, torch::Tensor const &A_sf, torch::Tensor const &B_sf, torch::Tensor const &alpha) + { + at::cuda::CUDAGuard device_guard(A.device()); + + using ElementA = cutlass::nv_float4_t; + using ElementB = cutlass::nv_float4_t; + using ElementD = cutlass::bfloat16_t; + + using MmaTileShape = Shape<_128, _128, _128>; + using ClusterShape = Shape<_1, _1, _1>; + + // C/D matrix configuration + using ElementC = void; // Element type for C matrix operand + using LayoutATag = cutlass::layout::RowMajor; // Layout type for A matrix operand + using LayoutBTag = cutlass::layout::ColumnMajor; // Layout type for B matrix operand + using LayoutCTag = cutlass::layout::RowMajor; // Layout type for C matrix operand + using LayoutDTag = cutlass::layout::RowMajor; // Layout type for D matrix operand + + constexpr int AlignmentA = 32; + constexpr int AlignmentB = 32; + constexpr int AlignmentC = 1; // Memory access granularity/alignment of C matrix in units of elements (up to 16 bytes) + constexpr int AlignmentD = 128 / cutlass::sizeof_bits::value; // Memory access granularity/alignment of D matrix in units of elements (up to 16 bytes) + + // Kernel functional config + using ElementAccumulator = float; // Element type for internal accumulation + using ArchTag = cutlass::arch::Sm120; + using OperatorClass = cutlass::arch::OpClassBlockScaledTensorOp; // Operator class tag + using KernelMainloopPolicy = cutlass::gemm::KernelTmaWarpSpecializedCooperative; + + using CollectiveEpilogue = typename cutlass::epilogue::collective::CollectiveBuilder< + ArchTag, OperatorClass, + MmaTileShape, ClusterShape, + cutlass::epilogue::collective::EpilogueTileAuto, + ElementAccumulator, ElementAccumulator, + ElementC, LayoutCTag, AlignmentC, + ElementD, LayoutDTag, AlignmentD, + cutlass::epilogue::collective::EpilogueScheduleAuto // Epilogue schedule policy + >::CollectiveOp; + + using CollectiveMainloop = typename cutlass::gemm::collective::CollectiveBuilder< + ArchTag, OperatorClass, + ElementA, LayoutATag, AlignmentA, + ElementB, LayoutBTag, AlignmentB, + ElementAccumulator, + MmaTileShape, ClusterShape, + cutlass::gemm::collective::StageCountAutoCarveout(sizeof(typename CollectiveEpilogue::SharedStorage))>, + KernelMainloopPolicy>::CollectiveOp; + + using GemmKernel = cutlass::gemm::kernel::GemmUniversal< + Shape, // Indicates ProblemShape + CollectiveMainloop, + CollectiveEpilogue, + void>; + + using Gemm = cutlass::gemm::device::GemmUniversalAdapter; + + // Reference device GEMM implementation type + using StrideA = typename Gemm::GemmKernel::StrideA; + using StrideB = typename Gemm::GemmKernel::StrideB; + using StrideC = typename Gemm::GemmKernel::StrideC; + using StrideD = typename Gemm::GemmKernel::StrideD; + + using LayoutSFA = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFA; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + using LayoutSFB = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFB; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + + using Sm1xxBlkScaledConfig = typename Gemm::GemmKernel::CollectiveMainloop::Sm1xxBlkScaledConfig; + + torch::checkAllContiguous("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + torch::checkDeviceType("gemm_fp4fp4_accum_fp32_out_bf16", {A, B, A_sf, B_sf, alpha}, at::DeviceType::CUDA); + torch::checkAllSameGPU("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + + check_block_scale_factor_type(A_sf, "A_sf"); + check_block_scale_factor_type(B_sf, "B_sf"); + + auto [M, N, K] = check_and_get_fp4_matmul_dims(A, B, A_sf, B_sf); + auto D = torch::empty({M, N}, torch::dtype(element_traits::scalar_type).device(A.device())); + + Gemm gemm; + + // Create stride and layout information for the packed tensors + // For packed NVFP4 tensors, we need to use the appropriate stride and layout + StrideA stride_A = cutlass::make_cute_packed_stride(StrideA{}, {M, K, 1}); + StrideB stride_B = cutlass::make_cute_packed_stride(StrideB{}, {N, K, 1}); + StrideC stride_C = cutlass::make_cute_packed_stride(StrideC{}, {M, N, 1}); + StrideD stride_D = cutlass::make_cute_packed_stride(StrideD{}, {M, N, 1}); + + // Create scale factor layouts + LayoutSFA layout_SFA = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFA(make_shape(M, N, K, 1)); + LayoutSFB layout_SFB = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFB(make_shape(M, N, K, 1)); + + typename Gemm::Arguments args{ + cutlass::gemm::GemmUniversalMode::kGemm, + {M, N, K, 1}, + {// Mainloop arguments + static_cast(A.data_ptr()), stride_A, + static_cast(B.data_ptr()), stride_B, + static_cast(A_sf.data_ptr()), layout_SFA, + static_cast(B_sf.data_ptr()), layout_SFB}, + {// Epilogue arguments + {1.0f, 0.0f}, + nullptr, + stride_C, + static_cast(D.data_ptr()), + stride_D}}; + + args.epilogue.thread.alpha_ptr = static_cast(alpha.data_ptr()); + + // Check if the problem size is supported or not + CUTLASS_CHECK(gemm.can_implement(args)); + + // Initialize CUTLASS kernel with arguments and workspace pointer + CUTLASS_CHECK(gemm.initialize(args)); + + CUTLASS_CHECK(gemm.run(args)); + + return D; + } + + // Adapted from example 72b + torch::Tensor gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120(torch::Tensor const &A, torch::Tensor const &B, torch::Tensor const &A_sf, torch::Tensor const &B_sf, torch::Tensor const &alpha) + { + at::cuda::CUDAGuard device_guard(A.device()); + + using ElementA = cutlass::nv_float4_t; + using ElementB = cutlass::nv_float4_t; + using ElementD = cutlass::half_t; + + using MmaTileShape = Shape<_128, _128, _128>; + using ClusterShape = Shape<_1, _1, _1>; + + // C/D matrix configuration + using ElementC = void; // Element type for C matrix operand + using LayoutATag = cutlass::layout::RowMajor; // Layout type for A matrix operand + using LayoutBTag = cutlass::layout::ColumnMajor; // Layout type for B matrix operand + using LayoutCTag = cutlass::layout::RowMajor; // Layout type for C matrix operand + using LayoutDTag = cutlass::layout::RowMajor; // Layout type for D matrix operand + + constexpr int AlignmentA = 32; + constexpr int AlignmentB = 32; + constexpr int AlignmentC = 1; // Memory access granularity/alignment of C matrix in units of elements (up to 16 bytes) + constexpr int AlignmentD = 128 / cutlass::sizeof_bits::value; // Memory access granularity/alignment of D matrix in units of elements (up to 16 bytes) + + // Kernel functional config + using ElementAccumulator = float; // Element type for internal accumulation + using ArchTag = cutlass::arch::Sm120; + using OperatorClass = cutlass::arch::OpClassBlockScaledTensorOp; // Operator class tag + using KernelMainloopPolicy = cutlass::gemm::KernelTmaWarpSpecializedCooperative; + + using CollectiveEpilogue = typename cutlass::epilogue::collective::CollectiveBuilder< + ArchTag, OperatorClass, + MmaTileShape, ClusterShape, + cutlass::epilogue::collective::EpilogueTileAuto, + ElementAccumulator, ElementAccumulator, + ElementC, LayoutCTag, AlignmentC, + ElementD, LayoutDTag, AlignmentD, + cutlass::epilogue::collective::EpilogueScheduleAuto // Epilogue schedule policy + >::CollectiveOp; + + using CollectiveMainloop = typename cutlass::gemm::collective::CollectiveBuilder< + ArchTag, OperatorClass, + ElementA, LayoutATag, AlignmentA, + ElementB, LayoutBTag, AlignmentB, + ElementAccumulator, + MmaTileShape, ClusterShape, + cutlass::gemm::collective::StageCountAutoCarveout(sizeof(typename CollectiveEpilogue::SharedStorage))>, + KernelMainloopPolicy>::CollectiveOp; + + using GemmKernel = cutlass::gemm::kernel::GemmUniversal< + Shape, // Indicates ProblemShape + CollectiveMainloop, + CollectiveEpilogue, + void>; + + using Gemm = cutlass::gemm::device::GemmUniversalAdapter; + + // Reference device GEMM implementation type + using StrideA = typename Gemm::GemmKernel::StrideA; + using StrideB = typename Gemm::GemmKernel::StrideB; + using StrideC = typename Gemm::GemmKernel::StrideC; + using StrideD = typename Gemm::GemmKernel::StrideD; + + using LayoutSFA = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFA; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + using LayoutSFB = typename Gemm::GemmKernel::CollectiveMainloop::LayoutSFB; // Scale Factor tensors have an interleaved layout. Bring Layout instead of stride. + + using Sm1xxBlkScaledConfig = typename Gemm::GemmKernel::CollectiveMainloop::Sm1xxBlkScaledConfig; + + torch::checkAllContiguous("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + torch::checkDeviceType("gemm_fp4fp4_accum_fp32_out_bf16", {A, B, A_sf, B_sf, alpha}, at::DeviceType::CUDA); + torch::checkAllSameGPU("gemm_fp4fp4_accum_fp32_out_bf16", {{A, "A", 0}, {B, "B", 1}, {A_sf, "A_sf", 2}, {B_sf, "B_sf", 3}, {alpha, "alpha", 4}}); + + check_block_scale_factor_type(A_sf, "A_sf"); + check_block_scale_factor_type(B_sf, "B_sf"); + + auto [M, N, K] = check_and_get_fp4_matmul_dims(A, B, A_sf, B_sf); + auto D = torch::empty({M, N}, torch::dtype(element_traits::scalar_type).device(A.device())); + + Gemm gemm; + + // Create stride and layout information for the packed tensors + // For packed NVFP4 tensors, we need to use the appropriate stride and layout + StrideA stride_A = cutlass::make_cute_packed_stride(StrideA{}, {M, K, 1}); + StrideB stride_B = cutlass::make_cute_packed_stride(StrideB{}, {N, K, 1}); + StrideC stride_C = cutlass::make_cute_packed_stride(StrideC{}, {M, N, 1}); + StrideD stride_D = cutlass::make_cute_packed_stride(StrideD{}, {M, N, 1}); + + // Create scale factor layouts + LayoutSFA layout_SFA = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFA(make_shape(M, N, K, 1)); + LayoutSFB layout_SFB = Sm1xxBlkScaledConfig::tile_atom_to_shape_SFB(make_shape(M, N, K, 1)); + + typename Gemm::Arguments args{ + cutlass::gemm::GemmUniversalMode::kGemm, + {M, N, K, 1}, + {// Mainloop arguments + static_cast(A.data_ptr()), stride_A, + static_cast(B.data_ptr()), stride_B, + static_cast(A_sf.data_ptr()), layout_SFA, + static_cast(B_sf.data_ptr()), layout_SFB}, + {// Epilogue arguments + {1.0f, 0.0f}, + nullptr, + stride_C, + static_cast(D.data_ptr()), + stride_D}}; + + args.epilogue.thread.alpha_ptr = static_cast(alpha.data_ptr()); + + // Check if the problem size is supported or not + CUTLASS_CHECK(gemm.can_implement(args)); + + // Initialize CUTLASS kernel with arguments and workspace pointer + CUTLASS_CHECK(gemm.initialize(args)); + + CUTLASS_CHECK(gemm.run(args)); + + return D; + } + + TORCH_LIBRARY_IMPL(fouroversix, CUDA, m) + { + // See the note at the top of the file for more information about why these + // functions are not templated and not included in fp4_gemm.cu. + + /* MXFP4 */ + m.impl("gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120", + &gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120); + + /* NVFP4 */ + m.impl("gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120", + &gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120); + m.impl("gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120", + &gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120); + } +} \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/include/element_traits.hpp b/fouroversix/src/fouroversix/csrc/include/element_traits.hpp new file mode 100644 index 0000000..91c0282 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/element_traits.hpp @@ -0,0 +1,171 @@ +#include "cutlass/bfloat16.h" +#include "cutlass/float_subbyte.h" +#include "cutlass/half.h" +#include "cutlass/layout/matrix.h" +#include +#include + +namespace fouroversix +{ + template + struct element_traits; + + template <> + struct element_traits> + { + static constexpr size_t block_size = 32; + static constexpr size_t packing_factor = 2; + static constexpr size_t packed_bytes = 1; + static constexpr at::ScalarType block_scale_factor_type = at::kFloat8_e8m0fnu; + static constexpr at::ScalarType scalar_type = at::kByte; + }; + + template <> + struct element_traits> + { + static constexpr size_t block_size = 32; + static constexpr size_t packing_factor = 4; + static constexpr size_t packed_bytes = 3; + static constexpr at::ScalarType block_scale_factor_type = at::kFloat8_e8m0fnu; + static constexpr at::ScalarType scalar_type = at::kByte; + }; + + template <> + struct element_traits> + { + static constexpr size_t block_size = 32; + static constexpr size_t packing_factor = 1; + static constexpr size_t packed_bytes = 1; + static constexpr at::ScalarType block_scale_factor_type = at::kFloat8_e8m0fnu; + static constexpr at::ScalarType scalar_type = at::kByte; + }; + + template <> + struct element_traits> + { + static constexpr size_t block_size = 16; + static constexpr size_t packing_factor = 2; + static constexpr size_t packed_bytes = 1; + static constexpr at::ScalarType block_scale_factor_type = at::kFloat8_e4m3fn; + static constexpr at::ScalarType scalar_type = at::kByte; + }; + + template <> + struct element_traits + { + static constexpr at::ScalarType scalar_type = at::kBFloat16; + }; + + template <> + struct element_traits + { + static constexpr at::ScalarType scalar_type = at::kHalf; + }; + + template <> + struct element_traits + { + static constexpr at::ScalarType scalar_type = at::kFloat; + }; + + template + void check_block_scale_factor_type(const at::Tensor &t, const char *name) + { + TORCH_CHECK( + t.scalar_type() == element_traits::block_scale_factor_type, + name, " must be ", at::toString(element_traits::block_scale_factor_type)); + } + + template + std::tuple + check_and_get_bf16_matmul_dims(const at::Tensor &A, const at::Tensor &B) + { + TORCH_CHECK(A.scalar_type() == at::kBFloat16, "A must be bfloat16"); + TORCH_CHECK(B.scalar_type() == at::kBFloat16, "B must be bfloat16"); + TORCH_CHECK(A.dim() == 2, "A must be 2D"); + TORCH_CHECK(B.dim() == 2, "B must be 2D"); + + // Unpack sizes + int a_rows = A.size(0), a_cols = A.size(1); + int b_rows = B.size(0), b_cols = B.size(1); + + // Layout-based interpretation + int M, K_A; + if constexpr (std::is_same_v) + { + M = a_rows; + K_A = a_cols; + } + else if constexpr (std::is_same_v) + { + M = a_cols; + K_A = a_rows; + } + + int N, K_B; + if constexpr (std::is_same_v) + { + K_B = b_rows; + N = b_cols; + } + else if constexpr (std::is_same_v) + { + K_B = b_cols; + N = b_rows; + } + + TORCH_CHECK(K_A == K_B, "Inner dims mismatch: ", K_A, " vs ", K_B); + + return {M, N, K_A}; + } + + template + std::tuple + check_and_get_fp4_matmul_dims(const at::Tensor &A, const at::Tensor &B, + const at::Tensor &A_sf, const at::Tensor &B_sf) + { + TORCH_CHECK(A.scalar_type() == at::kByte, "A must be uint8"); + TORCH_CHECK(B.scalar_type() == at::kByte, "B must be uint8"); + TORCH_CHECK(A.dim() == 2, "A must be 2D"); + TORCH_CHECK(B.dim() == 2, "B must be 2D"); + TORCH_CHECK(A.size(1) >= 16, "A K-dim must be >= 16"); + TORCH_CHECK(B.size(1) >= 16, "B K-dim must be >= 16"); + + // Unpack 4-bit logical sizes + int a_rows = A.size(0), a_cols = A.size(1) * element_traits::packing_factor / element_traits::packed_bytes; + int b_rows = B.size(0), b_cols = B.size(1) * element_traits::packing_factor / element_traits::packed_bytes; + + // Layout-based interpretation + int M, K_A; + if constexpr (std::is_same_v) + { + M = a_rows; + K_A = a_cols; + } + else if constexpr (std::is_same_v) + { + M = a_cols; + K_A = a_rows; + } + + int N, K_B; + if constexpr (std::is_same_v) + { + K_B = b_rows; + N = b_cols; + } + else if constexpr (std::is_same_v) + { + K_B = b_cols; + N = b_rows; + } + + TORCH_CHECK(K_A == K_B, "Inner dims mismatch: ", K_A, " vs ", K_B); + + // Scale factor checks + TORCH_CHECK(A_sf.numel() * element_traits::block_size == size_t(a_rows) * size_t(a_cols), "A_sf size mismatch"); + TORCH_CHECK(B_sf.numel() * element_traits::block_size == size_t(b_rows) * size_t(b_cols), "B_sf size mismatch"); + + return {M, N, K_A}; + } +} \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/include/fp4_quant.h b/fouroversix/src/fouroversix/csrc/include/fp4_quant.h new file mode 100644 index 0000000..b4b5145 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/fp4_quant.h @@ -0,0 +1,57 @@ +/****************************************************************************** + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +#pragma once +#include + +namespace fouroversix +{ + + enum AdaptiveBlockScalingRuleType + { + STATIC_6 = 0, + STATIC_4 = 1, + MAE_4o6 = 2, + MSE_4o6 = 3, + ABS_MAX_4o6 = 4, + }; + + struct FP4_quant_params + { + using index_t = int64_t; + void *__restrict__ x_ptr; + void *__restrict__ x_rht_ptr; + void *__restrict__ x_e2m1_ptr; + void *__restrict__ x_sf_ptr; + void *__restrict__ x_sft_ptr; + void *__restrict__ amax_ptr; + + int x_row_stride; + int x_col_stride; + int x_rht_row_stride; + int x_rht_col_stride; + int x_e2m1_row_stride; + int x_e2m1_col_stride; + int x_sf_row_stride; + int x_sf_col_stride; + int x_sft_row_stride; + int x_sft_col_stride; + + // The dimensions. + int M, N, M_rounded, N_rounded, M_sf, N_sf; + bool is_bf16; + bool is_nvfp4; + bool is_rtn; + bool is_rht; + bool is_4o6; + bool is_2d; + bool is_transpose; + int selection_rule; // 0: static_6, 1: static_4, 2: 4o6_mae, 3: 4o6_mse + int rbits; + }; + + template + void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream); + +} // namespace fouroversix diff --git a/fouroversix/src/fouroversix/csrc/include/fp4_quant_kernel.h b/fouroversix/src/fouroversix/csrc/include/fp4_quant_kernel.h new file mode 100644 index 0000000..4cfe797 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/fp4_quant_kernel.h @@ -0,0 +1,505 @@ +/****************************************************************************** + * Copyright (c) 2024, Tri Dao. + * Adapted by Junxian Guo from https://github.com/Dao-AILab/flash-attention/blob/main/csrc/flash_attn/src/flash_fwd_kernel.h + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +#pragma once + +// #include "philox_unpack.cuh" // For at::cuda::philox::unpack + +#include +#include + +#include +#include +#include + +#include "kernel_traits.h" +#include "utils.h" +#include "hadamard_transform.h" +// #include "softmax.h" +// #include "mask.h" +// #include "dropout.h" +// #include "rotary.h" + +namespace fouroversix +{ + + using namespace cute; + + template + inline __device__ void compute_fp4_quant_prologue_block(const Params ¶ms, const int m_block, const int n_block) + { + // Type aliases + using Element = typename Kernel_traits::Element; + using ScaleFactor = typename Kernel_traits::ScaleFactor; + using index_t = typename Kernel_traits::index_t; + + // Compile-time constants + constexpr int kGroupN = Kernel_traits::kGroupN; + constexpr int kBlockM = Kernel_traits::kBlockM; + constexpr int kBlockN = Kernel_traits::kBlockN; + constexpr int kNWarps = Kernel_traits::kNWarps; + constexpr int kNumGroupsInRow = Kernel_traits::kNumGroupsInRow; + constexpr int kNumGroupsInCol = Kernel_traits::kNumGroupsInCol; + constexpr float E4M3_MAX_VALUE = Kernel_traits::E4M3_MAX_VALUE; + constexpr float E2M1_MAX_VALUE = Kernel_traits::E2M1_MAX_VALUE; + + constexpr AdaptiveBlockScalingRuleType kRule = static_cast(kSelectionRule); + constexpr bool Is_4o6 = kRule == AdaptiveBlockScalingRuleType::MAE_4o6 || + kRule == AdaptiveBlockScalingRuleType::MSE_4o6 || + kRule == AdaptiveBlockScalingRuleType::ABS_MAX_4o6; + + using VecTypeX = cutlass::Array; + using VecTypeXFloat = cutlass::Array; + using VecTypeSFT = cutlass::Array; + constexpr int kVecSizeSFT = 4; + + // Shared memory + extern __shared__ char smem[]; + + // Runtime variables + const int tidx = threadIdx.x; + const int num_groups = kNumGroupsInRow * kBlockM; + float *amax_ptr = reinterpret_cast(params.amax_ptr); + + // ------------------------------------------------------------------------- + // Tensor Definitions + // ------------------------------------------------------------------------- + + // Input X (Global Memory) + Tensor mX = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_ptr)), + make_shape(params.M, params.N), + make_stride(params.x_row_stride, _1{})); + Tensor gX = local_tile(mX(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + Tensor mXRHT = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_rht_ptr)), + make_shape(params.M_rounded, params.N_rounded), + make_stride(params.x_rht_row_stride, _1{})); + Tensor gXRHT = local_tile(mXRHT(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + // Scale Factor Temp SFT (Global Memory) + Tensor mSFT = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_sft_ptr)), + make_shape(params.M, params.N_rounded / kGroupN), + make_stride(params.x_sft_row_stride, _1{})); + Tensor gSFT = local_tile(mSFT(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + // Shared Memory Tensors + Tensor sX = make_tensor(make_smem_ptr(reinterpret_cast(smem)), + typename Kernel_traits::SmemLayoutX{}); + + // SFT in Shared Memory (placed after X) + Tensor sSFT = make_tensor(make_smem_ptr(reinterpret_cast(reinterpret_cast(sX.data().get()) + sizeof(Element) * size(sX))), + typename Kernel_traits::SmemLayoutSFT{}); + + // ------------------------------------------------------------------------- + // Data Loading (X -> Shared) + // ------------------------------------------------------------------------- + + typename Kernel_traits::GmemTiledCopyX gmem_tiled_copy_X; + auto gmem_thr_copy_X = gmem_tiled_copy_X.get_thread_slice(tidx); + + Tensor tXgX = gmem_thr_copy_X.partition_S(gX); + Tensor tXsX = gmem_thr_copy_X.partition_D(sX); + + // Construct predicates for bounds checking + Tensor cX = make_identity_tensor(make_shape(size<0>(sX), size<1>(sX))); + Tensor tXcX = gmem_thr_copy_X.partition_S(cX); + Tensor tXpX = make_tensor(make_shape(size<2>(tXcX))); + + for (int i = 0; i < size(tXpX); ++i) + { + tXpX(i) = get<1>(tXcX(0, 0, i)) < params.N - n_block * kBlockN; + } + + __syncthreads(); + + // Async copy from Global to Shared + fouroversix::copy( + gmem_tiled_copy_X, tXgX, tXsX, tXcX, tXpX, params.M - m_block * kBlockM); + + cute::cp_async_fence(); + fouroversix::cp_async_wait<0>(); + __syncthreads(); + + // ------------------------------------------------------------------------- + // Scale Factor Computation + // ------------------------------------------------------------------------- + + float thr_max = 0.0f; + for (int g_idx = tidx; g_idx < num_groups; g_idx += blockDim.x) + { + const int g_row = g_idx / kNumGroupsInRow; + const int g_col = g_idx % kNumGroupsInRow; + + VecTypeXFloat x_vec_float; + for (int i = 0; i < kGroupN; ++i) + { + x_vec_float[i] = static_cast(sX(g_row, g_col * kGroupN + i)); + } + if constexpr (Is_rht) + { + hadamard_quant_group(&x_vec_float[0]); + VecTypeX x_vec; +#pragma unroll + for (int i = 0; i < kGroupN; ++i) + { + // sX(g_row, g_col * kGroupN + i) = static_cast(x_vec_float[i]); + x_vec[i] = static_cast(x_vec_float[i]); + } + + *reinterpret_cast(&gXRHT(g_row, g_col * kGroupN)) = *reinterpret_cast(&x_vec); + } + // VecTypeX x_vec = *reinterpret_cast(&sX(g_row, g_col * kGroupN)); + + // Compute max absolute value in group + float sf = 0.0f; +#pragma unroll + for (int i = 0; i < kGroupN; ++i) + { + sf = max(sf, abs(x_vec_float[i])); + } + + thr_max = max(thr_max, sf); + sSFT(g_row, g_col) = sf; + } + + if constexpr (Is_2d) + { + __syncthreads(); + } + + if constexpr (Is_2d) + { + MaxOp max_op; + for (int g_idx = tidx; g_idx < num_groups; g_idx += blockDim.x) + { + const int g_row = g_idx % kNumGroupsInCol; + const int g_col = g_idx / kNumGroupsInCol; + float sf = sSFT(g_row, g_col); + float blk_sf = Allreduce::run(sf, max_op); // kGroupN is 16 or 32 + sSFT(g_row, g_col) = blk_sf; + __syncthreads(); + } + } + + // ------------------------------------------------------------------------- + // Normalization Constant Reduction (Block-wide Max) + // ------------------------------------------------------------------------- + + // Warp-level reduction + MaxOp max_op; + float warp_max = Allreduce<32>::run(thr_max, max_op); + + // Block-level reduction via shared memory + float *sRed = reinterpret_cast(smem); + if (tidx % 32 == 0) + { + sRed[tidx / 32] = warp_max; + } + __syncthreads(); + + if (tidx == 0) + { + float blk_max = 0.0f; +#pragma unroll + for (int i = 0; i < kNWarps; ++i) + { + blk_max = max(blk_max, sRed[i]); + } + atomicMaxFloat(amax_ptr, blk_max); + } + + // ------------------------------------------------------------------------- + // Write Back SFT (Shared -> Global) + // ------------------------------------------------------------------------- + + for (int r_idx = tidx; r_idx < kBlockM; r_idx += blockDim.x) + { +#pragma unroll + for (int i = 0; i < int(kBlockN / kGroupN); i += kVecSizeSFT) + { + *reinterpret_cast(&gSFT(r_idx, i)) = *reinterpret_cast(&sSFT(r_idx, i)); + } + } + } + + template + inline __device__ void compute_fp4_quant_prologue(const Params ¶ms) + { + // TODO: Implement the fp4 quant kernel + const int m_block = blockIdx.x; + // The block index for the batch. + const int n_block = blockIdx.y; + + fouroversix::compute_fp4_quant_prologue_block(params, m_block, n_block); + } + + template + inline __device__ void compute_fp4_quant_block(const Params ¶ms, const int m_block, const int n_block) + { + // Type aliases + using Element = typename Kernel_traits::Element; + using ScaleFactor = typename Kernel_traits::ScaleFactor; + using index_t = typename Kernel_traits::index_t; + + // Compile-time constants + constexpr int kGroupN = Kernel_traits::kGroupN; + constexpr int kBlockM = Kernel_traits::kBlockM; + constexpr int kBlockN = Kernel_traits::kBlockN; + constexpr int kBlockMSF = Kernel_traits::kBlockMSF; + constexpr int kBlockNSF = Kernel_traits::kBlockNSF; + constexpr int kNWarps = Kernel_traits::kNWarps; + constexpr int kNumGroupsInRow = Kernel_traits::kNumGroupsInRow; + constexpr int kNumGroupsInCol = Kernel_traits::kNumGroupsInCol; + constexpr float E4M3_MAX_VALUE = Kernel_traits::E4M3_MAX_VALUE; + + constexpr AdaptiveBlockScalingRuleType kRule = static_cast(kSelectionRule); + constexpr bool Is_4o6 = kRule == AdaptiveBlockScalingRuleType::MAE_4o6 || + kRule == AdaptiveBlockScalingRuleType::MSE_4o6 || + kRule == AdaptiveBlockScalingRuleType::ABS_MAX_4o6; + constexpr float E4M3_SCALE_4 = Is_4o6 ? Kernel_traits::E4M3_MAX_FOUROVERSIX : E4M3_MAX_VALUE; + constexpr float E4M3_SCALE_6 = Is_4o6 ? Kernel_traits::E4M3_MAX_FOUROVERSIX : E4M3_MAX_VALUE; + constexpr float E2M1_SCALE_4 = Is_4o6 ? 6.0f : 4.0f; + constexpr float E2M1_SCALE_6 = 6.0f; + + constexpr int kSmemBlockInRow = int(kNumGroupsInRow / 4); + constexpr int kSmemBlockInCol = int(kBlockM / 128); + + using VecTypeXe2m1 = std::conditional_t, cutlass::Array>; + using VecTypeSFT = cutlass::Array; + using VecTypeSF = cutlass::Array; + using OutputType = cutlass::Array; + constexpr int kVecSizeXe2m1 = Is_nvfp4 ? 8 : 16; + constexpr int kVecSizeSFT = 4; + constexpr int kVecSizeSF = 16; + + // Shared memory + extern __shared__ char smem[]; + + // Runtime variables + const int tidx = threadIdx.x; + const int num_groups = kNumGroupsInRow * kBlockM; + // JXGuo: assure amax is not zero before calling this kernel + const float amax = *reinterpret_cast(params.amax_ptr); + + if (amax == 0.0f) + { + return; + } + + // ------------------------------------------------------------------------- + // Tensor Definitions + // ------------------------------------------------------------------------- + + // Input X (Global Memory) + // void *__restrict__ x_ptr = Is_rht ? params.x_rht_ptr : params.x_ptr; + Tensor mX = Is_rht ? make_tensor(make_gmem_ptr(reinterpret_cast(params.x_rht_ptr)), + make_shape(params.M_rounded, params.N_rounded), + make_stride(params.x_rht_row_stride, _1{})) + : make_tensor(make_gmem_ptr(reinterpret_cast(params.x_ptr)), + make_shape(params.M, params.N), + make_stride(params.x_row_stride, _1{})); + Tensor gX = local_tile(mX(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + Tensor mXe2m1 = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_e2m1_ptr)), + make_shape(params.M, params.N_rounded / 2), + make_stride(params.x_e2m1_row_stride, _1{})); + Tensor gXe2m1 = local_tile(mXe2m1(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + // Scale Factor Temp SFT (Global Memory) + Tensor mSFT = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_sft_ptr)), + make_shape(params.M, params.N_rounded / kGroupN), + make_stride(params.x_sft_row_stride, _1{})); + Tensor gSFT = local_tile(mSFT(_, _), Shape, Int>{}, + make_coord(m_block, n_block)); + + Tensor gSF = make_tensor(make_gmem_ptr(reinterpret_cast(params.x_sf_ptr)), + make_shape(params.M_sf, params.N_sf), + make_stride(params.x_sf_row_stride, _1{})); + // Tensor gSF = local_tile(mSF(_, _), Shape, Int<16>>{}, + // make_coord(m_block, n_block)); + + // Shared Memory Tensors + Tensor sX = make_tensor(make_smem_ptr(reinterpret_cast(smem)), + typename Kernel_traits::SmemLayoutX{}); + + // SFT in Shared Memory (placed after X) + Tensor sSFT = make_tensor(make_smem_ptr(reinterpret_cast(reinterpret_cast(sX.data().get()) + sizeof(Element) * size(sX))), + typename Kernel_traits::SmemLayoutSFT{}); + + Tensor sXe2m1 = make_tensor(make_smem_ptr(reinterpret_cast(reinterpret_cast(sSFT.data().get()) + sizeof(float) * size(sSFT))), + Shape, Int>{}, + Stride, _1>{}); + + Tensor sSF = make_tensor(make_smem_ptr(reinterpret_cast(reinterpret_cast(sXe2m1.data().get()) + sizeof(uint8_t) * size(sXe2m1))), + typename Kernel_traits::SmemLayoutSF{}); + + // ------------------------------------------------------------------------- + // Data Loading (X -> Shared) + // ------------------------------------------------------------------------- + + typename Kernel_traits::GmemTiledCopyX gmem_tiled_copy_X; + auto gmem_thr_copy_X = gmem_tiled_copy_X.get_thread_slice(tidx); + + Tensor tXgX = gmem_thr_copy_X.partition_S(gX); + Tensor tXsX = gmem_thr_copy_X.partition_D(sX); + + // Construct predicates for bounds checking + Tensor cX = make_identity_tensor(make_shape(size<0>(sX), size<1>(sX))); + Tensor tXcX = gmem_thr_copy_X.partition_S(cX); + Tensor tXpX = make_tensor(make_shape(size<2>(tXcX))); + + for (int i = 0; i < size(tXpX); ++i) + { + tXpX(i) = get<1>(tXcX(0, 0, i)) < params.N - n_block * kBlockN; + } + + __syncthreads(); + + // Async copy from Global to Shared + fouroversix::copy( + gmem_tiled_copy_X, tXgX, tXsX, tXcX, tXpX, params.M - m_block * kBlockM); + + cute::cp_async_fence(); + + // ------------------------------------------------------------------------- + // Data Loading (SFT -> Shared) + // ------------------------------------------------------------------------- + + for (int r_idx = tidx; r_idx < kBlockM; r_idx += blockDim.x) + { +#pragma unroll + for (int i = 0; i < int(kBlockN / kGroupN); i += kVecSizeSFT) + { + *reinterpret_cast(&sSFT(r_idx, i)) = *reinterpret_cast(&gSFT(r_idx, i)); + } + } + + fouroversix::cp_async_wait<0>(); + __syncthreads(); + + // ------------------------------------------------------------------------- + // Quantization + // ------------------------------------------------------------------------- + + for (int g_idx = tidx; g_idx < num_groups; g_idx += blockDim.x) + { + const int g_row = g_idx % kNumGroupsInCol; + const int g_col = g_idx / kNumGroupsInCol; + const float g_max = sSFT(g_row, g_col); + + const Tensor sGX = make_tensor(make_smem_ptr(sX.data() + g_row * kBlockN + g_col * kGroupN), + Shape, Int>{}, + Stride, _1>{}); + + OutputType res[int(kGroupN / 8)]; + float encode_scale; + float sf; + + if constexpr (Is_4o6) + { + encode_scale = E2M1_SCALE_6 * E4M3_SCALE_6 / amax; + + float sf_high_precision = g_max / E2M1_SCALE_6 * encode_scale; + float sf_[2] = {sf_high_precision * 1.5, sf_high_precision}; + + sf_[0] = static_cast(static_cast(sf_[0])); + sf_[1] = static_cast(static_cast(sf_[1])); + + sf = fp4_conversion(sGX, amax, sf_, res, params.rbits); + } + else + { + float sf_val = 0.0f; + if constexpr (kRule == AdaptiveBlockScalingRuleType::STATIC_6) + { + encode_scale = E4M3_SCALE_6 * E2M1_SCALE_6 / amax; + sf_val = clamp(g_max / E2M1_SCALE_6 * encode_scale, 0, E4M3_MAX_VALUE); + } + else if constexpr (kRule == AdaptiveBlockScalingRuleType::STATIC_4) + { + encode_scale = E2M1_SCALE_4 * E4M3_SCALE_4 / amax; + sf_val = clamp(g_max / E2M1_SCALE_4 * encode_scale, 0, E4M3_MAX_VALUE); + } + else + { + printf("in fp4_quant_block, kRule = %d, not supported\n", kRule); + assert(false); + } + + sf_val = static_cast(static_cast(sf_val)); + sf = fp4_conversion(sGX, amax, &sf_val, res, params.rbits); + } + + // Write quantized data + for (int i = 0; i < int(kGroupN / 8); ++i) + { + *reinterpret_cast(&sXe2m1(g_row, g_col * (kGroupN / 2) + i * 4)) = res[i]; + } + + // Write scale factor (layout: 128x4 blocks, 32 rows per block) + const int r_in_blk = g_row % 128; + const int c_in_blk = g_col % 4; + const int blk_row = int(g_row / 128); + const int blk_col = int(g_col / 4); + const int sf_row = 32 * (blk_row * kSmemBlockInRow + blk_col) + r_in_blk % 32; + const int sf_col = int(r_in_blk / 32) * 4 + c_in_blk; + sSF(sf_row, sf_col) = static_cast(sf); + __syncthreads(); + } + + // ------------------------------------------------------------------------- + // Write Back Xe2m1 (Shared -> Global) + // ------------------------------------------------------------------------- + + __syncthreads(); + + for (int r_idx = tidx; r_idx < kBlockM; r_idx += blockDim.x) + { +#pragma unroll + for (int i = 0; i < int(kBlockN / 2); i += kVecSizeXe2m1) + { + *reinterpret_cast(&gXe2m1(r_idx, i)) = *reinterpret_cast(&sXe2m1(r_idx, i)); + } + } + + // ------------------------------------------------------------------------- + // Write Back SF (Shared -> Global) + // ------------------------------------------------------------------------- + + const int gbl_blk_row_stride = int(params.N_rounded / (kGroupN * 4)); + const int gbl_blk_col_stride = 1; + const int gbl_blk_idx_base = (m_block * kSmemBlockInCol) * gbl_blk_row_stride + (n_block * kSmemBlockInRow) * gbl_blk_col_stride; + + static_assert(kVecSizeSF == kBlockNSF, "kVecSizeSF must be equal to kBlockNSF"); + for (int r_idx = tidx; r_idx < kBlockMSF; r_idx += blockDim.x) + { + const int loc_blk_idx = int(r_idx / 32); + const int loc_row = r_idx % 32; + const int loc_blk_row = int(loc_blk_idx / kSmemBlockInRow); + const int loc_blk_col = int(loc_blk_idx % kSmemBlockInRow); + const int gbl_blk_idx = gbl_blk_idx_base + loc_blk_row * gbl_blk_row_stride + loc_blk_col * gbl_blk_col_stride; + const index_t gbl_row = index_t(32) * gbl_blk_idx + loc_row; + *reinterpret_cast(&gSF(gbl_row, 0)) = *reinterpret_cast(&sSF(r_idx, 0)); + } + } + + template + inline __device__ void compute_fp4_quant(const Params ¶ms) + { + // TODO: Implement the fp4 quant kernel + const int m_block = blockIdx.x; + // The block index for the batch. + const int n_block = blockIdx.y; + + fouroversix::compute_fp4_quant_block(params, m_block, n_block); + } + +} // namespace fouroversix diff --git a/fouroversix/src/fouroversix/csrc/include/fp4_quant_launch_template.h b/fouroversix/src/fouroversix/csrc/include/fp4_quant_launch_template.h new file mode 100644 index 0000000..4168b3e --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/fp4_quant_launch_template.h @@ -0,0 +1,147 @@ +/****************************************************************************** + * Copyright (c) 2023, Tri Dao. + * Adapted by Junxian Guo from https://github.com/Dao-AILab/flash-attention/blob/main/csrc/flash_attn/src/flash_fwd_launch_template.h + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +#pragma once +#include // For C10_CUDA_CHECK and C10_CUDA_KERNEL_LAUNCH_CHECK + +#include "static_switch.h" +#include "hardware_info.h" +#include "fp4_quant.h" +#include "fp4_quant_kernel.h" + +namespace fouroversix +{ + +// Determine if the architecture supports FLASH and define a macro to handle parameter modifiers +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 1000 +#define ARCH_SUPPORTS_FLASH +#define KERNEL_PARAM_MODIFIER __grid_constant__ +#else +#define KERNEL_PARAM_MODIFIER +#endif + +// Define a macro for unsupported architecture handling to centralize the error message +#define FLASH_UNSUPPORTED_ARCH printf("FATAL: FourOverSix requires building with sm version sm100, but was built for < 10.0!"); + +// Use a macro to clean up kernel definitions +#define DEFINE_FP4_QUANT_KERNEL(kernelName, ...) \ + template \ + __global__ void kernelName(KERNEL_PARAM_MODIFIER const FP4_quant_params params) + + DEFINE_FP4_QUANT_KERNEL(fp4_quant_prologue_kernel, bool Is_nvfp4, bool Is_rht, bool Is_2d, bool Is_transpose, bool Is_rtn, int kSelectionRule) + { +#if defined(ARCH_SUPPORTS_FLASH) + fouroversix::compute_fp4_quant_prologue(params); +#else + FLASH_UNSUPPORTED_ARCH +#endif + } + + DEFINE_FP4_QUANT_KERNEL(fp4_quant_kernel, bool Is_nvfp4, bool Is_rht, bool Is_2d, bool Is_transpose, bool Is_rtn, int kSelectionRule) + { +#if defined(ARCH_SUPPORTS_FLASH) + fouroversix::compute_fp4_quant(params); +#else + FLASH_UNSUPPORTED_ARCH +#endif + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + void launch_fp4_quant_prologue(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr size_t smem_size = Kernel_traits::kSmemSize; + + const int num_m_block = (params.M + Kernel_traits::kBlockM - 1) / Kernel_traits::kBlockM; + const int num_n_block = (params.N + Kernel_traits::kBlockN - 1) / Kernel_traits::kBlockN; + dim3 grid(num_m_block, num_n_block); + BOOL_SWITCH(params.is_rtn, Is_rtn, [&] + { + BOOL_SWITCH(params.is_2d, Is_2d, [&] + { + SELECTION_RULE_SWITCH(params.selection_rule, kSelectionRule, [&] + { + auto kernel_prologue = &fp4_quant_prologue_kernel; + if (smem_size >= 48 * 1024) { + C10_CUDA_CHECK(cudaFuncSetAttribute( + kernel_prologue, cudaFuncAttributeMaxDynamicSharedMemorySize, smem_size)); + } + kernel_prologue<<>>(params); + C10_CUDA_KERNEL_LAUNCH_CHECK(); + }); + }); + }); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + void launch_fp4_quant(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr size_t smem_size = Kernel_traits::kSmemSize; + + const int num_m_block = (params.M + Kernel_traits::kBlockM - 1) / Kernel_traits::kBlockM; + const int num_n_block = (params.N + Kernel_traits::kBlockN - 1) / Kernel_traits::kBlockN; + dim3 grid(num_m_block, num_n_block); + BOOL_SWITCH(params.is_rtn, Is_rtn, [&] + { + BOOL_SWITCH(params.is_2d, Is_2d, [&] + { + SELECTION_RULE_SWITCH(params.selection_rule, kSelectionRule, [&] + { + auto kernel = &fp4_quant_kernel; + if (smem_size >= 48 * 1024) { + C10_CUDA_CHECK(cudaFuncSetAttribute( + kernel, cudaFuncAttributeMaxDynamicSharedMemorySize, smem_size)); + } + kernel<<>>(params); + C10_CUDA_KERNEL_LAUNCH_CHECK(); + }); + }); + }); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // template> + + template + void run_mxfp4_quant(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr bool Is_nvfp4 = false; + constexpr bool Is_rht = false; + launch_fp4_quant_prologue, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + launch_fp4_quant, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + } + + template + void run_mxfp4_quant_rht(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr bool Is_nvfp4 = false; + constexpr bool Is_rht = true; + launch_fp4_quant_prologue, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + launch_fp4_quant, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + } + + template + void run_nvfp4_quant(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr bool Is_nvfp4 = true; + constexpr bool Is_rht = false; + launch_fp4_quant_prologue, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + launch_fp4_quant, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + } + + template + void run_nvfp4_quant_rht(FP4_quant_params ¶ms, cudaStream_t stream) + { + constexpr bool Is_nvfp4 = true; + constexpr bool Is_rht = true; + launch_fp4_quant_prologue, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + launch_fp4_quant, Is_nvfp4, Is_rht, Is_transpose>(params, stream); + } + +} // namespace fouroversix diff --git a/fouroversix/src/fouroversix/csrc/include/hadamard_transform.h b/fouroversix/src/fouroversix/csrc/include/hadamard_transform.h new file mode 100644 index 0000000..52ba23e --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/hadamard_transform.h @@ -0,0 +1,56 @@ + +/****************************************************************************** + * Copyright (c) 2023, Tri Dao. + * Adapted by Junxian Guo from https://github.com/Dao-AILab/fast-hadamard-transform/blob/master/csrc/code_gen.py + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +// This file is auto-generated. See "hadamard_code_gen.py" + + +#pragma once + + +namespace fouroversix { + +template +__device__ __forceinline__ void hadamard_quant_group_16(float x[16]) { + float out[16]; + out[0] = + x[0] + x[1] + x[2] - x[3] + x[4] - x[5] - x[6] - x[7] - x[8] - x[9] - x[10] + x[11] - x[12] + x[13] - x[14] - x[15]; + out[1] = + x[0] - x[1] + x[2] + x[3] + x[4] + x[5] - x[6] + x[7] - x[8] + x[9] - x[10] - x[11] - x[12] - x[13] - x[14] + x[15]; + out[2] = + x[0] + x[1] - x[2] + x[3] + x[4] - x[5] + x[6] + x[7] - x[8] - x[9] + x[10] - x[11] - x[12] + x[13] + x[14] + x[15]; + out[3] = + x[0] - x[1] - x[2] - x[3] + x[4] + x[5] + x[6] - x[7] - x[8] + x[9] + x[10] + x[11] - x[12] - x[13] + x[14] - x[15]; + out[4] = + x[0] + x[1] + x[2] - x[3] - x[4] + x[5] + x[6] + x[7] - x[8] - x[9] - x[10] + x[11] + x[12] - x[13] + x[14] + x[15]; + out[5] = + x[0] - x[1] + x[2] + x[3] - x[4] - x[5] + x[6] - x[7] - x[8] + x[9] - x[10] - x[11] + x[12] + x[13] + x[14] - x[15]; + out[6] = + x[0] + x[1] - x[2] + x[3] - x[4] + x[5] - x[6] - x[7] - x[8] - x[9] + x[10] - x[11] + x[12] - x[13] - x[14] - x[15]; + out[7] = + x[0] - x[1] - x[2] - x[3] - x[4] - x[5] - x[6] + x[7] - x[8] + x[9] + x[10] + x[11] + x[12] + x[13] - x[14] + x[15]; + out[8] = + x[0] + x[1] + x[2] - x[3] + x[4] - x[5] - x[6] - x[7] + x[8] + x[9] + x[10] - x[11] + x[12] - x[13] + x[14] + x[15]; + out[9] = + x[0] - x[1] + x[2] + x[3] + x[4] + x[5] - x[6] + x[7] + x[8] - x[9] + x[10] + x[11] + x[12] + x[13] + x[14] - x[15]; + out[10] = + x[0] + x[1] - x[2] + x[3] + x[4] - x[5] + x[6] + x[7] + x[8] + x[9] - x[10] + x[11] + x[12] - x[13] - x[14] - x[15]; + out[11] = + x[0] - x[1] - x[2] - x[3] + x[4] + x[5] + x[6] - x[7] + x[8] - x[9] - x[10] - x[11] + x[12] + x[13] - x[14] + x[15]; + out[12] = + x[0] + x[1] + x[2] - x[3] - x[4] + x[5] + x[6] + x[7] + x[8] + x[9] + x[10] - x[11] - x[12] + x[13] - x[14] - x[15]; + out[13] = + x[0] - x[1] + x[2] + x[3] - x[4] - x[5] + x[6] - x[7] + x[8] - x[9] + x[10] + x[11] - x[12] - x[13] - x[14] + x[15]; + out[14] = + x[0] + x[1] - x[2] + x[3] - x[4] + x[5] - x[6] - x[7] + x[8] + x[9] - x[10] + x[11] - x[12] + x[13] + x[14] + x[15]; + out[15] = + x[0] - x[1] - x[2] - x[3] - x[4] - x[5] - x[6] + x[7] + x[8] - x[9] - x[10] - x[11] - x[12] - x[13] + x[14] - x[15]; + #pragma unroll + for (int i = 0; i < 16; i++) { x[i] = static_cast(static_cast(out[i] / 4)); } +} + +template +__device__ __forceinline__ void hadamard_quant_group_32(float x[32]) { + hadamard_quant_group_16(x); + hadamard_quant_group_16(x + 16); +} + +template +__device__ __forceinline__ void hadamard_quant_group(float* x) { + if constexpr (Is_nvfp4) { + hadamard_quant_group_16(x); + } else { + hadamard_quant_group_32(x); + } +} + + +} // namespace fouroversix + diff --git a/fouroversix/src/fouroversix/csrc/include/hardware_info.h b/fouroversix/src/fouroversix/csrc/include/hardware_info.h new file mode 100644 index 0000000..b218a29 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/hardware_info.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * Copyright (c) 2024, Tri Dao. + ******************************************************************************/ + +#pragma once + +#include + +#if !defined(__CUDACC_RTC__) +#include "cuda_runtime.h" +#endif + +#define CHECK_CUDA(call) \ + do { \ + cudaError_t status_ = call; \ + if (status_ != cudaSuccess) { \ + fprintf(stderr, "CUDA error (%s:%d): %s\n", __FILE__, __LINE__, \ + cudaGetErrorString(status_)); \ + exit(1); \ + } \ + } while (0) + + +inline int get_current_device() { + int device; + CHECK_CUDA(cudaGetDevice(&device)); + return device; +} + +inline std::tuple get_compute_capability(int device) { + int capability_major, capability_minor; + CHECK_CUDA(cudaDeviceGetAttribute(&capability_major, cudaDevAttrComputeCapabilityMajor, device)); + CHECK_CUDA(cudaDeviceGetAttribute(&capability_minor, cudaDevAttrComputeCapabilityMinor, device)); + return {capability_major, capability_minor}; +} + +inline int get_num_sm(int device) { + int multiprocessor_count; + CHECK_CUDA(cudaDeviceGetAttribute(&multiprocessor_count, cudaDevAttrMultiProcessorCount, device)); + return multiprocessor_count; +} diff --git a/fouroversix/src/fouroversix/csrc/include/kernel_traits.h b/fouroversix/src/fouroversix/csrc/include/kernel_traits.h new file mode 100644 index 0000000..4f3d6e4 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/kernel_traits.h @@ -0,0 +1,141 @@ +/****************************************************************************** + * Copyright (c) 2024, Tri Dao. + * Adapted by Junxian Guo from https://github.com/Dao-AILab/flash-attention/blob/main/csrc/flash_attn/src/kernel_traits.h + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +#pragma once + +#include "cute/tensor.hpp" + +#include "cutlass/cutlass.h" +#include "cutlass/layout/layout.h" +#include + +using namespace cute; + +template +struct Base_kernel_traits +{ + + static constexpr float E2M1_MAX_VALUE = 6.0f; + static constexpr float E4M3_MIN_VALUE = -448.0f; + static constexpr float E4M3_MAX_VALUE = 448.0f; + static constexpr float E4M3_MAX_FOUROVERSIX = 256.0f; + + using Element = elem_type; + using ScaleFactor = std::conditional_t; + // using ElementXe2m1Packed = std::conditional_t; + using NormConst = float; + static constexpr bool Has_cp_async = true; + + using index_t = int64_t; + + using MMA_Atom_Arch = std::conditional_t< + std::is_same_v, + MMA_Atom, + MMA_Atom>; + + using SmemCopyAtom = Copy_Atom; + using SmemCopyAtomTransposed = Copy_Atom; +}; + +// If Share_Q_K_smem is true, that forces Is_Q_in_regs to be true +template > +struct FP4_quant_kernel_traits : public Base +{ + static constexpr float E2M1_MAX_VALUE = Base::E2M1_MAX_VALUE; + static constexpr float E2M1_MAX_FOUR = 4; + static constexpr float E4M3_MIN_VALUE = Base::E4M3_MIN_VALUE; + static constexpr float E4M3_MAX_VALUE = Base::E4M3_MAX_VALUE; + static constexpr float E4M3_MAX_FOUROVERSIX = Base::E4M3_MAX_FOUROVERSIX; + + using Element = typename Base::Element; + using ScaleFactor = typename Base::ScaleFactor; + using NormConst = typename Base::NormConst; + using index_t = typename Base::index_t; + static constexpr bool Has_cp_async = Base::Has_cp_async; + using SmemCopyAtom = typename Base::SmemCopyAtom; + using SmemCopyAtomTransposed = typename Base::SmemCopyAtomTransposed; + + // The number of threads. + static constexpr int kNWarps = kNWarps_; + static constexpr int kNThreads = kNWarps * 32; + + static constexpr int kBlockM = kBlockM_; + static constexpr int kBlockN = kBlockN_; + static constexpr int kGroupN = Is_nvfp4 ? 16 : 32; // 16 or 32 elements + static_assert(kBlockM % 128 == 0); + static_assert(kBlockN % (kGroupN * 4) == 0); + static_assert(kBlockN % 64 == 0); + static constexpr int kBlockNSmem = 64; // each cache line is 128 bytes, so we need to align to 64 bytes + static constexpr int kBlockNGmem = kBlockN % 128 == 0 ? 128 : 64; + + using TiledMma = TiledMMA< + typename Base::MMA_Atom_Arch, + Layout, _1, _1>>, // 4x1x1 or 8x1x1 thread group + Tile, _16, _16>>; + + // static constexpr int kGroupN = Is_nvfp4 ? 16 : 32; // 16 or 32 elements + // static constexpr int kSwizzleM = Is_nvfp4 ? 4 : 5; // 16 or 32 elements + // static constexpr int kSwizzleS = Is_nvfp4 ? 2 : 1; // 4 or 2 elements + // static constexpr int kSwizzleB = Is_nvfp4 ? 2 : 1; // 2 or 1 bits + + static constexpr int kNumGroupsInRow = kBlockN / kGroupN; + static_assert(kBlockM % kGroupN == 0, "kBlockM must be a multiple of kGroupN if is 2d"); + static constexpr int kNumGroupsInCol = kBlockM; // for 2d scale factor + // static constexpr int kSwizzleM = 3; + // static constexpr int kSwizzleS = 3; + // static constexpr int kSwizzleB = 2; + + // using SmemLayoutAtomX = decltype( + // composition(Swizzle{}, + // // This has to be kBlockNSmem, using kHeadDim gives wrong results for d=128 + // Layout>, + // Stride, _1>>{})); + // using SmemLayoutX = decltype(tile_to_shape( + // SmemLayoutAtomX{}, + // Shape, Int>{})); + using SmemLayoutX = Layout, Int>, Stride, _1>>; + + using SmemLayoutXTransposed = decltype(composition(SmemLayoutX{}, make_layout(Shape, Int>{}, GenRowMajor{}))); + using SmemLayoutXTransposedNoSwizzle = decltype(get_nonswizzle_portion(SmemLayoutXTransposed{})); + + using SmemLayoutSFT = Layout, Int>, + Stride, _1>>; + + static constexpr int kBlockMSF = kBlockM / 128 * 32 * int(kBlockN / (kGroupN * 4)); + static constexpr int kBlockNSF = 16; + using SmemLayoutSF = Layout, Int>, + Stride, _1>>; + + using SmemLayout = SmemLayoutX; + static constexpr int kSmemXSize = size(SmemLayout{}) * sizeof(Element); + static constexpr int kSmemXe2m1Size = kSmemXSize / 4; + static constexpr int kSmemSFTSize = size(SmemLayoutSFT{}) * sizeof(float); + static constexpr int kSmemSFSize = size(SmemLayoutSF{}) * sizeof(ScaleFactor); + static constexpr int kSmemSize = kSmemXSize + kSmemXe2m1Size + kSmemSFTSize + kSmemSFSize; + + static constexpr int kGmemElemsPerLoad = sizeof(cute::uint128_t) / sizeof(Element); + static_assert(kBlockN % kGmemElemsPerLoad == 0, "kBlockN must be a multiple of kGmemElemsPerLoad"); + static constexpr int kGmemThreadsPerRow = kBlockNSmem / kGmemElemsPerLoad; + static_assert(kNThreads % kGmemThreadsPerRow == 0, "kNThreads must be a multiple of kGmemThreadsPerRow"); + using GmemLayoutAtomX = Layout, Int>, + Stride, _1>>; + + using Gmem_copy_atom_x = Copy_Atom, Element>; + + using GmemTiledCopyX = decltype(make_tiled_copy(Gmem_copy_atom_x{}, + GmemLayoutAtomX{}, + Layout>{})); + + using Gmem_copy_atom_sft = Copy_Atom, float>; + + using GmemLayoutAtomSFT = Layout< + Shape<_64, _1>, + Stride<_1, _0>>; + + using GmemTiledCopySFT = decltype(make_tiled_copy(Gmem_copy_atom_sft{}, GmemLayoutAtomSFT{}, Layout>{})); +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/fouroversix/src/fouroversix/csrc/include/static_switch.h b/fouroversix/src/fouroversix/csrc/include/static_switch.h new file mode 100644 index 0000000..38cb2c6 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/static_switch.h @@ -0,0 +1,61 @@ +// Inspired by +// https://github.com/NVIDIA/DALI/blob/main/include/dali/core/static_switch.h +// and https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/Dispatch.h + +// Adapted by Junxian Guo from https://github.com/NVIDIA/DALI/blob/main/include/dali/core/static_switch.h +// Copyright (c) 2025, FourOverSix Team. + +#pragma once + +/// @param COND - a boolean expression to switch by +/// @param CONST_NAME - a name given for the constexpr bool variable. +/// @param ... - code to execute for true and false +/// +/// Usage: +/// ``` +/// BOOL_SWITCH(flag, BoolConst, [&] { +/// some_function(...); +/// }); +/// ``` + +#define BOOL_SWITCH(COND, CONST_NAME, ...) \ + [&] { \ + if (COND) { \ + constexpr static bool CONST_NAME = true; \ + return __VA_ARGS__(); \ + } else { \ + constexpr static bool CONST_NAME = false; \ + return __VA_ARGS__(); \ + } }() + +#define FP16_SWITCH(COND, ...) \ + [&] { \ + if (COND) { \ + using fp16_type = cutlass::half_t; \ + return __VA_ARGS__(); \ + } else { \ + using fp16_type = cutlass::bfloat16_t; \ + return __VA_ARGS__(); \ + } }() + +#define SELECTION_RULE_SWITCH(SELECTION_RULE, ...) \ + [&] { \ + if (SELECTION_RULE == 0) { \ + constexpr static int kSelectionRule = 0; \ + return __VA_ARGS__(); \ + } else if (SELECTION_RULE == 1) { \ + constexpr static int kSelectionRule = 1; \ + return __VA_ARGS__(); \ + } else if (SELECTION_RULE == 2) { \ + constexpr static int kSelectionRule = 2; \ + return __VA_ARGS__(); \ + } else if (SELECTION_RULE == 3) { \ + constexpr static int kSelectionRule = 3; \ + return __VA_ARGS__(); \ + } else if (SELECTION_RULE == 4) { \ + constexpr static int kSelectionRule = 4; \ + return __VA_ARGS__(); \ + } else { \ + constexpr static int kSelectionRule = 0; \ + return __VA_ARGS__(); \ + } }() diff --git a/fouroversix/src/fouroversix/csrc/include/utils.h b/fouroversix/src/fouroversix/csrc/include/utils.h new file mode 100644 index 0000000..0af1817 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/include/utils.h @@ -0,0 +1,701 @@ +/****************************************************************************** + * Copyright (c) 2023, Tri Dao. + * Adapted by Junxian Guo and Jack Cook from https://github.com/Dao-AILab/flash-attention/blob/main/csrc/flash_attn/src/utils.h + * Copyright (c) 2025, FourOverSix Team. + ******************************************************************************/ + +#pragma once + +#include +#include +#include + +#include +#include + +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 800 +#include +#endif + +#include + +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +namespace fouroversix +{ + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + __forceinline__ __device__ uint32_t relu2(const uint32_t x); + + template <> + __forceinline__ __device__ uint32_t relu2(const uint32_t x) + { + uint32_t res; + const uint32_t zero = 0u; +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 800 + asm volatile("max.f16x2 %0, %1, %2;\n" : "=r"(res) : "r"(x), "r"(zero)); +#else + asm volatile( + "{\n" + "\t .reg .f16x2 sela;\n" + "\t set.gtu.u32.f16x2 sela, %1, %2;\n" + "\t and.b32 %0, sela, %1;\n" + "}\n" : "=r"(res) : "r"(x), "r"(zero)); +#endif + return res; + } + +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 800 + template <> + __forceinline__ __device__ uint32_t relu2(const uint32_t x) + { + uint32_t res; + const uint32_t zero = 0u; + asm volatile("max.bf16x2 %0, %1, %2;\n" : "=r"(res) : "r"(x), "r"(zero)); + return res; + } +#endif + + //////////////////////////////////////////////////////////////////////////////////////////////////// + +#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 800 + + template + __forceinline__ __device__ uint32_t convert_relu2(const float2 x); + + template <> + __forceinline__ __device__ uint32_t convert_relu2(const float2 x) + { + uint32_t res; + const uint32_t a = reinterpret_cast(x.x); + const uint32_t b = reinterpret_cast(x.y); + asm volatile("cvt.rn.relu.f16x2.f32 %0, %1, %2;\n" : "=r"(res) : "r"(b), "r"(a)); + return res; + } + + template <> + __forceinline__ __device__ uint32_t convert_relu2(const float2 x) + { + uint32_t res; + const uint32_t a = reinterpret_cast(x.x); + const uint32_t b = reinterpret_cast(x.y); + asm volatile("cvt.rn.relu.bf16x2.f32 %0, %1, %2;\n" : "=r"(res) : "r"(b), "r"(a)); + return res; + } + +#endif + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + struct MaxOp + { + __device__ __forceinline__ T operator()(T const &x, T const &y) { return x > y ? x : y; } + }; + + template <> + struct MaxOp + { + // This is slightly faster + __device__ __forceinline__ float operator()(float const &x, float const &y) { return max(x, y); } + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + struct SumOp + { + __device__ __forceinline__ T operator()(T const &x, T const &y) { return x + y; } + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + struct Allreduce + { + static_assert(THREADS == 32 || THREADS == 16 || THREADS == 8 || THREADS == 4); + template + static __device__ __forceinline__ T run(T x, Operator &op) + { + constexpr int OFFSET = THREADS / 2; + x = op(x, __shfl_xor_sync(uint32_t(-1), x, OFFSET)); + return Allreduce::run(x, op); + } + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template <> + struct Allreduce<2> + { + template + static __device__ __forceinline__ T run(T x, Operator &op) + { + x = op(x, __shfl_xor_sync(uint32_t(-1), x, 1)); + return x; + } + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + __forceinline__ __device__ void gemm(Tensor0 &acc, Tensor1 &tCrA, Tensor2 &tCrB, Tensor3 const &tCsA, + Tensor4 const &tCsB, TiledMma tiled_mma, + TiledCopyA smem_tiled_copy_A, TiledCopyB smem_tiled_copy_B, + ThrCopyA smem_thr_copy_A, ThrCopyB smem_thr_copy_B) + { + CUTE_STATIC_ASSERT_V(size<1>(tCrA) == size<1>(acc)); // MMA_M + CUTE_STATIC_ASSERT_V(size<1>(tCrB) == size<2>(acc)); // MMA_N + CUTE_STATIC_ASSERT_V(size<2>(tCrA) == size<2>(tCrB)); // MMA_K + Tensor tCrA_copy_view = smem_thr_copy_A.retile_D(tCrA); + CUTE_STATIC_ASSERT_V(size<1>(tCsA) == size<1>(tCrA_copy_view)); // M + Tensor tCrB_copy_view = smem_thr_copy_B.retile_D(tCrB); + CUTE_STATIC_ASSERT_V(size<1>(tCsB) == size<1>(tCrB_copy_view)); // N + if (!A_in_regs) + { + cute::copy(smem_tiled_copy_A, tCsA(_, _, _0{}), tCrA_copy_view(_, _, _0{})); + } + if (!B_in_regs) + { + cute::copy(smem_tiled_copy_B, tCsB(_, _, _0{}), tCrB_copy_view(_, _, _0{})); + } +#pragma unroll + for (int i = 0; i < size<2>(tCrA); ++i) + { + if (i < size<2>(tCrA) - 1) + { + if (!A_in_regs) + { + cute::copy(smem_tiled_copy_A, tCsA(_, _, i + 1), tCrA_copy_view(_, _, i + 1)); + } + if (!B_in_regs) + { + cute::copy(smem_tiled_copy_B, tCsB(_, _, i + 1), tCrB_copy_view(_, _, i + 1)); + } + } + cute::gemm(tiled_mma, tCrA(_, _, i), tCrB(_, _, i), acc); + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + __forceinline__ __device__ void gemm_rs(Tensor0 &acc, Tensor1 &tCrA, Tensor2 &tCrB, Tensor3 const &tCsB, + TiledMma tiled_mma, TiledCopy smem_tiled_copy_B, + ThrCopy smem_thr_copy_B) + { + CUTE_STATIC_ASSERT_V(size<1>(tCrA) == size<1>(acc)); // MMA_M + CUTE_STATIC_ASSERT_V(size<1>(tCrB) == size<2>(acc)); // MMA_N + CUTE_STATIC_ASSERT_V(size<2>(tCrA) == size<2>(tCrB)); // MMA_K + Tensor tCrB_copy_view = smem_thr_copy_B.retile_D(tCrB); + CUTE_STATIC_ASSERT_V(size<1>(tCsB) == size<1>(tCrB_copy_view)); // N + cute::copy(smem_tiled_copy_B, tCsB(_, _, _0{}), tCrB_copy_view(_, _, _0{})); +#pragma unroll + for (int i = 0; i < size<2>(tCrA); ++i) + { + if (i < size<2>(tCrA) - 1) + { + cute::copy(smem_tiled_copy_B, tCsB(_, _, i + 1), tCrB_copy_view(_, _, i + 1)); + } + cute::gemm(tiled_mma, tCrA(_, _, i), tCrB(_, _, i), acc); + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + // Convert acc_layout from (MMA=4, MMA_M, MMA_N) to (nrow=(2, MMA_M), ncol=(2, MMA_N)) + template + __forceinline__ __device__ auto convert_layout_acc_rowcol(Layout acc_layout) + { + static_assert(decltype(size<0>(acc_layout))::value == 4); + static_assert(decltype(rank(acc_layout))::value == 3); + auto l = logical_divide(acc_layout, Shape<_2>{}); // ((2, 2), MMA_M, MMA_N) + return make_layout(make_layout(get<0, 1>(l), get<1>(l)), make_layout(get<0, 0>(l), get<2>(l))); + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + // Convert acc_layout from (MMA=4, MMA_M, MMA_N) to ((4, 2), MMA_M, MMA_N / 2) + // if using m16n8k16, or to (4, MMA_M, MMA_N) if using m16n8k8. + template + __forceinline__ __device__ auto convert_layout_acc_Aregs(Layout acc_layout) + { + using X = Underscore; + static_assert(decltype(size<0>(acc_layout))::value == 4); + static_assert(decltype(rank(acc_layout))::value == 3); + constexpr int mma_shape_K = get<2>(typename MMA_traits::Shape_MNK{}); + static_assert(mma_shape_K == 8 || mma_shape_K == 16); + if constexpr (mma_shape_K == 8) + { + return acc_layout; + } + else + { + auto l = logical_divide(acc_layout, Shape{}); // (4, MMA_M, (2, MMA_N / 2))) + return make_layout(make_layout(get<0>(l), get<2, 0>(l)), get<1>(l), get<2, 1>(l)); + } + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + // Convert acc_layout from (MMA=4, MMA_M, MMA_N) to ((4, 2), MMA_M, MMA_N / 2) + template + __forceinline__ __device__ auto convert_layout_acc_dropout(Layout acc_layout) + { + using X = Underscore; + static_assert(decltype(size<0>(acc_layout))::value == 4); + static_assert(decltype(rank(acc_layout))::value == 3); + auto l = logical_divide(acc_layout, Shape{}); // (4, MMA_M, (2, MMA_N / 2))) + return make_layout(make_layout(get<0>(l), get<2, 0>(l)), get<1>(l), get<2, 1>(l)); + }; + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + __forceinline__ __device__ auto convert_type(Tensor const &tensor) + { + using From_type = typename Engine::value_type; + constexpr int numel = decltype(size(tensor))::value; + cutlass::NumericArrayConverter convert_op; + // HACK: this requires tensor to be "contiguous" + auto frag = convert_op(*reinterpret_cast *>(tensor.data())); + return make_tensor(make_rmem_ptr(&frag), tensor.layout()); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + // Blocks until all but N previous cp.async.commit_group operations have committed. + // This differs from cute::cp_async_wait in that when N = 0 we don't call cp.async.wait_all + // (which is equivalent to commit_group then wait_group 0). + // Instead we just call cp.async.wait_group 0, which is slightly faster. + // https://github.com/NVIDIA/cutlass/blob/master/include/cute/arch/copy_sm80.hpp#L113 + template + CUTE_HOST_DEVICE void cp_async_wait() + { +#if defined(CUTE_ARCH_CP_ASYNC_SM80_ENABLED) + asm volatile("cp.async.wait_group %0;\n" ::"n"(N)); +#endif + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + __forceinline__ __device__ void copy(TiledCopy tiled_copy, Tensor const &S, + Tensor &D, Tensor const &identity_MN, + Tensor const &predicate_K, const int max_MN = 0) + { + CUTE_STATIC_ASSERT_V(rank(S) == Int<3>{}); + CUTE_STATIC_ASSERT_V(rank(D) == Int<3>{}); + CUTE_STATIC_ASSERT_V(size<0>(S) == size<0>(D)); // MMA + CUTE_STATIC_ASSERT_V(size<1>(S) == size<1>(D)); // MMA_M + CUTE_STATIC_ASSERT_V(size<2>(S) == size<2>(D)); // MMA_K + // There's no case where !Clear_OOB_K && Clear_OOB_MN + static_assert(!(Clear_OOB_MN && !Clear_OOB_K)); +#pragma unroll + for (int m = 0; m < size<1>(S); ++m) + { + if (Is_even_MN || get<0>(identity_MN(0, m, 0)) < max_MN) + { +#pragma unroll + for (int k = 0; k < size<2>(S); ++k) + { + if (Is_even_K || predicate_K(k)) + { + cute::copy(tiled_copy, S(_, m, k), D(_, m, k)); + } + else if (Clear_OOB_K) + { + cute::clear(D(_, m, k)); + } + } + } + else if (Clear_OOB_MN) + { + cute::clear(D(_, m, _)); + } + } + } + + static __device__ __forceinline__ float atomicMaxFloat(float *addr, float value) + { + // source: https://stackoverflow.com/a/51549250 + return (value >= 0) + ? __int_as_float(atomicMax((int *)addr, __float_as_int(value))) + : __uint_as_float(atomicMin((unsigned int *)addr, __float_as_uint(value))); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + + template + struct Fp4ArrayQuant + { + using InputType = cutlass::Array; + using OutputType = cutlass::Array; + using ScaleFactorType = float; + using ErrorType = float; + + __device__ __forceinline__ + OutputType + convert(InputType const &x, + const float amax, + const ScaleFactorType sf, + const uint32_t rbits, + // Usage depends on Is_rtn + ErrorType *err /*nullable*/) + { + InputType x_scaled; + constexpr float E2M1_MAX_VALUE = 6.0f; + constexpr float E2M1_MAX_FOUR = 4.0f; + constexpr float E4M3_MAX_VALUE = 448.0f; + constexpr float E4M3_MAX_FOUROVERSIX = 256.0f; + + constexpr float e2m1_limit = kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::STATIC_4 ? E2M1_MAX_FOUR : E2M1_MAX_VALUE; + constexpr float e4m3_limit = (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::STATIC_6 || kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::STATIC_4) + ? E4M3_MAX_VALUE + : E4M3_MAX_FOUROVERSIX; + const float encode_scale = e4m3_limit * e2m1_limit / amax; + const float decode_scale = 1.0 / encode_scale; + const float block_scale_inv = fminf(1.0f / (decode_scale * sf), std::numeric_limits::max()); + +#pragma unroll + for (int i = 0; i < 8; ++i) + { + x_scaled[i] = x[i] * block_scale_inv; + } + + unsigned out; + + if constexpr (Is_rtn) + { + if constexpr (Is_4o6) + { + unsigned out_dequant_1; + unsigned out_dequant_2; + unsigned out_dequant_3; + unsigned out_dequant_4; + + asm volatile( + "{\n" + ".reg .b8 byte0, byte1, byte2, byte3;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte0, %6, %5;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte1, %8, %7;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte2, %10, %9;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte3, %12, %11;\n" + "mov.b32 %0, {byte0, byte1, byte2, byte3};\n" + "cvt.rn.f16x2.e2m1x2 %1, byte0;\n" + "cvt.rn.f16x2.e2m1x2 %2, byte1;\n" + "cvt.rn.f16x2.e2m1x2 %3, byte2;\n" + "cvt.rn.f16x2.e2m1x2 %4, byte3;\n" + "}" + : "=r"(out), "=r"(out_dequant_1), "=r"(out_dequant_2), "=r"(out_dequant_3), "=r"(out_dequant_4) : "f"(x_scaled[0]), "f"(x_scaled[1]), "f"(x_scaled[2]), "f"(x_scaled[3]), + "f"(x_scaled[4]), "f"(x_scaled[5]), "f"(x_scaled[6]), "f"(x_scaled[7])); + + unsigned short out_dequant_1_hi = (out_dequant_1 >> 16) & 0xFFFF; + unsigned short out_dequant_1_lo = out_dequant_1 & 0xFFFF; + unsigned short out_dequant_2_hi = (out_dequant_2 >> 16) & 0xFFFF; + unsigned short out_dequant_2_lo = out_dequant_2 & 0xFFFF; + unsigned short out_dequant_3_hi = (out_dequant_3 >> 16) & 0xFFFF; + unsigned short out_dequant_3_lo = out_dequant_3 & 0xFFFF; + unsigned short out_dequant_4_hi = (out_dequant_4 >> 16) & 0xFFFF; + unsigned short out_dequant_4_lo = out_dequant_4 & 0xFFFF; + + float val0 = __half2float(__ushort_as_half(out_dequant_1_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val1 = __half2float(__ushort_as_half(out_dequant_1_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val2 = __half2float(__ushort_as_half(out_dequant_2_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val3 = __half2float(__ushort_as_half(out_dequant_2_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val4 = __half2float(__ushort_as_half(out_dequant_3_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val5 = __half2float(__ushort_as_half(out_dequant_3_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val6 = __half2float(__ushort_as_half(out_dequant_4_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val7 = __half2float(__ushort_as_half(out_dequant_4_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + + if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::MAE_4o6) + { + *err += std::abs(val0 - x[0]); + *err += std::abs(val1 - x[1]); + *err += std::abs(val2 - x[2]); + *err += std::abs(val3 - x[3]); + *err += std::abs(val4 - x[4]); + *err += std::abs(val5 - x[5]); + *err += std::abs(val6 - x[6]); + *err += std::abs(val7 - x[7]); + } + else if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::MSE_4o6) + { + *err += (val0 - x[0]) * (val0 - x[0]); + *err += (val1 - x[1]) * (val1 - x[1]); + *err += (val2 - x[2]) * (val2 - x[2]); + *err += (val3 - x[3]) * (val3 - x[3]); + *err += (val4 - x[4]) * (val4 - x[4]); + *err += (val5 - x[5]) * (val5 - x[5]); + *err += (val6 - x[6]) * (val6 - x[6]); + *err += (val7 - x[7]) * (val7 - x[7]); + } + else if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::ABS_MAX_4o6) + { + float val0_err = std::abs(val0 - x[0]); + if (val0_err > *err) + *err = val0_err; + float val1_err = std::abs(val1 - x[1]); + if (val1_err > *err) + *err = val1_err; + float val2_err = std::abs(val2 - x[2]); + if (val2_err > *err) + *err = val2_err; + float val3_err = std::abs(val3 - x[3]); + if (val3_err > *err) + *err = val3_err; + float val4_err = std::abs(val4 - x[4]); + if (val4_err > *err) + *err = val4_err; + float val5_err = std::abs(val5 - x[5]); + if (val5_err > *err) + *err = val5_err; + float val6_err = std::abs(val6 - x[6]); + if (val6_err > *err) + *err = val6_err; + float val7_err = std::abs(val7 - x[7]); + if (val7_err > *err) + *err = val7_err; + } + else + { + printf("in Fp4ArrayQuant::convert, kAdaptiveBlockScalingRuleType = %d, not supported\n", kAdaptiveBlockScalingRuleType); + assert(false); + } + + return reinterpret_cast(out); + } + else + { + asm volatile( + "{\n" + ".reg .b8 byte0, byte1, byte2, byte3;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte0, %2, %1;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte1, %4, %3;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte2, %6, %5;\n" + "cvt.rn.satfinite.e2m1x2.f32 byte3, %8, %7;\n" + "mov.b32 %0, {byte0, byte1, byte2, byte3};\n" + "}" + : "=r"(out) : "f"(x_scaled[0]), "f"(x_scaled[1]), "f"(x_scaled[2]), "f"(x_scaled[3]), + "f"(x_scaled[4]), "f"(x_scaled[5]), "f"(x_scaled[6]), "f"(x_scaled[7])); + return reinterpret_cast(out); + } + } + else + { + if constexpr (Is_4o6) + { + unsigned out_dequant_1; + unsigned out_dequant_2; + unsigned out_dequant_3; + unsigned out_dequant_4; + +#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ == 1000 || __CUDA_ARCH__ == 1030) + asm volatile( + "{\n" + ".reg .b16 tmp0, tmp1;\n" + ".reg .b8 byte0, byte1;\n" + "cvt.rs.satfinite.e2m1x4.f32 tmp0, {%8, %7, %6, %5}, %13;\n" + "mov.b16 {byte1, byte0}, tmp0;\n" + "cvt.rn.f16x2.e2m1x2 %1, byte0;\n" + "cvt.rn.f16x2.e2m1x2 %2, byte1;\n" + "cvt.rs.satfinite.e2m1x4.f32 tmp1, {%12, %11, %10, %9}, %14;\n" + "mov.b16 {byte1, byte0}, tmp1;\n" + "cvt.rn.f16x2.e2m1x2 %3, byte0;\n" + "cvt.rn.f16x2.e2m1x2 %4, byte1;\n" + "mov.b32 %0, {tmp0, tmp1};\n" + "}" + : "=r"(out), "=r"(out_dequant_1), "=r"(out_dequant_2), "=r"(out_dequant_3), "=r"(out_dequant_4) : "f"(x_scaled[0]), "f"(x_scaled[1]), "f"(x_scaled[2]), "f"(x_scaled[3]), "f"(x_scaled[4]), "f"(x_scaled[5]), "f"(x_scaled[6]), "f"(x_scaled[7]), "r"(rbits), "r"(rbits)); +#endif + + unsigned short out_dequant_1_hi = (out_dequant_1 >> 16) & 0xFFFF; + unsigned short out_dequant_1_lo = out_dequant_1 & 0xFFFF; + unsigned short out_dequant_2_hi = (out_dequant_2 >> 16) & 0xFFFF; + unsigned short out_dequant_2_lo = out_dequant_2 & 0xFFFF; + unsigned short out_dequant_3_hi = (out_dequant_3 >> 16) & 0xFFFF; + unsigned short out_dequant_3_lo = out_dequant_3 & 0xFFFF; + unsigned short out_dequant_4_hi = (out_dequant_4 >> 16) & 0xFFFF; + unsigned short out_dequant_4_lo = out_dequant_4 & 0xFFFF; + + float val0 = __half2float(__ushort_as_half(out_dequant_1_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val1 = __half2float(__ushort_as_half(out_dequant_1_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val2 = __half2float(__ushort_as_half(out_dequant_2_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val3 = __half2float(__ushort_as_half(out_dequant_2_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val4 = __half2float(__ushort_as_half(out_dequant_3_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val5 = __half2float(__ushort_as_half(out_dequant_3_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val6 = __half2float(__ushort_as_half(out_dequant_4_lo)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + float val7 = __half2float(__ushort_as_half(out_dequant_4_hi)) * sf * amax / (E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX); + + if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::MAE_4o6) + { + *err += std::abs(val0 - x[0]); + *err += std::abs(val1 - x[1]); + *err += std::abs(val2 - x[2]); + *err += std::abs(val3 - x[3]); + *err += std::abs(val4 - x[4]); + *err += std::abs(val5 - x[5]); + *err += std::abs(val6 - x[6]); + *err += std::abs(val7 - x[7]); + } + else if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::MSE_4o6) + { + *err += (val0 - x[0]) * (val0 - x[0]); + *err += (val1 - x[1]) * (val1 - x[1]); + *err += (val2 - x[2]) * (val2 - x[2]); + *err += (val3 - x[3]) * (val3 - x[3]); + *err += (val4 - x[4]) * (val4 - x[4]); + *err += (val5 - x[5]) * (val5 - x[5]); + *err += (val6 - x[6]) * (val6 - x[6]); + *err += (val7 - x[7]) * (val7 - x[7]); + } + else if constexpr (kAdaptiveBlockScalingRuleType == AdaptiveBlockScalingRuleType::ABS_MAX_4o6) + { + float val0_err = std::abs(val0 - x[0]); + if (val0_err > *err) + *err = val0_err; + float val1_err = std::abs(val1 - x[1]); + if (val1_err > *err) + *err = val1_err; + float val2_err = std::abs(val2 - x[2]); + if (val2_err > *err) + *err = val2_err; + float val3_err = std::abs(val3 - x[3]); + if (val3_err > *err) + *err = val3_err; + float val4_err = std::abs(val4 - x[4]); + if (val4_err > *err) + *err = val4_err; + float val5_err = std::abs(val5 - x[5]); + if (val5_err > *err) + *err = val5_err; + float val6_err = std::abs(val6 - x[6]); + if (val6_err > *err) + *err = val6_err; + float val7_err = std::abs(val7 - x[7]); + if (val7_err > *err) + *err = val7_err; + } + else + { + printf("in Fp4ArrayQuant::convert, kAdaptiveBlockScalingRuleType = %d, not supported\n", kAdaptiveBlockScalingRuleType); + assert(false); + } + + return reinterpret_cast(out); + } + else + { +#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ == 1000 || __CUDA_ARCH__ == 1030) + asm volatile( + "{\n" + ".reg .b16 tmp0, tmp1;\n" + "cvt.rs.satfinite.e2m1x4.f32 tmp0, {%4, %3, %2, %1}, %9;\n" + "cvt.rs.satfinite.e2m1x4.f32 tmp1, {%8, %7, %6, %5}, %10;\n" + "mov.b32 %0, {tmp0, tmp1};\n" + "}" + : "=r"(out) : "f"(x_scaled[0]), "f"(x_scaled[1]), "f"(x_scaled[2]), "f"(x_scaled[3]), + "f"(x_scaled[4]), "f"(x_scaled[5]), "f"(x_scaled[6]), "f"(x_scaled[7]), + "r"(rbits), "r"(rbits)); +#endif + return reinterpret_cast(out); + } + } + } + }; + + template + __forceinline__ __device__ float fp4_conversion(Tensor const &tensor, const float amax, float *sf_, OutputType *res, const uint32_t rbits) + { + constexpr int numel = decltype(size(tensor))::value; + static_assert((numel == 16 && Is_nvfp4) || numel == 32); + static_assert(std::is_same_v>); + + constexpr int loop_size = 8; + constexpr int num_loops = numel / loop_size; + + using InputType = cutlass::Array; + + Fp4ArrayQuant fp4_array_quant; + + if constexpr (Is_4o6) + { + float err[2] = {0.0f, 0.0f}; + OutputType res_4[num_loops]; + OutputType res_6[num_loops]; + float final_err[2] = {0.0f, 0.0f}; + +#pragma unroll + for (int i = 0; i < num_loops; ++i) + { + InputType x; +#pragma unroll + for (int j = 0; j < loop_size; ++j) + { + x[j] = static_cast(tensor(i * loop_size + j)); + } + res_4[i] = fp4_array_quant.convert(x, amax, sf_[0], rbits, &err[0]); + res_6[i] = fp4_array_quant.convert(x, amax, sf_[1], rbits, &err[1]); + } + + if (Is_2d){ + // For 2D tensors we want to pick the same format for the entire tensor, to keep it simple for downstream processing. + // So we pick the format with smaller total error across the entire tensor. + + // If the method is MAE or MSE, we need to sum the error across the entire tensor. If the method is ABS_MAX, we need to take the max error across the entire tensor. + using RedOp = std::conditional_t, SumOp>; + RedOp op; + final_err[0] = Allreduce::run(err[0], op); + final_err[1] = Allreduce::run(err[1], op); + } else { + final_err[0] = err[0]; + final_err[1] = err[1]; + } + + // pick_first = true means choose 4, false means choose 6 + bool const pick_first = final_err[0] < final_err[1]; +#pragma unroll + for (int i = 0; i < num_loops; ++i) + { + res[i] = pick_first ? res_4[i] : res_6[i]; + } + return sf_[!pick_first]; + } + else + { +#pragma unroll + for (int i = 0; i < num_loops; ++i) + { + InputType x; +#pragma unroll + for (int j = 0; j < loop_size; ++j) + { + x[j] = static_cast(tensor(i * loop_size + j)); + } + res[i] = fp4_array_quant.convert(x, amax, sf_[0], rbits, nullptr); + } + + return sf_[0]; + } + } + + __device__ __forceinline__ float clamp(float value, float min_value, float max_value) + { + return max(min(value, max_value), min_value); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + +} // namespace fouroversix diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant.cu new file mode 100644 index 0000000..2eb1682 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant.cu @@ -0,0 +1,245 @@ +#include +#include + +#include +#include +#include +#include +#include // For at::Generator and at::PhiloxCudaState + +#include + +#include "hardware_info.h" +#include "fp4_quant.h" +#include "static_switch.h" + +#define CHECK_DEVICE(x) TORCH_CHECK(x.is_cuda(), #x " must be on CUDA") +#define CHECK_SHAPE(x, ...) TORCH_CHECK(x.sizes() == torch::IntArrayRef({__VA_ARGS__}), #x " must have shape (" #__VA_ARGS__ ")") +#define CHECK_CONTIGUOUS(x) TORCH_CHECK(x.is_contiguous(), #x " must be contiguous") + +namespace fouroversix +{ + void set_params_fp4_quant( + FP4_quant_params ¶ms, + /*-------------- tensors ---------------*/ + const at::Tensor x, + at::Tensor x_rht, + at::Tensor x_e2m1, + at::Tensor x_sf, + at::Tensor x_sft, + at::Tensor amax, + const int M, + const int N, + const int M_rounded, + const int N_rounded, + const int M_sf, + const int N_sf, + const bool is_nvfp4, + const bool is_rtn, + const bool is_rht, + const bool is_2d, + // const bool is_4o6, + const bool is_transpose, + const int selection_rule, + const int rbits) + { + + // Reset the parameters + params = {}; + + params.is_bf16 = x.dtype() == torch::kBFloat16; + + /**************** Pointers & strides ****************/ + params.x_ptr = x.data_ptr(); + params.x_rht_ptr = x_rht.data_ptr(); + params.x_e2m1_ptr = x_e2m1.data_ptr(); + params.x_sf_ptr = x_sf.data_ptr(); + params.x_sft_ptr = x_sft.data_ptr(); + params.amax_ptr = amax.data_ptr(); + + // Element-based strides (not bytes) + params.x_row_stride = x.stride(0); + params.x_col_stride = x.stride(1); + params.x_rht_row_stride = x_rht.stride(0); + params.x_rht_col_stride = x_rht.stride(1); + params.x_e2m1_row_stride = x_e2m1.stride(0); + params.x_e2m1_col_stride = x_e2m1.stride(1); + params.x_sf_row_stride = x_sf.stride(0); + params.x_sf_col_stride = x_sf.stride(1); + params.x_sft_row_stride = x_sft.stride(0); + params.x_sft_col_stride = x_sft.stride(1); + + // Set the dimensions + params.M = M; + params.N = N; + params.M_rounded = M_rounded; + params.N_rounded = N_rounded; + params.M_sf = M_sf; + params.N_sf = N_sf; + // Set FP4-specific parameters + params.is_nvfp4 = is_nvfp4; + params.is_rtn = is_rtn; + params.is_rht = is_rht; + params.is_2d = is_2d; + // params.is_4o6 = is_4o6; + params.is_transpose = is_transpose; + params.selection_rule = selection_rule; + params.rbits = rbits; + } + + void run_fp4_quant(FP4_quant_params ¶ms, cudaStream_t stream) + { + FP16_SWITCH(!params.is_bf16, [&] + { BOOL_SWITCH(params.is_nvfp4, Is_nvfp4, [&] + { BOOL_SWITCH(params.is_rht, Is_rht, [&] + { BOOL_SWITCH(params.is_transpose, Is_transpose, [&] + { run_fp4_quant_(params, stream); }); }); }); }); + } + + std::tuple quantize_to_fp4( + const at::Tensor &x, + const bool is_nvfp4, + const bool is_rtn, + const bool is_rht, + // const bool is_4o6, + const bool is_2d, + const bool is_transpose, + const int64_t selection_rule, + const int64_t rbits) + { + + /******* + * selection_rule: + * 0: static_6 + * 1: static_4 + * 2: 4o6_l1_norm + * 3: 4o6_mse + * 4: 4o6_abs_max + */ + TORCH_CHECK(selection_rule >= 0 && selection_rule <= 4, "Invalid selection_rule: " + std::to_string(selection_rule)); + // const int is_4o6 = selection_rule == 2 || selection_rule == 3; + + /********************** + * 1. Sanity checks * + *********************/ + at::cuda::CUDAGuard device_guard{x.device()}; + + // Hardware capability + { + auto [cc_major, _] = get_compute_capability(get_current_device()); + TORCH_CHECK(cc_major >= 10, "FP4Quant only supports Blackwell GPUs or newer."); + } + + // Dtype / device checks + auto dtype = x.dtype(); + TORCH_CHECK(dtype == torch::kFloat16 || dtype == torch::kBFloat16, + "FP4Quant only supports fp16 and bf16 data types"); + // TORCH_CHECK(km.dtype() == dtype, "q and km must have the same dtype"); + CHECK_DEVICE(x); + // Layout / contiguity checks + TORCH_CHECK(x.stride(-1) == 1, "x must be contiguous on the last dim"); + + /********************** + * 2. Dimension logic * + *********************/ + + const int M = is_transpose ? x.size(1) : x.size(0); + const int N = is_transpose ? x.size(0) : x.size(1); + + const int n_round = is_nvfp4 ? 64 : 128; + TORCH_CHECK(N % n_round == 0, "N must be multiple of " + std::to_string(n_round)); + + /********************** + * 3. Derived sizes * + *********************/ + auto round_up = [](int x, int m) + { return (x + m - 1) / m * m; }; + + const int M_rounded = round_up(M, 128); + const int N_rounded = round_up(N, n_round); + + // const int max_seqlen_km = ceil_div(max_seqlen_k, moba_chunk_size); + // const int head_size_rounded = round_up(head_size, head_size <= 128 ? 32 : 64); + // const int seqlen_q_rounded = round_up(max_seqlen_q, 128); + // const int seqlen_km_rounded = round_up(max_seqlen_km, 128); + // const int moba_topk_rounded = round_up(moba_topk, 16); + + /********************** + * 4. Intermediate buffers * + *********************/ + at::Tensor x_rht; + if (is_rht) + { + x_rht = torch::zeros({M_rounded, N_rounded}, x.options()); + } + else + { + x_rht = torch::zeros({0, 0}, x.options()); + } + + /********************** + * 5. Output buffers * + *********************/ + at::Tensor x_e2m1 = torch::zeros({M_rounded, int(N_rounded / 2)}, x.options().dtype(torch::kUInt8)); + at::Tensor x_sf, x_sft; + int M_sf, N_sf; + if (is_nvfp4) + { + M_sf = int(M_rounded / 128 * 32) * int(N_rounded / 64); + N_sf = 16; + // N_sf = int(N_rounded / 16 * 4); + x_sf = torch::zeros({M_sf, N_sf}, x.options().dtype(torch::kFloat8_e4m3fn)); + x_sft = torch::zeros({M_rounded, int(N_rounded / 16)}, x.options().dtype(torch::kFloat32)); + } + else + { + M_sf = int(M_rounded / 128 * 32) * int(N_rounded / 128); + N_sf = 16; + x_sf = torch::zeros({M_sf, N_sf}, x.options().dtype(torch::kUInt8)); + x_sft = torch::zeros({M_rounded, int(N_rounded / 32)}, x.options().dtype(torch::kFloat32)); + } + at::Tensor amax = torch::zeros({1}, x.options().dtype(torch::kFloat32)); + + /********************** + * 5. Param struct * + *********************/ + FP4_quant_params params; + // const at::Tensor x, + // at::Tensor x_rht, + // at::Tensor x_e2m1, + // at::Tensor x_sf, + // at::Tensor amax, + // const int M, + // const int N, + // const bool is_nvfp4, + // const bool is_rtn, + // const bool is_4o6, + // const bool is_2d, + // const bool is_transpose + set_params_fp4_quant( + params, + /*-------------- tensors ---------------*/ + x, x_rht, x_e2m1, x_sf, x_sft, amax, M, N, M_rounded, N_rounded, M_sf, N_sf, + is_nvfp4, is_rtn, is_rht, is_2d, is_transpose, selection_rule, rbits); + + /********************** + * 6. Kernel launch * + *********************/ + + if (M > 0) + { + run_fp4_quant(params, at::cuda::getCurrentCUDAStream().stream()); + } + else + { + amax.fill_(0); + } + + return std::make_tuple(x_e2m1, x_sf.flatten(), amax); + } + + TORCH_LIBRARY_IMPL(fouroversix, CUDA, m) + { + m.impl("quantize_to_fp4", &quantize_to_fp4); + } +} \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_sm100.cu new file mode 100644 index 0000000..fc33a83 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_trans_sm100.cu new file mode 100644 index 0000000..8fdc539 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_rht_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_sm100.cu new file mode 100644 index 0000000..38022fb --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_trans_sm100.cu new file mode 100644 index 0000000..6886f81 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_mxfp4_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_sm100.cu new file mode 100644 index 0000000..884bae7 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_trans_sm100.cu new file mode 100644 index 0000000..4345139 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_rht_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_sm100.cu new file mode 100644 index 0000000..ed5bc5b --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_trans_sm100.cu new file mode 100644 index 0000000..3370703 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_bf16_nvfp4_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_sm100.cu new file mode 100644 index 0000000..45a12dd --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_trans_sm100.cu new file mode 100644 index 0000000..463bbea --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_rht_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_sm100.cu new file mode 100644 index 0000000..d972e32 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_trans_sm100.cu new file mode 100644 index 0000000..9919a90 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_mxfp4_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_mxfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_sm100.cu new file mode 100644 index 0000000..2375e20 --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_trans_sm100.cu new file mode 100644 index 0000000..9d85f1e --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_rht_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant_rht(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_sm100.cu new file mode 100644 index 0000000..b6b2cbf --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_trans_sm100.cu b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_trans_sm100.cu new file mode 100644 index 0000000..4c2d55c --- /dev/null +++ b/fouroversix/src/fouroversix/csrc/quantize/fp4_quant_fp16_nvfp4_trans_sm100.cu @@ -0,0 +1,11 @@ +// Splitting the different transpose modes to different files to speed up compilation. +// This file is auto-generated. See "generate_kernels.py" +#include "fp4_quant_launch_template.h" +namespace fouroversix { + +template<> +void run_fp4_quant_(FP4_quant_params ¶ms, cudaStream_t stream) { + run_nvfp4_quant(params, stream); +} + +} // namespace fouroversix \ No newline at end of file diff --git a/fouroversix/src/fouroversix/matmul/__init__.py b/fouroversix/src/fouroversix/matmul/__init__.py new file mode 100644 index 0000000..7d5807c --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/__init__.py @@ -0,0 +1,3 @@ +from .frontend import fp4_matmul + +__all__ = ["fp4_matmul"] diff --git a/fouroversix/src/fouroversix/matmul/backend.py b/fouroversix/src/fouroversix/matmul/backend.py new file mode 100644 index 0000000..7c932d3 --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/backend.py @@ -0,0 +1,60 @@ +from abc import ABC, abstractmethod + +import torch +from fouroversix.quantize import QuantizedTensor +from fouroversix.utils import DataType + + +class MatmulBackendBase(ABC): + """Base class for all matrix multiplication backends.""" + + @classmethod + @abstractmethod + def is_available(cls) -> bool: + """Return True if the backend is available on the current machine.""" + msg = "Subclasses must implement this method" + raise NotImplementedError(msg) + + @classmethod + @abstractmethod + def is_supported( + cls, + input: QuantizedTensor, + other: QuantizedTensor, + *, + out_dtype: DataType, + ) -> bool: + """Return True if the backend supports the given inputs and output data type.""" + + if not cls.is_available(): + return False + + if input.dtype != other.dtype: + msg = "Both inputs must have the same dtype" + raise ValueError(msg) + + if input.original_shape[1] != other.original_shape[1]: + msg = ( + "The first input must be in row-major layout, the second input must be" + "in column-major layout, and both inputs must have the same inner " + "dimension" + ) + raise ValueError(msg) + + return True + + @classmethod + @abstractmethod + def fp4_matmul( + cls, + input: QuantizedTensor, + other: QuantizedTensor, + *, + out_dtype: DataType, + ) -> torch.Tensor: + """ + Perform a matrix multiplication (`a @ b.T`) between two quantized tensors using + the backend. + """ + msg = "Subclasses must implement this method" + raise NotImplementedError(msg) diff --git a/fouroversix/src/fouroversix/matmul/cutlass/__init__.py b/fouroversix/src/fouroversix/matmul/cutlass/__init__.py new file mode 100644 index 0000000..91f9a43 --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/cutlass/__init__.py @@ -0,0 +1,3 @@ +from .backend import CUTLASSMatmulBackend + +__all__ = ["CUTLASSMatmulBackend"] diff --git a/fouroversix/src/fouroversix/matmul/cutlass/backend.py b/fouroversix/src/fouroversix/matmul/cutlass/backend.py new file mode 100644 index 0000000..7c3d3cc --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/cutlass/backend.py @@ -0,0 +1,147 @@ +import functools + +import torch +from fouroversix.matmul.backend import MatmulBackendBase +from fouroversix.quantize import QuantizedTensor +from fouroversix.utils import BLACKWELL_SM_IDS, SM_100, SM_120, DataType + + +class CUTLASSMatmulBackend(MatmulBackendBase): + """ + The CUTLASS matrix multiplication backend. Uses CUTLASS kernels to perform fast + FP4 matrix multiplication. Requires a Blackwell GPU. + """ + + @classmethod + @functools.lru_cache + def is_available(cls) -> bool: + """Return True if the CUTLASS backend is available on the current machine.""" + + if ( + not torch.cuda.is_available() + or torch.cuda.get_device_capability()[0] not in BLACKWELL_SM_IDS + ): + return False + + try: + import fouroversix._C # noqa: F401 + except ModuleNotFoundError: + return False + + return True + + @classmethod + def is_supported( + cls, + input: QuantizedTensor, + other: QuantizedTensor, + *, + out_dtype: DataType, + ) -> bool: + """ + Return True if the CUTLASS backend supports the given inputs and output data + type. + """ + + if not super().is_supported(input, other, out_dtype=out_dtype): + return False + + return input.device.type == "cuda" + + @classmethod + def fp4_matmul( + cls, + input: QuantizedTensor, + other: QuantizedTensor, + *, + out_dtype: DataType, + ) -> torch.Tensor: + """ + Perform a matrix multiplication (`a @ b.T`) between two quantized tensors using + the CUTLASS backend. + """ + + from .ops import ( + gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt, + gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120, + gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt, + gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120, + gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt, + gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120, + ) + + out_shape = (input.original_shape[0], other.original_shape[0]) + + if input.dtype == DataType.mxfp4: + alpha = torch.ones( + 1, + device=input.values.device, + dtype=torch.float32, + ) + elif input.dtype == DataType.nvfp4: + alpha = ( + (input.amax * other.amax) + / ( + input.scale_rule.max_allowed_e2m1_value() + * input.scale_rule.max_allowed_e4m3_value() + * other.scale_rule.max_allowed_e2m1_value() + * other.scale_rule.max_allowed_e4m3_value() + ) + ).to(torch.float32) + + gemm_fns = { + ( + SM_100, + DataType.mxfp4, + DataType.bfloat16, + ): gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt, + ( + SM_120, + DataType.mxfp4, + DataType.bfloat16, + ): gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120, + ( + SM_100, + DataType.nvfp4, + DataType.bfloat16, + ): gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt, + ( + SM_120, + DataType.nvfp4, + DataType.bfloat16, + ): gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120, + ( + SM_100, + DataType.nvfp4, + DataType.float16, + ): gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt, + ( + SM_120, + DataType.nvfp4, + DataType.float16, + ): gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120, + } + + gemm_fn = gemm_fns.get( + (torch.cuda.get_device_capability()[0], input.dtype, out_dtype), + ) + + if gemm_fn is None: + msg = ( + "No gemm function found for the given device capability and " + f"out_dtype: {torch.cuda.get_device_capability()[0]}, {out_dtype}" + ) + raise ValueError(msg) + + out = gemm_fn( + input.values, + other.values, + input.scale_factors, + other.scale_factors, + alpha, + ) + + if out_shape is not None and out.shape != out_shape: + out = out[: out_shape[0], : out_shape[1]] + + return out diff --git a/fouroversix/src/fouroversix/matmul/cutlass/ops.py b/fouroversix/src/fouroversix/matmul/cutlass/ops.py new file mode 100644 index 0000000..c2ea6ba --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/cutlass/ops.py @@ -0,0 +1,183 @@ +import torch + +import fouroversix._C # noqa: F401 + + +def gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake("fouroversix::gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt") +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.bfloat16, device=a.device) + + +def gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake( + "fouroversix::gemm_mxfp4mxfp4_accum_fp32_out_bf16_tnt_sm120", +) +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.bfloat16, device=a.device) + + +def gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake("fouroversix::gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt") +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.bfloat16, device=a.device) + + +def gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake( + "fouroversix::gemm_nvfp4nvfp4_accum_fp32_out_bf16_tnt_sm120", +) +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.bfloat16, device=a.device) + + +def gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake("fouroversix::gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt") +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.float16, device=a.device) + + +def gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, + b_sf: torch.Tensor, + alpha: torch.Tensor, +) -> torch.Tensor: + return torch.ops.fouroversix.gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120.default( + a, + b, + a_sf, + b_sf, + alpha, + ) + + +@torch.library.register_fake( + "fouroversix::gemm_nvfp4nvfp4_accum_fp32_out_fp16_tnt_sm120", +) +def _( + a: torch.Tensor, + b: torch.Tensor, + a_sf: torch.Tensor, # noqa: ARG001 + b_sf: torch.Tensor, # noqa: ARG001 + alpha: torch.Tensor, # noqa: ARG001 +) -> torch.Tensor: + m = a.shape[0] + n = b.shape[0] + return torch.empty(m, n, dtype=torch.float16, device=a.device) diff --git a/fouroversix/src/fouroversix/matmul/frontend.py b/fouroversix/src/fouroversix/matmul/frontend.py new file mode 100644 index 0000000..bf96062 --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/frontend.py @@ -0,0 +1,115 @@ +import torch +from fouroversix.quantize import QuantizationConfig, QuantizedTensor, quantize_to_fp4 +from fouroversix.utils import DataType, MatmulBackend + +from .cutlass import CUTLASSMatmulBackend +from .pytorch import PyTorchMatmulBackend + +AVAILABLE_BACKENDS = { + MatmulBackend.cutlass: CUTLASSMatmulBackend, + MatmulBackend.pytorch: PyTorchMatmulBackend, +} + + +def fp4_matmul( + input: torch.Tensor | QuantizedTensor, + other: torch.Tensor | QuantizedTensor, + *, + backend: MatmulBackend | None = None, + input_config: QuantizationConfig | None = None, + other_config: QuantizationConfig | None = None, + out_dtype: DataType = DataType.bfloat16, +) -> torch.Tensor: + """ + Perform a matrix multiplication (`a @ b.T`) between two quantized tensors. + + ## Sample Code + + Each tensor may be provided in either high or low precision. If provided in high + precision, tensors will be quantized to FP4 prior to the matrix multiplication, and + quantization may be configured with the `input_quantize_kwargs` and + `other_quantize_kwargs` parameters. For example, the following two code samples are + equivalent: + + ### With High-Precision Inputs + + ```python + a = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + b = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + out = fp4_matmul(a, b) + ``` + + ### With Low-Precision Inputs + + ```python + a = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + b = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + + a_quantized = quantize_to_fp4(a) + b_quantized = quantize_to_fp4(b) + + out = fp4_matmul(a_quantized, b_quantized) + ``` + + ## Backends + + We provide two different implementations of FP4 matrix multiplication: + + - **CUTLASS**: Uses CUTLASS kernels to perform fast FP4 matrix multiplication. + Requires a Blackwell GPU. + - **PyTorch**: A slow implementation which dequantizes FP4 tensors and then + performs a high-precision matrix multiplication. + + ## Parameters + + Args: + input (torch.Tensor | QuantizedTensor): The first tensor to be multiplied. + other (torch.Tensor | QuantizedTensor): The second tensor to be multiplied. + backend (MatmulBackend): The backend to use for the matrix multiplication, + either `MatmulBackend.cutlass` or `MatmulBackend.pytorch`. If no backend is + provided, CUTLASS will be used if the machine has a Blackwell GPU, and + PyTorch will be used otherwise. + input_config (QuantizationConfig | None): If `input` is provided in high + precision, this configuration will be passed to the `quantize_to_fp4` call + done prior to the matrix multiplication. + other_config (QuantizationConfig | None): If `other` is provided in high + precision, this configuration will be passed to the `quantize_to_fp4` call + done prior to the matrix multiplication. + out_dtype (DataType): The data type of the output tensor. Defaults to + `DataType.bfloat16`. + + Returns: + The output tensor. + + """ + + if input_config is None: + input_config = QuantizationConfig() + + if isinstance(input, torch.Tensor): + input = quantize_to_fp4(input, input_config) + + if other_config is None: + other_config = QuantizationConfig() + + if isinstance(other, torch.Tensor): + other = quantize_to_fp4(other, other_config) + + if backend is None: + for backend_candidate in [MatmulBackend.cutlass, MatmulBackend.pytorch]: + if AVAILABLE_BACKENDS[backend_candidate] is not None and AVAILABLE_BACKENDS[ + backend_candidate + ].is_supported(input, other, out_dtype=out_dtype): + backend = backend_candidate + break + else: + msg = "No backend found that supports the given parameters" + raise ValueError(msg) + + elif not AVAILABLE_BACKENDS[backend].is_supported( + input, other, out_dtype=out_dtype, + ): + msg = f"Backend {backend} does not support the given parameters" + raise ValueError(msg) + + return AVAILABLE_BACKENDS[backend].fp4_matmul(input, other, out_dtype=out_dtype) diff --git a/fouroversix/src/fouroversix/matmul/pytorch.py b/fouroversix/src/fouroversix/matmul/pytorch.py new file mode 100644 index 0000000..64279c3 --- /dev/null +++ b/fouroversix/src/fouroversix/matmul/pytorch.py @@ -0,0 +1,41 @@ + +import torch +from fouroversix.quantize import QuantizedTensor +from fouroversix.utils import DataType + +from .backend import MatmulBackendBase + + +class PyTorchMatmulBackend(MatmulBackendBase): + """ + The PyTorch matrix multiplication backend. Dequantizes both inputs to FP32 and + performs an FP32 matrix multiplication in order to simulate an NVFP4 matrix + multiplication which accumulates in FP32. Slow, but can be run on any GPU. + """ + + @classmethod + def is_available(cls) -> bool: + """Return True if the PyTorch backend is available on the current machine.""" + return True + + @classmethod + def fp4_matmul( + cls, + input: QuantizedTensor, + other: QuantizedTensor, + *, + out_dtype: DataType, + ) -> torch.Tensor: + """Perform a matrix multiplication (`a @ b.T`) between two quantized tensors.""" + + out_shape = (input.original_shape[0], other.original_shape[0]) + + out = torch.matmul( + input.dequantize(dtype=torch.float32), + other.dequantize(dtype=torch.float32).T, + ).to(out_dtype.torch_dtype()) + + if out.shape != out_shape: + out = out[: out_shape[0], : out_shape[1]] + + return out diff --git a/fouroversix/src/fouroversix/model/__init__.py b/fouroversix/src/fouroversix/model/__init__.py new file mode 100644 index 0000000..7062799 --- /dev/null +++ b/fouroversix/src/fouroversix/model/__init__.py @@ -0,0 +1,11 @@ +from .config import ModelQuantizationConfig, ModuleQuantizationConfig +from .modules import FourOverSixLinear +from .quantize import QuantizedModule, quantize_model + +__all__ = [ + "FourOverSixLinear", + "ModelQuantizationConfig", + "ModuleQuantizationConfig", + "QuantizedModule", + "quantize_model", +] diff --git a/fouroversix/src/fouroversix/model/config.py b/fouroversix/src/fouroversix/model/config.py new file mode 100644 index 0000000..3c8b5fb --- /dev/null +++ b/fouroversix/src/fouroversix/model/config.py @@ -0,0 +1,194 @@ +import hashlib +import json +from dataclasses import dataclass, field +from typing import Any + +from fouroversix.quantize import QuantizationConfig +from fouroversix.utils import ( + DataType, + MatmulBackend, + QuantizeBackend, + RoundStyle, + ScaleRule, +) + + +@dataclass +class ModuleQuantizationConfig: + """ + Configuration for quantizing modules with Four Over Six. + + Args: + activation_scale_rule (ScaleRule | None): The scaling rule to use for activation + tensors. If not provided, `scale_rule` will be used. + dtype (DataType): The quantization data type to use for the module. Defaults to + `DataType.nvfp4`. + gradient_round_style (RoundStyle | None): The rounding style to use for gradient + tensors. Defaults to `RoundStyle.stochastic`. + gradient_scale_rule (ScaleRule | None): The scaling rule to use for gradient + tensors. If not provided, `scale_rule` will be used. + keep_master_weights (bool): Whether to keep the master weights. Defaults to + `False`. + matmul_backend (MatmulBackend | None): The backend to use for matrix + multiplications. If not provided, a backend will be selected automatically + based on the available GPU and the specified options. + output_dtype (DataType): The data type to use for the module's output. Defaults + to `DataType.bfloat16`. + quantize_backend (QuantizeBackend | None): The backend to use for quantization. + If not provided, a backend will be selected automatically based on the + available GPU and the specified options. + scale_rule (ScaleRule): The fallback scaling rule which will be used if any of + the other scaling rules are not specified. + weight_scale_2d (bool): Whether to use 2D block scaling for weights. Should be + set to `True` if the module is used for training. + weight_scale_rule (ScaleRule | None): The scaling rule to use for weights. If + not provided, `scale_rule` will be used. + + """ + + activation_scale_rule: ScaleRule | None = None + dtype: DataType = DataType.nvfp4 + gradient_round_style: RoundStyle = RoundStyle.stochastic + gradient_scale_rule: ScaleRule | None = None + keep_master_weights: bool = False + matmul_backend: MatmulBackend | None = None + output_dtype: DataType = DataType.bfloat16 + quantize_backend: QuantizeBackend | None = None + scale_rule: ScaleRule = ScaleRule.mse + weight_scale_2d: bool = False + weight_scale_rule: ScaleRule | None = None + activation_chunk_size: int | None = None + + def __post_init__(self) -> None: + """Convert string values to enums.""" + + if isinstance(self.activation_scale_rule, str): + self.activation_scale_rule = ScaleRule(self.activation_scale_rule) + + if isinstance(self.dtype, str): + self.dtype = DataType(self.dtype) + + if isinstance(self.gradient_round_style, str): + self.gradient_round_style = RoundStyle(self.gradient_round_style) + + if isinstance(self.gradient_scale_rule, str): + self.gradient_scale_rule = ScaleRule(self.gradient_scale_rule) + + if isinstance(self.matmul_backend, str): + self.matmul_backend = MatmulBackend(self.matmul_backend) + + if isinstance(self.output_dtype, str): + self.output_dtype = DataType(self.output_dtype) + + if isinstance(self.quantize_backend, str): + self.quantize_backend = QuantizeBackend(self.quantize_backend) + + if isinstance(self.scale_rule, str): + self.scale_rule = ScaleRule(self.scale_rule) + + if isinstance(self.weight_scale_rule, str): + self.weight_scale_rule = ScaleRule(self.weight_scale_rule) + + self.activation_scale_rule = self.activation_scale_rule or self.scale_rule + self.gradient_scale_rule = self.gradient_scale_rule or self.scale_rule + self.weight_scale_rule = self.weight_scale_rule or self.scale_rule + + def get_activation_config(self, **kwargs: dict[str, Any]) -> QuantizationConfig: + """Return the quantization configuration for the activation tensors.""" + return QuantizationConfig( + backend=self.quantize_backend, + dtype=self.dtype, + scale_rule=self.activation_scale_rule, + **kwargs, + ) + + def get_gradient_config(self, **kwargs: dict[str, Any]) -> QuantizationConfig: + """Return the quantization configuration for the gradient tensors.""" + return QuantizationConfig( + backend=self.quantize_backend, + dtype=self.dtype, + round_style=self.gradient_round_style, + scale_rule=self.gradient_scale_rule, + **kwargs, + ) + + def get_weight_config(self, **kwargs: dict[str, Any]) -> QuantizationConfig: + """Return the quantization configuration for the weight tensors.""" + return QuantizationConfig( + backend=self.quantize_backend, + block_scale_2d=self.weight_scale_2d, + dtype=self.dtype, + scale_rule=self.weight_scale_rule, + **kwargs, + ) + + +@dataclass +class ModelQuantizationConfig(ModuleQuantizationConfig): + """ + Configuration for quantizing a model with Four Over Six. + + Args: + activation_scale_rule (ScaleRule | None): The scaling rule to use for activation + tensors. If not provided, `scale_rule` will be used. + dtype (DataType): The quantization data type to use for the module. Defaults to + `DataType.nvfp4`. + gradient_round_style (RoundStyle | None): The rounding style to use for gradient + tensors. Defaults to `RoundStyle.stochastic`. + gradient_scale_rule (ScaleRule | None): The scaling rule to use for gradient + tensors. If not provided, `scale_rule` will be used. + keep_master_weights (bool): Whether to keep the master weights. Defaults to + `False`. + matmul_backend (MatmulBackend | None): The backend to use for matrix + multiplications. If not provided, a backend will be selected automatically + based on the available GPU and the specified options. + output_dtype (DataType): The data type to use for the module's output. Defaults + to `DataType.bfloat16`. + quantize_backend (QuantizeBackend | None): The backend to use for quantization. + If not provided, a backend will be selected automatically based on the + available GPU and the specified options. + scale_rule (ScaleRule): The fallback scaling rule which will be used if any of + the other scaling rules are not specified. + weight_scale_2d (bool): Whether to use 2D block scaling for weights. Should be + set to `True` if the module is used for training. + weight_scale_rule (ScaleRule | None): The scaling rule to use for weights. If + not provided, `scale_rule` will be used. + + module_config_overrides (dict[str, ModuleQuantizationConfig]): A mapping of + module names to quantization configurations to use for each module. If a + module is not specified, the attributes from this class will be used. + modules_to_not_convert (list[str]): A list of module names that should not be + quantized. + + """ + + module_config_overrides: dict[str, ModuleQuantizationConfig] = field( + default_factory=dict, + ) + modules_to_not_convert: list[str] = field(default_factory=lambda: ["lm_head"]) + + def __post_init__(self) -> None: + """Convert module config overrides to ModuleQuantizationConfig instances.""" + + super().__post_init__() + + if self.module_config_overrides is not None: + for module_name, module_config in self.module_config_overrides.items(): + if isinstance(module_config, dict): + self.module_config_overrides[module_name] = ( + ModuleQuantizationConfig(**module_config) + ) + + def get_module_config(self, module_name: str) -> ModuleQuantizationConfig: + """Return the quantization configuration for a given module.""" + return ( + self.module_config_overrides.get(module_name, self) + if self.module_config_overrides is not None + else self + ) + + def __hash__(self) -> str: + """Return a hash of the configuration.""" + return hashlib.sha256( + json.dumps(self.__dict__, sort_keys=True).encode(), + ).hexdigest() diff --git a/fouroversix/src/fouroversix/model/modules/__init__.py b/fouroversix/src/fouroversix/model/modules/__init__.py new file mode 100644 index 0000000..6bda99f --- /dev/null +++ b/fouroversix/src/fouroversix/model/modules/__init__.py @@ -0,0 +1,7 @@ +from .gpt_oss import FourOverSixGptOssMLP +from .linear import FourOverSixLinear +# from .qwen import FourOverSixQwenExperts + +# __all__ = ["FourOverSixGptOssMLP", "FourOverSixLinear", "FourOverSixQwenExperts"] +__all__ = ["FourOverSixGptOssMLP", "FourOverSixLinear"] + diff --git a/fouroversix/src/fouroversix/model/modules/gpt_oss.py b/fouroversix/src/fouroversix/model/modules/gpt_oss.py new file mode 100644 index 0000000..b181fa5 --- /dev/null +++ b/fouroversix/src/fouroversix/model/modules/gpt_oss.py @@ -0,0 +1,395 @@ +from typing import Any + +import torch +from fouroversix.matmul import fp4_matmul +from fouroversix.model.config import ModuleQuantizationConfig +from fouroversix.model.quantize import QuantizedModule +from fouroversix.quantize import ( + QuantizationConfig, + QuantizedTensor, + quantize_to_fp4, +) +from torch import nn +from transformers import GptOssConfig +from transformers.models.gpt_oss.modeling_gpt_oss import ( + GptOssExperts, + GptOssMLP, + GptOssTopKRouter, +) + + +@QuantizedModule.register(GptOssMLP) +class FourOverSixGptOssMLP(nn.Module): + """Drop-in replacement for GptOssMLP layer that uses FP4 quantization.""" + + def __init__( + self, + module: GptOssMLP, + config: ModuleQuantizationConfig, + ) -> None: + """ + Initialize the FourOverSixGptOssMLP layer. + + Args: + module (GptOssMLP): The high-precision module that this quantized layer will + replace. + config (ModuleQuantizationConfig): The quantization configuration to use for + the layer. + + """ + + super().__init__() + + self.config = config + + gpt_oss_config = GptOssConfig( + num_local_experts=module.experts.num_experts, + hidden_size=module.experts.hidden_size, + intermediate_size=module.experts.intermediate_size, + num_experts_per_token=module.router.top_k, + ) + + self.router = GptOssTopKRouter(gpt_oss_config) + self.router.weight = module.router.weight + self.router.bias = module.router.bias + + self.experts = FourOverSixGptOssExperts( + module.experts, + quantization_config=self.config, + ) + + def forward(self, hidden_states: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]: + """Forward pass for the FP4 MLP layer.""" + batch_size, sequence_length, hidden_dim = hidden_states.shape + hidden_states = hidden_states.reshape(-1, hidden_dim) + _, router_scores, router_indices = self.router(hidden_states) + hidden_states = self.experts(hidden_states, router_indices, router_scores) + hidden_states = hidden_states.reshape(batch_size, sequence_length, hidden_dim) + return hidden_states, router_scores + + @property + def parameters_to_quantize(self) -> tuple[str, ...]: + """Return high precision parameters to be quantized and deleted.""" + return () + + def get_element_size(self, parameter_name: str) -> float: + """Get the size of a single element, in bytes, for a parameter.""" + + return { + "quantized_down_proj_values": 0.5, + "quantized_gate_up_proj_values": 0.5, + "down_proj": 9 / 16, + "gate_up_proj": 9 / 16, + }.get( + parameter_name, + getattr(self, parameter_name).element_size(), + ) + + +@QuantizedModule.register(GptOssExperts, replace_existing_modules_in_model=False) +class FourOverSixGptOssExperts(nn.Module): + """Drop-in replacement for GptOssExperts layer that uses FP4 quantization.""" + + def __init__( + self, + module: GptOssExperts, + quantization_config: ModuleQuantizationConfig | None = None, + ) -> None: + + super().__init__() + + self.num_experts = module.num_experts + self.intermediate_size = module.intermediate_size + self.hidden_size = module.hidden_size + + self.down_proj_bias = module.down_proj_bias + self.gate_up_proj_bias = module.gate_up_proj_bias + + # Store original weights so they can be quantized and then deleted + self.down_proj = module.down_proj + self.gate_up_proj = module.gate_up_proj + + self.config = quantization_config + + if not self.config.keep_master_weights: + self.register_buffer( + "quantized_down_proj_values", + nn.Parameter( + torch.zeros( + self.num_experts, + self.intermediate_size, + self.hidden_size // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_gate_up_proj_values", + nn.Parameter( + torch.zeros( + self.num_experts, + self.intermediate_size * 2, + self.hidden_size // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_scale_factors", + nn.Parameter( + torch.zeros( + self.num_experts, + self.hidden_size + * self.intermediate_size + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_scale_factors", + nn.Parameter( + torch.zeros( + self.num_experts, + self.hidden_size + * (self.intermediate_size * 2) + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_amax", + nn.Parameter( + torch.zeros(self.num_experts, 1, dtype=torch.float32), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_amax", + nn.Parameter( + torch.zeros(self.num_experts, 1, dtype=torch.float32), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_metadata", + nn.Parameter( + torch.zeros(self.num_experts, 4, dtype=torch.int32), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_metadata", + nn.Parameter( + torch.zeros(self.num_experts, 4, dtype=torch.int32), + requires_grad=False, + ), + ) + + self.alpha = 1.702 + self.limit = 7.0 + + @property + def parameters_to_quantize(self) -> tuple[str, ...]: + """Return high precision parameters to be quantized and deleted.""" + return ("down_proj", "gate_up_proj") + + def get_packing_factor(self, parameter_name: str) -> float: + """Get the packing factor for a parameter.""" + return ( + 2 + if parameter_name + in {"quantized_down_proj_values", "quantized_gate_up_proj_values"} + else 1 + ) + + def get_quantized_parameters( + self, + parameter_name: str, + parameter: torch.Tensor, + ) -> dict[str, Any]: + """ + Prepare this layer for post-training quantization by quantizing the weight, + storing the quantized weight, and deleting the original weight. This should not + be done if the layer is used for training, as training requires storage of the + high-precision weight. + """ + + weight_config = QuantizationConfig( + backend=self.config.quantize_backend, + dtype=self.config.dtype, + scale_rule=self.config.weight_scale_rule, + ) + + quantized_proj = [] + for e in range(parameter.shape[0]): + q = quantize_to_fp4(parameter[e], weight_config) + quantized_proj.append(q) + + if "down" in parameter_name: + prefix = "down" + elif "gate_up" in parameter_name: + prefix = "gate_up" + + return { + f"quantized_{prefix}_proj_values": torch.stack( + [tensor.values for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_scale_factors": torch.stack( + [tensor.scale_factors for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_amax": torch.stack( + [tensor.amax for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_metadata": torch.stack( + [ + torch.tensor( + [ + tensor.original_shape[0], + tensor.original_shape[1], + tensor.padded_shape[0], + tensor.padded_shape[1], + ], + ) + for tensor in quantized_proj + ], + ), + } + + def forward( + self, + hidden_states: torch.Tensor, + routing_indices: torch.Tensor = None, + routing_weights: torch.Tensor = None, + ) -> torch.Tensor: + """Forward pass for the FP4 experts layer.""" + + down_proj, gate_up_proj = self.quantized_weights() + + batch_size = hidden_states.shape[0] + hidden_states = hidden_states.reshape( + -1, + self.hidden_size, + ) + next_states = torch.zeros_like( + hidden_states, + dtype=hidden_states.dtype, + device=hidden_states.device, + ) + with torch.no_grad(): + expert_mask = torch.nn.functional.one_hot( + routing_indices, + num_classes=self.num_experts, + ) + expert_mask = expert_mask.permute(2, 1, 0) + expert_hit = torch.greater(expert_mask.sum(dim=(-1, -2)), 0).nonzero() + + for [expert_idx] in expert_hit: + if expert_idx == self.num_experts: + continue + with torch.no_grad(): + top_k_pos, token_idx = torch.where(expert_mask[expert_idx]) + current_state = hidden_states[token_idx] + + # Gate-up projection + fprop_activation_config = QuantizationConfig( + backend=self.config.quantize_backend, + dtype=self.config.dtype, + scale_rule=self.config.activation_scale_rule, + ) + + gate_up = fp4_matmul( + current_state, + gate_up_proj[expert_idx], + input_config=fprop_activation_config, + out_dtype=self.config.output_dtype, + ) + gate_up += self.gate_up_proj_bias[expert_idx] + + gate, up = gate_up[..., ::2], gate_up[..., 1::2] + gate = gate.clamp(min=None, max=self.limit) + up = up.clamp(min=-self.limit, max=self.limit) + glu = gate * torch.sigmoid(gate * self.alpha) + gated_output = (up + 1) * glu + + # Down projection + out = fp4_matmul( + gated_output, + down_proj[expert_idx], + input_config=fprop_activation_config, + out_dtype=self.config.output_dtype, + ) + out += self.down_proj_bias[expert_idx] + weighted_output = out * routing_weights[token_idx, top_k_pos, None] + next_states.index_add_( + 0, + token_idx, + weighted_output.to(hidden_states.dtype), + ) + + return next_states.view(batch_size, -1, self.hidden_size) + + def quantized_weights(self) -> tuple[list[QuantizedTensor], list[QuantizedTensor]]: + """Return quantized parameters as QuantizedTensor.""" + + if not hasattr(self, "_quantized_weights"): + weight_config = self.config.get_weight_config() + if self.config.keep_master_weights: + down = [ + quantize_to_fp4(self.down_proj[e], weight_config) + for e in range(self.num_experts) + ] + gate_up = [ + quantize_to_fp4(self.gate_up_proj[e], weight_config) + for e in range(self.num_experts) + ] + return (down, gate_up) + + down = [] + gate_up = [] + for e in range(self.num_experts): + down.append( + QuantizedTensor( + values=self.quantized_down_proj_values.data[e], + scale_factors=self.quantized_down_proj_scale_factors.data[e], + amax=self.quantized_down_proj_amax.data[e], + dtype=self.config.dtype, + original_shape=tuple( + self.quantized_down_proj_metadata.data[e, :2].tolist(), + ), + scale_rule=self.config.weight_scale_rule, + padded_shape=tuple( + self.quantized_down_proj_metadata.data[e, 2:].tolist(), + ), + ), + ) + gate_up.append( + QuantizedTensor( + values=self.quantized_gate_up_proj_values.data[e], + scale_factors=self.quantized_gate_up_proj_scale_factors.data[e], + amax=self.quantized_gate_up_proj_amax.data[e], + dtype=self.config.dtype, + original_shape=tuple( + self.quantized_gate_up_proj_metadata.data[e, :2].tolist(), + ), + scale_rule=self.config.weight_scale_rule, + padded_shape=tuple( + self.quantized_gate_up_proj_metadata.data[e, 2:].tolist(), + ), + ), + ) + self._quantized_weights = (down, gate_up) + + return self._quantized_weights diff --git a/fouroversix/src/fouroversix/model/modules/linear.py b/fouroversix/src/fouroversix/model/modules/linear.py new file mode 100644 index 0000000..9cf2e1e --- /dev/null +++ b/fouroversix/src/fouroversix/model/modules/linear.py @@ -0,0 +1,355 @@ +from typing import Any +import torch +import torch.nn as nn +from fouroversix.matmul import fp4_matmul +from fouroversix.model.config import ModuleQuantizationConfig +from fouroversix.model.quantize import QuantizedModule +from fouroversix.quantize import ( + QuantizationConfig, + QuantizedTensor, + quantize_to_fp4, + ) + + +class FourOverSixLinearFunction(torch.autograd.Function): + + """Differentiable FP4 linear layer.""" + @staticmethod + def forward( + ctx: torch.autograd.function.FunctionCtx, + config: ModuleQuantizationConfig, + input: torch.Tensor, + weight: torch.Tensor | QuantizedTensor, + weight_t: QuantizedTensor | None, + bias: torch.Tensor = None, + ) -> tuple[torch.Tensor,]: + """ + Perform an FP4 matrix multiplication. The input is provided in high precision + and quantized to FP4 prior to the matrix multiplication, while the weight is + provided in low precision. + """ + needs_wgrad = isinstance(weight, (nn.Parameter, torch.Tensor)) and weight.requires_grad + needs_input_grad = input.requires_grad + ctx.config = config + ctx.needs_wgrad = needs_wgrad + ctx.needs_input_grad_flag = needs_input_grad + ctx.saved_quantized_weight = None + ctx.saved_quantized_weight_t = None + ctx.saved_bias = None + fprop_activation_config = config.get_activation_config() + fprop_weight_config = config.get_weight_config() + if isinstance(weight, QuantizedTensor): + weight_q = weight + else: + weight_q = quantize_to_fp4(weight.data if isinstance(weight, nn.Parameter) else weight, fprop_weight_config) + input_2d = input.reshape(-1, input.shape[-1]) + input_q = quantize_to_fp4(input_2d, fprop_activation_config) + if needs_wgrad: + ctx.save_for_backward( + input_q.values, input_q.scale_factors, input_q.amax, + weight, bias, + ) + ctx.input_shape = input.shape + ctx.input_q_meta = ( + input_q.original_shape, input_q.padded_shape, + input_q.dtype, input_q.scale_rule, + ) + elif needs_input_grad: + # When master weights are dropped, `weight` is a QuantizedTensor rather than + # a Tensor/Parameter, so it cannot be passed to save_for_backward. + if isinstance(weight, QuantizedTensor): + ctx.saved_quantized_weight = weight + ctx.saved_quantized_weight_t = weight_t + ctx.saved_bias = bias + else: + ctx.save_for_backward(weight, bias) + ctx.input_shape = input.shape + out = fp4_matmul( + input_q, + weight_q, + backend=config.matmul_backend, + out_dtype=config.output_dtype, + ).reshape(*input.shape[:-1], weight_q.original_shape[0]) + if bias is not None: + out = out + bias + return out + + @staticmethod + def backward( + ctx: torch.autograd.function.FunctionCtx, + grad_output: torch.Tensor, + ) -> tuple[torch.Tensor, ...]: + """Backward pass for the FP4 linear layer.""" + if not ctx.needs_wgrad and not ctx.needs_input_grad_flag: + return None, None, None, None, None + + if ctx.needs_wgrad: + iq_vals, iq_sf, iq_amax, weight, bias = ctx.saved_tensors + weight_t = None + else: + if ctx.saved_quantized_weight is not None: + weight = ctx.saved_quantized_weight + weight_t = ctx.saved_quantized_weight_t + bias = ctx.saved_bias + else: + weight, bias = ctx.saved_tensors + weight_t = None + + input_shape = ctx.input_shape + + grad_input = None + if ctx.needs_input_grad_flag: + dgrad_grad_config = ctx.config.get_gradient_config() + dgrad_weight_config = ctx.config.get_weight_config(transpose=True) + dgrad_weight = weight_t if weight_t is not None else weight + if isinstance(weight, QuantizedTensor) and weight_t is None: + raise RuntimeError( + "Materialized quantized linear layers need cached transposed weights for grad_input. " + "Re-materialize with cache_transposed_weights=True." + ) + grad_input = fp4_matmul( + grad_output.reshape(-1, grad_output.shape[-1]), + dgrad_weight, + backend=ctx.config.matmul_backend, + input_config=dgrad_grad_config, + other_config=dgrad_weight_config, + out_dtype=ctx.config.output_dtype, + ).reshape(input_shape) + + grad_weight = None + if ctx.needs_wgrad: + orig_shape, padded_shape, q_dtype, q_scale_rule = ctx.input_q_meta + input_approx = QuantizedTensor( + iq_vals, iq_sf, iq_amax, + q_dtype, orig_shape, q_scale_rule, padded_shape, + ).dequantize_triton(dtype=torch.bfloat16) + + wgrad_grad_config = ctx.config.get_gradient_config(rht=True, transpose=True) + wgrad_activation_config = ctx.config.get_activation_config( + rht=True, + transpose=True, + ) + grad_weight = fp4_matmul( + grad_output.reshape(-1, grad_output.shape[-1]), + input_approx, + backend=ctx.config.matmul_backend, + input_config=wgrad_grad_config, + other_config=wgrad_activation_config, + out_dtype=ctx.config.output_dtype, + ).unsqueeze(0) + + grad_bias = ( + grad_output.sum(0) if bias is not None and ctx.needs_input_grad[4] else None + ) + + return ( + None, + grad_input, + grad_weight, + None, + grad_bias, + ) + +@QuantizedModule.register(nn.Linear) +class FourOverSixLinear(nn.Linear): + """ + Drop-in replacement for `nn.Linear` that quantizes weights, activations, and + gradients. + """ + def __init__( + self, + module: nn.Linear, + config: ModuleQuantizationConfig, + ) -> None: + """ + Initialize the FourOverSixLinear layer. + Args: + module (nn.Linear): The high-precision module that this quantized layer will + replace. + config (ModuleQuantizationConfig): The quantization configuration to use for + the layer. + """ + super().__init__( + module.in_features, + module.out_features, + module.bias is not None, + module.weight.device, + module.weight.dtype, + ) + self.weight = module.weight + self.bias = module.bias + self.config = config + if not self.config.keep_master_weights: + self.register_buffer( + "quantized_weight_values", + nn.Parameter( + torch.zeros( + self.out_features, + self.in_features // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_weight_scale_factors", + nn.Parameter( + torch.zeros( + self.out_features + * self.in_features + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_weight_amax", + nn.Parameter(torch.zeros(1, dtype=torch.float32), requires_grad=False), + ) + self.register_buffer( + "quantized_weight_metadata", + nn.Parameter( + torch.zeros(2 + 2, dtype=torch.int32), + requires_grad=False, + ), + ) + + @property + def parameters_to_quantize(self) -> tuple[str, ...]: + """Return high precision parameters to be quantized and deleted.""" + return ("weight",) + + def get_element_size(self, parameter_name: str) -> float: + """Get the size of a single element, in bytes, for a parameter.""" + # quantized_weight_values is packed, so there are 4 bits, or 0.5 bytes, per + # element. Once quantized, weight will have (8+1)/16 bytes per element (one + # block of 16 values is 8 bytes of values + 1 byte of scale factors). + return {"quantized_weight_values": 0.5, "weight": 9 / 16}.get( + parameter_name, + getattr(self, parameter_name).element_size(), + ) + + def get_quantized_parameters( + self, + parameter_name: str, + parameter: torch.Tensor, + include_transposed: bool = False, + ) -> dict[str, Any]: + """Get the quantized parameters for the layer.""" + if parameter_name == "weight": + config = QuantizationConfig( + backend=self.config.quantize_backend, + block_scale_2d=self.config.weight_scale_2d, + dtype=self.config.dtype, + scale_rule=self.config.weight_scale_rule, + ) + quantized_weight = quantize_to_fp4(parameter, config) + quantized_params = self._serialize_quantized_weight( + "quantized_weight", + quantized_weight, + ) + if include_transposed: + transposed_config = QuantizationConfig( + backend=self.config.quantize_backend, + block_scale_2d=self.config.weight_scale_2d, + dtype=self.config.dtype, + scale_rule=self.config.weight_scale_rule, + transpose=True, + ) + quantized_params.update( + self._serialize_quantized_weight( + "quantized_weight_transposed", + quantize_to_fp4(parameter, transposed_config), + ), + ) + return quantized_params + msg = f"Unsupported high-preciison parameter: {parameter_name}" + raise ValueError(msg) + + @staticmethod + def _serialize_quantized_weight( + prefix: str, + quantized_weight: QuantizedTensor, + ) -> dict[str, torch.Tensor]: + return { + f"{prefix}_values": quantized_weight.values, + f"{prefix}_scale_factors": quantized_weight.scale_factors, + f"{prefix}_amax": quantized_weight.amax, + f"{prefix}_metadata": torch.tensor( + [ + quantized_weight.original_shape[0], + quantized_weight.original_shape[1], + quantized_weight.padded_shape[0], + quantized_weight.padded_shape[1], + ], + dtype=torch.int32, + ), + } + + def _build_quantized_weight(self, prefix: str) -> QuantizedTensor | None: + values = getattr(self, f"{prefix}_values", None) + scale_factors = getattr(self, f"{prefix}_scale_factors", None) + amax = getattr(self, f"{prefix}_amax", None) + metadata = getattr(self, f"{prefix}_metadata", None) + if any(x is None for x in (values, scale_factors, amax, metadata)): + return None + original_shape = tuple(metadata.data[:2].tolist()) + padded_shape = tuple(metadata.data[2:].tolist()) + return QuantizedTensor( + values.data, + scale_factors.data, + amax.data, + self.config.dtype, + original_shape, + self.config.weight_scale_rule, + padded_shape, + ) + + def quantized_weight(self) -> QuantizedTensor: + """ + Prepare this layer for post-training quantization by quantizing the weight, + storing the quantized weight, and deleting the original weight. This should not + be done if the layer is used for training, as training requires storage of the + high-precision weight. + """ + if not hasattr(self, "_quantized_weight"): + if self.config.keep_master_weights: + return self.weight + self._quantized_weight = self._build_quantized_weight("quantized_weight") + return self._quantized_weight + + def quantized_weight_transposed(self) -> QuantizedTensor | None: + if self.config.keep_master_weights: + return None + if not hasattr(self, "_quantized_weight_transposed"): + self._quantized_weight_transposed = self._build_quantized_weight( + "quantized_weight_transposed", + ) + return self._quantized_weight_transposed + + _INT32_MAX = 2_147_483_647 + + def forward(self, input: torch.Tensor) -> torch.Tensor: + """Forward pass for the FP4 linear layer.""" + flat_rows = input.reshape(-1, input.shape[-1]).shape[0] + if flat_rows * input.shape[-1] > self._INT32_MAX: + return self._forward_chunked(input) + return FourOverSixLinearFunction.apply( + self.config, + input, + self.quantized_weight(), + self.quantized_weight_transposed(), + self.bias, + ) + + def _forward_chunked(self, input: torch.Tensor) -> torch.Tensor: + """Split evenly into 2 chunks to avoid int32 overflow in CUDA FP4 quantize kernel.""" + orig_shape = input.shape + input_2d = input.reshape(-1, input.shape[-1]) + mid = input_2d.shape[0] // 2 + weight = self.quantized_weight() + weight_t = self.quantized_weight_transposed() + out_a = FourOverSixLinearFunction.apply(self.config, input_2d[:mid], weight, weight_t, self.bias) + out_b = FourOverSixLinearFunction.apply(self.config, input_2d[mid:], weight, weight_t, self.bias) + return torch.cat([out_a, out_b], dim=0).reshape(*orig_shape[:-1], -1) \ No newline at end of file diff --git a/fouroversix/src/fouroversix/model/modules/linear_ori.py b/fouroversix/src/fouroversix/model/modules/linear_ori.py new file mode 100644 index 0000000..0d88a07 --- /dev/null +++ b/fouroversix/src/fouroversix/model/modules/linear_ori.py @@ -0,0 +1,257 @@ +from typing import Any +import torch +import torch.nn as nn +from fouroversix.matmul import fp4_matmul +from fouroversix.model.config import ModuleQuantizationConfig +from fouroversix.model.quantize import QuantizedModule +from fouroversix.quantize import ( +QuantizationConfig, +QuantizedTensor, +quantize_to_fp4, +) + + +class FourOverSixLinearFunction(torch.autograd.Function): + + """Differentiable FP4 linear layer.""" + @staticmethod + def forward( + ctx: torch.autograd.function.FunctionCtx, + config: ModuleQuantizationConfig, + input: torch.Tensor, + weight: torch.Tensor | QuantizedTensor, + bias: torch.Tensor = None, + ) -> tuple[torch.Tensor,]: + """ + Perform an FP4 matrix multiplication. The input is provided in high precision + and quantized to FP4 prior to the matrix multiplication, while the weight is + provided in low precision. + """ + needs_wgrad = isinstance(weight, (nn.Parameter, torch.Tensor)) and weight.requires_grad + ctx.config = config + ctx.needs_wgrad = needs_wgrad + fprop_activation_config = config.get_activation_config() + fprop_weight_config = config.get_weight_config() + if isinstance(weight, QuantizedTensor): + weight_q = weight + else: + weight_q = quantize_to_fp4(weight.data if isinstance(weight, nn.Parameter) else weight, fprop_weight_config) + input_2d = input.reshape(-1, input.shape[-1]) + input_q = quantize_to_fp4(input_2d, fprop_activation_config) + if needs_wgrad: + # Save FP4 components (~4x smaller than BF16) instead of full-precision input + ctx.save_for_backward( + input_q.values, input_q.scale_factors, input_q.amax, + weight, bias, + ) + ctx.input_shape = input.shape + ctx.input_q_meta = ( + input_q.original_shape, input_q.padded_shape, + input_q.dtype, input_q.scale_rule, + ) + out = fp4_matmul( + input_q, + weight_q, + backend=config.matmul_backend, + out_dtype=config.output_dtype, + ).reshape(*input.shape[:-1], weight_q.original_shape[0]) + if bias is not None: + out = out + bias + return out + + @staticmethod + def backward( + ctx: torch.autograd.function.FunctionCtx, + grad_output: torch.Tensor, + ) -> tuple[torch.Tensor, ...]: + """Backward pass for the FP4 linear layer.""" + if not ctx.needs_wgrad: + return None, None, None, None + iq_vals, iq_sf, iq_amax, weight, bias = ctx.saved_tensors + input_shape = ctx.input_shape + + orig_shape, padded_shape, q_dtype, q_scale_rule = ctx.input_q_meta + input_approx = QuantizedTensor( + iq_vals, iq_sf, iq_amax, + q_dtype, orig_shape, q_scale_rule, padded_shape, + ).dequantize_triton(dtype=torch.bfloat16) + + dgrad_grad_config = ctx.config.get_gradient_config() + dgrad_weight_config = ctx.config.get_weight_config(transpose=True) + + grad_input = fp4_matmul( + grad_output.reshape(-1, grad_output.shape[-1]), + weight, + backend=ctx.config.matmul_backend, + input_config=dgrad_grad_config, + other_config=dgrad_weight_config, + out_dtype=ctx.config.output_dtype, + ).reshape(input_shape) + + wgrad_grad_config = ctx.config.get_gradient_config(rht=True, transpose=True) + wgrad_activation_config = ctx.config.get_activation_config( + rht=True, + transpose=True, + ) + + grad_weight = fp4_matmul( + grad_output.reshape(-1, grad_output.shape[-1]), + input_approx, + backend=ctx.config.matmul_backend, + input_config=wgrad_grad_config, + other_config=wgrad_activation_config, + out_dtype=ctx.config.output_dtype, + ).unsqueeze(0) + + grad_bias = ( + grad_output.sum(0) if bias is not None and ctx.needs_input_grad[3] else None + ) + + return ( + None, + grad_input, + grad_weight, + grad_bias, + ) + +@QuantizedModule.register(nn.Linear) +class FourOverSixLinear(nn.Linear): + """ + Drop-in replacement for `nn.Linear` that quantizes weights, activations, and + gradients. + """ + def __init__( + self, + module: nn.Linear, + config: ModuleQuantizationConfig, + ) -> None: + """ + Initialize the FourOverSixLinear layer. + Args: + module (nn.Linear): The high-precision module that this quantized layer will + replace. + config (ModuleQuantizationConfig): The quantization configuration to use for + the layer. + """ + super().__init__( + module.in_features, + module.out_features, + module.bias is not None, + module.weight.device, + module.weight.dtype, + ) + self.weight = module.weight + self.bias = module.bias + self.config = config + if not self.config.keep_master_weights: + self.register_buffer( + "quantized_weight_values", + nn.Parameter( + torch.zeros( + self.out_features, + self.in_features // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_weight_scale_factors", + nn.Parameter( + torch.zeros( + self.out_features + * self.in_features + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_weight_amax", + nn.Parameter(torch.zeros(1, dtype=torch.float32), requires_grad=False), + ) + self.register_buffer( + "quantized_weight_metadata", + nn.Parameter( + torch.zeros(2 + 2, dtype=torch.int32), + requires_grad=False, + ), + ) + + @property + def parameters_to_quantize(self) -> tuple[str, ...]: + """Return high precision parameters to be quantized and deleted.""" + return ("weight",) + + def get_element_size(self, parameter_name: str) -> float: + """Get the size of a single element, in bytes, for a parameter.""" + # quantized_weight_values is packed, so there are 4 bits, or 0.5 bytes, per + # element. Once quantized, weight will have (8+1)/16 bytes per element (one + # block of 16 values is 8 bytes of values + 1 byte of scale factors). + return {"quantized_weight_values": 0.5, "weight": 9 / 16}.get( + parameter_name, + getattr(self, parameter_name).element_size(), + ) + + def get_quantized_parameters( + self, + parameter_name: str, + parameter: torch.Tensor, + ) -> dict[str, Any]: + """Get the quantized parameters for the layer.""" + if parameter_name == "weight": + config = QuantizationConfig( + backend=self.config.quantize_backend, + block_scale_2d=self.config.weight_scale_2d, + dtype=self.config.dtype, + scale_rule=self.config.weight_scale_rule, + ) + quantized_weight = quantize_to_fp4(parameter, config) + return { + "quantized_weight_values": quantized_weight.values, + "quantized_weight_scale_factors": quantized_weight.scale_factors, + "quantized_weight_amax": quantized_weight.amax, + "quantized_weight_metadata": torch.tensor( + [ + quantized_weight.original_shape[0], + quantized_weight.original_shape[1], + quantized_weight.padded_shape[0], + quantized_weight.padded_shape[1], + ], + ), + } + msg = f"Unsupported high-preciison parameter: {parameter_name}" + raise ValueError(msg) + + def quantized_weight(self) -> QuantizedTensor: + """ + Prepare this layer for post-training quantization by quantizing the weight, + storing the quantized weight, and deleting the original weight. This should not + be done if the layer is used for training, as training requires storage of the + high-precision weight. + """ + if not hasattr(self, "_quantized_weight"): + if self.config.keep_master_weights: + return self.weight + original_shape = tuple(self.quantized_weight_metadata.data[:2].tolist()) + padded_shape = tuple(self.quantized_weight_metadata.data[2:].tolist()) + self._quantized_weight = QuantizedTensor( + self.quantized_weight_values.data, + self.quantized_weight_scale_factors.data, + self.quantized_weight_amax.data, + self.config.dtype, + original_shape, + self.config.weight_scale_rule, + padded_shape, + ) + return self._quantized_weight + + def forward(self, input: torch.Tensor) -> torch.Tensor: + """Forward pass for the FP4 linear layer.""" + return FourOverSixLinearFunction.apply( + self.config, + input, + self.quantized_weight(), + self.bias, + ) \ No newline at end of file diff --git a/fouroversix/src/fouroversix/model/modules/qwen.py b/fouroversix/src/fouroversix/model/modules/qwen.py new file mode 100644 index 0000000..95d0cf6 --- /dev/null +++ b/fouroversix/src/fouroversix/model/modules/qwen.py @@ -0,0 +1,326 @@ +import warnings +from typing import Any + +import torch +from fouroversix.matmul import fp4_matmul +from fouroversix.model.config import ModuleQuantizationConfig +from fouroversix.model.quantize import QuantizedModule +from fouroversix.quantize import QuantizationConfig, QuantizedTensor, quantize_to_fp4 +from torch import nn + +try: + from transformers.models.qwen3_5_moe.modeling_qwen3_5_moe import Qwen3_5MoeExperts +except ImportError: + warnings.warn( + "Qwen3_5MoeExperts not found, please update transformers to the latest " + "version to quantize Qwen3.5 models.", + stacklevel=2, + ) + + Qwen3_5MoeExperts = None + + +@QuantizedModule.register(Qwen3_5MoeExperts) +class FourOverSixQwenExperts(nn.Module): + """ + Drop-in replacement for the Qwen3_5MoeExperts layer that + uses FP4 quantization. + """ + + def __init__( + self, + module: Qwen3_5MoeExperts, + config: ModuleQuantizationConfig, + ) -> None: + """ + Initialize the FourOverSixQwenExperts layer. + + Args: + module (GptOssMLP): The high-precision module that this quantized layer will + replace. + config (ModuleQuantizationConfig): The quantization configuration to use for + the layer. + + """ + super().__init__() + + self.num_experts = module.num_experts + self.intermediate_dim = module.intermediate_dim + self.hidden_dim = module.hidden_dim + + self.down_proj = module.down_proj + self.gate_up_proj = module.gate_up_proj + + self.device = self.down_proj.device + self.config = config + + self.act_fn = module.act_fn + + if not self.config.keep_master_weights: + + self.register_buffer( + "quantized_down_proj_values", + nn.Parameter( + torch.zeros( + self.num_experts, + self.hidden_dim, + self.intermediate_dim // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_gate_up_proj_values", + nn.Parameter( + torch.zeros( + self.num_experts, + self.intermediate_dim * 2, + self.hidden_dim // 2, + dtype=torch.uint8, + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_scale_factors", + nn.Parameter( + torch.zeros( + self.num_experts, + self.hidden_dim + * self.intermediate_dim + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_scale_factors", + nn.Parameter( + torch.zeros( + self.num_experts, + self.hidden_dim + * (self.intermediate_dim * 2) + // self.config.dtype.block_size(), + dtype=self.config.dtype.scale_dtype(), + ), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_amax", + nn.Parameter( + torch.zeros(self.num_experts, 1, dtype=torch.float32), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_amax", + nn.Parameter( + torch.zeros(self.num_experts, 1, dtype=torch.float32), + requires_grad=False, + ), + ) + + self.register_buffer( + "quantized_down_proj_metadata", + nn.Parameter( + torch.zeros(self.num_experts, 4, dtype=torch.int32), + requires_grad=False, + ), + ) + self.register_buffer( + "quantized_gate_up_proj_metadata", + nn.Parameter( + torch.zeros(self.num_experts, 4, dtype=torch.int32), + requires_grad=False, + ), + ) + + @property + def parameters_to_quantize(self) -> tuple[str, ...]: + """Return high precision parameters to be quantized and deleted.""" + return ("down_proj", "gate_up_proj") + + def get_element_size(self, parameter_name: str) -> float: + """Get the size of a single element, in bytes, for a parameter.""" + + return { + "quantized_down_proj_values": 0.5, + "quantized_gate_up_proj_values": 0.5, + "down_proj": 9 / 16, + "gate_up_proj": 9 / 16, + }.get( + parameter_name, + getattr(self, parameter_name).element_size(), + ) + + def get_quantized_parameters( + self, + parameter_name: str, + parameter: torch.Tensor, + ) -> dict[str, Any]: + """ + Prepare this layer for post-training quantization by quantizing the weight, + storing the quantized weight, and deleting the original weight. This should not + be done if the layer is used for training, as training requires storage of the + high-precision weight. + """ + + if "bias" in parameter_name: + return {parameter_name: parameter} + + weight_config = QuantizationConfig( + backend=self.config.quantize_backend, + dtype=self.config.dtype, + scale_rule=self.config.weight_scale_rule, + ) + + quantized_proj = [] + for e in range(parameter.shape[0]): + q = quantize_to_fp4(parameter[e], weight_config) + quantized_proj.append(q) + + if "down" in parameter_name: + prefix = "down" + elif "gate_up" in parameter_name: + prefix = "gate_up" + + return { + f"quantized_{prefix}_proj_values": torch.stack( + [tensor.values for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_scale_factors": torch.stack( + [tensor.scale_factors for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_amax": torch.stack( + [tensor.amax for tensor in quantized_proj], + dim=0, + ), + f"quantized_{prefix}_proj_metadata": torch.stack( + [ + torch.tensor( + [ + tensor.original_shape[0], + tensor.original_shape[1], + tensor.padded_shape[0], + tensor.padded_shape[1], + ], + ) + for tensor in quantized_proj + ], + ), + } + + def forward( + self, + hidden_states: torch.Tensor, + top_k_index: torch.Tensor, + top_k_weights: torch.Tensor, + ) -> torch.Tensor: + """Forward pass for the FP4 experts layer.""" + + down_proj, gate_up_proj = self.quantized_weights() + + final_hidden_states = torch.zeros_like(hidden_states) + with torch.no_grad(): + expert_mask = torch.nn.functional.one_hot( + top_k_index, + num_classes=self.num_experts, + ) + expert_mask = expert_mask.permute(2, 1, 0) + expert_hit = torch.greater(expert_mask.sum(dim=(-1, -2)), 0).nonzero() + + for [expert_idx] in expert_hit: + if expert_idx == self.num_experts: + continue + + fprop_activation_config = QuantizationConfig( + backend=self.config.quantize_backend, + dtype=self.config.dtype, + scale_rule=self.config.activation_scale_rule, + ) + top_k_pos, token_idx = torch.where(expert_mask[expert_idx]) + current_state = hidden_states[token_idx] + gate, up = fp4_matmul( + current_state, + gate_up_proj[expert_idx], + input_config=fprop_activation_config, + out_dtype=self.config.output_dtype, + ).chunk(2, dim=-1) + current_hidden_states = self.act_fn(gate) * up + current_hidden_states = fp4_matmul( + current_hidden_states, + down_proj[expert_idx], + input_config=fprop_activation_config, + out_dtype=self.config.output_dtype, + ) + current_hidden_states = ( + current_hidden_states * top_k_weights[token_idx, top_k_pos, None] + ) + final_hidden_states.index_add_( + 0, + token_idx, + current_hidden_states.to(final_hidden_states.dtype), + ) + + return final_hidden_states + + def quantized_weights(self) -> tuple[list[QuantizedTensor], list[QuantizedTensor]]: + """Return quantized parameters as QuantizedTensor.""" + + if not hasattr(self, "_quantized_weights"): + weight_config = self.config.get_weight_config() + if self.config.keep_master_weights: + down = [ + quantize_to_fp4(self.down_proj[e], weight_config) + for e in range(self.num_experts) + ] + gate_up = [ + quantize_to_fp4(self.gate_up_proj[e], weight_config) + for e in range(self.num_experts) + ] + return (down, gate_up) + + down = [] + gate_up = [] + for e in range(self.num_experts): + down.append( + QuantizedTensor( + values=self.quantized_down_proj_values.data[e], + scale_factors=self.quantized_down_proj_scale_factors.data[e], + amax=self.quantized_down_proj_amax.data[e], + dtype=self.config.dtype, + original_shape=tuple( + self.quantized_down_proj_metadata.data[e, :2].tolist(), + ), + scale_rule=self.config.weight_scale_rule, + padded_shape=tuple( + self.quantized_down_proj_metadata.data[e, 2:].tolist(), + ), + ), + ) + gate_up.append( + QuantizedTensor( + values=self.quantized_gate_up_proj_values.data[e], + scale_factors=self.quantized_gate_up_proj_scale_factors.data[e], + amax=self.quantized_gate_up_proj_amax.data[e], + dtype=self.config.dtype, + original_shape=tuple( + self.quantized_gate_up_proj_metadata.data[e, :2].tolist(), + ), + scale_rule=self.config.weight_scale_rule, + padded_shape=tuple( + self.quantized_gate_up_proj_metadata.data[e, 2:].tolist(), + ), + ), + ) + self._quantized_weights = (down, gate_up) + + return self._quantized_weights diff --git a/fouroversix/src/fouroversix/model/quantize.py b/fouroversix/src/fouroversix/model/quantize.py new file mode 100644 index 0000000..444bda7 --- /dev/null +++ b/fouroversix/src/fouroversix/model/quantize.py @@ -0,0 +1,127 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, ClassVar + +import torch.nn as nn + +if TYPE_CHECKING: + from collections.abc import Callable + + from .config import ModelQuantizationConfig + + +class QuantizedModule: + """Base class for all quantized modules.""" + + _registry: ClassVar[dict[type[nn.Module], type[nn.Module]]] = {} + _should_replace_existing_modules_in_model: ClassVar[dict[type[nn.Module], bool]] = ( + {} + ) + + @classmethod + def is_quantized_module_type(cls, module_type: type[nn.Module]) -> bool: + """Return True if the given module type is a quantized module.""" + return module_type in cls._registry.values() + + @classmethod + def get_cls( + cls, + high_precision_cls: type[nn.Module], + ) -> type[nn.Module] | None: + """Get the quantized module for a given high-precision module.""" + return cls._registry.get(high_precision_cls) + + @classmethod + def should_replace_existing_modules_in_model( + cls, + module_type: type[nn.Module], + ) -> bool: + """Determine whether module should be replaced.""" + return cls._should_replace_existing_modules_in_model.get(module_type, False) + + @classmethod + def register( + cls, + high_precision_cls: type[nn.Module], + *, + replace_existing_modules_in_registry: bool = False, + replace_existing_modules_in_model: bool = True, + ) -> Callable[[type[nn.Module]], type[nn.Module]]: + """ + Register a new type of quantized module. + + Args: + high_precision_cls: (`type[nn.Module]`): The high precision module to be + mapped to a fouroversix quantized module. + replace_existing_modules_in_registry (bool): determines whether we should + replace the existing module in the registry. + replace_existing_modules_in_model (bool): determines whether we should + replace the existing module in the model including the weights. + + """ + + if ( + high_precision_cls in cls._registry + and not replace_existing_modules_in_registry + ): + msg = f"High-precision module {high_precision_cls} is already registered." + raise ValueError(msg) + + modules_to_delete = [] + + for module_cls in cls._registry: + if high_precision_cls is not None and issubclass( + high_precision_cls, + module_cls, + ): + if replace_existing_modules_in_registry: + modules_to_delete.append(module_cls) + else: + msg = ( + f"High-precision module {high_precision_cls} is a subclass of " + f"{module_cls}, which is already registered." + ) + raise TypeError(msg) + + for module_cls in modules_to_delete: + del cls._registry[module_cls] + + def inner_wrapper( + wrapped_cls: type[nn.Module], + ) -> type[nn.Module]: + cls._registry[high_precision_cls] = wrapped_cls + cls._should_replace_existing_modules_in_model[high_precision_cls] = ( + replace_existing_modules_in_model + ) + return wrapped_cls + + return inner_wrapper + + +def quantize_model( + model: nn.Module, + config: ModelQuantizationConfig, + **kwargs: dict[str, Any], +) -> None: + for module_name, module in model.named_modules(): + if ( + module_name == "" + or module_name in config.modules_to_not_convert + or not isinstance(module, nn.Module) + ): + continue + + module_cls = QuantizedModule.get_cls(type(module)) + should_replace = QuantizedModule.should_replace_existing_modules_in_model( + type(module), + ) + + if module_cls is None or not should_replace: + continue + + quantized_module = module_cls( + module, + config.get_module_config(module_name), + **kwargs, + ) + model.set_submodule(module_name, quantized_module) diff --git a/fouroversix/src/fouroversix/quantize/__init__.py b/fouroversix/src/fouroversix/quantize/__init__.py new file mode 100644 index 0000000..afd3ad6 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/__init__.py @@ -0,0 +1,6 @@ +from .config import QuantizationConfig +from .frontend import quantize_to_fp4 +from .quantized_tensor import QuantizedTensor +from .utils import get_rht_matrix + +__all__ = ["QuantizationConfig", "QuantizedTensor", "get_rht_matrix", "quantize_to_fp4"] diff --git a/fouroversix/src/fouroversix/quantize/backend.py b/fouroversix/src/fouroversix/quantize/backend.py new file mode 100644 index 0000000..e47cd3d --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/backend.py @@ -0,0 +1,69 @@ +from abc import ABC, abstractmethod + +import torch +from fouroversix.utils import DataType, ScaleRule + +from .config import QuantizationConfig +from .quantized_tensor import QuantizedTensor + + +class QuantizeBackendBase(ABC): + """Base class for all quantization backends.""" + + @classmethod + @abstractmethod + def is_available(cls) -> bool: + """Return True if the backend is available on the current machine.""" + msg = "Subclasses must implement this method" + raise NotImplementedError(msg) + + @classmethod + @abstractmethod + def is_supported(cls, x: torch.Tensor, config: QuantizationConfig) -> bool: + """ + Return True if the backend supports the given input and quantization + configuration. + """ + + if not cls.is_available(): + return False + + if x.ndim != 2: # noqa: PLR2004 + return False + + if config.dtype not in {DataType.mxfp4, DataType.nvfp4}: + return False + + if config.dtype == DataType.mxfp4 and config.scale_rule not in { + ScaleRule.static_6, + ScaleRule.static_4, + }: + msg = ( + "MXFP4 quantization only supports the `static_6` and `static_4` scale " + "rules" + ) + raise ValueError(msg) + + return True + + @classmethod + @abstractmethod + def quantize_to_fp4( + cls, + x: torch.Tensor, + config: QuantizationConfig, + ) -> QuantizedTensor: + """ + Quantize a tensor to FP4 using the backend. + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration. + + Returns: + The quantized tensor. + + """ + + msg = "Subclasses must implement this method" + raise NotImplementedError(msg) diff --git a/fouroversix/src/fouroversix/quantize/config.py b/fouroversix/src/fouroversix/quantize/config.py new file mode 100644 index 0000000..cc5d1ee --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/config.py @@ -0,0 +1,51 @@ +from dataclasses import dataclass + +from fouroversix.utils import DataType, QuantizeBackend, RoundStyle, ScaleRule + + +@dataclass +class QuantizationConfig: + """ + Configuration to use when quantizing a tensor. + + Args: + backend (QuantizeBackend): The backend to use for quantization. If no backend is + provided, a backend will be selected automatically based on the available + GPU and the specified options. + block_scale_2d (bool): If True, scale factors will be computed across 16x16 + chunks of the input rather than 1x16 chunks. This is useful to apply to the + weight matrix during training, so that W and W.T will be equivalent after + quantization. + dtype (DataType): The data type to quantize to. + rht (bool): If True, the random Hadamard transform will be applied to the input + prior to quantization. + round_style (RoundStyle): The rounding style to apply during quantization. + scale_rule (ScaleRule): The scaling rule to use during quantization. + transpose (bool): If True, the output will be a quantized version of the + transposed input. This may be helpful for certain operations during training + as `fp4_matmul` requires that both tensors are provided in row-major format. + + """ + + backend: QuantizeBackend | None = None + block_scale_2d: bool = False + dtype: DataType = DataType.nvfp4 + rht: bool = False + round_style: RoundStyle = RoundStyle.nearest + scale_rule: ScaleRule = ScaleRule.mse + transpose: bool = False + + def __post_init__(self) -> None: + """Convert string values to enums.""" + + if isinstance(self.backend, str): + self.backend = QuantizeBackend(self.backend) + + if isinstance(self.dtype, str): + self.dtype = DataType(self.dtype) + + if isinstance(self.round_style, str): + self.round_style = RoundStyle(self.round_style) + + if isinstance(self.scale_rule, str): + self.scale_rule = ScaleRule(self.scale_rule) diff --git a/fouroversix/src/fouroversix/quantize/cuda/__init__.py b/fouroversix/src/fouroversix/quantize/cuda/__init__.py new file mode 100644 index 0000000..deb5bf3 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/cuda/__init__.py @@ -0,0 +1,3 @@ +from .backend import CUDAQuantizeBackend + +__all__ = ["CUDAQuantizeBackend"] diff --git a/fouroversix/src/fouroversix/quantize/cuda/backend.py b/fouroversix/src/fouroversix/quantize/cuda/backend.py new file mode 100644 index 0000000..89bb185 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/cuda/backend.py @@ -0,0 +1,91 @@ +import functools + +import torch +from fouroversix.quantize.backend import QuantizeBackendBase +from fouroversix.quantize.config import QuantizationConfig +from fouroversix.quantize.quantized_tensor import QuantizedTensor +from fouroversix.utils import BLACKWELL_SM_IDS, DataType, RoundStyle + + +class CUDAQuantizeBackend(QuantizeBackendBase): + """ + The CUDA quantization backend. Supports basic quantization options (no 2D block + scaling, no stochastic rounding, no random Hadamard transform). As a result, it can + be used for inference, but not training. Requires a Blackwell GPU. + """ + + @classmethod + @functools.lru_cache + def is_available(cls) -> bool: + """Return True if the CUDA backend is available on the current machine.""" + + if ( + not torch.cuda.is_available() + or torch.cuda.get_device_capability()[0] not in BLACKWELL_SM_IDS + ): + return False + + try: + import fouroversix._C # noqa: F401 + except ModuleNotFoundError: + return False + + return True + + @classmethod + def is_supported(cls, x: torch.Tensor, config: QuantizationConfig) -> bool: + """ + Return True if the CUDA backend supports the given input and quantization + configuration. + """ + + if not super().is_supported(x, config): + return False + + return ( + x.device.type == "cuda" + and x.dtype in {torch.float16, torch.bfloat16} + and config.round_style == RoundStyle.nearest + and config.dtype == DataType.nvfp4 + and not config.transpose + ) + + @classmethod + def quantize_to_fp4( + cls, + x: torch.Tensor, + config: QuantizationConfig, + ) -> QuantizedTensor: + """ + Quantize a tensor to FP4 using the CUDA backend. + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration. + + Returns: + The quantized tensor. + + """ + + from .ops import quantize_to_fp4 + + values, scale_factors, amax = quantize_to_fp4( + x, + config.dtype == DataType.nvfp4, + config.round_style == RoundStyle.nearest, + config.rht, + config.block_scale_2d, + config.transpose, + config.scale_rule.cuda_id(), + 0, + ) + + return QuantizedTensor( + values, + scale_factors, + amax, + config.dtype, + (x.shape[1], x.shape[0]) if config.transpose else x.shape, + config.scale_rule, + ) \ No newline at end of file diff --git a/fouroversix/src/fouroversix/quantize/cuda/ops.py b/fouroversix/src/fouroversix/quantize/cuda/ops.py new file mode 100644 index 0000000..d7a0844 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/cuda/ops.py @@ -0,0 +1,46 @@ +import torch +import fouroversix._C # noqa: F401 + +def quantize_to_fp4( + x: torch.Tensor, + is_nvfp4: bool, # noqa: FBT001 + is_rtn: bool, # noqa: FBT001 + is_rht: bool, # noqa: FBT001 + is_2d: bool, # noqa: FBT001 + is_transpose: bool, # noqa: FBT001 + selection_rule: int, + rbits: int, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + + return torch.ops.fouroversix.quantize_to_fp4.default( + x, + is_nvfp4, + is_rtn, + is_rht, + is_2d, + is_transpose, + selection_rule, + rbits, + ) + +@torch.library.register_fake("fouroversix::quantize_to_fp4") +def _( + x: torch.Tensor, + is_nvfp4: bool, # noqa: FBT001 + is_rtn: bool, # noqa: ARG001, FBT001 + is_rht: bool, # noqa: ARG001, FBT001 + is_2d: bool, # noqa: ARG001, FBT001 + is_transpose: bool, # noqa: ARG001, FBT001 + selection_rule: int, # noqa: ARG001 + rbits: int, # noqa: ARG001 + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + + return ( + torch.empty(x.shape[0], x.shape[1] // 2, dtype=torch.uint8, device=x.device), + torch.empty( + x.shape[0] * x.shape[1] // (16 if is_nvfp4 else 32), + dtype=torch.float8_e4m3fn if is_nvfp4 else torch.float8_e8m0fnu, + device=x.device, + ), + torch.empty(1, dtype=torch.float32, device=x.device), + ) \ No newline at end of file diff --git a/fouroversix/src/fouroversix/quantize/frontend.py b/fouroversix/src/fouroversix/quantize/frontend.py new file mode 100644 index 0000000..f5b9f00 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/frontend.py @@ -0,0 +1,122 @@ +import torch +from fouroversix.utils import QuantizeBackend + +from .config import QuantizationConfig +from .cuda import CUDAQuantizeBackend +from .pytorch import PyTorchQuantizeBackend +from .quantized_tensor import QuantizedTensor +from .transformer_engine import TransformerEngineQuantizeBackend +from .triton import TritonQuantizeBackend + +AVAILABLE_BACKENDS = { + QuantizeBackend.cuda: CUDAQuantizeBackend, + QuantizeBackend.transformer_engine: TransformerEngineQuantizeBackend, + QuantizeBackend.triton: TritonQuantizeBackend, + QuantizeBackend.pytorch: PyTorchQuantizeBackend, +} + + +def quantize_to_fp4( + x: torch.Tensor, + config: QuantizationConfig | None = None, +) -> QuantizedTensor: + """ + Quantize a tensor to FP4. + + ## Sample Code + + ### With Four Over Six + + ```python + x = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + x_quantized = quantize_to_fp4(x) + ``` + + ### Without Four Over Six + + ```python + x = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + config = QuantizationConfig(scale_rule="static_6") + x_quantized = quantize_to_fp4(x, config) + ``` + + ### With Stochastic Rounding + + ```python + x = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + config = QuantizationConfig(round_style="stochastic") + x_quantized = quantize_to_fp4(x, config) + ``` + + ### With the Random Hadamard Transform + + ```python + from fouroversix.quantize import get_rht_matrix + + x = torch.tensor(1024, 1024, dtype=torch.bfloat16, device="cuda") + config = QuantizationConfig(rht=True) + x_quantized = quantize_to_fp4(x, config) + ``` + + ## Backends + + We provide three different implementations of FP4 quantization: + + - **CUDA**: A fast implementation written in CUDA which currently only supports + basic quantization options (no 2D block scaling, no stochastic rounding, no + random Hadamard transform). Can be used for inference, but not training. + Requires a Blackwell GPU. + - **Triton**: A slightly slower implementation written in Triton which supports all + operations needed for training. Also requires a Blackwell GPU. + - **PyTorch**: A slow implementation written in PyTorch which supports all + operations and can be run on any GPU. + + If `quantize_to_fp4` is called with `backend=None`, a backend will be selected + automatically based on the following rules: + + - If there is no GPU available, or if the available GPU is not a Blackwell GPU, + select PyTorch. + - If any quantization options are set other than `scale_rule`, select Triton. + - However, if the available GPU is SM120 (i.e. RTX 5090, RTX 6000) and + `round_style` is set to `RoundStyle.stochastic`, select PyTorch as + stochastic rounding does not have hardware support on SM120 GPUs. + - Otherwise, select CUDA. + + ## Parameters + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration to use. If no + configuration is provided, a default configuration will be used (NVFP4, + 1D block scaling, round-to-nearest, and 4/6 with the MSE selection rule). + + Returns: + The quantized tensor. + + """ + + if config is None: + config = QuantizationConfig() + + selected_backend = config.backend + + if selected_backend is None: + for backend in [ + QuantizeBackend.cuda, + QuantizeBackend.triton, + QuantizeBackend.pytorch, + ]: + if AVAILABLE_BACKENDS[backend] is not None and AVAILABLE_BACKENDS[ + backend + ].is_supported(x, config): + selected_backend = backend + break + else: + msg = "No backend found that supports the given parameters" + raise ValueError(msg) + + elif not AVAILABLE_BACKENDS[selected_backend].is_supported(x, config): + msg = f"Backend {selected_backend} does not support the given parameters" + raise ValueError(msg) + + return AVAILABLE_BACKENDS[selected_backend].quantize_to_fp4(x, config) diff --git a/fouroversix/src/fouroversix/quantize/pytorch/__init__.py b/fouroversix/src/fouroversix/quantize/pytorch/__init__.py new file mode 100644 index 0000000..b0d51dc --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/pytorch/__init__.py @@ -0,0 +1,3 @@ +from .backend import PyTorchQuantizeBackend + +__all__ = ["PyTorchQuantizeBackend"] diff --git a/fouroversix/src/fouroversix/quantize/pytorch/backend.py b/fouroversix/src/fouroversix/quantize/pytorch/backend.py new file mode 100644 index 0000000..0ced49e --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/pytorch/backend.py @@ -0,0 +1,112 @@ +import torch +import torch.nn.functional as F +from fouroversix.quantize.backend import QuantizeBackendBase +from fouroversix.quantize.config import QuantizationConfig +from fouroversix.quantize.quantized_tensor import QuantizedTensor +from fouroversix.quantize.utils import get_rht_matrix + +from .reference import quantize_to_fp4 + + +class PyTorchQuantizeBackend(QuantizeBackendBase): + """ + The PyTorch quantization backend. Supports all quantization options, and can be run + on non-Blackwell GPUs, but is slow. Should be used primarily as a reference. + """ + + @classmethod + def is_available(cls) -> bool: + """Return True if the PyTorch backend is available on the current machine.""" + return True + + @classmethod + def is_supported( + cls, + x: torch.Tensor, # noqa: ARG003 + config: QuantizationConfig, # noqa: ARG003 + ) -> bool: + """ + Return True if the PyTorch backend supports the given input and quantization + configuration. + """ + + return True + + @classmethod + def quantize_to_fp4( + cls, + x: torch.Tensor, + config: QuantizationConfig, + ) -> QuantizedTensor: + """ + Quantize a tensor to FP4 using the PyTorch backend. + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration. + + Returns: + The quantized tensor. + + """ + + input_shape = (x.shape[1], x.shape[0]) if config.transpose else x.shape + + rows_div = 128 + cols_div = 4 * config.dtype.block_size() + + if input_shape[0] % rows_div != 0 or input_shape[1] % cols_div != 0: + x = F.pad( + x, + ( + 0, + ( + cols_div - (input_shape[1] % cols_div) + if input_shape[1] % cols_div > 0 + else 0 + ), + 0, + ( + rows_div - (input_shape[0] % rows_div) + if input_shape[0] % rows_div > 0 + else 0 + ), + ), + ) + + if x.device.type == "meta": + values = torch.zeros( + input_shape[0], + input_shape[1] // 2, + device=x.device, + dtype=torch.uint8, + ) + scale_factors = torch.zeros( + input_shape[0] * input_shape[1] // config.dtype.block_size(), + device=x.device, + dtype=( + torch.uint8 + if config.dtype.scale_dtype() == torch.float8_e8m0fnu + else config.dtype.scale_dtype() + ), + ) + amax = torch.zeros(1, device=x.device, dtype=torch.float32) + else: + values, scale_factors, amax = quantize_to_fp4( + x, + had=get_rht_matrix() if config.rht else None, + fp4_format=config.dtype, + round_style=config.round_style, + scale_rule=config.scale_rule, + block_scale_2d=config.block_scale_2d, + transpose=config.transpose, + ) + + return QuantizedTensor( + values, + scale_factors, + amax, + config.dtype, + input_shape, + config.scale_rule, + ) diff --git a/fouroversix/src/fouroversix/quantize/pytorch/reference.py b/fouroversix/src/fouroversix/quantize/pytorch/reference.py new file mode 100644 index 0000000..66852ca --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/pytorch/reference.py @@ -0,0 +1,368 @@ +from __future__ import annotations + +import torch +from fouroversix.quantize.utils import to_blocked +from fouroversix.utils import DataType, RoundStyle, ScaleRule + +E2M1_MAX_VALUE = 6 +E2M1_MAX_FOUR = 4 +E4M3_MAX_VALUE = 448 +E4M3_MAX_FOUROVERSIX = 256 + + +def fake_quantize_to_e2m1( + x: torch.Tensor, + *, + round_style: RoundStyle = RoundStyle.nearest, +) -> torch.Tensor: + if round_style == RoundStyle.nearest: + step1 = torch.round(2 * x.abs()) / 2 + step2 = torch.round(x.abs()) + step3 = 2 * torch.round(x.abs() / 2) + elif round_style == RoundStyle.stochastic: + rbits = torch.rand_like(x.abs()) - 0.5 + step1 = torch.round(2 * x.abs() + rbits) / 2 + step2 = torch.round(x.abs() + rbits) + step3 = 2 * torch.round(x.abs() / 2 + rbits) + step3[step3 > E2M1_MAX_VALUE] = E2M1_MAX_VALUE + + mask1 = x.abs() < 2 # noqa: PLR2004 + mask2 = x.abs() < 4 # noqa: PLR2004 + + return x.sign() * ( + step1 * mask1 + step2 * (~mask1) * mask2 + step3 * (~mask1) * (~mask2) + ) + + +def quantize_bf16_to_unpacked_fp4(x: torch.Tensor) -> torch.Tensor: + assert x.dtype == torch.bfloat16 + + bx = x.view(torch.int16) + s = (bx >> 15) & 0x1 + e = (bx >> 7) & 0xFF + m = bx & 0x7F + is_zero = (e == 0) & (m == 0) + + # Default mantissa bit (for 1.5, 3.0, 6.0) + m = (m >> 6) & 1 + is_half = (e == 126) & (m == 0) # noqa: PLR2004 + m = torch.where(is_half, torch.tensor(1, dtype=torch.int16, device=x.device), m) + + # Exponent mapping + # exp=126 -> E=0 (subnormals) + # exp=127 -> E=1 + # exp=128 -> E=2 + # exp=129 -> E=3 + e = e - 126 + e = torch.where(is_zero, torch.tensor(0, dtype=torch.int16, device=x.device), e) + + # Zero always M=0 + m = torch.where(is_zero, torch.tensor(0, dtype=torch.int16, device=x.device), m) + + code = (s << 3) | (e << 1) | m + return code.to(torch.uint8) + + +def pack_unpacked_fp4(x: torch.Tensor) -> torch.Tensor: + assert x.dtype == torch.uint8 + + dim = 1 + size_along_dim = x.size(dim) + new_size_along_dim = (size_along_dim + 1) // 2 + + # If the size is odd, we pad the data along dim with zeros at the end + if size_along_dim % 2 != 0: + pad_sizes = [0] * (2 * x.ndim) + pad_index = (x.ndim - dim - 1) * 2 + 1 + pad_sizes[pad_index] = 1 + x = torch.nn.functional.pad(x, pad_sizes, mode="constant", value=0) + + new_shape = list(x.shape) + new_shape[dim] = new_size_along_dim + new_shape.insert(dim + 1, 2) # packed dimension of length 2 + x = x.reshape(*new_shape) + + low = x.select(dim + 1, 0) + high = x.select(dim + 1, 1) + return (high << 4) | low + + +def quantize_to_mxfp4( + x_scale_blocks: torch.Tensor, + *, + scale_rule: ScaleRule = ScaleRule.mse, +) -> tuple[torch.Tensor, torch.Tensor]: + assert scale_rule in {ScaleRule.static_6, ScaleRule.static_4} + + x_scales_hp = ( + x_scale_blocks.abs().max(axis=-1).values / scale_rule.max_allowed_e2m1_value() + ) + + x_scales_e8m0_u32 = x_scales_hp.view(torch.int32) + + # Use the 8-bit exponent as the scale factor + x_scales_e8m0 = ((x_scales_e8m0_u32 >> 23) & 0xFF).to(torch.uint8) + + # Add one in order to round up + x_scales = torch.where( + (x_scales_e8m0_u32 & 0x7FFFFF) == 0, + x_scales_e8m0, + x_scales_e8m0 + 1, + ) + + # Convert the rounded-up scale factor back to a 32-bit float + x_scales_hp = (x_scales.to(torch.int32) << 23).view(torch.float32) + + x_block_scaled = x_scale_blocks / x_scales_hp.unsqueeze(1) + + return x_block_scaled, x_scales.view(torch.float8_e8m0fnu) + + +def quantize_to_nvfp4( + x_scale_blocks: torch.Tensor, + x_amax: torch.Tensor, + *, + scale_rule: ScaleRule, + scale_expansion_factor: float | None = None, +) -> tuple[torch.Tensor, torch.Tensor]: + if x_amax == 0: + x_scales_hp = torch.zeros( + *x_scale_blocks.shape[:-1], + dtype=x_amax.dtype, + device=x_amax.device, + ) + else: + encode_scale = ( + torch.tensor( + scale_rule.max_allowed_e2m1_value() + * scale_rule.max_allowed_e4m3_value(), + dtype=x_amax.dtype, + device=x_amax.device, + ) + / x_amax + ) + x_scales_hp = ( + x_scale_blocks.abs().max(axis=-1).values + / torch.tensor( + scale_rule.max_allowed_e2m1_value(), + dtype=x_amax.dtype, + device=x_amax.device, + ) + * encode_scale + ) + + if scale_expansion_factor is not None: + x_scales_hp = x_scales_hp * scale_expansion_factor + + x_scales = x_scales_hp.to(torch.float8_e4m3fn) + + decode_scale = 1 / ( + torch.tensor( + scale_rule.max_allowed_e2m1_value() * scale_rule.max_allowed_e4m3_value(), + dtype=x_amax.dtype, + device=x_amax.device, + ) + / x_amax + ) + x_block_scaled = torch.where( + x_scales.unsqueeze(1) != 0, + x_scale_blocks * (1 / (decode_scale * x_scales.to(x_amax.dtype).unsqueeze(1))), + 0, + ) + + return x_block_scaled, x_scales + + +def select_fouroversix( + x_scale_blocks: torch.Tensor, + x_block_scaled_6: torch.Tensor, + scales_6: torch.Tensor, + x_block_scaled_4: torch.Tensor, + scales_4: torch.Tensor, + x_amax: torch.Tensor, + *, + scale_rule: ScaleRule = ScaleRule.mse, + round_style: RoundStyle = RoundStyle.nearest, +) -> tuple[torch.Tensor, torch.Tensor]: + x_fake_quantized_6 = fake_quantize_to_e2m1( + x_block_scaled_6, + round_style=round_style, + ) + x_fake_quantized_4 = fake_quantize_to_e2m1( + x_block_scaled_4, + round_style=round_style, + ) + + x_dequantized_6 = ( + x_fake_quantized_6.to(x_amax.dtype) + * scales_6.unsqueeze(1).to(x_amax.dtype) + * x_amax + / torch.tensor( + E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, + dtype=x_amax.dtype, + device=x_amax.device, + ) + ) + x_dequantized_4 = ( + x_fake_quantized_4.to(x_amax.dtype) + * scales_4.unsqueeze(1).to(x_amax.dtype) + * x_amax + / torch.tensor( + E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, + dtype=x_amax.dtype, + device=x_amax.device, + ) + ) + + if scale_rule == ScaleRule.abs_max: + x_error_4 = (x_dequantized_4 - x_scale_blocks).abs().max(axis=-1).values + x_error_6 = (x_dequantized_6 - x_scale_blocks).abs().max(axis=-1).values + elif scale_rule == ScaleRule.mae: + x_error_4 = (x_dequantized_4 - x_scale_blocks).abs().sum(axis=-1) + x_error_6 = (x_dequantized_6 - x_scale_blocks).abs().sum(axis=-1) + elif scale_rule == ScaleRule.mse: + x_error_4 = ((x_dequantized_4 - x_scale_blocks) ** 2).sum(axis=-1) + x_error_6 = ((x_dequantized_6 - x_scale_blocks) ** 2).sum(axis=-1) + + select_4 = (x_error_4 < x_error_6).unsqueeze(1) + x_fake_quantized = torch.where( + select_4, + x_fake_quantized_4.reshape(x_scale_blocks.shape[0], -1), + x_fake_quantized_6.reshape(x_scale_blocks.shape[0], -1), + ) + scales = torch.where( + select_4, + scales_4.reshape(-1, 1), + scales_6.reshape(-1, 1), + ) + + return x_fake_quantized, scales + + +def quantize_to_fp4( + x: torch.Tensor, + x_amax: torch.Tensor | None = None, + had: torch.Tensor | None = None, + *, + block_scale_2d: bool = False, + fp4_format: DataType = DataType.nvfp4, + round_style: RoundStyle = RoundStyle.nearest, + scale_rule: ScaleRule = ScaleRule.mse, + transpose: bool = False, +) -> ( + tuple[torch.Tensor, torch.Tensor, torch.Tensor | None] + | tuple[torch.Tensor, torch.Tensor, torch.Tensor | None, torch.Tensor] +): + if transpose: + x = x.T + + if had is not None: + x = (x.reshape(-1, had.shape[0]) @ had).reshape_as(x) + + if x_amax is None: + x_amax = ( + torch.ones(1, device=x.device, dtype=x.dtype) + if fp4_format == DataType.mxfp4 + else x.abs().max().float() + ) + + if block_scale_2d: + assert x.ndim == 2 # noqa: PLR2004 + assert x.shape[1] % fp4_format.block_size() == 0 + + x_scale_blocks = ( + x.reshape( + -1, + fp4_format.block_size(), + x.shape[1] // fp4_format.block_size(), + fp4_format.block_size(), + ) + .permute(0, 2, 1, 3) + .reshape(-1, fp4_format.block_size() ** 2) + .float() + ) + else: + x_scale_blocks = x.reshape(-1, fp4_format.block_size()).float() + + x_fake_quantized = None + + if fp4_format == DataType.mxfp4: + x_block_scaled, scales = quantize_to_mxfp4( + x_scale_blocks, + scale_rule=scale_rule, + ) + elif fp4_format == DataType.nvfp4 and scale_rule in { + ScaleRule.static_6, + ScaleRule.static_4, + }: + x_block_scaled, scales = quantize_to_nvfp4( + x_scale_blocks, + x_amax, + scale_rule=scale_rule, + ) + elif fp4_format == DataType.nvfp4: # Four over six + x_block_scaled_6, scales_6 = quantize_to_nvfp4( + x_scale_blocks, + x_amax, + scale_rule=scale_rule, + ) + x_block_scaled_4, scales_4 = quantize_to_nvfp4( + x_scale_blocks, + x_amax, + scale_rule=scale_rule, + scale_expansion_factor=1.5, + ) + x_fake_quantized, scales = select_fouroversix( + x_scale_blocks, + x_block_scaled_6, + scales_6, + x_block_scaled_4, + scales_4, + x_amax, + scale_rule=scale_rule, + round_style=round_style, + ) + else: + msg = f"Invalid FP4 format: {fp4_format}" + raise ValueError(msg) + + if x_fake_quantized is None: + x_fake_quantized = fake_quantize_to_e2m1( + x_block_scaled, + round_style=round_style, + ) + + if block_scale_2d: + x_fake_quantized = x_fake_quantized.reshape( + -1, + x.shape[1] // fp4_format.block_size(), + fp4_format.block_size(), + fp4_format.block_size(), + ).permute(0, 2, 1, 3) + + scales = ( + scales.reshape( + 1, + x.shape[0] // fp4_format.block_size(), + x.shape[1] // fp4_format.block_size(), + ) + .broadcast_to( + fp4_format.block_size(), + x.shape[0] // fp4_format.block_size(), + x.shape[1] // fp4_format.block_size(), + ) + .permute(1, 0, 2) + ) + + x_quantized = pack_unpacked_fp4( + quantize_bf16_to_unpacked_fp4(x_fake_quantized.bfloat16().reshape_as(x)), + ) + + reshaped_scales = to_blocked( + scales.reshape( + x.shape[0], + x.shape[1] // fp4_format.block_size(), + ), + ) + + return x_quantized, reshaped_scales, x_amax diff --git a/fouroversix/src/fouroversix/quantize/quantized_tensor.py b/fouroversix/src/fouroversix/quantize/quantized_tensor.py new file mode 100644 index 0000000..03b9a60 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/quantized_tensor.py @@ -0,0 +1,248 @@ +from dataclasses import dataclass + +import torch +import torch.nn.functional as F +from fouroversix.utils import DataType, ScaleRule + +from .utils import to_blocked + + +def from_blocked(a: torch.Tensor, orig_shape: tuple[int, int]) -> torch.Tensor: + rows, cols = orig_shape + return ( + a.view(-1, 32, 4, 4) + .transpose(1, 2) + .reshape(-1, cols // 4, 128, 4) + .transpose(1, 2) + .reshape(rows, cols) + ) + + +def convert_e2m1_to_fp8_e4m3(x: torch.Tensor) -> torch.Tensor: + sign = (x >> 3) & 0x1 + exponent = (x >> 1) & 0x3 + mantissa = x & 0x1 + + # Make adjustments + new_exponent = torch.where( + (exponent == 0) & (mantissa == 0), + 0, + (exponent + 6) & 0xF, + ) + new_mantissa = torch.where(exponent == 0, 0, mantissa << 2) + + return ((sign << 7) | (new_exponent << 3) | new_mantissa).view(torch.float8_e4m3fn) + + +def unpack_packed_fp4( + x: torch.Tensor, + to_dtype: torch.dtype = torch.float8_e4m3fn, +) -> torch.Tensor: + if to_dtype == torch.float8_e4m3fn: + convert_function = convert_e2m1_to_fp8_e4m3 + else: + msg = f"Unsupported dtype: {to_dtype}" + raise ValueError(msg) + + high = (x >> 4) & 0xF + low = x & 0xF + + return torch.stack( + [convert_function(low), convert_function(high)], + dim=-1, + ).reshape(x.shape[0], x.shape[1] * 2) + + +@dataclass +class QuantizedTensor: + """A quantized tensor.""" + + values: torch.Tensor + scale_factors: torch.Tensor + amax: torch.Tensor + + dtype: DataType + original_shape: tuple[int, int] + scale_rule: ScaleRule + + padded_shape: tuple[int, int] + + def __init__( + self, + values: torch.Tensor, + scale_factors: torch.Tensor, + amax: torch.Tensor, + dtype: DataType, + original_shape: tuple[int, int], + scale_rule: ScaleRule, + padded_shape: tuple[int, int] | None = None, + ) -> None: + super().__init__() + + if isinstance(dtype, str): + dtype = DataType(dtype) + + if isinstance(original_shape, torch.Size): + original_shape = tuple(original_shape) + + if isinstance(scale_rule, str): + scale_rule = ScaleRule(scale_rule) + + if isinstance(padded_shape, torch.Size): + padded_shape = tuple(padded_shape) + + self.dtype = dtype + self.original_shape = original_shape + self.scale_rule = scale_rule + self.padded_shape = padded_shape + + if self.padded_shape is None: + rows_div = 128 + + # The scale factor layout requires 4 blocks along the K dimension for both + # MXFP4 and NVFP4. See: + # https://docs.nvidia.com/cutlass/latest/media/docs/cpp/blackwell_functionality.html#scale-factor-layouts + cols_div = 4 * dtype.block_size() + + self.padded_shape = ( + original_shape[0] + + (rows_div - original_shape[0] % rows_div) % rows_div, + original_shape[1] + + (cols_div - original_shape[1] % cols_div) % cols_div, + ) + + expected_packed_elements = self.padded_shape[0] * self.padded_shape[1] // 2 + expected_scale_factors = expected_packed_elements * 2 // dtype.block_size() + + if values.numel() != expected_packed_elements: + values = F.pad( + values, + ( + 0, + # Divide by 2 because these are packed values + self.padded_shape[1] // 2 - values.shape[1], + 0, + self.padded_shape[0] - values.shape[0], + ), + ) + + # If the scale factors are 1D, we assume that they are already in the + # correct layout for Blackwell. See: + # https://docs.nvidia.com/cutlass/latest/media/docs/cpp/blackwell_functionality.html#scale-factor-layouts + if ( + scale_factors.ndim > 1 + and scale_factors.numel() != expected_scale_factors + ): + scale_factors = F.pad( + scale_factors, + ( + 0, + ( + self.padded_shape[1] // dtype.block_size() + - scale_factors.shape[1] + ), + 0, + self.padded_shape[0] - scale_factors.shape[0], + ), + value=0 if dtype == DataType.nvfp4 else 1, + ) + + scale_factors = to_blocked(scale_factors) + + if values.numel() != expected_packed_elements: + msg = ( + f"Expected {expected_packed_elements} e2m1 values, got " + f"{values.numel()}" + ) + raise ValueError(msg) + + if scale_factors.numel() != expected_scale_factors: + msg = ( + f"Expected {expected_scale_factors} scale factors, got " + f"{scale_factors.numel()}" + ) + raise ValueError(msg) + # preprocess scale_factors + # padded_shape = self.padded_shape + # scales_2d = from_blocked( + # scale_factors, + # (padded_shape[0], padded_shape[1] // 16), + # ) + + # # 2. 正确计算 global scale: amax / (max_e2m1 * max_e4m3) + # global_scale = amax / (6.0 * 256.0) + # global_scale = amax / ( + # self.scale_rule.max_allowed_e2m1_value() + # * self.scale_rule.max_allowed_e4m3_value() + # ) + + + self.values = values + self.scale_factors = scale_factors + self.amax = amax + + def dequantize(self, dtype: torch.dtype = torch.bfloat16) -> torch.Tensor: + """Return a high-precision tensor with the dequantized values (PyTorch impl).""" + + values = unpack_packed_fp4(self.values).to(dtype) + scales = from_blocked( + self.scale_factors, + ( + self.padded_shape[0], + self.padded_shape[1] // self.dtype.block_size(), + ), + ) + + result = values * scales.to(dtype).repeat_interleave( + self.dtype.block_size(), + -1, + ) + + if self.dtype == DataType.nvfp4 and self.amax is not None: + result = ( + result.to(torch.float32) + * self.amax + / ( + self.scale_rule.max_allowed_e2m1_value() + * self.scale_rule.max_allowed_e4m3_value() + ) + ).to(dtype) + + if result.shape != self.original_shape: + result = result[: self.original_shape[0], : self.original_shape[1]] + + return result + + def dequantize_triton(self, dtype: torch.dtype = torch.bfloat16) -> torch.Tensor: + """Return a high-precision tensor with the dequantized values (Triton kernel).""" + from utils.nvfp4_kernel import fp4_dequantize + + block_size = self.dtype.block_size() + + scales_2d = from_blocked( + self.scale_factors, + (self.padded_shape[0], self.padded_shape[1] // block_size), + ) + + global_scale = self.amax / ( + self.scale_rule.max_allowed_e2m1_value() + * self.scale_rule.max_allowed_e4m3_value() + ) + + result = fp4_dequantize( + self.values, + scales_2d, + global_scale, + block_size=block_size, + dtype=dtype, + ) + + if result.shape != self.original_shape: + result = result[: self.original_shape[0], : self.original_shape[1]] + + return result + + @property + def device(self) -> torch.device: + """Get device of the values in this tensor.""" + return self.values.device diff --git a/fouroversix/src/fouroversix/quantize/transformer_engine.py b/fouroversix/src/fouroversix/quantize/transformer_engine.py new file mode 100644 index 0000000..cd69b3d --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/transformer_engine.py @@ -0,0 +1,109 @@ +import functools + +import torch +from fouroversix.quantize.utils import to_blocked +from fouroversix.utils import BLACKWELL_SM_IDS, DataType, RoundStyle, ScaleRule + +from .backend import QuantizeBackendBase +from .config import QuantizationConfig +from .quantized_tensor import QuantizedTensor + + +class TransformerEngineQuantizeBackend(QuantizeBackendBase): + """ + A backend that quantizes inputs using NVIDIA's TransformerEngine. Used to debug + our implementations. + """ + + @classmethod + @functools.lru_cache + def is_available(cls) -> bool: + """ + Return True if the Transformer Engine backend is available on the current + machine. + """ + + if ( + not torch.cuda.is_available() + or torch.cuda.get_device_capability()[0] not in BLACKWELL_SM_IDS + ): + return False + + try: + import transformer_engine # noqa: F401 + except ModuleNotFoundError: + return False + + return True + + @classmethod + def is_supported(cls, x: torch.Tensor, config: QuantizationConfig) -> bool: + """ + Return True if the Transformer Engine backend supports the given input and + quantization configuration. + """ + + if not super().is_supported(x, config): + return False + + if config.dtype != DataType.nvfp4 or config.scale_rule != ScaleRule.static_6: + return False + + if not config.transpose and config.rht: + return False + + if config.transpose and config.rht and config.block_scale_2d: # noqa: SIM103 + return False + + return True + + @classmethod + def quantize_to_fp4( + cls, + x: torch.Tensor, + config: QuantizationConfig, + ) -> QuantizedTensor: + """ + Quantize a tensor to FP4 using the Transformer Engine backend. + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration. + + Returns: + The quantized tensor. + + """ + + from transformer_engine.pytorch.tensor.nvfp4_tensor import NVFP4Quantizer + + q = NVFP4Quantizer( + with_2d_quantization=config.block_scale_2d, + with_rht=config.rht, + with_post_rht_amax=config.rht, + stochastic_rounding=config.round_style == RoundStyle.stochastic, + ) + + out = q.quantize(x) + + if config.transpose: + values = out._columnwise_data # noqa: SLF001 + scale_factors = to_blocked( + out._columnwise_scale_inv.view(torch.float8_e4m3fn), # noqa: SLF001 + ) + amax = out._amax_columnwise # noqa: SLF001 + else: + values = out._rowwise_data # noqa: SLF001 + scale_factors = to_blocked( + out._rowwise_scale_inv.view(torch.float8_e4m3fn), # noqa: SLF001 + ) + amax = out._amax_rowwise # noqa: SLF001 + + return QuantizedTensor( + values, + scale_factors, + amax, + config.dtype, + (x.shape[1], x.shape[0]) if config.transpose else x.shape, + config.scale_rule, + ) diff --git a/fouroversix/src/fouroversix/quantize/triton/__init__.py b/fouroversix/src/fouroversix/quantize/triton/__init__.py new file mode 100644 index 0000000..438e9d0 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/triton/__init__.py @@ -0,0 +1,3 @@ +from .backend import TritonQuantizeBackend + +__all__ = ["TritonQuantizeBackend"] diff --git a/fouroversix/src/fouroversix/quantize/triton/backend.py b/fouroversix/src/fouroversix/quantize/triton/backend.py new file mode 100644 index 0000000..a76c7df --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/triton/backend.py @@ -0,0 +1,79 @@ +import functools + +import torch +from fouroversix.quantize.backend import QuantizeBackendBase +from fouroversix.quantize.config import QuantizationConfig +from fouroversix.quantize.quantized_tensor import QuantizedTensor +from fouroversix.quantize.utils import get_rht_matrix +from fouroversix.utils import BLACKWELL_SM_IDS, SM_100, RoundStyle + + +class TritonQuantizeBackend(QuantizeBackendBase): + """ + The Triton quantization backend. Supports all parameters required for efficient + NVFP4 training, including stochastic rounding, the random Hadamard transform, + transposed inputs, and 2D block scaling. Requires a Blackwell GPU. + """ + + @classmethod + @functools.lru_cache + def is_available(cls) -> bool: + """Return True if the Triton backend is available on the current machine.""" + return ( + torch.cuda.is_available() + and torch.cuda.get_device_capability()[0] in BLACKWELL_SM_IDS + ) + + @classmethod + def is_supported(cls, x: torch.Tensor, config: QuantizationConfig) -> bool: + """ + Return True if the Triton backend supports the given input and quantization + configuration. + """ + + if not super().is_supported(x, config): + return False + + if config.round_style == RoundStyle.stochastic: + return torch.cuda.get_device_capability()[0] == SM_100 + + return x.device.type == "cuda" + + @classmethod + def quantize_to_fp4( + cls, + x: torch.Tensor, + config: QuantizationConfig, + ) -> QuantizedTensor: + """ + Quantize a tensor to FP4 using the Triton backend. + + Args: + x (torch.Tensor): The input tensor to quantize. + config (QuantizationConfig): The quantization configuration. + + Returns: + The quantized tensor. + + """ + + from .kernel import quantize_to_fp4 + + values, scale_factors, amax = quantize_to_fp4( + x, + had=get_rht_matrix() if config.rht else None, + fp4_format=config.dtype, + round_style=config.round_style, + scale_rule=config.scale_rule, + block_scale_2d=config.block_scale_2d, + transpose=config.transpose, + ) + + return QuantizedTensor( + values, + scale_factors, + amax, + config.dtype, + (x.shape[1], x.shape[0]) if config.transpose else x.shape, + config.scale_rule, + ) diff --git a/fouroversix/src/fouroversix/quantize/triton/kernel.py b/fouroversix/src/fouroversix/quantize/triton/kernel.py new file mode 100644 index 0000000..f47efb9 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/triton/kernel.py @@ -0,0 +1,672 @@ +from __future__ import annotations + +import torch +import triton +import triton.language as tl +from fouroversix.utils import DataType, RoundStyle, ScaleRule +from triton.tools.tensor_descriptor import TensorDescriptor + +E2M1_MAX_VALUE = tl.constexpr(6) +E2M1_MAX_FOUR = tl.constexpr(4) +E4M3_MAX_VALUE = tl.constexpr(448) +E4M3_MAX_FOUROVERSIX = tl.constexpr(256) +SCALE_MEGABLOCK_SIZE = tl.constexpr(512) + +DATA_TYPE_MXFP4 = tl.constexpr(DataType.mxfp4.value) +DATA_TYPE_NVFP4 = tl.constexpr(DataType.nvfp4.value) + +ROUND_STYLE_NEAREST = tl.constexpr(RoundStyle.nearest.value) +ROUND_STYLE_STOCHASTIC = tl.constexpr(RoundStyle.stochastic.value) + +SCALE_RULE_ABS_MAX = tl.constexpr(ScaleRule.abs_max.value) +SCALE_RULE_STATIC_4 = tl.constexpr(ScaleRule.static_4.value) +SCALE_RULE_STATIC_6 = tl.constexpr(ScaleRule.static_6.value) +SCALE_RULE_MAE = tl.constexpr(ScaleRule.mae.value) +SCALE_RULE_MSE = tl.constexpr(ScaleRule.mse.value) + + +@triton.jit +def rht_kernel( + x_desc, + h_desc, + y_desc, + # Meta-parameters + # TODO(jack): Update RHT kernel to support unpadded dimensions + BLOCK_SIZE_M: tl.constexpr, + BLOCK_SIZE_N: tl.constexpr, + TRANSPOSE: tl.constexpr, +) -> None: + HAD_BLOCK_SIZE: tl.constexpr = h_desc.block_shape[0] + + pid_m = tl.program_id(0) + pid_n = tl.program_id(1) + + # Load H [B, B] + h_block = h_desc.load([0, 0]) + + m_block_offset = pid_m * BLOCK_SIZE_M + n_block_offset = pid_n * BLOCK_SIZE_N + + if not TRANSPOSE: + x_block = x_desc.load([m_block_offset, n_block_offset]) + else: + x_block = x_desc.load([n_block_offset, m_block_offset]).T + + y_block = tl.dot( + x_block.reshape( + BLOCK_SIZE_M * BLOCK_SIZE_N // HAD_BLOCK_SIZE, + HAD_BLOCK_SIZE, + ).to(tl.bfloat16), + h_block, + ).reshape(BLOCK_SIZE_M, BLOCK_SIZE_N) + + y_desc.store([m_block_offset, n_block_offset], y_block) + + +@triton.jit +def block_scaled_fp4_quantization_kernel( + x_block, + x_amax_ptr, + rbits_ptr, + BLOCK_SIZE_M: tl.constexpr, + BLOCK_SIZE_N: tl.constexpr, + FP4_FORMAT: tl.constexpr, + ROUND_STYLE: tl.constexpr, + BLOCK_SCALE_2D: tl.constexpr, + SCALE_RULE: tl.constexpr, +) -> None: + E2M1_MAX_ALLOWED_VALUE: tl.constexpr = ( + E2M1_MAX_VALUE if SCALE_RULE == SCALE_RULE_STATIC_6 else E2M1_MAX_FOUR + ) + + if FP4_FORMAT == DATA_TYPE_MXFP4: + x_scale_blocks = x_block.reshape(128, 4, 32) + x_scales_hp = tl.max(x_scale_blocks.abs(), axis=-1) / E2M1_MAX_ALLOWED_VALUE + x_scales_e8m0_u32 = x_scales_hp.cast(tl.uint32, bitcast=True) + + # Use the 8-bit exponent as the scale factor + x_scales_e8m0 = ((x_scales_e8m0_u32 >> 23) & 0xFF).to(tl.uint8) + + # Add one in order to round up + x_scales = tl.where( + (x_scales_e8m0_u32 & 0x7FFFFF) == 0, + x_scales_e8m0, + x_scales_e8m0 + 1, + ) + + # Convert the rounded-up scale factor back to a 32-bit float + x_scales_hp = (x_scales.cast(tl.uint32) << 23).cast(x_block.dtype, bitcast=True) + + if BLOCK_SCALE_2D: + x_scales_hp = ( + tl.max( + x_scales_hp.reshape(4, 32, 4).permute(0, 2, 1), + axis=-1, + ) + .expand_dims(0) + .broadcast_to(4, 32, 4) + .permute(1, 0, 2) + .reshape(128, 4) + ) + + (x_block_scaled_b1, x_block_scaled_b2) = ( + (x_scale_blocks / x_scales_hp.expand_dims(2)) + .reshape(BLOCK_SIZE_M, BLOCK_SIZE_N // 2, 2) + .split() + ) + elif FP4_FORMAT == DATA_TYPE_NVFP4: + x_amax = tl.load(x_amax_ptr) + x_scale_blocks = x_block.reshape(128, 4, 16) + + if x_amax == 0: + x_scales_hp = tl.full((128, 4), 0, dtype=tl.float32) + else: + encode_scale = tl.div_rn(E2M1_MAX_ALLOWED_VALUE * E4M3_MAX_VALUE, x_amax) + x_scales_hp = ( + tl.div_rn(tl.max(x_scale_blocks.abs(), axis=-1), E2M1_MAX_ALLOWED_VALUE) + * encode_scale + ) + + if BLOCK_SCALE_2D: + x_scales_hp = ( + tl.max( + x_scales_hp.reshape(8, 16, 4).permute(0, 2, 1), + axis=-1, + ) + .expand_dims(0) + .broadcast_to(16, 8, 4) + .permute(1, 0, 2) + .reshape(128, 4) + ) + + x_scales = x_scales_hp.to(tl.float8e4nv) + + decode_scale = tl.div_rn( + 1, + tl.div_rn(E2M1_MAX_ALLOWED_VALUE * E4M3_MAX_VALUE, x_amax), + ) + (x_block_scaled_b1, x_block_scaled_b2) = ( + tl.where( + x_scales.expand_dims(2).to(x_amax.dtype) != 0, + x_scale_blocks + * tl.div_rn(1, decode_scale * x_scales.to(x_amax.dtype).expand_dims(2)), + 0, + ) + .reshape(BLOCK_SIZE_M, BLOCK_SIZE_N // 2, 2) + .split() + ) + + if ROUND_STYLE == ROUND_STYLE_NEAREST: + x_e2m1 = tl.inline_asm_elementwise( + asm=""" + { + .reg .b8 byte0, byte1, byte2, byte3; + cvt.rn.satfinite.e2m1x2.f32 byte0, $5, $1; + cvt.rn.satfinite.e2m1x2.f32 byte1, $6, $2; + cvt.rn.satfinite.e2m1x2.f32 byte2, $7, $3; + cvt.rn.satfinite.e2m1x2.f32 byte3, $8, $4; + mov.b32 $0, {byte0, byte1, byte2, byte3}; + } + """, + constraints="=r,r,r,r,r,r,r,r,r", + args=[x_block_scaled_b1, x_block_scaled_b2], + dtype=tl.uint8, + is_pure=True, + pack=4, + ) + elif ROUND_STYLE == ROUND_STYLE_STOCHASTIC: + rbits = tl.randint( + tl.load(rbits_ptr), + tl.arange(0, BLOCK_SIZE_M)[:, None] * BLOCK_SIZE_N // 2 + + tl.arange(0, BLOCK_SIZE_N // 2)[None, :], + ).cast(tl.uint32, bitcast=True) + + x_e2m1 = tl.inline_asm_elementwise( + asm=""" + { + .reg .b16 tmp0, tmp1; + cvt.rs.satfinite.e2m1x4.f32 tmp0, {$6, $2, $5, $1}, $9; + cvt.rs.satfinite.e2m1x4.f32 tmp1, {$8, $4, $7, $3}, $10; + mov.b32 $0, {tmp0, tmp1}; + } + """, + constraints="=r,r,r,r,r,r,r,r,r,r,r,r,r", + args=[x_block_scaled_b1, x_block_scaled_b2, rbits], + dtype=tl.uint8, + is_pure=True, + pack=4, + ) + + return x_e2m1, x_scales.reshape(4, 32, 4).permute(1, 0, 2).ravel() + + +@triton.jit +def nvfp4_fouroversix_quantization_kernel( # noqa: C901, PLR0915 + x_block, + x_amax_ptr, + rbits_ptr, + BLOCK_SIZE_M: tl.constexpr, + BLOCK_SIZE_N: tl.constexpr, + ROUND_STYLE: tl.constexpr, + BLOCK_SCALE_2D: tl.constexpr, + SCALE_RULE: tl.constexpr, +) -> None: + x_amax = tl.load(x_amax_ptr) + x_scale_blocks = x_block.reshape(128, 4, 16) + + if x_amax == 0: + x_scales_hp = tl.full((128, 4), 0, dtype=tl.float32) + else: + encode_scale = tl.div_rn(E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, x_amax) + x_scales_hp = ( + tl.div_rn(tl.max(x_scale_blocks.abs(), axis=-1), E2M1_MAX_VALUE) + * encode_scale + ) + + if BLOCK_SCALE_2D: + x_scales_hp = ( + tl.max( + x_scales_hp.reshape(8, 16, 4).permute(0, 2, 1), + axis=-1, + ) + .expand_dims(0) + .broadcast_to(16, 8, 4) + .permute(1, 0, 2) + .reshape(128, 4) + ) + + x_scales_6 = x_scales_hp.to(tl.float8e4nv) + x_scales_4 = (x_scales_hp * 1.5).to(tl.float8e4nv) + + decode_scale = tl.div_rn( + 1, + tl.div_rn(E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, x_amax), + ) + + (x_block_scaled_6_b1, x_block_scaled_6_b2) = ( + tl.where( + x_scales_6.expand_dims(2).to(x_amax.dtype) != 0, + x_scale_blocks + * tl.div_rn(1, decode_scale * x_scales_6.to(x_amax.dtype).expand_dims(2)), + 0, + ) + .reshape(BLOCK_SIZE_M, BLOCK_SIZE_N // 2, 2) + .split() + ) + + (x_block_scaled_4_b1, x_block_scaled_4_b2) = ( + tl.where( + x_scales_4.expand_dims(2).to(x_amax.dtype) != 0, + x_scale_blocks + * tl.div_rn(1, decode_scale * x_scales_4.to(x_amax.dtype).expand_dims(2)), + 0, + ) + .reshape(BLOCK_SIZE_M, BLOCK_SIZE_N // 2, 2) + .split() + ) + + if ROUND_STYLE == ROUND_STYLE_NEAREST: + (x_e2m1_6, x_e2m1_4, x_fp16x2_6, x_fp16x2_4) = tl.inline_asm_elementwise( + asm=""" + { + .reg .b8 byte0, byte1, byte2, byte3; + + cvt.rn.satfinite.e2m1x2.f32 byte0, $28, $20; + cvt.rn.f16x2.e2m1x2 $4, byte0; + cvt.rn.satfinite.e2m1x2.f32 byte1, $29, $21; + cvt.rn.f16x2.e2m1x2 $5, byte1; + cvt.rn.satfinite.e2m1x2.f32 byte2, $30, $22; + cvt.rn.f16x2.e2m1x2 $6, byte2; + cvt.rn.satfinite.e2m1x2.f32 byte3, $31, $23; + cvt.rn.f16x2.e2m1x2 $7, byte3; + mov.b32 $0, {byte0, byte1, byte2, byte3}; + + cvt.rn.satfinite.e2m1x2.f32 byte0, $32, $24; + cvt.rn.f16x2.e2m1x2 $8, byte0; + cvt.rn.satfinite.e2m1x2.f32 byte1, $33, $25; + cvt.rn.f16x2.e2m1x2 $9, byte1; + cvt.rn.satfinite.e2m1x2.f32 byte2, $34, $26; + cvt.rn.f16x2.e2m1x2 $10, byte2; + cvt.rn.satfinite.e2m1x2.f32 byte3, $35, $27; + cvt.rn.f16x2.e2m1x2 $11, byte3; + mov.b32 $1, {byte0, byte1, byte2, byte3}; + + cvt.rn.satfinite.e2m1x2.f32 byte0, $44, $36; + cvt.rn.f16x2.e2m1x2 $12, byte0; + cvt.rn.satfinite.e2m1x2.f32 byte1, $45, $37; + cvt.rn.f16x2.e2m1x2 $13, byte1; + cvt.rn.satfinite.e2m1x2.f32 byte2, $46, $38; + cvt.rn.f16x2.e2m1x2 $14, byte2; + cvt.rn.satfinite.e2m1x2.f32 byte3, $47, $39; + cvt.rn.f16x2.e2m1x2 $15, byte3; + mov.b32 $2, {byte0, byte1, byte2, byte3}; + + cvt.rn.satfinite.e2m1x2.f32 byte0, $48, $40; + cvt.rn.f16x2.e2m1x2 $16, byte0; + cvt.rn.satfinite.e2m1x2.f32 byte1, $49, $41; + cvt.rn.f16x2.e2m1x2 $17, byte1; + cvt.rn.satfinite.e2m1x2.f32 byte2, $50, $42; + cvt.rn.f16x2.e2m1x2 $18, byte2; + cvt.rn.satfinite.e2m1x2.f32 byte3, $51, $43; + cvt.rn.f16x2.e2m1x2 $19, byte3; + mov.b32 $3, {byte0, byte1, byte2, byte3}; + } + """, + constraints="=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r", + args=[ + x_block_scaled_6_b1, + x_block_scaled_6_b2, + x_block_scaled_4_b1, + x_block_scaled_4_b2, + ], + dtype=(tl.uint8, tl.uint8, tl.uint32, tl.uint32), + is_pure=True, + pack=8, + ) + elif ROUND_STYLE == ROUND_STYLE_STOCHASTIC: + rbits = tl.randint( + tl.load(rbits_ptr), + tl.arange(0, BLOCK_SIZE_M)[:, None] * BLOCK_SIZE_N // 2 + + tl.arange(0, BLOCK_SIZE_N // 2)[None, :], + ).cast(tl.uint32, bitcast=True) + + (x_e2m1_6, x_e2m1_4, x_fp16x2_6, x_fp16x2_4) = tl.inline_asm_elementwise( + asm=""" + { + .reg .b16 tmp0, tmp1; + .reg .b8 byte0, byte1; + + cvt.rs.satfinite.e2m1x4.f32 tmp0, {$29, $21, $28, $20}, $52; + mov.b16 {byte1, byte0}, tmp0; + cvt.rn.f16x2.e2m1x2 $4, byte0; + cvt.rn.f16x2.e2m1x2 $5, byte1; + cvt.rs.satfinite.e2m1x4.f32 tmp1, {$31, $23, $30, $22}, $53; + mov.b16 {byte1, byte0}, tmp1; + cvt.rn.f16x2.e2m1x2 $6, byte0; + cvt.rn.f16x2.e2m1x2 $7, byte1; + mov.b32 $0, {tmp0, tmp1}; + + cvt.rs.satfinite.e2m1x4.f32 tmp0, {$33, $25, $32, $24}, $54; + mov.b16 {byte1, byte0}, tmp0; + cvt.rn.f16x2.e2m1x2 $8, byte0; + cvt.rn.f16x2.e2m1x2 $9, byte1; + cvt.rs.satfinite.e2m1x4.f32 tmp1, {$35, $27, $34, $26}, $55; + mov.b16 {byte1, byte0}, tmp1; + cvt.rn.f16x2.e2m1x2 $10, byte0; + cvt.rn.f16x2.e2m1x2 $11, byte1; + mov.b32 $1, {tmp0, tmp1}; + + cvt.rs.satfinite.e2m1x4.f32 tmp0, {$45, $37, $44, $36}, $56; + mov.b16 {byte1, byte0}, tmp0; + cvt.rn.f16x2.e2m1x2 $12, byte0; + cvt.rn.f16x2.e2m1x2 $13, byte1; + cvt.rs.satfinite.e2m1x4.f32 tmp1, {$47, $39, $46, $38}, $57; + mov.b16 {byte1, byte0}, tmp1; + cvt.rn.f16x2.e2m1x2 $14, byte0; + cvt.rn.f16x2.e2m1x2 $15, byte1; + mov.b32 $2, {tmp0, tmp1}; + + cvt.rs.satfinite.e2m1x4.f32 tmp0, {$49, $41, $48, $40}, $58; + mov.b16 {byte1, byte0}, tmp0; + cvt.rn.f16x2.e2m1x2 $16, byte0; + cvt.rn.f16x2.e2m1x2 $17, byte1; + cvt.rs.satfinite.e2m1x4.f32 tmp1, {$51, $43, $50, $42}, $59; + mov.b16 {byte1, byte0}, tmp1; + cvt.rn.f16x2.e2m1x2 $18, byte0; + cvt.rn.f16x2.e2m1x2 $19, byte1; + mov.b32 $3, {tmp0, tmp1}; + } + """, + constraints="=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,=r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r", + args=[ + x_block_scaled_6_b1, + x_block_scaled_6_b2, + x_block_scaled_4_b1, + x_block_scaled_4_b2, + rbits, + ], + dtype=(tl.uint8, tl.uint8, tl.uint32, tl.uint32), + is_pure=True, + pack=8, + ) + + x_fp16_6_lo = ( + (x_fp16x2_6 & 0xFFFF) + .cast(tl.uint16) + .cast(tl.float16, bitcast=True) + .cast(x_amax.dtype) + ) + x_fp16_6_hi = ( + (x_fp16x2_6 >> 16) + .cast(tl.uint16) + .cast(tl.float16, bitcast=True) + .cast(x_amax.dtype) + ) + x_hp_6 = tl.join(x_fp16_6_lo, x_fp16_6_hi).reshape(128, 4, 16) + + x_dequantized_6 = tl.div_rn( + x_hp_6 * x_scales_6.to(x_amax.dtype).expand_dims(2) * x_amax, + E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, + ) + + x_fp16_4_lo = ( + (x_fp16x2_4 & 0xFFFF) + .cast(tl.uint16) + .cast(tl.float16, bitcast=True) + .cast(x_amax.dtype) + ) + x_fp16_4_hi = ( + (x_fp16x2_4 >> 16) + .cast(tl.uint16) + .cast(tl.float16, bitcast=True) + .cast(x_amax.dtype) + ) + x_hp_4 = tl.join(x_fp16_4_lo, x_fp16_4_hi).reshape(128, 4, 16) + + x_dequantized_4 = tl.div_rn( + x_hp_4 * x_scales_4.to(x_amax.dtype).expand_dims(2) * x_amax, + E2M1_MAX_VALUE * E4M3_MAX_FOUROVERSIX, + ) + + diff_6 = x_dequantized_6 - x_scale_blocks + diff_4 = x_dequantized_4 - x_scale_blocks + + if SCALE_RULE == SCALE_RULE_ABS_MAX: + six_error = tl.max(tl.abs(diff_6), axis=-1) + four_error = tl.max(tl.abs(diff_4), axis=-1) + elif SCALE_RULE == SCALE_RULE_MAE: + six_error = tl.sum(tl.abs(diff_6), axis=-1) + four_error = tl.sum(tl.abs(diff_4), axis=-1) + elif SCALE_RULE == SCALE_RULE_MSE: + six_error = tl.sum(diff_6 * diff_6, axis=-1) + four_error = tl.sum(diff_4 * diff_4, axis=-1) + + if BLOCK_SCALE_2D: + six_error = six_error.reshape(8, 16, 4).permute(0, 2, 1) + four_error = four_error.reshape(8, 16, 4).permute(0, 2, 1) + + if SCALE_RULE == SCALE_RULE_ABS_MAX: + six_error = tl.max(six_error, axis=-1) + four_error = tl.max(four_error, axis=-1) + elif SCALE_RULE == SCALE_RULE_MAE or SCALE_RULE == SCALE_RULE_MSE: + six_error = tl.sum(six_error, axis=-1) + four_error = tl.sum(four_error, axis=-1) + + six_error = ( + six_error.expand_dims(0) + .broadcast_to(16, 8, 4) + .permute(1, 0, 2) + .reshape(128, 4) + ) + four_error = ( + four_error.expand_dims(0) + .broadcast_to(16, 8, 4) + .permute(1, 0, 2) + .reshape(128, 4) + ) + + x_e2m1 = tl.where( + (four_error < six_error).expand_dims(2), + x_e2m1_4.reshape(128, 4, 8), + x_e2m1_6.reshape(128, 4, 8), + ).reshape(128, 32) + + x_scales = ( + tl.where(four_error < six_error, x_scales_4, x_scales_6) + .reshape(4, 32, 4) + .permute(1, 0, 2) + .ravel() + ) + + return x_e2m1, x_scales + + +@triton.jit +def fp4_quantization_kernel( + x_desc, + x_amax_ptr, + x_e2m1_desc, + x_sf_desc, + rbits_ptr, + # Meta-parameters + BLOCK_SIZE_M: tl.constexpr, + BLOCK_SIZE_N: tl.constexpr, + TRANSPOSE: tl.constexpr, + FP4_FORMAT: tl.constexpr, + ROUND_STYLE: tl.constexpr, + BLOCK_SCALE_2D: tl.constexpr, + SCALE_RULE: tl.constexpr, +) -> None: + pid_m = tl.program_id(0) + pid_n = tl.program_id(1) + + m_block_offset = pid_m * BLOCK_SIZE_M + n_block_offset = pid_n * BLOCK_SIZE_N + + # Load [B, B] block from A or A^T + if not TRANSPOSE: + x_block = x_desc.load([m_block_offset, n_block_offset]) + else: + x_block = x_desc.load([n_block_offset, m_block_offset]).T + + x_block = x_block.to(tl.float32) + + if SCALE_RULE == SCALE_RULE_STATIC_6 or SCALE_RULE == SCALE_RULE_STATIC_4: + x_e2m1, x_scales = block_scaled_fp4_quantization_kernel( + x_block, + x_amax_ptr, + rbits_ptr, + BLOCK_SIZE_M, + BLOCK_SIZE_N, + FP4_FORMAT, + ROUND_STYLE, + BLOCK_SCALE_2D, + SCALE_RULE, + ) + else: + x_e2m1, x_scales = nvfp4_fouroversix_quantization_kernel( + x_block, + x_amax_ptr, + rbits_ptr, + BLOCK_SIZE_M, + BLOCK_SIZE_N, + ROUND_STYLE, + BLOCK_SCALE_2D, + SCALE_RULE, + ) + + e2m1_n_block_offset = pid_n * BLOCK_SIZE_N // 2 + x_e2m1_desc.store([m_block_offset, e2m1_n_block_offset], x_e2m1) + + scale_block_offset = (pid_m * tl.num_programs(1) + pid_n) * SCALE_MEGABLOCK_SIZE + x_sf_desc.store([scale_block_offset], x_scales) + + +def quantize_to_fp4( + x: torch.Tensor, + x_amax: torch.Tensor | None = None, + had: torch.Tensor | None = None, + *, + fp4_format: DataType = DataType.nvfp4, + round_style: RoundStyle = RoundStyle.nearest, + scale_rule: ScaleRule = ScaleRule.mse, + block_scale_2d: bool = False, + transpose: bool = False, +) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor | None]: + if transpose: + N, M = x.shape + else: + M, N = x.shape + + block_size_m = 128 + block_size_n = 4 * fp4_format.block_size() + scale_dtype = torch.float8_e4m3fn if fp4_format == DataType.nvfp4 else torch.uint8 + + if x_amax is None: + x_amax = ( + x.abs().max().float() + if fp4_format == DataType.nvfp4 + else torch.ones(1, device=x.device, dtype=torch.float32) + ) + + padded_m = M + (block_size_m - M % block_size_m) % block_size_m + padded_n = N + (block_size_n - N % block_size_n) % block_size_n + + x_e2m1 = torch.empty((padded_m, padded_n // 2), device=x.device, dtype=torch.uint8) + x_sf = torch.empty( + padded_m * padded_n // fp4_format.block_size(), + device=x.device, + dtype=scale_dtype, + ) + + grid = lambda _: ( # noqa: E731 + padded_m // block_size_m, + padded_n // block_size_n, + ) + + x_desc = TensorDescriptor.from_tensor( + x, + block_shape=[ + block_size_m if not transpose else block_size_n, + block_size_n if not transpose else block_size_m, + ], + ) + x_e2m1_desc = TensorDescriptor.from_tensor( + x_e2m1, + block_shape=[block_size_m, block_size_n // 2], + ) + x_sf_desc = TensorDescriptor.from_tensor( + x_sf, + block_shape=[SCALE_MEGABLOCK_SIZE.value], + ) + + if had is not None: + had_block_size = had.shape[0] + + if M % had_block_size != 0: + msg = ( + f"The first dimension of A ({M}) must be divisible by the width of H " + f"({had_block_size})" + ) + raise ValueError(msg) + if N % had_block_size != 0: + msg = ( + f"The second dimension of A ({N}) must be divisible by the width of H " + f"({had_block_size})" + ) + raise ValueError(msg) + if had.shape[0] != had.shape[1]: + msg = "H must be a square matrix" + raise ValueError(msg) + if (had.shape[0] & (had.shape[0] - 1)) != 0: + msg = "H must have dimensions that are a power of two" + raise ValueError(msg) + + x_rht = torch.empty((M, N), device=x.device, dtype=torch.bfloat16) + + h_desc = TensorDescriptor.from_tensor( + had, + block_shape=[had_block_size, had_block_size], + ) + x_rht_desc = TensorDescriptor.from_tensor( + x_rht, + block_shape=[block_size_m, block_size_n], + ) + + rht_kernel[grid]( + x_desc, + h_desc, + x_rht_desc, + BLOCK_SIZE_M=block_size_m, + BLOCK_SIZE_N=block_size_n, + TRANSPOSE=transpose, + ) + + transpose = False + x_amax = x_rht.abs().max().float() + + rbits = ( + torch.randint(0, torch.iinfo(torch.int32).max, (1,), device=x.device) + if round_style == RoundStyle.stochastic + else None + ) + + fp4_quantization_kernel[grid]( + x_rht_desc if had is not None else x_desc, + x_amax, + x_e2m1_desc, + x_sf_desc, + rbits, + BLOCK_SIZE_M=block_size_m, + BLOCK_SIZE_N=block_size_n, + TRANSPOSE=transpose, + FP4_FORMAT=fp4_format.value, + ROUND_STYLE=round_style.value, + BLOCK_SCALE_2D=block_scale_2d, + SCALE_RULE=scale_rule.value, + ) + + if fp4_format == DataType.mxfp4: + x_sf = x_sf.view(torch.float8_e8m0fnu) + + return x_e2m1, x_sf, x_amax diff --git a/fouroversix/src/fouroversix/quantize/utils.py b/fouroversix/src/fouroversix/quantize/utils.py new file mode 100644 index 0000000..a7720a4 --- /dev/null +++ b/fouroversix/src/fouroversix/quantize/utils.py @@ -0,0 +1,96 @@ +import functools +import math + +import torch + +""" +Credit: TransformerEngine +https://github.com/NVIDIA/TransformerEngine/blob/main/transformer_engine/pytorch/tensor/nvfp4_tensor.py +""" + +HADAMARD_DIMENSION = 16 + + +def get_no_random_sign_vector(device: int) -> torch.Tensor: + """Non-random sign vector for Hadamard transform.""" + return torch.tensor([1], dtype=torch.float32, device=device) + + +def get_wgrad_sign_vector(device: int) -> torch.Tensor: + """ + Hard-coded random signs for Hadamard transform. + + https://xkcd.com/221/ + + """ + return torch.tensor( + [1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, -1], + dtype=torch.float32, + device=device, + ) + + +def get_hadamard_matrix(hadamard_dimension: int, device: int) -> torch.Tensor: + """Construct a 16x16 Hadamard matrix.""" + + if hadamard_dimension != HADAMARD_DIMENSION: + msg = f"Only hadamard dimension {HADAMARD_DIMENSION} is supported." + raise ValueError(msg) + + hadamard_scale = 1 / math.sqrt(hadamard_dimension) + return ( + torch.tensor( + [ + [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1], + [1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1], + [1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1], + [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1], + [1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1], + [1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1], + [1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, -1], + [1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1], + [1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1], + [1, 1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, 1], + [1, -1, -1, 1, 1, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1], + [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1], + [1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1], + [1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1], + [1, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1], + ], + dtype=torch.float32, + device=device, + ) + * hadamard_scale + ) + + +@functools.cache +def get_rht_matrix( + *, + with_random_sign_mask: bool = True, + device: str | int = "cuda", +) -> torch.Tensor: + """Construct matrix used in random Hadamard transform.""" + if with_random_sign_mask: + signs = get_wgrad_sign_vector(device=device) + else: + signs = get_no_random_sign_vector(device=device) + sign_matrix = signs * torch.eye( + HADAMARD_DIMENSION, + dtype=torch.float32, + device=device, + ) + rht_matrix = sign_matrix @ get_hadamard_matrix(HADAMARD_DIMENSION, device=device) + return rht_matrix.to(dtype=torch.bfloat16) + + +def to_blocked(a: torch.Tensor) -> torch.Tensor: + return ( + a.view(a.shape[0] // 128, 128, a.shape[1] // 4, 4) + .transpose(1, 2) + .reshape(-1, 4, 32, 4) + .transpose(1, 2) + .reshape(-1, 32, 16) + .flatten() + ) diff --git a/fouroversix/src/fouroversix/utils.py b/fouroversix/src/fouroversix/utils.py new file mode 100644 index 0000000..c1516ba --- /dev/null +++ b/fouroversix/src/fouroversix/utils.py @@ -0,0 +1,134 @@ +from enum import Enum + +import torch + +SM_100 = 10 +SM_110 = 11 +SM_120 = 12 + +BLACKWELL_SM_IDS = {SM_100, SM_110, SM_120} + + +class DataType(str, Enum): + """Data types.""" + + bfloat16 = "bfloat16" + float16 = "float16" + float32 = "float32" + mxfp4 = "mxfp4" + nvfp4 = "nvfp4" + + def block_size(self) -> int | None: + """Return the block size if this a block-scaled format, or `None` otherwise.""" + + return { + DataType.mxfp4: 32, + DataType.nvfp4: 16, + }.get(self) + + def scale_dtype(self) -> torch.dtype | None: + """Return the scale dtype if this a block-scaled format, or `None` otherwise.""" + + return { + DataType.mxfp4: torch.float8_e8m0fnu, + DataType.nvfp4: torch.float8_e4m3fn, + }.get(self) + + def torch_dtype(self) -> torch.dtype | None: + """ + Return the corresponding torch.dtype if one is available, or `None` + otherwise. + """ + + return { + DataType.bfloat16: torch.bfloat16, + DataType.float16: torch.float16, + DataType.float32: torch.float32, + }.get(self) + + +class MatmulBackend(str, Enum): + """ + Backends for matrix multiplication with FP4. + + - `cutlass`: CUTLASS implementation. This requires a Blackwell GPU. + - `pytorch`: PyTorch implementation which first dequantizes the input tensors to + FP32 and then performs an FP32 matrix multiplication. + """ + + cutlass = "cutlass" + pytorch = "pytorch" + + +class QuantizeBackend(str, Enum): + """ + Backends for quantizing a tensor to NVFP4 or MXFP4. + + - `cuda`: CUDA implementation. Requires a Blackwell GPU, and currently only supports + the forward pass for PTQ (no stochastic rounding, no transposed matrices, no + RHT, no 2D block scaling). + - `pytorch`: PyTorch implementation. + - `triton`: Triton implementation. Requires a Blackwell GPU. + """ + + cuda = "cuda" + pytorch = "pytorch" + transformer_engine = "transformer_engine" + triton = "triton" + + +class RoundStyle(str, Enum): + """ + Rounding styles for quantization. + + - `nearest`: Round to the nearest FP4 value. + - `stochastic`: Round to the nearest FP4 value after applying random noise to each + value. + """ + + nearest = "nearest" + stochastic = "stochastic" + + +class ScaleRule(str, Enum): + """ + Block scale selection rules for NVFP4 quantization. + + - `abs_max`: Between 4 and 6, select the block scale that minimizes the maximum + absolute quantization error. + - `static_4`: Select 4 for all blocks. + - `static_6`: Select 6 for all blocks (normal NVFP4 quantization). + - `mae`: Between 4 and 6, select the block scale that minimizes the mean absolute + quantization error. + - `mse`: Between 4 and 6, select the block scale that minimizes the mean squared + quantization error. + """ + + abs_max = "abs_max" + mae = "mae" + mse = "mse" + static_4 = "static_4" + static_6 = "static_6" + + def cuda_id(self) -> int: + """ID for the rule in the CUDA implementation.""" + + return { + ScaleRule.abs_max: 4, + ScaleRule.mae: 2, + ScaleRule.mse: 3, + ScaleRule.static_4: 1, + ScaleRule.static_6: 0, + }[self] + + def is_static(self) -> bool: + """Return True if the rule is static, False otherwise.""" + return self in {ScaleRule.static_4, ScaleRule.static_6} + + def max_allowed_e2m1_value(self) -> int: + """Return the maximum allowed E2M1 value for the rule.""" + return 4 if self == ScaleRule.static_4 else 6 + + def max_allowed_e4m3_value(self) -> int: + """Return the maximum allowed E4M3 value for the rule.""" + return 448 if self in {ScaleRule.static_6, ScaleRule.static_4} else 256 diff --git a/fouroversix/src/fouroversix/weight_conversions/__init__.py b/fouroversix/src/fouroversix/weight_conversions/__init__.py new file mode 100644 index 0000000..070f516 --- /dev/null +++ b/fouroversix/src/fouroversix/weight_conversions/__init__.py @@ -0,0 +1,13 @@ +import warnings + +try: + from .conversions import WeightConversions + from .gpt_oss import FourOverSixGptOssDeserialize, GptOssWeightConverter +except ImportError: + warnings.warn("Install transformers>=5.0 to use weight conversions", stacklevel=2) + + WeightConversions = None + FourOverSixGptOssDeserialize = None + GptOssWeightConverter = None + +__all__ = ["FourOverSixGptOssDeserialize", "GptOssWeightConverter", "WeightConversions"] diff --git a/fouroversix/src/fouroversix/weight_conversions/conversions.py b/fouroversix/src/fouroversix/weight_conversions/conversions.py new file mode 100644 index 0000000..f597e2d --- /dev/null +++ b/fouroversix/src/fouroversix/weight_conversions/conversions.py @@ -0,0 +1,45 @@ +from collections.abc import Callable +from typing import ClassVar + +from transformers import WeightConverter + + +class WeightConversions: + """Base class for weight conversions for quantized models.""" + + _registry: ClassVar[dict[str, list[WeightConverter]]] = {} + + @classmethod + def register( + cls, + pre_quantized_model_config_type: str, + ) -> Callable[[type], list[WeightConverter]]: + """Register a new type of weight conversion.""" + if pre_quantized_model_config_type in cls._registry: + msg = f"Model with config {pre_quantized_model_config_type} is \ + already registered." + raise ValueError(msg) + + def inner_wrapper( + wrapped_cls: type, + ) -> list[WeightConverter]: + weight_conversions = wrapped_cls.get_weight_conversions() + cls._registry[pre_quantized_model_config_type] = weight_conversions + return weight_conversions + + return inner_wrapper + + @classmethod + def get_weight_conversions( + cls, + pre_quantized_model_config_type: str, + ) -> list[WeightConverter]: + """ + Get the weight conversion for a given model type determined + by the model config type. + """ + weight_conversions = cls._registry.get(pre_quantized_model_config_type, None) + if weight_conversions is None: + msg = f"Config type {pre_quantized_model_config_type} not supported." + raise ValueError(msg) + return weight_conversions diff --git a/fouroversix/src/fouroversix/weight_conversions/gpt_oss.py b/fouroversix/src/fouroversix/weight_conversions/gpt_oss.py new file mode 100644 index 0000000..3266095 --- /dev/null +++ b/fouroversix/src/fouroversix/weight_conversions/gpt_oss.py @@ -0,0 +1,99 @@ +import torch +from fouroversix import DataType, ScaleRule +from fouroversix.quantize import QuantizedTensor +from transformers import ConversionOps, GptOssConfig, WeightConverter + +from .conversions import WeightConversions + + +class FourOverSixGptOssDeserialize(ConversionOps): + """Fouroversix deserializer for gpt oss model.""" + + def __init__( + self, + dtype: DataType = None, + scale_rule: ScaleRule = None, + ) -> None: + self.dtype = dtype + self.scale_rule = scale_rule + + def convert( + self, + input_dict: torch.Tensor, + **kwargs, # noqa: ARG002, ANN003 + ) -> dict[str, list[torch.Tensor]]: + """ + Convert the quantized parameters in gpt oss model to + high precision weights. + """ + + prefix = "" + if ".down_proj_blocks" in input_dict: + weight = input_dict[".down_proj_blocks"][0] + scales = input_dict[".down_proj_scales"][0] + prefix = "down" + elif ".gate_up_proj_blocks" in input_dict: + weight = input_dict[".gate_up_proj_blocks"][0] + scales = input_dict[".gate_up_proj_scales"][0] + prefix = "gate_up" + + num_experts = weight.shape[0] + hidden_size = weight.shape[1] + weight = weight.reshape((num_experts, hidden_size, -1)) + + dequantized_proj = [] + for e in range(num_experts): + weight_uint8 = weight[e].to(torch.uint8) + quantized_tensor = QuantizedTensor( + values=weight_uint8, + scale_factors=scales[e].to(torch.uint8).view(self.dtype.scale_dtype()), + amax=torch.ones( + (1,), + device=weight[e].device, + dtype=torch.float32, + ), + dtype=self.dtype, + original_shape=( + weight[e].shape[0], + weight[e].shape[1] * 2, + ), + scale_rule=self.scale_rule, + ) + + dequantized = quantized_tensor.dequantize() + dequantized_proj.append(dequantized) + + dequantized_weight = torch.stack(dequantized_proj, dim=0) + + return {f"{prefix}_proj": [dequantized_weight]} + + +@WeightConversions.register(str(GptOssConfig)) +class GptOssWeightConverter: + """Stores the weight conversions for the gpt oss model.""" + + @classmethod + def get_weight_conversions(cls) -> list[WeightConverter]: + """Return weight conversions for the gpt oss model.""" + return [ + WeightConverter( + source_patterns=[".gate_up_proj_blocks", ".gate_up_proj_scales"], + target_patterns=".gate_up_proj", + operations=[ + FourOverSixGptOssDeserialize( + dtype=DataType.mxfp4, + scale_rule=ScaleRule.static_6, + ), + ], + ), + WeightConverter( + source_patterns=[".down_proj_blocks", ".down_proj_scales"], + target_patterns=".down_proj", + operations=[ + FourOverSixGptOssDeserialize( + dtype=DataType.mxfp4, + scale_rule=ScaleRule.static_6, + ), + ], + ), + ] diff --git a/fouroversix/tests/__init__.py b/fouroversix/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fouroversix/tests/test_correctness.py b/fouroversix/tests/test_correctness.py new file mode 100644 index 0000000..3fad9f5 --- /dev/null +++ b/fouroversix/tests/test_correctness.py @@ -0,0 +1,196 @@ +import itertools + +import pytest +import torch +from fouroversix import ( + DataType, + QuantizationConfig, + QuantizeBackend, + RoundStyle, + ScaleRule, + quantize_to_fp4, +) +from fouroversix.quantize.frontend import AVAILABLE_BACKENDS +from fouroversix.quantize.quantized_tensor import from_blocked + +MAE_MSE_MISMATCH_TOLERANCE = 1e-3 +NUM_RANDOM_SEEDS = 10 + + +@pytest.mark.parametrize("input_type", ["zeros", "ones", "rand01", "randn"]) +@pytest.mark.parametrize( + "input_shape", + [(1024, 1024), (1024, 512), (512, 1024)], +) +@pytest.mark.parametrize( + ("backend_a", "backend_b"), + itertools.combinations( + [ + QuantizeBackend.cuda, + QuantizeBackend.triton, + QuantizeBackend.pytorch, + QuantizeBackend.transformer_engine, + ], + r=2, + ), +) +@pytest.mark.parametrize("block_scale_2d", ["block_scale_2d", "no_block_scale_2d"]) +@pytest.mark.parametrize("dtype", [DataType.nvfp4]) +@pytest.mark.parametrize("rht", ["rht", "no_rht"]) +@pytest.mark.parametrize( + "scale_rule", + [ + ScaleRule.abs_max, + ScaleRule.mae, + ScaleRule.mse, + ScaleRule.static_4, + ScaleRule.static_6, + ], +) +@pytest.mark.parametrize("round_style", [RoundStyle.nearest, RoundStyle.stochastic]) +@pytest.mark.parametrize("transpose", ["transpose", "no_transpose"]) +def test_backend_outputs_are_consistent( # noqa: C901, PLR0915 + input_type: str, + input_shape: tuple[int, int], + backend_a: QuantizeBackend, + backend_b: QuantizeBackend, + *, + block_scale_2d: str, + dtype: DataType, + rht: str, + round_style: RoundStyle, + scale_rule: ScaleRule, + transpose: str, +) -> None: + torch.set_printoptions(precision=10) + + backend_a_cls = AVAILABLE_BACKENDS[backend_a] + backend_b_cls = AVAILABLE_BACKENDS[backend_b] + + if not backend_a_cls.is_available() or not backend_b_cls.is_available(): + pytest.skip("Backend is not available") + + config_a = QuantizationConfig( + backend=backend_a, + block_scale_2d=block_scale_2d == "block_scale_2d", + dtype=dtype, + rht=rht == "rht", + round_style=round_style, + scale_rule=scale_rule, + transpose=transpose == "transpose", + ) + + config_b = QuantizationConfig( + backend=backend_b, + block_scale_2d=block_scale_2d == "block_scale_2d", + dtype=dtype, + rht=rht == "rht", + round_style=round_style, + scale_rule=scale_rule, + transpose=transpose == "transpose", + ) + + if round_style == RoundStyle.stochastic: + pytest.xfail("This test is not currently targeting stochastic rounding") + + for random_seed in range(NUM_RANDOM_SEEDS): + print(f"Testing with random seed: {random_seed}") + torch.manual_seed(random_seed) + + if input_type == "zeros": + x = torch.zeros(*input_shape, dtype=torch.bfloat16, device="cuda") + elif input_type == "ones": + x = torch.ones(*input_shape, dtype=torch.bfloat16, device="cuda") + elif input_type == "rand01": + x = torch.randint(0, 2, input_shape, dtype=int, device="cuda").to( + torch.bfloat16, + ) + elif input_type == "randn": + x = torch.randn(*input_shape, dtype=torch.bfloat16, device="cuda") + else: + msg = f"Invalid input type: {input_type}" + raise ValueError(msg) + + if not backend_a_cls.is_supported( + x, + config_a, + ) or not backend_b_cls.is_supported( + x, + config_b, + ): + pytest.skip("Backend is not supported") + + quantized_a = quantize_to_fp4(x.clone(), config_a) + quantized_b = quantize_to_fp4(x.clone(), config_b) + + if not torch.allclose(quantized_a.amax, quantized_b.amax): + print("Backends A and B have different amax values!") + print(f"{backend_a}: {quantized_a.amax}") + print(f"{backend_b}: {quantized_b.amax}") + pytest.fail("Backends A and B have different amax values!") + + sf_a = from_blocked( + quantized_a.scale_factors.bfloat16(), + (input_shape[0], input_shape[1] // 16), + ) + sf_b = from_blocked( + quantized_b.scale_factors.bfloat16(), + (input_shape[0], input_shape[1] // 16), + ) + + # When computing 4/6 with the MAE and MSE scale rules, computing the errors + # requires summing the errors in each block of 16 values. This operation + # differently (elements are summed in different orders, and floating-point + # addition is not associative) in PyTorch and Triton, and can not be easily made + # deterministic in a way that allows for good performance. As a result, we allow + # a small number of mismatches between the scale factors and values for these + # two rules. Fortunately, abs_max does not involve a summation, so we can use it + # to test the correctness of the rest of the 4/6 implementation. + scale_factors_mismatch_prop = (sf_a != sf_b).sum() / sf_a.numel() + + if ( + scale_rule in {ScaleRule.static_6, ScaleRule.static_4, ScaleRule.abs_max} + and scale_factors_mismatch_prop > 0 + ) or scale_factors_mismatch_prop >= MAE_MSE_MISMATCH_TOLERANCE: + print( + "Backends A and B have different scale factors! " + f"{scale_factors_mismatch_prop:.2%} mismatch", + ) + + [i, *_], [j, *_] = torch.where(sf_a != sf_b) + print(backend_a) + print("sf", sf_a[i, j]) + print("e2m1", quantized_a.values[i, 8 * j : 8 * (j + 1)]) + print(backend_b) + print("sf", sf_b[i, j]) + print("e2m1", quantized_b.values[i, 8 * j : 8 * (j + 1)]) + print("original") + print("x", x[i, 16 * j : 16 * (j + 1)]) + pytest.fail("Backends A and B have different scale factors!") + + values_mismatch_prop = ( + quantized_a.values != quantized_b.values + ).sum() / quantized_a.values.numel() + + if ( + scale_rule in {ScaleRule.static_6, ScaleRule.static_4, ScaleRule.abs_max} + and values_mismatch_prop > 0 + ) or values_mismatch_prop >= MAE_MSE_MISMATCH_TOLERANCE: + print( + "Backends A and B have different e2m1 values! " + f"{values_mismatch_prop:.2%} mismatch", + ) + + [i, *_], [j, *_] = torch.where( + quantized_a.values != quantized_b.values, + ) + print(i, j) + print("amax", quantized_a.amax) + print("sf", sf_a[i, j // 8]) + print(backend_a) + print("e2m1", quantized_a.values[i, 8 * (j // 8) : 8 * (j // 8 + 1)]) + print(backend_b) + print("e2m1", quantized_b.values[i, 8 * (j // 8) : 8 * (j // 8 + 1)]) + print("original") + print("x", x[i, 16 * (j // 8) : 16 * (j // 8 + 1)]) + pytest.fail("Backends A and B have different e2m1 values!") diff --git a/inference.py b/inference.py new file mode 100644 index 0000000..58baaa1 --- /dev/null +++ b/inference.py @@ -0,0 +1,670 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +import os +import sys + +# torchrun no longer consistently prepends the script directory to sys.path, +# which breaks absolute project imports when launched from another cwd. +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +# torchvision 0.27+ removed write_video/read_video. Several modules import the +# symbols at module import time, so patch them before importing project code. +import torchvision.io as _tv_io +if not hasattr(_tv_io, "write_video"): + import imageio.v2 as _imageio_v2 + + def _shim_write_video(filename, video_array, fps, **_unused): + if hasattr(video_array, "detach"): + video_array = video_array.detach().cpu().numpy() + _imageio_v2.mimwrite(filename, video_array, fps=fps, codec="libx264", quality=8) + + _tv_io.write_video = _shim_write_video +if not hasattr(_tv_io, "read_video"): + import imageio.v3 as _imageio_v3 + import torch as _torch_for_shim + + def _shim_read_video(filename, pts_unit="sec", output_format="THWC", **_unused): + frames = _imageio_v3.imread(filename, plugin="pyav") + tensor = _torch_for_shim.from_numpy(frames) + if output_format == "TCHW": + tensor = tensor.permute(0, 3, 1, 2) + return tensor, None, {} + + _tv_io.read_video = _shim_read_video + +import argparse +import torch +from omegaconf import OmegaConf +from tqdm import tqdm +from torchvision.io import write_video +from einops import rearrange +import torch.distributed as dist +from torch.utils.data import DataLoader, SequentialSampler +from torch.utils.data.distributed import DistributedSampler + +from pipeline import CausalDiffusionInferencePipeline +from utils.dataset import MultiTextConcatDataset, MultiVideoConcatDataset, eval_collate_fn, multi_video_collate_fn +from utils.misc import set_seed +from utils.config import normalize_config, section_get, wan_default_config +from utils.nvfp4_checkpoint import ( + clean_fsdp_state_dict_keys, + drop_fouroversix_master_weights, + is_nvfp4_state_dict, + is_te_nvfp4_checkpoint, + quantize_model_for_fouroversix_nvfp4, + unwrap_generator_state_dict, +) + +from utils.memory import get_cuda_free_memory_gb, DynamicSwapInstaller + + +def save_prompts_to_txt(prompts_for_sample, prompt_txt_path: str, is_main_process: bool): + """Save per-block prompts alongside the video. + + Consecutive identical prompts are merged, e.g.: + [0] a, [1] a, [2] b => [0,1] a\\n[2] b\\n + """ + try: + with open(prompt_txt_path, "w", encoding="utf-8") as f: + if len(prompts_for_sample) == 0: + return + current_prompt = prompts_for_sample[0] + current_indices = [0] + for seg_idx in range(1, len(prompts_for_sample)): + p = prompts_for_sample[seg_idx] + if p == current_prompt: + current_indices.append(seg_idx) + else: + indices_str = ",".join(str(i) for i in current_indices) + f.write(f"[{indices_str}] {current_prompt}\n") + current_prompt = p + current_indices = [seg_idx] + indices_str = ",".join(str(i) for i in current_indices) + f.write(f"[{indices_str}] {current_prompt}\n") + except Exception as e: + if is_main_process: + print(f"Warning: failed to save prompts to {prompt_txt_path}: {e}") + +parser = argparse.ArgumentParser() +parser.add_argument("--config_path", type=str, help="Path to the config file") +te_quant_group = parser.add_mutually_exclusive_group() +te_quant_group.add_argument( + "--use_te_quant", + dest="use_te_quant", + action="store_true", + help="Override config and enable TransformerEngine quantization", +) +te_quant_group.add_argument( + "--no_use_te_quant", + dest="use_te_quant", + action="store_false", + help="Override config and disable TransformerEngine quantization", +) +parser.set_defaults(use_te_quant=None) +args = parser.parse_args() + +config = normalize_config(OmegaConf.load(args.config_path)) +if args.use_te_quant is not None: + config.model_quant_use_transformer_engine = args.use_te_quant + +if not hasattr(config, "sampling_steps") or config.sampling_steps is None: + raise ValueError("sampling_steps must be defined in the inference config") + +if not hasattr(config, "guidance_scale") or config.guidance_scale is None: + config.guidance_scale = 1.0 + +config.use_ema = section_get(config, "inference", "use_ema", getattr(config, "use_ema", False)) +config.output_folder = section_get(config, "inference", "output_folder", getattr(config, "output_folder", "videos/longlive2")) +config.num_samples = section_get(config, "inference", "num_samples", getattr(config, "num_samples", 1)) +config.num_output_frames = getattr(config, "num_output_frames", config.image_or_video_shape[1]) +config.save_with_index = getattr(config, "save_with_index", False) +config.inference_iter = getattr(config, "inference_iter", -1) + +if bool(getattr(config, "fp8_quant", False)) and bool( + getattr(config, "model_quant", False) +): + raise ValueError("fp8_quant and model_quant (NVFP4) are mutually exclusive.") + + +def _maybe_to_dict(value): + if value is None: + return None + if OmegaConf.is_config(value): + value = OmegaConf.to_container(value, resolve=True) + return dict(value) + + +def _config_bool(value, default=False): + if value is None: + return default + if isinstance(value, str): + return value.strip().lower() in {"1", "true", "yes", "y", "on"} + return bool(value) + + +def _expected_inference_samples(config): + inference_iter = int(getattr(config, "inference_iter", -1)) + if inference_iter >= 0: + return inference_iter + 1 + return None + + +def _resolve_torch_compile(config): + setting = getattr(config, "torch_compile", False) + if isinstance(setting, str) and setting.strip().lower() == "auto": + if not ( + bool(getattr(config, "model_quant", False)) + or bool(getattr(config, "fp8_quant", False)) + ): + return False, "auto disabled because quantization is false" + min_samples = int(getattr(config, "torch_compile_min_samples", 2)) + expected_samples = _expected_inference_samples(config) + if expected_samples is not None and expected_samples < min_samples: + return ( + False, + "auto disabled because expected samples " + f"({expected_samples}) < torch_compile_min_samples ({min_samples})", + ) + return True, "auto enabled for repeated quantized inference" + return _config_bool(setting, default=False), "explicit setting" + + +def quantize_generator_model(model, config, keep_master_weights): + from utils.quant import ( + ModelQuantizationConfig, + _materialize_mixed_quantized_weights_for_inference, + _materialize_quantized_weights_for_inference, + _materialize_transformer_engine_weights_for_inference, + quantize_model_with_filter, + ) + + use_transformer_engine = bool(getattr(config, "model_quant_use_transformer_engine", False)) + te_inference_only = bool(getattr(config, "model_quant_te_inference_only", use_transformer_engine)) + te_low_precision_weights = bool(getattr(config, "model_quant_te_low_precision_weights", te_inference_only)) + te_fallback_to_fouroversix = bool(getattr(config, "model_quant_te_fallback_to_fouroversix", False)) + + quant_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "model_quant_scale_rule", "static_6"), + quantize_backend=getattr(config, "model_quant_backend", None), + activation_scale_rule=getattr( + config, + "model_quant_activation_scale_rule", + getattr(config, "model_quant_scale_rule", "static_6"), + ), + weight_scale_rule=getattr(config, "model_quant_weight_scale_rule", None), + gradient_scale_rule=getattr(config, "model_quant_gradient_scale_rule", None), + ) + quant_cfg.keep_master_weights = keep_master_weights + model, matched_modules = quantize_model_with_filter( + model, + quant_config=quant_cfg, + filtered_modules=getattr(config, "model_quant_filtered_modules", None), + use_default_filtered_modules=getattr(config, "model_quant_use_default_filtered_modules", True), + cast_model_to_bf16=True, + materialize_for_inference=False, + use_transformer_engine=use_transformer_engine, + te_inference_only=te_inference_only, + te_low_precision_weights=te_low_precision_weights, + te_recipe_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_recipe_kwargs", None)), + te_module_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_module_kwargs", None)), + te_fallback_to_fouroversix=te_fallback_to_fouroversix, + verbose=True, + ) + materialize_fn = _materialize_quantized_weights_for_inference + if use_transformer_engine and te_fallback_to_fouroversix: + materialize_fn = _materialize_mixed_quantized_weights_for_inference + elif use_transformer_engine: + materialize_fn = _materialize_transformer_engine_weights_for_inference + if local_rank == 0: + print(f"[NVFP4] Generator quantized; {len(matched_modules)} modules excluded") + return model, materialize_fn + + +def materialize_quantized_generator(model, device, materialize_fn, stage_desc): + mat_modules, master_bytes, quantized_bytes = materialize_fn( + model, + target_device=device, + ) + if local_rank == 0: + print( + f"[NVFP4] Materialized quantized generator weights {stage_desc}: " + f"{len(mat_modules)} modules, " + f"master_weight={master_bytes / (1024 ** 3):.3f} GiB, " + f"quantized_weight={quantized_bytes / (1024 ** 3):.3f} GiB" + ) + + +def configure_generator_torch_compile(pipeline, config): + compile_enabled, reason = _resolve_torch_compile(config) + if not compile_enabled: + if local_rank == 0 and str(getattr(config, "torch_compile", "false")).lower() == "auto": + print(f"[torch.compile] skipped: {reason}") + return + target = str(getattr(config, "torch_compile_target", "generator_model")).lower() + if target not in {"generator_model", "model"}: + if local_rank == 0: + print(f"[torch.compile][warn] Unsupported target={target}; expected generator_model") + return + if not hasattr(pipeline.generator, "configure_torch_compile"): + if local_rank == 0: + print("[torch.compile][warn] Current generator does not expose configure_torch_compile; skipping") + return + compiled = pipeline.generator.configure_torch_compile( + backend=str(getattr(config, "torch_compile_backend", "inductor")), + mode=getattr(config, "torch_compile_mode", "max-autotune-no-cudagraphs"), + fullgraph=_config_bool(getattr(config, "torch_compile_fullgraph", False)), + dynamic=_config_bool(getattr(config, "torch_compile_dynamic", False)), + options=_maybe_to_dict(getattr(config, "torch_compile_options", None)), + suppress_errors=_config_bool(getattr(config, "torch_compile_suppress_errors", True), default=True), + ) + if local_rank == 0: + status = "enabled" if compiled else "not enabled" + print(f"[torch.compile] {status}: target={target}") + +# Initialize distributed inference +if "LOCAL_RANK" in os.environ: + dist.init_process_group(backend='nccl') + local_rank = int(os.environ["LOCAL_RANK"]) + torch.cuda.set_device(local_rank) + device = torch.device(f"cuda:{local_rank}") + set_seed(config.seed + local_rank) + config.distributed = True # Mark as distributed for pipeline +else: + local_rank = 0 + device = torch.device("cuda") + set_seed(config.seed) + config.distributed = False # Mark as non-distributed + +print(f'Free VRAM {get_cuda_free_memory_gb(device)} GB') +low_memory = get_cuda_free_memory_gb(device) < 40 + +torch.set_grad_enabled(False) + + +# Initialize pipeline +pipeline = CausalDiffusionInferencePipeline(config, device=device) + +# --------------------------- LoRA support (optional) --------------------------- +from utils.lora_utils import configure_lora_for_model +import peft + +merge_lora = bool(getattr(config, "merge_lora", False)) +has_lora_adapter = bool(getattr(config, "adapter", None) and configure_lora_for_model is not None) +if has_lora_adapter and ( + bool(getattr(config, "model_quant", False)) + or bool(getattr(config, "fp8_quant", False)) +) and not merge_lora: + if local_rank == 0: + print( + "[quant][LoRA] merge_lora=false is unsupported with quantization; " + "forcing merge_lora=true so the LoRA is folded into the BF16 base before quantization." + ) + merge_lora = True + config.merge_lora = True +materialize_quantized_weights_for_inference = None +generator_checkpoint = None +generator_lora_state = None +generator_ckpt_path = getattr(config, "generator_ckpt", None) +loaded_prequantized_generator = False +prequantized_generator_backend = None +if generator_ckpt_path: + generator_checkpoint = torch.load(generator_ckpt_path, map_location="cpu") + is_lora_only_checkpoint = ( + isinstance(generator_checkpoint, dict) + and "generator_lora" in generator_checkpoint + and not any(key in generator_checkpoint for key in ("generator", "generator_ema", "model")) + ) + if is_lora_only_checkpoint: + generator_lora_state = generator_checkpoint["generator_lora"] + if local_rank == 0: + print(f"Found LoRA generator weights in {generator_ckpt_path}") + else: + raw_gen_state_dict = unwrap_generator_state_dict(generator_checkpoint, use_ema=config.use_ema) + if config.use_ema: + raw_gen_state_dict = clean_fsdp_state_dict_keys(raw_gen_state_dict) + if is_te_nvfp4_checkpoint(generator_checkpoint): + raise ValueError( + "This checkpoint was saved as a TransformerEngine module state_dict, " + "which is not packed NVFP4 and is no longer a supported export format. " + "Regenerate with `--backend transformer_engine` to save merged bf16 weights " + "for TE runtime quantization, or use `--backend fouroversix` for a compact " + "materialized NVFP4 checkpoint." + ) + elif is_nvfp4_state_dict(raw_gen_state_dict): + if not getattr(config, "model_quant", False): + raise ValueError( + "generator_ckpt is a materialized NVFP4 checkpoint, but model_quant is false. " + "Set model_quant: true in the inference yaml." + ) + if getattr(config, "model_quant_use_transformer_engine", False): + raise ValueError( + "Materialized NVFP4 generator checkpoints use FourOverSix modules. " + "Set model_quant_use_transformer_engine: false when loading this checkpoint." + ) + if local_rank == 0: + print(f"[NVFP4] Loading materialized generator checkpoint from {generator_ckpt_path}") + pipeline.generator.model, matched_modules = quantize_model_for_fouroversix_nvfp4( + pipeline.generator.model, + config=config, + keep_master_weights=False, + verbose=(local_rank == 0), + ) + dropped_modules = drop_fouroversix_master_weights(pipeline.generator.model) + pipeline.generator.load_state_dict(raw_gen_state_dict, strict=True) + loaded_prequantized_generator = True + prequantized_generator_backend = "fouroversix" + if local_rank == 0: + print( + "[NVFP4] Prepared quantized generator architecture: " + f"{len(dropped_modules)} materialized modules, " + f"{len(matched_modules)} modules excluded" + ) + elif config.use_ema: + missing, unexpected = pipeline.generator.load_state_dict(raw_gen_state_dict, strict=False) + if local_rank == 0: + if len(missing) > 0: + print(f"[Warning] {len(missing)} parameters are missing when loading checkpoint: {missing[:8]} ...") + if len(unexpected) > 0: + print(f"[Warning] {len(unexpected)} unexpected parameters encountered when loading checkpoint: {unexpected[:8]} ...") + else: + print(f"Loading generator from {generator_ckpt_path}") + pipeline.generator.load_state_dict(raw_gen_state_dict, strict=True) + +pipeline.is_lora_enabled = False +pipeline.is_lora_merged = False + +if loaded_prequantized_generator: + if has_lora_adapter or merge_lora or getattr(config, "lora_ckpt", None): + if local_rank == 0: + print("[NVFP4] Pre-quantized generator checkpoint is already saved with merged weights; skipping LoRA setup") + has_lora_adapter = False + merge_lora = False + config.merge_lora = False + +if getattr(config, "model_quant", False) and not merge_lora and not loaded_prequantized_generator: + pipeline.generator.model, materialize_quantized_weights_for_inference = quantize_generator_model( + pipeline.generator.model, + config=config, + keep_master_weights=has_lora_adapter, + ) + +if has_lora_adapter: + if local_rank == 0: + print(f"LoRA enabled with config: {config.adapter}") + print("Applying LoRA to generator (inference)...") + if merge_lora: + print("LoRA weights will be merged into the base model before inference") + # Apply LoRA to the generator transformer after loading base weights. + pipeline.generator.model = configure_lora_for_model( + pipeline.generator.model, + model_name="generator", + lora_config=config.adapter, + is_main_process=(local_rank == 0), + ) + + # Load LoRA weights from lora_ckpt. If omitted, fall back to generator_ckpt + # when it directly contains generator_lora. + lora_ckpt_path = getattr(config, "lora_ckpt", None) + if lora_ckpt_path: + if local_rank == 0: + print(f"Loading LoRA weights from lora_ckpt: {lora_ckpt_path}") + lora_checkpoint = torch.load(lora_ckpt_path, map_location="cpu") + if isinstance(lora_checkpoint, dict) and "generator_lora" in lora_checkpoint: + peft.set_peft_model_state_dict(pipeline.generator.model, lora_checkpoint["generator_lora"]) # type: ignore + else: + peft.set_peft_model_state_dict(pipeline.generator.model, lora_checkpoint) # type: ignore + if local_rank == 0: + print("LoRA weights loaded for generator") + elif generator_lora_state is not None: + if local_rank == 0: + print(f"Loading LoRA weights from generator_ckpt: {generator_ckpt_path}") + peft.set_peft_model_state_dict(pipeline.generator.model, generator_lora_state) # type: ignore + if local_rank == 0: + print("LoRA weights loaded for generator") + else: + if local_rank == 0: + print("No LoRA checkpoint configured; using initialized LoRA adapters") + + if merge_lora: + if local_rank == 0: + print("Merging LoRA weights into generator before quantization / inference...") + pipeline.generator.model = pipeline.generator.model.merge_and_unload(safe_merge=True) + pipeline.is_lora_merged = True + else: + pipeline.is_lora_enabled = True +elif merge_lora and local_rank == 0: + print("merge_lora=True requested but no adapter config was found; continuing without LoRA merge") + +del generator_checkpoint + + +# Move pipeline to appropriate dtype and device +if loaded_prequantized_generator: + pipeline.text_encoder.to(dtype=torch.bfloat16) + pipeline.vae.to(dtype=torch.bfloat16) +else: + pipeline = pipeline.to(dtype=torch.bfloat16) +if low_memory: + DynamicSwapInstaller.install_model(pipeline.text_encoder, device=device) +pipeline.generator.to(device=device) + +if getattr(config, "model_quant", False) and not loaded_prequantized_generator: + if merge_lora: + pipeline.generator.model, materialize_quantized_weights_for_inference = quantize_generator_model( + pipeline.generator.model, + config=config, + keep_master_weights=False, + ) + stage_desc = "after LoRA merge" if pipeline.is_lora_merged else "for inference" + else: + stage_desc = "after LoRA wrapping" if pipeline.is_lora_enabled else "for inference" + materialize_quantized_generator( + pipeline.generator.model, + device=device, + materialize_fn=materialize_quantized_weights_for_inference, + stage_desc=stage_desc, + ) +elif loaded_prequantized_generator and local_rank == 0: + print(f"[NVFP4] Using pre-saved {prequantized_generator_backend} generator weights from checkpoint") + +pipeline.generator.model.eval().requires_grad_(False) +if bool(getattr(config, "fp8_quant", False)): + from utils.fp8 import quantize_model_fp8 + + quantize_model_fp8(pipeline.generator.model, verbose=(local_rank == 0)) +configure_generator_torch_compile(pipeline, config) + +vae_device_str = getattr(config, "vae_device", None) +use_dedicated_vae_device = bool(getattr(config, "streaming_vae", False)) and bool(vae_device_str) +if use_dedicated_vae_device: + vae_device = torch.device(vae_device_str) + pipeline.vae.to(device="cpu") + pipeline.vae.to(device=vae_device) + if hasattr(pipeline.vae, "mean"): + pipeline.vae.mean = pipeline.vae.mean.to(device=vae_device) + pipeline.vae.std = pipeline.vae.std.to(device=vae_device) + if local_rank == 0: + print(f"[inference] VAE on {vae_device}, diffusion on {device}") +else: + pipeline.vae.to(device=device) + if vae_device_str and local_rank == 0: + print(f"[inference] Ignoring vae_device={vae_device_str} because streaming_vae is false") + +# Create dataset +nfpb = getattr(config, 'num_frame_per_block', 8) +data_path = config.data_path +chunks_per_shot = getattr(config, 'chunks_per_shot', 0) +scene_cut_prefix = getattr(config, 'scene_cut_prefix', "The scene transitions. ") +if getattr(config, "i2v", False): + model_name = config.model_kwargs.model_name + frame_raw_height = list(config.image_or_video_shape)[3] * wan_default_config[model_name]["spatial_compression_ratio"] + frame_raw_width = list(config.image_or_video_shape)[4] * wan_default_config[model_name]["spatial_compression_ratio"] + temporal_compression_ratio = wan_default_config[model_name]["temporal_compression_ratio"] + total_frames = (config.num_output_frames - 1) * temporal_compression_ratio + 1 + dataset = MultiVideoConcatDataset( + data_dir=data_path, + video_size=(frame_raw_height, frame_raw_width), + total_frames=total_frames, + deterministic=True, + num_frame_per_block=nfpb, + temporal_compression_ratio=temporal_compression_ratio, + target_fps=24 if "5B" in model_name else 16, + allow_padding=getattr(config, "allow_padding", False), + min_latent_frames=getattr(config, "min_latent_frames", 0), + single_video_only=getattr(config, "uniform_prompt", False), + independent_first_frame=getattr(config, "independent_first_frame", False), + return_image=True, + max_chunks_per_shot=getattr(config, "max_chunks_per_shot", 0), + scene_cut_prefix=scene_cut_prefix, + ) + collate_fn = multi_video_collate_fn + num_blocks = config.num_output_frames // nfpb +else: + num_blocks = config.num_output_frames // nfpb + dataset = MultiTextConcatDataset( + data_path=data_path, + num_blocks=num_blocks, + chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + deterministic=True, + ) + collate_fn = eval_collate_fn +if local_rank == 0: + print(f"[data] data_path={data_path}, mode={getattr(dataset, '_mode', dataset.__class__.__name__)}, num_blocks={num_blocks}") +num_prompts = len(dataset) +print(f"Number of prompts: {num_prompts}") + +if dist.is_initialized(): + sampler = DistributedSampler(dataset, shuffle=False, drop_last=True) +else: + sampler = SequentialSampler(dataset) +dataloader = DataLoader(dataset, batch_size=1, sampler=sampler, num_workers=0, + drop_last=False, collate_fn=collate_fn) + +# Create output directory (only on main process to avoid race conditions) +if local_rank == 0: + os.makedirs(config.output_folder, exist_ok=True) + +if dist.is_initialized(): + dist.barrier() + + +def encode(self, videos: torch.Tensor) -> torch.Tensor: + device, dtype = videos[0].device, videos[0].dtype + scale = [self.mean.to(device=device, dtype=dtype), + 1.0 / self.std.to(device=device, dtype=dtype)] + output = [ + self.model.encode(u.unsqueeze(0), scale).float().squeeze(0) + for u in videos + ] + + output = torch.stack(output, dim=0) + return output + + +for i, batch_data in tqdm(enumerate(dataloader), disable=(local_rank != 0)): + idx = batch_data['idx'].item() + + # For DataLoader batch_size=1, the batch_data is already a single item, but in a batch container + # Unpack the batch data for convenience + if isinstance(batch_data, dict): + batch = batch_data + elif isinstance(batch_data, list): + batch = batch_data[0] # First (and only) item in the batch + + all_video = [] + + # MultiTextConcatDataset + eval_collate_fn: prompts[0] is List[str]. + block_prompts = list(batch['prompts'][0]) + prompt = block_prompts[0] # for filename + prompts = [block_prompts] * config.num_samples + + shape = config.image_or_video_shape + sampled_noise = torch.randn( + [config.num_samples, config.num_output_frames, shape[2], shape[3], shape[4]], device=device, dtype=torch.bfloat16 + ) + initial_latent = None + if getattr(config, "i2v", False): + image = batch["image"].to(device=device, dtype=torch.bfloat16) + if image.ndim == 4: + image = image.unsqueeze(2) + elif image.ndim != 5: + raise ValueError(f"Expected i2v image with shape [B,C,H,W] or [B,C,T,H,W], got {tuple(image.shape)}") + initial_latent = pipeline.vae.encode_to_latent(image).to(device=device, dtype=torch.bfloat16) + if initial_latent.shape[0] != config.num_samples: + initial_latent = initial_latent.repeat(config.num_samples, 1, 1, 1, 1) + if config.num_output_frames <= initial_latent.shape[1]: + raise ValueError( + f"num_output_frames must exceed the i2v conditioning frames; " + f"got {config.num_output_frames} and {initial_latent.shape[1]}" + ) + print("sampled_noise.device", sampled_noise.device) + print("prompts", prompts) + print('sampled_noise.shape', sampled_noise.shape, 'prompts', prompts) + save_latents_only = section_get( + config, + "inference", + "save_latents_only", + getattr(config, "save_latents_only", getattr(config, "save_latent_only", False)), + aliases=("save_latent_only", "return_latents"), + ) + inference_kwargs = dict( + noise=sampled_noise, + text_prompts=prompts, + return_latents=save_latents_only, + ) + if initial_latent is not None: + inference_kwargs["initial_latent"] = initial_latent + with torch.inference_mode(): + generated = pipeline.inference(**inference_kwargs) + + if not save_latents_only: + current_video = rearrange(generated, 'b t c h w -> b t h w c').cpu() + all_video.append(current_video) + + # Final output video + video = 255.0 * torch.cat(all_video, dim=1) + + # Clear VAE cache + pipeline.vae.model.clear_cache() + else: + latents = generated + + if dist.is_initialized(): + rank = dist.get_rank() + else: + rank = 0 + + # Save the video if the current prompt is not a dummy prompt + if idx < num_prompts: + # Determine model type for filename + if hasattr(pipeline, 'is_lora_enabled') and pipeline.is_lora_enabled: + model_type = "lora" + elif getattr(config, 'use_ema', False): + model_type = "ema" + else: + model_type = "regular" + + for seed_idx in range(config.num_samples): + if config.save_with_index: + base_name = f'rank{rank}-{idx}-{seed_idx}_{model_type}' + else: + base_name = f'rank{rank}-{prompt[:100]}-{seed_idx}_{model_type}' + + if save_latents_only: + latent_path = os.path.join(config.output_folder, f'{base_name}.pt') + torch.save(latents[seed_idx].cpu(), latent_path) + else: + output_path = os.path.join(config.output_folder, f'{base_name}.mp4') + fps = 24 if '5B' in config.model_kwargs.model_name else 16 + write_video(output_path, video[seed_idx], fps=fps) + + prompt_txt_path = os.path.join(config.output_folder, f'{base_name}_prompts.txt') + save_prompts_to_txt( + prompts[seed_idx] if isinstance(prompts[seed_idx], list) else [prompts[seed_idx]], + prompt_txt_path, + is_main_process=(rank == 0), + ) + + if config.inference_iter != -1 and i >= config.inference_iter: + break diff --git a/inference_sp.py b/inference_sp.py new file mode 100644 index 0000000..b19b5ce --- /dev/null +++ b/inference_sp.py @@ -0,0 +1,578 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +import argparse +import os +from math import gcd + +import peft +import torch +import torch.distributed as dist +from einops import rearrange +from omegaconf import OmegaConf +from torch.utils.data import DataLoader, SequentialSampler +from torch.utils.data.distributed import DistributedSampler +from torchvision.io import write_video +from tqdm import tqdm + +from pipeline.causal_diffusion_inference_sp import CausalDiffusionInferencePipelineSP +from utils.config import normalize_config, section_get +from utils.dataset import MultiTextConcatDataset, eval_collate_fn +from utils.lora_utils import configure_lora_for_model +from utils.memory import DynamicSwapInstaller, get_cuda_free_memory_gb +from utils.misc import set_seed +from utils.nvfp4_checkpoint import ( + clean_fsdp_state_dict_keys, + drop_fouroversix_master_weights, + is_nvfp4_state_dict, + is_te_nvfp4_checkpoint, + quantize_model_for_fouroversix_nvfp4, + unwrap_generator_state_dict, +) + + +def save_prompts_to_txt(prompts_for_sample, prompt_txt_path: str, is_main_process: bool): + try: + with open(prompt_txt_path, "w", encoding="utf-8") as f: + if len(prompts_for_sample) == 0: + return + current_prompt = prompts_for_sample[0] + current_indices = [0] + for seg_idx in range(1, len(prompts_for_sample)): + prompt = prompts_for_sample[seg_idx] + if prompt == current_prompt: + current_indices.append(seg_idx) + else: + f.write(f"[{','.join(str(i) for i in current_indices)}] {current_prompt}\n") + current_prompt = prompt + current_indices = [seg_idx] + f.write(f"[{','.join(str(i) for i in current_indices)}] {current_prompt}\n") + except Exception as exc: + if is_main_process: + print(f"Warning: failed to save prompts to {prompt_txt_path}: {exc}") + + +def compute_group_specs(world_size, sp_size, dp_size, num_heads, num_frame_per_block, + auto_sp_remainder=False): + """Compute DP groups whose ranks each form a Ulysses SP group.""" + valid_base = gcd(num_heads, num_frame_per_block) + valid_sp_sizes = sorted(size for size in range(1, valid_base + 1) if valid_base % size == 0) + if sp_size not in valid_sp_sizes: + raise ValueError( + f"sp_size={sp_size} must divide gcd(num_heads={num_heads}, " + f"num_frame_per_block={num_frame_per_block})={valid_base}" + ) + + full_groups = min(world_size // max(sp_size, 1), dp_size) + groups = [ + (sp_size, list(range(i * sp_size, (i + 1) * sp_size))) + for i in range(full_groups) + ] + ranks_used = full_groups * sp_size + if auto_sp_remainder: + remaining_gpus = world_size - ranks_used + remaining_quota = dp_size - full_groups + while remaining_gpus > 0 and remaining_quota > 0: + size = max((v for v in valid_sp_sizes if v <= remaining_gpus), default=1) + groups.append((size, list(range(ranks_used, ranks_used + size)))) + ranks_used += size + remaining_gpus -= size + remaining_quota -= 1 + return groups + + +def _maybe_to_dict(value): + if value is None: + return None + if OmegaConf.is_config(value): + value = OmegaConf.to_container(value, resolve=True) + return dict(value) + + +def _config_bool(value, default=False): + if value is None: + return default + if isinstance(value, str): + return value.strip().lower() in {"1", "true", "yes", "y", "on"} + return bool(value) + + +def _expected_inference_samples(config): + inference_iter = int(getattr(config, "inference_iter", -1)) + return inference_iter + 1 if inference_iter >= 0 else None + + +def _resolve_torch_compile(config): + setting = getattr(config, "torch_compile", False) + if isinstance(setting, str) and setting.strip().lower() == "auto": + if not bool(getattr(config, "model_quant", False)): + return False, "auto disabled because model_quant is false" + min_samples = int(getattr(config, "torch_compile_min_samples", 2)) + expected_samples = _expected_inference_samples(config) + if expected_samples is not None and expected_samples < min_samples: + return False, f"auto disabled because expected samples ({expected_samples}) < {min_samples}" + return True, "auto enabled for repeated quantized inference" + return _config_bool(setting, default=False), "explicit setting" + + +def quantize_generator_model(model, config, keep_master_weights, is_main_process): + from utils.quant import ( + ModelQuantizationConfig, + _materialize_mixed_quantized_weights_for_inference, + _materialize_quantized_weights_for_inference, + _materialize_transformer_engine_weights_for_inference, + quantize_model_with_filter, + ) + + use_transformer_engine = bool(getattr(config, "model_quant_use_transformer_engine", False)) + te_inference_only = bool(getattr(config, "model_quant_te_inference_only", use_transformer_engine)) + te_low_precision_weights = bool(getattr(config, "model_quant_te_low_precision_weights", te_inference_only)) + te_fallback_to_fouroversix = bool(getattr(config, "model_quant_te_fallback_to_fouroversix", False)) + quant_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "model_quant_scale_rule", "static_6"), + quantize_backend=getattr(config, "model_quant_backend", None), + activation_scale_rule=getattr( + config, "model_quant_activation_scale_rule", + getattr(config, "model_quant_scale_rule", "static_6"), + ), + weight_scale_rule=getattr(config, "model_quant_weight_scale_rule", None), + gradient_scale_rule=getattr(config, "model_quant_gradient_scale_rule", None), + ) + quant_cfg.keep_master_weights = keep_master_weights + model, matched_modules = quantize_model_with_filter( + model, + quant_config=quant_cfg, + filtered_modules=getattr(config, "model_quant_filtered_modules", None), + use_default_filtered_modules=getattr(config, "model_quant_use_default_filtered_modules", True), + cast_model_to_bf16=True, + materialize_for_inference=False, + use_transformer_engine=use_transformer_engine, + te_inference_only=te_inference_only, + te_low_precision_weights=te_low_precision_weights, + te_recipe_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_recipe_kwargs", None)), + te_module_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_module_kwargs", None)), + te_fallback_to_fouroversix=te_fallback_to_fouroversix, + verbose=is_main_process, + ) + materialize_fn = _materialize_quantized_weights_for_inference + if use_transformer_engine and te_fallback_to_fouroversix: + materialize_fn = _materialize_mixed_quantized_weights_for_inference + elif use_transformer_engine: + materialize_fn = _materialize_transformer_engine_weights_for_inference + if is_main_process: + print(f"[NVFP4] Generator quantized; {len(matched_modules)} modules excluded") + return model, materialize_fn + + +def materialize_quantized_generator(model, device, materialize_fn, stage_desc, is_main_process): + mat_modules, master_bytes, quantized_bytes = materialize_fn(model, target_device=device) + if is_main_process: + print( + f"[NVFP4] Materialized quantized generator weights {stage_desc}: " + f"{len(mat_modules)} modules, master_weight={master_bytes / (1024 ** 3):.3f} GiB, " + f"quantized_weight={quantized_bytes / (1024 ** 3):.3f} GiB" + ) + + +def configure_generator_torch_compile(pipeline, config, is_main_process): + compile_enabled, reason = _resolve_torch_compile(config) + if not compile_enabled: + if is_main_process and str(getattr(config, "torch_compile", "false")).lower() == "auto": + print(f"[torch.compile] skipped: {reason}") + return + if not hasattr(pipeline.generator, "configure_torch_compile"): + if is_main_process: + print("[torch.compile][warn] Current generator does not expose configure_torch_compile; skipping") + return + compiled = pipeline.generator.configure_torch_compile( + backend=str(getattr(config, "torch_compile_backend", "inductor")), + mode=getattr(config, "torch_compile_mode", "max-autotune-no-cudagraphs"), + fullgraph=_config_bool(getattr(config, "torch_compile_fullgraph", False)), + dynamic=_config_bool(getattr(config, "torch_compile_dynamic", False)), + options=_maybe_to_dict(getattr(config, "torch_compile_options", None)), + suppress_errors=_config_bool(getattr(config, "torch_compile_suppress_errors", True), default=True), + ) + if is_main_process: + print(f"[torch.compile] {'enabled' if compiled else 'not enabled'}: target=generator_model") + + +parser = argparse.ArgumentParser() +parser.add_argument("--config_path", type=str, required=True, help="Path to the config YAML file") +te_quant_group = parser.add_mutually_exclusive_group() +te_quant_group.add_argument("--use_te_quant", dest="use_te_quant", action="store_true") +te_quant_group.add_argument("--no_use_te_quant", dest="use_te_quant", action="store_false") +parser.set_defaults(use_te_quant=None) +args = parser.parse_args() + +config = normalize_config(OmegaConf.load(args.config_path)) +if args.use_te_quant is not None: + config.model_quant_use_transformer_engine = args.use_te_quant +if not hasattr(config, "sampling_steps") or config.sampling_steps is None: + raise ValueError("sampling_steps must be defined in the SP inference config") +if not hasattr(config, "guidance_scale") or config.guidance_scale is None: + config.guidance_scale = 1.0 + +config.use_ema = section_get(config, "inference", "use_ema", getattr(config, "use_ema", False)) +config.output_folder = section_get(config, "inference", "output_folder", getattr(config, "output_folder", "videos/longlive2_sp")) +config.num_samples = section_get(config, "inference", "num_samples", getattr(config, "num_samples", 1)) +config.num_output_frames = getattr(config, "num_output_frames", config.image_or_video_shape[1]) +config.save_with_index = getattr(config, "save_with_index", False) +config.inference_iter = getattr(config, "inference_iter", -1) +if bool(getattr(config, "fp8_quant", False)): + raise NotImplementedError("TorchAO FP8 PTQ is currently supported by inference.py only.") +if getattr(config, "i2v", False): + raise NotImplementedError("I2V inference is not included in this SP release path.") +if getattr(config, "kv_quant", False): + print("[SP][warn] kv_quant is not supported in Ulysses SP inference; disabling it.") + config.kv_quant = False + +sp_size = int(getattr(config, "sp_size", 1)) +dp_size = int(getattr(config, "dp_size", 1)) +auto_sp_remainder = bool(getattr(config, "auto_sp_remainder", False)) +model_num_heads = int(getattr(config, "model_num_heads", 24)) + +sp_group = None +dp_rank = 0 +sp_rank = 0 +effective_sp_size = sp_size +total_dp_groups = 1 + +if "LOCAL_RANK" in os.environ: + local_rank = int(os.environ["LOCAL_RANK"]) + world_size = int(os.environ.get("WORLD_SIZE", "1")) + rank = int(os.environ.get("RANK", str(local_rank))) + torch.cuda.set_device(local_rank) + device = torch.device(f"cuda:{local_rank}") + os.environ.setdefault("NCCL_CROSS_NIC", "1") + os.environ.setdefault("NCCL_DEBUG", "WARN") + os.environ.setdefault("NCCL_TIMEOUT", "1800") + if not dist.is_initialized(): + dist.init_process_group(backend="nccl", rank=rank, world_size=world_size) + set_seed(config.seed + rank) + config.distributed = True + + group_specs = compute_group_specs( + world_size=world_size, + sp_size=sp_size, + dp_size=dp_size, + num_heads=model_num_heads, + num_frame_per_block=int(getattr(config, "num_frame_per_block", 8)), + auto_sp_remainder=auto_sp_remainder, + ) + assigned_count = sum(len(ranks) for _, ranks in group_specs) + if assigned_count != world_size: + raise ValueError( + f"SP group layout assigns {assigned_count}/{world_size} ranks. " + "Increase dp_size, lower sp_size, or enable auto_sp_remainder." + ) + total_dp_groups = len(group_specs) + sp_groups_all = [dist.new_group(ranks=ranks) for _, ranks in group_specs] + for dp_i, (eff_sp, ranks) in enumerate(group_specs): + if rank in ranks: + dp_rank = dp_i + sp_rank = ranks.index(rank) + effective_sp_size = eff_sp + sp_group = sp_groups_all[dp_i] + break + if rank == 0: + print( + f"[SP] Parallelism: {total_dp_groups} DP group(s), " + f"sp_sizes={[size for size, _ in group_specs]}, assigned={assigned_count}/{world_size}" + ) +else: + local_rank = 0 + rank = 0 + device = torch.device("cuda") + set_seed(config.seed) + config.distributed = False + effective_sp_size = 1 + +is_main_process = rank == 0 +use_effective_sp = effective_sp_size > 1 and dist.is_initialized() +use_multi_dp = total_dp_groups > 1 + +if use_effective_sp: + from wan_5b.distributed.sp_ulysses_inference import init_sequence_parallel + init_sequence_parallel(group=sp_group) + if is_main_process: + print(f"[SP] Ulysses mode enabled: sp_sizes={[size for size, _ in group_specs]}") +elif is_main_process: + print("[SP] Running SP model with world_size=1") + +torch.set_grad_enabled(False) +free_vram = get_cuda_free_memory_gb(device) +low_memory = free_vram < 40 +if is_main_process: + print(f"[SP] Free VRAM: {free_vram:.1f} GB, low_memory={low_memory}") + +pipeline = CausalDiffusionInferencePipelineSP( + config, + device=device, + sp_group=sp_group, + dp_rank=dp_rank, +) + +merge_lora = bool(getattr(config, "merge_lora", False)) +has_lora_adapter = bool(getattr(config, "adapter", None) and configure_lora_for_model is not None) +if has_lora_adapter and bool(getattr(config, "model_quant", False)) and not merge_lora: + if is_main_process: + print( + "[NVFP4][LoRA] merge_lora=false is unsupported with model_quant=true; " + "forcing merge_lora=true so the LoRA is folded into the BF16 base before quantization." + ) + merge_lora = True + config.merge_lora = True +materialize_quantized_weights_for_inference = None +generator_checkpoint = None +generator_lora_state = None +generator_ckpt_path = getattr(config, "generator_ckpt", None) +loaded_prequantized_generator = False +prequantized_generator_backend = None + +if generator_ckpt_path: + if is_main_process: + print(f"[SP] Loading generator checkpoint: {generator_ckpt_path}") + generator_checkpoint = torch.load(generator_ckpt_path, map_location="cpu", mmap=True) + is_lora_only_checkpoint = ( + isinstance(generator_checkpoint, dict) + and "generator_lora" in generator_checkpoint + and not any(key in generator_checkpoint for key in ("generator", "generator_ema", "model")) + ) + if is_lora_only_checkpoint: + generator_lora_state = generator_checkpoint["generator_lora"] + else: + raw_gen_state_dict = unwrap_generator_state_dict(generator_checkpoint, use_ema=config.use_ema) + if config.use_ema: + raw_gen_state_dict = clean_fsdp_state_dict_keys(raw_gen_state_dict) + if is_te_nvfp4_checkpoint(generator_checkpoint): + raise ValueError("TransformerEngine module state_dict checkpoints are not supported here.") + if is_nvfp4_state_dict(raw_gen_state_dict): + if not getattr(config, "model_quant", False): + raise ValueError("generator_ckpt is materialized NVFP4 but model_quant is false.") + if getattr(config, "model_quant_use_transformer_engine", False): + raise ValueError("Materialized NVFP4 checkpoints require model_quant_use_transformer_engine=false.") + pipeline.generator.model, matched_modules = quantize_model_for_fouroversix_nvfp4( + pipeline.generator.model, + config=config, + keep_master_weights=False, + verbose=is_main_process, + ) + dropped_modules = drop_fouroversix_master_weights(pipeline.generator.model) + pipeline.generator.load_state_dict(raw_gen_state_dict, strict=True) + loaded_prequantized_generator = True + prequantized_generator_backend = "fouroversix" + if is_main_process: + print( + f"[NVFP4] Prepared SP generator: {len(dropped_modules)} materialized modules, " + f"{len(matched_modules)} modules excluded" + ) + elif config.use_ema: + missing, unexpected = pipeline.generator.load_state_dict(raw_gen_state_dict, strict=False) + if is_main_process and (missing or unexpected): + print(f"[SP][warn] missing={len(missing)}, unexpected={len(unexpected)}") + else: + pipeline.generator.load_state_dict(raw_gen_state_dict, strict=True) + +pipeline.is_lora_enabled = False +pipeline.is_lora_merged = False +if loaded_prequantized_generator: + has_lora_adapter = False + merge_lora = False + config.merge_lora = False + +if getattr(config, "model_quant", False) and not merge_lora and not loaded_prequantized_generator: + pipeline.generator.model, materialize_quantized_weights_for_inference = quantize_generator_model( + pipeline.generator.model, + config=config, + keep_master_weights=has_lora_adapter, + is_main_process=is_main_process, + ) + +if has_lora_adapter: + if is_main_process: + print(f"[SP] Applying LoRA config: {config.adapter}") + pipeline.generator.model = configure_lora_for_model( + pipeline.generator.model, + model_name="generator", + lora_config=config.adapter, + is_main_process=is_main_process, + ) + lora_ckpt_path = getattr(config, "lora_ckpt", None) + if lora_ckpt_path: + lora_checkpoint = torch.load(lora_ckpt_path, map_location="cpu", mmap=True) + if isinstance(lora_checkpoint, dict) and "generator_lora" in lora_checkpoint: + peft.set_peft_model_state_dict(pipeline.generator.model, lora_checkpoint["generator_lora"]) + else: + peft.set_peft_model_state_dict(pipeline.generator.model, lora_checkpoint) + elif generator_lora_state is not None: + peft.set_peft_model_state_dict(pipeline.generator.model, generator_lora_state) + if merge_lora: + pipeline.generator.model = pipeline.generator.model.merge_and_unload(safe_merge=True) + pipeline.is_lora_merged = True + else: + pipeline.is_lora_enabled = True +elif merge_lora and is_main_process: + print("merge_lora=True requested but no adapter config was found; continuing without LoRA merge") + +del generator_checkpoint + +if loaded_prequantized_generator: + pipeline.text_encoder.to(dtype=torch.bfloat16) + pipeline.vae.to(dtype=torch.bfloat16) +else: + pipeline = pipeline.to(dtype=torch.bfloat16) +if low_memory: + DynamicSwapInstaller.install_model(pipeline.text_encoder, device=device) +pipeline.generator.to(device=device) + +if getattr(config, "model_quant", False) and not loaded_prequantized_generator: + if merge_lora: + pipeline.generator.model, materialize_quantized_weights_for_inference = quantize_generator_model( + pipeline.generator.model, + config=config, + keep_master_weights=False, + is_main_process=is_main_process, + ) + stage_desc = "after LoRA merge" if pipeline.is_lora_merged else "for inference" + else: + stage_desc = "after LoRA wrapping" if pipeline.is_lora_enabled else "for inference" + materialize_quantized_generator( + pipeline.generator.model, + device=device, + materialize_fn=materialize_quantized_weights_for_inference, + stage_desc=stage_desc, + is_main_process=is_main_process, + ) +elif loaded_prequantized_generator and is_main_process: + print(f"[NVFP4] Using pre-saved {prequantized_generator_backend} generator weights") + +pipeline.generator.model.eval().requires_grad_(False) +configure_generator_torch_compile(pipeline, config, is_main_process) + +vae_device_str = getattr(config, "vae_device", None) +use_dedicated_vae_device = bool(getattr(config, "streaming_vae", False)) and bool(vae_device_str) +if use_dedicated_vae_device and sp_rank == 0: + vae_device = torch.device(vae_device_str) + pipeline.vae.to(device="cpu") + pipeline.vae.to(device=vae_device) + if hasattr(pipeline.vae, "mean"): + pipeline.vae.mean = pipeline.vae.mean.to(device=vae_device) + pipeline.vae.std = pipeline.vae.std.to(device=vae_device) + if is_main_process: + print(f"[SP] VAE on {vae_device}, diffusion on {device}") +else: + pipeline.vae.to(device=device) + +nfpb = getattr(config, "num_frame_per_block", 8) +num_blocks = config.num_output_frames // nfpb +dataset = MultiTextConcatDataset( + data_path=config.data_path, + num_blocks=num_blocks, + chunks_per_shot=getattr(config, "chunks_per_shot", 0), + scene_cut_prefix=getattr(config, "scene_cut_prefix", "The scene transitions. "), + deterministic=True, +) +if is_main_process: + print(f"[data] data_path={config.data_path}, mode={dataset._mode}, num_blocks={num_blocks}") +num_prompts = len(dataset) +if use_multi_dp: + sampler = DistributedSampler( + dataset, + num_replicas=total_dp_groups, + rank=dp_rank, + shuffle=False, + drop_last=True, + ) +elif dist.is_initialized(): + sampler = SequentialSampler(dataset) +else: + sampler = SequentialSampler(dataset) +dataloader = DataLoader( + dataset, batch_size=1, sampler=sampler, num_workers=0, + drop_last=False, collate_fn=eval_collate_fn, +) + +if is_main_process: + os.makedirs(config.output_folder, exist_ok=True) +if dist.is_initialized(): + dist.barrier() + +save_latents_only = section_get( + config, + "inference", + "save_latents_only", + getattr(config, "save_latents_only", getattr(config, "save_latent_only", False)), + aliases=("save_latent_only", "return_latents"), +) + +for i, batch_data in tqdm(enumerate(dataloader), disable=not is_main_process): + idx = batch_data["idx"].item() + block_prompts = list(batch_data["prompts"][0]) + if len(block_prompts) < num_blocks: + block_prompts += [block_prompts[-1]] * (num_blocks - len(block_prompts)) + elif len(block_prompts) > num_blocks: + block_prompts = block_prompts[:num_blocks] + prompt = block_prompts[0] + prompts = [block_prompts] * config.num_samples + + shape = config.image_or_video_shape + sampled_noise = torch.randn( + [config.num_samples, config.num_output_frames, shape[2], shape[3], shape[4]], + device=device, + dtype=torch.bfloat16, + ) + if use_effective_sp: + src = dist.get_global_rank(sp_group, 0) + dist.broadcast(sampled_noise, src=src, group=sp_group) + + if is_main_process: + print(f"\n[SP] Generating video {idx}: {prompt[:60]}...") + generated = pipeline.inference( + noise=sampled_noise, + text_prompts=prompts, + return_latents=save_latents_only, + ) + + should_save = (sp_rank == 0) if use_effective_sp else True + if idx < num_prompts and should_save: + if getattr(pipeline, "is_lora_merged", False): + model_type = "merged_lora" + elif getattr(pipeline, "is_lora_enabled", False): + model_type = "lora" + elif getattr(config, "use_ema", False): + model_type = "ema" + else: + model_type = "regular" + mode = f"dp{dp_rank}_sp{effective_sp_size}" if use_multi_dp else f"sp{effective_sp_size}" + if save_latents_only: + latents = generated + else: + current_video = rearrange(generated, "b t c h w -> b t h w c").cpu() + video = 255.0 * current_video + if hasattr(pipeline.vae, "model") and hasattr(pipeline.vae.model, "clear_cache"): + pipeline.vae.model.clear_cache() + + for seed_idx in range(config.num_samples): + if config.save_with_index: + base_name = f"rank{rank}-{idx}-{seed_idx}_{model_type}_{mode}" + else: + base_name = f"rank{rank}-{prompt[:100]}-{seed_idx}_{model_type}_{mode}" + if save_latents_only: + torch.save(latents[seed_idx].cpu(), os.path.join(config.output_folder, f"{base_name}.pt")) + else: + output_path = os.path.join(config.output_folder, f"{base_name}.mp4") + fps = 24 if "5B" in config.model_kwargs.model_name else 16 + write_video(output_path, video[seed_idx], fps=fps) + if is_main_process: + print(f"[SP] Saved: {output_path}") + save_prompts_to_txt( + prompts[seed_idx] if isinstance(prompts[seed_idx], list) else [prompts[seed_idx]], + os.path.join(config.output_folder, f"{base_name}_prompts.txt"), + is_main_process=is_main_process, + ) + + if config.inference_iter != -1 and i >= config.inference_iter: + break + +if dist.is_initialized(): + dist.barrier() + dist.destroy_process_group() diff --git a/model/__init__.py b/model/__init__.py new file mode 100644 index 0000000..1d37685 --- /dev/null +++ b/model/__init__.py @@ -0,0 +1,6 @@ +from .dmd import DMD +from .diffusion import CausalDiffusion +__all__ = [ + "DMD", + "CausalDiffusion", +] diff --git a/model/base.py b/model/base.py new file mode 100644 index 0000000..1ea3eb8 --- /dev/null +++ b/model/base.py @@ -0,0 +1,545 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +from typing import Tuple +from einops import rearrange +from torch import nn +import torch.distributed as dist +import torch +import math + +from pipeline import SelfForcingTrainingPipeline +from utils.config import section_get +from utils.loss import get_denoising_loss +from utils.wan_5b_wrapper import WanDiffusionWrapper, WanTextEncoder, WanVAEWrapper + + +def build_default_denoising_step_list(sampling_steps, num_train_timesteps=1000, shift=1.0, include_zero=True): + sigmas = torch.linspace(1.0, 0.0, int(sampling_steps) + 1, dtype=torch.float32)[:-1] + sigmas = shift * sigmas / (1 + (shift - 1) * sigmas) + timesteps = (sigmas * num_train_timesteps).to(torch.long) + if include_zero: + timesteps = torch.cat([timesteps, torch.zeros(1, dtype=torch.long)]) + return timesteps + + +class BaseModel(nn.Module): + def __init__(self, args, device): + super().__init__() + print("args.model_kwargs.model_name", args.model_kwargs.model_name) + self._initialize_models(args, device) + + self.device = device + self.args = args + self.independent_first_frame = getattr(args, "independent_first_frame", False) + self.dtype = torch.bfloat16 if args.mixed_precision else torch.float32 + self.denoising_step_list = None + if getattr(args, "denoising_step_list", None) is not None: + self.denoising_step_list = torch.tensor(args.denoising_step_list, dtype=torch.long) + if getattr(args, "warp_denoising_step", False): + timesteps = torch.cat((self.scheduler.timesteps.cpu(), torch.tensor([0], dtype=torch.float32))) + self.denoising_step_list = timesteps[1000 - self.denoising_step_list] + elif getattr(args, "sampling_steps", None) is not None: + self.denoising_step_list = build_default_denoising_step_list( + sampling_steps=args.sampling_steps, + num_train_timesteps=getattr(args, "num_train_timestep", self.scheduler.num_train_timesteps), + shift=getattr(args, "timestep_shift", self.scheduler.shift), + include_zero=True, + ) + + def _initialize_models(self, args, device): + self.real_model_name = getattr(args, "real_name", "Wan2.2-TI2V-5B") + self.fake_model_name = getattr(args, "fake_name", "Wan2.2-TI2V-5B") + self.local_attn_size = section_get( + args, + "inference", + "local_attn_size", + getattr(args, "model_kwargs", {}).get("local_attn_size", -1), + aliases=("inference_local_attn_size",), + ) + all_causal = getattr(args, "all_causal", False) + score_is_causal = all_causal + + model_name = args.model_kwargs.get("model_name", "Wan2.2-TI2V-5B") + if "5B" not in model_name: + raise ValueError(f"Only Wan2.2-TI2V-5B is supported in this release, got {model_name}") + if not dist.is_initialized() or dist.get_rank() == 0: + tag = "all-causal 5B mode" if all_causal else "Wan2.2-TI2V-5B" + print(f"Using {tag}") + + # Generator + generator_is_causal = getattr(args, "generator_is_causal", True) + self.generator = WanDiffusionWrapper(**getattr(args, "model_kwargs", {}), is_causal=generator_is_causal) + self.generator.model.requires_grad_(True) + + # Real Score + real_kwargs = getattr(args, "real_model_kwargs", {"model_name": self.real_model_name}) + self.real_score = WanDiffusionWrapper(**real_kwargs, is_causal=score_is_causal) + self.real_score.model.requires_grad_(False) + + # Fake Score + fake_kwargs = getattr(args, "fake_model_kwargs", {"model_name": self.fake_model_name}) + self.fake_score = WanDiffusionWrapper(**fake_kwargs, is_causal=score_is_causal) + self.fake_score.model.requires_grad_(True) + + # Text Encoder & VAE + self.text_encoder = WanTextEncoder() + self.text_encoder.requires_grad_(False) + + self.vae = WanVAEWrapper() + self.vae.requires_grad_(False) + + self.scheduler = self.generator.get_scheduler() + self.scheduler.timesteps = self.scheduler.timesteps.to(device) + + def _get_timestep( + self, + min_timestep: int, + max_timestep: int, + batch_size: int, + num_frame: int, + num_frame_per_block: int, + uniform_timestep: bool = False + ) -> torch.Tensor: + """ + Randomly generate a timestep tensor based on the generator's task type. It uniformly samples a timestep + from the range [min_timestep, max_timestep], and returns a tensor of shape [batch_size, num_frame]. + - If uniform_timestep, it will use the same timestep for all frames. + - If not uniform_timestep, it will use a different timestep for each block. + """ + if uniform_timestep: + timestep = torch.randint( + min_timestep, + max_timestep, + [batch_size, 1], + device=self.device, + dtype=torch.long + ).repeat(1, num_frame) + return timestep + else: + timestep = torch.randint( + min_timestep, + max_timestep, + [batch_size, num_frame], + device=self.device, + dtype=torch.long + ) + # make the noise level the same within every block + if self.independent_first_frame and not getattr(self.args, "i2v", False): + # the first frame is always kept the same + timestep_from_second = timestep[:, 1:] + timestep_from_second = timestep_from_second.reshape( + timestep_from_second.shape[0], -1, num_frame_per_block) + timestep_from_second[:, :, 1:] = timestep_from_second[:, :, 0:1] + timestep_from_second = timestep_from_second.reshape( + timestep_from_second.shape[0], -1) + timestep = torch.cat([timestep[:, 0:1], timestep_from_second], dim=1) + else: + timestep = timestep.reshape( + timestep.shape[0], -1, num_frame_per_block) + timestep[:, :, 1:] = timestep[:, :, 0:1] + timestep = timestep.reshape(timestep.shape[0], -1) + return timestep + + +class SelfForcingModel(BaseModel): + def __init__(self, args, device): + super().__init__(args, device) + self.denoising_loss_func = get_denoising_loss(getattr(args, "denoising_loss_type", "flow"))() + + def _run_generator( + self, + image_or_video_shape, + conditional_dict: dict, + initial_latent: torch.tensor = None, + slice_last_frames: int = 21, + noise=None, + clean_latent: torch.Tensor = None, + ) -> Tuple[torch.Tensor, torch.Tensor]: + """ + Optionally simulate the generator's input from noise using backward simulation + and then run the generator for one-step. + Input: + - image_or_video_shape: a list containing the shape of the image or video [B, F, C, H, W]. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - initial_latent: a tensor containing the initial latents [B, F, C, H, W]. + - slice_last_frames: number of frames to keep from the end. + - noise: optional pre-sampled noise. + - clean_latent: a tensor [B, F, C, H, W] for off-policy mode (backward_simulation=False). + Output: + - pred_image: a tensor with shape [B, F, C, H, W]. + - gradient_mask: boolean tensor or None. + - denoised_timestep_from: int or None. + - denoised_timestep_to: int or None. + """ + use_backward_simulation = getattr(self.args, "backward_simulation", True) + + if use_backward_simulation: + return self._run_generator_backward_simulation( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + initial_latent=initial_latent, + slice_last_frames=slice_last_frames, + noise=noise, + ) + else: + assert clean_latent is not None, "clean_latent is required when backward_simulation=False" + return self._run_generator_off_policy( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + clean_latent=clean_latent, + initial_latent=initial_latent, + ) + + def _run_generator_off_policy( + self, + image_or_video_shape, + conditional_dict: dict, + clean_latent: torch.Tensor, + initial_latent: torch.Tensor = None, + ) -> Tuple[torch.Tensor, torch.Tensor, int, int]: + """ + Off-policy generator: add noise to clean_latent at each timestep in + denoising_step_list, randomly pick one, and run the generator for a + single forward pass. Returns (pred_x0, gradient_mask, + denoised_timestep_from, denoised_timestep_to). + """ + batch_size, num_frame = image_or_video_shape[:2] + denoising_step_list = self.denoising_step_list.to(self.device) + + # Build noisy versions at every timestep in the schedule + simulated_noisy_input = [] + for ts in denoising_step_list: + rand_noise = torch.randn_like(clean_latent) + noisy_timestep = ts * torch.ones( + [batch_size, num_frame], device=self.device, dtype=torch.long) + + if ts.item() != 0: + noisy_image = self.scheduler.add_noise( + clean_latent.flatten(0, 1), + rand_noise.flatten(0, 1), + noisy_timestep.flatten(0, 1), + ).unflatten(0, (batch_size, num_frame)) + else: + noisy_image = clean_latent + simulated_noisy_input.append(noisy_image) + + simulated_noisy_input = torch.stack(simulated_noisy_input, dim=1) # [B, T, F, C, H, W] + + # Randomly sample a step index [B, F], uniform within each block + num_steps = len(denoising_step_list) + generator_is_causal = getattr(self.args, "generator_is_causal", True) + if not generator_is_causal: + # Bidirectional generator: all frames must share the same timestep + index = torch.randint(0, num_steps, [batch_size, 1], + device=self.device, dtype=torch.long).expand(-1, num_frame).contiguous() + else: + index = torch.randint(0, num_steps, [batch_size, num_frame], + device=self.device, dtype=torch.long) + # Make the index the same within every block + if self.independent_first_frame and not getattr(self.args, "i2v", False): + idx_rest = index[:, 1:] + idx_rest = idx_rest.reshape(batch_size, -1, self.num_frame_per_block) + idx_rest[:, :, 1:] = idx_rest[:, :, 0:1] + index = torch.cat([index[:, :1], idx_rest.reshape(batch_size, -1)], dim=1) + else: + index = index.reshape(batch_size, -1, self.num_frame_per_block) + index[:, :, 1:] = index[:, :, 0:1] + index = index.reshape(batch_size, -1) + + # Gather the noisy input corresponding to the sampled index + noisy_input = torch.gather( + simulated_noisy_input, dim=1, + index=index.reshape(batch_size, 1, num_frame, 1, 1, 1).expand( + -1, -1, -1, *image_or_video_shape[2:]) + ).squeeze(1) # [B, F, C, H, W] + + timestep = denoising_step_list[index] # [B, F] + context_frames = int(initial_latent.shape[1]) if initial_latent is not None else 0 + if context_frames > 0: + if context_frames >= num_frame: + raise ValueError( + f"initial_latent has {context_frames} frames but training clip has {num_frame}." + ) + noisy_input[:, :context_frames] = initial_latent.to( + device=noisy_input.device, + dtype=noisy_input.dtype, + ) + timestep[:, :context_frames] = 0 + + # Single forward pass through the generator + _, pred_x0 = self.generator( + noisy_image_or_video=noisy_input, + conditional_dict=conditional_dict, + timestep=timestep.float(), + clean_x=clean_latent if getattr(self.args, "teacher_forcing", False) else None, + ) + pred_x0 = pred_x0.to(self.dtype) + + # Derive denoised_timestep_from / to from the sampled index for ts_schedule + # Use the first batch element's first block index as the representative scalar + rep_idx = index[0, 0].item() + denoised_timestep_from = denoising_step_list[rep_idx].item() + if rep_idx + 1 < num_steps: + denoised_timestep_to = denoising_step_list[rep_idx + 1].item() + else: + denoised_timestep_to = 0 + + gradient_mask = None + if context_frames > 0: + pred_x0[:, :context_frames] = initial_latent.to( + device=pred_x0.device, + dtype=pred_x0.dtype, + ) + gradient_mask = torch.ones_like(pred_x0, dtype=torch.bool) + gradient_mask[:, :context_frames] = False + return pred_x0, gradient_mask, denoised_timestep_from, denoised_timestep_to + + def _run_generator_backward_simulation( + self, + image_or_video_shape, + conditional_dict: dict, + initial_latent: torch.tensor = None, + slice_last_frames: int = 21, + noise=None, + ) -> Tuple[torch.Tensor, torch.Tensor]: + """ + On-policy generator via backward simulation (original path). + """ + if initial_latent is not None: + conditional_dict["initial_latent"] = initial_latent + noise_shape = image_or_video_shape.copy() + + separate_first_frame = self.independent_first_frame and not getattr(self.args, "i2v", False) + min_num_frames = (self.min_num_training_frames - 1) if separate_first_frame else self.min_num_training_frames + max_num_frames = self.num_training_frames - 1 if separate_first_frame else self.num_training_frames + assert max_num_frames % self.num_frame_per_block == 0 + assert min_num_frames % self.num_frame_per_block == 0 + max_num_blocks = max_num_frames // self.num_frame_per_block + min_num_blocks = min_num_frames // self.num_frame_per_block + num_generated_blocks = torch.randint(min_num_blocks, max_num_blocks + 1, (1,), device=self.device) + dist.broadcast(num_generated_blocks, src=0) + num_generated_blocks = num_generated_blocks.item() + num_generated_frames = num_generated_blocks * self.num_frame_per_block + if separate_first_frame and initial_latent is None: + num_generated_frames += 1 + min_num_frames += 1 + noise_shape[1] = num_generated_frames + if noise is not None: + noise = noise[:, :num_generated_frames] + else: + noise = torch.randn(noise_shape, device=self.device, dtype=self.dtype) + + pred_image_or_video, denoised_timestep_from, denoised_timestep_to = self._consistency_backward_simulation( + noise=noise, + slice_last_frames=slice_last_frames, + **conditional_dict, + ) + + if slice_last_frames != -1 and pred_image_or_video.shape[1] > slice_last_frames: + with torch.no_grad(): + if slice_last_frames > 1: + latent_to_decode = pred_image_or_video[:, :-(slice_last_frames - 1), ...] + else: + latent_to_decode = pred_image_or_video + pixels = self.vae.decode_to_pixel(latent_to_decode) + frame = pixels[:, -1:, ...].to(self.dtype) + frame = rearrange(frame, "b t c h w -> b c t h w") + image_latent = self.vae.encode_to_latent(frame).to(self.dtype) + if slice_last_frames > 1: + last_frames = pred_image_or_video[:, -(slice_last_frames - 1):, ...] + pred_image_or_video_sliced = torch.cat([image_latent, last_frames], dim=1) + else: + pred_image_or_video_sliced = image_latent + if num_generated_frames != min_num_frames: + gradient_mask = torch.ones_like(pred_image_or_video_sliced, dtype=torch.bool) + if self.independent_first_frame: + gradient_mask[:, :1] = False + else: + gradient_mask[:, :self.num_frame_per_block] = False + else: + gradient_mask = None + else: + pred_image_or_video_sliced = pred_image_or_video + if num_generated_frames != min_num_frames: + gradient_mask = torch.ones_like(pred_image_or_video_sliced, dtype=torch.bool) + if self.independent_first_frame: + gradient_mask[:, :1] = False + else: + gradient_mask[:, :self.num_frame_per_block] = False + else: + gradient_mask = None + + pred_image_or_video_sliced = pred_image_or_video_sliced.to(self.dtype) + return pred_image_or_video_sliced, gradient_mask, denoised_timestep_from, denoised_timestep_to + + def _consistency_backward_simulation( + self, + noise: torch.Tensor, + slice_last_frames: int = 21, + **conditional_dict: dict + ) -> torch.Tensor: + """ + Simulate the generator's input from noise to avoid training/inference mismatch. + See Sec 4.5 of the DMD2 paper (https://arxiv.org/abs/2405.14867) for details. + Here we use the consistency sampler (https://arxiv.org/abs/2303.01469) + Input: + - noise: a tensor sampled from N(0, 1) with shape [B, F, C, H, W] where the number of frame is 1 for images. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + Output: + - output: a tensor with shape [B, T, F, C, H, W]. + T is the total number of timesteps. output[0] is a pure noise and output[i] and i>0 + represents the x0 prediction at each timestep. + """ + generator_is_causal = getattr(self.args, "generator_is_causal", True) + if not generator_is_causal: + return self._bidirectional_backward_simulation( + noise=noise, + slice_last_frames=slice_last_frames, + **conditional_dict, + ) + + if self.inference_pipeline is None: + self._initialize_inference_pipeline() + + return self.inference_pipeline.inference_with_trajectory( + noise=noise, **conditional_dict, slice_last_frames=slice_last_frames + ) + + def _bidirectional_backward_simulation( + self, + noise: torch.Tensor, + slice_last_frames: int = 21, + **conditional_dict: dict + ) -> Tuple[torch.Tensor, int, int]: + """ + Backward simulation for bidirectional (non-causal) generator. + All frames are processed at once at each denoising step — no KV cache, + no block-by-block processing. + """ + from wan_5b.utils.fm_solvers_unipc import FlowUniPCMultistepScheduler + + batch_size, num_frames = noise.shape[:2] + + # Resolve single-segment prompt for bidirectional model + prompt_embeds = conditional_dict["prompt_embeds"] + num_segments = prompt_embeds.shape[0] // batch_size + if num_segments > 1: + prompt_embeds = prompt_embeds.reshape( + batch_size, num_segments, *prompt_embeds.shape[1:])[:, 0] + cond = {**conditional_dict, "prompt_embeds": prompt_embeds} + + # Setup UniPC scheduler + sampling_steps = getattr(self.args, "sampling_steps", None) or len(self.denoising_step_list) + shift = self.scheduler.shift + num_train_timesteps = self.scheduler.num_train_timesteps + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=num_train_timesteps, shift=1, use_dynamic_shifting=False) + sample_scheduler.set_timesteps(sampling_steps, device=noise.device, shift=shift) + unipc_timesteps = sample_scheduler.timesteps + num_denoising_steps = len(unipc_timesteps) + + # Pick a random exit step (synchronized across ranks) + last_step_only = getattr(self.args, "last_step_only", False) + if last_step_only: + exit_step = num_denoising_steps - 1 + else: + exit_step_t = torch.randint(0, num_denoising_steps, (1,), device=self.device) + dist.broadcast(exit_step_t, src=0) + exit_step = exit_step_t.item() + + # Multi-step denoising loop (full-sequence bidirectional forward each step) + latents = noise + for index, t in enumerate(unipc_timesteps): + timestep = t * torch.ones( + [batch_size, num_frames], device=noise.device, dtype=torch.float32) + + if index < exit_step: + with torch.no_grad(): + flow_pred, _ = self.generator( + noisy_image_or_video=latents, + conditional_dict=cond, + timestep=timestep, + ) + latents = sample_scheduler.step( + flow_pred, t, latents, return_dict=False)[0] + else: + # Exit step: forward with gradient + flow_pred, denoised_pred = self.generator( + noisy_image_or_video=latents, + conditional_dict=cond, + timestep=timestep, + ) + break + + # Compute denoised_timestep_from / to + if exit_step == num_denoising_steps - 1: + denoised_timestep_to = 0 + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_step].cuda()).abs(), dim=0).item() + else: + denoised_timestep_to = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_step + 1].cuda()).abs(), dim=0).item() + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_step].cuda()).abs(), dim=0).item() + + return denoised_pred, denoised_timestep_from, denoised_timestep_to + + def _initialize_inference_pipeline(self): + """ + Lazy initialize the inference pipeline during the first backward simulation run. + Here we encapsulate the inference code with a model-dependent outside function. + We pass our FSDP-wrapped modules into the pipeline to save memory. + """ + local_attn_size = section_get( + self.args, + "inference", + "local_attn_size", + getattr(self.args, "model_kwargs", {}).get("local_attn_size", -1), + aliases=("inference_local_attn_size",), + ) + sink_size = section_get( + self.args, + "inference", + "sink_size", + getattr(self.args, "model_kwargs", {}).get("sink_size", 0), + aliases=("inference_sink_size",), + ) + multi_shot_sink = section_get(self.args, "inference", "multi_shot_sink", False) + multi_shot_rope_offset = section_get( + self.args, + "inference", + "multi_shot_rope_offset", + 0.0, + ) + scene_cut_prefix = section_get(self.args, "inference", "scene_cut_prefix", "[SCENE_CUT]") + slice_last_frames = getattr(self.args, "slice_last_frames", 21) + # do not use self.num_training_frames, because it is changed by generator_loss and critic_loss + num_training_frames = getattr(self.args, "num_training_frames") + if local_attn_size == -1: + kv_cache_size = num_training_frames + else: + kv_cache_size = min(local_attn_size + slice_last_frames, num_training_frames) + frame_seq_length = math.prod(self.args.image_or_video_shape[-2:]) // 4 + self.inference_pipeline = SelfForcingTrainingPipeline( + denoising_step_list=self.denoising_step_list, + scheduler=self.scheduler, + generator=self.generator, + num_frame_per_block=self.num_frame_per_block, + independent_first_frame=self.independent_first_frame, + same_step_across_blocks=getattr( + self.args, "same_step_across_blocks", getattr(self, "same_step_across_blocks", False) + ), + last_step_only=getattr(self.args, "last_step_only", False), + num_max_frames=kv_cache_size, + context_noise=getattr(self.args, "context_noise", 0), + sampling_steps=getattr(self.args, "sampling_steps", None), + local_attn_size=local_attn_size, + sink_size=sink_size, + multi_shot_sink=multi_shot_sink, + scene_cut_prefix=scene_cut_prefix, + multi_shot_rope_offset=multi_shot_rope_offset, + slice_last_frames=slice_last_frames, + num_training_frames=num_training_frames, + model_name=getattr(self.args, "model_kwargs", {}).get("model_name", None), + frame_seq_length=frame_seq_length, + ) diff --git a/model/diffusion.py b/model/diffusion.py new file mode 100644 index 0000000..c00b0a8 --- /dev/null +++ b/model/diffusion.py @@ -0,0 +1,574 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 + +from typing import Tuple +import random +import torch + +from model.base import BaseModel +from pipeline import CausalDiffusionInferencePipeline +from utils.i2v_conditioning import _overwrite_i2v_context, _zero_i2v_context_timestep +from utils.wan_5b_wrapper import WanDiffusionWrapper, WanTextEncoder, WanVAEWrapper + + +class CausalDiffusion(BaseModel): + def __init__(self, args, device): + """ + Initialize the Diffusion loss module. + """ + super().__init__(args, device) + self.num_frame_per_block = getattr(args, "num_frame_per_block", 1) + if self.num_frame_per_block > 1: + self.generator.model.num_frame_per_block = self.num_frame_per_block + self.independent_first_frame = getattr(args, "independent_first_frame", False) + if self.independent_first_frame and not getattr(args, "i2v", False): + self.generator.model.independent_first_frame = True + + if args.gradient_checkpointing: + self.generator.enable_gradient_checkpointing() + + # Step 2: Initialize all hyperparameters + self.num_train_timestep = args.num_train_timestep + self.min_step = int(0.02 * self.num_train_timestep) + self.max_step = int(0.98 * self.num_train_timestep) + self.guidance_scale = args.guidance_scale + self.timestep_shift = getattr(args, "timestep_shift", 1.0) + self.teacher_forcing = getattr(args, "teacher_forcing", False) + # Noise augmentation in teacher forcing, we add small noise to clean context latents + self.noise_augmentation_max_timestep = getattr(args, "noise_augmentation_max_timestep", 0) + + self.args = args + self.device = device + self.inference_pipeline = None + + # Error recycling (SVI-style error buffer) + # When ``enable_position_bucketing`` is true, each rank holds a 2D + # buffer ``(local_block_position × timestep)``. The pos dimension only + # covers the LOCAL slice of the sequence this rank is responsible for + # (no cross-SP-rank pos sharing — those positions are simply not + # reachable by this rank during forward), so memory cost scales as + # ``num_blocks_global / sp_size`` instead of ``num_blocks_global``. + # ``global_block_offset`` is recorded for logging only. + # During the first ``buffer_warmup_iter`` global steps, errors are + # all-gathered across the DP group (ranks with the same SP rank but + # different DP replicas), so each rank's local pos buckets fill up + # ``dp_size`` × faster without any wasted bandwidth. + self.error_buffer = None + self.noise_error_buffer = None + self.er_num_blocks = 0 # local; >0 means 2D position-bucketed + self.er_block_offset = 0 # global block offset for THIS rank + er_cfg = getattr(args, "error_recycling", None) + if er_cfg is not None and getattr(er_cfg, "enabled", False): + from utils.error_buffer import build_error_buffer + cfg_dict = er_cfg if isinstance(er_cfg, dict) else dict(er_cfg) + cfg_dict.setdefault("num_train_timesteps", self.num_train_timestep) + sp_size = int(getattr(args, "sequence_parallel_size", 1) or 1) + if cfg_dict.get("enable_position_bucketing", False): + shape = list(getattr(args, "image_or_video_shape", [1, 0])) + total_frames = int(shape[1]) if len(shape) > 1 else 0 + assert total_frames > 0 and self.num_frame_per_block > 0, ( + "enable_position_bucketing=true requires " + "image_or_video_shape[1] and num_frame_per_block to be set." + ) + num_blocks_global = total_frames // self.num_frame_per_block + assert num_blocks_global % sp_size == 0, ( + f"num_blocks_global ({num_blocks_global}) must be divisible " + f"by sequence_parallel_size ({sp_size})." + ) + self.er_num_blocks = num_blocks_global // sp_size # local + # Determine this rank's SP index → global block offset. + if sp_size > 1: + import torch.distributed as dist + if dist.is_initialized(): + sp_rank = dist.get_rank() % sp_size + else: + sp_rank = 0 + else: + sp_rank = 0 + self.er_block_offset = sp_rank * self.er_num_blocks + + # Shard timestep buckets across SP ranks: each SP rank only + # stores t_bucket % sp_size == sp_rank, cutting per-rank CPU + # memory by ~sp_size. This uses the same SP dimension that + # already splits positions in 2D mode, so both 1D and 2D + # follow one save/load pattern (per sp_rank). + import torch.distributed as dist + if sp_size > 1 and dist.is_initialized(): + er_shard_rank = dist.get_rank() % sp_size + er_shard_size = sp_size + else: + er_shard_rank = 0 + er_shard_size = 1 + + self.error_buffer = build_error_buffer( + cfg_dict, num_blocks=self.er_num_blocks, + global_block_offset=self.er_block_offset, + shard_rank=er_shard_rank, shard_size=er_shard_size, + ) + self.noise_error_buffer = build_error_buffer( + cfg_dict, num_blocks=self.er_num_blocks, + global_block_offset=self.er_block_offset, + shard_rank=er_shard_rank, shard_size=er_shard_size, + ) + self.er_context_inject_prob = float(cfg_dict.get("context_inject_prob", 0.9)) + self.er_latent_inject_prob = float(cfg_dict.get("latent_inject_prob", 0.0)) + self.er_noise_inject_prob = float(cfg_dict.get("noise_inject_prob", 0.0)) + self.er_clean_prob = float(cfg_dict.get("clean_prob", 0.0)) + self.er_clean_buffer_update_prob = float(cfg_dict.get("clean_buffer_update_prob", 0.1)) + self.er_start_step = int(cfg_dict.get("start_step", 0)) + self.er_buffer_warmup_iter = int(cfg_dict.get("buffer_warmup_iter", 50)) + self.er_skip_block_0 = bool(cfg_dict.get("skip_block_0", False)) + + def _initialize_models(self, args, device): + model_name = getattr(args.model_kwargs, "model_name", "Wan2.2-TI2V-5B") + if "5B" not in model_name: + raise ValueError(f"Only Wan2.2-TI2V-5B is supported in this release, got {model_name}") + self.generator = WanDiffusionWrapper(**getattr(args, "model_kwargs", {}), is_causal=True) + self.generator.model.requires_grad_(True) + + self.text_encoder = WanTextEncoder() + self.text_encoder.requires_grad_(False) + + self.vae = WanVAEWrapper() + self.vae.requires_grad_(False) + + self.scheduler = self.generator.get_scheduler() + self.scheduler.timesteps = self.scheduler.timesteps.to(device) + + def generator_loss( + self, + image_or_video_shape, + conditional_dict: dict, + unconditional_dict: dict, + clean_latent: torch.Tensor, + initial_latent: torch.Tensor = None, + loss_mask: torch.Tensor = None, + loss_mask_global_valid_count: torch.Tensor = None, + global_step: int = None, + ) -> Tuple[torch.Tensor, dict]: + """ + Generate image/videos from noise and compute the DMD loss. + The noisy input to the generator is backward simulated. + This removes the need of any datasets during distillation. + See Sec 4.5 of the DMD2 paper (https://arxiv.org/abs/2405.14867) for details. + Input: + - image_or_video_shape: a list containing the shape of the image or video [B, F, C, H, W]. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - unconditional_dict: a dictionary containing the unconditional information (e.g. null/negative text embeddings, null/negative image embeddings). + - clean_latent: a tensor containing the clean latents [B, F, C, H, W]. Need to be passed when no backward simulation is used. + - loss_mask: optional tensor of shape [B, F] with 1.0 for valid frames and 0.0 for padded frames. + Under Sequence Parallel this is already the local chunk. + - loss_mask_global_valid_count: optional scalar tensor with the total valid count across all SP ranks. + When provided (SP mode), used as the denominator instead of the local loss_mask.sum(). + - global_step: current training step, used for error recycling delayed start. + Output: + - loss: a scalar tensor representing the generator loss. + - generator_log_dict: a dictionary containing the intermediate tensors for logging. + """ + batch_size, num_frame = image_or_video_shape[:2] + + noise = torch.randn_like(clean_latent) + # Step 2: Randomly sample a timestep and add noise to denoiser inputs + index = self._get_timestep( + 0, + self.scheduler.num_train_timesteps, + image_or_video_shape[0], + image_or_video_shape[1], + self.num_frame_per_block, + uniform_timestep=False + ) + timestep = self.scheduler.timesteps[index].to(dtype=self.dtype, device=self.device) + context_latent = ( + initial_latent + if getattr(self.args, "i2v", False) and initial_latent is not None + else None + ) + context_frames = int(context_latent.shape[1]) if context_latent is not None else 0 + if context_frames > 0: + if context_frames >= num_frame: + raise ValueError( + f"initial_latent has {context_frames} frames but training clip has {num_frame}." + ) + timestep[:, :context_frames] = 0 + + # Step 2.5 & 3.5: Error recycling — clean_prob acts as a master switch. + # When clean_prob fires, skip ALL error injection and use pristine input; + # otherwise each injection type rolls its own probability and is gated + # only by whether the corresponding buffer has any samples (SVI behavior). + # + # NOTE on rank-sync: random.random() below is INTENTIONALLY independent + # across ranks. None of these decisions guard a collective call (we use + # SVI's pattern of unconditional all_gather + local random replay in + # Step 5), so per-rank divergence here only affects which slice of data + # gets corrupted on which rank — perfectly safe under DP+SP, and matches + # SVI's behavior exactly. + er_latent_injected = False + er_noise_injected = False + er_injected = False + er_use_clean = False + er_ready = ( + self.error_buffer is not None + and (global_step is None or global_step >= self.er_start_step) + ) + if er_ready and self.er_clean_prob > 0 and random.random() < self.er_clean_prob: + er_use_clean = True + + # Noise error injection (SVI's noise_prob): corrupt noise input. + # training_target is then computed with the corrupted noise so the + # model learns to predict a self-correcting velocity (SVI Eq. logic). + noise_for_train = noise + if ( + er_ready and not er_use_clean + and self.er_noise_inject_prob > 0 + and not self.noise_error_buffer.is_empty() + and random.random() < self.er_noise_inject_prob + ): + noise_for_train = self._inject_noise_error_buffer( + noise, index, batch_size, num_frame + ) + er_noise_injected = True + + # Latent error injection (SVI's latent_prob): corrupt clean_latent + # before noising. training_target keeps pointing to ORIGINAL clean_latent. + clean_latent_for_noise = clean_latent + if ( + er_ready and not er_use_clean + and self.er_latent_inject_prob > 0 + and not self.error_buffer.is_empty() + and random.random() < self.er_latent_inject_prob + ): + clean_latent_for_noise = self._inject_latent_error_buffer( + clean_latent, index, batch_size, num_frame + ) + er_latent_injected = True + + noisy_latents = self.scheduler.add_noise( + clean_latent_for_noise.flatten(0, 1), + noise_for_train.flatten(0, 1), + timestep.flatten(0, 1) + ).unflatten(0, (batch_size, num_frame)) + training_target = self.scheduler.training_target(clean_latent, noise_for_train, timestep) + if context_frames > 0: + noisy_latents[:, :context_frames] = context_latent.to( + device=noisy_latents.device, + dtype=noisy_latents.dtype, + ) + training_target[:, :context_frames] = 0 + + # Step 3: Noise augmentation, also add small noise to clean context latents + if self.noise_augmentation_max_timestep > 0: + index_clean_aug = self._get_timestep( + 0, + self.noise_augmentation_max_timestep, + image_or_video_shape[0], + image_or_video_shape[1], + self.num_frame_per_block, + uniform_timestep=False + ) + timestep_clean_aug = self.scheduler.timesteps[index_clean_aug].to(dtype=self.dtype, device=self.device) + clean_latent_aug = self.scheduler.add_noise( + clean_latent.flatten(0, 1), + noise.flatten(0, 1), + timestep_clean_aug.flatten(0, 1) + ).unflatten(0, (batch_size, num_frame)) + else: + clean_latent_aug = clean_latent + timestep_clean_aug = None + + # Step 3.5: Error recycling — inject sampled errors into clean prefix. + # 2D mode: per-position (random timestep). 1D mode: SVI global sampling. + if ( + er_ready and not er_use_clean + and not self.error_buffer.is_empty() + and random.random() < self.er_context_inject_prob + ): + clean_latent_aug = self._inject_error_buffer( + clean_latent_aug, index, batch_size, num_frame + ) + er_injected = True + + if context_frames > 0: + clean_latent_aug = _overwrite_i2v_context( + clean_latent_aug, context_latent, context_frames + ) + if timestep_clean_aug is not None: + timestep_clean_aug = _zero_i2v_context_timestep( + timestep_clean_aug, context_frames + ) + + # Compute loss + flow_pred, x0_pred = self.generator( + noisy_image_or_video=noisy_latents, + conditional_dict=conditional_dict, + timestep=timestep, + clean_x=clean_latent_aug if self.teacher_forcing else None, + aug_t=timestep_clean_aug if self.teacher_forcing else None, + ) + loss = torch.nn.functional.mse_loss( + flow_pred.float(), training_target.float(), reduction='none' + ).mean(dim=(2, 3, 4)) + loss = loss * self.scheduler.training_weight(timestep).unflatten(0, (batch_size, num_frame)) + if context_frames > 0: + if loss_mask is None: + loss_mask = torch.ones( + (batch_size, num_frame), + device=loss.device, + dtype=loss.dtype, + ) + loss_mask[:, :context_frames] = 0 + if loss_mask is not None: + loss = loss * loss_mask + valid_count = loss_mask_global_valid_count if loss_mask_global_valid_count is not None else loss_mask.sum() + loss = loss.sum() / valid_count.clamp(min=1.0) + else: + loss = loss.mean() + + log_dict = { + "x0": clean_latent.detach(), + "x0_pred": x0_pred.detach() + } + + # Step 5: Store prediction errors into error buffer. + # + # SVI-style two-phase pattern (avoids the rank-divergent collective + # deadlock that an ``if random.random() < p: all_gather()`` would + # introduce): + # PHASE A (collective, UNCONDITIONAL): every rank reaches the + # all_gather call together so NCCL stays in sync. + # PHASE B (local, GATED): each rank independently decides whether + # to actually replay the gathered items into its buffer. The + # gate uses random.random() per rank — divergence here is fine + # because no further collective follows. + if self.error_buffer is not None: + with torch.no_grad(): + # latent error: x0_pred - clean_latent ≡ -σ(v_pred - v_gt) — used for context/latent injection + latent_err = x0_pred.detach() - clean_latent.detach() + # noise error: SVI definition is (1-σ)(v_pred - v_gt) so the buffer entry, + # when later added directly to noise, equals ε_pred - ε_gt. + sigma = self.scheduler.sigmas.to(flow_pred.device)[index].reshape( + batch_size, num_frame, 1, 1, 1 + ).to(flow_pred.dtype) + noise_err = (flow_pred.detach() - training_target.detach()) * (1.0 - sigma) + + use_distributed = ( + global_step is not None + and global_step <= self.er_buffer_warmup_iter + ) + + # === PHASE A: collective — runs on EVERY rank, no gating === + if use_distributed: + lat_items = self._gather_errors_for_buffer( + self.error_buffer, latent_err, index, batch_size, num_frame + ) + noise_items = self._gather_errors_for_buffer( + self.noise_error_buffer, noise_err, index, batch_size, num_frame + ) + else: + lat_items = self._collect_local_items( + self.error_buffer, latent_err, index, batch_size, num_frame + ) + noise_items = self._collect_local_items( + self.noise_error_buffer, noise_err, index, batch_size, num_frame + ) + + # === PHASE B: local replay — random.random() per-rank is OK === + # When the input was clean (low-error), only update buffer with + # small probability to avoid flooding it with near-zero samples + # (SVI: clean_buffer_update_prob). + should_update = True + if er_use_clean and random.random() >= self.er_clean_buffer_update_prob: + should_update = False + if should_update: + self._apply_gathered_items(self.error_buffer, lat_items) + self._apply_gathered_items(self.noise_error_buffer, noise_items) + buf_stats = self.error_buffer.stats() + noise_buf_stats = self.noise_error_buffer.stats() + log_dict["er_total_added"] = buf_stats["total_added"] + log_dict["er_filled_buckets"] = buf_stats["filled_buckets"] + log_dict["er_total_entries"] = buf_stats["total_entries"] + log_dict["er_noise_total_entries"] = noise_buf_stats["total_entries"] + log_dict["er_injected"] = er_injected + log_dict["er_latent_injected"] = er_latent_injected + log_dict["er_noise_injected"] = er_noise_injected + + return loss, log_dict + + + def _inject_error_buffer(self, clean_latent_aug, index, batch_size, num_frame): + """Inject errors into the clean prefix (E_img). + + 2D (position-bucketed): the i-th LOCAL prefix block draws from + ``buckets[(i, *)]`` with a RANDOM timestep — the clean prefix is + the product of full ODE integration so its accumulated error can + come from any noise level, but its magnitude scales with the + block's global position. Note ``skip_block_0`` is interpreted in + the GLOBAL frame: only the very first SP rank may skip its block 0. + + 1D (timestep-bucketed): falls back to SVI ``sample_global``. + """ + block_size = self.num_frame_per_block + num_blocks = num_frame // block_size + result = clean_latent_aug.clone() + for b in range(batch_size): + for blk in range(num_blocks): + if self.er_skip_block_0 and (self.er_block_offset + blk) == 0: + continue + if self.er_num_blocks > 0: + err = self.error_buffer.sample_pos_any_t( + blk, device=result.device, dtype=result.dtype + ) + else: + err = self.error_buffer.sample_global( + device=result.device, dtype=result.dtype + ) + if err is not None: + start = blk * block_size + end = start + block_size + result[b, start:end] = result[b, start:end] + err + return result + + def _inject_latent_error_buffer(self, clean_latent, index, batch_size, num_frame): + """Inject errors into clean_latent before noising (E_vid). + + Matches BOTH block_position (LOCAL) and timestep when the buffer is + 2D, else only timestep (SVI default). + """ + block_size = self.num_frame_per_block + num_blocks = num_frame // block_size + index_per_block = index[:, ::block_size] + result = clean_latent.clone() + for b in range(batch_size): + for blk in range(num_blocks): + t_idx = index_per_block[b, blk].item() + pos = blk if self.er_num_blocks > 0 else None + err = self.error_buffer.sample( + t_idx, device=result.device, dtype=result.dtype, + block_pos=pos, + ) + if err is not None: + start = blk * block_size + end = start + block_size + result[b, start:end] = result[b, start:end] + err + return result + + def _inject_noise_error_buffer(self, noise, index, batch_size, num_frame): + """Inject errors into the noise (E_noise). + + Same matching strategy as ``_inject_latent_error_buffer`` but reads + from the dedicated noise buffer. + """ + block_size = self.num_frame_per_block + num_blocks = num_frame // block_size + index_per_block = index[:, ::block_size] + result = noise.clone() + for b in range(batch_size): + for blk in range(num_blocks): + t_idx = index_per_block[b, blk].item() + pos = blk if self.er_num_blocks > 0 else None + err = self.noise_error_buffer.sample( + t_idx, device=result.device, dtype=result.dtype, + block_pos=pos, + ) + if err is not None: + start = blk * block_size + end = start + block_size + result[b, start:end] = result[b, start:end] + err + return result + + def _gather_errors_for_buffer( + self, buffer, error, index, batch_size, num_frame + ): + """All-gather errors/timesteps across the appropriate group and return + a list of ready-to-add ``(err_block, t_idx, pos_or_None)`` items. + + ★ This is a COLLECTIVE — every rank MUST reach this call together. + The caller is responsible for invoking it unconditionally during the + warmup window (just like SVI's ``all_gather`` outside the random + ``if`` blocks). Random decisions about whether to actually consume + the returned items belong to ``_apply_gathered_items`` instead. + + Group selection mirrors SVI's intent: + * **2D (num_blocks > 0)** — DP group only. Other SP ranks' samples + map to positions unreachable by this rank, so cross-SP gather + wastes bandwidth. + * **1D (num_blocks == 0)** — WORLD group (SVI default). Buckets + are pos-agnostic so every rank's errors are valid samples. + """ + import torch.distributed as dist + if not dist.is_initialized() or dist.get_world_size() <= 1: + return self._collect_local_items(buffer, error, index, batch_size, num_frame) + + if buffer.num_blocks > 0: + from wan_5b.distributed.sp_training import get_data_parallel_group + comm_group = get_data_parallel_group() + if comm_group is None: + return self._collect_local_items(buffer, error, index, batch_size, num_frame) + comm_size = dist.get_world_size(comm_group) + else: + comm_group = None + comm_size = dist.get_world_size() + + if comm_size <= 1: + return self._collect_local_items(buffer, error, index, batch_size, num_frame) + + err_local = error.detach().contiguous() + idx_local = index.detach().contiguous() + err_list = [torch.empty_like(err_local) for _ in range(comm_size)] + idx_list = [torch.empty_like(idx_local) for _ in range(comm_size)] + if comm_group is None: + dist.all_gather(err_list, err_local) + dist.all_gather(idx_list, idx_local) + else: + dist.all_gather(err_list, err_local, group=comm_group) + dist.all_gather(idx_list, idx_local, group=comm_group) + + block_size = self.num_frame_per_block + num_blocks = num_frame // block_size + items = [] + for err_r, idx_r in zip(err_list, idx_list): + idx_per_block = idx_r[:, ::block_size] + err_blocks = err_r.reshape( + batch_size, num_blocks, block_size, *err_r.shape[2:] + ) + for b in range(batch_size): + for blk in range(num_blocks): + pos = blk if buffer.num_blocks > 0 else None + items.append((err_blocks[b, blk], idx_per_block[b, blk].item(), pos)) + return items + + def _collect_local_items(self, buffer, error, index, batch_size, num_frame): + """Same item-list format as ``_gather_errors_for_buffer`` but with no + collective — used outside the warmup window or when distributed is off.""" + block_size = self.num_frame_per_block + num_blocks = num_frame // block_size + idx_per_block = index[:, ::block_size] + error_blocks = error.reshape( + batch_size, num_blocks, block_size, *error.shape[2:] + ) + items = [] + for b in range(batch_size): + for blk in range(num_blocks): + pos = blk if buffer.num_blocks > 0 else None + items.append((error_blocks[b, blk], idx_per_block[b, blk].item(), pos)) + return items + + def _apply_gathered_items(self, buffer, items): + """Pure local: drop ``items`` into ``buffer``. No collective, no + cross-rank coordination — each rank may invoke this independently + (or skip it entirely) without risking a deadlock.""" + for err_block, t_idx, pos in items: + buffer.add(err_block, t_idx, block_pos=pos) + + def _initialize_inference_pipeline(self): + """ + Lazy initialize the inference pipeline during the first backward simulation run. + Here we encapsulate the inference code with a model-dependent outside function. + We pass our FSDP-wrapped modules into the pipeline to save memory. + """ + self.inference_pipeline = CausalDiffusionInferencePipeline( + args=self.args, + device=self.device, + generator=self.generator, + text_encoder=self.text_encoder, + vae=self.vae + ) diff --git a/model/dmd.py b/model/dmd.py new file mode 100644 index 0000000..1e59d8b --- /dev/null +++ b/model/dmd.py @@ -0,0 +1,494 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 + +import torch.nn.functional as F +from typing import Optional, Tuple +import torch +import time + +from model.base import SelfForcingModel +import torch.distributed as dist +from utils.i2v_conditioning import ( + _get_i2v_context_frames, + _i2v_loss_mask_like, + _overwrite_i2v_context, + _zero_i2v_context_timestep, +) + + +class DMD(SelfForcingModel): + def __init__(self, args, device): + """ + Initialize the DMD (Distribution Matching Distillation) module. + This class is self-contained and compute generator and fake score losses + in the forward pass. + """ + super().__init__(args, device) + self.num_frame_per_block = getattr(args, "num_frame_per_block", 1) + self.same_step_across_blocks = getattr(args, "same_step_across_blocks", True) + self.min_num_training_frames = getattr(args, "min_num_training_frames", 21) + self.num_training_frames = getattr(args, "num_training_frames", 21) + + if self.num_frame_per_block > 1: + for diffusion_model in (self.generator, self.real_score, self.fake_score): + if hasattr(diffusion_model.model, "num_frame_per_block"): + diffusion_model.model.num_frame_per_block = self.num_frame_per_block + + self.independent_first_frame = getattr(args, "independent_first_frame", False) + if self.independent_first_frame and not getattr(args, "i2v", False): + self.generator.model.independent_first_frame = True + if args.gradient_checkpointing: + self.generator.enable_gradient_checkpointing() + self.fake_score.enable_gradient_checkpointing() + + # this will be init later with fsdp-wrapped modules + self.inference_pipeline: SelfForcingTrainingPipeline = None + + # Step 2: Initialize all dmd hyperparameters + self.num_train_timestep = getattr(args, "num_train_timestep", 1000) + self.min_step = int(0.02 * self.num_train_timestep) + self.max_step = int(0.98 * self.num_train_timestep) + if hasattr(args, "real_guidance_scale"): + self.real_guidance_scale = args.real_guidance_scale + self.fake_guidance_scale = args.fake_guidance_scale + else: + self.real_guidance_scale = args.guidance_scale + self.fake_guidance_scale = 0.0 + self.timestep_shift = getattr(args, "timestep_shift", 1.0) + self.ts_schedule = getattr(args, "ts_schedule", True) + self.ts_schedule_max = getattr(args, "ts_schedule_max", False) + self.min_score_timestep = getattr(args, "min_score_timestep", 0) + + if getattr(self.scheduler, "alphas_cumprod", None) is not None: + self.scheduler.alphas_cumprod = self.scheduler.alphas_cumprod.to(device) + else: + self.scheduler.alphas_cumprod = None + + @staticmethod + def _slice_block_cond_dict(cond_dict, batch_size, new_num_segments): + """Slice a block-wise conditional dict to keep only the last `new_num_segments` segments.""" + pe = cond_dict["prompt_embeds"] + orig_segs = pe.shape[0] // batch_size + if orig_segs > new_num_segments: + pe = pe.reshape(batch_size, orig_segs, *pe.shape[1:])[:, -new_num_segments:] + return {**cond_dict, "prompt_embeds": pe.reshape(batch_size * new_num_segments, *pe.shape[2:])} + return cond_dict + + def _compute_kl_grad( + self, noisy_image_or_video: torch.Tensor, + estimated_clean_image_or_video: torch.Tensor, + timestep: torch.Tensor, + conditional_dict: dict, unconditional_dict: dict, + normalization: bool = True, + clean_x: Optional[torch.Tensor] = None + ) -> Tuple[torch.Tensor, dict]: + """ + Compute the KL grad (eq 7 in https://arxiv.org/abs/2311.18828). + Input: + - noisy_image_or_video: a tensor with shape [B, F, C, H, W] where the number of frame is 1 for images. + - estimated_clean_image_or_video: a tensor with shape [B, F, C, H, W] representing the estimated clean image or video. + - timestep: a tensor with shape [B, F] containing the randomly generated timestep. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - unconditional_dict: a dictionary containing the unconditional information (e.g. null/negative text embeddings, null/negative image embeddings). + - normalization: a boolean indicating whether to normalize the gradient. + Output: + - kl_grad: a tensor representing the KL grad. + - kl_log_dict: a dictionary containing the intermediate tensors for logging. + """ + # Step 1: Compute the fake score + _, pred_fake_image_cond = self.fake_score( + noisy_image_or_video=noisy_image_or_video, + conditional_dict=conditional_dict, + timestep=timestep, + clean_x=clean_x + ) + + if self.fake_guidance_scale != 0.0: + _, pred_fake_image_uncond = self.fake_score( + noisy_image_or_video=noisy_image_or_video, + conditional_dict=unconditional_dict, + timestep=timestep, + clean_x=clean_x + ) + pred_fake_image = pred_fake_image_cond + ( + pred_fake_image_cond - pred_fake_image_uncond + ) * self.fake_guidance_scale + else: + pred_fake_image = pred_fake_image_cond + + # Step 2: Compute the real score + _, pred_real_image_cond = self.real_score( + noisy_image_or_video=noisy_image_or_video, + conditional_dict=conditional_dict, + timestep=timestep, + clean_x=clean_x + ) + + _, pred_real_image_uncond = self.real_score( + noisy_image_or_video=noisy_image_or_video, + conditional_dict=unconditional_dict, + timestep=timestep, + clean_x=clean_x + ) + + pred_real_image = pred_real_image_cond + ( + pred_real_image_cond - pred_real_image_uncond + ) * self.real_guidance_scale + + # Step 3: Compute the DMD gradient (DMD paper eq. 7). + grad = (pred_fake_image - pred_real_image) + + # NOTE: Changed the normalizer for causal teacher — per-block normalization + if normalization: + p_real = (estimated_clean_image_or_video - pred_real_image) + + B, F, C, H, W = p_real.shape + if dist.get_rank() == 0: + print(f"p_real: {p_real.shape}") + if ( + self.independent_first_frame + and not getattr(self.args, "i2v", False) + and (F - 1) % self.num_frame_per_block == 0 + ): + p_real_tail = p_real[:, 1:] + p_real_blocks = p_real_tail.view( + B, + (F - 1) // self.num_frame_per_block, + self.num_frame_per_block, + C, + H, + W, + ) + normalizer_tail = torch.abs(p_real_blocks).mean(dim=[2, 3, 4, 5], keepdim=True) + normalizer = torch.ones_like(p_real) + normalizer[:, 1:] = normalizer_tail.expand_as(p_real_blocks).reshape( + B, F - 1, C, H, W + ) + else: + p_real_blocks = p_real.view(B, F // self.num_frame_per_block, self.num_frame_per_block, C, H, W) + normalizer = torch.abs(p_real_blocks).mean(dim=[2, 3, 4, 5], keepdim=True) + normalizer = normalizer.expand_as(p_real_blocks).reshape(B, F, C, H, W) + + + grad = grad / normalizer + grad = torch.nan_to_num(grad) + + return grad, { + "dmdtrain_gradient_norm": torch.mean(torch.abs(grad)).detach(), + "timestep": timestep.detach() + } + + def compute_distribution_matching_loss( + self, + image_or_video: torch.Tensor, + conditional_dict: dict, + unconditional_dict: dict, + gradient_mask: Optional[torch.Tensor] = None, + denoised_timestep_from: int = 0, + denoised_timestep_to: int = 0, + clean_x: Optional[torch.Tensor] = None, + initial_latent: Optional[torch.Tensor] = None, + ) -> Tuple[torch.Tensor, dict]: + """ + Compute the DMD loss (eq 7 in https://arxiv.org/abs/2311.18828). + Input: + - image_or_video: a tensor with shape [B, F, C, H, W] where the number of frame is 1 for images. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - unconditional_dict: a dictionary containing the unconditional information (e.g. null/negative text embeddings, null/negative image embeddings). + - gradient_mask: a boolean tensor with the same shape as image_or_video indicating which pixels to compute loss . + Output: + - dmd_loss: a scalar tensor representing the DMD loss. + - dmd_log_dict: a dictionary containing the intermediate tensors for logging. + """ + context_frames = _get_i2v_context_frames(image_or_video, initial_latent) + original_latent = _overwrite_i2v_context( + image_or_video, initial_latent, context_frames + ) + if clean_x is not None: + clean_x = _overwrite_i2v_context(clean_x, initial_latent, context_frames) + + batch_size, num_frame = image_or_video.shape[:2] + + with torch.no_grad(): + # Step 1: Randomly sample timestep based on the given schedule and corresponding noise + min_timestep = denoised_timestep_to if self.ts_schedule and denoised_timestep_to is not None else self.min_score_timestep + max_timestep = denoised_timestep_from if self.ts_schedule_max and denoised_timestep_from is not None else self.num_train_timestep + timestep = self._get_timestep( + min_timestep, + max_timestep, + batch_size, + num_frame, + self.num_frame_per_block, + # t2v keeps the original NVFP4 behavior (one shared timestep across + # all frames); i2v uses per-block timesteps. + uniform_timestep=not getattr(self.args, "i2v", False) + ) + + # TODO:should we change it to `timestep = self.scheduler.timesteps[timestep]`? + if self.timestep_shift > 1: + timestep = self.timestep_shift * \ + (timestep / 1000) / \ + (1 + (self.timestep_shift - 1) * (timestep / 1000)) * 1000 + timestep = timestep.clamp(self.min_step, self.max_step) + timestep = _zero_i2v_context_timestep(timestep, context_frames) + + noise = torch.randn_like(image_or_video) + if context_frames > 0: + noise[:, :context_frames] = 0 + noisy_latent = self.scheduler.add_noise( + original_latent.flatten(0, 1), + noise.flatten(0, 1), + timestep.flatten(0, 1) + ).detach().unflatten(0, (batch_size, num_frame)) + noisy_latent = _overwrite_i2v_context( + noisy_latent, initial_latent, context_frames + ) + + # Step 2: Compute the KL grad + grad, dmd_log_dict = self._compute_kl_grad( + noisy_image_or_video=noisy_latent, + estimated_clean_image_or_video=original_latent, + timestep=timestep, + conditional_dict=conditional_dict, + unconditional_dict=unconditional_dict, + clean_x=clean_x + ) + + context_mask = _i2v_loss_mask_like(original_latent, context_frames) + if context_mask is not None: + gradient_mask = context_mask if gradient_mask is None else gradient_mask & context_mask + + if gradient_mask is not None: + dmd_loss = 0.5 * F.mse_loss(original_latent.double( + )[gradient_mask], (original_latent.double() - grad.double()).detach()[gradient_mask], reduction="mean") + else: + dmd_loss = 0.5 * F.mse_loss(original_latent.double( + ), (original_latent.double() - grad.double()).detach(), reduction="mean") + return dmd_loss, dmd_log_dict + + def generator_loss( + self, + image_or_video_shape, + conditional_dict: dict, + unconditional_dict: dict, + clean_latent: torch.Tensor, + initial_latent: torch.Tensor = None + ) -> Tuple[torch.Tensor, dict]: + """ + Generate image/videos from noise and compute the DMD loss. + The noisy input to the generator is backward simulated. + This removes the need of any datasets during distillation. + See Sec 4.5 of the DMD2 paper (https://arxiv.org/abs/2405.14867) for details. + Input: + - image_or_video_shape: a list containing the shape of the image or video [B, F, C, H, W]. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - unconditional_dict: a dictionary containing the unconditional information (e.g. null/negative text embeddings, null/negative image embeddings). + - clean_latent: a tensor containing the clean latents [B, F, C, H, W]. Need to be passed when no backward simulation is used. + Output: + - loss: a scalar tensor representing the generator loss. + - generator_log_dict: a dictionary containing the intermediate tensors for logging. + """ + # Step 1: Unroll generator to obtain fake videos + slice_last_frames = getattr(self.args, "slice_last_frames", 21) + _t_gen_start = time.time() + num_gen_frames = image_or_video_shape[1] + sampled_noise = torch.randn( + [image_or_video_shape[0], num_gen_frames, *image_or_video_shape[2:]], + device=self.device, dtype=self.dtype) + pred_image, gradient_mask, denoised_timestep_from, denoised_timestep_to = self._run_generator( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + initial_latent=initial_latent, + slice_last_frames=slice_last_frames, + noise=sampled_noise, + clean_latent=clean_latent + ) + gen_time = time.time() - _t_gen_start + # Step 2: Compute the DMD loss + _t_loss_start = time.time() + if getattr(self.args, "teacher_forcing", False): + if getattr(self.args, "backward_simulation", True): + score_clean_x = pred_image.detach() + else: + score_clean_x = clean_latent + else: + score_clean_x = None + _bs = pred_image.shape[0] + _new_segs = pred_image.shape[1] // self.num_frame_per_block + if not getattr(self.args, "generator_is_causal", True): + _new_segs = 1 + conditional_dict = self._slice_block_cond_dict(conditional_dict, _bs, _new_segs) + unconditional_dict = self._slice_block_cond_dict(unconditional_dict, _bs, _new_segs) + dmd_loss, dmd_log_dict = self.compute_distribution_matching_loss( + image_or_video=pred_image, + conditional_dict=conditional_dict, + unconditional_dict=unconditional_dict, + gradient_mask=gradient_mask, + denoised_timestep_from=denoised_timestep_from, + denoised_timestep_to=denoised_timestep_to, + clean_x=score_clean_x, + initial_latent=initial_latent if pred_image.shape[1] == image_or_video_shape[1] else None, + ) + try: + loss_val = dmd_loss.item() + except Exception: + loss_val = float('nan') + loss_time = time.time() - _t_loss_start + + dmd_log_dict.update({ + "gen_time": gen_time, + "loss_time": loss_time + }) + + return dmd_loss, dmd_log_dict + + def critic_loss( + self, + image_or_video_shape, + conditional_dict: dict, + unconditional_dict: dict, + clean_latent: torch.Tensor, + initial_latent: torch.Tensor = None + ) -> Tuple[torch.Tensor, dict]: + """ + Generate image/videos from noise and train the critic with generated samples. + The noisy input to the generator is backward simulated. + This removes the need of any datasets during distillation. + See Sec 4.5 of the DMD2 paper (https://arxiv.org/abs/2405.14867) for details. + Input: + - image_or_video_shape: a list containing the shape of the image or video [B, F, C, H, W]. + - conditional_dict: a dictionary containing the conditional information (e.g. text embeddings, image embeddings). + - unconditional_dict: a dictionary containing the unconditional information (e.g. null/negative text embeddings, null/negative image embeddings). + - clean_latent: a tensor containing the clean latents [B, F, C, H, W]. Need to be passed when no backward simulation is used. + Output: + - loss: a scalar tensor representing the generator loss. + - critic_log_dict: a dictionary containing the intermediate tensors for logging. + """ + slice_last_frames = getattr(self.args, "slice_last_frames", 21) + # Step 1: Run generator on backward simulated noisy input + _t_gen_start = time.time() + with torch.no_grad(): + num_gen_frames = image_or_video_shape[1] + sampled_noise = torch.randn( + [image_or_video_shape[0], num_gen_frames, *image_or_video_shape[2:]], + device=self.device, dtype=self.dtype) + generated_image, _, denoised_timestep_from, denoised_timestep_to = self._run_generator( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + initial_latent=initial_latent, + slice_last_frames=slice_last_frames, + noise=sampled_noise, + clean_latent=clean_latent + ) + gen_time = time.time() - _t_gen_start + score_initial_latent = ( + initial_latent + if initial_latent is not None and generated_image.shape[1] == image_or_video_shape[1] + else None + ) + context_frames = _get_i2v_context_frames(generated_image, score_initial_latent) + batch_size, num_frame = generated_image.shape[:2] + + _new_segs = num_frame // self.num_frame_per_block + if not getattr(self.args, "generator_is_causal", True): + _new_segs = 1 + conditional_dict = self._slice_block_cond_dict(conditional_dict, batch_size, _new_segs) + + if getattr(self.args, "teacher_forcing", False): + if getattr(self.args, "backward_simulation", True): + score_clean_x = generated_image + else: + score_clean_x = clean_latent + else: + score_clean_x = None + if score_clean_x is not None: + score_clean_x = _overwrite_i2v_context( + score_clean_x, score_initial_latent, context_frames + ) + _t_loss_start = time.time() + + # Step 2: Compute the fake prediction + min_timestep = denoised_timestep_to if self.ts_schedule and denoised_timestep_to is not None else self.min_score_timestep + max_timestep = denoised_timestep_from if self.ts_schedule_max and denoised_timestep_from is not None else self.num_train_timestep + critic_timestep = self._get_timestep( + min_timestep, + max_timestep, + batch_size, + num_frame, + self.num_frame_per_block, + # t2v keeps the original NVFP4 behavior (one shared timestep across + # all frames); i2v uses per-block timesteps. + uniform_timestep=not getattr(self.args, "i2v", False) + ) + + if self.timestep_shift > 1: + critic_timestep = self.timestep_shift * \ + (critic_timestep / 1000) / (1 + (self.timestep_shift - 1) * (critic_timestep / 1000)) * 1000 + + critic_timestep = critic_timestep.clamp(self.min_step, self.max_step) + critic_timestep = _zero_i2v_context_timestep(critic_timestep, context_frames) + + critic_noise = torch.randn_like(generated_image) + if context_frames > 0: + critic_noise[:, :context_frames] = 0 + noisy_generated_image = self.scheduler.add_noise( + generated_image.flatten(0, 1), + critic_noise.flatten(0, 1), + critic_timestep.flatten(0, 1) + ).unflatten(0, (batch_size, num_frame)) + noisy_generated_image = _overwrite_i2v_context( + noisy_generated_image, score_initial_latent, context_frames + ) + + _, pred_fake_image = self.fake_score( + noisy_image_or_video=noisy_generated_image, + conditional_dict=conditional_dict, + timestep=critic_timestep, + clean_x=score_clean_x + ) + + # Step 3: Compute the denoising loss for the fake critic + if getattr(self.args, "denoising_loss_type", "flow") == "flow": + from utils.wan_5b_wrapper import WanDiffusionWrapper + flow_pred = WanDiffusionWrapper._convert_x0_to_flow_pred( + scheduler=self.scheduler, + x0_pred=pred_fake_image.flatten(0, 1), + xt=noisy_generated_image.flatten(0, 1), + timestep=critic_timestep.flatten(0, 1) + ) + pred_fake_noise = None + else: + flow_pred = None + pred_fake_noise = self.scheduler.convert_x0_to_noise( + x0=pred_fake_image.flatten(0, 1), + xt=noisy_generated_image.flatten(0, 1), + timestep=critic_timestep.flatten(0, 1) + ).unflatten(0, (batch_size, num_frame)) + + denoising_loss = self.denoising_loss_func( + x=generated_image.flatten(0, 1), + x_pred=pred_fake_image.flatten(0, 1), + noise=critic_noise.flatten(0, 1), + noise_pred=pred_fake_noise, + alphas_cumprod=self.scheduler.alphas_cumprod, + timestep=critic_timestep.flatten(0, 1), + gradient_mask=( + _i2v_loss_mask_like(generated_image, context_frames).flatten(0, 1) + if context_frames > 0 else None + ), + flow_pred=flow_pred, + ) + + try: + loss_val = denoising_loss.item() + except Exception: + loss_val = float('nan') + loss_time = time.time() - _t_loss_start + # Step 5: Debugging Log + critic_log_dict = { + "critic_timestep": critic_timestep.detach(), + "gen_time": gen_time, + "loss_time": loss_time + } + + return denoising_loss, critic_log_dict diff --git a/pipeline/__init__.py b/pipeline/__init__.py new file mode 100644 index 0000000..5e98036 --- /dev/null +++ b/pipeline/__init__.py @@ -0,0 +1,7 @@ +from .causal_diffusion_inference import CausalDiffusionInferencePipeline +from .self_forcing_training import SelfForcingTrainingPipeline + +__all__ = [ + "CausalDiffusionInferencePipeline", + "SelfForcingTrainingPipeline", +] diff --git a/pipeline/causal_diffusion_inference.py b/pipeline/causal_diffusion_inference.py new file mode 100644 index 0000000..f50eef6 --- /dev/null +++ b/pipeline/causal_diffusion_inference.py @@ -0,0 +1,1045 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 + +from tqdm import tqdm +from typing import List, Optional +import os +import statistics +import threading +import torch +import math + +_LLV2_TIME = os.environ.get("LLV2_TIME") == "1" +_LLV2_DUMP_LATENT_DIR = os.environ.get("LLV2_DUMP_LATENT_DIR", "").strip() +# LLV2_PROFILE format: ":::", e.g. "0:20:2:2" +_LLV2_PROFILE_SPEC = os.environ.get("LLV2_PROFILE", "").strip() +_LLV2_PROFILE_OUTPUT_DIR = os.environ.get("LLV2_PROFILE_OUTPUT_DIR", "").strip() +_LLV2_PROFILE_CALL_COUNTER = 0 +from wan_5b.utils.fm_solvers import FlowDPMSolverMultistepScheduler, get_sampling_sigmas, retrieve_timesteps +from wan_5b.utils.fm_solvers_unipc import FlowUniPCMultistepScheduler +from utils.wan_5b_wrapper import WanDiffusionWrapper, WanTextEncoder, build_vae_5b +from utils.dataset import DEFAULT_SCENE_CUT_PREFIX +from utils.config import section_get, wan_default_config +from utils.i2v_conditioning import ( + _overwrite_i2v_context, + _zero_i2v_context_timestep, +) + + +class CausalDiffusionInferencePipeline(torch.nn.Module): + def __init__( + self, + args, + device, + generator=None, + text_encoder=None, + vae=None + ): + super().__init__() + # Step 1: Initialize all models + model_name = getattr(args.model_kwargs, "model_name", "Wan2.2-TI2V-5B") + if "5B" not in model_name: + raise ValueError(f"Only Wan2.2-TI2V-5B is supported in this release, got {model_name}") + self.generator = WanDiffusionWrapper( + **getattr(args, "model_kwargs", {}), is_causal=True) if generator is None else generator + self.text_encoder = WanTextEncoder() if text_encoder is None else text_encoder + self.vae = build_vae_5b(args) if vae is None else vae + + # iter-33: optionally compile the VAE decoder (cuda:2). The Python + # `for step in range(total_steps)` wrapper in cached_decode keeps the + # mutating feat_cache in eager; per-step self.decoder() call hits the + # compiled version. Opt-in via LLV2_COMPILE_VAE=1; default off. + if os.environ.get("LLV2_COMPILE_VAE", "0") == "1": + try: + inner = getattr(self.vae, "model", None) + if inner is not None and hasattr(inner, "decoder"): + inner.decoder = torch.compile( + inner.decoder, + backend="inductor", + mode="max-autotune-no-cudagraphs", + fullgraph=False, + dynamic=False, + ) + print("[torch.compile] VAE.decoder wrapped") + except Exception as exc: + print(f"[torch.compile][warn] VAE compile setup failed: {exc}") + + # Step 2: Initialize scheduler + self.num_train_timesteps = getattr(args, "num_train_timestep", 1000) + self.sampling_steps = section_get(args, "inference", "sampling_steps", 50) + self.sample_solver = 'unipc' + self.shift = getattr(args, "timestep_shift", + getattr(args.model_kwargs, "timestep_shift", 5.0)) + + + self.frame_seq_length = math.prod(args.image_or_video_shape[-2:]) // 4 + self.model_name = model_name + self.num_transformer_blocks = wan_default_config[self.model_name]["num_transformer_blocks"] + + self.kv_cache_pos = None + self.kv_cache_neg = None + self.crossattn_cache_pos = None + self.crossattn_cache_neg = None + self.args = args + self.num_frame_per_block = getattr(args, "num_frame_per_block", 1) + self.quantize_kv = getattr(args, "kv_quant", False) + self.kv_quant_scale_rule = getattr(args, "kv_quant_scale_rule", "mse") + self.kv_quant_backend = getattr(args, "kv_quant_backend", "cuda") + self.independent_first_frame = section_get(args, "inference", "independent_first_frame", False) + self.local_attn_size = section_get( + args, "inference", "local_attn_size", -1, aliases=("inference_local_attn_size",) + ) + if self.local_attn_size == -1: + self.local_attn_size = getattr(args, "model_kwargs", {}).get("local_attn_size", -1) + self.sink_size = section_get( + args, "inference", "sink_size", None, aliases=("inference_sink_size",) + ) + if self.sink_size is None: + _model_sink = getattr(args, "model_kwargs", {}).get("sink_size", None) + if _model_sink is not None: + self.sink_size = _model_sink + if self.sink_size is None: + self.sink_size = 0 + self.scene_cut_prefix = section_get(args, "inference", "scene_cut_prefix", DEFAULT_SCENE_CUT_PREFIX) + self.multi_shot_sink = section_get(args, "inference", "multi_shot_sink", False) + self.shot_clean_recache = section_get(args, "inference", "shot_clean_recache", False) + self.global_sink_size = self.sink_size if self.multi_shot_sink else 0 + self.multi_shot_rope_offset = section_get( + args, + "inference", + "multi_shot_rope_offset", + 0.0, + ) + self.guidance_scale = section_get(args, "inference", "guidance_scale", getattr(args, "guidance_scale", 1.0)) + self.negative_prompt = section_get(args, "inference", "negative_prompt", getattr(args, "negative_prompt", "")) + self.streaming_vae = section_get(args, "inference", "streaming_vae", getattr(args, "streaming_vae", False)) + self.async_vae = section_get(args, "inference", "async_vae", getattr(args, "async_vae", False)) + vae_device = section_get(args, "inference", "vae_device", getattr(args, "vae_device", None)) + self.vae_device = torch.device(vae_device) if vae_device else None + + if self.quantize_kv: + from utils.quant import LongLiveQuantizationConfig + + self.kv_quant_config = LongLiveQuantizationConfig( + scale_rule=self.kv_quant_scale_rule, + backend=self.kv_quant_backend, + type="kv", + ) + else: + self.kv_quant_config = None + self._dit_model.kv_quant_config = self.kv_quant_config + + if self.streaming_vae and self.vae_device is not None: + vae_mode = "streaming-pipeline" + elif self.streaming_vae and self.async_vae: + vae_mode = "streaming-async" + elif self.streaming_vae: + vae_mode = "streaming" + else: + vae_mode = "batch" + print( + f"KV inference with {self.num_frame_per_block} frames per block " + f"(kv_quant={self.quantize_kv}, vae_decode={vae_mode})" + ) + + if self.num_frame_per_block > 1: + self.generator.model.num_frame_per_block = self.num_frame_per_block + self.inference_t_scale = getattr(args, "inference_t_scale", None) + self.use_relative_rope = getattr(args, "use_relative_rope", False) + self._rope_method_override = getattr(args, "rope_method", None) + self._original_seq_len_override = getattr(args, "original_seq_len", None) + + @property + def _dit_model(self): + """Return the underlying CausalWanModel, unwrapping PeftModel if present. + + After LoRA wrapping, ``self.generator.model`` is a PeftModel whose + structure is PeftModel -> LoraModel (.base_model) -> CausalWanModel + (.model). Direct attribute writes on PeftModel do NOT propagate to + CausalWanModel, so any runtime overrides (t_scale, rope_method, …) + must target the unwrapped model returned by this property. + """ + model = self.generator.model + if hasattr(model, 'base_model') and hasattr(model.base_model, 'model'): + return model.base_model.model + return model + + def inference( + self, + noise: torch.Tensor, + text_prompts: List[str], + initial_latent: Optional[torch.Tensor] = None, + return_latents: bool = False, + start_frame_index: Optional[int] = 0 + ) -> torch.Tensor: + """ + Perform inference on the given noise and text prompts. + Inputs: + noise (torch.Tensor): The input noise tensor of shape + (batch_size, num_output_frames, num_channels, height, width). + text_prompts (List[str]): The list of text prompts. + initial_latent (torch.Tensor): The initial latent tensor of shape + (batch_size, num_input_frames, num_channels, height, width). + If num_input_frames is 1, perform image to video. + If num_input_frames is greater than 1, perform video extension. + return_latents (bool): Whether to return the latents. + start_frame_index (int): In long video generation, where does the current window start? + Outputs: + video (torch.Tensor): The generated video tensor of shape + (batch_size, num_frames, num_channels, height, width). It is normalized to be in the range [0, 1]. + """ + batch_size, num_frames, num_channels, height, width = noise.shape + num_input_frames = initial_latent.shape[1] if initial_latent is not None else 0 + clamp_i2v_first_chunk = self.independent_first_frame and initial_latent is not None + if clamp_i2v_first_chunk and num_input_frames != 1: + raise ValueError( + f"i2v first-chunk clamp expects one conditioning latent frame, got {num_input_frames}." + ) + + if not self.independent_first_frame or clamp_i2v_first_chunk: + # If the first frame is independent and the first frame is provided, then the number of frames in the + # noise should still be a multiple of num_frame_per_block + assert num_frames % self.num_frame_per_block == 0 + num_blocks = num_frames // self.num_frame_per_block + elif self.independent_first_frame and initial_latent is None: + # Using a [1, 4, 4, 4, 4, 4] model to generate a video without image conditioning + assert (num_frames - 1) % self.num_frame_per_block == 0 + num_blocks = (num_frames - 1) // self.num_frame_per_block + num_output_frames = ( + num_frames if clamp_i2v_first_chunk else num_frames + num_input_frames + ) + conditional_dict = self.text_encoder( + text_prompts=text_prompts[0] + ) + conditional_dict_list = [ + {"prompt_embeds": conditional_dict["prompt_embeds"][i:i+1]} + for i in range(conditional_dict["prompt_embeds"].shape[0]) + ] + use_cfg = self.guidance_scale != 1.0 + if use_cfg: + unconditional_dict = self.text_encoder( + text_prompts=[self.negative_prompt] * batch_size + ) + else: + unconditional_dict = None + + output = torch.zeros( + [batch_size, num_output_frames, num_channels, height, width], + device=noise.device, + dtype=noise.dtype + ) + + # Step 1: Initialize KV cache to all zeros + if self.kv_cache_pos is None: + self._initialize_kv_cache( + batch_size=batch_size, + dtype=noise.dtype, + device=noise.device + ) + self._initialize_crossattn_cache( + batch_size=batch_size, + dtype=noise.dtype, + device=noise.device + ) + else: + # reset cross attn cache + for block_index in range(self.num_transformer_blocks): + self.crossattn_cache_pos[block_index]["is_init"] = False + if use_cfg: + self.crossattn_cache_neg[block_index]["is_init"] = False + # reset kv cache + for block_index in range(len(self.kv_cache_pos)): + self.kv_cache_pos[block_index]["global_end_index"] = torch.tensor( + [0], dtype=torch.long, device=noise.device) + self.kv_cache_pos[block_index]["local_end_index"] = torch.tensor( + [0], dtype=torch.long, device=noise.device) + self.kv_cache_pos[block_index]["pinned_start"].fill_(-1) + self.kv_cache_pos[block_index]["pinned_len"].zero_() + if use_cfg: + self.kv_cache_neg[block_index]["global_end_index"] = torch.tensor( + [0], dtype=torch.long, device=noise.device) + self.kv_cache_neg[block_index]["local_end_index"] = torch.tensor( + [0], dtype=torch.long, device=noise.device) + self.kv_cache_neg[block_index]["pinned_start"].fill_(-1) + self.kv_cache_neg[block_index]["pinned_len"].zero_() + + # Step 2: Cache context feature + current_start_frame = start_frame_index + cache_start_frame = 0 + + # Save model state before overriding for inference. + # Use _dit_model to reach the real CausalWanModel (PeftModel wrapping + # intercepts attribute writes, so self.generator.model.xxx would land + # on the wrapper instead of the model that reads them in forward()). + dit = self._dit_model + prev_local_attn_size = dit.local_attn_size + prev_t_scale = getattr(dit, 't_scale', 1.0) + prev_rope_method = getattr(dit, 'rope_method', 'linear') + prev_original_seq_len = getattr(dit, 'original_seq_len', None) + prev_use_relative_rope = getattr(dit, 'use_relative_rope', False) + prev_rope_temporal_offset = getattr(dit, 'rope_temporal_offset', 0.0) + prev_max_attention_sizes = {} + prev_sink_sizes = {} + prev_global_sink_sizes = {} + for name, module in self.generator.model.named_modules(): + if hasattr(module, 'max_attention_size'): + prev_max_attention_sizes[name] = module.max_attention_size + if hasattr(module, 'sink_size'): + prev_sink_sizes[name] = module.sink_size + if hasattr(module, 'global_sink_size'): + prev_global_sink_sizes[name] = module.global_sink_size + + dit.local_attn_size = self.local_attn_size + print(f"[inference] local_attn_size set on model: {dit.local_attn_size}") + self._set_all_modules_max_attention_size(self.local_attn_size) + + if self.sink_size is not None: + self._set_all_modules_sink_size(self.sink_size) + print(f"[inference] sink_size set to: {self.sink_size}" + f"{', multi_shot_sink enabled (pinned position)' if self.multi_shot_sink else ''}" + f"{', shot_clean_recache enabled' if self.shot_clean_recache else ''}") + + # Propagate the internally derived global sink length. + self._set_all_modules_global_sink_size(self.global_sink_size) + if self.global_sink_size and self.global_sink_size > 0: + print(f"[inference] auto_global_sink_size set to: {self.global_sink_size} " + f"(first {self.global_sink_size} frames permanently anchored)") + + if self.inference_t_scale is not None: + dit.t_scale = self.inference_t_scale + print(f"[inference] t_scale overridden to: {dit.t_scale}") + + if self._rope_method_override is not None: + dit.rope_method = self._rope_method_override + if self._original_seq_len_override is not None: + dit.original_seq_len = self._original_seq_len_override + print(f"[inference] rope_method={dit.rope_method}, " + f"original_seq_len={dit.original_seq_len}") + + dit.use_relative_rope = self.use_relative_rope + if self.use_relative_rope: + print(f"[inference] use_relative_rope enabled") + + dit.rope_temporal_offset = 0.0 + if self.multi_shot_rope_offset != 0.0: + print(f"[inference] multi_shot_rope_offset={self.multi_shot_rope_offset} " + f"(multi-shot RoPE offset enabled)") + + try: + raw_prompts = text_prompts[0] if isinstance(text_prompts[0], (list, tuple)) else text_prompts + return self._inference_inner( + noise=noise, batch_size=batch_size, num_frames=num_frames, + num_channels=num_channels, height=height, width=width, + num_blocks=num_blocks, num_input_frames=num_input_frames, + num_output_frames=num_output_frames, output=output, + conditional_dict=conditional_dict, + conditional_dict_list=conditional_dict_list, + unconditional_dict=unconditional_dict, + use_cfg=use_cfg, initial_latent=initial_latent, + clamp_i2v_first_chunk=clamp_i2v_first_chunk, + return_latents=return_latents, + current_start_frame=current_start_frame, + cache_start_frame=cache_start_frame, + raw_prompts=raw_prompts, + ) + finally: + dit.local_attn_size = prev_local_attn_size + dit.t_scale = prev_t_scale + dit.rope_method = prev_rope_method + dit.original_seq_len = prev_original_seq_len + dit.use_relative_rope = prev_use_relative_rope + dit.rope_temporal_offset = prev_rope_temporal_offset + for name, module in self.generator.model.named_modules(): + if name in prev_max_attention_sizes: + try: + module.max_attention_size = prev_max_attention_sizes[name] + except Exception: + pass + if name in prev_sink_sizes: + try: + module.sink_size = prev_sink_sizes[name] + except Exception: + pass + if name in prev_global_sink_sizes: + try: + module.global_sink_size = prev_global_sink_sizes[name] + except Exception: + pass + + def _inference_inner( + self, noise, batch_size, num_frames, num_channels, height, width, + num_blocks, num_input_frames, num_output_frames, output, + conditional_dict, conditional_dict_list, unconditional_dict, + use_cfg, initial_latent, clamp_i2v_first_chunk, return_latents, + current_start_frame, cache_start_frame, + raw_prompts=None, + ): + + if initial_latent is not None and not clamp_i2v_first_chunk: + timestep = torch.ones([batch_size, 1], device=noise.device, dtype=torch.int64) * 0 + if self.independent_first_frame: + # Assume num_input_frames is 1 + self.num_frame_per_block * num_input_blocks + assert (num_input_frames - 1) % self.num_frame_per_block == 0 + num_input_blocks = (num_input_frames - 1) // self.num_frame_per_block + output[:, :1] = initial_latent[:, :1] + self.generator( + noisy_image_or_video=initial_latent[:, :1], + conditional_dict=conditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_pos, + crossattn_cache=self.crossattn_cache_pos, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + if use_cfg: + self.generator( + noisy_image_or_video=initial_latent[:, :1], + conditional_dict=unconditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_neg, + crossattn_cache=self.crossattn_cache_neg, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + current_start_frame += 1 + cache_start_frame += 1 + else: + # Assume num_input_frames is self.num_frame_per_block * num_input_blocks + assert num_input_frames % self.num_frame_per_block == 0 + num_input_blocks = num_input_frames // self.num_frame_per_block + + for block_index in range(num_input_blocks): + current_ref_latents = \ + initial_latent[:, cache_start_frame:cache_start_frame + self.num_frame_per_block] + output[:, cache_start_frame:cache_start_frame + self.num_frame_per_block] = current_ref_latents + self.generator( + noisy_image_or_video=current_ref_latents, + conditional_dict=conditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_pos, + crossattn_cache=self.crossattn_cache_pos, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + if use_cfg: + self.generator( + noisy_image_or_video=current_ref_latents, + conditional_dict=unconditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_neg, + crossattn_cache=self.crossattn_cache_neg, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + current_start_frame += self.num_frame_per_block + cache_start_frame += self.num_frame_per_block + + # Step 3: Temporal denoising loop + all_num_frames = [self.num_frame_per_block] * num_blocks + if self.independent_first_frame and initial_latent is None: + all_num_frames = [1] + all_num_frames + + # Multi-shot RoPE offset: track current shot index for phase offset. + current_shot_index = 0 + phi = self.multi_shot_rope_offset + self._dit_model.rope_temporal_offset = 0.0 + streaming_decode = self.streaming_vae and not return_latents + pipeline_vae = streaming_decode and self.vae_device is not None + async_vae = streaming_decode and self.async_vae and not pipeline_vae + if streaming_decode: + vae_dev = self.vae_device if pipeline_vae else noise.device + vae_scale = [ + self.vae.mean.to(device=vae_dev, dtype=noise.dtype), + 1.0 / self.vae.std.to(device=vae_dev, dtype=noise.dtype), + ] + self.vae.model.clear_cache() + video_chunks = [] + if async_vae: + vae_stream = torch.cuda.Stream(device=noise.device) + prev_vae_done = None + if pipeline_vae: + vae_thread_error = [] + vae_thread_chunks = [] + vae_work_queue = [] + vae_queue_lock = threading.Lock() + vae_work_ready = threading.Event() + vae_all_done = threading.Event() + + def _vae_thread_fn(): + try: + while True: + vae_work_ready.wait() + vae_work_ready.clear() + while True: + with vae_queue_lock: + if not vae_work_queue: + break + item = vae_work_queue.pop(0) + if item is None: + vae_all_done.set() + return + decoded = self.vae.model.cached_decode( + item, + vae_scale, + ).float().clamp_(-1, 1) + # Pinned-memory DtoH: pageable copy hits ~0.2 GB/s + # (1.5s per 313MB chunk → ~80s/prompt at end); pinned + # path runs at PCIe limit (~25 GB/s = ~12ms / chunk). + pinned = torch.empty( + decoded.shape, dtype=decoded.dtype, + device="cpu", pin_memory=True, + ) + pinned.copy_(decoded, non_blocking=True) + torch.cuda.synchronize(decoded.device) + vae_thread_chunks.append(pinned) + except Exception as exc: + vae_thread_error.append(exc) + vae_all_done.set() + + vae_bg_thread = threading.Thread(target=_vae_thread_fn, daemon=True) + vae_bg_thread.start() + + _block_events = [] if _LLV2_TIME else None + global _LLV2_PROFILE_CALL_COUNTER + _call_idx = _LLV2_PROFILE_CALL_COUNTER + _LLV2_PROFILE_CALL_COUNTER += 1 + _prof = None + _prof_trace_path = None + if _LLV2_PROFILE_SPEC and _LLV2_PROFILE_OUTPUT_DIR: + _parts = _LLV2_PROFILE_SPEC.split(":") + _target_call = int(_parts[0]) if len(_parts) > 0 else 0 + _wait_n = int(_parts[1]) if len(_parts) > 1 else 20 + _warmup_n = int(_parts[2]) if len(_parts) > 2 else 2 + _active_n = int(_parts[3]) if len(_parts) > 3 else 2 + if _call_idx == _target_call: + from torch.profiler import profile as _tp_profile, ProfilerActivity, schedule + os.makedirs(_LLV2_PROFILE_OUTPUT_DIR, exist_ok=True) + _prof_trace_path = os.path.join( + _LLV2_PROFILE_OUTPUT_DIR, f"trace_call{_call_idx}.json" + ) + _prof = _tp_profile( + activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], + schedule=schedule( + wait=_wait_n, warmup=_warmup_n, active=_active_n, repeat=1 + ), + record_shapes=False, + with_stack=False, + ) + _prof.start() + print( + f"[LLV2_PROFILE] enabled for call={_call_idx} " + f"wait={_wait_n} warmup={_warmup_n} active={_active_n} " + f"-> {_prof_trace_path}", + flush=True, + ) + for chunk_index, current_num_frames in enumerate(all_num_frames): + if _LLV2_TIME: + _ev_s = torch.cuda.Event(enable_timing=True) + _ev_e = torch.cuda.Event(enable_timing=True) + _ev_s.record() + conditional_dict = conditional_dict_list[chunk_index] + # Reset the cross-attention cache when each chunk uses a different + # prompt; otherwise the model reuses the previous chunk's k/v and + # ignores the current conditional_dict. + for block_index in range(self.num_transformer_blocks): + self.crossattn_cache_pos[block_index]["is_init"] = False + self.crossattn_cache_neg[block_index]["is_init"] = False + + # Update RoPE phase offset on shot boundaries. + is_shot_boundary = self._is_shot_boundary(raw_prompts, chunk_index) + if is_shot_boundary and phi != 0.0: + current_shot_index += 1 + self._dit_model.rope_temporal_offset = current_shot_index * phi + print(f"[inference] multi-shot RoPE: shot_index={current_shot_index}, " + f"temporal_offset={self._dit_model.rope_temporal_offset:.4f}") + + first_i2v_block = clamp_i2v_first_chunk and chunk_index == 0 + noise_start_frame = ( + cache_start_frame + if clamp_i2v_first_chunk + else cache_start_frame - num_input_frames + ) + noisy_input = noise[ + :, + noise_start_frame:noise_start_frame + current_num_frames, + ] + latents = noisy_input + + # Step 3.1: Spatial denoising loop + sample_scheduler = self._initialize_sample_scheduler(noise) + for _, t in enumerate(tqdm(sample_scheduler.timesteps)): + timestep = t * torch.ones( + [batch_size, current_num_frames], device=noise.device, dtype=torch.float32 + ) + if first_i2v_block: + latents = _overwrite_i2v_context( + latents, initial_latent, num_input_frames + ) + timestep = _zero_i2v_context_timestep( + timestep, num_input_frames + ) + latent_model_input = latents + + flow_pred_cond, _ = self.generator( + noisy_image_or_video=latent_model_input, + conditional_dict=conditional_dict, + timestep=timestep, + kv_cache=self.kv_cache_pos, + crossattn_cache=self.crossattn_cache_pos, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + if use_cfg: + flow_pred_uncond, _ = self.generator( + noisy_image_or_video=latent_model_input, + conditional_dict=unconditional_dict, + timestep=timestep, + kv_cache=self.kv_cache_neg, + crossattn_cache=self.crossattn_cache_neg, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + flow_pred = flow_pred_uncond + self.guidance_scale * ( + flow_pred_cond - flow_pred_uncond) + else: + flow_pred = flow_pred_cond + + temp_x0 = sample_scheduler.step( + flow_pred, + t, + latents, + return_dict=False)[0] + latents = temp_x0 + if first_i2v_block: + latents = _overwrite_i2v_context( + latents, initial_latent, num_input_frames + ) + # iter-34: removed per-step debug print of kv_cache scalar + # tensors (was forcing GPU→CPU sync every sampling step × + # 4 steps × 48 chunks = 192 stalls per prompt). Re-enable + # behind LLV2_DEBUG_KV=1 if needed for debugging. + if os.environ.get("LLV2_DEBUG_KV", "0") == "1": + print(f"kv_cache['local_end_index']: {self.kv_cache_pos[0]['local_end_index']}") + print(f"kv_cache['global_end_index']: {self.kv_cache_pos[0]['global_end_index']}") + + # Step 3.2: record the model's output + if first_i2v_block: + latents = _overwrite_i2v_context( + latents, initial_latent, num_input_frames + ) + output[:, cache_start_frame:cache_start_frame + current_num_frames] = latents + + # Step 3.3: rerun with timestep zero to update KV cache using clean context + is_scene_cut = self._is_scene_cut(raw_prompts, chunk_index) + + if is_scene_cut and self.shot_clean_recache: + print(f"[inference] Scene cut at chunk {chunk_index}, zeroing KV before recache") + current_start_tokens = current_start_frame * self.frame_seq_length + self._zero_kv_data(self.kv_cache_pos, current_start_tokens) + if use_cfg: + self._zero_kv_data(self.kv_cache_neg, current_start_tokens) + + self.generator( + noisy_image_or_video=latents, + conditional_dict=conditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_pos, + crossattn_cache=self.crossattn_cache_pos, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + if use_cfg: + self.generator( + noisy_image_or_video=latents, + conditional_dict=unconditional_dict, + timestep=timestep * 0, + kv_cache=self.kv_cache_neg, + crossattn_cache=self.crossattn_cache_neg, + current_start=current_start_frame * self.frame_seq_length, + cache_start=cache_start_frame * self.frame_seq_length + ) + + # Step 3.3b: pin the current chunk for multi-shot sink on scene cut. + if is_scene_cut: + print(f"[inference] Scene cut at chunk {chunk_index}, pinning chunk as shot-sink") + self._pin_current_chunk(self.kv_cache_pos, current_num_frames) + if use_cfg: + self._pin_current_chunk(self.kv_cache_neg, current_num_frames) + + if streaming_decode: + if async_vae: + diffusion_done = torch.cuda.Event() + diffusion_done.record() + if prev_vae_done is not None: + prev_vae_done.synchronize() + with torch.cuda.stream(vae_stream): + vae_stream.wait_event(diffusion_done) + chunk_bcthw = latents.permute(0, 2, 1, 3, 4).contiguous() + decoded_chunk = self.vae.model.cached_decode( + chunk_bcthw, + vae_scale, + ).float().clamp_(-1, 1) + video_chunks.append(decoded_chunk) + prev_vae_done = torch.cuda.Event() + prev_vae_done.record(vae_stream) + elif pipeline_vae: + latent_on_vae = latents.permute(0, 2, 1, 3, 4).contiguous().to(vae_dev) + with vae_queue_lock: + vae_work_queue.append(latent_on_vae) + vae_work_ready.set() + else: + chunk_bcthw = latents.permute(0, 2, 1, 3, 4).contiguous() + decoded_chunk = self.vae.model.cached_decode( + chunk_bcthw, + vae_scale, + ).float().clamp_(-1, 1) + video_chunks.append(decoded_chunk.cpu()) + del decoded_chunk, chunk_bcthw + torch.cuda.empty_cache() + + # Step 3.4: update the start and end frame indices + current_start_frame += current_num_frames + cache_start_frame += current_num_frames + + if _LLV2_TIME: + _ev_e.record() + _block_events.append((_ev_s, _ev_e)) + if _prof is not None: + _prof.step() + + if _prof is not None: + _prof.stop() + _prof.export_chrome_trace(_prof_trace_path) + print(f"[LLV2_PROFILE] saved trace -> {_prof_trace_path}", flush=True) + + if _LLV2_TIME and _block_events: + torch.cuda.synchronize() + _times = [_s.elapsed_time(_e) for _s, _e in _block_events] + _sorted = sorted(_times) + _n = len(_sorted) + _p10 = _sorted[max(0, _n // 10 - 1)] + _p50 = statistics.median(_sorted) + _p90 = _sorted[max(0, _n - _n // 10 - 1)] + _mean = sum(_times) / _n + _total = sum(_times) + print( + f"[LLV2_TIME] blocks={_n} mean_ms={_mean:.2f} p10_ms={_p10:.2f} " + f"median_ms={_p50:.2f} p90_ms={_p90:.2f} total_ms={_total:.2f}", + flush=True, + ) + + if _LLV2_DUMP_LATENT_DIR: + os.makedirs(_LLV2_DUMP_LATENT_DIR, exist_ok=True) + _existing = sum( + 1 for _f in os.listdir(_LLV2_DUMP_LATENT_DIR) + if _f.startswith("latent_") and _f.endswith(".pt") + ) + _path = os.path.join(_LLV2_DUMP_LATENT_DIR, f"latent_{_existing:04d}.pt") + torch.save(output.detach().cpu(), _path) + print(f"[LLV2_DUMP] saved latent {tuple(output.shape)} -> {_path}", flush=True) + + # Step 4: Decode the output + + + if return_latents: + return output + elif streaming_decode: + if async_vae: + vae_stream.synchronize() + elif pipeline_vae: + with vae_queue_lock: + vae_work_queue.append(None) + vae_work_ready.set() + vae_all_done.wait() + vae_bg_thread.join() + if vae_thread_error: + raise RuntimeError( + f"[pipeline_vae] VAE decode failed: {vae_thread_error[0]}" + ) from vae_thread_error[0] + video_chunks = vae_thread_chunks + video_bcthw = torch.cat(video_chunks, dim=2) + video = video_bcthw.permute(0, 2, 1, 3, 4) + video = (video * 0.5 + 0.5).clamp(0, 1) + self.vae.model.clear_cache() + return video + else: + video = self.vae.decode_to_pixel(output) + video = (video * 0.5 + 0.5).clamp(0, 1) + return video + + def _initialize_kv_cache(self, batch_size, dtype, device): + """ + Initialize a Per-GPU KV cache for the Wan model. + """ + kv_cache_pos = [] + kv_cache_neg = [] + num_heads = wan_default_config[self.model_name]["num_heads"] + head_dim = wan_default_config[self.model_name]["head_dim"] + if self.local_attn_size != -1: + # Use the local attention size to compute the KV cache size + kv_cache_size = self.local_attn_size * self.frame_seq_length + else: + # Use the default KV cache size + kv_cache_size = 3 * self.num_frame_per_block * self.frame_seq_length + + block_token_size = self.num_frame_per_block * self.frame_seq_length + max_blocks = kv_cache_size // block_token_size + + if self.quantize_kv: + from utils.quant import clone_quantized_tensor, quantize_to_fp4 + + print( + f"[KV Cache] Quantized (nvfp4): block_token_size={block_token_size}, " + f"max_blocks={max_blocks}, num_heads={num_heads}, layers={self.num_transformer_blocks}" + ) + zero_block = torch.zeros( + [block_token_size * num_heads, head_dim], + dtype=dtype, + device=device, + ) + zero_qt = quantize_to_fp4(zero_block, self.kv_quant_config) + + for _ in range(self.num_transformer_blocks): + if self.quantize_kv: + kv_cache_pos.append({ + "k": [clone_quantized_tensor(zero_qt) for _ in range(max_blocks)], + "v": [clone_quantized_tensor(zero_qt) for _ in range(max_blocks)], + "quantized": True, + "block_token_size": block_token_size, + "max_blocks": max_blocks, + "num_heads": num_heads, + "num_filled_blocks": 0, + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([-1], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + }) + kv_cache_neg.append({ + "k": [clone_quantized_tensor(zero_qt) for _ in range(max_blocks)], + "v": [clone_quantized_tensor(zero_qt) for _ in range(max_blocks)], + "quantized": True, + "block_token_size": block_token_size, + "max_blocks": max_blocks, + "num_heads": num_heads, + "num_filled_blocks": 0, + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([-1], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + }) + else: + kv_cache_pos.append({ + "k": torch.zeros([batch_size, kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "quantized": False, + "block_token_size": block_token_size, + "max_blocks": max_blocks, + "num_heads": num_heads, + "num_filled_blocks": 0, + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([-1], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + }) + kv_cache_neg.append({ + "k": torch.zeros([batch_size, kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "quantized": False, + "block_token_size": block_token_size, + "max_blocks": max_blocks, + "num_heads": num_heads, + "num_filled_blocks": 0, + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([-1], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + }) + + self.kv_cache_pos = kv_cache_pos # always store the clean cache + self.kv_cache_neg = kv_cache_neg # always store the clean cache + + def _initialize_crossattn_cache(self, batch_size, dtype, device): + """ + Initialize a Per-GPU cross-attention cache for the Wan model. + """ + crossattn_cache_pos = [] + crossattn_cache_neg = [] + num_heads = wan_default_config[self.model_name]["num_heads"] + head_dim = wan_default_config[self.model_name]["head_dim"] + for _ in range(self.num_transformer_blocks): + crossattn_cache_pos.append({ + "k": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "is_init": False + }) + crossattn_cache_neg.append({ + "k": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "is_init": False + }) + + self.crossattn_cache_pos = crossattn_cache_pos # always store the clean cache + self.crossattn_cache_neg = crossattn_cache_neg # always store the clean cache + + def clear_cache(self): + """ + Explicitly release large KV / cross-attention caches to free GPU memory. + Safe to call between independent inference calls; caches will be + re-created on demand by _initialize_kv_cache/_initialize_crossattn_cache. + """ + self.kv_cache_pos = None + self.kv_cache_neg = None + self.crossattn_cache_pos = None + self.crossattn_cache_neg = None + + def _initialize_sample_scheduler(self, noise): + if self.sample_solver == 'unipc': + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sample_scheduler.set_timesteps( + self.sampling_steps, device=noise.device, shift=self.shift) + self.timesteps = sample_scheduler.timesteps + elif self.sample_solver == 'dpm++': + sample_scheduler = FlowDPMSolverMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sampling_sigmas = get_sampling_sigmas(self.sampling_steps, self.shift) + self.timesteps, _ = retrieve_timesteps( + sample_scheduler, + device=noise.device, + sigmas=sampling_sigmas) + else: + raise NotImplementedError("Unsupported solver.") + return sample_scheduler + + def _set_all_modules_max_attention_size(self, local_attn_size_value: int): + """ + Set max_attention_size on all submodules that define it. + If local_attn_size_value == -1, use the model's global default (32760 for Wan, 28160 for 5B). + Otherwise, set to local_attn_size_value * frame_seq_length. + """ + if local_attn_size_value == -1: + target_size = 32760 + policy = "global" + else: + target_size = int(local_attn_size_value) * self.frame_seq_length + policy = "local" + + updated_modules = [] + # Update root model if applicable + if hasattr(self.generator.model, "max_attention_size"): + try: + prev = getattr(self.generator.model, "max_attention_size") + except Exception: + prev = None + setattr(self.generator.model, "max_attention_size", target_size) + updated_modules.append("") + + # Update all child modules + for name, module in self.generator.model.named_modules(): + if hasattr(module, "max_attention_size"): + try: + prev = getattr(module, "max_attention_size") + except Exception: + prev = None + try: + setattr(module, "max_attention_size", target_size) + updated_modules.append(name if name else module.__class__.__name__) + except Exception: + pass + + def _set_all_modules_sink_size(self, sink_size_value: int): + """ + Override sink_size on all submodules that define it. + """ + if hasattr(self.generator.model, "sink_size"): + setattr(self.generator.model, "sink_size", sink_size_value) + + for name, module in self.generator.model.named_modules(): + if hasattr(module, "sink_size"): + try: + setattr(module, "sink_size", sink_size_value) + except Exception: + pass + + def _set_all_modules_global_sink_size(self, value: int): + """Override global_sink_size on all submodules; create the attribute if missing.""" + setattr(self.generator.model, "global_sink_size", value) + for _, module in self.generator.model.named_modules(): + try: + setattr(module, "global_sink_size", value) + except Exception: + pass + + def _is_shot_boundary(self, raw_prompts, chunk_index): + """Return True when *chunk_index* starts a new shot (prompt-based detection). + + Pure prompt check — no dependency on sink config so that Narrative + RoPE and other shot-aware features can reuse it independently. + """ + if chunk_index == 0: + return False + if not isinstance(raw_prompts, (list, tuple)): + return False + if chunk_index >= len(raw_prompts): + return False + prompt = raw_prompts[chunk_index] + return isinstance(prompt, str) and prompt.startswith(self.scene_cut_prefix) + + def _is_scene_cut(self, raw_prompts, chunk_index): + """Return True when *chunk_index* is the first chunk of a new scene + AND multi-shot sink is enabled.""" + if not self.multi_shot_sink: + return False + if not self.sink_size or self.sink_size == 0: + return False + return self._is_shot_boundary(raw_prompts, chunk_index) + + def _update_sink_for_scene_cut(self, kv_cache, current_num_frames): + """Legacy copy-to-front sink relocation (used by training pipeline).""" + global_sink_tokens = self.global_sink_size * self.frame_seq_length + shot_sink_tokens = self.sink_size * self.frame_seq_length + chunk_tokens = current_num_frames * self.frame_seq_length + copy_len = min(shot_sink_tokens, chunk_tokens) + + # iter-38: local_end_index is in lockstep across all blocks (set by + # _apply_cache_updates with the same value). Read once → 60 syncs to 1. + local_end = int(kv_cache[0]["local_end_index"].item()) + chunk_start = local_end - chunk_tokens + dst_start = global_sink_tokens + src_slice = slice(chunk_start, chunk_start + copy_len) + dst_slice = slice(dst_start, dst_start + copy_len) + + for block_cache in kv_cache: + block_cache["k"][:, dst_slice] = block_cache["k"][:, src_slice].clone() + block_cache["v"][:, dst_slice] = block_cache["v"][:, src_slice].clone() + + def _pin_current_chunk(self, kv_cache, current_num_frames): + """Mark the current chunk's buffer position as pinned for multi-shot sink. + + The pinned region REPLACES the original sink on the next rolling event. + No data is copied here — relocation happens inside the attention layer + during rolling, ensuring zero duplication. + """ + chunk_tokens = current_num_frames * self.frame_seq_length + pin_len = min(self.sink_size * self.frame_seq_length, chunk_tokens) + + # iter-38: local_end_index is in lockstep across all blocks. Read once. + local_end = int(kv_cache[0]["local_end_index"].item()) + chunk_start = local_end - chunk_tokens + + for block_cache in kv_cache: + block_cache["pinned_start"].fill_(chunk_start) + block_cache["pinned_len"].fill_(pin_len) + + def _zero_kv_data(self, kv_cache, current_start_tokens): + """Reset KV cache for clean recache, preserving global sink.""" + global_sink_tokens = self.global_sink_size * self.frame_seq_length + for block_cache in kv_cache: + block_cache["local_end_index"].fill_(global_sink_tokens) + block_cache["global_end_index"].fill_(current_start_tokens) + block_cache["pinned_start"].fill_(-1) + block_cache["pinned_len"].zero_() diff --git a/pipeline/causal_diffusion_inference_sp.py b/pipeline/causal_diffusion_inference_sp.py new file mode 100644 index 0000000..3bddfdf --- /dev/null +++ b/pipeline/causal_diffusion_inference_sp.py @@ -0,0 +1,254 @@ +# Copyright 2024-2025 LongLive Authors. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +"""Sequence-parallel causal diffusion inference pipeline for Wan2.2-TI2V-5B.""" + +from typing import List, Optional +import types + +import torch +import torch.distributed as dist + +from pipeline.causal_diffusion_inference import CausalDiffusionInferencePipeline +from utils.config import wan_default_config +from utils.scheduler import FlowMatchScheduler, SchedulerInterface + +from wan_5b.distributed.sp_ulysses_inference import ( + get_sp_world_size, + init_sequence_parallel, + is_sp_enabled, + sp_print, +) + + +def _model_kw(model_kwargs, key, default=None): + if isinstance(model_kwargs, dict): + return model_kwargs.get(key, default) + return getattr(model_kwargs, key, default) + + +class SPWanDiffusionWrapper5B(torch.nn.Module): + """Wan 5B diffusion wrapper backed by the Ulysses SP causal model.""" + + def __init__( + self, + model_name="Wan2.2-TI2V-5B", + timestep_shift=5.0, + local_attn_size=-1, + sink_size=0, + num_frame_per_block=1, + t_scale=1.0, + rope_method="linear", + original_seq_len=None, + ): + super().__init__() + if model_name != "Wan2.2-TI2V-5B": + raise ValueError(f"SP inference only supports Wan2.2-TI2V-5B, got {model_name}") + + from wan_5b.modules.causal_model_sp_ulysses import UlyssesSPCausalWanModel + + sp_print("Using Ulysses SP model for Wan2.2-TI2V-5B") + self.model = UlyssesSPCausalWanModel( + model_type="ti2v", + in_dim=48, + dim=3072, + ffn_dim=14336, + out_dim=48, + num_heads=24, + num_layers=30, + local_attn_size=local_attn_size, + sink_size=sink_size, + num_frame_per_block=num_frame_per_block, + ) + self.model.eval() + self.model.t_scale = t_scale + self.model.rope_method = rope_method + self.model.original_seq_len = original_seq_len + + self.uniform_timestep = False + self.scheduler = FlowMatchScheduler( + shift=timestep_shift, sigma_min=0.0, extra_one_step=True + ) + self.scheduler.set_timesteps(1000, training=True) + self.seq_len = 28160 + self._compiled_model_call = None + self.get_scheduler() + + def get_scheduler(self) -> SchedulerInterface: + scheduler = self.scheduler + scheduler.convert_x0_to_noise = types.MethodType( + SchedulerInterface.convert_x0_to_noise, scheduler + ) + scheduler.convert_noise_to_x0 = types.MethodType( + SchedulerInterface.convert_noise_to_x0, scheduler + ) + scheduler.convert_velocity_to_x0 = types.MethodType( + SchedulerInterface.convert_velocity_to_x0, scheduler + ) + self.scheduler = scheduler + return scheduler + + def configure_torch_compile( + self, + *, + backend: str = "inductor", + mode: str | None = "max-autotune-no-cudagraphs", + fullgraph: bool = False, + dynamic: bool | None = False, + options: dict | None = None, + suppress_errors: bool = True, + ) -> bool: + from utils.torch_compile_utils import configure_module_call_torch_compile + + self._compiled_model_call = configure_module_call_torch_compile( + self.model, + name="SPWanDiffusionWrapper5B.model", + backend=backend, + mode=mode, + fullgraph=fullgraph, + dynamic=dynamic, + options=options, + suppress_errors=suppress_errors, + ) + return self._compiled_model_call is not None + + def _call_model(self, *args, **kwargs): + if self._compiled_model_call is not None: + return self._compiled_model_call(*args, **kwargs) + return self.model(*args, **kwargs) + + def _convert_flow_pred_to_x0( + self, flow_pred: torch.Tensor, xt: torch.Tensor, timestep: torch.Tensor + ) -> torch.Tensor: + original_dtype = flow_pred.dtype + flow_pred, xt, sigmas, timesteps = map( + lambda x: x.double().to(flow_pred.device), + [flow_pred, xt, self.scheduler.sigmas, self.scheduler.timesteps], + ) + timestep_id = torch.argmin( + (timesteps.unsqueeze(0) - timestep.unsqueeze(1)).abs(), dim=1 + ) + sigma_t = sigmas[timestep_id].reshape(-1, 1, 1, 1) + return (xt - sigma_t * flow_pred).to(original_dtype) + + def forward( + self, + noisy_image_or_video: torch.Tensor, + conditional_dict: dict, + timestep: torch.Tensor, + kv_cache: Optional[List[dict]] = None, + crossattn_cache: Optional[List[dict]] = None, + current_start: Optional[int] = None, + cache_start: Optional[int] = None, + **_, + ) -> torch.Tensor: + prompt_embeds = conditional_dict["prompt_embeds"] + input_timestep = timestep[:, 0] if self.uniform_timestep else timestep + flow_pred = self._call_model( + noisy_image_or_video.permute(0, 2, 1, 3, 4), + t=input_timestep, + context=prompt_embeds, + seq_len=self.seq_len, + kv_cache=kv_cache, + crossattn_cache=crossattn_cache, + current_start=current_start if current_start is not None else 0, + cache_start=cache_start if cache_start is not None else 0, + ).permute(0, 2, 1, 3, 4) + pred_x0 = self._convert_flow_pred_to_x0( + flow_pred=flow_pred.flatten(0, 1), + xt=noisy_image_or_video.flatten(0, 1), + timestep=timestep.flatten(0, 1), + ).unflatten(0, flow_pred.shape[:2]) + return flow_pred, pred_x0 + + +class CausalDiffusionInferencePipelineSP(CausalDiffusionInferencePipeline): + """LongLive2.0 diffusion inference pipeline using Ulysses sequence parallelism.""" + + def __init__( + self, + args, + device, + generator=None, + text_encoder=None, + vae=None, + sp_group=None, + dp_rank: int = 0, + ): + if dist.is_initialized(): + init_sequence_parallel(group=sp_group) + self.dp_rank = dp_rank + if generator is None: + model_kwargs = getattr(args, "model_kwargs", {}) + generator = SPWanDiffusionWrapper5B( + model_name=_model_kw(model_kwargs, "model_name", "Wan2.2-TI2V-5B"), + timestep_shift=_model_kw(model_kwargs, "timestep_shift", 5.0), + local_attn_size=_model_kw(model_kwargs, "local_attn_size", -1), + sink_size=_model_kw(model_kwargs, "sink_size", 0), + num_frame_per_block=getattr(args, "num_frame_per_block", 1), + t_scale=getattr(args, "t_scale", 1.0), + rope_method=getattr(args, "rope_method", "linear"), + original_seq_len=getattr(args, "original_seq_len", None), + ) + super().__init__( + args=args, + device=device, + generator=generator, + text_encoder=text_encoder, + vae=vae, + ) + if self.quantize_kv: + raise ValueError("kv_quant is not supported in Ulysses SP inference.") + sp_print( + f"SP diffusion pipeline initialized: nfpb={self.num_frame_per_block}, " + f"sp_world={get_sp_world_size() if is_sp_enabled() else 1}, dp_rank={dp_rank}" + ) + + def _initialize_kv_cache(self, batch_size, dtype, device): + """Initialize head-split KV caches for Ulysses SP.""" + kv_cache_pos = [] + kv_cache_neg = [] + num_heads = wan_default_config[self.model_name]["num_heads"] + head_dim = wan_default_config[self.model_name]["head_dim"] + sp_world_size = get_sp_world_size() if is_sp_enabled() else 1 + if num_heads % sp_world_size != 0: + raise ValueError( + f"num_heads ({num_heads}) must be divisible by sp_world_size ({sp_world_size})" + ) + cache_heads = num_heads // sp_world_size + + if self.local_attn_size != -1: + kv_cache_size = self.local_attn_size * self.frame_seq_length + else: + kv_cache_size = 3 * self.num_frame_per_block * self.frame_seq_length + block_token_size = self.num_frame_per_block * self.frame_seq_length + max_blocks = kv_cache_size // block_token_size + + sp_print( + f"Initializing SP KV cache: size={kv_cache_size}, heads/rank={cache_heads}, " + f"block_token_size={block_token_size}" + ) + for _ in range(self.num_transformer_blocks): + entry = { + "k": torch.zeros( + [batch_size, kv_cache_size, cache_heads, head_dim], + dtype=dtype, device=device, + ), + "v": torch.zeros( + [batch_size, kv_cache_size, cache_heads, head_dim], + dtype=dtype, device=device, + ), + "quantized": False, + "block_token_size": block_token_size, + "max_blocks": max_blocks, + "num_heads": cache_heads, + "num_filled_blocks": 0, + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([-1], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + } + kv_cache_pos.append({key: value.clone() if torch.is_tensor(value) else value for key, value in entry.items()}) + kv_cache_neg.append({key: value.clone() if torch.is_tensor(value) else value for key, value in entry.items()}) + + self.kv_cache_pos = kv_cache_pos + self.kv_cache_neg = kv_cache_neg diff --git a/pipeline/self_forcing_training.py b/pipeline/self_forcing_training.py new file mode 100644 index 0000000..411e8ab --- /dev/null +++ b/pipeline/self_forcing_training.py @@ -0,0 +1,774 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +from utils.wan_5b_wrapper import WanDiffusionWrapper +from utils.scheduler import SchedulerInterface +from utils.i2v_conditioning import ( + _overwrite_i2v_context, + _zero_i2v_context_timestep, +) +from typing import List, Optional, Tuple +import torch +import torch.distributed as dist +from torchvision.io import write_video + + + +class SelfForcingTrainingPipeline: + def __init__(self, + scheduler: SchedulerInterface, + generator: WanDiffusionWrapper, + denoising_step_list: Optional[List[int]] = None, + num_frame_per_block=3, + independent_first_frame: bool = False, + same_step_across_blocks: bool = False, + last_step_only: bool = False, + num_max_frames: int = 21, + context_noise: int = 0, + sampling_steps: Optional[int] = None, + local_attn_size: int = -1, + sink_size: int = 0, + multi_shot_sink: bool = False, + scene_cut_prefix: str = "[SCENE_CUT]", + multi_shot_rope_offset: float = 0.0, + frame_seq_length: Optional[int] = None, + **kwargs): + super().__init__() + self.scheduler = scheduler + self.generator = generator + if denoising_step_list is None: + if sampling_steps is None: + raise ValueError("sampling_steps is required when denoising_step_list is not provided") + denoising_step_list = self._build_default_denoising_step_list(sampling_steps) + self.denoising_step_list = torch.as_tensor(denoising_step_list, dtype=torch.long) + if self.denoising_step_list[-1] == 0: + self.denoising_step_list = self.denoising_step_list[:-1] # remove the zero timestep for inference + + # Wan specific hyperparameters + self.num_transformer_blocks = self.generator.model.num_layers + if not dist.is_initialized() or dist.get_rank() == 0: + print(f"num_transformer_blocks: {self.num_transformer_blocks}") + if frame_seq_length is not None: + self.frame_seq_length = frame_seq_length + else: + self.frame_seq_length = 880 + if not dist.is_initialized() or dist.get_rank() == 0: + print(f"frame_seq_length: {self.frame_seq_length}") + self.num_frame_per_block = num_frame_per_block + self.context_noise = context_noise + self.i2v = False + + self.kv_cache1 = None + self.kv_cache2 = None + self.crossattn_cache = None + self.independent_first_frame = independent_first_frame + self.same_step_across_blocks = same_step_across_blocks + self.last_step_only = last_step_only + self.sampling_steps = sampling_steps + self.local_attn_size = local_attn_size + self.sink_size = sink_size + self.multi_shot_sink = multi_shot_sink + self.global_sink_size = sink_size if multi_shot_sink else 0 + self.scene_cut_prefix = scene_cut_prefix + self.multi_shot_rope_offset = multi_shot_rope_offset + self.kv_cache_size = num_max_frames * self.frame_seq_length + + if not dist.is_initialized() or dist.get_rank() == 0: + print( + f"[SelfForcingTrainingPipeline] kv_cache_size={self.kv_cache_size}, " + f"local_attn_size={local_attn_size}, sink_size={sink_size}, " + f"auto_global_sink_size={self.global_sink_size}, multi_shot_sink={multi_shot_sink}" + ) + + def _build_default_denoising_step_list(self, sampling_steps): + shift = getattr(self.scheduler, "shift", 1.0) + num_train_timesteps = getattr(self.scheduler, "num_train_timesteps", 1000) + sigmas = torch.linspace(1.0, 0.0, int(sampling_steps) + 1, dtype=torch.float32)[:-1] + sigmas = shift * sigmas / (1 + (shift - 1) * sigmas) + return torch.cat([ + (sigmas * num_train_timesteps).to(torch.long), + torch.zeros(1, dtype=torch.long), + ]) + + def generate_and_sync_list(self, num_blocks, num_denoising_steps, device): + rank = dist.get_rank() if dist.is_initialized() else 0 + + if rank == 0: + # Generate random indices + indices = torch.randint( + low=0, + high=num_denoising_steps, + size=(num_blocks,), + device=device + ) + if self.last_step_only: + indices = torch.ones_like(indices) * (num_denoising_steps - 1) + else: + indices = torch.empty(num_blocks, dtype=torch.long, device=device) + if dist.is_initialized(): + dist.broadcast(indices, src=0) # Broadcast the random indices to all ranks + return indices.tolist() + + def generate_chunk_with_cache( + self, + noise: torch.Tensor, + conditional_dict: dict, + *, + current_start_frame: int = 0, + requires_grad: bool = True, + return_sim_step: bool = False, + ) -> Tuple[torch.Tensor, Optional[int], Optional[int]]: + """ + Chunk generation method tailored for sequential training + + Args: + noise: noise tensor for a single chunk [batch_size, chunk_frames, C, H, W] + conditional_dict: dictionary of conditional information + kv_cache: externally provided KV cache (defaults to self.kv_cache1 if None) + crossattn_cache: externally provided cross-attention cache (defaults to self.crossattn_cache if None) + current_start_frame: start frame index of the chunk in the full sequence + requires_grad: whether gradients are required + return_sim_step: whether to return simulation step info + + Returns: + output: generated chunk [batch_size, chunk_frames, C, H, W] + denoised_timestep_from: starting denoise timestep + denoised_timestep_to: ending denoise timestep + """ + batch_size, chunk_frames, num_channels, height, width = noise.shape + + # Compute block configuration + if not self.independent_first_frame or chunk_frames % self.num_frame_per_block == 0: + assert chunk_frames % self.num_frame_per_block == 0 + num_blocks = chunk_frames // self.num_frame_per_block + all_num_frames = [self.num_frame_per_block] * num_blocks + else: + # Handle the case of an independent first frame + assert (chunk_frames - 1) % self.num_frame_per_block == 0 + num_blocks = (chunk_frames - 1) // self.num_frame_per_block + all_num_frames = [1] + [self.num_frame_per_block] * num_blocks + + # Prepare output tensor + output = torch.zeros_like(noise) + + # Build per-block conditional dicts for prompt switching + prompt_embeds = conditional_dict["prompt_embeds"] + num_prompts = prompt_embeds.shape[0] + num_segments = num_prompts // batch_size + if num_segments > 1: + prompt_embeds_per_block = prompt_embeds.reshape( + batch_size, num_segments, *prompt_embeds.shape[1:]) + conditional_dict_list = [ + {"prompt_embeds": prompt_embeds_per_block[:, i]} + for i in range(num_segments) + ] + else: + conditional_dict_list = None + + # Randomly select denoising steps (synced across ranks) + num_denoising_steps = len(self.denoising_step_list) + exit_flags = self.generate_and_sync_list(len(all_num_frames), num_denoising_steps, device=noise.device) + + # Determine gradient-enabled range — disable everywhere when requires_grad=False + if not requires_grad: + start_gradient_frame_index = chunk_frames # Out of range: no gradients anywhere + else: + start_gradient_frame_index = 0 + + if not dist.is_initialized() or dist.get_rank() == 0: + print(f"[SeqTrain-Pipeline] start_gradient_frame_index={start_gradient_frame_index}, chunk_frames={chunk_frames}") + + # Generate block by block + local_start_frame = 0 + for block_index, current_num_frames in enumerate(all_num_frames): + if conditional_dict_list is not None: + block_cond = conditional_dict_list[min(block_index, len(conditional_dict_list) - 1)] + for cache_idx in range(self.num_transformer_blocks): + self.crossattn_cache[cache_idx]["is_init"] = False + else: + block_cond = conditional_dict + + noisy_input = noise[:, local_start_frame:local_start_frame + current_num_frames] + + # Spatial denoising loop + for step_idx, current_timestep in enumerate(self.denoising_step_list): + exit_flag = ( + step_idx == exit_flags[0] + if self.same_step_across_blocks + else step_idx == exit_flags[block_index] + ) + + timestep = torch.ones( + [batch_size, current_num_frames], + device=noise.device, + dtype=torch.int64 + ) * current_timestep + + if not exit_flag: + # Intermediate steps: no gradients + with torch.no_grad(): + _, denoised_pred = self.generator( + noisy_image_or_video=noisy_input, + conditional_dict=block_cond, + timestep=timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=(current_start_frame + local_start_frame) * self.frame_seq_length, + ) + + # Add noise for the next step + if step_idx < len(self.denoising_step_list) - 1: + next_timestep = self.denoising_step_list[step_idx + 1] + noisy_input = self.scheduler.add_noise( + denoised_pred.flatten(0, 1), + torch.randn_like(denoised_pred.flatten(0, 1)), + next_timestep * torch.ones( + [batch_size * current_num_frames], device=noise.device, dtype=torch.long + ), + ).unflatten(0, denoised_pred.shape[:2]) + else: + # Final step may require gradients + enable_grad = local_start_frame >= start_gradient_frame_index + + context_manager = torch.enable_grad() if enable_grad else torch.no_grad() + with context_manager: + _, denoised_pred = self.generator( + noisy_image_or_video=noisy_input, + conditional_dict=block_cond, + timestep=timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=(current_start_frame + local_start_frame) * self.frame_seq_length, + ) + break + + # Record output + output[:, local_start_frame:local_start_frame + current_num_frames] = denoised_pred + + # Update cache with context noise + context_timestep = torch.ones_like(timestep) * self.context_noise + context_noisy = self.scheduler.add_noise( + denoised_pred.flatten(0, 1), + torch.randn_like(denoised_pred.flatten(0, 1)), + context_timestep.flatten(0, 1), + ).unflatten(0, denoised_pred.shape[:2]) + + with torch.no_grad(): + self.generator( + noisy_image_or_video=context_noisy, + conditional_dict=block_cond, + timestep=context_timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=(current_start_frame + local_start_frame) * self.frame_seq_length, + ) + + local_start_frame += current_num_frames + + # Compute returned timestep information + if not self.same_step_across_blocks: + denoised_timestep_from, denoised_timestep_to = None, None + elif exit_flags[0] == len(self.denoising_step_list) - 1: + denoised_timestep_to = 0 + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - self.denoising_step_list[exit_flags[0]].cuda()).abs(), dim=0 + ).item() + else: + denoised_timestep_to = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - self.denoising_step_list[exit_flags[0] + 1].cuda()).abs(), dim=0 + ).item() + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - self.denoising_step_list[exit_flags[0]].cuda()).abs(), dim=0 + ).item() + + if return_sim_step: + return output, denoised_timestep_from, denoised_timestep_to, exit_flags[0] + 1 + + return output, denoised_timestep_from, denoised_timestep_to + + def inference_with_trajectory( + self, + noise: torch.Tensor, + initial_latent: Optional[torch.Tensor] = None, + return_sim_step: bool = False, + slice_last_frames: int = 21, + sampling_steps: Optional[int] = None, + **conditional_dict + ) -> torch.Tensor: + # Apply local_attn_size / sink_size overrides before inference, + # matching what CausalDiffusionInferencePipeline does. + prev_state = self._apply_attn_overrides() + try: + return self._inference_with_trajectory_inner( + noise=noise, + initial_latent=initial_latent, + return_sim_step=return_sim_step, + slice_last_frames=slice_last_frames, + sampling_steps=sampling_steps, + **conditional_dict, + ) + finally: + self._restore_attn_overrides(prev_state) + + def _apply_attn_overrides(self): + """Save current model attention state and apply pipeline overrides.""" + model = self.generator.model + prev = { + "local_attn_size": getattr(model, "local_attn_size", -1), + "rope_temporal_offset": getattr(model, "rope_temporal_offset", 0.0), + "max_attention_sizes": {}, + "sink_sizes": {}, + "global_sink_sizes": {}, + } + for name, module in model.named_modules(): + if hasattr(module, "max_attention_size"): + prev["max_attention_sizes"][name] = module.max_attention_size + if hasattr(module, "sink_size"): + prev["sink_sizes"][name] = module.sink_size + if hasattr(module, "global_sink_size"): + prev["global_sink_sizes"][name] = module.global_sink_size + + model.local_attn_size = self.local_attn_size + model.rope_temporal_offset = 0.0 + self._set_all_modules_max_attention_size(self.local_attn_size) + if self.sink_size is not None and self.sink_size >= 0: + self._set_all_modules_sink_size(self.sink_size) + self._set_all_modules_global_sink_size(self.global_sink_size) + + return prev + + def _restore_attn_overrides(self, prev): + """Restore model attention state saved by _apply_attn_overrides.""" + model = self.generator.model + model.local_attn_size = prev["local_attn_size"] + model.rope_temporal_offset = prev["rope_temporal_offset"] + for name, module in model.named_modules(): + if name in prev["max_attention_sizes"]: + try: + module.max_attention_size = prev["max_attention_sizes"][name] + except Exception: + pass + if name in prev["sink_sizes"]: + try: + module.sink_size = prev["sink_sizes"][name] + except Exception: + pass + if name in prev["global_sink_sizes"]: + try: + module.global_sink_size = prev["global_sink_sizes"][name] + except Exception: + pass + + @staticmethod + def _is_scene_cut_from_mask(scene_cut_mask, block_index: int) -> bool: + if scene_cut_mask is None or block_index <= 0: + return False + if block_index >= len(scene_cut_mask): + return False + value = scene_cut_mask[block_index] + if torch.is_tensor(value): + return bool(value.item()) + return bool(value) + + def _set_all_modules_sink_size(self, sink_size_value: int): + """Override sink_size on all submodules that define it.""" + model = self.generator.model + if hasattr(model, "sink_size"): + model.sink_size = sink_size_value + for _name, module in model.named_modules(): + if hasattr(module, "sink_size"): + try: + module.sink_size = sink_size_value + except Exception: + pass + + def _set_all_modules_global_sink_size(self, value: int): + """Override global_sink_size on all submodules; create the attribute if missing.""" + setattr(self.generator.model, "global_sink_size", value) + for _, module in self.generator.model.named_modules(): + try: + setattr(module, "global_sink_size", value) + except Exception: + pass + + def _pin_current_chunk(self, kv_cache, current_num_frames): + """Mark the current chunk's buffer position as pinned for multi-shot sink. + + The pinned region REPLACES the original sink on the next rolling event. + No data is copied here — relocation happens inside the attention layer + during rolling, ensuring zero duplication. + """ + chunk_tokens = current_num_frames * self.frame_seq_length + pin_len = min(self.sink_size * self.frame_seq_length, chunk_tokens) + + for block_cache in kv_cache: + local_end = block_cache["local_end_index"].item() + chunk_start = local_end - chunk_tokens + block_cache["pinned_start"].fill_(chunk_start) + block_cache["pinned_len"].fill_(pin_len) + + def _inference_with_trajectory_inner( + self, + noise: torch.Tensor, + initial_latent: Optional[torch.Tensor] = None, + return_sim_step: bool = False, + slice_last_frames: int = 21, + sampling_steps: Optional[int] = None, + **conditional_dict + ) -> torch.Tensor: + from wan_5b.utils.fm_solvers_unipc import FlowUniPCMultistepScheduler + + batch_size, num_frames, num_channels, height, width = noise.shape + num_input_frames = initial_latent.shape[1] if initial_latent is not None else 0 + clamp_i2v_first_chunk = self.independent_first_frame and initial_latent is not None + if clamp_i2v_first_chunk and num_input_frames != 1: + raise ValueError( + f"i2v first-chunk clamp expects one conditioning latent frame, got {num_input_frames}." + ) + + if not self.independent_first_frame or clamp_i2v_first_chunk: + # If the first frame is independent and the first frame is provided, then the number of frames in the + # noise should still be a multiple of num_frame_per_block + assert num_frames % self.num_frame_per_block == 0 + num_blocks = num_frames // self.num_frame_per_block + else: + # Using a [1, 4, 4, 4, 4, 4, ...] model to generate a video without image conditioning + assert (num_frames - 1) % self.num_frame_per_block == 0 + num_blocks = (num_frames - 1) // self.num_frame_per_block + num_output_frames = ( + num_frames if clamp_i2v_first_chunk else num_frames + num_input_frames + ) + output = torch.zeros( + [batch_size, num_output_frames, num_channels, height, width], + device=noise.device, + dtype=noise.dtype + ) + + # Step 1: Initialize KV cache to all zeros + self._initialize_kv_cache( + batch_size=batch_size, dtype=noise.dtype, device=noise.device + ) + self._initialize_crossattn_cache( + batch_size=batch_size, dtype=noise.dtype, device=noise.device + ) + + # Build per-block conditional dicts for prompt switching + prompt_embeds = conditional_dict["prompt_embeds"] + num_prompts = prompt_embeds.shape[0] + num_segments = num_prompts // batch_size + if num_segments > 1: + prompt_embeds_per_block = prompt_embeds.reshape( + batch_size, num_segments, *prompt_embeds.shape[1:]) + conditional_dict_list = [ + {"prompt_embeds": prompt_embeds_per_block[:, i]} + for i in range(num_segments) + ] + else: + conditional_dict_list = None + + # Step 2: Cache context feature + current_start_frame = 0 + if initial_latent is not None and not clamp_i2v_first_chunk: + timestep = torch.ones([batch_size, 1], device=noise.device, dtype=torch.int64) * 0 + # Assume num_input_frames is 1 + self.num_frame_per_block * num_input_blocks + output[:, :1] = initial_latent + init_cond = conditional_dict_list[0] if conditional_dict_list is not None else conditional_dict + with torch.no_grad(): + self.generator( + noisy_image_or_video=initial_latent, + conditional_dict=init_cond, + timestep=timestep * 0, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=current_start_frame * self.frame_seq_length + ) + current_start_frame += 1 + + # Step 3: Temporal denoising loop + all_num_frames = [self.num_frame_per_block] * num_blocks + if self.independent_first_frame and initial_latent is None: + all_num_frames = [1] + all_num_frames + + # --- UniPC scheduler setup --- + # Priority: function arg > pipeline attribute > len(denoising_step_list) + if sampling_steps is None: + sampling_steps = self.sampling_steps if self.sampling_steps is not None else len(self.denoising_step_list) + shift = self.scheduler.shift + num_train_timesteps = self.scheduler.num_train_timesteps + ref_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=num_train_timesteps, shift=1, use_dynamic_shifting=False) + ref_scheduler.set_timesteps(sampling_steps, device=noise.device, shift=shift) + unipc_timesteps = ref_scheduler.timesteps + num_denoising_steps = len(unipc_timesteps) + + exit_flags = self.generate_and_sync_list(len(all_num_frames), num_denoising_steps, device=noise.device) + if slice_last_frames == -1: + # -1 means keep full sequence trainable. + start_gradient_frame_index = 0 + else: + start_gradient_frame_index = num_output_frames - slice_last_frames + + scene_cut_mask = conditional_dict.pop("scene_cut_mask", None) + current_shot_index = 0 + phi = self.multi_shot_rope_offset + self.generator.model.rope_temporal_offset = 0.0 + + grad_enable_mask = torch.zeros((batch_size, sum(all_num_frames)), dtype=torch.bool) + for block_index, current_num_frames in enumerate(all_num_frames): + if phi != 0.0 and self._is_scene_cut_from_mask(scene_cut_mask, block_index): + current_shot_index += 1 + self.generator.model.rope_temporal_offset = current_shot_index * phi + if not dist.is_initialized() or dist.get_rank() == 0: + print( + f"[training] multi-shot RoPE: shot_index={current_shot_index}, " + f"temporal_offset={self.generator.model.rope_temporal_offset:.4f}" + ) + + if conditional_dict_list is not None: + block_cond = conditional_dict_list[min(block_index, len(conditional_dict_list) - 1)] + for cache_idx in range(self.num_transformer_blocks): + self.crossattn_cache[cache_idx]["is_init"] = False + else: + block_cond = conditional_dict + + first_i2v_block = clamp_i2v_first_chunk and block_index == 0 + noise_start_frame = ( + current_start_frame + if clamp_i2v_first_chunk + else current_start_frame - num_input_frames + ) + latents = noise[ + :, + noise_start_frame:noise_start_frame + current_num_frames, + ] + + # re-init scheduler per chunk (internal state is consumed during stepping) + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=num_train_timesteps, shift=1, use_dynamic_shifting=False) + sample_scheduler.set_timesteps(sampling_steps, device=noise.device, shift=shift) + + # Step 3.1: Spatial denoising loop (UniPC multi-step) + for index, t in enumerate(sample_scheduler.timesteps): + if self.same_step_across_blocks: + exit_flag = (index == exit_flags[0]) + else: + exit_flag = (index == exit_flags[block_index]) + timestep = t * torch.ones( + [batch_size, current_num_frames], + device=noise.device, + dtype=torch.float32) + if first_i2v_block: + latents = _overwrite_i2v_context( + latents, initial_latent, num_input_frames + ) + timestep = _zero_i2v_context_timestep( + timestep, num_input_frames + ) + if not exit_flag: + with torch.no_grad(): + flow_pred, _ = self.generator( + noisy_image_or_video=latents, + conditional_dict=block_cond, + timestep=timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=current_start_frame * self.frame_seq_length + ) + latents = sample_scheduler.step( + flow_pred, t, latents, return_dict=False)[0] + if first_i2v_block: + latents = _overwrite_i2v_context( + latents, initial_latent, num_input_frames + ) + else: + if current_start_frame < start_gradient_frame_index: + grad_enable_mask[:, current_start_frame:current_start_frame + current_num_frames] = False + with torch.no_grad(): + flow_pred, denoised_pred = self.generator( + noisy_image_or_video=latents, + conditional_dict=block_cond, + timestep=timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=current_start_frame * self.frame_seq_length + ) + else: + grad_enable_mask[:, current_start_frame:current_start_frame + current_num_frames] = True + flow_pred, denoised_pred = self.generator( + noisy_image_or_video=latents, + conditional_dict=block_cond, + timestep=timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=current_start_frame * self.frame_seq_length + ) + if first_i2v_block: + denoised_pred = _overwrite_i2v_context( + denoised_pred, initial_latent, num_input_frames + ) + break + + # Step 3.2: record the model's output + output[:, current_start_frame:current_start_frame + current_num_frames] = denoised_pred + + # Step 3.3: rerun with context noise to update the cache + context_timestep = torch.ones( + [batch_size, current_num_frames], device=noise.device, dtype=torch.long) * self.context_noise + if first_i2v_block: + context_timestep = _zero_i2v_context_timestep( + context_timestep, num_input_frames + ) + # add context noise + context_noise = torch.randn_like(denoised_pred.flatten(0, 1)) + if first_i2v_block: + context_noise = context_noise.unflatten(0, denoised_pred.shape[:2]) + context_noise[:, :num_input_frames] = 0 + context_noise = context_noise.flatten(0, 1) + denoised_pred = self.scheduler.add_noise( + denoised_pred.flatten(0, 1), + context_noise, + context_timestep.reshape(1, -1) * torch.ones( + [batch_size * current_num_frames], device=noise.device, dtype=torch.long) + ).unflatten(0, denoised_pred.shape[:2]) + if first_i2v_block: + denoised_pred = _overwrite_i2v_context( + denoised_pred, initial_latent, num_input_frames + ) + with torch.no_grad(): + self.generator( + noisy_image_or_video=denoised_pred, + conditional_dict=block_cond, + timestep=context_timestep, + kv_cache=self.kv_cache1, + crossattn_cache=self.crossattn_cache, + current_start=current_start_frame * self.frame_seq_length + ) + + # Step 3.3b: pin KV on scene cut for multi-shot sink. + if self.multi_shot_sink and scene_cut_mask is not None: + is_cut = ( + block_index > 0 + and block_index < len(scene_cut_mask) + and scene_cut_mask[block_index] + ) + if is_cut: + self._pin_current_chunk(self.kv_cache1, current_num_frames) + + # Step 3.4: update the start and end frame indices + current_start_frame += current_num_frames + + # Step 3.5: Return the denoised timestep + if not self.same_step_across_blocks: + denoised_timestep_from, denoised_timestep_to = None, None + elif exit_flags[0] == num_denoising_steps - 1: + denoised_timestep_to = 0 + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_flags[0]].cuda()).abs(), dim=0).item() + else: + denoised_timestep_to = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_flags[0] + 1].cuda()).abs(), dim=0).item() + denoised_timestep_from = 1000 - torch.argmin( + (self.scheduler.timesteps.cuda() - unipc_timesteps[exit_flags[0]].cuda()).abs(), dim=0).item() + + if return_sim_step: + return output, denoised_timestep_from, denoised_timestep_to, exit_flags[0] + 1 + + return output, denoised_timestep_from, denoised_timestep_to + + def _initialize_kv_cache(self, batch_size, dtype, device): + """ + Initialize a Per-GPU KV cache for the Wan model. + """ + kv_cache1 = [] + # Get the actual number of heads and head dimension from model + num_heads = self.generator.model.num_heads + head_dim = self.generator.model.dim // num_heads + + for _ in range(self.num_transformer_blocks): + kv_cache1.append({ + "k": torch.zeros([batch_size, self.kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, self.kv_cache_size, num_heads, head_dim], dtype=dtype, device=device), + "global_end_index": torch.tensor([0], dtype=torch.long, device=device), + "local_end_index": torch.tensor([0], dtype=torch.long, device=device), + "pinned_start": torch.tensor([0], dtype=torch.long, device=device), + "pinned_len": torch.tensor([0], dtype=torch.long, device=device), + }) + + self.kv_cache1 = kv_cache1 + + def _initialize_crossattn_cache(self, batch_size, dtype, device): + """ + Initialize a Per-GPU cross-attention cache for the Wan model. + """ + crossattn_cache = [] + + # Get the actual number of heads and head dimension from model + num_heads = self.generator.model.num_heads + head_dim = self.generator.model.dim // num_heads + + for _ in range(self.num_transformer_blocks): + crossattn_cache.append({ + "k": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "v": torch.zeros([batch_size, 512, num_heads, head_dim], dtype=dtype, device=device), + "is_init": False + }) + + self.crossattn_cache = crossattn_cache + + def clear_kv_cache(self): + """ + Zero out all tensors in KV cache and cross-attention cache instead of setting them to None. + This preserves memory allocation while clearing old information, avoiding reallocation overhead. + """ + + # Clear KV cache + if getattr(self, "kv_cache1", None) is not None: + for blk in self.kv_cache1: + blk["k"].zero_() + blk["v"].zero_() + if "global_end_index" in blk: + blk["global_end_index"].zero_() + if "local_end_index" in blk: + blk["local_end_index"].zero_() + if "pinned_start" in blk: + blk["pinned_start"].zero_() + if "pinned_len" in blk: + blk["pinned_len"].zero_() + + # Clear cross-attention cache + if getattr(self, "crossattn_cache", None) is not None: + for blk in self.crossattn_cache: + blk["k"].zero_() + blk["v"].zero_() + blk["is_init"] = False + + def _set_all_modules_max_attention_size(self, local_attn_size_value: int): + """ + Set a unified upper bound for all submodules that contain the max_attention_size attribute. + local_attn_size_value == -1 indicates global attention (use Wan's default token limit 32760). + Otherwise set to local_attn_size_value * frame_seq_length. + """ + if isinstance(local_attn_size_value, (list, tuple)): + raise ValueError("_set_all_modules_max_attention_size expects an int, got list/tuple.") + + if int(local_attn_size_value) == -1: + target_size = 32760 + policy = "global" + else: + target_size = int(local_attn_size_value) * self.frame_seq_length + policy = "local" + + # Root module + if hasattr(self.generator.model, "max_attention_size"): + try: + _ = getattr(self.generator.model, "max_attention_size") + except Exception: + pass + setattr(self.generator.model, "max_attention_size", target_size) + + # Child modules + for name, module in self.generator.model.named_modules(): + if hasattr(module, "max_attention_size"): + try: + setattr(module, "max_attention_size", target_size) + except Exception: + pass diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..315a68e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,42 @@ +opencv-python>=4.9.0.80 +diffusers==0.31.0 +transformers>=4.49.0,<5 +tokenizers>=0.20.3 +accelerate>=1.1.1 +tqdm +datasets +imageio +easydict +ftfy +dashscope +imageio-ffmpeg +# numpy==1.24.4 +wandb +omegaconf +einops +av==13.1.0 +opencv-python +git+https://github.com/openai/CLIP.git +open_clip_torch +starlette +pycocotools +lmdb +matplotlib +sentencepiece +pydantic==2.10.6 +scikit-image +huggingface_hub[cli] +dominate +# Optional TensorRT support. Install separately because nvidia-tensorrt is a +# placeholder on PyPI and requires NVIDIA's package index to be configured first: +# pip install nvidia-pyindex +# pip install nvidia-tensorrt +# pip install pycuda +onnx +onnxruntime +onnxscript +onnxconverter_common +flask +flask-socketio +torchao==0.13.0 # paired with the documented PyTorch 2.8.0 environment +peft diff --git a/scripts/compute_sp_vae_chunk_halo.py b/scripts/compute_sp_vae_chunk_halo.py new file mode 100644 index 0000000..e6ded23 --- /dev/null +++ b/scripts/compute_sp_vae_chunk_halo.py @@ -0,0 +1,163 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +"""Compute SP chunk-halo VAE frame windows for a training config.""" + +from __future__ import annotations + +import argparse +import json +import sys +from pathlib import Path + +from omegaconf import OmegaConf + +REPO_ROOT = Path(__file__).resolve().parents[1] +if str(REPO_ROOT) not in sys.path: + sys.path.insert(0, str(REPO_ROOT)) + +from utils.config import normalize_config, wan_default_config + +DEFAULT_SP_VAE_HALO_LATENTS = 28 + + +def latent_range_to_raw_window( + latent_start: int, + latent_end: int, + *, + temporal_compression_ratio: int, +) -> tuple[int, int, int]: + """Map a latent range to the raw-frame window needed by Wan VAE encode.""" + if latent_end <= latent_start: + raise ValueError(f"latent_end must be > latent_start, got {latent_start}, {latent_end}") + ratio = int(temporal_compression_ratio) + if latent_start == 0: + return 0, 1 + ratio * (latent_end - 1), 0 + return ratio * (latent_start - 1), 1 + ratio * (latent_end - 1), 1 + + +def compute_chunk_halo_metas( + *, + total_latent_frames: int, + total_raw_frames: int, + sp_size: int, + halo_latents: int, + temporal_compression_ratio: int, +) -> list[dict[str, int]]: + if sp_size <= 0: + raise ValueError("sp_size must be positive") + if halo_latents < 0: + raise ValueError("halo_latents must be non-negative") + if total_latent_frames % sp_size != 0: + raise ValueError( + f"total_latent_frames={total_latent_frames} must be divisible by sp_size={sp_size}" + ) + + local_latent_frames = total_latent_frames // sp_size + metas = [] + for sp_rank in range(sp_size): + keep_start = sp_rank * local_latent_frames + keep_end = keep_start + local_latent_frames + halo_start = max(0, keep_start - halo_latents) + raw_start, raw_end, pseudo_prefix_latents = latent_range_to_raw_window( + halo_start, + keep_end, + temporal_compression_ratio=temporal_compression_ratio, + ) + raw_start = max(0, raw_start) + raw_end = min(total_raw_frames, raw_end) + drop_latents = pseudo_prefix_latents + (keep_start - halo_start) + metas.append( + { + "sp_rank": sp_rank, + "keep_start": keep_start, + "keep_end": keep_end, + "halo_start": halo_start, + "raw_start": raw_start, + "raw_end": raw_end, + "raw_frames": raw_end - raw_start, + "drop_latents": drop_latents, + "local_latent_frames": local_latent_frames, + } + ) + return metas + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--config", default="configs/train_ar.yaml", help="Training config path") + parser.add_argument("--sp-size", type=int, default=None, help="Override sequence_parallel_size") + parser.add_argument("--halo-latents", type=int, default=None, help="Override vae_halo_latents") + parser.add_argument("--latent-frames", type=int, default=None, help="Override image_or_video_shape[1]") + parser.add_argument("--raw-frames", type=int, default=None, help="Override total raw frame count") + parser.add_argument("--json", action="store_true", help="Print JSON instead of a table") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + cfg = normalize_config(OmegaConf.load(args.config)) + model_name = cfg.model_kwargs.model_name + temporal_ratio = int(wan_default_config[model_name]["temporal_compression_ratio"]) + total_latent_frames = int( + args.latent_frames if args.latent_frames is not None else cfg.image_or_video_shape[1] + ) + total_raw_frames = int( + args.raw_frames + if args.raw_frames is not None + else ((total_latent_frames - 1) * temporal_ratio + 1) + ) + sp_size = int( + args.sp_size if args.sp_size is not None else getattr(cfg, "sequence_parallel_size", 1) + ) + halo_latents = int( + args.halo_latents + if args.halo_latents is not None + else getattr(cfg, "vae_halo_latents", DEFAULT_SP_VAE_HALO_LATENTS) + ) + + metas = compute_chunk_halo_metas( + total_latent_frames=total_latent_frames, + total_raw_frames=total_raw_frames, + sp_size=sp_size, + halo_latents=halo_latents, + temporal_compression_ratio=temporal_ratio, + ) + payload = { + "config": str(Path(args.config)), + "model_name": model_name, + "temporal_compression_ratio": temporal_ratio, + "total_latent_frames": total_latent_frames, + "total_raw_frames": total_raw_frames, + "sp_size": sp_size, + "halo_latents": halo_latents, + "rank_metas": metas, + } + if args.json: + print(json.dumps(payload, indent=2)) + return + + print( + f"config={payload['config']} model={model_name} " + f"latent_frames={total_latent_frames} raw_frames={total_raw_frames} " + f"sp_size={sp_size} halo_latents={halo_latents}" + ) + print("rank keep_latents halo_start raw_window raw_frames drop_latents") + for meta in metas: + keep_latents = f"[{meta['keep_start']},{meta['keep_end']})".ljust(12) + raw_window = f"[{meta['raw_start']},{meta['raw_end']})".ljust(11) + print( + f"{meta['sp_rank']:>4} {keep_latents} {meta['halo_start']:>10} " + f"{raw_window} {meta['raw_frames']:>10} {meta['drop_latents']:>12}" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/decode_lightvae_latents.py b/scripts/decode_lightvae_latents.py new file mode 100644 index 0000000..d2570e1 --- /dev/null +++ b/scripts/decode_lightvae_latents.py @@ -0,0 +1,346 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +""" +Decode saved latent files (.pt) to pixel video using a local LightVAE loader. + +This mirrors `scripts/decode_vae_latents.py`, but only depends on the current +repo's 5B VAE code plus a LightVAE checkpoint such as `MG-LightVAE_v2.pth`. + +Examples: + python scripts/decode_lightvae_latents.py \ + --input_dir /path/to/latents \ + --vae_path /path/to/MG-LightVAE_v2.pth + + torchrun --nproc_per_node=8 scripts/decode_lightvae_latents.py \ + --input_dir /path/to/latents \ + --ckpt_dir /path/to/lightvae_ckpts \ + --vae_type mg_lightvae +""" + +import argparse +import glob +import os +import sys +from typing import Optional + +os.environ.setdefault("OPENBLAS_NUM_THREADS", "1") + +import torch +import torch.distributed as dist +from torchvision.io import write_video +from tqdm import tqdm + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +if REPO_ROOT not in sys.path: + sys.path.insert(0, REPO_ROOT) + + +from utils.lightvae_5b_wrapper import LightVAE5BWrapper + + +def init_distributed(): + """Initialize distributed process group if launched via torchrun.""" + if "RANK" in os.environ and "WORLD_SIZE" in os.environ: + rank = int(os.environ["RANK"]) + world_size = int(os.environ["WORLD_SIZE"]) + local_rank = int(os.environ.get("LOCAL_RANK", 0)) + torch.cuda.set_device(local_rank) + dist.init_process_group(backend="nccl") + return rank, world_size, local_rank + return 0, 1, 0 + + +def decode_latent_to_video( + vae, latent: torch.Tensor, device: torch.device, dtype: torch.dtype +) -> torch.Tensor: + """ + Decode latent to pixel video. + + Args: + vae: VAE wrapper exposing `decode_to_pixel(latent)` + latent: shape (batch, T, C, H, W) or (T, C, H, W) + device, dtype: device and dtype for computation + + Returns: + video: shape (batch, T, C, H, W), range [0, 1] + """ + if latent.dim() == 4: + latent = latent.unsqueeze(0) + latent = latent.to(device=device, dtype=dtype) + video = vae.decode_to_pixel(latent) + video = (video * 0.5 + 0.5).clamp(0, 1) + return video + + +def _normalize_requested_vae_type(value: str) -> str: + normalized = value.strip().lower() + if normalized == "wan": + return "wan2.2" + if normalized in {"wan2.2", "mg_lightvae", "mg_lightvae_v2"}: + return normalized + raise ValueError( + f"Unsupported --vae_type '{value}'. " + "Expected one of: wan2.2, wan, mg_lightvae, mg_lightvae_v2." + ) + + +def _parse_lightvae_pruning_rate(value: Optional[str]) -> Optional[float]: + if value is None: + return None + lowered = str(value).strip().lower() + if lowered in {"", "auto", "none"}: + return None + return float(lowered) + + +def _resolve_vae_paths( + *, + ckpt_dir: Optional[str], + vae_path: Optional[str], + requested_vae_type: str, + lightvae_pruning_rate: Optional[str], +): + pruning_rate = _parse_lightvae_pruning_rate(lightvae_pruning_rate) + ckpt_dir = os.path.abspath(ckpt_dir) if ckpt_dir else None + + if vae_path is not None: + resolved_vae_path = os.path.abspath(vae_path) + if requested_vae_type == "wan2.2" and pruning_rate is None: + pruning_rate = 0.0 + else: + if ckpt_dir is None: + raise ValueError("Either --ckpt_dir or --vae_path must be provided.") + if requested_vae_type == "mg_lightvae": + resolved_vae_path = os.path.join(ckpt_dir, "MG-LightVAE.pth") + if pruning_rate is None: + pruning_rate = 0.5 + elif requested_vae_type == "mg_lightvae_v2": + resolved_vae_path = os.path.join(ckpt_dir, "MG-LightVAE_v2.pth") + if pruning_rate is None: + pruning_rate = 0.75 + else: + resolved_vae_path = os.path.join(ckpt_dir, "Wan2.2_VAE.pth") + if pruning_rate is None: + pruning_rate = 0.0 + + return resolved_vae_path, pruning_rate + + +def _load_latent_tensor(pt_path: str): + try: + data = torch.load(pt_path, map_location="cpu", weights_only=True) + except TypeError: + data = torch.load(pt_path, map_location="cpu") + + if isinstance(data, torch.Tensor): + return data + if isinstance(data, dict): + latent = next(iter(data.values())) + if isinstance(latent, torch.Tensor): + return latent + raise TypeError(f"First dict value is not a tensor: {type(latent)}") + raise TypeError(f"Unsupported latent file payload type: {type(data)}") + + +def _parse_dtype(dtype_name: str) -> torch.dtype: + mapping = { + "float32": torch.float32, + "float16": torch.float16, + "bfloat16": torch.bfloat16, + } + try: + return mapping[dtype_name] + except KeyError as exc: + raise ValueError( + f"Unsupported --dtype '{dtype_name}'. " + "Expected one of: float32, float16, bfloat16." + ) from exc + + +def main(): + parser = argparse.ArgumentParser( + description="Decode saved latents to video with a local LightVAE loader." + ) + parser.add_argument( + "--input_dir", + type=str, + required=True, + help="Directory containing .pt latent files.", + ) + parser.add_argument( + "--output_dir", + type=str, + default=None, + help="Directory to save decoded .mp4 videos. Default: input_dir/decoded_lightvae_videos", + ) + parser.add_argument( + "--fps", + type=int, + default=24, + help="FPS for output video (default: 24).", + ) + parser.add_argument( + "--pattern", + type=str, + default="latents_*.pt", + help="Glob pattern for latent files (default: latents_*.pt).", + ) + parser.add_argument( + "--ckpt_dir", + type=str, + default=None, + help="Directory containing `MG-LightVAE*.pth` or `Wan2.2_VAE.pth`.", + ) + parser.add_argument( + "--vae_path", + type=str, + default=None, + help=( + "Explicit LightVAE/Wan2.2 checkpoint path. " + "Use this when you only have a single VAE checkpoint file." + ), + ) + parser.add_argument( + "--matrix_game_root", + type=str, + default=None, + help=argparse.SUPPRESS, + ) + parser.add_argument( + "--teacher_vae_path", + "--lightvae_encoder_path", + dest="teacher_vae_path", + type=str, + default=None, + help=argparse.SUPPRESS, + ) + parser.add_argument( + "--vae_type", + type=str, + default="mg_lightvae_v2", + choices=["wan2.2", "wan", "mg_lightvae", "mg_lightvae_v2"], + help=( + "VAE variant to use. " + "`mg_lightvae` maps to MG-LightVAE.pth, " + "`mg_lightvae_v2` maps to MG-LightVAE_v2.pth." + ), + ) + parser.add_argument( + "--lightvae_pruning_rate", + type=str, + default=None, + help=( + "Override pruning rate. Use `auto`/`none` to let Wan2_2_VAE infer it " + "when an explicit LightVAE checkpoint is provided." + ), + ) + parser.add_argument( + "--dtype", + type=str, + default="bfloat16", + choices=["float32", "float16", "bfloat16"], + help="Decode dtype (default: bfloat16).", + ) + args = parser.parse_args() + + rank, world_size, local_rank = init_distributed() + is_main = rank == 0 + + output_dir = args.output_dir or os.path.join( + args.input_dir, "decoded_lightvae_videos" + ) + if is_main: + os.makedirs(output_dir, exist_ok=True) + if world_size > 1: + dist.barrier() + + torch.backends.cuda.matmul.allow_tf32 = True + torch.backends.cudnn.allow_tf32 = True + torch.set_grad_enabled(False) + + device = torch.device( + f"cuda:{local_rank}" if torch.cuda.is_available() else "cpu" + ) + dtype = _parse_dtype(args.dtype) + + requested_vae_type = _normalize_requested_vae_type(args.vae_type) + resolved_vae_path, resolved_pruning_rate = _resolve_vae_paths( + ckpt_dir=args.ckpt_dir, + vae_path=args.vae_path, + requested_vae_type=requested_vae_type, + lightvae_pruning_rate=args.lightvae_pruning_rate, + ) + + vae = LightVAE5BWrapper( + vae_path=resolved_vae_path, + pruning_rate=resolved_pruning_rate, + device=device, + dtype=dtype, + ).eval() + + if is_main: + print( + "Using local VAE-only loader: " + f"requested={requested_vae_type}, " + f"pruning={vae.pruning_rate}, " + f"vae_path={vae.vae_path}", + flush=True, + ) + + search_path = os.path.join(args.input_dir, args.pattern) + pt_files = sorted(glob.glob(search_path)) + if not pt_files: + if is_main: + print(f"No files matching '{search_path}' found. Exiting.") + return + + pt_files_local = pt_files[rank::world_size] + if is_main: + print( + f"Found {len(pt_files)} latent file(s), {world_size} GPU(s), " + f"~{len(pt_files_local)} per GPU.", + flush=True, + ) + + pbar = tqdm(pt_files_local, desc=f"[Rank {rank}] Decoding", disable=(not is_main)) + for pt_path in pbar: + basename = os.path.splitext(os.path.basename(pt_path))[0] + if basename.startswith("latents_"): + video_name = basename.replace("latents_", "video_", 1) + else: + video_name = f"video_{basename}" + out_path = os.path.join(output_dir, f"{video_name}.mp4") + + try: + latent = _load_latent_tensor(pt_path) + except Exception as exc: + print(f"[Rank {rank}] Failed to load {pt_path}: {exc}", flush=True) + continue + + try: + video = decode_latent_to_video(vae, latent, device, dtype) + video_frames = video[0].cpu() + video_uint8 = (video_frames * 255.0).clamp(0, 255).to(torch.uint8) + video_uint8 = video_uint8.permute(0, 2, 3, 1) + write_video(out_path, video_uint8, fps=args.fps) + except Exception as exc: + print(f"[Rank {rank}] Failed to decode {pt_path}: {exc}", flush=True) + + if world_size > 1: + dist.barrier() + if is_main: + print(f"Done. Decoded {len(pt_files)} latent(s) to {output_dir}", flush=True) + if world_size > 1: + dist.destroy_process_group() + + +if __name__ == "__main__": + main() diff --git a/scripts/decode_vae_latents.py b/scripts/decode_vae_latents.py new file mode 100644 index 0000000..03135f2 --- /dev/null +++ b/scripts/decode_vae_latents.py @@ -0,0 +1,167 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +""" +Decode saved latent files (.pt) to pixel video and write .mp4 using the specified VAE. + +Supports multi-GPU via torchrun: + torchrun --nproc_per_node=8 scripts/decode_vae_latents.py --input_dir /path/to/latents +Single-GPU also works: + python scripts/decode_vae_latents.py --input_dir /path/to/latents + +Uses the Wan2.2-TI2V-5B VAE. +""" +import sys +import os +import argparse +import glob + +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import torch +import torch.distributed as dist +from torchvision.io import write_video +from tqdm import tqdm + + +def init_distributed(): + """Initialize distributed process group if launched via torchrun. Returns (rank, world_size).""" + if "RANK" in os.environ and "WORLD_SIZE" in os.environ: + rank = int(os.environ["RANK"]) + world_size = int(os.environ["WORLD_SIZE"]) + local_rank = int(os.environ.get("LOCAL_RANK", 0)) + torch.cuda.set_device(local_rank) + dist.init_process_group(backend="nccl") + return rank, world_size, local_rank + return 0, 1, 0 + + +def get_vae(): + """Return the Wan2.2-TI2V-5B VAE wrapper.""" + from utils.wan_5b_wrapper import WanVAEWrapper + return WanVAEWrapper() + + +def decode_latent_to_video(vae, latent: torch.Tensor, device: torch.device, dtype: torch.dtype) -> torch.Tensor: + """ + Decode latent to pixel video; same logic as pipeline/causal_diffusion_inference.py. + + Args: + vae: Wan2.2-TI2V-5B VAE wrapper + latent: shape (batch, T, C, H, W) or (T, C, H, W) + device, dtype: device and dtype for computation + + Returns: + video: shape (batch, T, C, H, W), range [0, 1] + """ + if latent.dim() == 4: + latent = latent.unsqueeze(0) + latent = latent.to(device=device, dtype=dtype) + video = vae.decode_to_pixel(latent) + video = (video * 0.5 + 0.5).clamp(0, 1) + return video + + +def main(): + parser = argparse.ArgumentParser(description="Decode saved latents to video.") + parser.add_argument( + "--input_dir", + type=str, + required=True, + help="Directory containing .pt latent files (e.g. latents_rank00_idx000000.pt).", + ) + parser.add_argument( + "--output_dir", + type=str, + default=None, + help="Directory to save decoded .mp4 videos. Default: input_dir/decoded_videos", + ) + parser.add_argument( + "--fps", + type=int, + default=24, + help="FPS for output video (default: 16).", + ) + parser.add_argument( + "--pattern", + type=str, + default="latents_*.pt", + help="Glob pattern for latent files (default: latents_*.pt).", + ) + args = parser.parse_args() + + rank, world_size, local_rank = init_distributed() + is_main = (rank == 0) + + output_dir = args.output_dir or os.path.join(args.input_dir, "decoded_videos") + if is_main: + os.makedirs(output_dir, exist_ok=True) + if world_size > 1: + dist.barrier() + + torch.backends.cuda.matmul.allow_tf32 = True + torch.backends.cudnn.allow_tf32 = True + torch.set_grad_enabled(False) + device = torch.device(f"cuda:{local_rank}" if torch.cuda.is_available() else "cpu") + dtype = torch.bfloat16 + + vae = get_vae() + vae = vae.to(device=device, dtype=dtype).eval() + + search_path = os.path.join(args.input_dir, args.pattern) + pt_files = sorted(glob.glob(search_path)) + if not pt_files: + if is_main: + print(f"No files matching '{search_path}' found. Exiting.") + return + + # Shard files across ranks + pt_files_local = pt_files[rank::world_size] + if is_main: + print(f"Found {len(pt_files)} latent file(s), {world_size} GPU(s), ~{len(pt_files_local)} per GPU.") + + pbar = tqdm(pt_files_local, desc=f"[Rank {rank}] Decoding", disable=(not is_main)) + for pt_path in pbar: + basename = os.path.splitext(os.path.basename(pt_path))[0] + video_name = basename.replace("latents_", "video_", 1) if basename.startswith("latents_") else f"video_{basename}" + out_path = os.path.join(output_dir, f"{video_name}.mp4") + + try: + data = torch.load(pt_path, map_location="cpu", weights_only=True) + if isinstance(data, torch.Tensor): + latent = data + elif isinstance(data, dict): + latent = next(iter(data.values())) + if not isinstance(latent, torch.Tensor): + print(f"[Rank {rank}] Skip {pt_path}: dict value is not a tensor.") + continue + else: + print(f"[Rank {rank}] Skip {pt_path}: unsupported type {type(data)}.") + continue + except Exception as e: + print(f"[Rank {rank}] Failed to load {pt_path}: {e}") + continue + + video = decode_latent_to_video(vae, latent, device, dtype) + video_frames = video[0].cpu() + video_uint8 = (video_frames * 255.0).clamp(0, 255).to(torch.uint8) + video_uint8 = video_uint8.permute(0, 2, 3, 1) # (T, C, H, W) -> (T, H, W, C) + write_video(out_path, video_uint8, fps=args.fps) + + if world_size > 1: + dist.barrier() + if is_main: + print(f"Done. Decoded {len(pt_files)} latent(s) to {output_dir}") + if world_size > 1: + dist.destroy_process_group() + + +if __name__ == "__main__": + main() diff --git a/scripts/merge_lora_generator.py b/scripts/merge_lora_generator.py new file mode 100644 index 0000000..4fe7f2f --- /dev/null +++ b/scripts/merge_lora_generator.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""Merge a LongLive generator checkpoint with LoRA weights for simple inference.""" + +from __future__ import annotations + +import argparse +import os +import sys +from pathlib import Path + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +if str(PROJECT_ROOT) not in sys.path: + sys.path.insert(0, str(PROJECT_ROOT)) + + +def _torch_load(path: str): + import torch + + try: + return torch.load(path, map_location="cpu", weights_only=False) + except TypeError: + return torch.load(path, map_location="cpu") + + +def _load_lora_state(path: str): + checkpoint = _torch_load(path) + if isinstance(checkpoint, dict) and "generator_lora" in checkpoint: + return checkpoint["generator_lora"] + return checkpoint + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--config_path", required=True, help="Inference yaml containing model, checkpoint, and adapter settings.") + parser.add_argument("--output_path", required=True, help="Path to save the merged generator checkpoint.") + parser.add_argument("--generator_ckpt", default=None, help="Override checkpoints.generator_ckpt from the yaml.") + parser.add_argument("--lora_ckpt", default=None, help="Override checkpoints.lora_ckpt from the yaml.") + parser.add_argument("--device", default="cuda:0", help="Device used for merging, e.g. cuda:0 or cpu.") + parser.add_argument("--dtype", choices=("bf16", "fp32"), default="bf16", help="Save merged weights in this dtype.") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + + import torch + from omegaconf import OmegaConf + + from utils.config import normalize_config + from utils.inference_utils import load_generator_checkpoint + from utils.lora_utils import configure_lora_for_model + from utils.nvfp4_checkpoint import cpu_state_dict + from utils.wan_5b_wrapper import WanDiffusionWrapper + + config = normalize_config(OmegaConf.load(args.config_path)) + generator_ckpt = args.generator_ckpt or getattr(config, "generator_ckpt", None) + lora_ckpt = args.lora_ckpt or getattr(config, "lora_ckpt", None) + if not generator_ckpt: + raise ValueError("Missing generator checkpoint. Set checkpoints.generator_ckpt or pass --generator_ckpt.") + if not lora_ckpt: + raise ValueError("Missing LoRA checkpoint. Set checkpoints.lora_ckpt or pass --lora_ckpt.") + if not getattr(config, "adapter", None): + raise ValueError("Missing adapter config. The merge script needs the LoRA rank/alpha/dropout settings.") + + device = torch.device(args.device) + dtype = torch.bfloat16 if args.dtype == "bf16" else torch.float32 + + print(f"Building generator: {config.model_kwargs}") + generator = WanDiffusionWrapper(**getattr(config, "model_kwargs", {}), is_causal=True) + generator.eval().requires_grad_(False) + + print(f"Loading generator checkpoint: {generator_ckpt}") + incompatible = load_generator_checkpoint( + generator, + generator_ckpt, + use_ema=bool(getattr(config, "use_ema", False)), + ) + missing = getattr(incompatible, "missing_keys", []) + unexpected = getattr(incompatible, "unexpected_keys", []) + if missing: + print(f"[Warning] Missing generator keys: {missing[:8]} ...") + if unexpected: + print(f"[Warning] Unexpected generator keys: {unexpected[:8]} ...") + + print(f"Applying LoRA config: {config.adapter}") + generator.model = configure_lora_for_model( + generator.model, + model_name="generator", + lora_config=config.adapter, + is_main_process=True, + ) + + import peft + + print(f"Loading LoRA checkpoint: {lora_ckpt}") + peft.set_peft_model_state_dict(generator.model, _load_lora_state(lora_ckpt)) # type: ignore[arg-type] + + print(f"Merging LoRA on {device} in {dtype}...") + generator.to(device=device, dtype=dtype) + generator.model = generator.model.merge_and_unload(safe_merge=True) + generator.eval().requires_grad_(False) + + output_path = Path(args.output_path) + output_path.parent.mkdir(parents=True, exist_ok=True) + checkpoint = { + "generator": cpu_state_dict(generator), + "checkpoint_format": "longlive_generator_merged_lora", + "source_generator_ckpt": str(generator_ckpt), + "source_lora_ckpt": str(lora_ckpt), + "model_name": getattr(config.model_kwargs, "model_name", None), + "dtype": str(dtype).replace("torch.", ""), + "merged_lora": True, + } + torch.save(checkpoint, output_path) + size_gib = os.path.getsize(output_path) / (1024 ** 3) + print(f"Saved merged generator to {output_path} ({size_gib:.2f} GiB).") + print("Use this file as checkpoints.generator_ckpt for inference and remove adapter/lora_ckpt from the inference config.") + + +if __name__ == "__main__": + main() diff --git a/scripts/save_merged_nvfp4_generator.py b/scripts/save_merged_nvfp4_generator.py new file mode 100644 index 0000000..8be1007 --- /dev/null +++ b/scripts/save_merged_nvfp4_generator.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python3 +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""Save a merged LoRA generator as a reusable checkpoint.""" +from __future__ import annotations + +import argparse +import gc +import os +import sys +from pathlib import Path + +import torch +from omegaconf import OmegaConf + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +if str(PROJECT_ROOT) not in sys.path: + sys.path.insert(0, str(PROJECT_ROOT)) + +from utils.config import normalize_config +from utils.lora_utils import configure_lora_for_model +from utils.nvfp4_checkpoint import ( + NVFP4_CHECKPOINT_FORMAT, + NVFP4_CHECKPOINT_VERSION, + clean_fsdp_state_dict_keys, + cpu_state_dict, + is_nvfp4_state_dict, + quantize_model_for_fouroversix_nvfp4, + unwrap_generator_state_dict, +) +from utils.quant import _materialize_quantized_weights_for_inference +from utils.wan_5b_wrapper import WanDiffusionWrapper + + +def _torch_load(path: str): + try: + return torch.load(path, map_location="cpu", weights_only=False) + except TypeError: + return torch.load(path, map_location="cpu") + + +def _load_generator_checkpoint(generator: WanDiffusionWrapper, checkpoint_path: str, use_ema: bool) -> None: + checkpoint = _torch_load(checkpoint_path) + state_dict = unwrap_generator_state_dict(checkpoint, use_ema=use_ema) + if is_nvfp4_state_dict(state_dict): + raise ValueError( + f"{checkpoint_path} is already a materialized NVFP4 checkpoint; " + "use it directly as checkpoints.generator_ckpt." + ) + if use_ema: + state_dict = clean_fsdp_state_dict_keys(state_dict) + incompatible = generator.load_state_dict(state_dict, strict=not use_ema) + missing = getattr(incompatible, "missing_keys", []) + unexpected = getattr(incompatible, "unexpected_keys", []) + if missing: + print(f"[Warning] Missing generator keys while loading base checkpoint: {missing[:8]} ...") + if unexpected: + print(f"[Warning] Unexpected generator keys while loading base checkpoint: {unexpected[:8]} ...") + + +def _load_lora_state(lora_ckpt_path: str): + checkpoint = _torch_load(lora_ckpt_path) + if isinstance(checkpoint, dict) and "generator_lora" in checkpoint: + return checkpoint["generator_lora"] + return checkpoint + + +def _merge_lora(generator: WanDiffusionWrapper, config, lora_ckpt_path: str) -> WanDiffusionWrapper: + if not getattr(config, "adapter", None): + raise ValueError("LoRA merge was requested, but config.adapter is missing.") + if not lora_ckpt_path: + raise ValueError("LoRA merge was requested, but no lora_ckpt was provided.") + + print(f"Applying LoRA config: {config.adapter}") + generator.model = configure_lora_for_model( + generator.model, + model_name="generator", + lora_config=config.adapter, + is_main_process=True, + ) + + import peft + + print(f"Loading LoRA weights: {lora_ckpt_path}") + peft.set_peft_model_state_dict(generator.model, _load_lora_state(lora_ckpt_path)) # type: ignore[arg-type] + print("Merging LoRA into generator...") + generator.model = generator.model.merge_and_unload(safe_merge=True) + return generator + + +def _metadata( + config, + args: argparse.Namespace, + *, + backend: str, + matched_modules: list[str], + materialized_modules: list[str], +): + checkpoint_format = ( + "longlive_generator_merged_bf16" + if backend == "transformer_engine" + else NVFP4_CHECKPOINT_FORMAT + ) + quant_format = "bf16" if backend == "transformer_engine" else "nvfp4" + quant_backend = "transformer_engine_runtime" if backend == "transformer_engine" else "fouroversix" + return { + "checkpoint_format": checkpoint_format, + "checkpoint_version": NVFP4_CHECKPOINT_VERSION, + "source_generator_ckpt": args.generator_ckpt, + "source_lora_ckpt": args.lora_ckpt, + "merged_lora": bool(args.lora_ckpt and not args.no_merge_lora), + "model_name": getattr(config.model_kwargs, "model_name", None), + "quantization": { + "format": quant_format, + "backend": quant_backend, + "materialized": backend == "fouroversix", + "dtype": "bfloat16", + "scale_rule": getattr(config, "model_quant_scale_rule", "static_6"), + "activation_scale_rule": getattr(config, "model_quant_activation_scale_rule", None), + "weight_scale_rule": getattr(config, "model_quant_weight_scale_rule", None), + "gradient_scale_rule": getattr(config, "model_quant_gradient_scale_rule", None), + "te_inference_only": bool( + getattr(config, "model_quant_te_inference_only", backend == "transformer_engine") + ), + "te_low_precision_weights": bool( + getattr(config, "model_quant_te_low_precision_weights", backend == "transformer_engine") + ), + "te_fallback_to_fouroversix": bool( + getattr(config, "model_quant_te_fallback_to_fouroversix", False) + ), + "matched_filtered_modules": matched_modules, + "materialized_modules": materialized_modules, + }, + } + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Merge generator LoRA weights and save either packed FourOverSix NVFP4 or TE-ready bf16." + ) + parser.add_argument("--config_path", required=True, help="Inference yaml that contains model/adapter/quant settings.") + parser.add_argument("--output_path", required=True, help="Path to save the generator .pt file.") + parser.add_argument("--generator_ckpt", default=None, help="Override checkpoints.generator_ckpt from the yaml.") + parser.add_argument("--lora_ckpt", default=None, help="Override checkpoints.lora_ckpt from the yaml.") + parser.add_argument("--device", default="cuda:0", help="Device used for quantization, e.g. cuda:0 or cpu.") + parser.add_argument( + "--backend", + choices=("fouroversix", "transformer_engine"), + default="fouroversix", + help=( + "fouroversix saves packed/materialized NVFP4. " + "transformer_engine saves merged bf16 for TE runtime quantization." + ), + ) + parser.add_argument("--no_merge_lora", action="store_true", help="Quantize the base generator without merging LoRA.") + return parser.parse_args() + + +def main() -> None: + args = parse_args() + config = normalize_config(OmegaConf.load(args.config_path)) + args.generator_ckpt = args.generator_ckpt or getattr(config, "generator_ckpt", None) + args.lora_ckpt = args.lora_ckpt or getattr(config, "lora_ckpt", None) + + if not args.generator_ckpt: + raise ValueError("Missing generator checkpoint. Set checkpoints.generator_ckpt or pass --generator_ckpt.") + config.model_quant_use_transformer_engine = args.backend == "transformer_engine" + + device = torch.device(args.device) + print(f"Building generator on CPU: {config.model_kwargs}") + generator = WanDiffusionWrapper(**getattr(config, "model_kwargs", {}), is_causal=True) + generator.eval().requires_grad_(False) + + print(f"Loading base generator checkpoint: {args.generator_ckpt}") + _load_generator_checkpoint(generator, args.generator_ckpt, use_ema=bool(getattr(config, "use_ema", False))) + + should_merge_lora = bool(getattr(config, "merge_lora", False)) and not args.no_merge_lora + if should_merge_lora: + generator = _merge_lora(generator, config, args.lora_ckpt) + else: + print("Skipping LoRA merge; quantizing the loaded generator as-is.") + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + print(f"Moving generator to {device} and casting to bfloat16...") + generator.to(device=device, dtype=torch.bfloat16) + materialized_modules = [] + if args.backend == "transformer_engine": + matched_modules = [] + print( + "Saving merged bf16 weights for TransformerEngine runtime quantization. " + "TransformerEngine state_dict is not a packed NVFP4 storage format." + ) + else: + generator.model, matched_modules = quantize_model_for_fouroversix_nvfp4( + generator.model, + config=config, + keep_master_weights=False, + verbose=True, + ) + + print("Materializing NVFP4 weights and dropping bf16 master weights...") + materialized_modules, master_bytes, quantized_bytes = _materialize_quantized_weights_for_inference( + generator.model, + target_device=device, + ) + print( + "[NVFP4] " + f"materialized_modules={len(materialized_modules)}, " + f"master_weight={master_bytes / (1024 ** 3):.3f} GiB, " + f"quantized_weight={quantized_bytes / (1024 ** 3):.3f} GiB" + ) + + print("Copying checkpoint tensors to CPU for saving...") + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + output_path = Path(args.output_path) + output_path.parent.mkdir(parents=True, exist_ok=True) + checkpoint = { + "generator": cpu_state_dict(generator), + **_metadata( + config, + args, + backend=args.backend, + matched_modules=matched_modules, + materialized_modules=materialized_modules, + ), + } + torch.save(checkpoint, output_path) + size_gib = os.path.getsize(output_path) / (1024 ** 3) + print(f"Saved {args.backend} generator checkpoint to {output_path} ({size_gib:.3f} GiB)") + + +if __name__ == "__main__": + with torch.no_grad(): + main() diff --git a/tests/test_dmd_i2v_conditioning.py b/tests/test_dmd_i2v_conditioning.py new file mode 100644 index 0000000..ae142a4 --- /dev/null +++ b/tests/test_dmd_i2v_conditioning.py @@ -0,0 +1,51 @@ +import unittest + +import torch + +from utils.i2v_conditioning import ( + _get_i2v_context_frames, + _i2v_loss_mask_like, + _overwrite_i2v_context, +) + + +class DMDI2VConditioningTest(unittest.TestCase): + def test_overwrite_i2v_context_keeps_only_initial_frames_clean(self): + tensor = torch.randn(2, 4, 3, 2, 2) + original = tensor.clone() + initial_latent = torch.full((2, 1, 3, 2, 2), 7.0) + + context_frames = _get_i2v_context_frames(tensor, initial_latent) + conditioned = _overwrite_i2v_context(tensor, initial_latent, context_frames) + + self.assertEqual(context_frames, 1) + self.assertTrue(torch.equal(conditioned[:, :1], initial_latent)) + self.assertTrue(torch.equal(conditioned[:, 1:], original[:, 1:])) + + def test_i2v_loss_mask_excludes_context_frames(self): + tensor = torch.randn(2, 4, 3, 2, 2) + mask = _i2v_loss_mask_like(tensor, context_frames=1) + + self.assertFalse(mask[:, :1].any()) + self.assertTrue(mask[:, 1:].all()) + + def test_overwrite_i2v_context_keeps_chunk_length_unchanged(self): + initial_latent = torch.full((2, 1, 3, 2, 2), 5.0) + noise_chunk = torch.randn(2, 4, 3, 2, 2) + + first_chunk = _overwrite_i2v_context(noise_chunk, initial_latent, context_frames=1) + + self.assertEqual(first_chunk.shape[1], 4) + self.assertTrue(torch.equal(first_chunk[:, :1], initial_latent)) + self.assertTrue(torch.equal(first_chunk[:, 1:], noise_chunk[:, 1:])) + + def test_i2v_context_must_not_cover_entire_clip(self): + tensor = torch.randn(2, 1, 3, 2, 2) + initial_latent = torch.randn(2, 1, 3, 2, 2) + + with self.assertRaises(ValueError): + _get_i2v_context_frames(tensor, initial_latent) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_fp8_inference.py b/tests/test_fp8_inference.py new file mode 100644 index 0000000..2c3cdb1 --- /dev/null +++ b/tests/test_fp8_inference.py @@ -0,0 +1,29 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# SPDX-License-Identifier: Apache-2.0 + +import pytest +import torch +import torch.nn as nn + +from utils.fp8 import quantize_model_fp8 +from utils.torch_compile_utils import SafeCompiledCallable + + +def test_fp8_quantization_requires_cuda(monkeypatch): + monkeypatch.setattr(torch.cuda, "is_available", lambda: False) + + with pytest.raises(RuntimeError, match="requires a CUDA GPU"): + quantize_model_fp8(nn.Linear(16, 16, dtype=torch.bfloat16)) + + +def test_strict_compile_wrapper_does_not_shadow_torch(monkeypatch): + monkeypatch.setattr(torch, "compile", lambda fn, **_kwargs: fn) + + compiled = SafeCompiledCallable( + lambda value: value + 1, + name="test", + mode=None, + suppress_errors=False, + ) + + assert compiled(1) == 2 diff --git a/tests/test_i2v_dataset_frame_accounting.py b/tests/test_i2v_dataset_frame_accounting.py new file mode 100644 index 0000000..c8c80d6 --- /dev/null +++ b/tests/test_i2v_dataset_frame_accounting.py @@ -0,0 +1,40 @@ +import tempfile +import unittest +from pathlib import Path + +from utils.dataset import MultiVideoConcatDataset + + +class I2VDatasetFrameAccountingTest(unittest.TestCase): + def _dataset(self, root, latent_frames): + (root / "video" / "sample").mkdir(parents=True) + (root / "caption" / "sample").mkdir(parents=True) + total_raw_frames = 1 + (latent_frames - 1) * 4 + return MultiVideoConcatDataset( + data_dir=str(root), + video_size=(704, 1280), + total_frames=total_raw_frames, + independent_first_frame=True, + num_frame_per_block=8, + temporal_compression_ratio=4, + ) + + def test_96_frame_i2v_uses_regular_8_frame_blocks(self): + with tempfile.TemporaryDirectory() as tmp: + dataset = self._dataset(Path(tmp), latent_frames=96) + + self.assertEqual(dataset.first_chunk_latent_frames, 8) + self.assertEqual(dataset.first_chunk_frames, 29) + self.assertEqual(dataset.total_segments, 12) + + def test_33_frame_i2v_keeps_legacy_one_plus_block_layout(self): + with tempfile.TemporaryDirectory() as tmp: + dataset = self._dataset(Path(tmp), latent_frames=33) + + self.assertEqual(dataset.first_chunk_latent_frames, 9) + self.assertEqual(dataset.first_chunk_frames, 33) + self.assertEqual(dataset.total_segments, 4) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_i2v_sequence_parallel_config.py b/tests/test_i2v_sequence_parallel_config.py new file mode 100644 index 0000000..c356a90 --- /dev/null +++ b/tests/test_i2v_sequence_parallel_config.py @@ -0,0 +1,63 @@ +import unittest +from types import SimpleNamespace + +from wan_5b.distributed.sp_training import ( + sp_training_sequence_frame_count, + validate_sequence_parallel_training_config, +) + + +class I2VSequenceParallelConfigTest(unittest.TestCase): + def test_i2v_training_frames_use_full_configured_sequence(self): + cfg = SimpleNamespace( + i2v=True, + independent_first_frame=True, + image_or_video_shape=[1, 96, 48, 44, 80], + ) + + self.assertEqual(sp_training_sequence_frame_count(cfg), 96) + + def test_i2v_sequence_parallel_partitions_the_96_frame_sequence(self): + cfg = SimpleNamespace( + i2v=True, + independent_first_frame=True, + image_or_video_shape=[1, 96, 48, 44, 80], + ) + + validate_sequence_parallel_training_config( + cfg, + sp_size=4, + num_frame_per_block=8, + ) + + def test_i2v_sequence_parallel_rejects_non_block_aligned_length(self): + cfg = SimpleNamespace( + i2v=True, + independent_first_frame=True, + image_or_video_shape=[1, 97, 48, 44, 80], + ) + + with self.assertRaisesRegex(ValueError, r"training latent frames"): + validate_sequence_parallel_training_config( + cfg, + sp_size=4, + num_frame_per_block=8, + ) + + def test_t2v_sequence_parallel_uses_full_sequence(self): + cfg = SimpleNamespace( + i2v=False, + independent_first_frame=False, + image_or_video_shape=[1, 96, 48, 44, 80], + ) + + self.assertEqual(sp_training_sequence_frame_count(cfg), 96) + validate_sequence_parallel_training_config( + cfg, + sp_size=4, + num_frame_per_block=8, + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_i2v_teacher_forcing_context.py b/tests/test_i2v_teacher_forcing_context.py new file mode 100644 index 0000000..c1ba093 --- /dev/null +++ b/tests/test_i2v_teacher_forcing_context.py @@ -0,0 +1,192 @@ +import unittest +import importlib.util +import pathlib +import sys +import types +from types import SimpleNamespace + +import torch + + +class _FakeScheduler: + def __init__(self): + self.num_train_timesteps = 1000 + self.timesteps = torch.arange(1000, dtype=torch.float32) + self.sigmas = torch.linspace(1.0, 0.0, 1000) + + def add_noise(self, clean, noise, timestep): + return clean + 10.0 + + def training_target(self, clean, noise, timestep): + return torch.zeros_like(clean) + + def training_weight(self, timestep): + return torch.ones(timestep.numel(), device=timestep.device, dtype=torch.float32) + + +class _FakeGenerator: + def __init__(self): + self.recorded = None + + def __call__( + self, + *, + noisy_image_or_video, + conditional_dict, + timestep, + clean_x, + aug_t, + ): + self.recorded = { + "noisy_image_or_video": noisy_image_or_video.detach().clone(), + "timestep": timestep.detach().clone(), + "clean_x": clean_x.detach().clone(), + "aug_t": aug_t.detach().clone() if aug_t is not None else None, + } + return torch.zeros_like(noisy_image_or_video), torch.zeros_like(noisy_image_or_video) + + +class _FakeBuffer: + num_blocks = 0 + + def is_empty(self): + return False + + def add(self, error_block, timestep_index, block_pos=None): + pass + + def stats(self): + return { + "total_added": 0, + "filled_buckets": "0/0", + "total_entries": 0, + } + + +class _StubBaseModel(torch.nn.Module): + def _get_timestep( + self, + min_timestep, + max_timestep, + batch_size, + num_frame, + num_frame_per_block, + uniform_timestep=False, + ): + if uniform_timestep: + return torch.randint( + min_timestep, + max_timestep, + [batch_size, 1], + device=self.device, + dtype=torch.long, + ).repeat(1, num_frame) + timestep = torch.randint( + min_timestep, + max_timestep, + [batch_size, num_frame], + device=self.device, + dtype=torch.long, + ) + timestep = timestep.reshape(timestep.shape[0], -1, num_frame_per_block) + timestep[:, :, 1:] = timestep[:, :, 0:1] + return timestep.reshape(timestep.shape[0], -1) + + +def _load_causal_diffusion_with_stubs(): + repo_root = pathlib.Path(__file__).resolve().parents[1] + module_path = repo_root / "model" / "diffusion.py" + saved = { + name: sys.modules.get(name) + for name in ( + "model", + "model.base", + "pipeline", + "utils.wan_5b_wrapper", + ) + } + + fake_model = types.ModuleType("model") + fake_model.__path__ = [] + fake_base = types.ModuleType("model.base") + fake_base.BaseModel = _StubBaseModel + + fake_pipeline = types.ModuleType("pipeline") + fake_pipeline.CausalDiffusionInferencePipeline = object + + fake_wrapper = types.ModuleType("utils.wan_5b_wrapper") + fake_wrapper.WanDiffusionWrapper = object + fake_wrapper.WanTextEncoder = object + fake_wrapper.WanVAEWrapper = object + + sys.modules["model"] = fake_model + sys.modules["model.base"] = fake_base + sys.modules["pipeline"] = fake_pipeline + sys.modules["utils.wan_5b_wrapper"] = fake_wrapper + try: + spec = importlib.util.spec_from_file_location( + "_diffusion_under_test", module_path + ) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module.CausalDiffusion + finally: + for name, value in saved.items(): + if value is None: + sys.modules.pop(name, None) + else: + sys.modules[name] = value + + +class I2VTeacherForcingContextTest(unittest.TestCase): + def test_teacher_forcing_keeps_i2v_context_clean_after_augmentation(self): + CausalDiffusion = _load_causal_diffusion_with_stubs() + model = CausalDiffusion.__new__(CausalDiffusion) + torch.nn.Module.__init__(model) + model.device = torch.device("cpu") + model.dtype = torch.float32 + model.args = SimpleNamespace(i2v=True) + model.independent_first_frame = True + model.num_frame_per_block = 2 + model.scheduler = _FakeScheduler() + model.teacher_forcing = True + model.noise_augmentation_max_timestep = 10 + model.generator = _FakeGenerator() + model.error_buffer = _FakeBuffer() + model.noise_error_buffer = _FakeBuffer() + model.er_start_step = 0 + model.er_clean_prob = 0.0 + model.er_latent_inject_prob = 0.0 + model.er_noise_inject_prob = 0.0 + model.er_context_inject_prob = 1.0 + model.er_buffer_warmup_iter = -1 + + def inject_context_error(clean_latent_aug, index, batch_size, num_frame): + return clean_latent_aug + 100.0 + + model._inject_error_buffer = inject_context_error + + clean_latent = torch.zeros(1, 4, 1, 1, 1) + initial_latent = torch.full((1, 1, 1, 1, 1), 7.0) + + model.generator_loss( + image_or_video_shape=[1, 4, 1, 1, 1], + conditional_dict={"prompt_embeds": torch.zeros(1, 1)}, + unconditional_dict={}, + clean_latent=clean_latent, + initial_latent=initial_latent, + global_step=0, + ) + + recorded = model.generator.recorded + self.assertTrue(torch.equal(recorded["noisy_image_or_video"][:, :1], initial_latent)) + self.assertTrue(torch.equal(recorded["clean_x"][:, :1], initial_latent)) + self.assertTrue((recorded["timestep"][:, :1] == 0).all()) + self.assertTrue((recorded["aug_t"][:, :1] == 0).all()) + + # Later frames still receive clean-side augmentation and context error. + self.assertTrue(torch.equal(recorded["clean_x"][:, 1:], torch.full((1, 3, 1, 1, 1), 110.0))) + + +if __name__ == "__main__": + unittest.main() diff --git a/train.py b/train.py new file mode 100644 index 0000000..2e4f32d --- /dev/null +++ b/train.py @@ -0,0 +1,47 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +import argparse +import os +from omegaconf import OmegaConf +import wandb + +from trainer import ScoreDistillationTrainer, DiffusionTrainer +from utils.config import normalize_config + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--config_path", type=str, required=True) + parser.add_argument("--no_save", action="store_true") + parser.add_argument("--no_visualize", action="store_true") + parser.add_argument("--logdir", type=str, default="", help="Path to the directory to save logs") + parser.add_argument("--wandb-save-dir", type=str, default="", help="Path to the directory to save wandb logs") + parser.add_argument("--disable-wandb", action="store_true") + parser.add_argument("--no-auto-resume", action="store_true", help="Disable auto resume from latest checkpoint in logdir") + parser.add_argument("--generate-before-train", action="store_true", help="Run one evaluation inference before training starts") + + args = parser.parse_args() + + config = normalize_config(OmegaConf.load(args.config_path)) + config.no_save = args.no_save + config.no_visualize = args.no_visualize + + config_name = os.path.splitext(os.path.basename(args.config_path))[0] + config.config_name = config_name + config.logdir = args.logdir + config.wandb_save_dir = args.wandb_save_dir + config.disable_wandb = args.disable_wandb + config.auto_resume = not args.no_auto_resume # Default to True unless --no-auto-resume is specified + config.generate_before_train = args.generate_before_train + + if config.trainer == "score_distillation": + trainer = ScoreDistillationTrainer(config) + elif config.trainer == "diffusion": + trainer = DiffusionTrainer(config) + trainer.train() + + wandb.finish() + + +if __name__ == "__main__": + main() diff --git a/trainer/__init__.py b/trainer/__init__.py new file mode 100644 index 0000000..a115e45 --- /dev/null +++ b/trainer/__init__.py @@ -0,0 +1,7 @@ +from .distillation import Trainer as ScoreDistillationTrainer +from .diffusion import Trainer as DiffusionTrainer + +__all__ = [ + "ScoreDistillationTrainer", + "DiffusionTrainer", +] diff --git a/trainer/diffusion.py b/trainer/diffusion.py new file mode 100644 index 0000000..dddcae1 --- /dev/null +++ b/trainer/diffusion.py @@ -0,0 +1,1120 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 + +import gc +import logging +import types + +from model import CausalDiffusion +from wan_5b.distributed.sp_training import SequenceParallelHelper +from utils.dataset import MultiVideoConcatDataset, MultiTextConcatDataset, cycle, multi_video_collate_fn, eval_collate_fn +from utils.config import section_get, wan_default_config +from utils.misc import set_seed +import torch.distributed as dist +from omegaconf import OmegaConf +import torch +import wandb +import time +import os +from torchvision.io import write_video +from utils.distributed import EMA_FSDP, barrier, fsdp_wrap, launch_distributed_job, FSDP +from torch.distributed.fsdp import ( + StateDictType, FullStateDictConfig, FullOptimStateDictConfig +) + +def save_prompts_to_txt(prompts_for_sample, prompt_txt_path: str, is_main_process: bool): + """ + Save prompts for one generated video to a txt file. + Consecutive identical prompts are merged, e.g.: + [0] a, [1] a, [2] b => [0,1] a\n[2] b\n + """ + try: + with open(prompt_txt_path, "w", encoding="utf-8") as f: + if len(prompts_for_sample) == 0: + return + + current_prompt = prompts_for_sample[0] + current_indices = [0] + for seg_idx in range(1, len(prompts_for_sample)): + p = prompts_for_sample[seg_idx] + if p == current_prompt: + current_indices.append(seg_idx) + else: + indices_str = ",".join(str(i) for i in current_indices) + f.write(f"[{indices_str}] {current_prompt}\n") + current_prompt = p + current_indices = [seg_idx] + # flush the last run + indices_str = ",".join(str(i) for i in current_indices) + f.write(f"[{indices_str}] {current_prompt}\n") + except Exception as e: + if is_main_process: + print(f"Warning: failed to save prompts to {prompt_txt_path}: {e}") + + +class Trainer: + def __init__(self, config): + self.config = config + self.step = 0 + + # Step 1: Initialize the distributed training environment (rank, seed, dtype, logging etc.) + torch.backends.cuda.matmul.allow_tf32 = True + torch.backends.cudnn.allow_tf32 = True + + launch_distributed_job() + global_rank = dist.get_rank() + + self.dtype = torch.bfloat16 if config.mixed_precision else torch.float32 + self.device = torch.cuda.current_device() + self.is_main_process = global_rank == 0 + self.causal = config.causal + self.disable_wandb = config.disable_wandb + + # use a random seed for the training + if config.seed == 0: + random_seed = torch.randint(0, 10000000, (1,), device=self.device) + dist.broadcast(random_seed, src=0) + config.seed = random_seed.item() + + set_seed(config.seed + global_rank) + + if self.is_main_process and not self.disable_wandb: + if getattr(config, "wandb_key", None): + wandb.login(host=config.wandb_host, key=config.wandb_key) + wandb.init( + config=OmegaConf.to_container(config, resolve=True), + name=config.config_name, + mode="online", + entity=config.wandb_entity, + project=config.wandb_project, + dir=config.wandb_save_dir + ) + + self.output_path = config.logdir + auto_resume = getattr(config, "auto_resume", True) + self.gradient_accumulation_steps = getattr(config, "gradient_accumulation_steps", 1) + + # Sequence Parallel is supported only for the 5B model; world_size must + # equal sp_size * dp_size. + self.sequence_parallel_size = getattr(config, "sequence_parallel_size", 1) + world_size = dist.get_world_size() + self.data_parallel_size = world_size // self.sequence_parallel_size if self.sequence_parallel_size > 1 else world_size + self.sp_group = None + self.dp_group = None + + if self.is_main_process and self.gradient_accumulation_steps > 1: + eff_batch = config.batch_size * self.gradient_accumulation_steps * self.data_parallel_size + print(f"Gradient accumulation steps: {self.gradient_accumulation_steps}, effective batch size: {eff_batch}") + + if self.sequence_parallel_size > 1: + assert config.model_kwargs.model_name == "Wan2.2-TI2V-5B", ( + f"sequence_parallel_size is only supported for Wan2.2-TI2V-5B model, but got {config.model_kwargs.model_name}" + ) + assert world_size % self.sequence_parallel_size == 0, ( + f"world_size ({world_size}) must be divisible by sequence_parallel_size ({self.sequence_parallel_size})" + ) + from wan_5b.distributed.sp_training import ( + validate_sequence_parallel_training_config, + ) + validate_sequence_parallel_training_config( + config, + self.sequence_parallel_size, + config.num_frame_per_block, + ) + # Create SP process groups: each DP group contains sp_size ranks, + # and all_to_all runs only within that group. + from wan_5b.distributed.sp_training import ( + set_data_parallel_group, + set_sequence_parallel_group, + ) + sp_size = self.sequence_parallel_size + dp_size = self.data_parallel_size + sp_groups = [] + for g in range(dp_size): + ranks_g = list(range(g * sp_size, (g + 1) * sp_size)) + sp_groups.append(dist.new_group(ranks=ranks_g)) + self.sp_group = sp_groups[global_rank // sp_size] + set_sequence_parallel_group(self.sp_group) + + # Also create DP groups: ranks with the same SP rank across DP + # replicas own the same sequence chunk. For sp_rank=k, the DP group + # is [k, sp+k, 2*sp+k, ..., (dp-1)*sp+k]. This lets warmup gather + # different batches of errors for the same block efficiently. + dp_groups = [] + for k in range(sp_size): + ranks_k = [g * sp_size + k for g in range(dp_size)] + dp_groups.append(dist.new_group(ranks=ranks_k)) + self.dp_group = dp_groups[global_rank % sp_size] + set_data_parallel_group(self.dp_group) + if self.is_main_process: + print(f"[SP] Sequence Parallel enabled, sp_size={sp_size}, dp_size={dp_size}, world_size={world_size}") + + # Step 2: Initialize the model and optimizer + self.model = CausalDiffusion(config, device=self.device) + self.sp_helper = SequenceParallelHelper(self) + + # 2D mode only: print which GLOBAL block-position slice this rank is + # responsible for. The LAST SP rank carries the most error-accumulated + # tail blocks, useful when debugging position-bucketed error recycling. + if self.model.error_buffer is not None and self.model.er_num_blocks > 0: + lo = self.model.er_block_offset + hi = lo + self.model.er_num_blocks + global_rank_id = dist.get_rank() + sp_rk = global_rank_id % max(self.sequence_parallel_size, 1) + print( + f"[ErrorBuffer] rank={global_rank_id} sp_rank={sp_rk} " + f"covers GLOBAL blocks [{lo},{hi}) ({self.model.er_num_blocks} local blocks)" + ) + + # Bind the SP forward path before FSDP wrapping. + model_name = getattr(getattr(config, "model_kwargs", None), "model_name", "") or "" + if self.sequence_parallel_size > 1 and "Wan2.2-TI2V-5B" in model_name: + from wan_5b.distributed.sequence_parallel import ( + sp_dit_causal_forward_train, + sp_causal_attn_forward, + ) + model = self.model.generator.model + # Use the SP forward implementation in the training path. + model._forward_train = types.MethodType(sp_dit_causal_forward_train, model) + + # Keep the original self_attn.forward so inference can temporarily + # disable SP. + self._sp_attn_blocks = [] + for block in model.blocks: + sa = block.self_attn + if not hasattr(sa, "_orig_forward"): + sa._orig_forward = sa.forward + sa.forward = types.MethodType(sp_causal_attn_forward, sa) + self._sp_attn_blocks.append(sa) + + if self.is_main_process: + print("[SP] sp_dit_causal_forward_train and sp_causal_attn_forward are enabled") + print("[SP] natural TF layout is the default training layout") + if getattr(config, "load_raw_video", False): + print(f"[SP-VAE] chunk-halo VAE enabled, halo_latents={self.sp_helper.vae_halo_latents}") + + # ================================= NVFP4 Quantized Training ================================= + self.model_quant = getattr(config, "model_quant", False) + if self.model_quant: + from utils.quant import ModelQuantizationConfig, quantize_model_with_filter + + quant_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "model_quant_scale_rule", "static_6"), + activation_scale_rule=getattr(config, "model_quant_activation_scale_rule", "static_6"), + weight_scale_rule=getattr(config, "model_quant_weight_scale_rule", None), + gradient_scale_rule=getattr(config, "model_quant_gradient_scale_rule", None), + keep_master_weights=True, + weight_scale_2d=True, + ) + self.model.generator.model, matched_modules = quantize_model_with_filter( + self.model.generator.model, + quant_config=quant_cfg, + filtered_modules=getattr(config, "model_quant_filtered_modules", None), + use_default_filtered_modules=getattr(config, "model_quant_use_default_filtered_modules", True), + cast_model_to_bf16=False, + materialize_for_inference=False, + verbose=self.is_main_process, + ) + if self.is_main_process: + from fouroversix.matmul.cutlass.backend import CUTLASSMatmulBackend + + print(f"[NVFP4] CUTLASS available: {CUTLASSMatmulBackend.is_available()}") + print( + "[NVFP4] Quantized AR training enabled " + "(keep_master_weights=True, weight_scale_2d=True)" + ) + print(f"[NVFP4] {len(matched_modules)} modules excluded from quantization") + + # ================================= Load model weights (before FSDP) ================================= + # Load model weights before FSDP wrapping, while keys still match the + # raw nn.Module. Optimizer, EMA, and step state are restored after FSDP + # and the related objects are created, so keep raw_state. + # + # Priority: auto_resume from logdir > generator_ckpt for a + # cold start > random initialization. This allows configs to keep + # generator_ckpt set while interrupted training still resumes from the + # latest step. The style mirrors trainer/distillation.py. + raw_state = None + + checkpoint_path = None + + if auto_resume and self.output_path: + latest_checkpoint = self.find_latest_checkpoint(self.output_path) + if latest_checkpoint: + checkpoint_path = latest_checkpoint + if self.is_main_process: + print(f"Auto resume: Found latest checkpoint at {checkpoint_path}") + else: + if self.is_main_process: + print("Auto resume: No checkpoint found in logdir, starting from scratch") + elif auto_resume: + if self.is_main_process: + print("Auto resume enabled but no logdir specified, starting from scratch") + else: + if self.is_main_process: + print("Auto resume disabled, starting from scratch") + + if checkpoint_path is None and getattr(config, "generator_ckpt", False): + checkpoint_path = config.generator_ckpt + if self.is_main_process: + print(f"Using explicit checkpoint: {checkpoint_path}") + + if checkpoint_path: + if self.is_main_process: + print(f"Loading checkpoint from {checkpoint_path}") + checkpoint = torch.load(checkpoint_path, map_location="cpu") + + if "generator" in checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {checkpoint_path}") + self.model.generator.load_state_dict(checkpoint["generator"], strict=True) + del checkpoint["generator"] + elif "model" in checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {checkpoint_path}") + self.model.generator.load_state_dict(checkpoint["model"], strict=True) + del checkpoint["model"] + else: + if self.is_main_process: + print(f"No 'generator'/'model' key found in {checkpoint_path}, treating as raw state_dict") + self.model.generator.load_state_dict(checkpoint, strict=True) + + gc.collect() + + raw_state = checkpoint + if "step" in raw_state: + self.step = raw_state["step"] + if self.is_main_process: + print(f"Resuming from step {self.step}") + else: + if self.is_main_process: + print("Warning: Step not found in checkpoint, starting from step 0.") + + # ================================= FSDP Wrap ================================= + self.model.generator = fsdp_wrap( + self.model.generator, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.generator_fsdp_wrap_strategy + ) + + self.model.text_encoder = fsdp_wrap( + self.model.text_encoder, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.text_encoder_fsdp_wrap_strategy + ) + + if not config.no_visualize or config.load_raw_video: + self.model.vae = self.model.vae.to( + device=self.device, dtype=torch.bfloat16 if config.mixed_precision else torch.float32) + + rename_param = ( + lambda name: name.replace("_fsdp_wrapped_module.", "") + .replace("_checkpoint_wrapped_module.", "") + .replace("_orig_mod.", "") + ) + self.name_to_trainable_params = {} + for n, p in self.model.generator.named_parameters(): + if not p.requires_grad: + continue + + renamed_n = rename_param(n) + self.name_to_trainable_params[renamed_n] = p + + self.generator_optimizer = torch.optim.AdamW( + [param for param in self.model.generator.parameters() + if param.requires_grad], + lr=config.lr, + betas=(config.beta1, config.beta2), + weight_decay=config.weight_decay + ) + + # Step 3: Initialize the dataloader + frame_raw_height = list(config.image_or_video_shape)[3] * wan_default_config[config.model_kwargs.model_name]["spatial_compression_ratio"] + frame_raw_width = list(config.image_or_video_shape)[4] * wan_default_config[config.model_kwargs.model_name]["spatial_compression_ratio"] + total_frames = (list(config.image_or_video_shape)[1] - 1) * wan_default_config[config.model_kwargs.model_name]["temporal_compression_ratio"] + 1 + num_frame_per_block = config.num_frame_per_block + self.fps = wan_default_config[config.model_kwargs.model_name].get("fps", 16) + + allow_padding = getattr(config, "allow_padding", False) + min_latent_frames = getattr(config, "min_latent_frames", 0) + single_video_only = getattr(config, "uniform_prompt", False) + max_chunks_per_shot = getattr(config, "max_chunks_per_shot", 0) + dataset_sample_warning_seconds = getattr(config, "dataset_sample_warning_seconds", 60.0) + dataset_sample_warning_interval_seconds = getattr( + config, "dataset_sample_warning_interval_seconds", 60.0 + ) + dataset = MultiVideoConcatDataset( + data_dir=config.data_path, + video_size=(frame_raw_height, frame_raw_width), + total_frames=total_frames, + deterministic=False, + num_frame_per_block=num_frame_per_block, + temporal_compression_ratio=wan_default_config[config.model_kwargs.model_name]["temporal_compression_ratio"], + target_fps=self.fps, + allow_padding=allow_padding, + min_latent_frames=min_latent_frames, + single_video_only=single_video_only, + independent_first_frame=getattr(config, "independent_first_frame", False), + return_image=getattr(config, "i2v", False), + max_chunks_per_shot=max_chunks_per_shot, + sample_warning_seconds=dataset_sample_warning_seconds, + sample_warning_interval_seconds=dataset_sample_warning_interval_seconds, + ) + if allow_padding and self.is_main_process: + print(f"[Padding] Variable-length training enabled: short videos will be padded with loss masking" + f" (min_latent_frames={min_latent_frames})") + if single_video_only and self.is_main_process: + print(f"[uniform_prompt] single_video_only enabled: each sample uses one video only") + # SP ranks in the same SP group need the same batch because they shard + # the sequence dimension. Use dp_rank for data parallel sampling. + random_seed = int(time.time()) % (2**31) * dist.get_rank() + if self.sequence_parallel_size > 1: + dp_rank = global_rank // self.sequence_parallel_size + sampler = torch.utils.data.distributed.DistributedSampler( + dataset, shuffle=True, drop_last=True, + rank=dp_rank, num_replicas=self.data_parallel_size, + seed=random_seed, + ) + else: + sampler = torch.utils.data.distributed.DistributedSampler( + dataset, shuffle=True, drop_last=True, + seed=random_seed, + ) + dataloader = torch.utils.data.DataLoader( + dataset, + batch_size=config.batch_size, + sampler=sampler, + num_workers=2, + prefetch_factor=1, + pin_memory=False, + persistent_workers=False, + collate_fn=multi_video_collate_fn, + ) + + # Eval dataloader: batch size defaults to 1 to keep validation memory predictable. + eval_data_path = getattr(config, "eval_data_path", config.data_path) + inference_num_frames = section_get(config, "evaluation", "num_frames", getattr(config, "inference_num_frames", 0)) + if isinstance(inference_num_frames, (list, tuple)): + inference_num_frames = inference_num_frames[0] if len(inference_num_frames) > 0 else 0 + eval_total_frames = ( + (inference_num_frames - 1) * wan_default_config[config.model_kwargs.model_name]["temporal_compression_ratio"] + 1 + if inference_num_frames > 0 else total_frames + ) + temporal_compression_ratio = wan_default_config[config.model_kwargs.model_name]["temporal_compression_ratio"] + first_chunk_frames = 1 + (num_frame_per_block - 1) * temporal_compression_ratio + subsequent_chunk_frames = num_frame_per_block * temporal_compression_ratio + num_blocks = 1 + (eval_total_frames - first_chunk_frames) // subsequent_chunk_frames + chunks_per_shot = getattr(config, "chunks_per_shot", 0) + scene_cut_prefix = getattr(config, "scene_cut_prefix", "The scene transitions. ") + if getattr(config, "i2v", False): + eval_dataset = MultiVideoConcatDataset( + data_dir=eval_data_path, + video_size=(frame_raw_height, frame_raw_width), + total_frames=eval_total_frames, + deterministic=True, + num_frame_per_block=num_frame_per_block, + temporal_compression_ratio=temporal_compression_ratio, + target_fps=self.fps, + allow_padding=allow_padding, + min_latent_frames=min_latent_frames, + single_video_only=single_video_only, + independent_first_frame=getattr(config, "independent_first_frame", False), + return_image=True, + max_chunks_per_shot=max_chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + sample_warning_seconds=dataset_sample_warning_seconds, + sample_warning_interval_seconds=dataset_sample_warning_interval_seconds, + ) + eval_collate = multi_video_collate_fn + else: + eval_dataset = MultiTextConcatDataset( + data_path=eval_data_path, + num_blocks=num_blocks, + chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + deterministic=True, + ) + eval_collate = eval_collate_fn + if dist.get_rank() == 0: + print(f"Using {eval_dataset.__class__.__name__} for eval: {eval_data_path}, num_blocks={num_blocks}") + eval_sampler = torch.utils.data.distributed.DistributedSampler( + eval_dataset, shuffle=False, drop_last=False + ) + eval_dataloader = torch.utils.data.DataLoader( + eval_dataset, + batch_size=section_get(config, "evaluation", "val_batch_size", 1), + sampler=eval_sampler, + num_workers=0, + pin_memory=False, + persistent_workers=False, + collate_fn=eval_collate, + ) + + if dist.get_rank() == 0: + print("DATASET SIZE %d" % len(dataset)) + print("EVAL DATASET SIZE %d" % len(eval_dataset)) + + self.dataloader = cycle(dataloader) + self.eval_dataloader = eval_dataloader + + ############################################################################################################## + # 6. Set up EMA parameter containers + ema_weight = config.ema_weight + self.generator_ema = None + if (ema_weight is not None) and (ema_weight > 0.0) and (self.step >= config.ema_start_step): + if self.is_main_process: + print(f"Setting up EMA with weight {ema_weight}") + self.generator_ema = EMA_FSDP(self.model.generator, decay=ema_weight) + + ############################################################################################################## + # 7. (If resuming) Load optimizer and EMA from checkpoint + # Model weights were loaded before FSDP wrapping; restore only + # optimizer and EMA state that depend on FSDP here. + + if raw_state is not None: + if "generator_ema" in raw_state and self.generator_ema is not None: + self.generator_ema.load_state_dict(raw_state["generator_ema"]) + if self.is_main_process: + print("Resuming generator EMA...") + else: + if self.is_main_process: + print("Warning: Generator EMA checkpoint not found.") + + if "generator_optimizer" in raw_state: + gen_osd = FSDP.optim_state_dict_to_load( + self.model.generator, + self.generator_optimizer, + raw_state["generator_optimizer"], + ) + del raw_state["generator_optimizer"] + self.generator_optimizer.load_state_dict(gen_osd) + del gen_osd + if self.is_main_process: + print("Resuming generator optimizer...") + else: + if self.is_main_process: + print("Warning: Generator optimizer checkpoint not found.") + + del raw_state + gc.collect() + + ############################################################################################################## + + self.max_grad_norm = getattr(config, "max_grad_norm", 10.0) + self.previous_time = None + + # Resume error buffer from checkpoint. + # Try ``*_sp{sp_rank}.pt`` first, fall back to ``*.pt`` (legacy). + if self.model.error_buffer is not None and auto_resume: + ckpt_dir = self.find_latest_checkpoint(self.output_path) + if ckpt_dir is not None: + ckpt_root = os.path.dirname(ckpt_dir) + sp_size_ = max(self.sequence_parallel_size, 1) + global_rank = dist.get_rank() if dist.is_initialized() else 0 + sp_rank = global_rank % sp_size_ + + def _resolve_buf_file(stem): + if sp_size_ > 1: + p = os.path.join(ckpt_root, f"{stem}_sp{sp_rank}.pt") + if os.path.exists(p): + return p + p = os.path.join(ckpt_root, f"{stem}.pt") + return p if os.path.exists(p) else None + + for stem, buffer in [("error_buffer", self.model.error_buffer), + ("noise_error_buffer", self.model.noise_error_buffer)]: + if buffer is None: + continue + bf = _resolve_buf_file(stem) + if bf is not None: + bf_state = torch.load(bf, map_location="cpu") + buffer.load_state_dict(bf_state) + del bf_state + s = buffer.stats() + rng = s.get('global_block_range', '') + shard = s.get('shard', '') + print(f"[{stem}] rank={global_rank} Resumed from " + f"{os.path.basename(bf)}: {s['total_entries']} entries, " + f"{s['filled_buckets']} buckets, " + f"total_added={s['total_added']} {rng} {shard}".rstrip()) + elif self.is_main_process: + print(f"[{stem}] No saved buffer found, starting fresh.") + + def _move_optimizer_to_device(self, optimizer, device): + """Move optimizer state to the specified device.""" + for state in optimizer.state.values(): + for k, v in state.items(): + if isinstance(v, torch.Tensor): + state[k] = v.to(device) + + def find_latest_checkpoint(self, logdir): + """Find the latest checkpoint in the logdir.""" + if not os.path.exists(logdir): + return None + + checkpoint_dirs = [] + for item in os.listdir(logdir): + if item.startswith("checkpoint_model_") and os.path.isdir(os.path.join(logdir, item)): + try: + # Extract step number from directory name + step_str = item.replace("checkpoint_model_", "") + step = int(step_str) + checkpoint_path = os.path.join(logdir, item, "model.pt") + if os.path.exists(checkpoint_path): + checkpoint_dirs.append((step, checkpoint_path)) + except ValueError: + continue + + if not checkpoint_dirs: + return None + + # Sort by step number and return the latest one + checkpoint_dirs.sort(key=lambda x: x[0]) + latest_step, latest_path = checkpoint_dirs[-1] + return latest_path + + def get_all_checkpoints(self, logdir): + """Get all checkpoints in the logdir sorted by step number.""" + if not os.path.exists(logdir): + return [] + + checkpoint_dirs = [] + for item in os.listdir(logdir): + if item.startswith("checkpoint_model_") and os.path.isdir(os.path.join(logdir, item)): + try: + # Extract step number from directory name + step_str = item.replace("checkpoint_model_", "") + step = int(step_str) + checkpoint_dir_path = os.path.join(logdir, item) + checkpoint_file_path = os.path.join(checkpoint_dir_path, "model.pt") + if os.path.exists(checkpoint_file_path): + checkpoint_dirs.append((step, checkpoint_dir_path, item)) + except ValueError: + continue + + # Sort by step number (ascending order) + checkpoint_dirs.sort(key=lambda x: x[0]) + return checkpoint_dirs + + def cleanup_old_checkpoints(self, logdir, max_checkpoints): + """Remove old checkpoints if the number exceeds max_checkpoints. + + Only the main process performs the actual deletion to avoid race conditions + in distributed training. + """ + if max_checkpoints <= 0: + return + + # Only main process should perform cleanup to avoid race conditions + if not self.is_main_process: + return + + checkpoints = self.get_all_checkpoints(logdir) + if len(checkpoints) > max_checkpoints: + # Calculate how many to remove + num_to_remove = len(checkpoints) - max_checkpoints + checkpoints_to_remove = checkpoints[:num_to_remove] # Remove oldest ones + + print(f"Checkpoint cleanup: Found {len(checkpoints)} checkpoints, removing {num_to_remove} oldest ones (keeping {max_checkpoints})") + + import shutil + removed_count = 0 + for step, checkpoint_dir_path, dir_name in checkpoints_to_remove: + try: + print(f" Removing: {dir_name} (step {step})") + shutil.rmtree(checkpoint_dir_path) + removed_count += 1 + except Exception as e: + print(f" Warning: Failed to remove checkpoint {dir_name}: {e}") + + print(f"Checkpoint cleanup completed: removed {removed_count}/{num_to_remove} old checkpoints") + else: + if len(checkpoints) > 0: + print(f"Checkpoint cleanup: Found {len(checkpoints)} checkpoints (max: {max_checkpoints}, no cleanup needed)") + + def save(self): + print("Start gathering distributed model states...") + + # Release large inference caches before saving when possible. + if hasattr(self.model, "inference_pipeline") and self.model.inference_pipeline is not None: + clear_fn = getattr(self.model.inference_pipeline, "clear_cache", None) + if clear_fn is not None: + try: + clear_fn() + except Exception as e: + print(f"Warning: failed to clear inference cache before save: {e}") + # Drop the inference pipeline reference so GC / empty_cache can + # reclaim memory. + self.model.inference_pipeline = None + torch.cuda.empty_cache() + + with FSDP.state_dict_type( + self.model.generator, + StateDictType.FULL_STATE_DICT, + FullStateDictConfig(rank0_only=True, offload_to_cpu=True), + FullOptimStateDictConfig(rank0_only=True, offload_to_cpu=True), + ): + generator_state_dict = self.model.generator.state_dict() + generator_opim_state_dict = FSDP.optim_state_dict(self.model.generator, + self.generator_optimizer) + + if self.config.ema_start_step < self.step and self.generator_ema is not None: + state_dict = { + "generator": generator_state_dict, + "generator_ema": self.generator_ema.state_dict(), + "generator_optimizer": generator_opim_state_dict, + "step": self.step, + } + else: + state_dict = { + "generator": generator_state_dict, + "generator_optimizer": generator_opim_state_dict, + "step": self.step, + } + + checkpoint_dir = os.path.join(self.output_path, f"checkpoint_model_{self.step:06d}") + if self.is_main_process: + os.makedirs(checkpoint_dir, exist_ok=True) + checkpoint_file = os.path.join(checkpoint_dir, "model.pt") + torch.save(state_dict, checkpoint_file) + print("Model saved to", checkpoint_file) + + # Save error buffer — unified per-sp_rank pattern: + # Each SP rank owns a different t-bucket shard (and different + # positions in 2D mode). The first DP rank in each SP group + # writes ``error_buffer_sp{sp_rank}.pt``. + # Fallback (sp_size<=1): main_process writes ``error_buffer.pt``. + if self.model.error_buffer is not None: + sp_size_ = max(self.sequence_parallel_size, 1) + _global_rank = dist.get_rank() if dist.is_initialized() else 0 + _sp_rank = _global_rank % sp_size_ + _is_first_dp = (_global_rank // sp_size_) == 0 + + if dist.is_initialized(): + dist.barrier() + + should_save = _is_first_dp if sp_size_ > 1 else self.is_main_process + if should_save: + for stem, buffer in [("error_buffer", self.model.error_buffer), + ("noise_error_buffer", self.model.noise_error_buffer)]: + if buffer is None: + continue + fname = f"{stem}_sp{_sp_rank}.pt" if sp_size_ > 1 else f"{stem}.pt" + fpath = os.path.join(checkpoint_dir, fname) + torch.save(buffer.state_dict(), fpath) + s = buffer.stats() + rng = s.get('global_block_range', '') + shard = s.get('shard', '') + print(f"[rank={_global_rank}] {stem} saved to {fname} " + f"({s['total_entries']} entries, {s['filled_buckets']} buckets) " + f"{rng} {shard}".rstrip()) + + if self.is_main_process: + # Cleanup old checkpoints if max_checkpoints is set + max_checkpoints = getattr(self.config, "max_checkpoints", 0) + if max_checkpoints > 0: + self.cleanup_old_checkpoints(self.output_path, max_checkpoints) + + # Keep all ranks in sync so non-rank0 workers don't kick off the next + # training iteration (and trigger NCCL watchdog timeouts) while rank0 + # is still writing the checkpoint to disk. + if dist.is_initialized(): + dist.barrier() + + torch.cuda.empty_cache() + import gc + gc.collect() + + def train_one_step(self, batch, accumulation_step=0, accumulation_steps=None): + accumulation_steps = accumulation_steps or getattr(self, "gradient_accumulation_steps", 1) + self.log_iters = 1 + + if self.step % 20 == 0: + torch.cuda.empty_cache() + # Step 1: Get the next batch of text prompts + text_prompts = batch["prompts"] + batch_size = len(text_prompts) + clean_latent_is_sp_sharded = False + if not self.config.load_raw_video: # precomputed latent + clean_latent = batch["ode_latent"][:, -1].to( + device=self.device, dtype=self.dtype) + image_latent = clean_latent[:, 0:1] + else: # encode raw video to latent + ( + clean_latent, + image_latent, + clean_latent_is_sp_sharded, + ) = self.sp_helper.encode_raw_video_latents( + batch, + batch_size=batch_size, + ) + + loss_mask = self.sp_helper.build_loss_mask( + batch, clean_latent, clean_latent_is_sp_sharded + ) + image_or_video_shape = list(self.config.image_or_video_shape) + image_or_video_shape[0] = batch_size + # Step 2: Extract the conditional infos + with torch.no_grad(): + # turn text prompts: List[List[str]] into List[str] + text_prompts_flat = [prompt for sublist in text_prompts for prompt in sublist] + + conditional_dict = self.model.text_encoder( + text_prompts=text_prompts_flat) + + if not getattr(self, "unconditional_dict", None): + unconditional_dict = self.model.text_encoder( + text_prompts=[self.config.negative_prompt] * batch_size) + unconditional_dict = {k: v.detach() + for k, v in unconditional_dict.items()} + self.unconditional_dict = unconditional_dict # cache the unconditional_dict + else: + unconditional_dict = self.unconditional_dict + + # Step 2.5: Sequence Parallel partitions sequence-owned tensors. + if self.sequence_parallel_size > 1: + clean_latent, conditional_dict, image_or_video_shape = ( + self.sp_helper.partition_training_inputs( + image_or_video_shape=image_or_video_shape, + clean_latent=clean_latent, + conditional_dict=conditional_dict, + clean_latent_is_sharded=clean_latent_is_sp_sharded, + ) + ) + image_latent = self.sp_helper.local_i2v_initial_latent(image_latent) + loss_mask, loss_mask_global_valid_count = self.sp_helper.partition_loss_mask( + loss_mask, + already_sharded=clean_latent_is_sp_sharded, + ) + + # Step 3: Train the generator + gen_kwargs = dict( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + unconditional_dict=unconditional_dict, + clean_latent=clean_latent, + initial_latent=image_latent, + loss_mask=loss_mask, + loss_mask_global_valid_count=loss_mask_global_valid_count, + global_step=self.step, + ) + generator_loss, log_dict = self.model.generator_loss(**gen_kwargs) + if accumulation_step == 0: + self.generator_optimizer.zero_grad(set_to_none=True) + scaled_loss = generator_loss / accumulation_steps + scaled_loss.backward() + if accumulation_step == accumulation_steps - 1: + generator_grad_norm = self.model.generator.clip_grad_norm_( + self.max_grad_norm) + + self.generator_optimizer.step() + self.step += 1 + else: + generator_grad_norm = torch.tensor(0.0, device=self.device) + + # Run the remaining logic only after a full gradient-accumulation cycle. + if accumulation_step != accumulation_steps - 1: + return + + # Step 4: Update EMA (if enabled and after start step) + if (self.step >= self.config.ema_start_step) and \ + (self.generator_ema is None) and \ + (getattr(self.config, "ema_weight", None) is not None) and \ + (self.config.ema_weight > 0): + self.generator_ema = EMA_FSDP(self.model.generator, decay=self.config.ema_weight) + + # Update EMA after optimizer step + if self.generator_ema is not None and self.step >= self.config.ema_start_step: + self.generator_ema.update(self.model.generator) + + wandb_loss_dict = { + "generator_loss": generator_loss.item(), + "generator_grad_norm": generator_grad_norm.item(), + } + + # Error buffer stats + er_log_str = "" + if "er_total_added" in log_dict: + wandb_loss_dict["er_total_entries"] = log_dict["er_total_entries"] + wandb_loss_dict["er_total_added"] = log_dict["er_total_added"] + wandb_loss_dict["er_injected"] = int(log_dict["er_injected"]) + wandb_loss_dict["er_latent_injected"] = int(log_dict["er_latent_injected"]) + wandb_loss_dict["er_noise_injected"] = int(log_dict.get("er_noise_injected", False)) + wandb_loss_dict["er_noise_total_entries"] = log_dict.get("er_noise_total_entries", 0) + ctx_flag = 'Y' if log_dict['er_injected'] else 'N' + lat_flag = 'Y' if log_dict['er_latent_injected'] else 'N' + noise_flag = 'Y' if log_dict.get('er_noise_injected', False) else 'N' + er_log_str = ( + f", er_buf={log_dict['er_total_entries']}|" + f"{log_dict.get('er_noise_total_entries', 0)} " + f"({log_dict['er_filled_buckets']} buckets), " + f"ctx={ctx_flag} lat={lat_flag} noise={noise_flag}" + ) + + # Step 5: Logging + if self.is_main_process: + if not self.disable_wandb: + wandb.log(wandb_loss_dict, step=self.step) + print( + f"[step {self.step:07d}] " + f"generator_loss={wandb_loss_dict['generator_loss']:.6f}, " + f"generator_grad_norm={wandb_loss_dict['generator_grad_norm']:.6f}" + f"{er_log_str}" + ) + + if self.step % self.config.gc_interval == 0: + if dist.get_rank() == 0: + logging.info("DistGarbageCollector: Running GC.") + gc.collect() + + def _set_sp_attn(self, enabled: bool): + """ + Toggle SP self-attention between training and inference. + This only applies to 5B runs with SP enabled. + """ + if not hasattr(self, "_sp_attn_blocks"): + return + if self.sequence_parallel_size <= 1: + return + + # Lazy import to avoid failures under non-5B configurations. + try: + from wan_5b.distributed.sequence_parallel import sp_causal_attn_forward + except Exception: + return + + for sa in self._sp_attn_blocks: + if not hasattr(sa, "_orig_forward"): + continue + if enabled: + sa.forward = types.MethodType(sp_causal_attn_forward, sa) + else: + sa.forward = sa._orig_forward + + @torch.no_grad() + def _swap_ema_weights(self): + """ + Bidirectionally swap model weights with EMA shadow weights. + Calling this twice restores both the model and EMA to their original state. + """ + with FSDP.summon_full_params(self.model.generator, writeback=True): + for n, p in self.model.generator.module.named_parameters(): + cleaned_name = EMA_FSDP._clean_param_name(n) + if cleaned_name in self.generator_ema.shadow: + ema_val = self.generator_ema.shadow[cleaned_name] + tmp = p.data.clone().float().cpu() + p.data.copy_(ema_val.to(dtype=p.dtype, device=p.device)) + self.generator_ema.shadow[cleaned_name] = tmp + + def _run_evaluation_inference(self): + gc.collect() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + if self.model.inference_pipeline is None: + self.model._initialize_inference_pipeline() + + out_dir = os.path.join(self.output_path, f"generated_video_{self.step:06d}") + if self.is_main_process: + os.makedirs(out_dir, exist_ok=True) + barrier() + + rank = dist.get_rank() + vis_ema = section_get(self.config, "evaluation", "use_ema", getattr(self.config, "vis_ema", False)) + vis_ema = vis_ema and self.generator_ema is not None + + for eval_batch in self.eval_dataloader: + eval_prompts = eval_batch["prompts"] + eval_idx = eval_batch["idx"] + eval_images = eval_batch.get("image", None) + + batch_size_eval = len(eval_prompts) + for b in range(batch_size_eval): + prompts_for_sample = eval_prompts[b] + + if self.is_main_process: + print(f"prompts_for_sample: {prompts_for_sample}") + print(len(prompts_for_sample)) + print(prompts_for_sample[0][:60]) + + sample_idx = ( + eval_idx[b].item() + if hasattr(eval_idx, "shape") + else int(eval_idx[b]) + ) + + save_latents_only = section_get( + self.config, + "evaluation", + "save_latents_only", + self.config.get("return_latents", False), + aliases=("return_latents", "save_latent_only"), + ) + + run_modes = [("", False)] + if vis_ema: + run_modes.append(("_ema", True)) + + for suffix, use_ema in run_modes: + generated_video = self.generate_video( + self.model.inference_pipeline, + [prompts_for_sample], + eval_images[b:b + 1] if eval_images is not None else None, + use_ema=use_ema, + ) + + if not save_latents_only: + video_path = os.path.join( + out_dir, + f"video{suffix}_rank{rank:02d}_idx{sample_idx:06d}.mp4", + ) + write_video(video_path, generated_video[0], fps=self.fps) + else: + video_path = os.path.join( + out_dir, + f"latents{suffix}_rank{rank:02d}_idx{sample_idx:06d}.pt", + ) + torch.save(generated_video[0], video_path) + + if (not self.disable_wandb) and self.is_main_process and not save_latents_only: + caption = prompts_for_sample[0] if len(prompts_for_sample) > 0 else "" + log_key = f"generated_video{suffix}" + wandb.log( + { + log_key: wandb.Video( + generated_video[0].transpose(0, 3, 1, 2), + caption=f"{caption}", + fps=self.fps, + format="mp4", + ), + }, + step=self.step, + ) + + del generated_video + + prompt_txt_path = os.path.join( + out_dir, + f"prompt_rank{rank:02d}_idx{sample_idx:06d}.txt", + ) + save_prompts_to_txt( + prompts_for_sample, + prompt_txt_path, + self.is_main_process, + ) + barrier() + + if hasattr(self.model, "inference_pipeline") and self.model.inference_pipeline is not None: + clear_fn = getattr(self.model.inference_pipeline, "clear_cache", None) + if clear_fn is not None: + clear_fn() + torch.cuda.empty_cache() + + @torch.no_grad() + def generate_video(self, pipeline, prompts, image=None, use_ema=False): + # Temporarily disable SP self-attention during inference to avoid + # interfering with KV-cache logic. + self._set_sp_attn(False) + ema_applied = use_ema and self.generator_ema is not None + if ema_applied: + self._swap_ema_weights() + try: + batch_size = len(prompts) + noise_shape = list(self.config.image_or_video_shape[1:]) + inference_num_frames = section_get( + self.config, "evaluation", "num_frames", getattr(self.config, "inference_num_frames", 0) + ) + if isinstance(inference_num_frames, (list, tuple)): + inference_num_frames = inference_num_frames[0] if len(inference_num_frames) > 0 else 0 + if inference_num_frames > 0: + noise_shape[0] = inference_num_frames + initial_latent = None + if image is not None: + image = image.to(device="cuda", dtype=self.dtype) + if image.ndim == 4: + image = image.unsqueeze(2) + elif image.ndim != 5: + raise ValueError(f"Expected i2v image with shape [B,C,H,W] or [B,C,T,H,W], got {tuple(image.shape)}") + initial_latent = pipeline.vae.encode_to_latent(image).to(device="cuda", dtype=self.dtype) + if initial_latent.shape[0] != batch_size: + initial_latent = initial_latent.repeat(batch_size, 1, 1, 1, 1) + if noise_shape[0] <= initial_latent.shape[1]: + raise ValueError( + f"evaluation.num_frames must exceed the i2v conditioning frames; " + f"got {inference_num_frames} and {initial_latent.shape[1]}" + ) + sampled_noise = torch.randn( + [batch_size] + noise_shape, device="cuda", dtype=self.dtype + ) + + save_latents_only = section_get( + self.config, + "evaluation", + "save_latents_only", + self.config.get("return_latents", False), + aliases=("return_latents", "save_latent_only"), + ) + video = pipeline.inference( + noise=sampled_noise, + text_prompts=prompts, + initial_latent=initial_latent, + return_latents=save_latents_only + ) + if not save_latents_only: + current_video = video.permute(0, 1, 3, 4, 2).cpu().numpy() * 255.0 + else: + current_video = video + finally: + if ema_applied: + self._swap_ema_weights() + # Restore SP self-attention for training. + self._set_sp_attn(True) + + return current_video + + def _sync_batch_for_sequence_parallel(self, batch, accumulation_step: int = 0): + return self.sp_helper.sync_batch(batch, step=self.step) + + def train(self): + if getattr(self.config, "generate_before_train", False): + if self.is_main_process: + print("[generate_before_train] Running evaluation inference before training starts...") + self._run_evaluation_inference() + if self.is_main_process: + print("[generate_before_train] Inference done. Exiting.") + barrier() + return + + acc_steps = getattr(self, "gradient_accumulation_steps", 1) + while True: + for acc in range(acc_steps): + batch = next(self.dataloader) + + # Synchronize batch contents across ranks under Sequence Parallel. + if self.sequence_parallel_size > 1: + batch = self._sync_batch_for_sequence_parallel(batch, accumulation_step=acc) + + self.train_one_step(batch, accumulation_step=acc, accumulation_steps=acc_steps) + if (not self.config.no_save) and self.step % self.config.log_iters == 0: + torch.cuda.empty_cache() + self.save() + torch.cuda.empty_cache() + + evaluation_interval = section_get(self.config, "evaluation", "interval", getattr(self.config, "generate_interval", 0)) + if evaluation_interval > 0 and self.step % evaluation_interval == 0: + self._run_evaluation_inference() + + barrier() + if self.is_main_process: + current_time = time.time() + if self.previous_time is None: + self.previous_time = current_time + else: + if not self.disable_wandb: + wandb.log({"per iteration time": current_time - self.previous_time}, step=self.step) + self.previous_time = current_time + + if self.step >= self.config.max_iters: + break diff --git a/trainer/distillation.py b/trainer/distillation.py new file mode 100644 index 0000000..d61ce9a --- /dev/null +++ b/trainer/distillation.py @@ -0,0 +1,1483 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +import gc +import logging + +from utils.dataset import cycle +from utils.dataset import MultiVideoConcatDataset, MultiTextConcatDataset, multi_video_collate_fn, eval_collate_fn, DEFAULT_SCENE_CUT_PREFIX +from utils.config import section_get, wan_default_config +from utils.distributed import EMA_FSDP, fsdp_wrap, launch_distributed_job +from utils.misc import ( + set_seed, + merge_dict_list +) +import torch.distributed as dist +from omegaconf import OmegaConf +from model import DMD +import torch +import wandb +import os +from torch.distributed.fsdp import FullyShardedDataParallel as FSDP +from torch.distributed.fsdp import ( + StateDictType, FullStateDictConfig, FullOptimStateDictConfig +) +from torchvision.io import write_video + +# LoRA related imports +import peft +from peft import get_peft_model_state_dict + +from pipeline import ( + CausalDiffusionInferencePipeline +) +import time + +class Trainer: + + def __init__(self, config): + self.config = config + self.step = 0 + + # Step 1: Initialize the distributed training environment (rank, seed, dtype, logging etc.) + torch.backends.cuda.matmul.allow_tf32 = True + torch.backends.cudnn.allow_tf32 = True + + launch_distributed_job() + global_rank = dist.get_rank() + self.world_size = dist.get_world_size() + + self.dtype = torch.bfloat16 if config.mixed_precision else torch.float32 + self.device = torch.cuda.current_device() + self.is_main_process = global_rank == 0 + self.causal = getattr(config, "causal", getattr(config, "all_causal", True)) + self.disable_wandb = config.disable_wandb + + # use a random seed for the training + if config.seed == 0: + random_seed = torch.randint(0, 10000000, (1,), device=self.device) + dist.broadcast(random_seed, src=0) + config.seed = random_seed.item() + + set_seed(config.seed + global_rank) + + if self.is_main_process and not self.disable_wandb: + if getattr(config, "wandb_key", None): + wandb.login(key=config.wandb_key) + wandb.init( + config=OmegaConf.to_container(config, resolve=True), + name=config.config_name, + id=config.config_name, + mode="online", + entity=config.wandb_entity, + project=config.wandb_project, + dir=config.wandb_save_dir, + resume="allow" + ) + + self.output_path = config.logdir + + # Step 2: Initialize the model + if config.distribution_loss == "dmd": + self.model = DMD(config, device=self.device) + else: + raise ValueError(f"Unsupported distribution matching loss: {config.distribution_loss}") + + # Save pretrained model state_dicts to CPU + self.fake_score_state_dict_cpu = self.model.fake_score.state_dict() + + # ================================= NVFP4 Quantized Training / Inference ================================= + # `generator_quant` is the preferred student flag; `model_quant` is kept + # as a legacy alias used by earlier Sage configs. + self.generator_quant = getattr(config, "generator_quant", getattr(config, "model_quant", False)) + self.real_score_quant = getattr(config, "real_score_quant", False) + self.fake_score_quant = getattr(config, "fake_score_quant", False) + self.real_score_quant_materialize = getattr(config, "real_score_quant_materialize", True) + + if self.generator_quant or self.real_score_quant or self.fake_score_quant: + from utils.quant import ModelQuantizationConfig, quantize_model_with_filter + + fallback_sr = getattr(config, "model_quant_scale_rule", "static_6") + fallback_asr = getattr(config, "model_quant_activation_scale_rule", "static_6") + fallback_wsr = getattr(config, "model_quant_weight_scale_rule", None) + fallback_gsr = getattr(config, "model_quant_gradient_scale_rule", None) + + if self.generator_quant: + gen_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "generator_quant_scale_rule", fallback_sr), + activation_scale_rule=getattr(config, "generator_quant_activation_scale_rule", fallback_asr), + weight_scale_rule=getattr(config, "generator_quant_weight_scale_rule", fallback_wsr), + gradient_scale_rule=getattr(config, "generator_quant_gradient_scale_rule", fallback_gsr), + keep_master_weights=True, + weight_scale_2d=True, + ) + self.model.generator.model, gen_matched = quantize_model_with_filter( + self.model.generator.model, + quant_config=gen_cfg, + filtered_modules=getattr(config, "generator_quant_filtered_modules", None), + filter_profile="student", + use_default_filtered_modules=getattr( + config, "generator_quant_use_default_filtered_modules", True + ), + cast_model_to_bf16=False, + materialize_for_inference=False, + verbose=self.is_main_process, + ) + if self.is_main_process: + print( + "[NVFP4] Generator (student) quantized training enabled, " + f"scale_rule={gen_cfg.scale_rule}, {len(gen_matched)} modules excluded" + ) + + if self.real_score_quant: + real_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "real_score_quant_scale_rule", fallback_sr), + activation_scale_rule=getattr(config, "real_score_quant_activation_scale_rule", fallback_asr), + weight_scale_rule=getattr(config, "real_score_quant_weight_scale_rule", fallback_wsr), + gradient_scale_rule=None, + keep_master_weights=True, + weight_scale_2d=True, + ) + self.model.real_score.model, real_matched = quantize_model_with_filter( + self.model.real_score.model, + quant_config=real_cfg, + filtered_modules=getattr(config, "real_score_quant_filtered_modules", None), + filter_profile="teacher", + use_default_filtered_modules=getattr( + config, "real_score_quant_use_default_filtered_modules", True + ), + cast_model_to_bf16=False, + materialize_for_inference=False, + verbose=self.is_main_process, + ) + if self.is_main_process: + real_score_plan = ( + "auto materialize before FSDP wrapping" + if self.real_score_quant_materialize + else "keep master weights after checkpoint load" + ) + print( + "[NVFP4] Real_score (teacher) quantized inference enabled, " + f"scale_rule={real_cfg.scale_rule}, {len(real_matched)} modules excluded, " + f"{real_score_plan}" + ) + + if self.fake_score_quant: + fake_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "fake_score_quant_scale_rule", fallback_sr), + activation_scale_rule=getattr(config, "fake_score_quant_activation_scale_rule", fallback_asr), + weight_scale_rule=getattr(config, "fake_score_quant_weight_scale_rule", fallback_wsr), + gradient_scale_rule=getattr(config, "fake_score_quant_gradient_scale_rule", fallback_gsr), + keep_master_weights=True, + weight_scale_2d=True, + ) + self.model.fake_score.model, fake_matched = quantize_model_with_filter( + self.model.fake_score.model, + quant_config=fake_cfg, + filtered_modules=getattr(config, "fake_score_quant_filtered_modules", None), + filter_profile="critic", + use_default_filtered_modules=getattr( + config, "fake_score_quant_use_default_filtered_modules", True + ), + cast_model_to_bf16=False, + materialize_for_inference=False, + verbose=self.is_main_process, + ) + if self.is_main_process: + print( + "[NVFP4] Fake_score (critic) quantized training enabled, " + f"scale_rule={fake_cfg.scale_rule}, {len(fake_matched)} modules excluded" + ) + + # Auto resume configuration (needed for LoRA checkpoint loading) + auto_resume = getattr(config, "auto_resume", True) # Default to True + + # ================================= LoRA Configuration ================================= + self.is_lora_enabled = False + self.lora_config = None + + if hasattr(config, 'adapter') and config.adapter is not None: + self.is_lora_enabled = True + self.lora_config = config.adapter + + if self.is_main_process: + print(f"LoRA enabled with config: {self.lora_config}") + print("Loading base model and applying LoRA before FSDP wrapping...") + + # 1. Load base model first (config.generator_ckpt) before applying LoRA. + generator_checkpoint_path = getattr(config, "generator_ckpt", None) + if generator_checkpoint_path: + if self.is_main_process: + print(f"Loading base model from {generator_checkpoint_path} (before applying LoRA)") + generator_checkpoint = torch.load(generator_checkpoint_path, map_location="cpu") + + # Load generator (directly; no key alignment needed since LoRA not applied yet) + if isinstance(generator_checkpoint, dict) and "generator" in generator_checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {generator_checkpoint_path}") + self.model.generator.load_state_dict(generator_checkpoint["generator"], strict=True) + if self.is_main_process: + print("Generator weights loaded successfully") + elif isinstance(generator_checkpoint, dict) and "model" in generator_checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {generator_checkpoint_path}") + self.model.generator.load_state_dict(generator_checkpoint["model"], strict=True) + if self.is_main_process: + print("Generator weights loaded successfully") + else: + self.model.generator.load_state_dict(generator_checkpoint, strict=True) + if self.is_main_process: + print("Loading base model as raw state_dict") + + # Load critic from full/base checkpoints when available. + if isinstance(generator_checkpoint, dict) and "critic" in generator_checkpoint: + if self.is_main_process: + print(f"Loading pretrained critic from {generator_checkpoint_path}") + self.model.fake_score.load_state_dict(generator_checkpoint["critic"], strict=True) + if self.is_main_process: + print("Critic weights loaded successfully") + # Load training step from checkpoint metadata. + if isinstance(generator_checkpoint, dict) and "step" in generator_checkpoint: + self.step = generator_checkpoint["step"] + if self.is_main_process: + print(f"base_checkpoint step: {self.step}") + else: + if self.is_main_process: + print("Warning: Step not found in checkpoint, starting from step 0.") + del generator_checkpoint + gc.collect() + else: + if self.is_main_process: + print("No base model checkpoint specified, skipping base weight loading for LoRA training.") + + # Load real_score from a separate checkpoint (independent of LoRA / auto_resume) + real_score_ckpt = getattr(config, "real_score_ckpt", None) + if real_score_ckpt: + if self.is_main_process: + print(f"Loading real_score from {real_score_ckpt}") + real_ckpt = torch.load(real_score_ckpt, map_location="cpu") + if "generator" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["generator"], strict=True) + elif "critic" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["critic"], strict=True) + elif "model" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["model"], strict=True) + else: + if self.is_main_process: + print(f"No recognized key in {real_score_ckpt}, treating as raw state_dict") + self.model.real_score.load_state_dict(real_ckpt, strict=True) + del real_ckpt + gc.collect() + if self.is_main_process: + print(f"Successfully loaded real_score from {real_score_ckpt}") + + # Apply LoRA wrapping if enabled (after all base weights are loaded, before FSDP) + if self.is_lora_enabled: + # 2. Apply LoRA wrapping now (after loading base model, before FSDP wrapping) + if self.is_main_process: + print("Applying LoRA to models...") + self.model.generator.model = self._configure_lora_for_model(self.model.generator.model, "generator") + + # Configure LoRA for fake_score if needed + if getattr(self.lora_config, 'apply_to_critic', True): + self.model.fake_score.model = self._configure_lora_for_model(self.model.fake_score.model, "fake_score") + if self.is_main_process: + print("LoRA applied to both generator and critic") + else: + if self.is_main_process: + print("LoRA applied to generator only") + + # 3. Load LoRA weights before FSDP wrapping (if a checkpoint is available). + # Priority: auto_resume -> legacy lora_ckpt -> initialized adapters. + lora_checkpoint_path = None + lora_checkpoint = None + if auto_resume and self.output_path: + latest_checkpoint = self.find_latest_checkpoint(self.output_path) + if latest_checkpoint: + lora_checkpoint_path = latest_checkpoint + if self.is_main_process: + print(f"Auto resume: Found LoRA checkpoint at {lora_checkpoint_path}") + else: + if self.is_main_process: + print("Auto resume: No LoRA checkpoint found in logdir") + elif auto_resume: + if self.is_main_process: + print("Auto resume enabled but no logdir specified for LoRA") + else: + if self.is_main_process: + print("Auto resume disabled for LoRA") + + if lora_checkpoint_path is not None: + lora_checkpoint = torch.load(lora_checkpoint_path, map_location="cpu") + elif getattr(config, "lora_ckpt", None): + lora_checkpoint_path = config.lora_ckpt + lora_checkpoint = torch.load(lora_checkpoint_path, map_location="cpu") + if self.is_main_process: + print(f"Using legacy lora_ckpt: {lora_checkpoint_path}") + elif self.is_main_process: + print("No LoRA checkpoint specified, starting LoRA training from scratch") + + # Load LoRA checkpoint (before FSDP wrapping) + if lora_checkpoint is not None: + if self.is_main_process: + print(f"Loading LoRA checkpoint from {lora_checkpoint_path} (before FSDP wrapping)") + + if "generator_lora" not in lora_checkpoint: + raise ValueError(f"LoRA checkpoint {lora_checkpoint_path} is not a valid LoRA checkpoint. " + f"Found keys: {list(lora_checkpoint.keys())}") + + if self.is_main_process: + print(f"Loading LoRA generator weights: {len(lora_checkpoint['generator_lora'])} keys in checkpoint") + peft.set_peft_model_state_dict(self.model.generator.model, lora_checkpoint["generator_lora"]) + del lora_checkpoint["generator_lora"] + + if getattr(self.lora_config, 'apply_to_critic', True): + if "critic_lora" not in lora_checkpoint: + raise ValueError(f"LoRA checkpoint {lora_checkpoint_path} is missing critic_lora.") + if self.is_main_process: + print(f"Loading LoRA critic weights: {len(lora_checkpoint['critic_lora'])} keys in checkpoint") + peft.set_peft_model_state_dict(self.model.fake_score.model, lora_checkpoint["critic_lora"]) + del lora_checkpoint["critic_lora"] + gc.collect() + + if "step" in lora_checkpoint: + self.step = lora_checkpoint["step"] + if self.is_main_process: + print(f"Resuming LoRA training from step {self.step}") + else: + if self.is_main_process: + print("No LoRA checkpoint to load, starting from scratch") + + # Materialize quantized inference-only weights before FSDP can expose + # sharded 1D parameter views. The student/critic are materialized only + # in LoRA mode because their base weights are frozen after adapters. + if self.generator_quant and self.is_lora_enabled: + self._materialize_quantized_model_before_fsdp( + self.model.generator.model, + "Generator", + cache_transposed_weights=True, + ) + + apply_lora_to_critic = getattr(self.lora_config, "apply_to_critic", True) if self.lora_config else False + if self.fake_score_quant and self.is_lora_enabled and apply_lora_to_critic: + self._materialize_quantized_model_before_fsdp( + self.model.fake_score.model, + "Fake_score", + cache_transposed_weights=True, + ) + + if self.real_score_quant and self.real_score_quant_materialize: + self._materialize_quantized_model_before_fsdp( + self.model.real_score.model, + "Real_score", + cache_transposed_weights=False, + ) + + self.model.generator = fsdp_wrap( + self.model.generator, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.generator_fsdp_wrap_strategy + ) + + self.model.real_score = fsdp_wrap( + self.model.real_score, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.real_score_fsdp_wrap_strategy + ) + + self.model.fake_score = fsdp_wrap( + self.model.fake_score, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.fake_score_fsdp_wrap_strategy + ) + + self.model.text_encoder = fsdp_wrap( + self.model.text_encoder, + sharding_strategy=config.sharding_strategy, + mixed_precision=config.mixed_precision, + wrap_strategy=config.text_encoder_fsdp_wrap_strategy, + cpu_offload=getattr(config, "text_encoder_cpu_offload", False) + ) + self.model.vae = self.model.vae.to( + device=self.device, dtype=torch.bfloat16 if config.mixed_precision else torch.float32) + + # Step 3: Set up EMA parameter containers + rename_param = ( + lambda name: name.replace("_fsdp_wrapped_module.", "") + .replace("_checkpoint_wrapped_module.", "") + .replace("_orig_mod.", "") + ) + self.name_to_trainable_params = {} + for n, p in self.model.generator.named_parameters(): + if not p.requires_grad: + continue + + renamed_n = rename_param(n) + self.name_to_trainable_params[renamed_n] = p + ema_weight = config.ema_weight + self.generator_ema = None + if (ema_weight is not None) and (ema_weight > 0.0): + if self.is_lora_enabled: + if self.is_main_process: + print(f"EMA disabled in LoRA mode (LoRA provides efficient parameter updates without EMA)") + self.generator_ema = None + else: + print(f"Setting up EMA with weight {ema_weight}") + self.generator_ema = EMA_FSDP(self.model.generator, decay=ema_weight) + + # Step 4: Initialize the optimizer + self.generator_optimizer = torch.optim.AdamW( + [param for param in self.model.generator.parameters() + if param.requires_grad], + lr=config.lr, + betas=(config.beta1, config.beta2), + weight_decay=config.weight_decay + ) + + self.critic_optimizer = torch.optim.AdamW( + [param for param in self.model.fake_score.parameters() + if param.requires_grad], + lr=config.lr_critic if hasattr(config, "lr_critic") else config.lr, + betas=(config.beta1_critic, config.beta2_critic), + weight_decay=config.weight_decay + ) + + # Step 5: Initialize the dataloader + self.use_backward_simulation = getattr(config, "backward_simulation", True) + + model_name = config.model_kwargs.model_name + frame_raw_height = list(config.image_or_video_shape)[3] * wan_default_config[model_name]["spatial_compression_ratio"] + frame_raw_width = list(config.image_or_video_shape)[4] * wan_default_config[model_name]["spatial_compression_ratio"] + num_frame_per_block = getattr(config, "num_frame_per_block", 1) + self.fps = wan_default_config[model_name].get("fps", 16) + + latent_frames_for_dataset = list(config.image_or_video_shape)[1] + num_training_frames = getattr(config, "num_training_frames", latent_frames_for_dataset) + assert latent_frames_for_dataset >= num_training_frames, ( + f"image_or_video_shape[1] ({latent_frames_for_dataset}) must be >= " + f"num_training_frames ({num_training_frames}), otherwise the dataset " + f"will not provide enough prompts for the rollout." + ) + total_frames = (latent_frames_for_dataset - 1) * wan_default_config[model_name]["temporal_compression_ratio"] + 1 + if dist.get_rank() == 0: + print(f"[Dataset] latent_frames_for_dataset={latent_frames_for_dataset}, total_frames={total_frames}") + + temporal_compression_ratio = wan_default_config[model_name]["temporal_compression_ratio"] + first_chunk_frames = 1 + (num_frame_per_block - 1) * temporal_compression_ratio + subsequent_chunk_frames = num_frame_per_block * temporal_compression_ratio + num_blocks = 1 + (total_frames - first_chunk_frames) // subsequent_chunk_frames + if not getattr(config, "generator_is_causal", True): + num_blocks = 1 + + chunks_per_shot = getattr(config, "chunks_per_shot", 0) + scene_cut_prefix = getattr(config, "scene_cut_prefix", DEFAULT_SCENE_CUT_PREFIX) + single_video_only = getattr(config, "uniform_prompt", False) + allow_padding = getattr(config, "allow_padding", False) + min_latent_frames = getattr(config, "min_latent_frames", 0) + dataset_sample_warning_seconds = getattr(config, "dataset_sample_warning_seconds", 60.0) + dataset_sample_warning_interval_seconds = getattr( + config, "dataset_sample_warning_interval_seconds", 60.0 + ) + + if self.use_backward_simulation and not self.config.i2v: + dataset = MultiTextConcatDataset( + data_path=config.data_path, + num_blocks=num_blocks, + chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + ) + collate_fn = eval_collate_fn + if dist.get_rank() == 0: + print(f"[backward_simulation] Using MultiTextConcatDataset: " + f"data_path={config.data_path}, num_blocks={num_blocks}, " + f"chunks_per_shot={chunks_per_shot}") + else: + dataset = MultiVideoConcatDataset( + data_dir=config.data_path, + video_size=(frame_raw_height, frame_raw_width), + total_frames=total_frames, + deterministic=False, + num_frame_per_block=num_frame_per_block, + temporal_compression_ratio=temporal_compression_ratio, + target_fps=self.fps, + allow_padding=allow_padding, + min_latent_frames=min_latent_frames, + single_video_only=single_video_only, + independent_first_frame=getattr(config, "independent_first_frame", False), + return_image=getattr(config, "i2v", False), + max_chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + sample_warning_seconds=dataset_sample_warning_seconds, + sample_warning_interval_seconds=dataset_sample_warning_interval_seconds, + ) + collate_fn = multi_video_collate_fn + if dist.get_rank() == 0 and single_video_only: + print(f"[uniform_prompt] single_video_only enabled: each sample uses one video only") + random_seed = int(time.time()) % (2**31) * dist.get_rank() + sampler = torch.utils.data.distributed.DistributedSampler( + dataset, shuffle=True, drop_last=True, seed=random_seed) + dataloader = torch.utils.data.DataLoader( + dataset, batch_size=config.batch_size, sampler=sampler, + num_workers=2, prefetch_factor=1, pin_memory=False, + persistent_workers=False, collate_fn=collate_fn, + ) + + if dist.get_rank() == 0: + print("DATASET SIZE %d" % len(dataset)) + self.dataloader = cycle(dataloader) + + # Step 6: Initialize the validation dataloader for visualization (fixed prompts) + self.fixed_vis_batch = None + self.vis_interval = section_get(config, "evaluation", "interval", getattr(config, "vis_interval", -1)) + configured_vis_lengths = section_get(config, "evaluation", "num_frames", getattr(config, "vis_video_lengths", [])) + self.save_vis_latents_only = section_get( + config, + "evaluation", + "save_latents_only", + getattr(config, "return_latents", True), + aliases=("return_latents", "save_latent_only"), + ) + if isinstance(configured_vis_lengths, int): + configured_vis_lengths = [configured_vis_lengths] + if self.vis_interval > 0 and len(configured_vis_lengths) > 0: + # Determine validation data path + val_data_path = ( + getattr(config, "eval_data_path", None) + or getattr(config, "val_data_path", None) + or config.data_path + ) + + if self.config.i2v: + val_dataset = MultiVideoConcatDataset( + data_dir=val_data_path, + video_size=(frame_raw_height, frame_raw_width), + total_frames=total_frames, + deterministic=True, + num_frame_per_block=num_frame_per_block, + temporal_compression_ratio=temporal_compression_ratio, + target_fps=self.fps, + allow_padding=allow_padding, + min_latent_frames=min_latent_frames, + single_video_only=single_video_only, + independent_first_frame=getattr(config, "independent_first_frame", False), + return_image=True, + max_chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + sample_warning_seconds=dataset_sample_warning_seconds, + sample_warning_interval_seconds=dataset_sample_warning_interval_seconds, + ) + val_collate_fn = multi_video_collate_fn + else: + val_dataset = MultiTextConcatDataset( + data_path=val_data_path, + num_blocks=num_blocks, + chunks_per_shot=chunks_per_shot, + scene_cut_prefix=scene_cut_prefix, + deterministic=True, + ) + val_collate_fn = eval_collate_fn + + if dist.get_rank() == 0: + print("VAL DATASET SIZE %d" % len(val_dataset)) + + sampler = torch.utils.data.distributed.DistributedSampler( + val_dataset, shuffle=False, drop_last=False) + val_dataloader = torch.utils.data.DataLoader( + val_dataset, + batch_size=section_get(config, "evaluation", "val_batch_size", getattr(config, "val_batch_size", 1)), + sampler=sampler, + num_workers=0, + collate_fn=val_collate_fn, + ) + + # Take the first batch as fixed visualization batch + try: + self.fixed_vis_batch = next(iter(val_dataloader)) + except StopIteration: + self.fixed_vis_batch = None + + # ---------------------------------------------------------------------------------------------------------- + # Visualization settings + # ---------------------------------------------------------------------------------------------------------- + # List of video lengths to visualize, e.g. [8, 16, 32] + self.vis_video_lengths = configured_vis_lengths + for _vl in self.vis_video_lengths: + assert _vl <= latent_frames_for_dataset, ( + f"vis_video_lengths entry {_vl} exceeds " + f"image_or_video_shape[1] ({latent_frames_for_dataset}), " + f"the dataset will not provide enough prompts for visualization." + ) + + if self.vis_interval > 0 and len(self.vis_video_lengths) > 0: + self._setup_visualizer() + + if not self.is_lora_enabled: + # ================================= Standard (non-LoRA) model logic ================================= + checkpoint_path = None + + if auto_resume and self.output_path: + # Auto resume: find latest checkpoint in logdir + latest_checkpoint = self.find_latest_checkpoint(self.output_path) + if latest_checkpoint: + checkpoint_path = latest_checkpoint + if self.is_main_process: + print(f"Auto resume: Found latest checkpoint at {checkpoint_path}") + else: + if self.is_main_process: + print("Auto resume: No checkpoint found in logdir, starting from scratch") + elif auto_resume: + if self.is_main_process: + print("Auto resume enabled but no logdir specified, starting from scratch") + else: + if self.is_main_process: + print("Auto resume disabled, starting from scratch") + + if checkpoint_path is None: + if getattr(config, "generator_ckpt", False): + # Explicit checkpoint path provided + checkpoint_path = config.generator_ckpt + if self.is_main_process: + print(f"Using explicit checkpoint: {checkpoint_path}") + + # Pre-load fake_score from a separate checkpoint if specified. + # This will be overwritten if checkpoint_path also contains "critic". + fake_score_ckpt = getattr(config, "fake_score_ckpt", None) + if fake_score_ckpt: + if self.is_main_process: + print(f"Loading fake_score from {fake_score_ckpt}") + fake_ckpt = torch.load(fake_score_ckpt, map_location="cpu") + if "critic" in fake_ckpt: + self.model.fake_score.load_state_dict(fake_ckpt["critic"], strict=True) + elif "fake_score" in fake_ckpt: + self.model.fake_score.load_state_dict(fake_ckpt["fake_score"], strict=True) + elif "model" in fake_ckpt: + self.model.fake_score.load_state_dict(fake_ckpt["model"], strict=True) + else: + if self.is_main_process: + print(f"No recognized key in {fake_score_ckpt}, treating as raw state_dict") + self.model.fake_score.load_state_dict(fake_ckpt, strict=True) + del fake_ckpt + gc.collect() + if self.is_main_process: + print(f"Successfully loaded fake_score from {fake_score_ckpt}") + + if checkpoint_path: + if self.is_main_process: + print(f"Loading checkpoint from {checkpoint_path}") + checkpoint = torch.load(checkpoint_path, map_location="cpu") + + # Load generator + if "generator" in checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {checkpoint_path}") + self.model.generator.load_state_dict(checkpoint["generator"], strict=True) + del checkpoint["generator"] + elif "model" in checkpoint: + if self.is_main_process: + print(f"Loading pretrained generator from {checkpoint_path}") + self.model.generator.load_state_dict(checkpoint["model"], strict=True) + del checkpoint["model"] + else: + if self.is_main_process: + print(f"No 'generator'/'model' key found in {checkpoint_path}, treating as raw state_dict") + self.model.generator.load_state_dict(checkpoint, strict=True) + + # Load critic + if "critic" in checkpoint: + if self.is_main_process: + print(f"Loading pretrained critic from {checkpoint_path}") + self.model.fake_score.load_state_dict(checkpoint["critic"], strict=True) + del checkpoint["critic"] + else: + if self.is_main_process: + print("Warning: Critic checkpoint not found.") + + # Load EMA + if "generator_ema" in checkpoint and self.generator_ema is not None: + if self.is_main_process: + print(f"Loading pretrained EMA from {checkpoint_path}") + self.generator_ema.load_state_dict(checkpoint["generator_ema"]) + del checkpoint["generator_ema"] + else: + if self.is_main_process: + print("Warning: EMA checkpoint not found or EMA not initialized.") + + gc.collect() + + # For auto resume, always resume full training state + # Load optimizers + if "generator_optimizer" in checkpoint: + if self.is_main_process: + print("Resuming generator optimizer...") + gen_osd = FSDP.optim_state_dict_to_load( + self.model.generator, # FSDP root module + self.generator_optimizer, # newly created optimizer + checkpoint["generator_optimizer"] # optimizer state dict at save time + ) + del checkpoint["generator_optimizer"] + self.generator_optimizer.load_state_dict(gen_osd) + del gen_osd + else: + if self.is_main_process: + print("Warning: Generator optimizer checkpoint not found.") + + if "critic_optimizer" in checkpoint: + if self.is_main_process: + print("Resuming critic optimizer...") + crit_osd = FSDP.optim_state_dict_to_load( + self.model.fake_score, + self.critic_optimizer, + checkpoint["critic_optimizer"] + ) + del checkpoint["critic_optimizer"] + self.critic_optimizer.load_state_dict(crit_osd) + del crit_osd + else: + if self.is_main_process: + print("Warning: Critic optimizer checkpoint not found.") + + # Load training step + if "step" in checkpoint: + self.step = checkpoint["step"] + if self.is_main_process: + print(f"Resuming from step {self.step}") + else: + if self.is_main_process: + print("Warning: Step not found in checkpoint, starting from step 0.") + del checkpoint + gc.collect() + + # Load real_score from a separate checkpoint (independent of auto_resume) + real_score_ckpt = getattr(config, "real_score_ckpt", None) + if real_score_ckpt and not (self.real_score_quant and self.real_score_quant_materialize): + if self.is_main_process: + print(f"Loading real_score from {real_score_ckpt}") + real_ckpt = torch.load(real_score_ckpt, map_location="cpu") + if "generator" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["generator"], strict=True) + elif "critic" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["critic"], strict=True) + elif "model" in real_ckpt: + self.model.real_score.load_state_dict(real_ckpt["model"], strict=True) + else: + if self.is_main_process: + print(f"No recognized key in {real_score_ckpt}, treating as raw state_dict") + self.model.real_score.load_state_dict(real_ckpt, strict=True) + del real_ckpt + gc.collect() + if self.is_main_process: + print(f"Successfully loaded real_score from {real_score_ckpt}") + + ############################################################################################################## + + # Let's delete EMA params for early steps to save some computes at training and inference + # Note: This should be done after potential resume to avoid accidentally deleting resumed EMA + if self.step < config.ema_start_step: + self.generator_ema = None + + self.max_grad_norm_generator = getattr(config, "max_grad_norm_generator", 10.0) + self.max_grad_norm_critic = getattr(config, "max_grad_norm_critic", 10.0) + self.gradient_accumulation_steps = getattr(config, "gradient_accumulation_steps", 1) + self.previous_time = None + + if self.is_main_process: + print(f"Gradient accumulation steps: {self.gradient_accumulation_steps}") + if self.gradient_accumulation_steps > 1: + print(f"Effective batch size: {config.batch_size * self.gradient_accumulation_steps * self.world_size}") + + def _move_optimizer_to_device(self, optimizer, device): + """Move optimizer state to the specified device.""" + for state in optimizer.state.values(): + for k, v in state.items(): + if isinstance(v, torch.Tensor): + state[k] = v.to(device) + + def _materialize_quantized_model_before_fsdp( + self, + model, + model_label, + cache_transposed_weights=False, + ): + """Materialize NVFP4 weights before FSDP wraps quantized modules.""" + from utils.quant import _materialize_quantized_weights_for_inference + + current_rank = dist.get_rank() + target_device = torch.device("cuda", torch.cuda.current_device()) + if self.is_main_process: + print(f"[NVFP4] Materializing {model_label} sequentially before FSDP") + + for materialize_rank in range(self.world_size): + if current_rank == materialize_rank: + first_param = next(model.parameters(), None) + model_device = first_param.device if first_param is not None else target_device + if model_device != target_device: + model.to(target_device) + mat_modules, master_bytes, quant_bytes = _materialize_quantized_weights_for_inference( + model, + target_device=target_device, + cache_transposed_weights=cache_transposed_weights, + ) + if self.is_main_process: + print( + f"[NVFP4] {model_label} materialized: {len(mat_modules)} modules, " + f"master_weight={master_bytes / (1024**3):.3f} GiB freed, " + f"quantized_weight={quant_bytes / (1024**3):.3f} GiB" + ) + gc.collect() + dist.barrier() + + def find_latest_checkpoint(self, logdir): + """Find the latest checkpoint in the logdir.""" + if not os.path.exists(logdir): + return None + + checkpoint_dirs = [] + for item in os.listdir(logdir): + if item.startswith("checkpoint_model_") and os.path.isdir(os.path.join(logdir, item)): + try: + # Extract step number from directory name + step_str = item.replace("checkpoint_model_", "") + step = int(step_str) + checkpoint_path = os.path.join(logdir, item, "model.pt") + if os.path.exists(checkpoint_path): + checkpoint_dirs.append((step, checkpoint_path)) + except ValueError: + continue + + if not checkpoint_dirs: + return None + + # Sort by step number and return the latest one + checkpoint_dirs.sort(key=lambda x: x[0]) + latest_step, latest_path = checkpoint_dirs[-1] + return latest_path + + def get_all_checkpoints(self, logdir): + """Get all checkpoints in the logdir sorted by step number.""" + if not os.path.exists(logdir): + return [] + + checkpoint_dirs = [] + for item in os.listdir(logdir): + if item.startswith("checkpoint_model_") and os.path.isdir(os.path.join(logdir, item)): + try: + # Extract step number from directory name + step_str = item.replace("checkpoint_model_", "") + step = int(step_str) + checkpoint_dir_path = os.path.join(logdir, item) + checkpoint_file_path = os.path.join(checkpoint_dir_path, "model.pt") + if os.path.exists(checkpoint_file_path): + checkpoint_dirs.append((step, checkpoint_dir_path, item)) + except ValueError: + continue + + # Sort by step number (ascending order) + checkpoint_dirs.sort(key=lambda x: x[0]) + return checkpoint_dirs + + def cleanup_old_checkpoints(self, logdir, max_checkpoints): + """Remove old checkpoints if the number exceeds max_checkpoints. + + Only the main process performs the actual deletion to avoid race conditions + in distributed training. + """ + if max_checkpoints <= 0: + return + + # Only main process should perform cleanup to avoid race conditions + if not self.is_main_process: + return + + checkpoints = self.get_all_checkpoints(logdir) + if len(checkpoints) > max_checkpoints: + # Calculate how many to remove + num_to_remove = len(checkpoints) - max_checkpoints + checkpoints_to_remove = checkpoints[:num_to_remove] # Remove oldest ones + + print(f"Checkpoint cleanup: Found {len(checkpoints)} checkpoints, removing {num_to_remove} oldest ones (keeping {max_checkpoints})") + + import shutil + removed_count = 0 + for step, checkpoint_dir_path, dir_name in checkpoints_to_remove: + try: + print(f" Removing: {dir_name} (step {step})") + shutil.rmtree(checkpoint_dir_path) + removed_count += 1 + except Exception as e: + print(f" Warning: Failed to remove checkpoint {dir_name}: {e}") + + print(f"Checkpoint cleanup completed: removed {removed_count}/{num_to_remove} old checkpoints") + else: + if len(checkpoints) > 0: + print(f"Checkpoint cleanup: Found {len(checkpoints)} checkpoints (max: {max_checkpoints}, no cleanup needed)") + + def save(self): + print("Start gathering distributed model states...") + + if self.is_lora_enabled: + gen_lora_sd = self._gather_lora_state_dict( + self.model.generator.model) + crit_lora_sd = self._gather_lora_state_dict( + self.model.fake_score.model) + + state_dict = { + "generator_lora": gen_lora_sd, + "critic_lora": crit_lora_sd, + "step": self.step, + } + else: + with FSDP.state_dict_type( + self.model.generator, + StateDictType.FULL_STATE_DICT, + FullStateDictConfig(rank0_only=True, offload_to_cpu=True), + FullOptimStateDictConfig(rank0_only=True, offload_to_cpu=True), + ): + generator_state_dict = self.model.generator.state_dict() + generator_opim_state_dict = FSDP.optim_state_dict(self.model.generator, + self.generator_optimizer) + + if dist.is_initialized(): + dist.barrier() + + with FSDP.state_dict_type( + self.model.fake_score, + StateDictType.FULL_STATE_DICT, + FullStateDictConfig(rank0_only=True, offload_to_cpu=True), + FullOptimStateDictConfig(rank0_only=True, offload_to_cpu=True), + ): + critic_state_dict = self.model.fake_score.state_dict() + critic_opim_state_dict = FSDP.optim_state_dict(self.model.fake_score, + self.critic_optimizer) + + if self.config.ema_start_step < self.step and self.generator_ema is not None: + state_dict = { + "generator": generator_state_dict, + "critic": critic_state_dict, + "generator_ema": self.generator_ema.state_dict(), + "generator_optimizer": generator_opim_state_dict, + "critic_optimizer": critic_opim_state_dict, + "step": self.step, + } + else: + state_dict = { + "generator": generator_state_dict, + "critic": critic_state_dict, + "generator_optimizer": generator_opim_state_dict, + "critic_optimizer": critic_opim_state_dict, + "step": self.step, + } + + if self.is_main_process: + checkpoint_dir = os.path.join(self.output_path, f"checkpoint_model_{self.step:06d}") + os.makedirs(checkpoint_dir, exist_ok=True) + checkpoint_file = os.path.join(checkpoint_dir, "model.pt") + torch.save(state_dict, checkpoint_file) + print("Model saved to", checkpoint_file) + + # Cleanup old checkpoints if max_checkpoints is set + max_checkpoints = getattr(self.config, "max_checkpoints", 0) + if max_checkpoints > 0: + self.cleanup_old_checkpoints(self.output_path, max_checkpoints) + + # Keep all ranks in sync so non-rank0 workers don't kick off the next + # training iteration (and trigger NCCL watchdog timeouts) while rank0 + # is still writing the checkpoint to disk. + if dist.is_initialized(): + dist.barrier() + + torch.cuda.empty_cache() + import gc + gc.collect() + + def fwdbwd_one_step(self, batch, train_generator): + self.model.eval() # prevent any randomness (e.g. dropout) + + if self.step % 5 == 0: + torch.cuda.empty_cache() + + # Step 1: Get the next batch of text prompts + text_prompts = batch["prompts"] + + if getattr(self.config, "uniform_prompt", False): + text_prompts = [[sample[0]] * len(sample) for sample in text_prompts] + + batch_size = len(text_prompts) + image_or_video_shape = list(self.config.image_or_video_shape) + image_or_video_shape[0] = batch_size + + # Step 1.5: Prepare clean_latent and initial_latent for off-policy mode + clean_latent = None + initial_latent = None + if not self.use_backward_simulation: + if not getattr(self.config, "load_raw_video", False): + clean_latent = batch["ode_latent"][:, -1].to( + device=self.device, dtype=self.dtype) + else: + frames = batch["frames"].to( + device=self.device, dtype=self.dtype) + with torch.no_grad(): + clean_latent = self.model.vae.encode_to_latent(frames).to( + device=self.device, dtype=self.dtype) + if getattr(self.config, "i2v", False): + initial_latent = clean_latent[:, 0:1] + elif getattr(self.config, "i2v", False): + image = batch.get("image", None) + if image is None: + raise ValueError("DMD i2v backward-simulation requires batch['image'].") + image = image.to(device=self.device, dtype=self.dtype) + if image.ndim == 4: + image = image.unsqueeze(2) + elif image.ndim != 5: + raise ValueError( + f"Expected i2v image with shape [B,C,H,W] or [B,C,T,H,W], got {tuple(image.shape)}" + ) + with torch.no_grad(): + initial_latent = self.model.vae.encode_to_latent(image).to( + device=self.device, dtype=self.dtype) + + # Step 2: Extract the conditional infos + with torch.no_grad(): + # MultiVideoConcatDataset returns List[List[str]], flatten to List[str] + text_prompts_flat = [p for sublist in text_prompts for p in sublist] + conditional_dict = self.model.text_encoder( + text_prompts=text_prompts_flat) + + if not getattr(self, "unconditional_dict", None): + unconditional_dict = self.model.text_encoder( + text_prompts=[self.config.negative_prompt] * batch_size) + unconditional_dict = {k: v.detach() + for k, v in unconditional_dict.items()} + self.unconditional_dict = unconditional_dict + else: + unconditional_dict = self.unconditional_dict + + use_scene_cut_mask = ( + section_get(self.config, "inference", "multi_shot_sink", False) + or section_get( + self.config, + "inference", + "multi_shot_rope_offset", + 0.0, + ) != 0.0 + ) + if use_scene_cut_mask: + _prefix = getattr(self.config, "scene_cut_prefix", DEFAULT_SCENE_CUT_PREFIX) + conditional_dict["scene_cut_mask"] = [ + p.startswith(_prefix) for p in text_prompts[0] + ] + + # Step 3: Store gradients for the generator (if training the generator) + if train_generator: + generator_loss, generator_log_dict = self.model.generator_loss( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + unconditional_dict=unconditional_dict, + clean_latent=clean_latent, + initial_latent=initial_latent + ) + + # Scale loss for gradient accumulation and backward + scaled_generator_loss = generator_loss / self.gradient_accumulation_steps + scaled_generator_loss.backward() + generator_log_dict.update({"generator_loss": generator_loss, + "generator_grad_norm": torch.tensor(0.0, device=self.device)}) + + return generator_log_dict + else: + generator_log_dict = {} + + critic_loss, critic_log_dict = self.model.critic_loss( + image_or_video_shape=image_or_video_shape, + conditional_dict=conditional_dict, + unconditional_dict=unconditional_dict, + clean_latent=clean_latent, + initial_latent=initial_latent + ) + + # Scale loss for gradient accumulation and backward + scaled_critic_loss = critic_loss / self.gradient_accumulation_steps + scaled_critic_loss.backward() + critic_log_dict.update({"critic_loss": critic_loss, + "critic_grad_norm": torch.tensor(0.0, device=self.device)}) + + return critic_log_dict + + def generate_video(self, pipeline, num_frames, prompts, image=None, latents_only=False): + batch_size = len(prompts) + if image is not None: + image = image.to(device=self.device, dtype=self.dtype) + if image.ndim == 4: + image = image.unsqueeze(2) + elif image.ndim != 5: + raise ValueError(f"Expected i2v image with shape [B,C,H,W] or [B,C,T,H,W], got {tuple(image.shape)}") + + # Encode the input image as the first latent + initial_latent = pipeline.vae.encode_to_latent(image).to(device=self.device, dtype=self.dtype) + if initial_latent.shape[0] != batch_size: + initial_latent = initial_latent.repeat(batch_size, 1, 1, 1, 1) + num_noise_frames = num_frames + if num_noise_frames <= initial_latent.shape[1]: + raise ValueError( + f"num_frames must exceed the i2v conditioning frames; " + f"got {num_frames} and {initial_latent.shape[1]}" + ) + sampled_noise = torch.randn( + [batch_size, num_noise_frames, self.config.image_or_video_shape[2], self.config.image_or_video_shape[3], self.config.image_or_video_shape[4]], + device=self.device, + dtype=self.dtype + ) + else: + initial_latent = None + sampled_noise = torch.randn( + [batch_size, num_frames, self.config.image_or_video_shape[2], self.config.image_or_video_shape[3], self.config.image_or_video_shape[4]], + device=self.device, + dtype=self.dtype + ) + with torch.no_grad(): + kwargs = dict(noise=sampled_noise, text_prompts=prompts) + if initial_latent is not None: + kwargs["initial_latent"] = initial_latent + kwargs["return_latents"] = latents_only + result = pipeline.inference(**kwargs) + if latents_only: + return result + video = result + current_video = video.permute(0, 1, 3, 4, 2).cpu().numpy() * 255.0 + if hasattr(pipeline, 'vae') and hasattr(pipeline.vae, 'model') and hasattr(pipeline.vae.model, 'clear_cache'): + pipeline.vae.model.clear_cache() + return current_video + + def train(self): + start_step = self.step + try: + while True: + # Check if we should train generator on this optimization step + TRAIN_GENERATOR = self.step % self.config.dfake_gen_update_ratio == 0 + + if TRAIN_GENERATOR: + self.generator_optimizer.zero_grad(set_to_none=True) + self.critic_optimizer.zero_grad(set_to_none=True) + + # Whole-cycle gradient accumulation loop + accumulated_generator_logs = [] + accumulated_critic_logs = [] + + for accumulation_step in range(self.gradient_accumulation_steps): + batch = next(self.dataloader) + + # Train generator (if needed) + if TRAIN_GENERATOR: + extra_gen = self.fwdbwd_one_step(batch, True) + accumulated_generator_logs.append(extra_gen) + + # Train critic + extra_crit = self.fwdbwd_one_step(batch, False) + accumulated_critic_logs.append(extra_crit) + + # Compute grad norm and update parameters + if TRAIN_GENERATOR: + generator_grad_norm = self.model.generator.clip_grad_norm_(self.max_grad_norm_generator) + generator_log_dict = merge_dict_list(accumulated_generator_logs) + generator_log_dict["generator_grad_norm"] = generator_grad_norm + + self.generator_optimizer.step() + if self.generator_ema is not None: + self.generator_ema.update(self.model.generator) + else: + generator_log_dict = {} + + critic_grad_norm = self.model.fake_score.clip_grad_norm_(self.max_grad_norm_critic) + critic_log_dict = merge_dict_list(accumulated_critic_logs) + critic_log_dict["critic_grad_norm"] = critic_grad_norm + + self.critic_optimizer.step() + + # Increment the step since we finished gradient update + self.step += 1 + + # Create EMA params (if not already created) + if (self.step >= self.config.ema_start_step) and \ + (self.generator_ema is None) and (self.config.ema_weight > 0): + if not self.is_lora_enabled: + self.generator_ema = EMA_FSDP(self.model.generator, decay=self.config.ema_weight) + if self.is_main_process: + print(f"EMA created at step {self.step} with weight {self.config.ema_weight}") + else: + if self.is_main_process: + print(f"EMA creation skipped at step {self.step} (disabled in LoRA mode)") + + # Save the model + if (not self.config.no_save) and (self.step - start_step) > 0 and self.step % self.config.log_iters == 0: + torch.cuda.empty_cache() + self.save() + torch.cuda.empty_cache() + + # Logging + if self.is_main_process: + wandb_loss_dict = {} + if TRAIN_GENERATOR and generator_log_dict: + wandb_loss_dict.update( + { + "generator_loss": generator_log_dict["generator_loss"].mean().item(), + "generator_grad_norm": generator_log_dict["generator_grad_norm"].mean().item(), + "dmdtrain_gradient_norm": generator_log_dict["dmdtrain_gradient_norm"].mean().item() + } + ) + + + wandb_loss_dict.update( + { + "critic_loss": critic_log_dict["critic_loss"].mean().item(), + "critic_grad_norm": critic_log_dict["critic_grad_norm"].mean().item() + } + ) + if not self.disable_wandb: + wandb.log(wandb_loss_dict, step=self.step) + + if self.step % self.config.gc_interval == 0: + if dist.get_rank() == 0: + logging.info("DistGarbageCollector: Running GC.") + gc.collect() + torch.cuda.empty_cache() + + if self.is_main_process: + current_time = time.time() + iteration_time = 0 if self.previous_time is None else current_time - self.previous_time + if not self.disable_wandb: + wandb.log({"per iteration time": iteration_time}, step=self.step) + self.previous_time = current_time + # Log training progress + if TRAIN_GENERATOR and generator_log_dict: + print(f"step {self.step}, per iteration time {iteration_time}, generator_loss {generator_log_dict['generator_loss'].mean().item()}, generator_grad_norm {generator_log_dict['generator_grad_norm'].mean().item()}, dmdtrain_gradient_norm {generator_log_dict['dmdtrain_gradient_norm'].mean().item()}, critic_loss {critic_log_dict['critic_loss'].mean().item()}, critic_grad_norm {critic_log_dict['critic_grad_norm'].mean().item()}") + else: + print(f"step {self.step}, per iteration time {iteration_time}, critic_loss {critic_log_dict['critic_loss'].mean().item()}, critic_grad_norm {critic_log_dict['critic_grad_norm'].mean().item()}") + + # ---------------------------------------- Visualization --------------------------------------------------- + + if self.vis_interval > 0 and (self.step % self.vis_interval == 0): + self._visualize() + + if self.step >= self.config.max_iters: + break + + except Exception as e: + print(f"[ERROR] [Rank {dist.get_rank()}] Training crashed at step {self.step} with exception: {e}") + print(f"[ERROR] [Rank {dist.get_rank()}] Exception traceback:", flush=True) + import traceback + traceback.print_exc() + + def _configure_lora_for_model(self, transformer, model_name): + """Configure LoRA for a WanDiffusionWrapper model""" + # Find all Linear modules in WanAttentionBlock modules + target_linear_modules = set() + + # Define the specific modules we want to apply LoRA to + all_causal = getattr(self.config, 'all_causal', False) + generator_is_causal = getattr(self.config, 'generator_is_causal', True) + if model_name == 'generator': + adapter_target_modules = ['CausalWanAttentionBlock'] if generator_is_causal else ['WanAttentionBlock'] + elif model_name == 'fake_score': + adapter_target_modules = ['CausalWanAttentionBlock'] if all_causal else ['WanAttentionBlock'] + else: + raise ValueError(f"Invalid model name: {model_name}") + + for name, module in transformer.named_modules(): + if module.__class__.__name__ in adapter_target_modules: + for full_submodule_name, submodule in module.named_modules(prefix=name): + if isinstance(submodule, torch.nn.Linear): + target_linear_modules.add(full_submodule_name) + + target_linear_modules = list(target_linear_modules) + + if self.is_main_process: + print(f"LoRA target modules for {model_name}: {len(target_linear_modules)} Linear layers") + if getattr(self.lora_config, 'verbose', False): + for module_name in sorted(target_linear_modules): + print(f" - {module_name}") + + # Create LoRA config + adapter_type = self.lora_config.get('type', 'lora') + if adapter_type == 'lora': + peft_config = peft.LoraConfig( + r=self.lora_config.get('rank', 16), + lora_alpha=self.lora_config.get('alpha', None) or self.lora_config.get('rank', 16), + lora_dropout=self.lora_config.get('dropout', 0.0), + target_modules=target_linear_modules, + ) + else: + raise NotImplementedError(f'Adapter type {adapter_type} is not implemented') + + # Apply LoRA to the transformer + lora_model = peft.get_peft_model(transformer, peft_config) + + if self.is_main_process: + print('peft_config', peft_config) + lora_model.print_trainable_parameters() + + return lora_model + + + def _gather_lora_state_dict(self, lora_model): + "On rank-0, gather FULL_STATE_DICT, then filter only LoRA weights" + with FSDP.state_dict_type( + lora_model, # lora_model contains nested FSDP submodules + StateDictType.FULL_STATE_DICT, + FullStateDictConfig(rank0_only=True, offload_to_cpu=True) + ): + full = lora_model.state_dict() + return get_peft_model_state_dict(lora_model, state_dict=full) + + # -------------------------------------------------------------------------------------------------------------- + # Visualization helpers + # -------------------------------------------------------------------------------------------------------------- + + def _setup_visualizer(self): + """Initialize the inference pipeline for visualization on CPU, to be moved to GPU only when needed.""" + + generator_is_causal = getattr(self.config, "generator_is_causal", True) + + if not generator_is_causal: + # Bidirectional generator: no pipeline object needed, + # _visualize_bidirectional handles the loop directly. + self.vis_pipeline = "bidirectional" + else: + from copy import deepcopy + vis_config = deepcopy(self.config) + if "guidance_scale" not in getattr(vis_config, "inference", {}): + vis_config.guidance_scale = 1.0 + if section_get(self.config, "inference", "sampling_steps", None) is None: + vis_config.sampling_steps = 50 + self.vis_pipeline = CausalDiffusionInferencePipeline( + args=vis_config, + device=self.device, + generator=self.model.generator, + text_encoder=self.model.text_encoder, + vae=self.model.vae) + + # Visualization output directory (default: /vis) + self.vis_output_dir = os.path.join(self.output_path, "vis") + os.makedirs(self.vis_output_dir, exist_ok=True) + if section_get(self.config, "evaluation", "use_ema", getattr(self.config, "vis_ema", False)): + raise NotImplementedError("Visualization with EMA is not implemented") + + @torch.no_grad() + def _generate_bidirectional(self, num_frames, prompts): + """Full-sequence bidirectional multi-step denoising for visualization.""" + from wan_5b.utils.fm_solvers_unipc import FlowUniPCMultistepScheduler + + batch_size = len(prompts) + # Flatten prompts (List[List[str]] → List[str], take first per sample) + text_prompts_flat = [p[0] if isinstance(p, list) else p for p in prompts] + + conditional_dict = self.model.text_encoder(text_prompts=text_prompts_flat) + + noise = torch.randn( + [batch_size, num_frames, + self.config.image_or_video_shape[2], + self.config.image_or_video_shape[3], + self.config.image_or_video_shape[4]], + device=self.device, dtype=self.dtype) + + sampling_steps = section_get(self.config, "inference", "sampling_steps", getattr(self.config, "sampling_steps", 50)) + scheduler = self.model.generator.get_scheduler() + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=scheduler.num_train_timesteps, + shift=1, use_dynamic_shifting=False) + sample_scheduler.set_timesteps(sampling_steps, device=self.device, + shift=scheduler.shift) + + latents = noise + for t in sample_scheduler.timesteps: + timestep = t * torch.ones( + [batch_size, num_frames], device=self.device, dtype=torch.float32) + flow_pred, _ = self.model.generator( + noisy_image_or_video=latents, + conditional_dict=conditional_dict, + timestep=timestep, + ) + latents = sample_scheduler.step(flow_pred, t, latents, return_dict=False)[0] + + return latents + + def _visualize(self): + """Generate validation samples to monitor training progress.""" + if self.vis_interval <= 0 or not hasattr(self, "vis_pipeline"): + return False + + # FSDP forward includes communication, so every rank must enter + # visualization together; running rank 0 alone would hang. + + if not getattr(self, "fixed_vis_batch", None): + print("[Warning] No fixed validation batch available for visualization.") + return False + + step_vis_dir = os.path.join(self.vis_output_dir, f"step_{self.step:07d}") + os.makedirs(step_vis_dir, exist_ok=True) + batch = self.fixed_vis_batch + prompts = batch["prompts"] + + image = None + if self.config.i2v and ("image" in batch): + image = batch["image"] + + mode_info = "" + if self.is_lora_enabled: + mode_info = "_lora" + if self.is_main_process: + print(f"Generating latents in LoRA mode (step {self.step})") + + for vid_len in self.vis_video_lengths: + print(f"Generating validation samples of length {vid_len}") + if self.vis_pipeline == "bidirectional": + samples = self._generate_bidirectional(vid_len, prompts) + if not self.save_vis_latents_only: + samples = self.model.vae.decode_to_pixel(samples) + samples = (samples * 0.5 + 0.5).clamp(0, 1) + samples = samples.permute(0, 1, 3, 4, 2).cpu().numpy() * 255.0 + else: + samples = self.generate_video( + self.vis_pipeline, + vid_len, + prompts, + image=image, + latents_only=self.save_vis_latents_only, + ) + + for idx in range(samples.shape[0]): + if self.save_vis_latents_only: + sample_name = f"latents_step_{self.step:07d}_rank_{dist.get_rank()}_sample_{idx}_len_{vid_len}{mode_info}.pt" + out_path = os.path.join(step_vis_dir, sample_name) + torch.save(samples[idx].cpu(), out_path) + else: + sample_name = f"video_step_{self.step:07d}_rank_{dist.get_rank()}_sample_{idx}_len_{vid_len}{mode_info}.mp4" + out_path = os.path.join(step_vis_dir, sample_name) + write_video(out_path, torch.as_tensor(samples[idx]).to(torch.uint8), fps=24) + + del samples + torch.cuda.empty_cache() + + # Save prompts for reference + prompt_path = os.path.join( + step_vis_dir, + f"prompts_rank_{dist.get_rank()}.txt", + ) + with open(prompt_path, "w") as f: + for i, p in enumerate(prompts): + f.write(f"[sample {i}] {p}\n") + + # Release KV / cross-attention caches allocated during inference to prevent OOM + # when training resumes. These caches can consume ~20+ GB of GPU memory. + if hasattr(self.vis_pipeline, 'clear_cache'): + self.vis_pipeline.clear_cache() + + torch.cuda.empty_cache() + import gc + gc.collect() + + # Synchronize all ranks so that a crashed rank is detected immediately + # rather than causing a 10-minute NCCL timeout on the next training collective. + dist.barrier() + + return True diff --git a/trainer/sp_helper.py b/trainer/sp_helper.py new file mode 100644 index 0000000..b3f30ee --- /dev/null +++ b/trainer/sp_helper.py @@ -0,0 +1,18 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +"""Compatibility exports for LongLive SP training helpers.""" + +from wan_5b.distributed.sp_training import ( + DEFAULT_SP_VAE_HALO_LATENTS, + SequenceParallelHelper, +) + +__all__ = ["DEFAULT_SP_VAE_HALO_LATENTS", "SequenceParallelHelper"] diff --git a/utils/DATASET_PROMPT_LOGIC.md b/utils/DATASET_PROMPT_LOGIC.md new file mode 100644 index 0000000..37a0081 --- /dev/null +++ b/utils/DATASET_PROMPT_LOGIC.md @@ -0,0 +1,243 @@ +# Dataset Prompt 分配逻辑说明 + +本文档说明 `MultiTextConcatDataset`(纯文本)和 `MultiVideoConcatDataset`(视频训练)在不同配置下产生 `prompts` 的行为。 + +--- + +## 架构总览 + +| 使用场景 | Dataset 类 | 输出 | +|---|---|---| +| diffusion.py 训练 | `MultiVideoConcatDataset` | `frames` + `prompts` | +| diffusion.py 推理 | `MultiTextConcatDataset` | `prompts` | +| distillation.py 训练(backward_sim) | `MultiTextConcatDataset` | `prompts` | +| distillation.py 可视化 | `MultiTextConcatDataset` | `prompts` | +| inference.py | `MultiTextConcatDataset` | `prompts` | + +--- + +## 一、MultiTextConcatDataset(纯文本) + +### 关键参数 + +| 参数 | 含义 | +|---|---| +| `num_blocks` | 输出 prompt 列表的固定长度 | +| `chunks_per_shot` | 每个 shot 重复的 block 数(0=使用 even_durations 均分) | +| `scene_cut_prefix` | 切镜标记前缀,默认 `"The scene transitions. "` | + +简写约定:`0`, `1`, `2` 表示不同 caption;`p+X` 表示 `scene_cut_prefix + X` + +### 1. txt 模式(data_path 指向 .txt 文件) + +每行一个 caption,每个 sample 取 `idx` 行的 caption,重复 `num_blocks` 次。 +**不加** scene_cut_prefix(单 shot 语义)。 + +``` +data_path="prompts.txt", line[3]="A dog runs", num_blocks=12 +→ [A, A, A, A, A, A, A, A, A, A, A, A] +``` + +无论 `chunks_per_shot` 设为多少,txt 模式始终单 shot 重复。 + +### 2. 目录模式(data_path 指向目录) + +读取 `caption//*.json`(不需要 `video/` 目录)。 +每个 JSON 的 `caption` 字段作为一个 shot 的文本。 + +#### Shot duration 三级 fallback + +按优先级决定每个 shot 占多少个 block: + +1. **`shot_durations.txt`**(per-folder 文件)— 每行或逗号分隔的整数 +2. **`chunks_per_shot`**(全局 config)— 所有 shot 统一重复固定次数 +3. **`_even_durations`**(均分)— 将 `num_blocks` 均匀分给所有 caption + +#### 长度处理 + +输出始终恰好 `num_blocks` 个 prompt: +- **超过** → 截断尾部 +- **不足** → 用最后一个 caption 直接 padding(**不加** scene_cut_prefix) + +#### 示例 + +**3 caption, num_blocks=12, chunks_per_shot=4** + +``` +captions: [0, 1, 2] +shot_durations: [4, 4, 4] +→ [0, 0, 0, 0, p+1, 1, 1, 1, p+2, 2, 2, 2] +``` + +**3 caption, num_blocks=12, chunks_per_shot=0(even_durations)** + +``` +captions: [0, 1, 2] +even_durations: base=4, extra=0 → [4, 4, 4] +→ [0, 0, 0, 0, p+1, 1, 1, 1, p+2, 2, 2, 2] +``` + +**2 caption, num_blocks=12, chunks_per_shot=4** + +``` +captions: [0, 1] +shot_durations: [4, 4], sum=8 < 12 → 最后一个 shot 扩展到 8 +→ [0, 0, 0, 0, p+1, 1, 1, 1, 1, 1, 1, 1] + ↑ padding 不加 prefix +``` + +**5 caption, num_blocks=12, chunks_per_shot=4** + +``` +captions: [0, 1, 2, 3, 4] +shot_durations: [4, 4, 4, 4, 4], 但 num_blocks=12 → clamped 到 [4, 4, 4] +→ [0, 0, 0, 0, p+1, 1, 1, 1, p+2, 2, 2, 2] + caption 3 和 4 被截断 +``` + +**2 caption, num_blocks=12, chunks_per_shot=0(even_durations)** + +``` +captions: [0, 1] +even_durations: base=6, extra=0 → [6, 6] +→ [0, 0, 0, 0, 0, 0, p+1, 1, 1, 1, 1, 1] +``` + +**1 caption, num_blocks=12** + +``` +captions: [0] +→ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + 单 shot,不加 prefix +``` + +**shot_durations.txt 覆盖** + +``` +captions: [0, 1, 2], shot_durations.txt 内容: "2, 6, 4", num_blocks=12 +→ [0, 0, p+1, 1, 1, 1, 1, 1, p+2, 2, 2, 2] +``` + +--- + +## 二、MultiVideoConcatDataset(视频训练) + +### 关键参数 + +| 参数 | 含义 | +|---|---| +| `total_segments` | 总 segment 数量(= 1 + num_subsequent_segments) | +| `single_video_only` | config 中的 `uniform_prompt`,True 时只从一个视频采样 | +| `max_chunks_per_shot` | 单镜头最大连续 chunk 数,超过则跳 1 秒做虚拟切镜(0=不限制) | +| `scene_cut_prefix` | 切镜标记前缀 | +| `allow_padding` | 视频不够时是否允许 padding(否则跳过该 folder) | + +Prompt 由实际视频采样决定,逐 segment 从视频文件加载对应的 per-video caption。 + +### 1. 多视频自然拼接(`max_chunks_per_shot=0`,默认) + +按视频文件顺序采样,切换视频文件时加 `scene_cut_prefix`: + +``` +video A 够采 3 chunks, video B 够采 4 chunks, total_segments=7 +→ [A, A, A, p+B, B, B, B] +``` + +### 2. `single_video_only=True` + +强制只从一个视频文件采样。视频不够长则整个 folder 被跳过: + +``` +video A 够采 7 chunks, total_segments=7 +→ [A, A, A, A, A, A, A] + +video A 只够采 5 chunks, total_segments=7 +→ (失败,跳到下一个 folder) +``` + +### 3. `max_chunks_per_shot=3`(限制单镜头时长) + +从同一视频连续采超过 3 chunks 后,跳 1 秒做虚拟切镜,加 `scene_cut_prefix`: + +``` +video A 很长, video B, total_segments=7, max_chunks_per_shot=3 +→ [A, A, A, p+A, A, A, p+B] + ↑跳1秒虚拟切镜 ↑换视频 +``` + +如果跳 1 秒后 A 不够了,直接跳到 B: + +``` +video A 够 4 chunks(跳1秒后不够), video B, total_segments=7, max_chunks_per_shot=3 +→ [A, A, A, p+B, B, B, B] + ↑A跳1秒后不够,换B +``` + +### 4. `single_video_only=True` + `max_chunks_per_shot=3` + +单视频内也可以做虚拟切镜: + +``` +video A 很长, total_segments=7, single_video_only=True, max_chunks_per_shot=3 +→ [A, A, A, p+A, A, A, p+A] +``` + +### 5. 训练 padding(`allow_padding=True`) + +视频不够时用最后一个 caption 直接 padding(不加 prefix): + +``` +video A 够采 3 chunks, video B 够采 2 chunks, total_segments=7, allow_padding=True +→ [A, A, A, p+B, B, B, B] + ↑后 2 个用最后一个 caption padding +``` + +--- + +## 三、Multi-Shot Sink + +通过 config 的 `multi_shot_sink: true` 开启。 +开启后,当检测到某个 block 处于新场景的起始位置时,会在该 block 去噪完成并更新 cache 后, +将 KV cache 的 attention sink 从旧场景的第一帧迁移到新场景的第一帧。 +同时会自动把全局 sink 长度设为 `sink_size`,不需要单独配置 global sink。 + +**配置方式**(yaml config 中添加): + +```yaml +sink_size: 8 +multi_shot_sink: true # 默认 false,不迁移 sink +``` + +此选项在以下所有场景均生效: + +| 场景 | Pipeline | 检测方式 | +|---|---|---| +| **Diffusion trainer evaluation** | `CausalDiffusionInferencePipeline` | 检查 prompt 是否以 `scene_cut_prefix` 开头 | +| **Distillation trainer evaluation** | `CausalDiffusionInferencePipeline` | 同上 | +| **离线推理 `inference.py`** | `CausalDiffusionInferencePipeline` | 同上 | +| **Distillation backward simulation** | `SelfForcingTrainingPipeline` | trainer 预计算 `scene_cut_mask` 传入 `conditional_dict` | +| **Streaming long tuning** | `SelfForcingTrainingPipeline` | 同上(mask 随 chunk 自动 slice) | + +### 实现机制 + +**Inference pipeline**(`CausalDiffusionInferencePipeline`): +直接检查每个 chunk 的 raw prompt 是否以 `scene_cut_prefix` 开头。 + +**Training pipeline**(`SelfForcingTrainingPipeline`): +由于 prompts 在进入 pipeline 前已编码为 embedding,无法从 embedding 反推文本。 +因此 trainer 在编码前从原始 prompts 计算布尔列表 `scene_cut_mask`, +放入 `conditional_dict["scene_cut_mask"]` 一路透传到 pipeline。 +对于 streaming training,`scene_cut_mask` 在 `_slice_cond_dict_for_chunk` 中随 prompt 一起 slice。 + +``` +block: [0] [1] [2] [p+3] [4] [5] [p+6] [7] +mask: F F F T F F T F +sink: 0 0 0 →3 3 3 →6 6 + ↑更新sink ↑更新sink +``` + +当 `multi_shot_sink: false`(默认)时,sink 始终锚定在视频的第一帧,不做任何迁移。 + +`scene_cut_prefix` 由 `DEFAULT_SCENE_CUT_PREFIX` 常量定义(`dataset.py`), +inference pipeline 引用同一常量,确保训练和推理的切镜检测一致。 +可通过 config 中的 `scene_cut_prefix` 字段统一覆盖。 diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..f756774 --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1,5 @@ +# Marker file: turn `utils/` from a namespace package into a regular package. +# torch 2.12's torchrun + multiprocessing has trouble resolving namespace +# packages from cwd in subprocesses; making this an explicit regular package +# makes `from utils.position_embedding_utils import ...` (used inside +# wan_5b/modules/model.py) reliable across torch versions. diff --git a/utils/adaln_triton.py b/utils/adaln_triton.py new file mode 100644 index 0000000..ab0a40d --- /dev/null +++ b/utils/adaln_triton.py @@ -0,0 +1,126 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +"""Triton fused adaLN-modulation kernel. + +iter-43: replaces the + (norm(x).unflatten(1, (F, frame_seqlen)) * (1 + e_scale) + e_shift).flatten(1, 2) +chain (LayerNorm + 2 broadcast elementwise ops per call, x2 per transformer block +for norm1/norm2) with a single Triton kernel. Each token does one fp32 pass: +mean/var reduce, normalize, multiply by (1+scale), add shift, cast back. + +LayerNorm matches `WanLayerNorm` (nn.LayerNorm with elementwise_affine=False, +eps=1e-6, output cast back to input dtype). +""" +from __future__ import annotations + +import torch +import triton +import triton.language as tl + + +# iter-44: autotune over num_warps + num_stages. Fixed BLOCK_C +# (next_power_of_2(C)) — varying it would change the reduce semantics. Provide +# enough configs to cover the (small_B, large_L) regime of inference chunks. +_ADALN_CONFIGS = [ + triton.Config({}, num_warps=nw, num_stages=ns) + for nw in (4, 8, 16) + for ns in (1, 2, 3) +] + + +@triton.autotune(configs=_ADALN_CONFIGS, key=["C", "FRAME_SEQLEN"]) +@triton.jit +def _adaln_modulate_kernel( + x_ptr, # [B, L, C] + scale_ptr, # [B, F, 1, C] (or any layout, indexed via strides) + shift_ptr, # [B, F, 1, C] + out_ptr, # [B, L, C] + C, + FRAME_SEQLEN, + x_stride_b, x_stride_l, + scale_stride_b, scale_stride_f, + shift_stride_b, shift_stride_f, + eps, + ADD_ONE_TO_SCALE: tl.constexpr, + BLOCK_C: tl.constexpr, +): + pid_b = tl.program_id(0) + pid_l = tl.program_id(1) + pid_f = pid_l // FRAME_SEQLEN + + offs_c = tl.arange(0, BLOCK_C) + mask = offs_c < C + + x_off = pid_b * x_stride_b + pid_l * x_stride_l + offs_c + x = tl.load(x_ptr + x_off, mask=mask, other=0.0).to(tl.float32) + + inv_C = 1.0 / C + mean = tl.sum(x, axis=0) * inv_C + x_centered = tl.where(mask, x - mean, 0.0) + var = tl.sum(x_centered * x_centered, axis=0) * inv_C + rstd = 1.0 / tl.sqrt(var + eps) + # Match WanLayerNorm: nn.LayerNorm casts back to input dtype via .type_as(x) + # before downstream ops. Round-trip through bf16 to keep numerics identical + # to the eager path so latent diff stays in run-to-run noise floor. + x_norm = (x_centered * rstd).to(tl.bfloat16).to(tl.float32) + + s_off = pid_b * scale_stride_b + pid_f * scale_stride_f + offs_c + h_off = pid_b * shift_stride_b + pid_f * shift_stride_f + offs_c + scale = tl.load(scale_ptr + s_off, mask=mask, other=0.0).to(tl.float32) + shift = tl.load(shift_ptr + h_off, mask=mask, other=0.0).to(tl.float32) + + if ADD_ONE_TO_SCALE: + # Match eager: `1 + e_scale` happens in bf16 (autocast off at this site) + scale = (scale + 1.0) + scale = scale.to(tl.bfloat16).to(tl.float32) + + # Match eager: bf16 * bf16, bf16 + bf16 + prod = (x_norm * scale).to(tl.bfloat16).to(tl.float32) + y = prod + shift + + tl.store(out_ptr + x_off, y, mask=mask) + + +def adaln_modulate_triton( + x: torch.Tensor, # [B, L, C] contiguous + e_scale: torch.Tensor, # [B, F, 1, C] + e_shift: torch.Tensor, # [B, F, 1, C] + frame_seqlen: int, + eps: float = 1e-6, + add_one_to_scale: bool = True, +) -> torch.Tensor: + """Fused (LayerNorm + (1+e_scale)*x + e_shift) over [B, F*frame_seqlen, C]. + + Replaces the WanAttentionBlock norm1/norm2 + modulate pattern. Output dtype + follows x.dtype; internal arithmetic is fp32. eps matches `WanLayerNorm`. + """ + assert x.dim() == 3, f"x must be [B, L, C], got {x.shape}" + B, L, C = x.shape + assert L % frame_seqlen == 0, (L, frame_seqlen) + F = L // frame_seqlen + assert e_scale.dim() == 4 and e_scale.shape[0] == B and e_scale.shape[1] == F \ + and e_scale.shape[2] == 1 and e_scale.shape[3] == C, \ + f"e_scale {tuple(e_scale.shape)} vs expected {(B, F, 1, C)}" + assert e_shift.shape == e_scale.shape + + out = torch.empty_like(x) + BLOCK_C = triton.next_power_of_2(C) + + grid = (B, L) + # num_warps / num_stages picked by @triton.autotune (iter-44). + _adaln_modulate_kernel[grid]( + x, e_scale, e_shift, out, + C, frame_seqlen, + x.stride(0), x.stride(1), + e_scale.stride(0), e_scale.stride(1), + e_shift.stride(0), e_shift.stride(1), + eps, + ADD_ONE_TO_SCALE=add_one_to_scale, + BLOCK_C=BLOCK_C, + ) + return out diff --git a/utils/config.py b/utils/config.py new file mode 100644 index 0000000..068be5c --- /dev/null +++ b/utils/config.py @@ -0,0 +1,174 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +from omegaconf import OmegaConf + + +DEFAULT_NEGATIVE_PROMPT = ( + "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止," + "整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指," + "画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体," + "手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走" +) + + +wan_default_config = { + "Wan2.2-TI2V-5B": { + "resolution": [1280, 704], + "temporal_compression_ratio": 4, + "spatial_compression_ratio": 16, + "num_heads": 24, + "head_dim": 128, + "num_transformer_blocks": 30, + "fps": 24, + } +} + + +SECTION_KEYS = ( + "infra", + "algorithm", + "training", + "data", + "evaluation", + "inference", + "logging", + "checkpoints", +) + + +def _set_once(config, key, value, source): + if value is None: + return + if key in config and config[key] != value: + raise ValueError( + f"{key} is defined more than once with different values: " + f"{config[key]} vs {value} from {source}." + ) + config[key] = value + + +def section_get(config, section_key, key, default=None, aliases=()): + """Read a grouped config value, falling back to legacy flat names.""" + section = config.get(section_key, None) + candidate_keys = (key, *aliases) + if section is not None: + for candidate in candidate_keys: + if candidate in section: + return section[candidate] + for candidate in candidate_keys: + if candidate in config: + return config[candidate] + return default + + +def normalize_config(config): + """Expand grouped release configs into the flat runtime schema. + + The training and inference code historically reads fields such as + ``config.batch_size`` and ``config.model_kwargs`` directly. Release + configs can group those fields for readability, then call this function at + the entry point to preserve the existing runtime contract. + """ + for section_key in SECTION_KEYS: + section = config.get(section_key, None) + if section is None: + continue + for key, value in section.items(): + config[key] = value + + evaluation = config.get("evaluation", None) + if evaluation is not None: + if "interval" in evaluation: + _set_once(config, "generate_interval", evaluation.interval, "evaluation.interval") + _set_once(config, "vis_interval", evaluation.interval, "evaluation.interval") + if "num_frames" in evaluation: + num_frames = evaluation.num_frames + if isinstance(num_frames, (list, tuple)): + vis_lengths = list(num_frames) + inference_num_frames = vis_lengths[0] if vis_lengths else 0 + else: + inference_num_frames = int(num_frames) + vis_lengths = [inference_num_frames] + _set_once(config, "inference_num_frames", inference_num_frames, "evaluation.num_frames") + _set_once(config, "vis_video_lengths", vis_lengths, "evaluation.num_frames") + if "use_ema" in evaluation: + _set_once(config, "vis_ema", evaluation.use_ema, "evaluation.use_ema") + + model_section = config.get("model", None) + base_model_kwargs = config.get("model_kwargs", None) + model_kwargs = OmegaConf.create({}) + if base_model_kwargs is not None: + model_kwargs = OmegaConf.merge(model_kwargs, base_model_kwargs) + + if model_section is not None: + section_kwargs = model_section.get("kwargs", None) + if section_kwargs is not None: + model_kwargs = OmegaConf.merge(model_kwargs, section_kwargs) + + model_name = model_section.get("name", None) + if model_name is not None: + model_kwargs.model_name = model_name + config.model_name = model_name + + _set_once( + config, + "num_frame_per_block", + model_section.get("num_frame_per_block", None), + "model.num_frame_per_block", + ) + + if "model_name" in config and "model_name" not in model_kwargs: + model_kwargs.model_name = config.model_name + if "timestep_shift" in config and "timestep_shift" not in model_kwargs: + model_kwargs.timestep_shift = config.timestep_shift + if "timestep_shift" in model_kwargs: + _set_once(config, "timestep_shift", model_kwargs.timestep_shift, "model_kwargs.timestep_shift") + + model_num_frame_per_block = model_kwargs.get("num_frame_per_block", None) + if model_num_frame_per_block is not None: + _set_once(config, "num_frame_per_block", model_num_frame_per_block, "model_kwargs.num_frame_per_block") + + if len(model_kwargs) > 0: + config.model_kwargs = model_kwargs + + if "wandb_host" not in config: + config.wandb_host = "https://api.wandb.ai" + + if "negative_prompt" not in config: + config.negative_prompt = DEFAULT_NEGATIVE_PROMPT + + if config.get("trainer", None) == "score_distillation": + dmd_defaults = { + "i2v": False, + "teacher_forcing": False, + "backward_simulation": True, + "independent_first_frame": False, + "num_train_timestep": 1000, + "denoising_loss_type": "flow", + "real_guidance_scale": 3.0, + "fake_guidance_scale": 0.0, + } + for key, value in dmd_defaults.items(): + if key not in config: + config[key] = value + if "causal" not in config: + config.causal = bool(config.get("all_causal", True)) + + # Causal DMD uses the same Wan backbone for generator/teacher/critic unless + # a role-specific override is explicitly provided. + if getattr(config, "all_causal", False) and "model_kwargs" in config: + for role_key in ("real_model_kwargs", "fake_model_kwargs"): + if config.get(role_key, None) is None: + config[role_key] = OmegaConf.create( + OmegaConf.to_container(config.model_kwargs, resolve=True) + ) + + return config diff --git a/utils/dataset.py b/utils/dataset.py new file mode 100644 index 0000000..ebddca0 --- /dev/null +++ b/utils/dataset.py @@ -0,0 +1,1073 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +from torch.utils.data import Dataset +import numpy as np +import torch +import random +import json +from pathlib import Path +from PIL import Image +import os +import subprocess +import time +import warnings +import torchvision.transforms as transforms +import torchvision.transforms.functional as F + +try: + import decord +except ModuleNotFoundError: + decord = None + +DEFAULT_SCENE_CUT_PREFIX = "The scene transitions. " + + +class TextDataset(Dataset): + def __init__(self, prompt_path, extended_prompt_path=None): + with open(prompt_path, encoding="utf-8") as f: + self.prompt_list = [line.rstrip() for line in f] + + if extended_prompt_path is not None: + with open(extended_prompt_path, encoding="utf-8") as f: + self.extended_prompt_list = [line.rstrip() for line in f] + assert len(self.extended_prompt_list) == len(self.prompt_list) + else: + self.extended_prompt_list = None + + def __len__(self): + return len(self.prompt_list) + + def __getitem__(self, idx): + batch = { + "prompts": self.prompt_list[idx], + "idx": idx, + } + if self.extended_prompt_list is not None: + batch["extended_prompts"] = self.extended_prompt_list[idx] + return batch + + +class MultiTextDataset(Dataset): + """Dataset for multi-segment prompts stored in a JSONL file. + + Each line is a JSON object, e.g. + {"prompts": ["a cat", "a dog", "a bird"]} + + Args + ---- + prompt_path : str + Path to the JSONL file + field : str + Name of the list-of-strings field, default "prompts" + cache_dir : str | None + ``cache_dir`` passed to HF Datasets (optional) + """ + + def __init__(self, prompt_path: str, field: str = "prompts", cache_dir: str | None = None): + try: + import datasets + except ModuleNotFoundError as exc: + raise ModuleNotFoundError( + "The 'datasets' package is required for MultiTextDataset. " + "Use MultiTextConcatDataset for plain txt/json-caption directories " + "or install datasets." + ) from exc + self.ds = datasets.load_dataset( + "json", + data_files=prompt_path, + split="train", + cache_dir=cache_dir, + streaming=False, + ) + + assert len(self.ds) > 0, "JSONL is empty" + assert field in self.ds.column_names, f"Missing field '{field}'" + + seg_len = len(self.ds[0][field]) + for i, ex in enumerate(self.ds): + val = ex[field] + assert isinstance(val, list), f"Line {i} field '{field}' is not a list" + assert len(val) == seg_len, f"Line {i} list length mismatch" + + self.field = field + + def __len__(self): + return len(self.ds) + + def __getitem__(self, idx: int): + return { + "idx": idx, + "prompts_list": self.ds[idx][self.field], # List[str] + } + + +class MultiTextConcatDataset(Dataset): + """Text-only dataset for multi-shot training and inference. + + Supports two input modes: + + **txt file** — each line is one caption. Each sample uses the caption at + index ``idx``, repeated ``num_blocks`` times (single-shot, no scene cut + prefix). + + **directory** — reads ``caption//*.json`` files (no video dir + needed). Shot durations are resolved with a three-level fallback: + + 1. ``shot_durations.txt`` in the caption subfolder (per-sample override) + 2. ``chunks_per_shot`` from config (global fixed repeat) + 3. Even distribution across all available captions + + Scene cut prefix is prepended at shot boundaries (first block of each + shot except shot 0). Output is always exactly ``num_blocks`` prompts: + truncated if too many, padded with the last caption if too few. + """ + + def __init__( + self, + data_path: str, + num_blocks: int, + chunks_per_shot: int = 0, + scene_cut_prefix: str = DEFAULT_SCENE_CUT_PREFIX, + caption_field: str = "caption", + deterministic: bool = False, + ): + self.num_blocks = num_blocks + self.chunks_per_shot = chunks_per_shot + self.scene_cut_prefix = scene_cut_prefix + self.caption_field = caption_field + self.deterministic = deterministic + + path = Path(data_path) + if data_path.endswith(".txt") or path.is_file(): + self._mode = "txt" + with open(data_path, encoding="utf-8") as f: + self._prompts = [line.rstrip() for line in f if line.strip()] + assert len(self._prompts) > 0, f"No prompts found in {data_path}" + else: + self._mode = "dir" + self._caption_dir = path / "caption" if (path / "caption").is_dir() else path + self._folders = sorted([d for d in self._caption_dir.iterdir() if d.is_dir()]) + assert len(self._folders) > 0, ( + f"No caption subfolders found in {self._caption_dir}" + ) + + def __len__(self): + if self._mode == "txt": + return len(self._prompts) + return len(self._folders) + + def __getitem__(self, idx): + if self._mode == "txt": + return self._get_txt_item(idx) + return self._get_dir_item(idx) + + # ------------------------------------------------------------------ + # txt mode + # ------------------------------------------------------------------ + + def _get_txt_item(self, idx): + caption = self._prompts[idx % len(self._prompts)] + return { + "prompts": [caption] * self.num_blocks, + "idx": idx, + } + + # ------------------------------------------------------------------ + # directory mode + # ------------------------------------------------------------------ + + def _get_dir_item(self, idx): + folder = self._folders[idx % len(self._folders)] + raw_captions = self._load_captions_from_folder(folder) + if not raw_captions: + raw_captions = [""] + + shot_durations = self._resolve_shot_durations(folder, len(raw_captions)) + prompts = self._apply_shot_durations(raw_captions, shot_durations) + + # Ensure exactly num_blocks prompts + if len(prompts) > self.num_blocks: + prompts = prompts[: self.num_blocks] + elif len(prompts) < self.num_blocks: + last = prompts[-1] if prompts else "" + prompts.extend([last] * (self.num_blocks - len(prompts))) + + return { + "prompts": prompts, + "idx": idx, + } + + def _load_captions_from_folder(self, folder: Path): + json_files = sorted( + [f for f in folder.glob("*.json") if f.name != "global.json"], + key=lambda p: (p.stem.isdigit(), int(p.stem) if p.stem.isdigit() else 0, p.stem), + ) + captions = [] + for jf in json_files: + try: + with open(jf, "r", encoding="utf-8") as f: + data = json.load(f) + captions.append(data.get(self.caption_field, "")) + except Exception: + captions.append("") + return captions + + # ------------------------------------------------------------------ + # shot duration helpers + # ------------------------------------------------------------------ + + @staticmethod + def _load_shot_durations(folder: Path): + txt_path = folder / "shot_durations.txt" + if not txt_path.exists(): + return None + try: + with open(txt_path, "r") as f: + content = f.read().strip() + parts = content.replace(",", " ").split() + durations = [int(x) for x in parts if x.strip()] + return durations if durations else None + except Exception: + return None + + def _resolve_shot_durations(self, folder: Path, num_captions: int): + durations = self._load_shot_durations(folder) + if durations is not None: + return durations[:num_captions] + if self.chunks_per_shot > 0: + return [self.chunks_per_shot] * num_captions + return self._even_durations(num_captions) + + def _even_durations(self, num_shots: int): + total = self.num_blocks + base, extra = divmod(total, num_shots) + return [base + (1 if i < extra else 0) for i in range(num_shots)] + + def _apply_shot_durations(self, raw_captions, shot_durations): + target = self.num_blocks + clamped: list[int] = [] + remaining = target + for d in shot_durations: + if remaining <= 0: + break + take = min(d, remaining) + clamped.append(take) + remaining -= take + if remaining > 0 and clamped: + clamped[-1] += remaining + + prompts: list[str] = [] + for shot_idx, (caption, duration) in enumerate(zip(raw_captions, clamped)): + for block_in_shot in range(duration): + if shot_idx > 0 and block_in_shot == 0 and self.scene_cut_prefix: + prompts.append(self.scene_cut_prefix + caption) + else: + prompts.append(caption) + return prompts + + +class MultiVideoConcatDataset(Dataset): + """Dataset that concatenates multiple videos from a folder into a fixed-length video. + + Each item consists of multiple video segments concatenated together: + - First segment: first_chunk_frames frames (chunk) + - Subsequent segments: subsequent_chunk_frames frames each (chunk) + - Total: total_frames frames (first_chunk_frames + subsequent_chunk_frames*num_subsequent_segments = total_frames) + + Videos are sampled preserving original duration, and if a video doesn't have enough frames, + it moves to the next video. If a video has enough frames, it can be sampled repeatedly. + """ + def __init__( + self, + data_dir, + video_size, + total_frames, + target_fps=16, + video_extensions=('.mp4', '.avi', '.mov', '.mkv', '.webm'), + caption_field='caption', + filter_invalid_folders=False, + deterministic: bool = False, + num_frame_per_block=8, + temporal_compression_ratio=4, + allow_padding: bool = False, + min_latent_frames: int = 0, + single_video_only: bool = False, + independent_first_frame: bool = False, + return_image: bool = False, + max_chunks_per_shot: int = 0, + scene_cut_prefix: str = DEFAULT_SCENE_CUT_PREFIX, + sample_warning_seconds: float = 60.0, + sample_warning_interval_seconds: float = 60.0, + ): + self.root_dir = Path(data_dir) + self.data_dir = self.root_dir / "video" + self.caption_dir = self.root_dir / "caption" + self.video_size = video_size + self.total_frames = total_frames + + total_latent_frames = 1 + (total_frames - 1) // temporal_compression_ratio + separate_first_latent = ( + independent_first_frame + and total_latent_frames % num_frame_per_block != 0 + ) + if separate_first_latent: + assert (total_latent_frames - 1) % num_frame_per_block == 0, ( + f"total latent frames ({total_latent_frames}) must be divisible by " + f"num_frame_per_block ({num_frame_per_block}) or equal to " + f"1 + N * num_frame_per_block when independent_first_frame=True" + ) + first_chunk_latent_frames = ( + num_frame_per_block + 1 if separate_first_latent else num_frame_per_block + ) + first_chunk_frames = 1 + (first_chunk_latent_frames - 1) * temporal_compression_ratio + subsequent_chunk_frames = num_frame_per_block * temporal_compression_ratio + + self.first_chunk_frames = first_chunk_frames + self.subsequent_chunk_frames = subsequent_chunk_frames + self.target_fps = target_fps + self.caption_field = caption_field + self.video_extensions = video_extensions + self.filter_invalid_folders = filter_invalid_folders + self.deterministic = deterministic + self.allow_padding = allow_padding + self.num_frame_per_block = num_frame_per_block + self.independent_first_frame = independent_first_frame + self.first_chunk_latent_frames = first_chunk_latent_frames + self.return_image = return_image + if min_latent_frames > 0: + assert min_latent_frames % num_frame_per_block == 0, ( + f"min_latent_frames ({min_latent_frames}) must be a multiple of " + f"num_frame_per_block ({num_frame_per_block})" + ) + self.min_latent_frames = min_latent_frames + self.single_video_only = single_video_only + self.max_chunks_per_shot = max_chunks_per_shot + self.scene_cut_prefix = scene_cut_prefix + self.sample_warning_seconds = float(sample_warning_seconds or 0.0) + self.sample_warning_interval_seconds = float(sample_warning_interval_seconds or 0.0) + + remaining_frames = total_frames - first_chunk_frames + self.num_subsequent_segments = remaining_frames // subsequent_chunk_frames + self.total_segments = 1 + self.num_subsequent_segments + + assert total_frames == first_chunk_frames + self.num_subsequent_segments * subsequent_chunk_frames, \ + f"Total frames ({total_frames}) must equal first_chunk_frames ({first_chunk_frames}) + " \ + f"num_subsequent_segments ({self.num_subsequent_segments}) * subsequent_chunk_frames ({subsequent_chunk_frames})" + + if not self.data_dir.exists(): + raise ValueError(f"Video directory not found: {self.data_dir}") + if not self.caption_dir.exists(): + raise ValueError(f"Caption directory not found: {self.caption_dir}") + + self.folders = [d for d in self.data_dir.iterdir() if d.is_dir()] + if len(self.folders) == 0: + raise ValueError(f"No subdirectories found in {self.data_dir}") + + # Optionally pre-filter folders with insufficient frames + # Note: This can be slow for large datasets due to IO operations + if self.filter_invalid_folders: + print(f"[MultiVideoConcatDataset] Pre-filtering {len(self.folders)} folders for sufficient frames...") + valid_folders = [] + skipped_folders = [] + for folder in self.folders: + if self._check_folder_has_enough_frames(folder): + valid_folders.append(folder) + else: + skipped_folders.append(folder.name) + + if len(skipped_folders) > 0: + print(f"[MultiVideoConcatDataset] Skipped {len(skipped_folders)} folders due to insufficient frames: {skipped_folders}") + + self.folders = valid_folders + + if len(self.folders) == 0: + raise ValueError(f"No folders with sufficient frames found in {self.data_dir}") + + # Setup transforms + self.resize_transform = transforms.Resize( + self.video_size, + antialias=True + ) + self.normalize = transforms.Normalize( + mean=[0.5, 0.5, 0.5], + std=[0.5, 0.5, 0.5] + ) + + # Lazy caches: avoid repeated decord.VideoReader / filesystem IO + self._video_info_cache = {} # video_path -> (total_frames, fps) + self._folder_files_cache = {} # folder_path -> list of video paths + + if decord is not None: + decord.bridge.set_bridge('torch') + + def _get_caption_folder(self, folder_name): + """Return the caption directory path for a given folder (sample).""" + return self.caption_dir / folder_name + + def _load_caption(self, video_path, folder_name): + """Load caption for a video file.""" + video_stem = video_path.stem + caption_folder = self._get_caption_folder(folder_name) + caption_path = caption_folder / f"{video_stem}.json" + + if caption_path.exists(): + try: + with open(caption_path, 'r', encoding='utf-8') as f: + caption_data = json.load(f) + return caption_data.get(self.caption_field, "") + except Exception: + return "" + return "" + + def _get_video_files_in_folder(self, folder_path): + """Get sorted video files in a folder, keeping only those with a per-video caption (cached).""" + key = str(folder_path) + if key in self._folder_files_cache: + return self._folder_files_cache[key] + + video_files = [] + for ext in self.video_extensions: + video_files.extend(list(folder_path.glob(f'*{ext}'))) + video_files.extend(list(folder_path.glob(f'*{ext.upper()}'))) + + def get_numeric_key(path): + try: + return int(path.stem) + except ValueError: + return float('inf') + + video_files.sort(key=get_numeric_key) + + folder_name = folder_path.name + filtered_videos = [] + for video_path in video_files: + caption = self._load_caption(video_path, folder_name) + if caption is not None and caption != "": + filtered_videos.append(video_path) + + self._folder_files_cache[key] = filtered_videos + return filtered_videos + + def _check_folder_has_enough_frames(self, folder_path): + """Check if a folder has enough total frames across all videos to complete all segments. + + This is a lenient check: we verify that the total available frames across all videos + is sufficient for the required segments, assuming ideal sampling. + """ + video_files = self._get_video_files_in_folder(folder_path) + if len(video_files) == 0: + return False + + # Calculate total available frames (in target_fps timebase) + total_available_frames = 0 + for video_path in video_files: + try: + total_frames, original_fps = self._get_video_info(video_path) + # Convert to target_fps timebase + available_in_target_fps = total_frames * self.target_fps / original_fps + total_available_frames += available_in_target_fps + except Exception: + # If we can't read a video, be conservative and skip this folder + return False + + # Check if we have enough frames for all segments + required_frames = self.total_frames + return total_available_frames >= required_frames + + def _get_video_info(self, video_path): + """Get video information without loading frames (cached).""" + key = str(video_path) + if key in self._video_info_cache: + return self._video_info_cache[key] + if decord is None: + info = self._get_video_info_ffprobe(video_path) + self._video_info_cache[key] = info + return info + try: + vr = decord.VideoReader(key, width=self.video_size[1], height=self.video_size[0]) + except: + vr = decord.VideoReader(key) + info = (len(vr), vr.get_avg_fps()) + self._video_info_cache[key] = info + return info + + @staticmethod + def _parse_fps(value): + if not value or value == "0/0": + return 0.0 + if "/" in value: + num, den = value.split("/", 1) + den_f = float(den) + return float(num) / den_f if den_f != 0 else 0.0 + return float(value) + + def _get_video_info_ffprobe(self, video_path): + cmd = [ + "ffprobe", + "-v", + "error", + "-select_streams", + "v:0", + "-count_frames", + "-show_entries", + "stream=nb_read_frames,nb_frames,avg_frame_rate,r_frame_rate,duration", + "-of", + "json", + str(video_path), + ] + try: + proc = subprocess.run(cmd, check=True, capture_output=True, text=True) + stream = json.loads(proc.stdout)["streams"][0] + fps = self._parse_fps(stream.get("avg_frame_rate")) or self._parse_fps(stream.get("r_frame_rate")) + frames_raw = stream.get("nb_read_frames") or stream.get("nb_frames") + if frames_raw and str(frames_raw).isdigit(): + total_frames = int(frames_raw) + else: + total_frames = int(round(float(stream.get("duration", 0.0)) * fps)) + if total_frames <= 0 or fps <= 0: + raise ValueError(f"Could not infer frames/fps from ffprobe output for {video_path}") + return total_frames, fps + except (subprocess.CalledProcessError, KeyError, IndexError, ValueError, json.JSONDecodeError) as exc: + raise RuntimeError(f"ffprobe failed to read video metadata for {video_path}: {exc}") from exc + + def _can_sample_from_position(self, total_frames, original_fps, num_frames, start_frame): + """Check if we can sample num_frames starting from start_frame. + + Returns True if we can sample num_frames without exceeding video bounds. + """ + if start_frame >= total_frames: + return False + + # Calculate sampling interval: original_fps / target_fps + sampling_interval = original_fps / self.target_fps + + # Calculate the last frame index we need (with rounding) + # We need to check if we can get num_frames frames + last_frame_needed = start_frame + (num_frames - 1) * sampling_interval + + # Account for rounding: the actual last frame index will be rounded + # So we need some margin to ensure we don't exceed bounds + return int(np.round(last_frame_needed)) < total_frames + + def _can_complete_all_segments_without_wrap(self, video_files, start_video_idx, start_frame): + """Check if from (start_video_idx, start_frame) we can sample all segments + without ever wrapping to the beginning (i.e. only use this video and later ones). + When single_video_only is True, all segments must come from the same video. + """ + vidx = start_video_idx + start = start_frame + + # First segment + total_frames, original_fps = self._get_video_info(video_files[vidx]) + if not self._can_sample_from_position( + total_frames, original_fps, self.first_chunk_frames, start + ): + return False + sampling_interval = original_fps / self.target_fps + next_start = start + self.first_chunk_frames * sampling_interval + if int(np.round(next_start)) >= total_frames: + if self.single_video_only: + return self.num_subsequent_segments == 0 + vidx += 1 + start = 0 + else: + start = int(np.round(next_start)) + if vidx >= len(video_files): + return False + + # Subsequent segments + for seg_i in range(self.num_subsequent_segments): + while vidx < len(video_files): + total_frames, original_fps = self._get_video_info(video_files[vidx]) + if self._can_sample_from_position( + total_frames, original_fps, self.subsequent_chunk_frames, start + ): + break + if self.single_video_only: + return False + vidx += 1 + start = 0 + if vidx >= len(video_files): + return False + sampling_interval = original_fps / self.target_fps + next_start = start + self.subsequent_chunk_frames * sampling_interval + if int(np.round(next_start)) >= total_frames: + if self.single_video_only and seg_i < self.num_subsequent_segments - 1: + return False + vidx += 1 + start = 0 + else: + start = int(np.round(next_start)) + return True + + def _sample_random_start(self, video_files): + """Sample a random (video_idx, start_frame) valid for the first segment, + and from which we can complete ALL segments without wrapping to the start. + Returns (video_idx, start_frame); falls back to (0, 0) if no valid start found. + """ + candidates = [] + for video_idx, video_path in enumerate(video_files): + total_frames, original_fps = self._get_video_info(video_path) + sampling_interval = original_fps / self.target_fps + last_needed = (self.first_chunk_frames - 1) * sampling_interval + max_start = int(np.floor(total_frames - 1 - last_needed)) + if max_start < 0: + continue + step = max(1, max_start // 50) + for start in range(0, max_start + 1, step): + if not self._can_sample_from_position( + total_frames, original_fps, self.first_chunk_frames, start + ): + continue + if self._can_complete_all_segments_without_wrap(video_files, video_idx, start): + candidates.append((video_idx, start)) + if candidates: + chosen = random.choice(candidates) + return chosen + return (0, 0) + + def _sample_frames_from_video(self, video_path, num_frames, start_frame=0): + """Sample frames from a video preserving original duration. + + Args: + video_path: Path to video file + num_frames: Number of frames to sample + start_frame: Starting frame index (for repeated sampling) + + Returns: + tuple: (frames_tensor, total_frames_in_video, original_fps) + """ + if decord is None: + return self._sample_frames_from_video_ffmpeg(video_path, num_frames, start_frame) + + try: + vr = decord.VideoReader(str(video_path), width=self.video_size[1], height=self.video_size[0]) + except: + vr = decord.VideoReader(str(video_path)) + + total_frames = len(vr) + original_fps = vr.get_avg_fps() + + if total_frames == 0: + raise ValueError(f"Video {video_path} has no frames") + + # Calculate frame sampling based on fps to preserve duration + # Calculate sampling interval: original_fps / target_fps + sampling_interval = original_fps / self.target_fps + + # Generate frame indices starting from start_frame + indices = [] + current_frame = float(start_frame) + for _ in range(num_frames): + frame_idx = int(np.round(current_frame)) + frame_idx = min(frame_idx, total_frames - 1) + indices.append(frame_idx) + current_frame += sampling_interval + if current_frame >= total_frames: + # If we run out of frames, pad with the last frame + remaining = num_frames - len(indices) + indices.extend([total_frames - 1] * remaining) + break + + indices = np.array(indices[:num_frames], dtype=np.int32) + + # Get video frames: shape (num_frames, height, width, 3) + video_frames = vr.get_batch(indices).numpy() + + # Convert to tensor and permute to (num_frames, 3, height, width) + video_tensor = torch.from_numpy(video_frames).permute(0, 3, 1, 2).contiguous() + + # Convert to float and normalize pixel values from [0, 255] to [0, 1] + video_tensor = video_tensor.float() / 255.0 + + # Resize if needed + if video_tensor.shape[2] != self.video_size[0] or video_tensor.shape[3] != self.video_size[1]: + resized_frames = [] + for i in range(video_tensor.shape[0]): + resized_frames.append(self.resize_transform(video_tensor[i])) + video_tensor = torch.stack(resized_frames, dim=0) + + # Apply normalization: (x - 0.5) / 0.5 -> range [-1, 1] + video_tensor = self.normalize(video_tensor) + video_tensor = video_tensor.to(torch.float16) + + return video_tensor, total_frames, original_fps + + def _sample_frames_from_video_ffmpeg(self, video_path, num_frames, start_frame=0): + total_frames, original_fps = self._get_video_info(video_path) + start_time = max(0.0, float(start_frame) / max(original_fps, 1e-6)) + height, width = self.video_size + cmd = [ + "ffmpeg", + "-v", + "error", + "-ss", + f"{start_time:.6f}", + "-i", + str(video_path), + "-vf", + f"fps={self.target_fps},scale={width}:{height}", + "-frames:v", + str(num_frames), + "-f", + "rawvideo", + "-pix_fmt", + "rgb24", + "pipe:1", + ] + try: + proc = subprocess.run(cmd, check=True, capture_output=True) + except subprocess.CalledProcessError as exc: + stderr = exc.stderr.decode("utf-8", errors="replace") if exc.stderr else "" + raise RuntimeError(f"ffmpeg failed to sample {video_path}: {stderr}") from exc + + frame_bytes = height * width * 3 + decoded_frames = len(proc.stdout) // frame_bytes + if decoded_frames <= 0: + raise RuntimeError(f"ffmpeg produced no frames for {video_path}") + + video_frames = np.frombuffer(proc.stdout[: decoded_frames * frame_bytes], dtype=np.uint8) + video_frames = video_frames.reshape(decoded_frames, height, width, 3) + video_tensor = torch.from_numpy(video_frames.copy()).permute(0, 3, 1, 2).contiguous() + video_tensor = video_tensor.float() / 255.0 + if decoded_frames < num_frames: + pad = video_tensor[-1:].repeat(num_frames - decoded_frames, 1, 1, 1) + video_tensor = torch.cat([video_tensor, pad], dim=0) + elif decoded_frames > num_frames: + video_tensor = video_tensor[:num_frames] + + video_tensor = self.normalize(video_tensor) + video_tensor = video_tensor.to(torch.float16) + return video_tensor, total_frames, original_fps + + def __len__(self): + return len(self.folders) + + @staticmethod + def _sample_failure(reason): + return False, reason + + def _try_get_item_from_folder(self, folder_idx, deterministic: bool = False): + """Try to get item from a specific folder. + + Returns (True, result) on success and (False, reason) on failure. + The reason is used by __getitem__ warnings so a long scan does not + look like a silent hang when most folders are too short. + """ + folder_path = self.folders[folder_idx] + folder_name = folder_path.name + + video_files = self._get_video_files_in_folder(folder_path) + + if len(video_files) == 0: + return self._sample_failure(f"{folder_name}: no videos with captions") + + # Collect all segments + all_segments = [] + prompts_list = [] + + try: + # Start position + if deterministic: + current_video_idx, current_start_frame = 0, 0 + else: + # Random start: don't always start from the first video, so we get more diversity + current_video_idx, current_start_frame = self._sample_random_start(video_files) + + # Sample first segment (9 frames) + video_path = video_files[current_video_idx] + prev_seg_video_idx = current_video_idx + total_frames, original_fps = self._get_video_info(video_path) + + # Ensure the current video is long enough for the first segment + while not self._can_sample_from_position( + total_frames, original_fps, self.first_chunk_frames, current_start_frame + ): + if self.single_video_only: + return self._sample_failure( + f"{folder_name}: first video is too short for the first chunk" + ) + current_video_idx += 1 + current_start_frame = 0 + if current_video_idx >= len(video_files): + return self._sample_failure( + f"{folder_name}: no video can provide the first chunk" + ) + video_path = video_files[current_video_idx] + prev_seg_video_idx = current_video_idx + total_frames, original_fps = self._get_video_info(video_path) + + # Sample first segment + segment_frames, total_frames, original_fps = self._sample_frames_from_video( + video_path, self.first_chunk_frames, current_start_frame + ) + all_segments.append(segment_frames) + + prompt = self._load_caption(video_path, folder_name) + prompts_list.append(prompt) + + # Update position for next sampling + sampling_interval = original_fps / self.target_fps + next_start_frame = current_start_frame + self.first_chunk_frames * sampling_interval + + # If we've exhausted this video, move to next + if int(np.round(next_start_frame)) >= total_frames: + if self.single_video_only: + if self.num_subsequent_segments > 0: + return self._sample_failure( + f"{folder_name}: single-video sample ends after first chunk" + ) + else: + current_video_idx += 1 + current_start_frame = 0 + else: + current_start_frame = int(np.round(next_start_frame)) + + chunks_from_current_video = 1 if current_video_idx == prev_seg_video_idx else 0 + + # Sample subsequent segments (12 frames each). No wrap: we only use videos from start onward. + for seg_idx in range(self.num_subsequent_segments): + if current_video_idx >= len(video_files): + if self.allow_padding: + break + return self._sample_failure( + f"{folder_name}: ran out of videos before all chunks were filled" + ) + + # Force virtual scene cut if max_shot_chunks reached: + # skip 1 second of video and treat the remainder as a new shot. + forced_scene_cut = False + if (self.max_chunks_per_shot > 0 + and chunks_from_current_video >= self.max_chunks_per_shot): + vp = video_files[current_video_idx] + _, ofps = self._get_video_info(vp) + current_start_frame += int(np.round(ofps)) + chunks_from_current_video = 0 + forced_scene_cut = True + + video_path = video_files[current_video_idx] + total_frames, original_fps = self._get_video_info(video_path) + + can_sample = True + while not self._can_sample_from_position( + total_frames, original_fps, self.subsequent_chunk_frames, current_start_frame + ): + if self.single_video_only: + can_sample = False + break + current_video_idx += 1 + current_start_frame = 0 + chunks_from_current_video = 0 + if current_video_idx >= len(video_files): + can_sample = False + break + video_path = video_files[current_video_idx] + total_frames, original_fps = self._get_video_info(video_path) + + if not can_sample: + if self.allow_padding: + break + return self._sample_failure( + f"{folder_name}: remaining videos are too short for the next chunk" + ) + + is_scene_cut = (current_video_idx != prev_seg_video_idx) or forced_scene_cut + + # Sample segment + segment_frames, total_frames, original_fps = self._sample_frames_from_video( + video_path, self.subsequent_chunk_frames, current_start_frame + ) + all_segments.append(segment_frames) + + prompt = self._load_caption(video_path, folder_name) + if is_scene_cut and self.scene_cut_prefix: + prompt = self.scene_cut_prefix + prompt + prompts_list.append(prompt) + + prev_seg_video_idx = current_video_idx + chunks_from_current_video += 1 + + # Update position for next sampling + sampling_interval = original_fps / self.target_fps + next_start_frame = current_start_frame + self.subsequent_chunk_frames * sampling_interval + + # If we've exhausted this video, move to next + if int(np.round(next_start_frame)) >= total_frames: + if self.single_video_only: + if seg_idx < self.num_subsequent_segments - 1: + return self._sample_failure( + f"{folder_name}: single-video sample is too short" + ) + else: + current_video_idx += 1 + current_start_frame = 0 + chunks_from_current_video = 0 + else: + current_start_frame = int(np.round(next_start_frame)) + + num_filled_segments = len(all_segments) + if num_filled_segments == 0: + num_valid_latent_frames = 0 + else: + num_valid_latent_frames = ( + self.first_chunk_latent_frames + + (num_filled_segments - 1) * self.num_frame_per_block + ) + + # Reject if below minimum latent frame threshold + if self.allow_padding and self.min_latent_frames > 0: + if num_valid_latent_frames < self.min_latent_frames: + return self._sample_failure( + f"{folder_name}: only {num_valid_latent_frames} valid latent frames, " + f"below min_latent_frames={self.min_latent_frames}" + ) + + if num_filled_segments < self.total_segments: + last_prompt = prompts_list[-1] if prompts_list else "" + prompts_list.extend([last_prompt] * (self.total_segments - num_filled_segments)) + + # Concatenate all segments: (total_frames, 3, height, width) + concatenated_video = torch.cat(all_segments, dim=0) + + # Ensure we have exactly total_frames + if concatenated_video.shape[0] != self.total_frames: + # Pad or trim if necessary + if concatenated_video.shape[0] < self.total_frames: + # Pad with last frame + last_frame = concatenated_video[-1:].repeat(self.total_frames - concatenated_video.shape[0], 1, 1, 1) + concatenated_video = torch.cat([concatenated_video, last_frame], dim=0) + else: + # Trim + concatenated_video = concatenated_video[:self.total_frames] + + result = { + 'frames': concatenated_video.permute(1, 0, 2, 3), + 'prompts': prompts_list, + 'idx': folder_idx + } + if self.return_image: + result['image'] = concatenated_video[0] + if self.allow_padding: + result['num_valid_latent_frames'] = num_valid_latent_frames + return True, result + except Exception as exc: + return self._sample_failure(f"{folder_name}: {type(exc).__name__}: {exc}") + + def __getitem__(self, idx): + start_time = time.monotonic() + last_warning_time = start_time + attempts = 0 + last_failure = None + + def maybe_warn(folder_idx, failure_reason): + nonlocal last_warning_time + if self.sample_warning_seconds <= 0: + return + elapsed = time.monotonic() - start_time + if elapsed < self.sample_warning_seconds: + return + if ( + self.sample_warning_interval_seconds > 0 + and time.monotonic() - last_warning_time < self.sample_warning_interval_seconds + ): + return + last_warning_time = time.monotonic() + folder_name = self.folders[folder_idx % len(self.folders)].name + warnings.warn( + "[MultiVideoConcatDataset] Still searching for a valid sample " + f"after {elapsed:.1f}s and {attempts} folder attempts " + f"(requested_idx={idx}, current_folder={folder_name}, " + f"last_failure={failure_reason}). This usually means the dataset " + f"does not contain enough video duration for total_frames={self.total_frames} " + f"at target_fps={self.target_fps}. Consider reducing the training " + "window, enabling allow_padding, lowering min_latent_frames, or " + "pre-filtering invalid folders.", + RuntimeWarning, + stacklevel=2, + ) + + # First try the requested folder + attempts += 1 + success, result = self._try_get_item_from_folder(idx, deterministic=self.deterministic) + if success: + return result + last_failure = result + maybe_warn(idx, last_failure) + + # If the requested folder fails, try other folders. + # If any valid folder exists in the dataset, try to return data from it: + # scan every other folder starting from idx + 1 and return the first + # successful sample. + num_folders = len(self.folders) + for i in range(1, num_folders): + alt_idx = (idx + i) % num_folders + attempts += 1 + success, result = self._try_get_item_from_folder( + alt_idx, + deterministic=self.deterministic, + ) + if success: + return result + last_failure = result + maybe_warn(alt_idx, last_failure) + + # If all attempts fail, raise an error + elapsed = time.monotonic() - start_time + if self.sample_warning_seconds > 0 and elapsed >= self.sample_warning_seconds: + warnings.warn( + "[MultiVideoConcatDataset] No valid sample was found after " + f"{elapsed:.1f}s and {attempts} folder attempts " + f"(requested_idx={idx}, last_failure={last_failure}).", + RuntimeWarning, + stacklevel=2, + ) + raise ValueError( + f"Failed to sample valid data from folder {idx} and nearby folders. " + f"This may indicate insufficient valid videos in the dataset. " + f"Tried {attempts} folders in {elapsed:.1f}s. Last failure: {last_failure}" + ) + + +def cycle(dl): + while True: + for data in dl: + yield data + +def multi_video_collate_fn(batch): + # batch is a length-B list of dictionaries returned by __getitem__. + frames = torch.stack([b["frames"] for b in batch], dim=0) # (B, T, C, H, W) + + # Keep prompts as one list per sample: + # [[p0_seg0, p0_seg1, ...], [p1_seg0, ...], ...]. + prompts_list = [b["prompts"] for b in batch] # List[List[str]] + + idx = torch.tensor([b["idx"] for b in batch], dtype=torch.long) + + result = { + "frames": frames, + "prompts": prompts_list, + "idx": idx, + } + + if "image" in batch[0]: + result["image"] = torch.stack([b["image"] for b in batch], dim=0) + + if "num_valid_latent_frames" in batch[0]: + result["num_valid_latent_frames"] = torch.tensor( + [b["num_valid_latent_frames"] for b in batch], dtype=torch.long + ) + + return result + + +def eval_collate_fn(batch): + """Collate for text-only datasets (no frames).""" + prompts_list = [b["prompts"] for b in batch] + idx = torch.tensor([b["idx"] for b in batch], dtype=torch.long) + result = { + "prompts": prompts_list, + "idx": idx, + } + if "shot_durations" in batch[0]: + result["shot_durations"] = [b["shot_durations"] for b in batch] + return result diff --git a/utils/distributed.py b/utils/distributed.py new file mode 100644 index 0000000..acd5144 --- /dev/null +++ b/utils/distributed.py @@ -0,0 +1,149 @@ +from datetime import timedelta +from functools import partial +import os +import torch +import torch.distributed as dist +from torch.distributed.fsdp import FullStateDictConfig, FullyShardedDataParallel as FSDP, MixedPrecision, ShardingStrategy, StateDictType +from torch.distributed.fsdp.api import CPUOffload +from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy, transformer_auto_wrap_policy + + +def fsdp_state_dict(model): + fsdp_fullstate_save_policy = FullStateDictConfig( + offload_to_cpu=True, rank0_only=True + ) + with FSDP.state_dict_type( + model, StateDictType.FULL_STATE_DICT, fsdp_fullstate_save_policy + ): + checkpoint = model.state_dict() + + return checkpoint + + +def fsdp_wrap(module, sharding_strategy="full", mixed_precision=False, wrap_strategy="size", min_num_params=int(5e7), transformer_module=None, cpu_offload=False): + if mixed_precision: + mixed_precision_policy = MixedPrecision( + param_dtype=torch.bfloat16, + reduce_dtype=torch.float32, + buffer_dtype=torch.float32, + cast_forward_inputs=False + ) + else: + mixed_precision_policy = None + + if wrap_strategy == "transformer": + auto_wrap_policy = partial( + transformer_auto_wrap_policy, + transformer_layer_cls=transformer_module + ) + elif wrap_strategy == "size": + auto_wrap_policy = partial( + size_based_auto_wrap_policy, + min_num_params=min_num_params + ) + else: + raise ValueError(f"Invalid wrap strategy: {wrap_strategy}") + + os.environ["NCCL_CROSS_NIC"] = "1" + + sharding_strategy = { + "full": ShardingStrategy.FULL_SHARD, + "hybrid_full": ShardingStrategy.HYBRID_SHARD, + "hybrid_zero2": ShardingStrategy._HYBRID_SHARD_ZERO2, + "no_shard": ShardingStrategy.NO_SHARD, + }[sharding_strategy] + + module = FSDP( + module, + auto_wrap_policy=auto_wrap_policy, + sharding_strategy=sharding_strategy, + mixed_precision=mixed_precision_policy, + device_id=torch.cuda.current_device(), + limit_all_gathers=True, + use_orig_params=True, + cpu_offload=CPUOffload(offload_params=cpu_offload), + sync_module_states=False # Load ckpt on rank 0 and sync to other ranks + ) + return module + + +def barrier(): + if dist.is_initialized(): + dist.barrier() + + +def launch_distributed_job(backend: str = "nccl"): + rank = int(os.environ["RANK"]) + local_rank = int(os.environ["LOCAL_RANK"]) + world_size = int(os.environ["WORLD_SIZE"]) + host = os.environ["MASTER_ADDR"] + port = int(os.environ["MASTER_PORT"]) + + if ":" in host: # IPv6 + init_method = f"tcp://[{host}]:{port}" + else: # IPv4 + init_method = f"tcp://{host}:{port}" + # Use a long timeout so that slow collectives during checkpoint saving + # (e.g. FSDP.optim_state_dict all-gather + rank0-only disk write for a + # multi-GB full optimizer state) do not trip the NCCL watchdog on other + # ranks while they wait at the post-save barrier. + dist.init_process_group(rank=rank, world_size=world_size, backend=backend, + init_method=init_method, timeout=timedelta(minutes=60)) + torch.cuda.set_device(local_rank) + + +class EMA_FSDP: + def __init__(self, fsdp_module: torch.nn.Module, decay: float = 0.999): + self.decay = decay + self.shadow = {} + self._init_shadow(fsdp_module) + + @staticmethod + def _clean_param_name(name: str) -> str: + """Remove FSDP wrapper prefixes from parameter names.""" + return name.replace("_fsdp_wrapped_module.", "").replace("_checkpoint_wrapped_module.", "").replace("_orig_mod.", "") + + @torch.no_grad() + def _init_shadow(self, fsdp_module): + from torch.distributed.fsdp import FullyShardedDataParallel as FSDP + with FSDP.summon_full_params(fsdp_module, writeback=False): + for n, p in fsdp_module.module.named_parameters(): + # Clean the parameter name to remove FSDP prefixes + # This ensures shadow keys are compatible with unwrapped models for inference + cleaned_name = self._clean_param_name(n) + self.shadow[cleaned_name] = p.detach().clone().float().cpu() + + @torch.no_grad() + def update(self, fsdp_module): + d = self.decay + from torch.distributed.fsdp import FullyShardedDataParallel as FSDP + with FSDP.summon_full_params(fsdp_module, writeback=False): + for n, p in fsdp_module.module.named_parameters(): + cleaned_name = self._clean_param_name(n) + if cleaned_name in self.shadow: + self.shadow[cleaned_name].mul_(d).add_(p.detach().float().cpu(), alpha=1. - d) + + # Optional helpers --------------------------------------------------- + def state_dict(self): + # Return shadow dict directly - keys are already cleaned during init/update + # This makes the state_dict directly usable for inference with unwrapped models + return self.shadow # picklable + + def load_state_dict(self, sd): + # Handle both cases: with or without FSDP prefixes + # This ensures backward compatibility and flexibility + cleaned_sd = {} + for k, v in sd.items(): + # Remove FSDP prefixes if present to match internal naming convention + cleaned_key = self._clean_param_name(k) + cleaned_sd[cleaned_key] = v.clone() + self.shadow = cleaned_sd + + def copy_to(self, fsdp_module): + # load EMA weights into an (unwrapped) copy of the generator + from torch.distributed.fsdp import FullyShardedDataParallel as FSDP + with FSDP.summon_full_params(fsdp_module, writeback=True): + for n, p in fsdp_module.module.named_parameters(): + cleaned_name = self._clean_param_name(n) + if cleaned_name in self.shadow: + p.data.copy_(self.shadow[cleaned_name].to(p.dtype, device=p.device)) diff --git a/utils/error_buffer.py b/utils/error_buffer.py new file mode 100644 index 0000000..678c3b3 --- /dev/null +++ b/utils/error_buffer.py @@ -0,0 +1,321 @@ +# Adopted from https://github.com/vita-epfl/Stable-Video-Infinity +# SPDX-License-Identifier: Apache-2.0 + +import random +import torch + + +class ErrorBuffer: + """Bucketed ring buffer for storing prediction errors on CPU. + + Two layouts are supported: + + * **1D (timestep-only)** — when ``num_blocks <= 0``. Buckets are keyed by + the diffusion timestep. This is the original SVI behavior. + + * **2D (position × timestep)** — when ``num_blocks > 0``. Each entry is + keyed by both the global block position along the sequence and the + timestep. Inject paths can then choose: + - ``sample(pos, t)``: match BOTH position and timestep + (E_vid / E_noise — noise-level dependent errors) + - ``sample_pos_any_t(pos)``: match position, sample uniformly across + timesteps (E_img — position-dependent context corruption that is + agnostic to the current denoising step) + - ``sample_global()``: legacy fallback, samples uniformly everywhere + + The 2D layout encodes the teacher-forcing insight that ``noisy_suffix[i]`` + looks at clean_prefix[0..i] during training but at model rollouts during + inference; storing prediction errors per-position therefore lets later + blocks self-feed larger errors without any manual position ramp. + + **Sharded timestep buckets** (``shard_size > 1``): + Each rank only allocates the timestep buckets it owns + (``t_bucket % shard_size == shard_rank``), reducing per-rank CPU memory + by ~``shard_size`` times. Typically ``shard_rank/shard_size`` are set to + ``sp_rank/sp_size`` so that sharding is per-SP-rank and saving follows + the same per-SP-rank pattern as the 2D position split. On ``add()``, + non-owned buckets are silently skipped; on ``sample()``, non-owned buckets + are remapped to the nearest owned one. + """ + + def __init__( + self, + num_buckets=40, + max_size_per_bucket=50, + num_train_timesteps=1000, + modulate_factor=0.3, + replacement_strategy="random", + num_blocks=0, + global_block_offset=0, + shard_rank=0, + shard_size=1, + ): + self.num_buckets = num_buckets + self.max_size = max_size_per_bucket + self.num_train_timesteps = num_train_timesteps + self.modulate_factor = modulate_factor + self.replacement_strategy = replacement_strategy + self.bucket_width = num_train_timesteps / num_buckets + self.num_blocks = int(num_blocks) if num_blocks else 0 + # ``global_block_offset`` is only used for stats / debug display so + # users can tell which absolute positions of the full sequence this + # buffer covers (the LAST SP rank carries the highest accumulated + # error positions). It does NOT participate in bucket keying. + self.global_block_offset = int(global_block_offset) + + self.shard_rank = int(shard_rank) + self.shard_size = max(int(shard_size), 1) + self._owned_t_buckets = sorted( + t for t in range(num_buckets) if t % self.shard_size == self.shard_rank + ) + + if self.num_blocks > 0: + self.buckets = { + (p, t): [] + for p in range(self.num_blocks) + for t in self._owned_t_buckets + } + else: + self.buckets = {t: [] for t in self._owned_t_buckets} + self.total_added = 0 + + # ------------------------------------------------------------------ keys + def _t_bucket(self, timestep_index): + b = int(timestep_index / self.bucket_width) + return max(0, min(b, self.num_buckets - 1)) + + def _is_owned_t(self, t_bucket): + return self.shard_size <= 1 or (t_bucket % self.shard_size == self.shard_rank) + + def _nearest_owned_t(self, t_bucket): + """Remap ``t_bucket`` to the closest owned timestep bucket.""" + if self.shard_size <= 1 or self._is_owned_t(t_bucket): + return t_bucket + fwd = (self.shard_rank - t_bucket % self.shard_size) % self.shard_size + bwd = self.shard_size - fwd + t_up, t_down = t_bucket + fwd, t_bucket - bwd + up_ok = 0 <= t_up < self.num_buckets + down_ok = 0 <= t_down < self.num_buckets + if up_ok and down_ok: + return t_up if fwd <= bwd else t_down + return t_up if up_ok else t_down + + def _make_key(self, t_bucket, block_pos): + if self.num_blocks > 0: + assert block_pos is not None, "block_pos required when num_blocks>0" + p = max(0, min(int(block_pos), self.num_blocks - 1)) + return (p, t_bucket) + return t_bucket + + # ------------------------------------------------------------------ add + def add(self, error_block, timestep_index, block_pos=None): + """Store a single block error into the matching bucket. + + Args: + error_block: (block_size, C, H, W) tensor + timestep_index: int, raw index in [0, num_train_timesteps) + block_pos: int, global block position; required iff num_blocks>0 + """ + t = self._t_bucket(timestep_index) + if not self._is_owned_t(t): + return + key = self._make_key(t, block_pos) + # Store in the source dtype on CPU to match SVI (which keeps bf16), + # cutting buffer memory in half vs. casting to fp32. + entry = error_block.detach().to("cpu", copy=True) + + buf = self.buckets[key] + if len(buf) < self.max_size: + buf.append(entry) + else: + if self.replacement_strategy == "fifo": + buf.pop(0) + buf.append(entry) + elif self.replacement_strategy == "l2": + stacked = torch.stack(buf) + dists = (stacked - entry.unsqueeze(0)).flatten(1).norm(dim=1) + most_similar = torch.argmin(dists).item() + buf[most_similar] = entry + else: # "random" (default) + idx = random.randint(0, self.max_size - 1) + buf[idx] = entry + self.total_added += 1 + + # ------------------------------------------------------------------ sample + def sample(self, timestep_index, device, dtype, block_pos=None): + """Sample one entry matching (block_pos, timestep_index) when 2D, or + just timestep_index when 1D. Non-owned timestep buckets are + transparently remapped to the nearest owned one. Returns None if the + (remapped) bucket is empty.""" + t = self._nearest_owned_t(self._t_bucket(timestep_index)) + key = self._make_key(t, block_pos) + buf = self.buckets[key] + if not buf: + return None + err = random.choice(buf) + return self._modulate(err).to(device=device, dtype=dtype) + + def sample_pos_any_t(self, block_pos, device, dtype): + """For 2D buffers: sample at the given position, with random timestep. + + This is the natural choice for context (E_img) injection — the clean + prefix is the result of a full ODE rollout so its accumulated error + could have originated at any timestep, but its magnitude scales with + position along the sequence. + + Falls back to ``sample_global`` when the buffer is 1D. + Only owned timestep buckets are scanned. + """ + if self.num_blocks <= 0: + return self.sample_global(device, dtype) + p = max(0, min(int(block_pos), self.num_blocks - 1)) + all_entries = [] + for t in self._owned_t_buckets: + all_entries.extend(self.buckets[(p, t)]) + if not all_entries: + return None + err = random.choice(all_entries) + return self._modulate(err).to(device=device, dtype=dtype) + + def sample_global(self, device, dtype): + """Sample one entry uniformly from ALL buckets (legacy SVI E_img).""" + all_entries = [] + for buf in self.buckets.values(): + all_entries.extend(buf) + if not all_entries: + return None + err = random.choice(all_entries) + return self._modulate(err).to(device=device, dtype=dtype) + + # ------------------------------------------------------------------ misc + def _modulate(self, err): + if self.modulate_factor > 0: + lo = 1.0 - self.modulate_factor + hi = 1.0 + self.modulate_factor + err = err * random.uniform(lo, hi) + return err + + def is_empty(self): + return self.total_added == 0 + + def has_pos(self, block_pos): + """Whether ANY owned timestep bucket at ``block_pos`` has samples (2D only).""" + if self.num_blocks <= 0: + return not self.is_empty() + p = max(0, min(int(block_pos), self.num_blocks - 1)) + return any(len(self.buckets[(p, t)]) > 0 for t in self._owned_t_buckets) + + def stats(self): + filled = sum(1 for b in self.buckets.values() if len(b) > 0) + total = sum(len(b) for b in self.buckets.values()) + num_owned_t = len(self._owned_t_buckets) + denom = self.num_blocks * num_owned_t if self.num_blocks > 0 else num_owned_t + out = { + "total_added": self.total_added, + "filled_buckets": f"{filled}/{denom}", + "total_entries": total, + } + if self.shard_size > 1: + out["shard"] = f"shard_rank={self.shard_rank}/{self.shard_size} ({num_owned_t}/{self.num_buckets} t-buckets)" + if self.num_blocks > 0: + lo = self.global_block_offset + hi = self.global_block_offset + self.num_blocks + out["global_block_range"] = f"[{lo},{hi})" + return out + + def state_dict(self): + # Keys are tuples (pos, t) when 2D — torch.save handles them fine + # via pickle. We serialize the bucket layout so loaders can validate. + return { + "buckets": {k: list(v) for k, v in self.buckets.items()}, + "total_added": self.total_added, + "num_blocks": self.num_blocks, + "num_buckets": self.num_buckets, + "global_block_offset": self.global_block_offset, + "shard_rank": self.shard_rank, + "shard_size": self.shard_size, + } + + def load_state_dict(self, state, strict_offset=True): + """Restore buckets from a serialized state. + + Args: + state: dict produced by ``state_dict``. + strict_offset: when True (default) and the buffer is 2D, + refuse to load if the saved ``global_block_offset`` does + not match the current one. This prevents the silent + position-misalignment bug under SP, where a checkpoint + saved by SP rank 0 (covering global blocks ``[0, B)``) + would otherwise be loaded into SP rank 1 (which expects + ``[B, 2B)``) and corrupt position-bucketed sampling. + Pass ``strict_offset=False`` only for backward-compat + with checkpoints saved before this field existed. + """ + if self.num_blocks > 0 and strict_offset: + saved_off = state.get("global_block_offset", None) + if saved_off is None: + raise RuntimeError( + "Refusing to load: this is a 2D position-bucketed buffer " + "but the checkpoint has no `global_block_offset` field. " + "Pass strict_offset=False if you accept the misalignment risk." + ) + if int(saved_off) != self.global_block_offset: + raise RuntimeError( + f"Refusing to load: checkpoint covers global blocks " + f"starting at {saved_off}, but this rank covers blocks " + f"starting at {self.global_block_offset}. Make sure each " + f"SP rank loads its own per-rank checkpoint file." + ) + # Shard check: warn but don't crash if shard layout changed (e.g. + # resuming a non-sharded checkpoint into a sharded buffer is fine — + # we just load whichever buckets overlap). + saved_shard_size = int(state.get("shard_size", state.get("dp_size", 1))) + saved_shard_rank = int(state.get("shard_rank", state.get("dp_rank", 0))) + if saved_shard_size != self.shard_size or saved_shard_rank != self.shard_rank: + import logging + logging.warning( + f"[ErrorBuffer] Shard layout changed: checkpoint was " + f"shard_rank={saved_shard_rank}/{saved_shard_size}, current is " + f"shard_rank={self.shard_rank}/{self.shard_size}. " + f"Loading overlapping buckets only." + ) + + saved = state["buckets"] + # Lenient match: ignore keys that don't exist in the current layout. + for k in self.buckets: + if k in saved: + self.buckets[k] = saved[k] + elif isinstance(k, tuple): + # Try string-form key from older serializations + continue + elif str(k) in saved: + self.buckets[k] = saved[str(k)] + self.total_added = int(state.get("total_added", 0)) + + +def build_error_buffer(config, num_blocks=0, global_block_offset=0, + shard_rank=0, shard_size=1): + """Build an ErrorBuffer from an OmegaConf/dict config node. + + When ``num_blocks > 0`` the buffer becomes 2D (position × timestep), + enabling teacher-forcing-aware position-dependent error injection. + Pass ``global_block_offset`` so logs can identify which absolute slice + of the full sequence this rank's buffer covers (e.g. the last SP rank + is responsible for the most error-accumulated tail blocks). + + ``shard_rank`` / ``shard_size`` shard timestep buckets: each rank only + allocates the buckets it owns, reducing per-rank CPU memory by + ~``shard_size`` times. Typically set to ``(sp_rank, sp_size)``. + """ + cfg = config if isinstance(config, dict) else dict(config) + return ErrorBuffer( + num_buckets=cfg.get("num_buckets", 40), + max_size_per_bucket=cfg.get("buffer_size_per_bucket", 50), + num_train_timesteps=cfg.get("num_train_timesteps", 1000), + modulate_factor=cfg.get("modulate_factor", 0.3), + replacement_strategy=cfg.get("replacement_strategy", "random"), + num_blocks=num_blocks, + global_block_offset=global_block_offset, + shard_rank=shard_rank, + shard_size=shard_size, + ) diff --git a/utils/fp8.py b/utils/fp8.py new file mode 100644 index 0000000..d823ac3 --- /dev/null +++ b/utils/fp8.py @@ -0,0 +1,78 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""TorchAO FP8 post-training quantization helpers.""" + +import torch +import torch.nn as nn + + +# Small conditioning/output projections are both numerically sensitive and too +# small to amortize dynamic activation quantization on H100. +_BF16_MODULES = { + "text_embedding.0", + "text_embedding.2", + "time_embedding.0", + "time_embedding.2", + "time_projection.1", + "head.head", +} + + +def quantize_model_fp8(model: nn.Module, *, verbose: bool = False) -> int: + """Quantize compatible BF16 linear layers to row-wise dynamic FP8 in-place.""" + if not torch.cuda.is_available(): + raise RuntimeError("TorchAO FP8 inference requires a CUDA GPU.") + + device = next(model.parameters()).device + if device.type != "cuda": + raise ValueError("Move the BF16 model to CUDA before applying FP8 quantization.") + if torch.cuda.get_device_capability(device) < (8, 9): + raise RuntimeError("TorchAO FP8 inference requires compute capability 8.9 or newer.") + + try: + from torchao.quantization import ( + Float8DynamicActivationFloat8WeightConfig, + PerRow, + quantize_, + ) + except ImportError as exc: + raise ImportError( + "FP8 inference requires a TorchAO version compatible with the installed PyTorch." + ) from exc + + quantized_names = [] + skipped_names = [] + + def filter_fn(module: nn.Module, fqn: str) -> bool: + if not isinstance(module, nn.Linear): + return False + if fqn in _BF16_MODULES: + skipped_names.append(fqn) + return False + if module.weight.dtype != torch.bfloat16: + raise TypeError(f"FP8 layer {fqn!r} must be BF16, got {module.weight.dtype}.") + out_features, in_features = module.weight.shape + if in_features % 16 or out_features % 16: + skipped_names.append(fqn) + return False + quantized_names.append(fqn) + return True + + quantize_( + model, + Float8DynamicActivationFloat8WeightConfig(granularity=PerRow()), + filter_fn=filter_fn, + ) + if verbose: + print( + f"[FP8] TorchAO W8A8 quantized {len(quantized_names)} linear layers " + f"with row-wise scaling; kept {len(skipped_names)} layers in BF16" + ) + return len(quantized_names) diff --git a/utils/i2v_conditioning.py b/utils/i2v_conditioning.py new file mode 100644 index 0000000..2a12697 --- /dev/null +++ b/utils/i2v_conditioning.py @@ -0,0 +1,71 @@ +import torch + + +def _get_i2v_context_frames( + image_or_video: torch.Tensor, + initial_latent: torch.Tensor | None, +) -> int: + if initial_latent is None: + return 0 + if image_or_video.ndim != initial_latent.ndim: + raise ValueError( + f"initial_latent rank {initial_latent.ndim} must match " + f"image/video rank {image_or_video.ndim}." + ) + if image_or_video.shape[0] != initial_latent.shape[0]: + raise ValueError( + f"initial_latent batch {initial_latent.shape[0]} must match " + f"image/video batch {image_or_video.shape[0]}." + ) + if image_or_video.shape[2:] != initial_latent.shape[2:]: + raise ValueError( + f"initial_latent shape after frames {tuple(initial_latent.shape[2:])} " + f"must match image/video {tuple(image_or_video.shape[2:])}." + ) + + context_frames = int(initial_latent.shape[1]) + if context_frames <= 0: + return 0 + if context_frames >= image_or_video.shape[1]: + raise ValueError( + f"initial_latent has {context_frames} frames but clip has " + f"{image_or_video.shape[1]} frames." + ) + return context_frames + + +def _overwrite_i2v_context( + image_or_video: torch.Tensor, + initial_latent: torch.Tensor | None, + context_frames: int, +) -> torch.Tensor: + if context_frames <= 0: + return image_or_video + output = image_or_video.clone() + output[:, :context_frames] = initial_latent[:, :context_frames].to( + device=output.device, + dtype=output.dtype, + ) + return output + + +def _zero_i2v_context_timestep( + timestep: torch.Tensor, + context_frames: int, +) -> torch.Tensor: + if context_frames <= 0: + return timestep + output = timestep.clone() + output[:, :context_frames] = 0 + return output + + +def _i2v_loss_mask_like( + image_or_video: torch.Tensor, + context_frames: int, +) -> torch.Tensor | None: + if context_frames <= 0: + return None + mask = torch.ones_like(image_or_video, dtype=torch.bool) + mask[:, :context_frames] = False + return mask diff --git a/utils/inference_utils.py b/utils/inference_utils.py new file mode 100644 index 0000000..87360a4 --- /dev/null +++ b/utils/inference_utils.py @@ -0,0 +1,312 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""Small helpers for release inference examples.""" + +from __future__ import annotations + +import os +from collections.abc import Mapping +from pathlib import Path +from typing import Sequence + +import torch +from einops import rearrange +from torchvision.io import write_video + +from utils.nvfp4_checkpoint import ( + clean_fsdp_state_dict_keys, + drop_fouroversix_master_weights, + is_nvfp4_state_dict, + is_te_nvfp4_checkpoint, + quantize_model_for_fouroversix_nvfp4, + quantize_model_for_transformer_engine_nvfp4, + unwrap_generator_state_dict, +) + + +def _torch_load(path: str): + try: + return torch.load(path, map_location="cpu", weights_only=False) + except TypeError: + return torch.load(path, map_location="cpu") + + +def load_generator_checkpoint(generator, checkpoint_path: str, *, use_ema: bool = False, strict: bool | None = None): + """Load a LongLive generator checkpoint into ``generator``.""" + checkpoint = _torch_load(checkpoint_path) + state_dict = unwrap_generator_state_dict(checkpoint, use_ema=use_ema) + if use_ema: + state_dict = clean_fsdp_state_dict_keys(state_dict) + if strict is None: + strict = not use_ema + return generator.load_state_dict(state_dict, strict=strict) + + +def _load_lora_state_dict(lora_ckpt_path: str) -> Mapping[str, torch.Tensor]: + """Load a LoRA checkpoint, unwrapping ``generator_lora`` when present.""" + checkpoint = _torch_load(lora_ckpt_path) + if isinstance(checkpoint, Mapping) and "generator_lora" in checkpoint: + return checkpoint["generator_lora"] + return checkpoint + + +def apply_and_merge_lora( + pipeline, + config, + *, + device: torch.device | str | None = None, + dtype: torch.dtype = torch.bfloat16, + verbose: bool = False, +): + """Wrap ``pipeline.generator.model`` with a LoRA adapter, load weights, and merge. + + The merged module ends up structurally identical to the original generator + (``nn.Linear`` layers carrying the base + LoRA delta), which is what NVFP4 + quantization needs as its starting point. + + Returns ``True`` when LoRA was applied and merged, ``False`` when the config + did not request a LoRA adapter. + """ + adapter_cfg = getattr(config, "adapter", None) + lora_ckpt = getattr(config, "lora_ckpt", None) + if adapter_cfg is None or not lora_ckpt: + return False + + import peft + from utils.lora_utils import configure_lora_for_model + + if device is not None: + pipeline.generator.to(device=torch.device(device), dtype=dtype) + else: + pipeline.generator.to(dtype=dtype) + + if verbose: + print(f"[LoRA] Wrapping generator with adapter config: {adapter_cfg}") + pipeline.generator.model = configure_lora_for_model( + pipeline.generator.model, + model_name="generator", + lora_config=adapter_cfg, + is_main_process=verbose, + ) + + if verbose: + print(f"[LoRA] Loading LoRA weights from: {lora_ckpt}") + lora_state = _load_lora_state_dict(lora_ckpt) + peft.set_peft_model_state_dict(pipeline.generator.model, lora_state) # type: ignore[arg-type] + + if verbose: + print("[LoRA] Merging LoRA delta into base weights (merge_and_unload)...") + pipeline.generator.model = pipeline.generator.model.merge_and_unload(safe_merge=True) + pipeline.generator.model.eval().requires_grad_(False) + pipeline.is_lora_enabled = False + pipeline.is_lora_merged = True + return True + + +def place_vae_for_streaming(pipeline, config) -> torch.device | None: + """Move ``pipeline.vae`` to ``config.vae_device`` for streaming-pipeline decode. + + Only acts when both ``streaming_vae`` and ``vae_device`` are set; otherwise + leaves the VAE on whatever device the rest of the pipeline already uses. + Mirrors the relocation done in ``inference.py`` so that quick-start scripts + can opt in to the streaming-pipeline VAE simply by enabling those config + fields. + """ + if not bool(getattr(config, "streaming_vae", False)): + return None + vae_device_str = getattr(config, "vae_device", None) + if not vae_device_str: + return None + + vae_device = torch.device(vae_device_str) + pipeline.vae.to(device="cpu") + pipeline.vae.to(device=vae_device) + if hasattr(pipeline.vae, "mean"): + pipeline.vae.mean = pipeline.vae.mean.to(device=vae_device) + pipeline.vae.std = pipeline.vae.std.to(device=vae_device) + return vae_device + + +def setup_nvfp4_pipeline( + pipeline, + config, + device: torch.device | str, + *, + verbose: bool = False, +): + """Configure ``pipeline`` for NVFP4 inference from a generator checkpoint. + + Handles both supported NVFP4 backends: + + * ``model_quant_use_transformer_engine=True`` -> a BF16 generator checkpoint + that gets wrapped with TransformerEngine NVFP4 modules and materialized + after moving to ``device``. + * ``model_quant_use_transformer_engine=False`` -> either a BF16 generator + checkpoint that gets quantized with FourOverSix at load time, or a + pre-materialized FourOverSix NVFP4 state dict loaded directly into the + already-quantized architecture. + + Optional LoRA support (BF16 base only): when ``config.adapter`` and + ``config.lora_ckpt`` are both set, the LoRA adapter is loaded on the BF16 + base generator, merged via ``merge_and_unload``, and the resulting weights + are then quantized — so the same yaml can swap between TE and FourOverSix + backends without pre-merging the LoRA checkpoint. + + For materialized FourOverSix checkpoints LoRA cannot be applied (the master + weights have already been quantized away); ``lora_ckpt``/``adapter`` are + ignored in that case with a printed warning. + """ + if not bool(getattr(config, "model_quant", False)): + raise ValueError("setup_nvfp4_pipeline requires model_quant=true in the config.") + + generator_ckpt = getattr(config, "generator_ckpt", None) + if not generator_ckpt: + raise ValueError("checkpoints.generator_ckpt is required for NVFP4 inference.") + + use_te = bool(getattr(config, "model_quant_use_transformer_engine", False)) + device = torch.device(device) + use_ema = bool(getattr(config, "use_ema", False)) + + checkpoint = _torch_load(generator_ckpt) + state_dict = unwrap_generator_state_dict(checkpoint, use_ema=use_ema) + if use_ema: + state_dict = clean_fsdp_state_dict_keys(state_dict) + + if is_te_nvfp4_checkpoint(checkpoint): + raise ValueError( + "Detected a TransformerEngine module state_dict export (no longer supported). " + "Re-export with `--backend transformer_engine` (merged BF16) or `--backend fouroversix`." + ) + + is_prequantized = is_nvfp4_state_dict(state_dict) + has_lora_request = bool(getattr(config, "adapter", None)) and bool(getattr(config, "lora_ckpt", None)) + + pipeline.is_lora_enabled = False + pipeline.is_lora_merged = False + + if is_prequantized: + if has_lora_request and verbose: + print( + "[NVFP4] generator_ckpt is a materialized FourOverSix NVFP4 checkpoint; " + "ignoring lora_ckpt/adapter because the master weights are already quantized. " + "Use a BF16 base checkpoint if you need to load a LoRA on top." + ) + if use_te: + raise ValueError( + "generator_ckpt is a materialized NVFP4 (FourOverSix) checkpoint; set " + "model_quant_use_transformer_engine: false." + ) + pipeline.generator.model, _ = quantize_model_for_fouroversix_nvfp4( + pipeline.generator.model, + config=config, + keep_master_weights=False, + verbose=verbose, + ) + drop_fouroversix_master_weights(pipeline.generator.model) + pipeline.generator.load_state_dict(state_dict, strict=True) + + pipeline.text_encoder.to(dtype=torch.bfloat16) + pipeline.vae.to(dtype=torch.bfloat16) + else: + load_strict = not use_ema + pipeline.generator.load_state_dict(state_dict, strict=load_strict) + + if has_lora_request: + # Apply + merge LoRA on the BF16 base before quantization. Move the + # generator to CUDA first so the TE wrapper (which requires CUDA + # modules) can later replace the merged Linear layers in-place. + apply_and_merge_lora( + pipeline, + config, + device=device, + dtype=torch.bfloat16, + verbose=verbose, + ) + + if use_te: + pipeline.generator.model, _ = quantize_model_for_transformer_engine_nvfp4( + pipeline.generator.model, + config=config, + keep_master_weights=False, + verbose=verbose, + ) + te_fallback = bool(getattr(config, "model_quant_te_fallback_to_fouroversix", False)) + if te_fallback: + from utils.quant import _materialize_mixed_quantized_weights_for_inference as materialize_fn + else: + from utils.quant import _materialize_transformer_engine_weights_for_inference as materialize_fn + else: + pipeline.generator.model, _ = quantize_model_for_fouroversix_nvfp4( + pipeline.generator.model, + config=config, + keep_master_weights=False, + verbose=verbose, + ) + from utils.quant import _materialize_quantized_weights_for_inference as materialize_fn + + pipeline.to(dtype=torch.bfloat16) + materialize_fn(pipeline.generator.model, target_device=device) + + pipeline.generator.to(device=device) + pipeline.text_encoder.to(device=device) + pipeline.vae.to(device=device) + place_vae_for_streaming(pipeline, config) + + return pipeline + + +def prepare_single_prompt_inputs( + config, + prompt: str, + device: torch.device | str, + *, + dtype: torch.dtype = torch.bfloat16, + batch_size: int = 1, + generator: torch.Generator | None = None, +): + """Create the per-block prompt list and latent noise for one text prompt.""" + num_frames = int(getattr(config, "num_output_frames", config.image_or_video_shape[1])) + frames_per_block = int(getattr(config, "num_frame_per_block", 1)) + if num_frames % frames_per_block != 0: + raise ValueError(f"num_frames={num_frames} must be divisible by num_frame_per_block={frames_per_block}") + + latent_shape = list(config.image_or_video_shape[2:]) + if len(latent_shape) != 3: + raise ValueError(f"Expected latent shape [C, H, W], got {latent_shape}") + + num_blocks = num_frames // frames_per_block + prompts = [[prompt] * num_blocks for _ in range(batch_size)] + noise = torch.randn( + [batch_size, num_frames, *latent_shape], + device=device, + dtype=dtype, + generator=generator, + ) + return noise, prompts + + +def video_to_uint8(video: torch.Tensor) -> torch.Tensor: + """Convert a generated video tensor from [T, C, H, W] or [1, T, C, H, W] to uint8 THWC.""" + if video.ndim == 5: + if video.shape[0] != 1: + raise ValueError("video_to_uint8 expects a single sample when a batch dimension is present.") + video = video[0] + if video.ndim != 4: + raise ValueError(f"Expected video tensor with 4 dims, got shape={tuple(video.shape)}") + if video.shape[1] in (1, 3): + video = rearrange(video, "t c h w -> t h w c") + return (255.0 * video.cpu()).clamp(0, 255).to(torch.uint8) + + +def save_video(video: torch.Tensor, output_path: str | os.PathLike, *, fps: int = 24) -> None: + """Save a generated LongLive video tensor as an mp4 file.""" + output_path = Path(output_path) + output_path.parent.mkdir(parents=True, exist_ok=True) + write_video(str(output_path), video_to_uint8(video), fps=fps) diff --git a/utils/kernel/README.md b/utils/kernel/README.md new file mode 100644 index 0000000..01b3039 --- /dev/null +++ b/utils/kernel/README.md @@ -0,0 +1,54 @@ + + +# LongLive KV Dequant CUDA Extension + +Build from this directory: + +```bash +cd utils/kernel +OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 MAX_JOBS=4 \ + python setup.py build_ext --inplace +``` + +Runtime import: + +```python +from utils.kernel.kv_dequant import dequantize_kv_cache_fp4 +``` + +`utils.quant.dequantize_kv_cache()` already calls this extension first and falls +back to the original Triton path if the extension is not built. + +For direct calls, pass the same scale limits used by the QuantizedTensor's +`scale_rule`: + +- `static_6`: `e2m1_max=6.0`, `e4m3_max=448.0` +- `static_4`: `e2m1_max=4.0`, `e4m3_max=448.0` +- `mse` / `l1_norm` / `abs_max` 4o6 modes: `e2m1_max=6.0`, `e4m3_max=256.0` + +The normal `utils.quant.dequantize_kv_cache()` path reads these values from +`qt.scale_rule`, so manual selection is not needed there. + +You can also pass `scale_rule` directly: + +```python +out = dequantize_kv_cache_fp4( + values, + scale_factors, + amax, + num_heads=num_heads, + block_token_size=block_token_size, + dtype=torch.bfloat16, + scale_rule="static_6", +) +``` diff --git a/utils/kernel/__init__.py b/utils/kernel/__init__.py new file mode 100644 index 0000000..d0697c1 --- /dev/null +++ b/utils/kernel/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""Custom CUDA kernels used by LongLive.""" diff --git a/utils/kernel/kv_dequant.cpp b/utils/kernel/kv_dequant.cpp new file mode 100644 index 0000000..8520c17 --- /dev/null +++ b/utils/kernel/kv_dequant.cpp @@ -0,0 +1,20 @@ +// Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// You may not use this file except in compliance with the License. +// To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +// +// No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +// +// SPDX-License-Identifier: Apache-2.0 +#include + +TORCH_LIBRARY(longlive_kernels, m) +{ + m.def("dequantize_kv_cache_fp4(Tensor[] values, Tensor[] scale_factors, Tensor[] amax, int num_heads, int block_token_size, int dtype_code, float e2m1_max, float e4m3_max) -> Tensor"); +} + +PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) +{ + m.doc() = "LongLive custom CUDA kernels"; +} diff --git a/utils/kernel/kv_dequant.py b/utils/kernel/kv_dequant.py new file mode 100644 index 0000000..3523e6b --- /dev/null +++ b/utils/kernel/kv_dequant.py @@ -0,0 +1,82 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +import torch + +try: + from . import longlive_kv_dequant_cuda # noqa: F401 +except ImportError: + import longlive_kv_dequant_cuda # noqa: F401 + + +def _dtype_to_code(dtype: torch.dtype) -> int: + if dtype == torch.bfloat16: + return 0 + if dtype == torch.float16: + return 1 + if dtype == torch.float32: + return 2 + raise ValueError(f"Unsupported fused KV dequant dtype: {dtype}") + + +def scale_rule_to_fp4_limits(scale_rule) -> tuple[float, float]: + """Return the dequant denominator limits used by FourOverSix ScaleRule.""" + if hasattr(scale_rule, "max_allowed_e2m1_value") and hasattr( + scale_rule, "max_allowed_e4m3_value", + ): + return ( + float(scale_rule.max_allowed_e2m1_value()), + float(scale_rule.max_allowed_e4m3_value()), + ) + + normalized = str(scale_rule).lower() + if "." in normalized: + normalized = normalized.rsplit(".", 1)[-1] + normalized = normalized.strip().strip("\"'") + + if normalized == "static_4": + return 4.0, 448.0 + if normalized == "static_6": + return 6.0, 448.0 + if normalized in {"mse", "mae", "l1_norm", "abs_max"}: + return 6.0, 256.0 + + raise ValueError(f"Unsupported FP4 scale_rule: {scale_rule}") + + +def dequantize_kv_cache_fp4( + values: list[torch.Tensor], + scale_factors: list[torch.Tensor], + amax: list[torch.Tensor], + *, + num_heads: int, + block_token_size: int, + dtype: torch.dtype, + e2m1_max: float | None = None, + e4m3_max: float | None = None, + scale_rule=None, +) -> torch.Tensor: + """Dequantize multiple AR KV-cache chunks with one CUDA launch.""" + if e2m1_max is None or e4m3_max is None: + if scale_rule is None: + raise ValueError( + "Either e2m1_max/e4m3_max or scale_rule must be provided.", + ) + e2m1_max, e4m3_max = scale_rule_to_fp4_limits(scale_rule) + + return torch.ops.longlive_kernels.dequantize_kv_cache_fp4.default( + values, + scale_factors, + amax, + num_heads, + block_token_size, + _dtype_to_code(dtype), + e2m1_max, + e4m3_max, + ) diff --git a/utils/kernel/kv_dequant_cuda.cu b/utils/kernel/kv_dequant_cuda.cu new file mode 100644 index 0000000..e4a7e7c --- /dev/null +++ b/utils/kernel/kv_dequant_cuda.cu @@ -0,0 +1,244 @@ +// Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// You may not use this file except in compliance with the License. +// To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +// +// No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +// +// SPDX-License-Identifier: Apache-2.0 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace { + +#define CHECK_CUDA_TENSOR(x) TORCH_CHECK((x).is_cuda(), #x " must be a CUDA tensor") +#define CHECK_CONTIGUOUS(x) TORCH_CHECK((x).is_contiguous(), #x " must be contiguous") + +__device__ __constant__ float kE2M1ToFloat[16] = { + 0.0f, 0.5f, 1.0f, 1.5f, 2.0f, 3.0f, 4.0f, 6.0f, + -0.0f, -0.5f, -1.0f, -1.5f, -2.0f, -3.0f, -4.0f, -6.0f, +}; + +// iter-37: hardware FP4→FP16x2 via CUDA 12.8+ built-in API +// __nv_cvt_fp4x2_to_halfraw2 (wraps cvt.rn.f16x2.e2m1x2 PTX instruction). +// Returns __half2_raw with 2 fp16 values from 1 packed byte. +__device__ __forceinline__ __half2_raw e2m1x2_to_halfraw2(uint8_t byte) { + return __nv_cvt_fp4x2_to_halfraw2( + static_cast<__nv_fp4x2_storage_t>(byte), __NV_E2M1); +} + +__device__ __forceinline__ int64_t blocked_scale_index( + const int row, + const int scale_col, + const int scale_cols) +{ + // Inverse of fouroversix.quantize.utils.to_blocked for a scale matrix + // shaped [rows_padded, scale_cols]. + const int row_block = row / 128; + const int row_in_block = row - row_block * 128; + const int scale_col_block = scale_col / 4; + const int scale_col_in_block = scale_col - scale_col_block * 4; + const int scale_col_blocks = scale_cols / 4; + + const int logical_block = row_block * scale_col_blocks + scale_col_block; + return (((int64_t)logical_block * 32 + (row_in_block & 31)) * 16 + + (row_in_block >> 5) * 4 + scale_col_in_block); +} + +template +__global__ void fp4_kv_dequant_kernel( + const uint64_t* __restrict__ value_ptrs, + const uint64_t* __restrict__ scale_ptrs, + const uint64_t* __restrict__ amax_ptrs, + scalar_t* __restrict__ output, + const int64_t total_packed_values, + const int block_token_size, + const int num_heads, + const int packed_cols, + const int scale_cols, + const float inv_global_scale_denom) +{ + const int64_t packed_idx = (int64_t)blockIdx.x * blockDim.x + threadIdx.x; + if (packed_idx >= total_packed_values) { + return; + } + + const int col_pair = packed_idx % packed_cols; + const int64_t global_row = packed_idx / packed_cols; + const int rows_per_cache_block = block_token_size * num_heads; + const int cache_block = global_row / rows_per_cache_block; + const int row_in_cache_block = global_row - (int64_t)cache_block * rows_per_cache_block; + + const int token_in_block = row_in_cache_block / num_heads; + const int head = row_in_cache_block - token_in_block * num_heads; + const int out_token = cache_block * block_token_size + token_in_block; + + const auto* values = reinterpret_cast(value_ptrs[cache_block]); + const auto* scales = reinterpret_cast(scale_ptrs[cache_block]); + const auto* amax = reinterpret_cast(amax_ptrs[cache_block]); + + const uint8_t packed = values[(int64_t)row_in_cache_block * packed_cols + col_pair]; + const int scale_col = (col_pair * 2) / 16; + const int64_t scale_idx = blocked_scale_index(row_in_cache_block, scale_col, scale_cols); + const float scale = static_cast(scales[scale_idx]); + const float global_scale = amax[0] * inv_global_scale_denom; + + // iter-37: hardware FP4→FP16x2 via CUDA 12.8 built-in (wraps cvt.rn.f16x2.e2m1x2). + const __half2_raw f16x2 = e2m1x2_to_halfraw2(packed); + // __half2_raw layout: .x = low nibble's fp16 (unsigned short), .y = high nibble's. + const float low = __half2float(__ushort_as_half(f16x2.x)) * scale * global_scale; + const float high = __half2float(__ushort_as_half(f16x2.y)) * scale * global_scale; + + const int out_col = col_pair * 2; + const int64_t out_base = (((int64_t)out_token * num_heads + head) * (packed_cols * 2)) + out_col; + output[out_base] = static_cast(low); + output[out_base + 1] = static_cast(high); +} + +at::ScalarType dtype_code_to_scalar_type(const int64_t dtype_code) +{ + switch (dtype_code) { + case 0: + return at::ScalarType::BFloat16; + case 1: + return at::ScalarType::Half; + case 2: + return at::ScalarType::Float; + default: + TORCH_CHECK(false, "Unsupported KV dequant dtype code: ", dtype_code); + } + return at::ScalarType::Float; +} + +at::Tensor make_device_pointer_tensor(at::TensorList tensors) +{ + auto options = at::TensorOptions() + .dtype(at::ScalarType::Long) + .device(tensors.front().device()); + at::Tensor ptrs = at::empty({static_cast(tensors.size())}, options); + + std::vector host_ptrs(tensors.size()); + for (size_t i = 0; i < tensors.size(); ++i) { + host_ptrs[i] = reinterpret_cast(tensors[i].data_ptr()); + } + + // The pointer table is tiny; use a synchronous copy so the temporary host + // vector cannot outlive an async H2D transfer. + C10_CUDA_CHECK(cudaMemcpy( + ptrs.data_ptr(), + host_ptrs.data(), + host_ptrs.size() * sizeof(int64_t), + cudaMemcpyHostToDevice)); + return ptrs; +} + +} // namespace + +at::Tensor dequantize_kv_cache_fp4_cuda( + at::TensorList values, + at::TensorList scale_factors, + at::TensorList amax, + int64_t num_heads, + int64_t block_token_size, + int64_t dtype_code, + double e2m1_max, + double e4m3_max) +{ + TORCH_CHECK(!values.empty(), "values must contain at least one cache block"); + TORCH_CHECK(values.size() == scale_factors.size(), + "values and scale_factors must have the same length"); + TORCH_CHECK(values.size() == amax.size(), + "values and amax must have the same length"); + TORCH_CHECK(num_heads > 0, "num_heads must be positive"); + TORCH_CHECK(block_token_size > 0, "block_token_size must be positive"); + TORCH_CHECK(e2m1_max > 0.0 && e4m3_max > 0.0, + "e2m1_max and e4m3_max must be positive"); + + const auto device = values.front().device(); + c10::cuda::CUDAGuard device_guard(device); + const int64_t max_blocks = static_cast(values.size()); + const int64_t packed_cols = values.front().size(1); + const int64_t head_dim = packed_cols * 2; + const int64_t rows_padded = values.front().size(0); + const int64_t logical_rows = block_token_size * num_heads; + const int64_t scale_cols = head_dim / 16; + + TORCH_CHECK(head_dim == 128, "KV dequant currently expects head_dim=128, got ", head_dim); + TORCH_CHECK(scale_cols % 4 == 0, "scale column count must be a multiple of 4"); + TORCH_CHECK(rows_padded >= logical_rows, + "values rows are smaller than logical KV block rows"); + TORCH_CHECK(rows_padded % 128 == 0, "values rows must be padded to a multiple of 128"); + + for (int64_t i = 0; i < max_blocks; ++i) { + CHECK_CUDA_TENSOR(values[i]); + CHECK_CUDA_TENSOR(scale_factors[i]); + CHECK_CUDA_TENSOR(amax[i]); + CHECK_CONTIGUOUS(values[i]); + CHECK_CONTIGUOUS(scale_factors[i]); + CHECK_CONTIGUOUS(amax[i]); + TORCH_CHECK(values[i].device() == device, "all values tensors must be on the same device"); + TORCH_CHECK(scale_factors[i].device() == device, + "all scale_factors tensors must be on the same device"); + TORCH_CHECK(amax[i].device() == device, "all amax tensors must be on the same device"); + TORCH_CHECK(values[i].scalar_type() == at::ScalarType::Byte, + "values tensors must be uint8"); + TORCH_CHECK(amax[i].scalar_type() == at::ScalarType::Float, + "amax tensors must be float32"); + TORCH_CHECK(values[i].dim() == 2, "values tensors must be 2D"); + TORCH_CHECK(values[i].size(0) == rows_padded && values[i].size(1) == packed_cols, + "all values tensors must have the same shape"); + } + + const auto out_dtype = dtype_code_to_scalar_type(dtype_code); + at::Tensor output = at::empty( + {1, max_blocks * block_token_size, num_heads, head_dim}, + values.front().options().dtype(out_dtype)); + + cudaStream_t stream = at::cuda::getCurrentCUDAStream().stream(); + at::Tensor value_ptrs = make_device_pointer_tensor(values); + at::Tensor scale_ptrs = make_device_pointer_tensor(scale_factors); + at::Tensor amax_ptrs = make_device_pointer_tensor(amax); + + const int64_t total_packed_values = max_blocks * logical_rows * packed_cols; + const int threads = 256; + const dim3 blocks((total_packed_values + threads - 1) / threads); + const float inv_global_scale_denom = static_cast(1.0 / (e2m1_max * e4m3_max)); + + AT_DISPATCH_FLOATING_TYPES_AND2( + at::ScalarType::Half, + at::ScalarType::BFloat16, + output.scalar_type(), + "fp4_kv_dequant_kernel", + [&] { + fp4_kv_dequant_kernel<<>>( + reinterpret_cast(value_ptrs.data_ptr()), + reinterpret_cast(scale_ptrs.data_ptr()), + reinterpret_cast(amax_ptrs.data_ptr()), + output.data_ptr(), + total_packed_values, + static_cast(block_token_size), + static_cast(num_heads), + static_cast(packed_cols), + static_cast(scale_cols), + inv_global_scale_denom); + }); + C10_CUDA_KERNEL_LAUNCH_CHECK(); + + return output; +} + +TORCH_LIBRARY_IMPL(longlive_kernels, CUDA, m) +{ + m.impl("dequantize_kv_cache_fp4", &dequantize_kv_cache_fp4_cuda); +} diff --git a/utils/kernel/setup.py b/utils/kernel/setup.py new file mode 100644 index 0000000..3fd184b --- /dev/null +++ b/utils/kernel/setup.py @@ -0,0 +1,41 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +from pathlib import Path + +from setuptools import setup +from torch.utils.cpp_extension import BuildExtension, CUDAExtension + + +THIS_DIR = Path(__file__).resolve().parent + +setup( + name="longlive_kv_dequant_cuda", + ext_modules=[ + CUDAExtension( + name="longlive_kv_dequant_cuda", + sources=[ + str(THIS_DIR / "kv_dequant.cpp"), + str(THIS_DIR / "kv_dequant_cuda.cu"), + ], + extra_compile_args={ + "cxx": ["-O3", "-std=c++17"], + "nvcc": [ + "-O3", + "-std=c++17", + "--expt-relaxed-constexpr", + # iter-37: need sm_100a (Blackwell arch-specific) for + # cvt.rn.f16x2.e2m1x2 instruction. Plain sm_100 lacks it. + "-gencode=arch=compute_100a,code=sm_100a", + ], + }, + ), + ], + cmdclass={"build_ext": BuildExtension}, +) diff --git a/utils/lightvae_5b_wrapper.py b/utils/lightvae_5b_wrapper.py new file mode 100644 index 0000000..7e840ca --- /dev/null +++ b/utils/lightvae_5b_wrapper.py @@ -0,0 +1,423 @@ +import logging +import os +from typing import Optional + +import torch +import torch.nn as nn + +from wan_5b.modules.vae2_2 import ( + CausalConv3d, + Decoder3d, + Encoder3d, + count_conv3d, + patchify, + unpatchify, +) + + +def _extract_checkpoint_state_dict(raw): + state = raw + if isinstance(state, dict) and "state_dict" in state: + state = state["state_dict"] + if isinstance(state, dict) and "gen_model" in state: + state = state["gen_model"] + if isinstance(state, dict) and "generator" in state: + state = state["generator"] + if not isinstance(state, dict): + raise ValueError("Unsupported checkpoint format: expected a dict-like state_dict.") + return state + + +def _map_lightvae_key_to_wanvae(key): + def _map_resnet_tail(tail): + if tail.startswith("norm1."): + return "residual.0." + tail[len("norm1."):] + if tail.startswith("conv1."): + return "residual.2." + tail[len("conv1."):] + if tail.startswith("norm2."): + return "residual.3." + tail[len("norm2."):] + if tail.startswith("conv2."): + return "residual.6." + tail[len("conv2."):] + if tail.startswith("conv_shortcut."): + return "shortcut." + tail[len("conv_shortcut."):] + return tail + + if key.startswith("dynamic_feature_projection_heads."): + return None + + if key.startswith("quant_conv."): + return key.replace("quant_conv.", "conv1.", 1) + if key.startswith("post_quant_conv."): + return key.replace("post_quant_conv.", "conv2.", 1) + + if key.startswith("encoder.conv_in."): + return key.replace("encoder.conv_in.", "encoder.conv1.", 1) + if key.startswith("encoder.mid_block.resnets.0."): + tail = key[len("encoder.mid_block.resnets.0."):] + return "encoder.middle.0." + _map_resnet_tail(tail) + if key.startswith("encoder.mid_block.attentions.0."): + return key.replace("encoder.mid_block.attentions.0.", "encoder.middle.1.", 1) + if key.startswith("encoder.mid_block.resnets.1."): + tail = key[len("encoder.mid_block.resnets.1."):] + return "encoder.middle.2." + _map_resnet_tail(tail) + if key.startswith("encoder.norm_out."): + return key.replace("encoder.norm_out.", "encoder.head.0.", 1) + if key.startswith("encoder.conv_out."): + return key.replace("encoder.conv_out.", "encoder.head.2.", 1) + + if key.startswith("encoder.down_blocks."): + parts = key.split(".") + if len(parts) >= 6 and parts[3] == "resnets": + tail = ".".join(parts[5:]) + return f"encoder.downsamples.{parts[2]}.downsamples.{parts[4]}." + _map_resnet_tail(tail) + if len(parts) >= 7 and parts[3] == "downsampler" and parts[4] == "resample": + return f"encoder.downsamples.{parts[2]}.downsamples.2.resample.{parts[5]}." + ".".join(parts[6:]) + if len(parts) >= 6 and parts[3] == "downsampler" and parts[4] == "time_conv": + return f"encoder.downsamples.{parts[2]}.downsamples.2.time_conv." + ".".join(parts[5:]) + + if key.startswith("decoder.conv_in."): + return key.replace("decoder.conv_in.", "decoder.conv1.", 1) + if key.startswith("decoder.mid_block.resnets.0."): + tail = key[len("decoder.mid_block.resnets.0."):] + return "decoder.middle.0." + _map_resnet_tail(tail) + if key.startswith("decoder.mid_block.attentions.0."): + return key.replace("decoder.mid_block.attentions.0.", "decoder.middle.1.", 1) + if key.startswith("decoder.mid_block.resnets.1."): + tail = key[len("decoder.mid_block.resnets.1."):] + return "decoder.middle.2." + _map_resnet_tail(tail) + if key.startswith("decoder.norm_out."): + return key.replace("decoder.norm_out.", "decoder.head.0.", 1) + if key.startswith("decoder.conv_out."): + return key.replace("decoder.conv_out.", "decoder.head.2.", 1) + + if key.startswith("decoder.up_blocks."): + parts = key.split(".") + if len(parts) >= 6 and parts[3] == "resnets": + tail = ".".join(parts[5:]) + return f"decoder.upsamples.{parts[2]}.upsamples.{parts[4]}." + _map_resnet_tail(tail) + if len(parts) >= 7 and parts[3] == "upsampler" and parts[4] == "resample": + return f"decoder.upsamples.{parts[2]}.upsamples.3.resample.{parts[5]}." + ".".join(parts[6:]) + if len(parts) >= 6 and parts[3] == "upsampler" and parts[4] == "time_conv": + return f"decoder.upsamples.{parts[2]}.upsamples.3.time_conv." + ".".join(parts[5:]) + + return key + + +def _normalize_vae_state_dict(raw_state): + state = _extract_checkpoint_state_dict(raw_state) + normalized = {} + for key, value in state.items(): + mapped_key = _map_lightvae_key_to_wanvae(key) + if mapped_key is None: + continue + normalized[mapped_key] = value + return normalized + + +def infer_lightvae_pruning_rate_from_ckpt(vae_path, full_decoder_conv1_out=1024): + if vae_path is None or not os.path.exists(vae_path): + return None + try: + raw_state = torch.load(vae_path, map_location="cpu") + state = _extract_checkpoint_state_dict(raw_state) + except Exception as exc: + logging.warning("Failed to load checkpoint for pruning-rate inference: %s", exc) + return None + + weight = None + if isinstance(state, dict): + if "decoder.conv_in.weight" in state: + weight = state["decoder.conv_in.weight"] + elif "decoder.conv1.weight" in state: + weight = state["decoder.conv1.weight"] + + if weight is None: + try: + normalized_state = _normalize_vae_state_dict(state) + weight = normalized_state.get("decoder.conv1.weight", None) + except Exception: + weight = None + + if weight is None or not hasattr(weight, "shape") or len(weight.shape) < 1: + return None + + student_out = int(weight.shape[0]) + if full_decoder_conv1_out <= 0: + return None + + pruning_rate = 1.0 - (float(student_out) / float(full_decoder_conv1_out)) + pruning_rate = max(0.0, min(0.99, pruning_rate)) + return round(pruning_rate, 6) + + +def convert_to_channels_last_3d(module): + for child in module.children(): + if isinstance(child, nn.Conv3d): + child.weight.data = child.weight.data.to(memory_format=torch.channels_last_3d) + else: + convert_to_channels_last_3d(child) + + +class PrunableWanVAE(nn.Module): + def __init__( + self, + dim=160, + dec_dim=256, + z_dim=48, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[False, True, True], + dropout=0.0, + pruning_rate=0.0, + ): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_downsample = temperal_downsample + self.temperal_upsample = temperal_downsample[::-1] + + dim = max(1, int(round(dim * (1.0 - pruning_rate)))) + dec_dim = max(1, int(round(dec_dim * (1.0 - pruning_rate)))) + + self.encoder = Encoder3d( + dim, + z_dim * 2, + dim_mult, + num_res_blocks, + attn_scales, + self.temperal_downsample, + dropout, + ) + self.conv1 = CausalConv3d(z_dim * 2, z_dim * 2, 1) + self.conv2 = CausalConv3d(z_dim, z_dim, 1) + self.decoder = Decoder3d( + dec_dim, + z_dim, + dim_mult, + num_res_blocks, + attn_scales, + self.temperal_upsample, + dropout, + ) + + def encode(self, x, scale): + self.clear_cache() + x = patchify(x, patch_size=2) + total_steps = 1 + (x.shape[2] - 1) // 4 + for step in range(total_steps): + self._enc_conv_idx = [0] + if step == 0: + out = self.encoder( + x[:, :, :1, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx, + ) + else: + out_chunk = self.encoder( + x[:, :, 1 + 4 * (step - 1):1 + 4 * step, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx, + ) + out = torch.cat([out, out_chunk], 2) + mu, _ = self.conv1(out).chunk(2, dim=1) + if isinstance(scale[0], torch.Tensor): + mu = (mu - scale[0].view(1, self.z_dim, 1, 1, 1)) * scale[1].view( + 1, self.z_dim, 1, 1, 1 + ) + else: + mu = (mu - scale[0]) * scale[1] + self.clear_cache() + return mu + + def decode(self, z, scale): + self.clear_cache() + if isinstance(scale[0], torch.Tensor): + z = z / scale[1].view(1, self.z_dim, 1, 1, 1) + scale[0].view( + 1, self.z_dim, 1, 1, 1 + ) + else: + z = z / scale[1] + scale[0] + total_steps = z.shape[2] + x = self.conv2(z) + for step in range(total_steps): + self._conv_idx = [0] + if step == 0: + out = self.decoder( + x[:, :, step:step + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + first_chunk=True, + ) + else: + out_chunk = self.decoder( + x[:, :, step:step + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + ) + out = torch.cat([out, out_chunk], 2) + out = unpatchify(out, patch_size=2) + self.clear_cache() + return out + + def cached_decode(self, z, scale): + if isinstance(scale[0], torch.Tensor): + z = z / scale[1].view(1, self.z_dim, 1, 1, 1) + scale[0].view( + 1, self.z_dim, 1, 1, 1 + ) + else: + z = z / scale[1] + scale[0] + total_steps = z.shape[2] + x = self.conv2(z) + is_first = self._feat_map[0] is None + for step in range(total_steps): + self._conv_idx = [0] + if step == 0 and is_first: + out = self.decoder( + x[:, :, step:step + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + first_chunk=True, + ) + elif step == 0: + out = self.decoder( + x[:, :, step:step + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + ) + else: + out_chunk = self.decoder( + x[:, :, step:step + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + ) + out = torch.cat([out, out_chunk], 2) + return unpatchify(out, patch_size=2) + + def clear_cache(self): + self._conv_num = count_conv3d(self.decoder) + self._conv_idx = [0] + self._feat_map = [None] * self._conv_num + self._enc_conv_num = count_conv3d(self.encoder) + self._enc_conv_idx = [0] + self._enc_feat_map = [None] * self._enc_conv_num + + +def _load_lightvae_model(pretrained_path=None, z_dim=48, dim=160, device="cpu", **kwargs): + cfg = dict( + dim=dim, + z_dim=z_dim, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[False, True, True], + dropout=0.0, + ) + cfg.update(**kwargs) + + with torch.device("meta"): + model = PrunableWanVAE(**cfg) + + if pretrained_path is None or not os.path.exists(pretrained_path): + raise FileNotFoundError(f"VAE checkpoint not found at {pretrained_path}") + + logging.info("loading %s", pretrained_path) + raw_state = torch.load(pretrained_path, map_location="cpu") + state_dict = _normalize_vae_state_dict(raw_state) + missing, unexpected = model.load_state_dict(state_dict, strict=False, assign=True) + logging.info( + "LightVAE checkpoint loaded with strict=False (missing=%d, unexpected=%d)", + len(missing), + len(unexpected), + ) + + convert_to_channels_last_3d(model) + return model + + +class LightVAE5BWrapper(nn.Module): + def __init__( + self, + vae_path: str, + pruning_rate: Optional[float] = None, + dtype: torch.dtype = torch.bfloat16, + device: Optional[torch.device] = None, + ): + super().__init__() + if device is None: + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + if pruning_rate is None: + pruning_rate = infer_lightvae_pruning_rate_from_ckpt(vae_path) + if pruning_rate is None: + pruning_rate = 0.75 + logging.warning( + "Unable to infer LightVAE pruning rate from checkpoint; fallback to 0.75." + ) + + mean = [ + -0.2289, -0.0052, -0.1323, -0.2339, -0.2799, 0.0174, 0.1838, 0.1557, + -0.1382, 0.0542, 0.2813, 0.0891, 0.1570, -0.0098, 0.0375, -0.1825, + -0.2246, -0.1207, -0.0698, 0.5109, 0.2665, -0.2108, -0.2158, 0.2502, + -0.2055, -0.0322, 0.1109, 0.1567, -0.0729, 0.0899, -0.2799, -0.1230, + -0.0313, -0.1649, 0.0117, 0.0723, -0.2839, -0.2083, -0.0520, 0.3748, + 0.0152, 0.1957, 0.1433, -0.2944, 0.3573, -0.0548, -0.1681, -0.0667, + ] + std = [ + 0.4765, 1.0364, 0.4514, 1.1677, 0.5313, 0.4990, 0.4818, 0.5013, + 0.8158, 1.0344, 0.5894, 1.0901, 0.6885, 0.6165, 0.8454, 0.4978, + 0.5759, 0.3523, 0.7135, 0.6804, 0.5833, 1.4146, 0.8986, 0.5659, + 0.7069, 0.5338, 0.4889, 0.4917, 0.4069, 0.4999, 0.6866, 0.4093, + 0.5709, 0.6065, 0.6415, 0.4944, 0.5726, 1.2042, 0.5458, 1.6887, + 0.3971, 1.0600, 0.3943, 0.5537, 0.5444, 0.4089, 0.7468, 0.7744, + ] + self.mean = torch.tensor(mean, dtype=torch.float32) + self.std = torch.tensor(std, dtype=torch.float32) + self.vae_path = os.path.abspath(vae_path) + self.pruning_rate = pruning_rate + self.device = torch.device(device) + self.dtype = dtype + + self.model = _load_lightvae_model( + pretrained_path=self.vae_path, + pruning_rate=self.pruning_rate, + ).eval().requires_grad_(False) + self.to(device=self.device, dtype=self.dtype) + + def to(self, device=None, dtype=None): + device = self.device if device is None else torch.device(device) + dtype = self.dtype if dtype is None else dtype + self.model.to(device=device, dtype=dtype) + self.mean = self.mean.to(device=device, dtype=dtype) + self.std = self.std.to(device=device, dtype=dtype) + self.device = device + self.dtype = dtype + return self + + def eval(self): + super().eval() + self.model.eval() + return self + + @torch.no_grad() + def decode_to_pixel(self, latent: torch.Tensor, use_cache: bool = False) -> torch.Tensor: + zs = latent.permute(0, 2, 1, 3, 4) + if use_cache: + assert latent.shape[0] == 1, "Batch size must be 1 when using cache" + + scale = [self.mean, 1.0 / self.std] + decode_fn = self.model.cached_decode if use_cache else self.model.decode + + output = [] + for item in zs: + output.append( + decode_fn(item.unsqueeze(0).to(device=self.device, dtype=self.dtype), scale) + .float() + .clamp_(-1, 1) + .squeeze(0) + ) + output = torch.stack(output, dim=0) + return output.permute(0, 2, 1, 3, 4) diff --git a/utils/lora_utils.py b/utils/lora_utils.py new file mode 100644 index 0000000..e01c6fa --- /dev/null +++ b/utils/lora_utils.py @@ -0,0 +1,102 @@ +# Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +import torch +import peft +from peft import get_peft_model_state_dict +from torch.distributed.fsdp import FullyShardedDataParallel as FSDP +from torch.distributed.fsdp import ( + StateDictType, FullStateDictConfig +) + + +def configure_lora_for_model(transformer, model_name, lora_config, is_main_process=True, all_causal=False): + """Configure LoRA for a WanDiffusionWrapper model + + Args: + transformer: The transformer model to apply LoRA to + model_name: 'generator' or 'fake_score' + lora_config: LoRA configuration + is_main_process: Whether this is the main process (for logging) + all_causal: Whether all models use causal attention blocks + + Returns: + lora_model: The LoRA-wrapped model + """ + target_linear_modules = set() + + if model_name == 'generator': + adapter_target_modules = ['CausalWanAttentionBlock'] + elif model_name == 'fake_score': + adapter_target_modules = ['CausalWanAttentionBlock'] if all_causal else ['WanAttentionBlock'] + else: + raise ValueError(f"Invalid model name: {model_name}") + + for name, module in transformer.named_modules(): + if module.__class__.__name__ in adapter_target_modules: + for full_submodule_name, submodule in module.named_modules(prefix=name): + if isinstance(submodule, torch.nn.Linear): + target_linear_modules.add(full_submodule_name) + + target_linear_modules = list(target_linear_modules) + + if is_main_process: + print(f"LoRA target modules for {model_name}: {len(target_linear_modules)} Linear layers") + if getattr(lora_config, 'verbose', False): + for module_name in sorted(target_linear_modules): + print(f" - {module_name}") + + # Create LoRA config + adapter_type = lora_config.get('type', 'lora') + if adapter_type == 'lora': + peft_config = peft.LoraConfig( + r=lora_config.get('rank', 16), + lora_alpha=lora_config.get('alpha', None) or lora_config.get('rank', 16), + lora_dropout=lora_config.get('dropout', 0.0), + target_modules=target_linear_modules, + ) + else: + raise NotImplementedError(f'Adapter type {adapter_type} is not implemented') + + # Apply LoRA to the transformer + lora_model = peft.get_peft_model(transformer, peft_config) + + if is_main_process: + print('peft_config', peft_config) + lora_model.print_trainable_parameters() + + return lora_model + + +def gather_lora_state_dict(lora_model): + with FSDP.state_dict_type( + lora_model, + StateDictType.FULL_STATE_DICT, + FullStateDictConfig(rank0_only=True, offload_to_cpu=True) + ): + full = lora_model.state_dict() + return get_peft_model_state_dict(lora_model, state_dict=full) + + +def load_lora_checkpoint(lora_model, lora_state_dict, model_name, is_main_process=True): + """Load LoRA weights from state dict + + Args: + lora_model: The LoRA-wrapped model + lora_state_dict: LoRA state dict to load + model_name: 'generator' or 'critic' + is_main_process: Whether this is the main process (for logging) + """ + if is_main_process: + print(f"Loading LoRA {model_name} weights: {len(lora_state_dict)} keys in checkpoint") + + peft.set_peft_model_state_dict(lora_model, lora_state_dict) + + if is_main_process: + print(f"LoRA {model_name} weights loaded successfully") \ No newline at end of file diff --git a/utils/loss.py b/utils/loss.py new file mode 100644 index 0000000..a0152f9 --- /dev/null +++ b/utils/loss.py @@ -0,0 +1,98 @@ +from abc import ABC, abstractmethod +import torch + + +class DenoisingLoss(ABC): + @abstractmethod + def __call__( + self, x: torch.Tensor, x_pred: torch.Tensor, + noise: torch.Tensor, noise_pred: torch.Tensor, + alphas_cumprod: torch.Tensor, + timestep: torch.Tensor, + gradient_mask: torch.Tensor = None, + **kwargs + ) -> torch.Tensor: + """ + Base class for denoising loss. + Input: + - x: the clean data with shape [B, F, C, H, W] + - x_pred: the predicted clean data with shape [B, F, C, H, W] + - noise: the noise with shape [B, F, C, H, W] + - noise_pred: the predicted noise with shape [B, F, C, H, W] + - alphas_cumprod: the cumulative product of alphas (defining the noise schedule) with shape [T] + - timestep: the current timestep with shape [B, F] + """ + pass + + +class X0PredLoss(DenoisingLoss): + def __call__( + self, x: torch.Tensor, x_pred: torch.Tensor, + noise: torch.Tensor, noise_pred: torch.Tensor, + alphas_cumprod: torch.Tensor, + timestep: torch.Tensor, + gradient_mask: torch.Tensor = None, + **kwargs + ) -> torch.Tensor: + err = (x - x_pred) ** 2 + if gradient_mask is not None: + return err[gradient_mask].mean() + return err.mean() + + +class VPredLoss(DenoisingLoss): + def __call__( + self, x: torch.Tensor, x_pred: torch.Tensor, + noise: torch.Tensor, noise_pred: torch.Tensor, + alphas_cumprod: torch.Tensor, + timestep: torch.Tensor, + gradient_mask: torch.Tensor = None, + **kwargs + ) -> torch.Tensor: + weights = 1 / (1 - alphas_cumprod[timestep].reshape(*timestep.shape, 1, 1, 1)) + err = weights * (x - x_pred) ** 2 + if gradient_mask is not None: + return err[gradient_mask].mean() + return err.mean() + + +class NoisePredLoss(DenoisingLoss): + def __call__( + self, x: torch.Tensor, x_pred: torch.Tensor, + noise: torch.Tensor, noise_pred: torch.Tensor, + alphas_cumprod: torch.Tensor, + timestep: torch.Tensor, + gradient_mask: torch.Tensor = None, + **kwargs + ) -> torch.Tensor: + err = (noise - noise_pred) ** 2 + if gradient_mask is not None: + return err[gradient_mask].mean() + return err.mean() + + +class FlowPredLoss(DenoisingLoss): + def __call__( + self, x: torch.Tensor, x_pred: torch.Tensor, + noise: torch.Tensor, noise_pred: torch.Tensor, + alphas_cumprod: torch.Tensor, + timestep: torch.Tensor, + gradient_mask: torch.Tensor = None, + **kwargs + ) -> torch.Tensor: + err = (kwargs["flow_pred"] - (noise - x)) ** 2 + if gradient_mask is not None: + return err[gradient_mask].mean() + return err.mean() + + +NAME_TO_CLASS = { + "x0": X0PredLoss, + "v": VPredLoss, + "noise": NoisePredLoss, + "flow": FlowPredLoss +} + + +def get_denoising_loss(loss_type: str) -> DenoisingLoss: + return NAME_TO_CLASS[loss_type] diff --git a/utils/memory.py b/utils/memory.py new file mode 100644 index 0000000..bf3b562 --- /dev/null +++ b/utils/memory.py @@ -0,0 +1,146 @@ +# Copied from https://github.com/lllyasviel/FramePack/tree/main/demo_utils +# Apache-2.0 License +# By lllyasviel + +import torch + + +cpu = torch.device('cpu') +gpu = torch.device(f'cuda:{torch.cuda.current_device()}') +gpu_complete_modules = [] + + +class DynamicSwapInstaller: + @staticmethod + def _install_module(module: torch.nn.Module, **kwargs): + original_class = module.__class__ + module.__dict__['forge_backup_original_class'] = original_class + + def hacked_get_attr(self, name: str): + if '_parameters' in self.__dict__: + _parameters = self.__dict__['_parameters'] + if name in _parameters: + p = _parameters[name] + if p is None: + return None + if p.__class__ == torch.nn.Parameter: + return torch.nn.Parameter(p.to(**kwargs), requires_grad=p.requires_grad) + else: + return p.to(**kwargs) + if '_buffers' in self.__dict__: + _buffers = self.__dict__['_buffers'] + if name in _buffers: + return _buffers[name].to(**kwargs) + return super(original_class, self).__getattr__(name) + + module.__class__ = type('DynamicSwap_' + original_class.__name__, (original_class,), { + '__getattr__': hacked_get_attr, + }) + + return + + @staticmethod + def _uninstall_module(module: torch.nn.Module): + if 'forge_backup_original_class' in module.__dict__: + module.__class__ = module.__dict__.pop('forge_backup_original_class') + return + + @staticmethod + def install_model(model: torch.nn.Module, **kwargs): + for m in model.modules(): + DynamicSwapInstaller._install_module(m, **kwargs) + return + + @staticmethod + def uninstall_model(model: torch.nn.Module): + for m in model.modules(): + DynamicSwapInstaller._uninstall_module(m) + return + + +def fake_diffusers_current_device(model: torch.nn.Module, target_device: torch.device): + if hasattr(model, 'scale_shift_table'): + model.scale_shift_table.data = model.scale_shift_table.data.to(target_device) + return + + for k, p in model.named_modules(): + if hasattr(p, 'weight'): + p.to(target_device) + return + + +def get_cuda_free_memory_gb(device=None): + if device is None: + device = gpu + + memory_stats = torch.cuda.memory_stats(device) + bytes_active = memory_stats['active_bytes.all.current'] + bytes_reserved = memory_stats['reserved_bytes.all.current'] + bytes_free_cuda, _ = torch.cuda.mem_get_info(device) + bytes_inactive_reserved = bytes_reserved - bytes_active + bytes_total_available = bytes_free_cuda + bytes_inactive_reserved + return bytes_total_available / (1024 ** 3) + + + +def log_gpu_memory(stage: str, device=None, rank=0): + """Log GPU memory usage at a given training stage.""" + free_gb = get_cuda_free_memory_gb(device) + total_gb = torch.cuda.get_device_properties(device).total_memory / (1024 ** 3) + used_gb = total_gb - free_gb + print(f"[rank {rank}] [GPU Memory][{stage}] Used: {used_gb:.2f} GB | Free: {free_gb:.2f} GB | Total: {total_gb:.2f} GB") + + + + +def move_model_to_device_with_memory_preservation(model, target_device, preserved_memory_gb=0): + print(f'Moving {model.__class__.__name__} to {target_device} with preserved memory: {preserved_memory_gb} GB') + + for m in model.modules(): + if get_cuda_free_memory_gb(target_device) <= preserved_memory_gb: + torch.cuda.empty_cache() + return + + if hasattr(m, 'weight'): + m.to(device=target_device) + + model.to(device=target_device) + torch.cuda.empty_cache() + return + + +def offload_model_from_device_for_memory_preservation(model, target_device, preserved_memory_gb=0): + print(f'Offloading {model.__class__.__name__} from {target_device} to preserve memory: {preserved_memory_gb} GB') + + for m in model.modules(): + if get_cuda_free_memory_gb(target_device) >= preserved_memory_gb: + torch.cuda.empty_cache() + return + + if hasattr(m, 'weight'): + m.to(device=cpu) + + model.to(device=cpu) + torch.cuda.empty_cache() + return + + +def unload_complete_models(*args): + for m in gpu_complete_modules + list(args): + m.to(device=cpu) + print(f'Unloaded {m.__class__.__name__} as complete.') + + gpu_complete_modules.clear() + torch.cuda.empty_cache() + return + + +def load_model_as_complete(model, target_device, unload=True): + if unload: + unload_complete_models() + + model.to(device=target_device) + print(f'Loaded {model.__class__.__name__} to {target_device} as complete.') + + gpu_complete_modules.append(model) + return diff --git a/utils/misc.py b/utils/misc.py new file mode 100644 index 0000000..94cf29f --- /dev/null +++ b/utils/misc.py @@ -0,0 +1,39 @@ +import numpy as np +import random +import torch + + +def set_seed(seed: int, deterministic: bool = False): + """ + Helper function for reproducible behavior to set the seed in `random`, `numpy`, `torch`. + + Args: + seed (`int`): + The seed to set. + deterministic (`bool`, *optional*, defaults to `False`): + Whether to use deterministic algorithms where available. Can slow down training. + """ + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + + if deterministic: + torch.use_deterministic_algorithms(True) + + +def merge_dict_list(dict_list): + if len(dict_list) == 1: + return dict_list[0] + + merged_dict = {} + for k, v in dict_list[0].items(): + if isinstance(v, torch.Tensor): + if v.ndim == 0: + merged_dict[k] = torch.stack([d[k] for d in dict_list], dim=0) + else: + merged_dict[k] = torch.cat([d[k] for d in dict_list], dim=0) + else: + # for non-tensor values, we just copy the value from the first item + merged_dict[k] = v + return merged_dict diff --git a/utils/nvfp4_checkpoint.py b/utils/nvfp4_checkpoint.py new file mode 100644 index 0000000..c1992ac --- /dev/null +++ b/utils/nvfp4_checkpoint.py @@ -0,0 +1,169 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +from collections.abc import Mapping + +import torch +from torch import nn + + +NVFP4_CHECKPOINT_FORMAT = "longlive_generator_nvfp4" +TE_NVFP4_CHECKPOINT_FORMAT = "longlive_generator_te_nvfp4" +NVFP4_CHECKPOINT_VERSION = 1 + + +def is_nvfp4_state_dict(state_dict: object) -> bool: + """Return True when a state dict contains materialized FourOverSix NVFP4 buffers.""" + if not isinstance(state_dict, Mapping): + return False + return any(str(key).endswith("quantized_weight_values") for key in state_dict) + + +def is_te_nvfp4_checkpoint(checkpoint: object) -> bool: + """Return True for checkpoints saved with TransformerEngine module state.""" + return ( + isinstance(checkpoint, Mapping) + and checkpoint.get("checkpoint_format") == TE_NVFP4_CHECKPOINT_FORMAT + ) + + +def unwrap_generator_state_dict(checkpoint: object, use_ema: bool = False) -> object: + """Extract the generator state dict from common LongLive checkpoint layouts.""" + if not isinstance(checkpoint, Mapping): + return checkpoint + if "generator" in checkpoint or "generator_ema" in checkpoint: + ema_key = "generator_ema" if use_ema and "generator_ema" in checkpoint else "generator" + return checkpoint[ema_key] + if "model" in checkpoint: + return checkpoint["model"] + return checkpoint + + +def clean_fsdp_state_dict_keys(state_dict: Mapping[str, torch.Tensor]) -> dict[str, torch.Tensor]: + """Remove FSDP wrapper prefixes used by some EMA checkpoints.""" + return {str(key).replace("_fsdp_wrapped_module.", ""): value for key, value in state_dict.items()} + + +def build_model_quantization_config(config, keep_master_weights: bool = False): + from utils.quant import ModelQuantizationConfig + + quant_cfg = ModelQuantizationConfig( + scale_rule=getattr(config, "model_quant_scale_rule", "static_6"), + quantize_backend=getattr(config, "model_quant_backend", None), + activation_scale_rule=getattr( + config, + "model_quant_activation_scale_rule", + getattr(config, "model_quant_scale_rule", "static_6"), + ), + weight_scale_rule=getattr(config, "model_quant_weight_scale_rule", None), + gradient_scale_rule=getattr(config, "model_quant_gradient_scale_rule", None), + ) + quant_cfg.keep_master_weights = keep_master_weights + return quant_cfg + + +def _maybe_to_dict(value): + if value is None: + return None + try: + from omegaconf import OmegaConf + + if OmegaConf.is_config(value): + value = OmegaConf.to_container(value, resolve=True) + except ImportError: + pass + return dict(value) + + +def quantize_model_for_fouroversix_nvfp4(model: nn.Module, config, *, keep_master_weights: bool = False, verbose: bool = True): + """Replace eligible modules with FourOverSix NVFP4 modules using the runtime config.""" + from utils.quant import quantize_model_with_filter + + return quantize_model_with_filter( + model, + quant_config=build_model_quantization_config(config, keep_master_weights=keep_master_weights), + filtered_modules=getattr(config, "model_quant_filtered_modules", None), + use_default_filtered_modules=getattr(config, "model_quant_use_default_filtered_modules", True), + cast_model_to_bf16=True, + materialize_for_inference=False, + use_transformer_engine=False, + verbose=verbose, + ) + + +def quantize_model_for_transformer_engine_nvfp4( + model: nn.Module, + config, + *, + keep_master_weights: bool = False, + verbose: bool = True, +): + """Replace eligible modules with TransformerEngine NVFP4 wrappers.""" + from utils.quant import quantize_model_with_filter + + use_transformer_engine = True + te_inference_only = bool(getattr(config, "model_quant_te_inference_only", use_transformer_engine)) + te_low_precision_weights = bool(getattr(config, "model_quant_te_low_precision_weights", te_inference_only)) + te_fallback_to_fouroversix = bool(getattr(config, "model_quant_te_fallback_to_fouroversix", False)) + + return quantize_model_with_filter( + model, + quant_config=build_model_quantization_config(config, keep_master_weights=keep_master_weights), + filtered_modules=getattr(config, "model_quant_filtered_modules", None), + use_default_filtered_modules=getattr(config, "model_quant_use_default_filtered_modules", True), + cast_model_to_bf16=True, + materialize_for_inference=False, + use_transformer_engine=True, + te_inference_only=te_inference_only, + te_low_precision_weights=te_low_precision_weights, + te_recipe_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_recipe_kwargs", None)), + te_module_kwargs=_maybe_to_dict(getattr(config, "model_quant_te_module_kwargs", None)), + te_fallback_to_fouroversix=te_fallback_to_fouroversix, + verbose=verbose, + ) + + +def drop_fouroversix_master_weights(model: nn.Module) -> list[str]: + """Drop high-precision master weights after loading materialized NVFP4 buffers.""" + materialized_modules = [] + for module_name, module in model.named_modules(): + if not hasattr(module, "parameters_to_quantize"): + continue + + parameters_to_quantize = getattr(module, "parameters_to_quantize", ()) + if callable(parameters_to_quantize): + parameters_to_quantize = parameters_to_quantize() + if not parameters_to_quantize: + continue + + dropped_any = False + for parameter_name in parameters_to_quantize: + if isinstance(getattr(module, parameter_name, None), nn.Parameter): + module.register_parameter(parameter_name, None) + dropped_any = True + elif hasattr(module, parameter_name): + setattr(module, parameter_name, None) + dropped_any = True + + if not dropped_any: + continue + for cache_name in ("_quantized_weight", "_quantized_weight_transposed", "_quantized_weights"): + if hasattr(module, cache_name): + delattr(module, cache_name) + if hasattr(module, "config") and hasattr(module.config, "keep_master_weights"): + module.config.keep_master_weights = False + materialized_modules.append(module_name) + return materialized_modules + + +def cpu_state_dict(module: nn.Module) -> dict[str, torch.Tensor]: + """Return a detached CPU state dict suitable for torch.save.""" + return {key: value.detach().cpu() for key, value in module.state_dict().items()} diff --git a/utils/nvfp4_kernel.py b/utils/nvfp4_kernel.py new file mode 100644 index 0000000..dfec6b8 --- /dev/null +++ b/utils/nvfp4_kernel.py @@ -0,0 +1,296 @@ +#!/usr/bin/env python +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +"""NVFP4 Fake Quantization Triton Implementation. + +This module provides high-performance GPU implementations of NVFP4 fake quantization +operations using Triton kernels. +""" + +import torch +import triton +import triton.language as tl + +__all__ = ["fp4_dequantize", "static_blockwise_fp4_fake_quant"] + + +_TORCH_TO_TL_DTYPE = { + torch.float32: tl.float32, + torch.float: tl.float32, + torch.float16: tl.float16, + torch.half: tl.float16, + torch.bfloat16: tl.bfloat16, +} + + +def _torch_dtype_to_tl(dtype: torch.dtype): + if dtype not in _TORCH_TO_TL_DTYPE: + raise ValueError(f"Unsupported dtype for fp4 fake quantization: {dtype}") + return _TORCH_TO_TL_DTYPE[dtype] + + +@triton.jit +def fp4_dequantize_kernel( + packed_ptr, + scale_ptr, + global_scale_ptr, + output_ptr, + N, + BLOCK_SIZE: tl.constexpr, + TILE_SIZE: tl.constexpr, +): + """Dequantizes FP4 packed data using per-block scaling factors. + + Args: + packed_ptr (tl.pointer): Pointer to packed uint8 tensor (M x N//2) + scale_ptr (tl.pointer): Pointer to per-block scale tensor (M x N//BLOCK_SIZE) + output_ptr (tl.pointer): Pointer to output tensor (M x N) + global_scale_ptr (tl.pointer): Pointer to global scale tensor + N (int): Number of columns in unpacked tensor + BLOCK_SIZE (tl.constexpr): Size of each FP4 quantization block + TILE_SIZE (tl.constexpr): Size of the processing tile (in packed elements) + """ + # Get program ID for processing packed elements + pid = tl.program_id(0) + + # Calculate packed element offsets (each packed element contains 2 FP4 values) + packed_start = pid * TILE_SIZE + packed_offs = packed_start + tl.arange(0, TILE_SIZE) + + # Calculate 2D coordinates for packed data + packed_row_idx = packed_offs // (N // 2) + packed_col_idx = packed_offs % (N // 2) + + # Create mask for packed data bounds checking + packed_mask = packed_col_idx < (N // 2) + + # Load global scale + global_scale = tl.load(global_scale_ptr) + + # Load packed data + packed_data = tl.load(packed_ptr + packed_offs, mask=packed_mask, other=0) + + # Unpack packed FP4 values (uint8) to float16x2 + x_f16x2_packed = tl.inline_asm_elementwise( + asm=""" + { + .reg .b8 byte0, byte1, byte2, byte3; + mov.b32 {byte0, byte1, byte2, byte3}, $4; + cvt.rn.f16x2.e2m1x2 $0, byte0; + cvt.rn.f16x2.e2m1x2 $1, byte1; + cvt.rn.f16x2.e2m1x2 $2, byte2; + cvt.rn.f16x2.e2m1x2 $3, byte3; + } + """, + constraints="=r,=r,=r,=r,r", + args=[packed_data], + dtype=tl.uint32, + is_pure=True, + pack=4, + ) + val_low = ( + (x_f16x2_packed & 0xFFFF).cast(tl.uint16).cast(tl.float16, bitcast=True).cast(tl.float32) + ) + val_high = ( + (x_f16x2_packed >> 16).cast(tl.uint16).cast(tl.float16, bitcast=True).cast(tl.float32) + ) + + # Calculate output positions for both values + out_col_low = packed_col_idx * 2 + out_col_high = packed_col_idx * 2 + 1 + out_offs_low = packed_row_idx * N + out_col_low + out_offs_high = packed_row_idx * N + out_col_high + + # Calculate block indices for scaling + block_col_low = out_col_low // BLOCK_SIZE + block_col_high = out_col_high // BLOCK_SIZE + scale_offs_low = packed_row_idx * (N // BLOCK_SIZE) + block_col_low + scale_offs_high = packed_row_idx * (N // BLOCK_SIZE) + block_col_high + + # Load scaling factors + scale_low = tl.load(scale_ptr + scale_offs_low, mask=packed_mask & (out_col_low < N), other=1.0) + scale_high = tl.load( + scale_ptr + scale_offs_high, mask=packed_mask & (out_col_high < N), other=1.0 + ) + + # Apply scaling + result_low = val_low * scale_low.to(tl.float32) * global_scale + result_high = val_high * scale_high.to(tl.float32) * global_scale + + # Store results + out_mask_low = packed_mask & (out_col_low < N) + out_mask_high = packed_mask & (out_col_high < N) + + tl.store(output_ptr + out_offs_low, result_low, mask=out_mask_low) + tl.store(output_ptr + out_offs_high, result_high, mask=out_mask_high) + + +def fp4_dequantize( + packed_tensor: torch.Tensor, + scale_tensor: torch.Tensor, + global_scale: torch.Tensor, + block_size: int = 16, + tile_size: int = 128, + dtype: torch.dtype = torch.get_default_dtype(), +) -> torch.Tensor: + """Dequantizes FP4 packed tensor using per-block scaling factors. + + Args: + packed_tensor (torch.Tensor): Packed uint8 tensor of shape (M, N//2) + scale_tensor (torch.Tensor): Per-block scale tensor of shape (M, N//block_size) + global_scale (torch.Tensor): Global scaling factor tensor + block_size (int): Size of FP4 quantization blocks + tile_size (int): Size of processing tiles + + Returns: + torch.Tensor: Dequantized tensor of shape (M, N) + """ + packed_N = packed_tensor.shape[-1] + N = packed_N * 2 + # Create output tensor with proper shape handling + output_shape = list(packed_tensor.shape) + output_shape[-1] = N + output = torch.empty(output_shape, dtype=dtype, device=packed_tensor.device) + + # Calculate total number of elements and grid size + grid = lambda meta: (triton.cdiv(packed_tensor.numel(), meta["TILE_SIZE"]),) + + fp4_dequantize_kernel[grid]( + packed_tensor, + scale_tensor, + global_scale, + output, + N, + BLOCK_SIZE=block_size, + TILE_SIZE=tile_size, + ) + + return output + + +@triton.jit +def static_blockwise_fp4_fake_quant_kernel( + x_ptr, # [NUM_FP4_BLOCKS * BLOCK_SIZE] + y_ptr, # [NUM_FP4_BLOCKS * BLOCK_SIZE] + scale_ptr, # [NUM_FP4_BLOCKS] + NUM_FP4_BLOCKS, + BLOCK_SIZE: tl.constexpr, + OUT_DTYPE: tl.constexpr, +): + pid = tl.program_id(axis=0) + if pid >= NUM_FP4_BLOCKS: + return + + block_offset = pid * BLOCK_SIZE + idx = block_offset + tl.arange(0, BLOCK_SIZE) + + scale = tl.load(scale_ptr + pid).to(tl.float32) + + x = tl.load(x_ptr + idx).to(tl.float32) + + x_abs = tl.abs(x) + # If scale is 0, inf, or nan, use 1.0 (matching CUDA kernel behavior) + # Note: (x != x) checks if x is NaN per IEEE 754 + scale_safe = tl.where( + (scale == 0) | (scale != scale) | (tl.abs(scale) == float("inf")), # noqa: PLR0124 + 1.0, + scale, + ) + abs_scaled = x_abs / scale_safe + + # FP4 values: 0.0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0 + q_val = tl.where( + abs_scaled <= 0.25, + 0.0, + tl.where( + abs_scaled < 0.75, + 0.5, + tl.where( + abs_scaled <= 1.25, + 1.0, + tl.where( + abs_scaled < 1.75, + 1.5, + tl.where( + abs_scaled <= 2.5, + 2.0, + tl.where( + abs_scaled < 3.5, + 3.0, + tl.where(abs_scaled <= 5.0, 4.0, 6.0), + ), + ), + ), + ), + ), + ) + + x_rescaled = q_val * scale_safe + x_quant = tl.where(x >= 0, x_rescaled, -x_rescaled) + + tl.store(y_ptr + idx, x_quant.to(OUT_DTYPE)) + + +def static_blockwise_fp4_fake_quant( + x: torch.Tensor, + amax: torch.Tensor, + global_amax: torch.Tensor | None = None, + quantize_block_scales: bool = True, + out_dtype: torch.dtype | None = None, +): + """Static blockwise FP4 fake quantization using Triton kernel. + + Args: + x: [NUM_FP4_BLOCKS, BLOCK_SIZE] on CUDA. + amax: [NUM_FP4_BLOCKS] or [NUM_FP4_BLOCKS, 1] per-block amax values. + global_amax: FP32 scalar global amax. If provided, used to compute scale_fp8_quant_amax. + quantize_block_scales: If True, quantize block scales to FP8. + out_dtype: Output dtype. Defaults to x.dtype if None. + """ + assert x.ndim == 2 + NUM_FP4_BLOCKS, BLOCK_SIZE = x.shape + + if out_dtype is None: + out_dtype = x.dtype + + amax = amax.float() # Requires to be in float32 + scale = amax / 6.0 # FP4 max representable value is 6.0 + + if quantize_block_scales: + from modelopt.torch.quantization.tensor_quant import scaled_e4m3_impl + from modelopt.torch.quantization.utils import reduce_amax + + if global_amax is None: + global_amax = reduce_amax(amax, axis=None, keepdims=False, squeeze_scalar=True) + + global_amax = global_amax.float() + scale_fp8_quant_amax = global_amax / 6.0 + scale = scaled_e4m3_impl(scale, scale_fp8_quant_amax) + + x_flat = x.contiguous().view(-1) + y_flat = torch.empty_like(x_flat, dtype=out_dtype) + scale_flat = scale.view(NUM_FP4_BLOCKS).contiguous() + + tl_out_dtype = _torch_dtype_to_tl(out_dtype) + + grid = (NUM_FP4_BLOCKS,) + + with torch.cuda.device(x.device): + static_blockwise_fp4_fake_quant_kernel[grid]( + x_flat, + y_flat, + scale_flat, + NUM_FP4_BLOCKS, + BLOCK_SIZE, + OUT_DTYPE=tl_out_dtype, + ) + + return y_flat.view_as(x) \ No newline at end of file diff --git a/utils/position_embedding_utils.py b/utils/position_embedding_utils.py new file mode 100644 index 0000000..f50c028 --- /dev/null +++ b/utils/position_embedding_utils.py @@ -0,0 +1,105 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +"""Minimal temporal RoPE helpers used by multi-shot generation.""" + +import torch + + +def select_temporal_offset_for_sample( + temporal_offset, + sample_idx: int, + f: int, + start_frame: int = 0, +): + """Select the offset slice that applies to one sample. + + ``temporal_offset`` accepts a scalar, ``[B]`` per-sample constants, + ``[F]`` shared per-frame offsets, or ``[B, F]`` per-sample per-frame + offsets. The returned value is still interpreted by + ``compute_temporal_freqs`` so full-length and local slices both work. + """ + if temporal_offset is None: + return 0.0 + if torch.is_tensor(temporal_offset): + if temporal_offset.ndim == 0: + return temporal_offset + if temporal_offset.ndim == 1: + # Usually this is a shared [F] vector. If it is too short to cover + # the requested frame range, treat it as [B] constants. + if temporal_offset.numel() == f or temporal_offset.numel() >= start_frame + f: + return temporal_offset + return temporal_offset[sample_idx] + if temporal_offset.ndim == 2: + return temporal_offset[sample_idx] + raise ValueError( + "temporal_offset tensor must be scalar, [B], [F], or [B, F], " + f"got shape={tuple(temporal_offset.shape)}" + ) + if isinstance(temporal_offset, (list, tuple)): + if not temporal_offset: + return 0.0 + if isinstance(temporal_offset[0], (list, tuple)): + return torch.as_tensor(temporal_offset[sample_idx]) + if len(temporal_offset) == f or len(temporal_offset) >= start_frame + f: + return torch.as_tensor(temporal_offset) + return temporal_offset[sample_idx] + return temporal_offset + + +def compute_temporal_freqs( + freqs_t: torch.Tensor, + f: int, + start_frame: int, + t_scale: float, + device: torch.device, + method: str = "linear", + original_seq_len: int | None = None, + temporal_offset: float = 0.0, +) -> torch.Tensor: + """Compute linear temporal RoPE freqs with an optional multi-shot offset.""" + if method != "linear": + raise ValueError(f"Only linear temporal RoPE is supported in this release, got {method}.") + if original_seq_len is not None: + raise ValueError("original_seq_len is not used by the release linear RoPE path.") + if temporal_offset is None: + temporal_offset = 0.0 + if ( + t_scale == 1.0 + and not torch.is_tensor(temporal_offset) + and float(temporal_offset) == 0.0 + ): + return freqs_t[start_frame:start_frame + f] + + base_angles = torch.angle(freqs_t[1]).to(torch.float64) + positions = torch.arange(f, device=device, dtype=torch.float64) + start_frame + if torch.is_tensor(temporal_offset): + offset = temporal_offset.to(device=device, dtype=torch.float64) + if offset.ndim == 0: + positions = positions + offset + elif offset.ndim == 1: + if offset.numel() == f: + positions = positions + offset + elif offset.numel() >= start_frame + f: + positions = positions + offset[start_frame:start_frame + f] + else: + raise ValueError( + "temporal_offset length is too short for requested RoPE " + f"range: len={offset.numel()}, start={start_frame}, f={f}" + ) + else: + raise ValueError( + "compute_temporal_freqs expects a scalar or 1D temporal_offset " + f"after sample selection, got shape={tuple(offset.shape)}" + ) + else: + positions = positions + float(temporal_offset) + positions = positions * t_scale + angles = positions.unsqueeze(-1) * base_angles.unsqueeze(0) + return torch.polar(torch.ones_like(angles), angles) diff --git a/utils/quant.py b/utils/quant.py new file mode 100644 index 0000000..7af03d6 --- /dev/null +++ b/utils/quant.py @@ -0,0 +1,818 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +import importlib +import inspect +from contextlib import nullcontext +from copy import deepcopy +from dataclasses import dataclass +import re +from typing import Any +import warnings + +import torch +import torch.nn as nn +from fouroversix import ( + DataType, + ModelQuantizationConfig, + QuantizationConfig, + QuantizedTensor, + RoundStyle, + ScaleRule, + quantize_model, + quantize_to_fp4, +) +from fouroversix.quantize.quantized_tensor import from_blocked + +from utils.nvfp4_kernel import fp4_dequantize + +_FUSED_KV_DEQUANT_DISABLED = False +_FUSED_KV_DEQUANT_WARNED = False + +QUANTIZATION_TYPE = { + "weight": "weight", + "activation": "activation", + "kv": "kv", +} + +DEFAULT_GENERATOR_FILTERED_MODULES = [ + "text_embedding.0", + "text_embedding.2", + "patch_embedding", + "time_projection.1", + "time_embedding.0", + "time_embedding.2", + "head.head", + "head.modulation", + "re:.*norm_k$", + "re:.*norm_q$", + "re:.*norm1$", + "re:.*norm2$", + "re:.*norm3$" +] + +DEFAULT_REAL_SCORE_FILTERED_MODULES = list(DEFAULT_GENERATOR_FILTERED_MODULES) +DEFAULT_FAKE_SCORE_FILTERED_MODULES = list(DEFAULT_GENERATOR_FILTERED_MODULES) +DEFAULT_FILTERED_MODULES = list(DEFAULT_GENERATOR_FILTERED_MODULES) + +FILTER_PROFILE_ALIASES = { + "generator": "generator", + "student": "generator", + "real_score": "real_score", + "teacher": "real_score", + "fake_score": "fake_score", + "critic": "fake_score", +} + + +@dataclass +class LongLiveQuantizationConfig(QuantizationConfig): + type: str = "weight" + + def __post_init__(self) -> None: + super().__post_init__() + + if not isinstance(self.type, str): + raise TypeError("Quantization type must be a string.") + if self.type not in QUANTIZATION_TYPE: + allowed = ", ".join(QUANTIZATION_TYPE.keys()) + raise ValueError(f"Unknown quantization type '{self.type}'. Expected one of: {allowed}.") + + self.type = QUANTIZATION_TYPE[self.type] + + +def _resolve_modules_to_not_convert( + model: nn.Module, + filtered_modules: list[str] | None, +) -> list[str]: + if not filtered_modules: + return [] + + exact_names = set() + regex_patterns = [] + for pattern in filtered_modules: + if not isinstance(pattern, str): + raise TypeError("Each filtered module pattern must be a string.") + if pattern.startswith("re:"): + regex_patterns.append(re.compile(pattern[3:])) + else: + exact_names.add(pattern) + + resolved = [] + for module_name, _ in model.named_modules(): + if not module_name: + continue + if module_name in exact_names or any( + regex.search(module_name) for regex in regex_patterns + ): + resolved.append(module_name) + + return sorted(set(resolved)) + + +def _get_default_filtered_modules(filter_profile: str | None) -> list[str]: + if filter_profile is None: + return list(DEFAULT_FILTERED_MODULES) + + normalized = FILTER_PROFILE_ALIASES.get(filter_profile, filter_profile) + if normalized == "generator": + return list(DEFAULT_GENERATOR_FILTERED_MODULES) + if normalized == "real_score": + return list(DEFAULT_REAL_SCORE_FILTERED_MODULES) + if normalized == "fake_score": + return list(DEFAULT_FAKE_SCORE_FILTERED_MODULES) + + allowed = ", ".join(sorted(FILTER_PROFILE_ALIASES)) + raise ValueError( + f"Unknown filter_profile '{filter_profile}'. Expected one of: {allowed}.", + ) + + +def _warn_for_te_config_mismatch(model_quant_config: ModelQuantizationConfig) -> None: + config_entries = [("default", model_quant_config)] + module_overrides = getattr(model_quant_config, "module_config_overrides", None) or {} + config_entries.extend(sorted(module_overrides.items())) + + mismatched_rules = [] + for module_name, module_config in config_entries: + if getattr(module_config, "dtype", DataType.nvfp4) != DataType.nvfp4: + raise NotImplementedError( + "TransformerEngine replacement currently only supports NVFP4." + ) + + for attr_name in ( + "scale_rule", + "activation_scale_rule", + "weight_scale_rule", + "gradient_scale_rule", + ): + rule = getattr(module_config, attr_name, None) + if rule is not None and rule != ScaleRule.static_6: + mismatched_rules.append(f"{module_name}:{attr_name}={rule}") + + if mismatched_rules: + preview = ", ".join(mismatched_rules[:8]) + if len(mismatched_rules) > 8: + preview += ", ..." + warnings.warn( + "TransformerEngine NVFP4 path maps to `NVFP4BlockScaling` and does not " + "replicate FourOverSix non-`static_6` scale rules exactly. " + f"Mismatched config entries: {preview}", + stacklevel=3, + ) + + +def _build_te_recipe(module_config: Any, te_recipe_kwargs: dict[str, Any] | None = None): + recipe_module = importlib.import_module("transformer_engine.common.recipe") + NVFP4BlockScaling = recipe_module.NVFP4BlockScaling + + recipe_kwargs = { + "disable_2d_quantization": not getattr(module_config, "weight_scale_2d", False), + "disable_stochastic_rounding": ( + getattr(module_config, "gradient_round_style", RoundStyle.nearest) + != RoundStyle.stochastic + ), + # FourOverSix only uses RHT in specific training paths, so keep TE conservative + # by default and let callers override via `te_recipe_kwargs`. + "disable_rht": True, + } + if te_recipe_kwargs: + recipe_kwargs.update(te_recipe_kwargs) + return NVFP4BlockScaling(**recipe_kwargs) + + +class TransformerEngineLinear(nn.Module): + """A lightweight wrapper that routes a linear layer through TransformerEngine.""" + + def __init__( + self, + module: nn.Linear, + module_name: str, + module_config: Any, + inference_only: bool = False, + low_precision_weights: bool = False, + te_recipe_kwargs: dict[str, Any] | None = None, + te_module_kwargs: dict[str, Any] | None = None, + ) -> None: + super().__init__() + + try: + te = importlib.import_module("transformer_engine.pytorch") + except ImportError as exc: + raise ImportError( + "TransformerEngine is not installed, but `use_transformer_engine=True` " + "was requested." + ) from exc + + if module.weight.device.type != "cuda": + raise ValueError( + "TransformerEngine replacement requires CUDA modules. " + f"Module `{module_name}` is on `{module.weight.device}`." + ) + + self.module_name = module_name + self.in_features = module.in_features + self.out_features = module.out_features + self.inference_only = inference_only + self.low_precision_weights = low_precision_weights + self._te = te + self._recipe = _build_te_recipe( + module_config=module_config, + te_recipe_kwargs=te_recipe_kwargs, + ) + + module_kwargs = dict(te_module_kwargs or {}) + module_kwargs.setdefault("device", module.weight.device) + module_kwargs.setdefault("params_dtype", module.weight.dtype) + module_kwargs.setdefault("name", module_name) + + fp8_model_init_fn = getattr(te, "fp8_model_init", None) + if self.low_precision_weights and fp8_model_init_fn is None: + warnings.warn( + "TransformerEngine low-precision parameter init requested, but " + "`fp8_model_init` is unavailable. Falling back to regular TE parameter " + "storage for this inference path.", + stacklevel=2, + ) + self.low_precision_weights = False + + model_init_context = ( + fp8_model_init_fn( + enabled=True, + recipe=self._recipe, + preserve_high_precision_init_val=False, + ) + if self.low_precision_weights + else nullcontext() + ) + with model_init_context: + self.linear = te.Linear( + module.in_features, + module.out_features, + bias=module.bias is not None, + **module_kwargs, + ) + + self._load_from_linear(module) + + if self.inference_only: + self.linear.requires_grad_(False) + self.train(False) + else: + self.linear.weight.requires_grad_(module.weight.requires_grad) + if self.linear.bias is not None and module.bias is not None: + self.linear.bias.requires_grad_(module.bias.requires_grad) + self.train(module.training) + + def _copy_tensor_into_parameter( + self, + destination: torch.Tensor, + source: torch.Tensor, + ) -> None: + source = source.detach().to(device=destination.device) + try: + destination.copy_(source) + return + except Exception: + pass + + destination.copy_(source.to(dtype=destination.dtype)) + + def _load_from_linear(self, module: nn.Linear) -> None: + with torch.no_grad(): + try: + self._copy_tensor_into_parameter(self.linear.weight, module.weight) + if module.bias is not None and self.linear.bias is not None: + self._copy_tensor_into_parameter(self.linear.bias, module.bias) + return + except Exception as copy_exc: + state_dict = { + "weight": module.weight.detach().to(device=self.linear.weight.device), + } + if module.bias is not None: + state_dict["bias"] = module.bias.detach().to( + device=self.linear.weight.device, + ) + incompatible_keys = self.linear.load_state_dict(state_dict, strict=False) + missing_keys = [ + key + for key in getattr(incompatible_keys, "missing_keys", []) + if key != "_extra_state" + ] + unexpected_keys = list(getattr(incompatible_keys, "unexpected_keys", [])) + if missing_keys or unexpected_keys: + raise RuntimeError( + "Failed to load weights into TransformerEngine linear " + f"`{self.module_name}`. missing_keys={missing_keys}, " + f"unexpected_keys={unexpected_keys}" + ) from copy_exc + + @property + def weight(self) -> torch.Tensor: + return self.linear.weight + + @property + def bias(self) -> torch.Tensor | None: + return self.linear.bias + + def _autocast_context(self): + autocast_fn = getattr(self._te, "autocast", None) + if autocast_fn is not None: + return autocast_fn(enabled=True, recipe=self._recipe) + fp8_autocast_fn = getattr(self._te, "fp8_autocast", None) + if fp8_autocast_fn is None: + raise AttributeError( + "TransformerEngine does not expose `autocast` or `fp8_autocast`." + ) + return fp8_autocast_fn(enabled=True, fp8_recipe=self._recipe) + + def forward(self, input: torch.Tensor) -> torch.Tensor: + with self._autocast_context(): + return self.linear(input) + + def extra_repr(self) -> str: + return ( + f"in_features={self.in_features}, " + f"out_features={self.out_features}, " + f"bias={self.bias is not None}, " + f"inference_only={self.inference_only}, " + f"low_precision_weights={self.low_precision_weights}, " + "backend=transformer_engine" + ) + + +def quantize_model_with_optional_te( + model: nn.Module, + model_quant_config: ModelQuantizationConfig, + *, + use_transformer_engine: bool = False, + te_inference_only: bool = False, + te_low_precision_weights: bool | None = None, + te_recipe_kwargs: dict[str, Any] | None = None, + te_module_kwargs: dict[str, Any] | None = None, + te_fallback_to_fouroversix: bool = False, + **kwargs, +) -> list[str]: + """ + Quantize a model with FourOverSix by default, or replace `nn.Linear` with + TransformerEngine wrappers when `use_transformer_engine=True`. + """ + if not use_transformer_engine: + quantize_model(model, model_quant_config, **kwargs) + return [] + + if te_low_precision_weights is None: + te_low_precision_weights = te_inference_only + + if kwargs: + if te_fallback_to_fouroversix: + warnings.warn( + "Additional kwargs passed to `quantize_model_with_optional_te` will " + "only be forwarded to the fallback FourOverSix pass after " + f"TransformerEngine replacement: {sorted(kwargs)}", + stacklevel=2, + ) + else: + warnings.warn( + "Additional kwargs passed to `quantize_model` are ignored in the " + f"TransformerEngine path: {sorted(kwargs)}", + stacklevel=2, + ) + + _warn_for_te_config_mismatch(model_quant_config) + + replaced_modules = [] + for module_name, module in list(model.named_modules()): + if ( + module_name == "" + or module_name in model_quant_config.modules_to_not_convert + or not isinstance(module, nn.Linear) + ): + continue + + model.set_submodule( + module_name, + TransformerEngineLinear( + module=module, + module_name=module_name, + module_config=model_quant_config.get_module_config(module_name), + inference_only=te_inference_only, + low_precision_weights=te_low_precision_weights, + te_recipe_kwargs=te_recipe_kwargs, + te_module_kwargs=te_module_kwargs, + ), + ) + replaced_modules.append(module_name) + + if te_fallback_to_fouroversix: + quantize_model(model, model_quant_config, **kwargs) + + return replaced_modules + + +def _tensor_nbytes(tensor: torch.Tensor | None) -> int: + if tensor is None: + return 0 + return tensor.numel() * tensor.element_size() + + +def _materialize_transformer_engine_weights_for_inference( + model: nn.Module, + target_device: torch.device | str | None = None, + cache_transposed_weights: bool = False, +) -> tuple[list[str], int, int]: + del cache_transposed_weights + + materialized_modules = [] + master_weight_bytes = 0 + quantized_weight_bytes = 0 + + for module_name, module in model.named_modules(): + if not isinstance(module, TransformerEngineLinear): + continue + + if target_device is not None: + module.to(device=torch.device(target_device)) + + quantized_weight_bytes += _tensor_nbytes(module.weight) + quantized_weight_bytes += _tensor_nbytes(module.bias) + materialized_modules.append(module_name) + + return materialized_modules, master_weight_bytes, quantized_weight_bytes + + +def _materialize_mixed_quantized_weights_for_inference( + model: nn.Module, + target_device: torch.device | str | None = None, + cache_transposed_weights: bool = False, +) -> tuple[list[str], int, int]: + te_modules, te_master_bytes, te_quantized_bytes = ( + _materialize_transformer_engine_weights_for_inference( + model, + target_device=target_device, + cache_transposed_weights=cache_transposed_weights, + ) + ) + f46_modules, f46_master_bytes, f46_quantized_bytes = ( + _materialize_quantized_weights_for_inference( + model, + target_device=target_device, + cache_transposed_weights=cache_transposed_weights, + ) + ) + + return ( + sorted(set(te_modules + f46_modules)), + te_master_bytes + f46_master_bytes, + te_quantized_bytes + f46_quantized_bytes, + ) + + +def _materialize_quantized_weights_for_inference( + model: nn.Module, + target_device: torch.device | str | None = None, + cache_transposed_weights: bool = False, +) -> tuple[list[str], int, int]: + """ + Materialize quantized weights and drop master weights. + + Optionally cache an additional transposed quantized layout for training paths that + still require dgrad after the master weight is deleted (e.g. NVFP4 + LoRA). + + This function expects modules replaced by `fouroversix.quantize_model`. + """ + materialized_modules = [] + master_weight_bytes = 0 + quantized_weight_bytes = 0 + + for module_name, module in model.named_modules(): + if not hasattr(module, "parameters_to_quantize") or not hasattr( + module, "get_quantized_parameters", + ): + continue + + parameters_to_quantize = getattr(module, "parameters_to_quantize", ()) + if callable(parameters_to_quantize): + parameters_to_quantize = parameters_to_quantize() + if not parameters_to_quantize: + continue + + did_materialize = False + for parameter_name in parameters_to_quantize: + parameter = getattr(module, parameter_name, None) + if parameter is None: + continue + + if isinstance(parameter, nn.Parameter): + parameter_tensor = parameter.data + elif isinstance(parameter, torch.Tensor): + parameter_tensor = parameter + else: + continue + + master_weight_bytes += parameter_tensor.numel() * parameter_tensor.element_size() + get_quantized_parameters = module.get_quantized_parameters + if ( + cache_transposed_weights + and "include_transposed" in inspect.signature( + get_quantized_parameters, + ).parameters + ): + quantized_params = get_quantized_parameters( + parameter_name, + parameter_tensor, + include_transposed=True, + ) + else: + quantized_params = get_quantized_parameters( + parameter_name, + parameter_tensor, + ) + + for quantized_name, quantized_tensor in quantized_params.items(): + if not isinstance(quantized_tensor, torch.Tensor): + continue + + existing = getattr(module, quantized_name, None) + dst_dtype = ( + existing.dtype + if isinstance(existing, torch.Tensor) + else quantized_tensor.dtype + ) + if target_device is not None: + dst_device = torch.device(target_device) + elif isinstance(existing, torch.Tensor): + dst_device = existing.device + else: + dst_device = quantized_tensor.device + + quantized_tensor = quantized_tensor.to( + device=dst_device, + dtype=dst_dtype, + ) + setattr(module, quantized_name, quantized_tensor) + quantized_weight_bytes += ( + quantized_tensor.numel() * quantized_tensor.element_size() + ) + + # Drop high-precision master weight once quantized weights are materialized. + if isinstance(getattr(module, parameter_name, None), nn.Parameter): + module.register_parameter(parameter_name, None) + else: + setattr(module, parameter_name, None) + did_materialize = True + + if did_materialize: + if hasattr(module, "_quantized_weight"): + delattr(module, "_quantized_weight") + if hasattr(module, "_quantized_weight_transposed"): + delattr(module, "_quantized_weight_transposed") + if hasattr(module, "_quantized_weights"): + delattr(module, "_quantized_weights") + if hasattr(module, "config") and hasattr(module.config, "keep_master_weights"): + module.config.keep_master_weights = False + materialized_modules.append(module_name) + + return materialized_modules, master_weight_bytes, quantized_weight_bytes + + +def quantize_model_with_filter( + model: nn.Module, + quant_config: ModelQuantizationConfig | dict | None = None, + filtered_modules: list[str] | None = None, + filter_profile: str | None = None, + use_default_filtered_modules: bool = False, + cast_model_to_bf16: bool = True, + materialize_for_inference: bool = False, + materialize_target_device: torch.device | str | None = None, + use_transformer_engine: bool = False, + te_inference_only: bool = False, + te_low_precision_weights: bool | None = None, + te_recipe_kwargs: dict[str, Any] | None = None, + te_module_kwargs: dict[str, Any] | None = None, + te_fallback_to_fouroversix: bool = False, + verbose: bool = True, + **kwargs, +) -> tuple[nn.Module, list[str]]: + """ + Quantize model with FourOverSix and optionally skip selected modules. + + `filtered_modules` supports: + - Exact module names, e.g. "head.head" + - Regex patterns prefixed with "re:", e.g. "re:.*norm1$" + + `filter_profile` selects which built-in filtered module profile to use when + `use_default_filtered_modules=True`. Supported values: + "generator"/"student" and "real_score"/"teacher". + """ + if quant_config is None: + model_quant_config = ModelQuantizationConfig() + elif isinstance(quant_config, dict): + model_quant_config = ModelQuantizationConfig(**quant_config) + elif isinstance(quant_config, ModelQuantizationConfig): + model_quant_config = deepcopy(quant_config) + else: + raise TypeError( + "quant_config must be ModelQuantizationConfig, dict, or None.", + ) + + patterns = list(filtered_modules or []) + if use_default_filtered_modules: + patterns = _get_default_filtered_modules(filter_profile) + patterns + + matched_modules = _resolve_modules_to_not_convert(model, patterns) + modules_to_not_convert = set(model_quant_config.modules_to_not_convert or []) + modules_to_not_convert.update(matched_modules) + model_quant_config.modules_to_not_convert = sorted(modules_to_not_convert) + + if cast_model_to_bf16: + model.to(torch.bfloat16) + + resolved_te_low_precision_weights = ( + te_inference_only if te_low_precision_weights is None else te_low_precision_weights + ) + + te_replaced_modules = quantize_model_with_optional_te( + model, + model_quant_config, + use_transformer_engine=use_transformer_engine, + te_inference_only=te_inference_only, + te_low_precision_weights=resolved_te_low_precision_weights, + te_recipe_kwargs=te_recipe_kwargs, + te_module_kwargs=te_module_kwargs, + te_fallback_to_fouroversix=te_fallback_to_fouroversix, + **kwargs, + ) + + if materialize_for_inference: + materialize_fn = _materialize_quantized_weights_for_inference + if use_transformer_engine and te_fallback_to_fouroversix: + materialize_fn = _materialize_mixed_quantized_weights_for_inference + elif use_transformer_engine: + materialize_fn = _materialize_transformer_engine_weights_for_inference + + materialized_modules, master_bytes, quantized_bytes = materialize_fn( + model, + target_device=materialize_target_device, + ) + if verbose: + print( + "[quantize_model_with_filter] " + f"materialized_modules={len(materialized_modules)}, " + f"master_weight={master_bytes / (1024 ** 3):.3f} GiB, " + f"quantized_weight={quantized_bytes / (1024 ** 3):.3f} GiB", + ) + + if verbose: + profile_label = filter_profile or "default" + print( + "[quantize_model_with_filter] " + f"profile={profile_label}, " + f"matched={len(matched_modules)}, " + f"total_excluded={len(model_quant_config.modules_to_not_convert)}", + ) + if use_transformer_engine: + print( + "[quantize_model_with_filter] " + f"transformer_engine_replaced={len(te_replaced_modules)}, " + f"inference_only={te_inference_only}, " + f"low_precision_weights={resolved_te_low_precision_weights}, " + f"fallback_to_fouroversix={te_fallback_to_fouroversix}", + ) + + return model, matched_modules + + +def _dequantize_kv_cache_fused_cuda(kv_list, max_blocks, num_heads, block_token_size, dtype): + global _FUSED_KV_DEQUANT_DISABLED, _FUSED_KV_DEQUANT_WARNED + + if _FUSED_KV_DEQUANT_DISABLED or max_blocks <= 0: + return None + + first_qt = kv_list[0] + if first_qt.values.device.type != "cuda": + return None + + try: + from utils.kernel.kv_dequant import dequantize_kv_cache_fp4 + + blocks = kv_list[:max_blocks] + values = [qt.values for qt in blocks] + scale_factors = [qt.scale_factors for qt in blocks] + amax = [qt.amax for qt in blocks] + + return dequantize_kv_cache_fp4( + values, + scale_factors, + amax, + num_heads=num_heads, + block_token_size=block_token_size, + dtype=dtype, + scale_rule=first_qt.scale_rule, + ) + except Exception as exc: # pragma: no cover - exercised only when extension is stale/missing + _FUSED_KV_DEQUANT_DISABLED = True + if not _FUSED_KV_DEQUANT_WARNED: + warnings.warn( + "Fused CUDA KV-cache dequantization is unavailable; falling back to " + f"the Triton per-block path. Reason: {exc}", + stacklevel=2, + ) + _FUSED_KV_DEQUANT_WARNED = True + return None + + +def dequantize_kv_cache(kv_list, max_blocks, num_heads, block_token_size, dtype, device): + """ + Dequantize list of QuantizedTensor to a contiguous bf16 tensor. + kv_list[block_idx] -> QuantizedTensor(block_token_size * num_heads, 128) + Returns: [1, max_blocks * block_token_size, num_heads, 128] + """ + fused_result = _dequantize_kv_cache_fused_cuda( + kv_list, max_blocks, num_heads, block_token_size, dtype, + ) + if fused_result is not None: + return fused_result + + total_tokens = max_blocks * block_token_size + result = torch.zeros([1, total_tokens, num_heads, 128], dtype=dtype, device=device) + for block_idx in range(max_blocks): + t_start = block_idx * block_token_size + t_end = t_start + block_token_size + # deq = kv_list[block_idx].dequantize(dtype) + # triton fp4_dequantize + qt = kv_list[block_idx] + padded_shape = qt.padded_shape + scales_2d = from_blocked( + qt.scale_factors, + (padded_shape[0], padded_shape[1] // 16), + ) + global_scale = qt.amax / ( + qt.scale_rule.max_allowed_e2m1_value() + * qt.scale_rule.max_allowed_e4m3_value() + ) + deq = fp4_dequantize( + kv_list[block_idx].values, + scales_2d, + global_scale, + block_size=16, + dtype=dtype, + ) + result[0, t_start:t_end, :, :] = deq.view(block_token_size, num_heads, 128) + return result + +def clone_quantized_tensor(qt): + """Clone a QuantizedTensor by cloning its internal tensors.""" + return QuantizedTensor( + values=qt.values.clone(), + scale_factors=qt.scale_factors.clone(), + amax=qt.amax.clone() if qt.amax is not None else None, + dtype=qt.dtype, + original_shape=qt.original_shape, + scale_rule=qt.scale_rule, + padded_shape=qt.padded_shape, + ) + + +def copy_quantized_into(slot: QuantizedTensor, src: QuantizedTensor) -> None: + """In-place copy a QuantizedTensor's data into a pre-allocated slot. + + Keeps the slot's `values`/`scale_factors`/`amax` buffers persistent + (their addresses don't change) so cudagraph allocator does not see them + as fresh outputs that can be reused across step boundaries. Used by the + quantized KV cache rolling/insert paths. + """ + slot.values.copy_(src.values) + slot.scale_factors.copy_(src.scale_factors) + if src.amax is not None and slot.amax is not None: + slot.amax.copy_(src.amax) + + +def k_smooth(k: torch.Tensor) -> torch.Tensor: + return k - k.mean(dim=-1, keepdim=True) + +def quantize_kv(k: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + B, S, H, D = k.shape + # B is always 1 + # S is the number of tokens + # H is the number of heads + # D is the dimension of the key and value + + config = QuantizationConfig(scale_rule="mse", backend="cuda") + # per head quantization + for head in range(H): + k_head = k[:, :, head, :] + v_head = v[:, :, head, :] + k_head = k_smooth(k_head) + v_head = v_head + k_head = quantize_to_fp4(k_head, config) + v_head = quantize_to_fp4(v_head, config) + k[:, :, head, :] = k_head + v[:, :, head, :] = v_head + return k, v diff --git a/utils/rope_triton.py b/utils/rope_triton.py new file mode 100644 index 0000000..687e3b4 --- /dev/null +++ b/utils/rope_triton.py @@ -0,0 +1,135 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +"""Triton RoPE kernel for causal_rope_apply. + +iter-42: replaces the complex × view_as_complex × view_as_real chain +(33 ms / 1.3% of profile + feeding elementwise muls) with a single Triton +kernel. Internal precision is fp32 — bf16 outputs cannot resolve any precision +loss from fp32 vs fp64 arithmetic at this stage. cos / sin lookup tables come +from the complex128 freqs split into real / imag floats up-front (one-shot per +freqs_i cache entry). +""" +from __future__ import annotations + +import torch +import triton +import triton.language as tl + + +# iter-45 (REVERTED): tried @triton.autotune over (BLOCK_N∈{4,8,16}, +# num_warps∈{2,4,8}, num_stages∈{1,2,3}) = 27 configs. Result was FLAT vs +# iter-42 fixed BLOCK_N=8: median tied (-0.1%), total +0.4% (autotune warmup +# bled into p1/p2 p90). The original BLOCK_N=8 / default warps was already +# near-optimal for the (N=24, D_half=64) shape, autotune found no better. +# Reverted to fixed config — same kernel as iter-42. +# +# iter-46: kernel now accepts FULL x[i] of shape [S_total, N, D] and a +# runtime `seq_len` — for rows s < seq_len it applies rotation, for +# s >= seq_len it copies through. This subsumes the `torch.cat([rotated, +# x[i, seq_len:]])` step (1 fewer kernel + 1 fewer alloc per call). Also +# skips the upstream `.contiguous()` because we no longer slice x. +@triton.jit +def _rope_apply_kernel( + x_ptr, # [S_total, N, D] bf16 (D is even, pairs are (a,b)=(2d, 2d+1)) + cos_ptr, # [seq_len, D/2] fp32 (valid only for s < seq_len) + sin_ptr, # [seq_len, D/2] fp32 + out_ptr, # [S_total, N, D] bf16 + SEQ_LEN, N, D_half, + x_stride_s, x_stride_n, + o_stride_s, o_stride_n, + cs_stride_s, + BLOCK_N: tl.constexpr, + BLOCK_D: tl.constexpr, +): + pid_s = tl.program_id(0) + pid_n = tl.program_id(1) + + offs_n = pid_n * BLOCK_N + tl.arange(0, BLOCK_N) + offs_d = tl.arange(0, BLOCK_D) # over the D/2 pairs + + n_mask = offs_n < N + d_mask = offs_d < D_half + + x_row_base = pid_s * x_stride_s + o_row_base = pid_s * o_stride_s + a_offs = x_row_base + offs_n[:, None] * x_stride_n + (2 * offs_d)[None, :] + b_offs = a_offs + 1 + mask = n_mask[:, None] & d_mask[None, :] + a = tl.load(x_ptr + a_offs, mask=mask, other=0.0).to(tl.float32) + b = tl.load(x_ptr + b_offs, mask=mask, other=0.0).to(tl.float32) + + a_out_offs = o_row_base + offs_n[:, None] * o_stride_n + (2 * offs_d)[None, :] + b_out_offs = a_out_offs + 1 + + if pid_s < SEQ_LEN: + cs_base = pid_s * cs_stride_s + cos = tl.load(cos_ptr + cs_base + offs_d, mask=d_mask, other=0.0).to(tl.float32) + sin = tl.load(sin_ptr + cs_base + offs_d, mask=d_mask, other=0.0).to(tl.float32) + # Rotate: (a + bi) * (cos + sin i) = (a*cos - b*sin) + (a*sin + b*cos) i + out_a = a * cos[None, :] - b * sin[None, :] + out_b = a * sin[None, :] + b * cos[None, :] + tl.store(out_ptr + a_out_offs, out_a, mask=mask) + tl.store(out_ptr + b_out_offs, out_b, mask=mask) + else: + # passthrough copy for the unrotated tail + tl.store(out_ptr + a_out_offs, a, mask=mask) + tl.store(out_ptr + b_out_offs, b, mask=mask) + + +def _split_complex_to_cos_sin(freqs_complex: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]: + """Convert complex128 freqs to (cos_f32, sin_f32) — once per cache entry.""" + # freqs_complex shape: (S, 1, D/2). Squeeze the middle 1. + if freqs_complex.dim() == 3 and freqs_complex.size(1) == 1: + freqs_complex = freqs_complex.squeeze(1) + cos = freqs_complex.real.to(torch.float32).contiguous() + sin = freqs_complex.imag.to(torch.float32).contiguous() + return cos, sin + + +def rope_apply_triton( + x: torch.Tensor, # [S_total, N, D] bf16 (or fp16/fp32) + cos_f32: torch.Tensor, # [seq_len, D/2] fp32 + sin_f32: torch.Tensor, # [seq_len, D/2] fp32 + seq_len: int | None = None, +) -> torch.Tensor: + """Apply rotary embedding via Triton kernel. + + iter-46: when `seq_len < x.size(0)`, the kernel rotates the first + `seq_len` rows and copies through rows `[seq_len:]`. This replaces the + `cat([rotated, x[i, seq_len:]])` pattern in `causal_rope_apply` with a + single kernel + single allocation. `seq_len=None` (default) means rotate + all rows (equivalent to iter-42 behavior). + + Returns a tensor of the same shape and dtype as `x`. + """ + assert x.dim() == 3, f"expected x.shape == (S, N, D), got {x.shape}" + S_total, N, D = x.shape + assert D % 2 == 0 + D_half = D // 2 + if seq_len is None: + seq_len = S_total + assert seq_len <= S_total + assert cos_f32.shape == (seq_len, D_half), \ + f"cos_f32 expected ({seq_len},{D_half}), got {cos_f32.shape}" + assert sin_f32.shape == (seq_len, D_half) + + out = torch.empty_like(x) + + BLOCK_N = 8 + BLOCK_D = triton.next_power_of_2(D_half) + grid = (S_total, triton.cdiv(N, BLOCK_N)) + + _rope_apply_kernel[grid]( + x, cos_f32, sin_f32, out, + seq_len, N, D_half, + x.stride(0), x.stride(1), + out.stride(0), out.stride(1), + cos_f32.stride(0), + BLOCK_N=BLOCK_N, BLOCK_D=BLOCK_D, + ) + return out diff --git a/utils/scheduler.py b/utils/scheduler.py new file mode 100644 index 0000000..cde3f85 --- /dev/null +++ b/utils/scheduler.py @@ -0,0 +1,194 @@ +from abc import abstractmethod, ABC +import torch + + +class SchedulerInterface(ABC): + """ + Base class for diffusion noise schedule. + """ + alphas_cumprod: torch.Tensor # [T], alphas for defining the noise schedule + + @abstractmethod + def add_noise( + self, clean_latent: torch.Tensor, + noise: torch.Tensor, timestep: torch.Tensor + ): + """ + Diffusion forward corruption process. + Input: + - clean_latent: the clean latent with shape [B, C, H, W] + - noise: the noise with shape [B, C, H, W] + - timestep: the timestep with shape [B] + Output: the corrupted latent with shape [B, C, H, W] + """ + pass + + def convert_x0_to_noise( + self, x0: torch.Tensor, xt: torch.Tensor, + timestep: torch.Tensor + ) -> torch.Tensor: + """ + Convert the diffusion network's x0 prediction to noise predidction. + x0: the predicted clean data with shape [B, C, H, W] + xt: the input noisy data with shape [B, C, H, W] + timestep: the timestep with shape [B] + + noise = (xt-sqrt(alpha_t)*x0) / sqrt(beta_t) (eq 11 in https://arxiv.org/abs/2311.18828) + """ + # use higher precision for calculations + original_dtype = x0.dtype + x0, xt, alphas_cumprod = map( + lambda x: x.double().to(x0.device), [x0, xt, + self.alphas_cumprod] + ) + + alpha_prod_t = alphas_cumprod[timestep].reshape(-1, 1, 1, 1) + beta_prod_t = 1 - alpha_prod_t + + noise_pred = (xt - alpha_prod_t ** + (0.5) * x0) / beta_prod_t ** (0.5) + return noise_pred.to(original_dtype) + + def convert_noise_to_x0( + self, noise: torch.Tensor, xt: torch.Tensor, + timestep: torch.Tensor + ) -> torch.Tensor: + """ + Convert the diffusion network's noise prediction to x0 predidction. + noise: the predicted noise with shape [B, C, H, W] + xt: the input noisy data with shape [B, C, H, W] + timestep: the timestep with shape [B] + + x0 = (x_t - sqrt(beta_t) * noise) / sqrt(alpha_t) (eq 11 in https://arxiv.org/abs/2311.18828) + """ + # use higher precision for calculations + original_dtype = noise.dtype + noise, xt, alphas_cumprod = map( + lambda x: x.double().to(noise.device), [noise, xt, + self.alphas_cumprod] + ) + alpha_prod_t = alphas_cumprod[timestep].reshape(-1, 1, 1, 1) + beta_prod_t = 1 - alpha_prod_t + + x0_pred = (xt - beta_prod_t ** + (0.5) * noise) / alpha_prod_t ** (0.5) + return x0_pred.to(original_dtype) + + def convert_velocity_to_x0( + self, velocity: torch.Tensor, xt: torch.Tensor, + timestep: torch.Tensor + ) -> torch.Tensor: + """ + Convert the diffusion network's velocity prediction to x0 predidction. + velocity: the predicted noise with shape [B, C, H, W] + xt: the input noisy data with shape [B, C, H, W] + timestep: the timestep with shape [B] + + v = sqrt(alpha_t) * noise - sqrt(beta_t) x0 + noise = (xt-sqrt(alpha_t)*x0) / sqrt(beta_t) + given v, x_t, we have + x0 = sqrt(alpha_t) * x_t - sqrt(beta_t) * v + see derivations https://chatgpt.com/share/679fb6c8-3a30-8008-9b0e-d1ae892dac56 + """ + # use higher precision for calculations + original_dtype = velocity.dtype + velocity, xt, alphas_cumprod = map( + lambda x: x.double().to(velocity.device), [velocity, xt, + self.alphas_cumprod] + ) + alpha_prod_t = alphas_cumprod[timestep].reshape(-1, 1, 1, 1) + beta_prod_t = 1 - alpha_prod_t + + x0_pred = (alpha_prod_t ** 0.5) * xt - (beta_prod_t ** 0.5) * velocity + return x0_pred.to(original_dtype) + + +class FlowMatchScheduler(): + + def __init__(self, num_inference_steps=100, num_train_timesteps=1000, shift=3.0, sigma_max=1.0, sigma_min=0.003 / 1.002, inverse_timesteps=False, extra_one_step=False, reverse_sigmas=False): + self.num_train_timesteps = num_train_timesteps + self.shift = shift + self.sigma_max = sigma_max + self.sigma_min = sigma_min + self.inverse_timesteps = inverse_timesteps + self.extra_one_step = extra_one_step + self.reverse_sigmas = reverse_sigmas + self.set_timesteps(num_inference_steps) + + def set_timesteps(self, num_inference_steps=100, denoising_strength=1.0, training=False): + sigma_start = self.sigma_min + \ + (self.sigma_max - self.sigma_min) * denoising_strength + if self.extra_one_step: + self.sigmas = torch.linspace( + sigma_start, self.sigma_min, num_inference_steps + 1)[:-1] + else: + self.sigmas = torch.linspace( + sigma_start, self.sigma_min, num_inference_steps) + if self.inverse_timesteps: + self.sigmas = torch.flip(self.sigmas, dims=[0]) + self.sigmas = self.shift * self.sigmas / \ + (1 + (self.shift - 1) * self.sigmas) + if self.reverse_sigmas: + self.sigmas = 1 - self.sigmas + self.timesteps = self.sigmas * self.num_train_timesteps + if training: + x = self.timesteps + y = torch.exp(-2 * ((x - num_inference_steps / 2) / + num_inference_steps) ** 2) + y_shifted = y - y.min() + bsmntw_weighing = y_shifted * \ + (num_inference_steps / y_shifted.sum()) + self.linear_timesteps_weights = bsmntw_weighing + + def step(self, model_output, timestep, sample, to_final=False): + if timestep.ndim == 2: + timestep = timestep.flatten(0, 1) + self.sigmas = self.sigmas.to(model_output.device) + self.timesteps = self.timesteps.to(model_output.device) + timestep_id = torch.argmin( + (self.timesteps.unsqueeze(0) - timestep.unsqueeze(1)).abs(), dim=1) + sigma = self.sigmas[timestep_id].reshape(-1, 1, 1, 1) + if to_final or (timestep_id + 1 >= len(self.timesteps)).any(): + sigma_ = 1 if ( + self.inverse_timesteps or self.reverse_sigmas) else 0 + else: + sigma_ = self.sigmas[timestep_id + 1].reshape(-1, 1, 1, 1) + prev_sample = sample + model_output * (sigma_ - sigma) + return prev_sample + + def add_noise(self, original_samples, noise, timestep): + """ + Diffusion forward corruption process. + Input: + - clean_latent: the clean latent with shape [B*T, C, H, W] + - noise: the noise with shape [B*T, C, H, W] + - timestep: the timestep with shape [B*T] + Output: the corrupted latent with shape [B*T, C, H, W] + """ + if timestep.ndim == 2: + timestep = timestep.flatten(0, 1) + self.sigmas = self.sigmas.to(noise.device) + self.timesteps = self.timesteps.to(noise.device) + timestep_id = torch.argmin( + (self.timesteps.unsqueeze(0) - timestep.unsqueeze(1)).abs(), dim=1) + sigma = self.sigmas[timestep_id].reshape(-1, 1, 1, 1) + sample = (1 - sigma) * original_samples + sigma * noise + return sample.type_as(noise) + + def training_target(self, sample, noise, timestep): + target = noise - sample + return target + + def training_weight(self, timestep): + """ + Input: + - timestep: the timestep with shape [B*T] + Output: the corresponding weighting [B*T] + """ + if timestep.ndim == 2: + timestep = timestep.flatten(0, 1) + self.linear_timesteps_weights = self.linear_timesteps_weights.to(timestep.device) + timestep_id = torch.argmin( + (self.timesteps.unsqueeze(1) - timestep.unsqueeze(0)).abs(), dim=0) + weights = self.linear_timesteps_weights[timestep_id] + return weights diff --git a/utils/torch_compile_utils.py b/utils/torch_compile_utils.py new file mode 100644 index 0000000..c1e5edb --- /dev/null +++ b/utils/torch_compile_utils.py @@ -0,0 +1,117 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 +import torch +import torch.distributed as dist + + +def _is_main_process() -> bool: + return not dist.is_available() or not dist.is_initialized() or dist.get_rank() == 0 + + +def _log_once(message: str) -> None: + if _is_main_process(): + print(message) + + +class SafeCompiledCallable: + """Lazy torch.compile wrapper that falls back to eager on compile/runtime errors.""" + + def __init__( + self, + fn, + *, + name: str, + backend: str = "inductor", + mode: str | None = "max-autotune-no-cudagraphs", + fullgraph: bool = False, + dynamic: bool | None = False, + options: dict | None = None, + suppress_errors: bool = True, + ) -> None: + self.fn = fn + self.name = name + self.enabled = True + self.failed = False + self.failure_reason = None + + if suppress_errors: + try: + import torch._dynamo as torch_dynamo + + torch_dynamo.config.suppress_errors = True + except Exception as exc: + _log_once(f"[torch.compile] Could not enable suppress_errors: {exc}") + + compile_kwargs = { + "backend": backend, + "fullgraph": fullgraph, + "dynamic": dynamic, + } + if mode: + compile_kwargs["mode"] = mode + if options: + compile_kwargs["options"] = options + + _log_once( + "[torch.compile] Preparing " + f"{name}: backend={backend}, mode={mode}, " + f"fullgraph={fullgraph}, dynamic={dynamic}" + ) + self.compiled_fn = torch.compile(fn, **compile_kwargs) + + def __call__(self, *args, **kwargs): + if not self.enabled: + return self.fn(*args, **kwargs) + + try: + return self.compiled_fn(*args, **kwargs) + except Exception as exc: + self.enabled = False + self.failed = True + self.failure_reason = repr(exc) + _log_once( + f"[torch.compile][warn] {self.name} failed; " + f"falling back to eager. reason={exc}" + ) + return self.fn(*args, **kwargs) + + +def configure_module_call_torch_compile( + module, + *, + name: str, + backend: str = "inductor", + mode: str | None = "max-autotune-no-cudagraphs", + fullgraph: bool = False, + dynamic: bool | None = False, + options: dict | None = None, + suppress_errors: bool = True, +): + if not torch.cuda.is_available(): + _log_once(f"[torch.compile] Skipping {name}: CUDA is not available") + return None + + try: + return SafeCompiledCallable( + module, + name=name, + backend=backend, + mode=mode, + fullgraph=fullgraph, + dynamic=dynamic, + options=options, + suppress_errors=suppress_errors, + ) + except Exception as exc: + _log_once( + f"[torch.compile][warn] Could not prepare {name}; " + f"continuing in eager mode. reason={exc}" + ) + return None diff --git a/utils/wan_5b_wrapper.py b/utils/wan_5b_wrapper.py new file mode 100644 index 0000000..4884cb5 --- /dev/null +++ b/utils/wan_5b_wrapper.py @@ -0,0 +1,582 @@ +import types +from typing import List, Optional +import os +import torch +from torch import nn + +from utils.scheduler import SchedulerInterface, FlowMatchScheduler + +from wan_5b.modules.tokenizers import HuggingfaceTokenizer +from wan_5b.modules.model import WanModel +from wan_5b.modules.vae2_2 import _video_vae +from wan_5b.modules.t5 import umt5_xxl +from wan_5b.modules.causal_model import CausalWanModel + + +class WanTextEncoder(torch.nn.Module): + def __init__(self) -> None: + super().__init__() + + self.text_encoder = umt5_xxl( + encoder_only=True, + return_tokenizer=False, + dtype=torch.float32, + device=torch.device('cpu') + ).eval().requires_grad_(False) + self.text_encoder.load_state_dict( + torch.load("wan_models/Wan2.2-TI2V-5B/models_t5_umt5-xxl-enc-bf16.pth", + map_location='cpu', weights_only=False) + ) + + # Move text encoder to GPU if available + if torch.cuda.is_available(): + self.text_encoder = self.text_encoder.cuda() + + self.tokenizer = HuggingfaceTokenizer( + name="wan_models/Wan2.2-TI2V-5B/google/umt5-xxl/", seq_len=512, clean='whitespace') + + @property + def device(self): + # Assume we are always on GPU + return torch.cuda.current_device() + + def forward(self, text_prompts: List[str]) -> dict: + ids, mask = self.tokenizer( + text_prompts, return_mask=True, add_special_tokens=True) + ids = ids.to(self.device) + mask = mask.to(self.device) + seq_lens = mask.gt(0).sum(dim=1).long() + context = self.text_encoder(ids, mask) + for u, v in zip(context, seq_lens): + u[v:] = 0.0 # set padding to 0.0 + + return { + "prompt_embeds": context + } + + +class WanVAEWrapper(torch.nn.Module): + def __init__(self): + super().__init__() + mean = [ + -0.2289, + -0.0052, + -0.1323, + -0.2339, + -0.2799, + 0.0174, + 0.1838, + 0.1557, + -0.1382, + 0.0542, + 0.2813, + 0.0891, + 0.1570, + -0.0098, + 0.0375, + -0.1825, + -0.2246, + -0.1207, + -0.0698, + 0.5109, + 0.2665, + -0.2108, + -0.2158, + 0.2502, + -0.2055, + -0.0322, + 0.1109, + 0.1567, + -0.0729, + 0.0899, + -0.2799, + -0.1230, + -0.0313, + -0.1649, + 0.0117, + 0.0723, + -0.2839, + -0.2083, + -0.0520, + 0.3748, + 0.0152, + 0.1957, + 0.1433, + -0.2944, + 0.3573, + -0.0548, + -0.1681, + -0.0667, + ] + std = [ + 0.4765, + 1.0364, + 0.4514, + 1.1677, + 0.5313, + 0.4990, + 0.4818, + 0.5013, + 0.8158, + 1.0344, + 0.5894, + 1.0901, + 0.6885, + 0.6165, + 0.8454, + 0.4978, + 0.5759, + 0.3523, + 0.7135, + 0.6804, + 0.5833, + 1.4146, + 0.8986, + 0.5659, + 0.7069, + 0.5338, + 0.4889, + 0.4917, + 0.4069, + 0.4999, + 0.6866, + 0.4093, + 0.5709, + 0.6065, + 0.6415, + 0.4944, + 0.5726, + 1.2042, + 0.5458, + 1.6887, + 0.3971, + 1.0600, + 0.3943, + 0.5537, + 0.5444, + 0.4089, + 0.7468, + 0.7744, + ] + self.mean = torch.tensor(mean, dtype=torch.float32) + self.std = torch.tensor(std, dtype=torch.float32) + + # init model + self.model = _video_vae( + pretrained_path="wan_models/Wan2.2-TI2V-5B/Wan2.2_VAE.pth", + ).eval().requires_grad_(False) + + def encode_to_latent(self, pixel: torch.Tensor) -> torch.Tensor: + # pixel: [batch_size, num_channels, num_frames, height, width] + device, dtype = pixel.device, pixel.dtype + + scale = [self.mean.to(device=device, dtype=dtype), + 1.0 / self.std.to(device=device, dtype=dtype)] + + output = [ + self.model.encode(u.unsqueeze(0), scale).float().squeeze(0) + for u in pixel + ] + output = torch.stack(output, dim=0) + # from [batch_size, num_channels, num_frames, height, width] + # to [batch_size, num_frames, num_channels, height, width] + output = output.permute(0, 2, 1, 3, 4) + return output + + def decode_to_pixel(self, latent: torch.Tensor, use_cache: bool = False) -> torch.Tensor: + # from [batch_size, num_frames, num_channels, height, width] + # to [batch_size, num_channels, num_frames, height, width] + zs = latent.permute(0, 2, 1, 3, 4) + if use_cache: + assert latent.shape[0] == 1, "Batch size must be 1 when using cache" + + device, dtype = latent.device, latent.dtype + scale = [self.mean.to(device=device, dtype=dtype), + 1.0 / self.std.to(device=device, dtype=dtype)] + + if use_cache: + decode_function = self.model.cached_decode + else: + decode_function = self.model.decode + + output = [] + for u in zs: + output.append(decode_function(u.unsqueeze(0), scale).float().clamp_(-1, 1).squeeze(0)) + output = torch.stack(output, dim=0) + # from [batch_size, num_channels, num_frames, height, width] + # to [batch_size, num_frames, num_channels, height, width] + output = output.permute(0, 2, 1, 3, 4) + return output + + def decode_to_pixel_chunk(self, latent: torch.Tensor, use_cache: bool = False, chunk_size: int = 1) -> torch.Tensor: + """ + Decode latent frames to pixel space. + + Args: + latent: Latent tensor with shape [batch_size, num_frames, num_channels, height, width] + use_cache: Whether to use cached decoding (for streaming) + chunk_size: Number of latent frames to decode at once (default 240 to avoid OOM) + + Returns: + Decoded video tensor with shape [batch_size, num_frames, num_channels, height, width] + """ + # latent shape: [batch_size, num_frames, num_channels, height, width] + # zs shape after permute: [batch_size, num_channels, num_frames, height, width] + zs = latent.permute(0, 2, 1, 3, 4) + if use_cache: + assert latent.shape[0] == 1, "Batch size must be 1 when using cache" + + device, dtype = latent.device, latent.dtype + scale = [self.mean.to(device=device, dtype=dtype), + 1.0 / self.std.to(device=device, dtype=dtype)] + + if use_cache: + decode_function = self.model.cached_decode + else: + decode_function = self.model.decode + + output = [] + for u in zs: + num_frames = u.shape[1] + if num_frames <= chunk_size: + # Decode short clips in one pass. + if use_cache: + # Start this segment from a clean cache. + self.model.clear_cache() + decoded = decode_function(u.unsqueeze(0), scale).float().clamp_(-1, 1).squeeze(0) + decoded = decoded.cpu() + if use_cache: + # Clear after this segment so it cannot affect the next video. + self.model.clear_cache() + else: + # Decode longer clips in temporal chunks. + decoded_chunks = [] + if use_cache: + # Clear once at the segment start; later chunks share the + # internal cache. + self.model.clear_cache() + for start_idx in range(0, num_frames, chunk_size): + end_idx = min(start_idx + chunk_size, num_frames) + chunk = u[:, start_idx:end_idx, :, :] # [C, chunk_frames, H, W] + decoded_chunk = decode_function(chunk.unsqueeze(0), scale).float().clamp_(-1, 1).squeeze(0) + decoded_chunks.append(decoded_chunk.cpu()) + + del decoded_chunk + torch.cuda.empty_cache() + decoded = torch.cat(decoded_chunks, dim=1) + if use_cache: + # Clear the cache after the full segment. + self.model.clear_cache() + output.append(decoded) + + output = torch.stack(output, dim=0) + output = output.permute(0, 2, 1, 3, 4) + return output + + +class WanDiffusionWrapper(torch.nn.Module): + def __init__( + self, + model_name="Wan2.2-TI2V-5B", + timestep_shift=8.0, + is_causal=False, + local_attn_size=-1, + sink_size=0, + num_frame_per_block=1, + t_scale=1.0, + rope_method="linear", + original_seq_len=None, + ): + super().__init__() + + if is_causal: + self.model = CausalWanModel.from_pretrained( + f"wan_models/{model_name}/", local_attn_size=local_attn_size, sink_size=sink_size, + num_frame_per_block=num_frame_per_block) + else: + self.model = WanModel.from_pretrained(f"wan_models/{model_name}/") + self.model.eval() + self.model.t_scale = t_scale + self.model.rope_method = rope_method + self.model.original_seq_len = original_seq_len + + # For non-causal diffusion, all frames share the same timestep + self.uniform_timestep = not is_causal + + self.scheduler = FlowMatchScheduler( + shift=timestep_shift, sigma_min=0.0, extra_one_step=True + ) + self.scheduler.set_timesteps(1000, training=True) + + self.seq_len = 28160 # [1, 32, 48, 44, 80] + + self.post_init() + self._compiled_model_call = None + + def enable_gradient_checkpointing(self) -> None: + self.model.enable_gradient_checkpointing() + + def configure_torch_compile( + self, + *, + backend: str = "inductor", + mode: str | None = "max-autotune-no-cudagraphs", + fullgraph: bool = False, + dynamic: bool | None = False, + options: dict | None = None, + suppress_errors: bool = True, + ) -> bool: + from utils.torch_compile_utils import configure_module_call_torch_compile + + self._compiled_model_call = configure_module_call_torch_compile( + self.model, + name="WanDiffusionWrapper5B.model", + backend=backend, + mode=mode, + fullgraph=fullgraph, + dynamic=dynamic, + options=options, + suppress_errors=suppress_errors, + ) + return self._compiled_model_call is not None + + def _call_model(self, *args, **kwargs): + # iter-39 v2: publish kv_cache scalars BEFORE entering the compiled + # graph. The earlier version (iter-39 v1) published them inside + # `_forward_inference`, but that function IS compiled, so each + # `.item()` triggered a graph break. Moving the reads to this eager + # wrapper keeps the dict lookups in the compiled attention forward + # free of `.item()` syncs without adding any graph break. + kv_cache = kwargs.get("kv_cache", None) + if kv_cache is not None and len(kv_cache) > 0: + try: + from wan_5b.modules.causal_model import _CURRENT_GRID_META + first_block_cache = kv_cache[0] + _CURRENT_GRID_META["global_end_index"] = int( + first_block_cache["global_end_index"].item() + ) + _CURRENT_GRID_META["local_end_index"] = int( + first_block_cache["local_end_index"].item() + ) + _ps = first_block_cache.get("pinned_start", None) + if _ps is not None and hasattr(_ps, "item"): + _CURRENT_GRID_META["pinned_start"] = int(_ps.item()) + _CURRENT_GRID_META["pinned_len"] = int( + first_block_cache["pinned_len"].item() + ) + else: + _CURRENT_GRID_META["pinned_start"] = -1 + _CURRENT_GRID_META["pinned_len"] = 0 + except (KeyError, AttributeError, ImportError): + pass + defer_kv_updates = ( + os.environ.get("LLV2_DEFER_KV_UPDATES", "0") == "1" + and kv_cache is not None + ) + if defer_kv_updates: + kwargs["defer_cache_updates"] = True + + if self._compiled_model_call is not None: + # iter-25: signal cudagraph allocator that a new "step" starts. + # Required for mode=reduce-overhead when modules cache state + # (KV cache rolling buffers, fp4-quant scale tensors) so the + # cudagraph pool knows it can safely reuse step-N memory now + # that step-(N+1) is starting. + mark_step = getattr(torch.compiler, "cudagraph_mark_step_begin", None) + if mark_step is not None: + mark_step() + result = self._compiled_model_call(*args, **kwargs) + else: + result = self.model(*args, **kwargs) + + if defer_kv_updates: + if not isinstance(result, tuple) or len(result) != 2: + raise RuntimeError( + "LLV2_DEFER_KV_UPDATES expected model to return " + "(output, cache_update_infos)." + ) + output, cache_update_infos = result + if cache_update_infos: + self.model._apply_cache_updates(kv_cache, cache_update_infos) + return output + return result + + def _convert_flow_pred_to_x0(self, flow_pred: torch.Tensor, xt: torch.Tensor, timestep: torch.Tensor) -> torch.Tensor: + """ + Convert flow matching's prediction to x0 prediction. + flow_pred: the prediction with shape [B, C, H, W] + xt: the input noisy data with shape [B, C, H, W] + timestep: the timestep with shape [B] + + pred = noise - x0 + x_t = (1-sigma_t) * x0 + sigma_t * noise + we have x0 = x_t - sigma_t * pred + see derivations https://chatgpt.com/share/67bf8589-3d04-8008-bc6e-4cf1a24e2d0e + """ + # use higher precision for calculations + original_dtype = flow_pred.dtype + flow_pred, xt, sigmas, timesteps = map( + lambda x: x.double().to(flow_pred.device), [flow_pred, xt, + self.scheduler.sigmas, + self.scheduler.timesteps] + ) + + timestep_id = torch.argmin( + (timesteps.unsqueeze(0) - timestep.unsqueeze(1)).abs(), dim=1) + sigma_t = sigmas[timestep_id].reshape(-1, 1, 1, 1) + x0_pred = xt - sigma_t * flow_pred + return x0_pred.to(original_dtype) + + @staticmethod + def _convert_x0_to_flow_pred(scheduler, x0_pred: torch.Tensor, xt: torch.Tensor, timestep: torch.Tensor) -> torch.Tensor: + """ + Convert x0 prediction to flow matching's prediction. + x0_pred: the x0 prediction with shape [B, C, H, W] + xt: the input noisy data with shape [B, C, H, W] + timestep: the timestep with shape [B] + + pred = (x_t - x_0) / sigma_t + """ + # use higher precision for calculations + original_dtype = x0_pred.dtype + x0_pred, xt, sigmas, timesteps = map( + lambda x: x.double().to(x0_pred.device), [x0_pred, xt, + scheduler.sigmas, + scheduler.timesteps] + ) + timestep_id = torch.argmin( + (timesteps.unsqueeze(0) - timestep.unsqueeze(1)).abs(), dim=1) + sigma_t = sigmas[timestep_id].reshape(-1, 1, 1, 1) + flow_pred = (xt - x0_pred) / sigma_t + return flow_pred.to(original_dtype) + + def forward( + self, + noisy_image_or_video: torch.Tensor, conditional_dict: dict, + timestep: torch.Tensor, kv_cache: Optional[List[dict]] = None, + crossattn_cache: Optional[List[dict]] = None, + current_start: Optional[int] = None, + classify_mode: Optional[bool] = False, + concat_time_embeddings: Optional[bool] = False, + clean_x: Optional[torch.Tensor] = None, + aug_t: Optional[torch.Tensor] = None, + cache_start: Optional[int] = None, + rope_temporal_offset: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + prompt_embeds = conditional_dict["prompt_embeds"] + + # [B, F] -> [B] + if self.uniform_timestep: + input_timestep = timestep[:, 0] + else: + input_timestep = timestep + + logits = None + rope_offset_was_set = ( + rope_temporal_offset is not None + and hasattr(self.model, "rope_temporal_offset") + ) + if rope_offset_was_set: + prev_rope_temporal_offset = self.model.rope_temporal_offset + self.model.rope_temporal_offset = rope_temporal_offset + + # X0 prediction + if kv_cache is not None: + flow_pred = self._call_model( + noisy_image_or_video.permute(0, 2, 1, 3, 4), + t=input_timestep, context=prompt_embeds, + seq_len=self.seq_len, + kv_cache=kv_cache, + crossattn_cache=crossattn_cache, + current_start=current_start, + cache_start=cache_start + ).permute(0, 2, 1, 3, 4) + else: + if clean_x is not None: + # teacher forcing + flow_pred = self._call_model( + noisy_image_or_video.permute(0, 2, 1, 3, 4), + t=input_timestep, context=prompt_embeds, + seq_len=self.seq_len, + clean_x=clean_x.permute(0, 2, 1, 3, 4), + aug_t=aug_t, + ).permute(0, 2, 1, 3, 4) + else: + if classify_mode: + flow_pred, logits = self._call_model( + noisy_image_or_video.permute(0, 2, 1, 3, 4), + t=input_timestep, context=prompt_embeds, + seq_len=self.seq_len, + classify_mode=True, + register_tokens=self._register_tokens, + cls_pred_branch=self._cls_pred_branch, + gan_ca_blocks=self._gan_ca_blocks, + concat_time_embeddings=concat_time_embeddings + ) + flow_pred = flow_pred.permute(0, 2, 1, 3, 4) + else: + flow_pred = self._call_model( + noisy_image_or_video.permute(0, 2, 1, 3, 4), + t=input_timestep, context=prompt_embeds, + seq_len=self.seq_len + ).permute(0, 2, 1, 3, 4) + + if rope_offset_was_set: + self.model.rope_temporal_offset = prev_rope_temporal_offset + + pred_x0 = self._convert_flow_pred_to_x0( + flow_pred=flow_pred.flatten(0, 1), + xt=noisy_image_or_video.flatten(0, 1), + timestep=timestep.flatten(0, 1) + ).unflatten(0, flow_pred.shape[:2]) + + if logits is not None: + return flow_pred, pred_x0, logits + + return flow_pred, pred_x0 + + def get_scheduler(self) -> SchedulerInterface: + """ + Update the current scheduler with the interface's static method + """ + scheduler = self.scheduler + scheduler.convert_x0_to_noise = types.MethodType( + SchedulerInterface.convert_x0_to_noise, scheduler) + scheduler.convert_noise_to_x0 = types.MethodType( + SchedulerInterface.convert_noise_to_x0, scheduler) + scheduler.convert_velocity_to_x0 = types.MethodType( + SchedulerInterface.convert_velocity_to_x0, scheduler) + self.scheduler = scheduler + return scheduler + + def post_init(self): + """ + A few custom initialization steps that should be called after the object is created. + Currently, the only one we have is to bind a few methods to scheduler. + We can gradually add more methods here if needed. + """ + self.get_scheduler() + + +_MG_LIGHTVAE_DEFAULT_PATHS = { + "mg_lightvae": os.path.join("wan_models", "Matrix-Game-3.0", "MG-LightVAE.pth"), + "mg_lightvae_v2": os.path.join("wan_models", "Matrix-Game-3.0", "MG-LightVAE_v2.pth"), +} + + +def build_vae_5b(args): + """Return the 5B VAE wrapper requested by args.vae_type.""" + vae_type = str(getattr(args, "vae_type", "wan")).lower().strip() + + if vae_type in ("wan", "wan2.2", ""): + return WanVAEWrapper() + + if vae_type in _MG_LIGHTVAE_DEFAULT_PATHS: + from utils.lightvae_5b_wrapper import LightVAE5BWrapper + + return LightVAE5BWrapper(vae_path=_MG_LIGHTVAE_DEFAULT_PATHS[vae_type]) + + raise ValueError( + f"Unknown vae_type '{vae_type}'. " + "Expected one of: wan, mg_lightvae, mg_lightvae_v2." + ) diff --git a/wan_5b/__init__.py b/wan_5b/__init__.py new file mode 100644 index 0000000..ac59c4f --- /dev/null +++ b/wan_5b/__init__.py @@ -0,0 +1,16 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. + +__all__ = ["WanI2V", "WanT2V", "WanTI2V"] + + +def __getattr__(name): + if name == "WanI2V": + from .image2video import WanI2V + return WanI2V + if name == "WanT2V": + from .text2video import WanT2V + return WanT2V + if name == "WanTI2V": + from .textimage2video import WanTI2V + return WanTI2V + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") diff --git a/wan_5b/configs/__init__.py b/wan_5b/configs/__init__.py new file mode 100644 index 0000000..875afe7 --- /dev/null +++ b/wan_5b/configs/__init__.py @@ -0,0 +1,39 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import copy +import os + +os.environ['TOKENIZERS_PARALLELISM'] = 'false' + +from .wan_i2v_A14B import i2v_A14B +from .wan_t2v_A14B import t2v_A14B +from .wan_ti2v_5B import ti2v_5B + +WAN_CONFIGS = { + 't2v-A14B': t2v_A14B, + 'i2v-A14B': i2v_A14B, + 'ti2v-5B': ti2v_5B, +} + +SIZE_CONFIGS = { + '720*1280': (720, 1280), + '1280*720': (1280, 720), + '480*832': (480, 832), + '832*480': (832, 480), + '704*1280': (704, 1280), + '1280*704': (1280, 704) +} + +MAX_AREA_CONFIGS = { + '720*1280': 720 * 1280, + '1280*720': 1280 * 720, + '480*832': 480 * 832, + '832*480': 832 * 480, + '704*1280': 704 * 1280, + '1280*704': 1280 * 704, +} + +SUPPORTED_SIZES = { + 't2v-A14B': ('720*1280', '1280*720', '480*832', '832*480'), + 'i2v-A14B': ('720*1280', '1280*720', '480*832', '832*480'), + 'ti2v-5B': ('704*1280', '1280*704'), +} diff --git a/wan_5b/configs/shared_config.py b/wan_5b/configs/shared_config.py new file mode 100644 index 0000000..c58ab04 --- /dev/null +++ b/wan_5b/configs/shared_config.py @@ -0,0 +1,20 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import torch +from easydict import EasyDict + +#------------------------ Wan shared config ------------------------# +wan_shared_cfg = EasyDict() + +# t5 +wan_shared_cfg.t5_model = 'umt5_xxl' +wan_shared_cfg.t5_dtype = torch.bfloat16 +wan_shared_cfg.text_len = 512 + +# transformer +wan_shared_cfg.param_dtype = torch.bfloat16 + +# inference +wan_shared_cfg.num_train_timesteps = 1000 +wan_shared_cfg.sample_fps = 16 +wan_shared_cfg.sample_neg_prompt = '色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走' +wan_shared_cfg.frame_num = 81 diff --git a/wan_5b/configs/wan_i2v_A14B.py b/wan_5b/configs/wan_i2v_A14B.py new file mode 100644 index 0000000..f654cc6 --- /dev/null +++ b/wan_5b/configs/wan_i2v_A14B.py @@ -0,0 +1,37 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import torch +from easydict import EasyDict + +from .shared_config import wan_shared_cfg + +#------------------------ Wan I2V A14B ------------------------# + +i2v_A14B = EasyDict(__name__='Config: Wan I2V A14B') +i2v_A14B.update(wan_shared_cfg) + +i2v_A14B.t5_checkpoint = 'models_t5_umt5-xxl-enc-bf16.pth' +i2v_A14B.t5_tokenizer = 'google/umt5-xxl' + +# vae +i2v_A14B.vae_checkpoint = 'Wan2.1_VAE.pth' +i2v_A14B.vae_stride = (4, 8, 8) + +# transformer +i2v_A14B.patch_size = (1, 2, 2) +i2v_A14B.dim = 5120 +i2v_A14B.ffn_dim = 13824 +i2v_A14B.freq_dim = 256 +i2v_A14B.num_heads = 40 +i2v_A14B.num_layers = 40 +i2v_A14B.window_size = (-1, -1) +i2v_A14B.qk_norm = True +i2v_A14B.cross_attn_norm = True +i2v_A14B.eps = 1e-6 +i2v_A14B.low_noise_checkpoint = 'low_noise_model' +i2v_A14B.high_noise_checkpoint = 'high_noise_model' + +# inference +i2v_A14B.sample_shift = 5.0 +i2v_A14B.sample_steps = 40 +i2v_A14B.boundary = 0.900 +i2v_A14B.sample_guide_scale = (3.5, 3.5) # low noise, high noise diff --git a/wan_5b/configs/wan_t2v_A14B.py b/wan_5b/configs/wan_t2v_A14B.py new file mode 100644 index 0000000..a5220a5 --- /dev/null +++ b/wan_5b/configs/wan_t2v_A14B.py @@ -0,0 +1,37 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +from easydict import EasyDict + +from .shared_config import wan_shared_cfg + +#------------------------ Wan T2V A14B ------------------------# + +t2v_A14B = EasyDict(__name__='Config: Wan T2V A14B') +t2v_A14B.update(wan_shared_cfg) + +# t5 +t2v_A14B.t5_checkpoint = 'models_t5_umt5-xxl-enc-bf16.pth' +t2v_A14B.t5_tokenizer = 'google/umt5-xxl' + +# vae +t2v_A14B.vae_checkpoint = 'Wan2.1_VAE.pth' +t2v_A14B.vae_stride = (4, 8, 8) + +# transformer +t2v_A14B.patch_size = (1, 2, 2) +t2v_A14B.dim = 5120 +t2v_A14B.ffn_dim = 13824 +t2v_A14B.freq_dim = 256 +t2v_A14B.num_heads = 40 +t2v_A14B.num_layers = 40 +t2v_A14B.window_size = (-1, -1) +t2v_A14B.qk_norm = True +t2v_A14B.cross_attn_norm = True +t2v_A14B.eps = 1e-6 +t2v_A14B.low_noise_checkpoint = 'low_noise_model' +t2v_A14B.high_noise_checkpoint = 'high_noise_model' + +# inference +t2v_A14B.sample_shift = 12.0 +t2v_A14B.sample_steps = 40 +t2v_A14B.boundary = 0.875 +t2v_A14B.sample_guide_scale = (3.0, 4.0) # low noise, high noise diff --git a/wan_5b/configs/wan_ti2v_5B.py b/wan_5b/configs/wan_ti2v_5B.py new file mode 100644 index 0000000..d5d5aed --- /dev/null +++ b/wan_5b/configs/wan_ti2v_5B.py @@ -0,0 +1,36 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +from easydict import EasyDict + +from .shared_config import wan_shared_cfg + +#------------------------ Wan TI2V 5B ------------------------# + +ti2v_5B = EasyDict(__name__='Config: Wan TI2V 5B') +ti2v_5B.update(wan_shared_cfg) + +# t5 +ti2v_5B.t5_checkpoint = 'models_t5_umt5-xxl-enc-bf16.pth' +ti2v_5B.t5_tokenizer = 'google/umt5-xxl' + +# vae +ti2v_5B.vae_checkpoint = 'Wan2.2_VAE.pth' +ti2v_5B.vae_stride = (4, 16, 16) + +# transformer +ti2v_5B.patch_size = (1, 2, 2) +ti2v_5B.dim = 3072 +ti2v_5B.ffn_dim = 14336 +ti2v_5B.freq_dim = 256 +ti2v_5B.num_heads = 24 +ti2v_5B.num_layers = 30 +ti2v_5B.window_size = (-1, -1) +ti2v_5B.qk_norm = True +ti2v_5B.cross_attn_norm = True +ti2v_5B.eps = 1e-6 + +# inference +ti2v_5B.sample_fps = 24 +ti2v_5B.sample_shift = 5.0 +ti2v_5B.sample_steps = 50 +ti2v_5B.sample_guide_scale = 5.0 +ti2v_5B.frame_num = 121 diff --git a/wan_5b/distributed/__init__.py b/wan_5b/distributed/__init__.py new file mode 100644 index 0000000..566f71e --- /dev/null +++ b/wan_5b/distributed/__init__.py @@ -0,0 +1 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. diff --git a/wan_5b/distributed/fsdp.py b/wan_5b/distributed/fsdp.py new file mode 100644 index 0000000..6bb496d --- /dev/null +++ b/wan_5b/distributed/fsdp.py @@ -0,0 +1,43 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import gc +from functools import partial + +import torch +from torch.distributed.fsdp import FullyShardedDataParallel as FSDP +from torch.distributed.fsdp import MixedPrecision, ShardingStrategy +from torch.distributed.fsdp.wrap import lambda_auto_wrap_policy +from torch.distributed.utils import _free_storage + + +def shard_model( + model, + device_id, + param_dtype=torch.bfloat16, + reduce_dtype=torch.float32, + buffer_dtype=torch.float32, + process_group=None, + sharding_strategy=ShardingStrategy.FULL_SHARD, + sync_module_states=True, +): + model = FSDP( + module=model, + process_group=process_group, + sharding_strategy=sharding_strategy, + auto_wrap_policy=partial( + lambda_auto_wrap_policy, lambda_fn=lambda m: m in model.blocks), + mixed_precision=MixedPrecision( + param_dtype=param_dtype, + reduce_dtype=reduce_dtype, + buffer_dtype=buffer_dtype), + device_id=device_id, + sync_module_states=sync_module_states) + return model + + +def free_model(model): + for m in model.modules(): + if isinstance(m, FSDP): + _free_storage(m._handle.flat_param.data) + del model + gc.collect() + torch.cuda.empty_cache() diff --git a/wan_5b/distributed/sequence_parallel.py b/wan_5b/distributed/sequence_parallel.py new file mode 100644 index 0000000..29118e4 --- /dev/null +++ b/wan_5b/distributed/sequence_parallel.py @@ -0,0 +1,477 @@ +# Adopted from https://github.com/Wan-Video/Wan2.2 +# SPDX-License-Identifier: Apache-2.0 +import torch +import torch.cuda.amp as amp + +from ..modules.model import sinusoidal_embedding_1d +from .ulysses import distributed_attention, distributed_flex_attention +from .util import gather_forward, get_rank, get_world_size +import math + + +def pad_freqs(original_tensor, target_len): + seq_len, s1, s2 = original_tensor.shape + pad_size = target_len - seq_len + padding_tensor = torch.ones( + pad_size, + s1, + s2, + dtype=original_tensor.dtype, + device=original_tensor.device) + padded_tensor = torch.cat([original_tensor, padding_tensor], dim=0) + return padded_tensor + + +from utils.position_embedding_utils import ( + compute_temporal_freqs as _compute_temporal_freqs, + select_temporal_offset_for_sample, +) + + +@torch.amp.autocast('cuda', enabled=False) +def sp_rope_apply( + x, + grid_sizes, + freqs, + t_scale=1.0, + method="linear", + original_seq_len=None, + temporal_offset=0.0, +): + """ + x: [B, L, N, C]. + grid_sizes: [B, 3]. + freqs: [M, C // 2]. + """ + n, c = x.size(2), x.size(3) // 2 + # split freqs + freqs = freqs.split([c - 2 * (c // 3), c // 3, c // 3], dim=1) + + # loop over samples + output = [] + for i, (f, h, w) in enumerate(grid_sizes.tolist()): + local_f = f + sp_rank = get_rank() + start_frame = sp_rank * local_f + seq_len = local_f * h * w + + # precompute multipliers + x_i = torch.view_as_complex(x[i, :seq_len].to(torch.float64).reshape( + seq_len, n, -1, 2)) + temporal_offset_i = select_temporal_offset_for_sample( + temporal_offset, i, local_f, start_frame=start_frame) + temporal_freqs = _compute_temporal_freqs( + freqs[0], local_f, start_frame, t_scale, x.device, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset_i) + freqs_i = torch.cat([ + temporal_freqs.view(local_f, 1, 1, -1).expand(local_f, h, w, -1), + freqs[1][:h].view(1, h, 1, -1).expand(local_f, h, w, -1), + freqs[2][:w].view(1, 1, w, -1).expand(local_f, h, w, -1) + ], + dim=-1).reshape(seq_len, 1, -1) + + # apply rotary embedding + x_i = torch.view_as_real(x_i * freqs_i).flatten(2) + x_i = torch.cat([x_i, x[i, seq_len:]]) + + # append to collection + output.append(x_i) + return torch.stack(output).float() + + +def sp_dit_forward( + self, + x, + t, + context, + seq_len, + y=None, +): + """ + x: A list of videos each with shape [C, T, H, W]. + t: [B]. + context: A list of text embeddings each with shape [L, C]. + """ + if self.model_type == 'i2v': + assert y is not None + # params + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + # embeddings + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + grid_sizes = torch.stack( + [torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + assert seq_lens.max() <= seq_len + x = torch.cat([ + torch.cat([u, u.new_zeros(1, seq_len - u.size(1), u.size(2))], dim=1) + for u in x + ]) + + # time embeddings + if t.dim() == 1: + t = t.expand(t.size(0), seq_len) + with torch.amp.autocast('cuda', dtype=torch.float32): + bt = t.size(0) + t = t.flatten() + e = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, + t).unflatten(0, (bt, seq_len)).float()) + e0 = self.time_projection(e).unflatten(2, (6, self.dim)) + assert e.dtype == torch.float32 and e0.dtype == torch.float32 + + # context + context_lens = None + context = self.text_embedding( + torch.stack([ + torch.cat([u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + + # Context Parallel + x = torch.chunk(x, get_world_size(), dim=1)[get_rank()] + e = torch.chunk(e, get_world_size(), dim=1)[get_rank()] + e0 = torch.chunk(e0, get_world_size(), dim=1)[get_rank()] + + # arguments + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens) + + for block in self.blocks: + x = block(x, **kwargs) + + # head + x = self.head(x, e) + + # Context Parallel + x = gather_forward(x, dim=1) + + # unpatchify + x = self.unpatchify(x, grid_sizes) + return [u.float() for u in x] + + +def sp_attn_forward(self, x, seq_lens, grid_sizes, freqs, dtype=torch.bfloat16, + t_scale=1.0, method="linear", original_seq_len=None, + temporal_offset=0.0): + b, s, n, d = *x.shape[:2], self.num_heads, self.head_dim + half_dtypes = (torch.float16, torch.bfloat16) + + def half(x): + return x if x.dtype in half_dtypes else x.to(dtype) + + # query, key, value function + def qkv_fn(x): + q = self.norm_q(self.q(x)).view(b, s, n, d) + k = self.norm_k(self.k(x)).view(b, s, n, d) + v = self.v(x).view(b, s, n, d) + return q, k, v + + q, k, v = qkv_fn(x) + q = sp_rope_apply(q, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset) + k = sp_rope_apply(k, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset) + + x = distributed_attention( + half(q), + half(k), + half(v), + seq_lens, + window_size=self.window_size, + ) + + # output + x = x.flatten(2) + x = self.o(x) + return x + + + + +def sp_dit_causal_forward_train( + self, + x, + t, + context, + seq_len, + clean_x=None, + aug_t=None, + clip_fea=None, + y=None, +): + r""" + Forward pass through the diffusion model + + Args: + x (List[Tensor]): + List of input video tensors, each with shape [C_in, F, H, W] + t (Tensor): + Diffusion timesteps tensor of shape [B] + context (List[Tensor]): + List of text embeddings each with shape [L, C] + seq_len (`int`): + Maximum sequence length for positional encoding + clip_fea (Tensor, *optional*): + CLIP image features for image-to-video mode + y (List[Tensor], *optional*): + Conditional video inputs for image-to-video mode, same shape as x + + Returns: + List[Tensor]: + List of denoised video tensors with original input shapes [C_out, F, H / 8, W / 8] + """ + if self.model_type == 'i2v': + assert clip_fea is not None and y is not None + # params + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + + # Construct the blockwise causal attention mask. Frames are sharded across + # SP ranks, so total frames = local frames per rank * sp_size. + sp_size = get_world_size() + # Recreate mask when batch size changes to avoid Triton broadcasting bug + current_batch_size = x.shape[0] + if self.block_mask is None or self._block_mask_batch_size != current_batch_size: + self._block_mask_batch_size = current_batch_size + if clean_x is not None: + if self.independent_first_frame: + raise NotImplementedError() + else: + self.block_mask = self._prepare_teacher_forcing_mask_natural( + device, num_frames=x.shape[2] * sp_size, + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + sp_size=sp_size, + batch_size=current_batch_size, + ) + else: + if self.independent_first_frame: + self.block_mask = self._prepare_blockwise_causal_attn_mask_i2v( + device, num_frames=x.shape[2] * sp_size, + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + batch_size=current_batch_size, + ) + else: + self.block_mask = self._prepare_blockwise_causal_attn_mask( + device, num_frames=x.shape[2] * sp_size, + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + batch_size=current_batch_size, + ) + + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + # embeddings + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + + grid_sizes = torch.stack( + [torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + max_len = int(seq_lens.max().item()) + assert max_len > 0, "Token sequence length is zero after patch embedding" + # Pad all samples to the batch max length instead of the first sample length + x = torch.cat([ + torch.cat([u, u.new_zeros(1, max_len - u.size(1), u.size(2))], dim=1) + for u in x + ]) + + # time embeddings + if t.dim() == 1: + raise NotImplementedError(f"t.shape should be [B, F], but got {t.shape}") + bt = t.size(0) + t_len = t.size(1) + t_ori_shape = t.shape + t = t.flatten() + e = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, t).unflatten(0, (bt, t_len)).type_as(x)) + e0 = self.time_projection(e).unflatten(2, (6, self.dim)) # B, F, 6, C + + # context + context_lens = None + context = self.text_embedding( + torch.stack([ + torch.cat( + [u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + + if clean_x is not None: + clean_x = [self.patch_embedding(u.unsqueeze(0)) for u in clean_x] + clean_x = [u.flatten(2).transpose(1, 2) for u in clean_x] + + seq_lens_clean = torch.tensor([u.size(1) for u in clean_x], dtype=torch.long) + clean_x = torch.cat([ + torch.cat([u, u.new_zeros(1, seq_lens_clean[0] - u.size(1), u.size(2))], dim=1) for u in clean_x + ]) + + x = torch.cat([clean_x, x], dim=1) + if aug_t is None: + aug_t = torch.zeros(t_ori_shape, device=t.device, dtype=t.dtype) + bt_clean = aug_t.size(0) + t_clean_len = aug_t.size(1) + aug_t = aug_t.flatten() + e_clean = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, aug_t).unflatten(0, (bt_clean, t_clean_len)).type_as(x)) + e0_clean = self.time_projection(e_clean).unflatten(2, (6, self.dim)) + e0 = torch.cat([e0_clean, e0], dim=1) + + + # arguments + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens, + block_mask=self.block_mask, + t_scale=self.t_scale, + use_relative_rope=getattr(self, "use_relative_rope", False), + method=getattr(self, "rope_method", "linear"), + original_seq_len=getattr(self, "original_seq_len", None), + temporal_offset=getattr(self, "rope_temporal_offset", 0.0), + ) + + def create_custom_forward(module): + def custom_forward(*inputs, **kwargs): + return module(*inputs, **kwargs) + return custom_forward + + for block in self.blocks: + if torch.is_grad_enabled() and self.gradient_checkpointing: + x = torch.utils.checkpoint.checkpoint( + create_custom_forward(block), + x, **kwargs, + use_reentrant=False, + ) + else: + x = block(x, **kwargs) + + if clean_x is not None: + x = x[:, x.shape[1] // 2:] + + # head + x = self.head(x, e.unsqueeze(2)) + + x = self.unpatchify(x, grid_sizes) + return torch.stack(x) + + +def sp_causal_attn_forward( + self, + x, + seq_lens, + grid_sizes, + freqs, + block_mask, + kv_cache=None, + current_start=0, + cache_start=None, + t_scale=1.0, + use_relative_rope=False, + method="linear", + original_seq_len=None, + temporal_offset=0.0, + **kwargs, +): + r""" + Args: + x(Tensor): Shape [B, L, num_heads, C / num_heads] + seq_lens(Tensor): Shape [B] + grid_sizes(Tensor): Shape [B, 3], the second dimension contains (F, H, W) + freqs(Tensor): Rope freqs, shape [1024, C / num_heads / 2] + block_mask (BlockMask) + t_scale (float): Temporal RoPE interpolation scale. <1.0 compresses positions. + method (str): RoPE method. This release supports "linear". + original_seq_len (int): Unused by the release linear RoPE path. + """ + + b, s, n, d = *x.shape[:2], self.num_heads, self.head_dim + if cache_start is None: + cache_start = current_start + + # query, key, value function + def qkv_fn(x): + q = self.norm_q(self.q(x)).view(b, s, n, d) + k = self.norm_k(self.k(x)).view(b, s, n, d) + v = self.v(x).view(b, s, n, d) + return q, k, v + + q, k, v = qkv_fn(x) + + if kv_cache is None: + # Teacher-forcing training doubles sequence length with clean/noisy halves. + is_tf = (s == seq_lens[0].item() * 2) + if is_tf: + q_chunk = torch.chunk(q, 2, dim=1) + k_chunk = torch.chunk(k, 2, dim=1) + roped_query = [] + roped_key = [] + # rope should be same for clean and noisy parts + for ii in range(2): + rq = sp_rope_apply(q_chunk[ii], grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + rk = sp_rope_apply(k_chunk[ii], grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + roped_query.append(rq) + roped_key.append(rk) + + roped_query = torch.cat(roped_query, dim=1) + roped_key = torch.cat(roped_key, dim=1) + + x = distributed_flex_attention( + roped_query, + roped_key, + v, + block_mask, + ) + + else: + roped_query = sp_rope_apply(q, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + roped_key = sp_rope_apply(k, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + + x = distributed_flex_attention( + roped_query, + roped_key, + v, + block_mask, + ) + + else: + raise NotImplementedError() + + # output + x = x.flatten(2) + x = self.o(x) + + # Return both output and cache update info + if kv_cache is not None: + raise NotImplementedError() + else: + return x diff --git a/wan_5b/distributed/sp_training.py b/wan_5b/distributed/sp_training.py new file mode 100644 index 0000000..e65e19f --- /dev/null +++ b/wan_5b/distributed/sp_training.py @@ -0,0 +1,575 @@ +# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# To view a copy of this license, visit http://www.apache.org/licenses/LICENSE-2.0 +# +# No warranties are given. The work is provided "AS IS", without warranty of any kind, express or implied. +# +# SPDX-License-Identifier: Apache-2.0 + +"""LongLive sequence-parallel training utilities. + +This module collects the LongLive-specific SP training pieces that are layered +on top of Wan2.2's distributed Ulysses helpers: SP/DP process-group routing, +autograd-safe all-to-all for FlexAttention, distributed teacher-forcing +FlexAttention, and chunk-halo VAE preparation. +""" + +import math + +import torch +import torch.distributed as dist +try: + from torch.nn.attention.flex_attention import flex_attention as _flex_attention +except ModuleNotFoundError: + _flex_attention = None + +from utils.config import wan_default_config + + +DEFAULT_SP_VAE_HALO_LATENTS = 28 + +_sp_group = None +_dp_group = None +_compiled_flex_attention = None + + +def sp_training_sequence_frame_count(config): + """Frames that are sharded by training sequence parallelism.""" + return int(list(config.image_or_video_shape)[1]) + + +def validate_sequence_parallel_training_config(config, sp_size, num_frame_per_block): + total_frames = int(list(config.image_or_video_shape)[1]) + train_frames = sp_training_sequence_frame_count(config) + if train_frames <= 0: + raise ValueError( + f"image_or_video_shape[1] ({total_frames}) must be positive." + ) + if train_frames % int(num_frame_per_block) != 0: + raise ValueError( + f"training latent frames ({train_frames}) must be divisible by " + f"num_frame_per_block ({num_frame_per_block})." + ) + if train_frames % (int(sp_size) * int(num_frame_per_block)) != 0: + raise ValueError( + f"training latent frames ({train_frames}) must be divisible " + f"by sequence_parallel_size ({sp_size}) * num_frame_per_block " + f"({num_frame_per_block})." + ) + + +def _get_compiled_flex_attention(): + global _compiled_flex_attention + if _flex_attention is None: + raise ModuleNotFoundError( + "torch.nn.attention.flex_attention is required for Sequence Parallel " + "training. Install a PyTorch build that provides FlexAttention." + ) + if _compiled_flex_attention is None: + _compiled_flex_attention = torch.compile( + _flex_attention, dynamic=False, mode="max-autotune-no-cudagraphs") + return _compiled_flex_attention + + +def set_sequence_parallel_group(group): + """Set the SP group used by SP rank/world-size and all-to-all helpers.""" + global _sp_group + _sp_group = group + + +def get_sequence_parallel_group(): + return _sp_group + + +def set_data_parallel_group(group): + """Set the DP group whose ranks own the same sequence chunk.""" + global _dp_group + _dp_group = group + + +def get_data_parallel_group(): + return _dp_group + + +def get_sp_rank(): + if _sp_group is not None: + return dist.get_rank(_sp_group) + return dist.get_rank() + + +def get_sp_world_size(): + if _sp_group is not None: + return dist.get_world_size(_sp_group) + return dist.get_world_size() + + +def resolve_sequence_parallel_group(group=None): + if group is not None: + return group + return _sp_group + + +def _world_size(group=None): + return dist.get_world_size(group) if group is not None else dist.get_world_size() + + +def _all_to_all_list_impl(x, scatter_dim, gather_dim, group=None, **kwargs): + world_size = _world_size(group) + if world_size <= 1: + return x + inputs = [u.contiguous() for u in x.chunk(world_size, dim=scatter_dim)] + outputs = [torch.empty_like(u) for u in inputs] + dist.all_to_all(outputs, inputs, group=group, **kwargs) + return torch.cat(outputs, dim=gather_dim).contiguous() + + +def all_to_all(x, scatter_dim, gather_dim, group=None, **kwargs): + group = resolve_sequence_parallel_group(group) + if _world_size(group) <= 1: + return x + return _all_to_all_list_impl(x, scatter_dim, gather_dim, group=group, **kwargs) + + +class AllToAllWithGrad(torch.autograd.Function): + @staticmethod + def forward(ctx, input_tensor, scatter_dim, gather_dim, group): + ctx.scatter_dim = scatter_dim + ctx.gather_dim = gather_dim + ctx.group = group + return _all_to_all_list_impl( + input_tensor, scatter_dim, gather_dim, group=group + ) + + @staticmethod + def backward(ctx, grad_output): + return ( + _all_to_all_list_impl( + grad_output, ctx.gather_dim, ctx.scatter_dim, group=ctx.group + ), + None, + None, + None, + ) + + +def all_to_all_with_grad(x, scatter_dim, gather_dim, group=None): + group = resolve_sequence_parallel_group(group) + if _world_size(group) <= 1: + return x + return AllToAllWithGrad.apply(x, scatter_dim, gather_dim, group) + + +def all_gather(tensor, group=None): + group = resolve_sequence_parallel_group(group) + world_size = _world_size(group) + if world_size == 1: + return [tensor] + tensor_list = [torch.empty_like(tensor) for _ in range(world_size)] + dist.all_gather(tensor_list, tensor, group=group) + return tensor_list + + +def gather_forward(input, dim, group=None): + group = resolve_sequence_parallel_group(group) + if _world_size(group) == 1: + return input + return torch.cat(all_gather(input, group=group), dim=dim).contiguous() + + +def distributed_flex_attention( + roped_q: torch.Tensor, + roped_k: torch.Tensor, + v: torch.Tensor, + block_mask, + pad_multiple: int = 128, +): + """Distributed FlexAttention over SP-sharded heads/sequences. + + Inputs use the local SP layout [B, L_local, N_local, D]. The function + gathers sequence tokens across the SP group, applies block-sparse + FlexAttention, then scatters the output back to the original local layout. + """ + roped_q = all_to_all_with_grad(roped_q, scatter_dim=2, gather_dim=1) + roped_k = all_to_all_with_grad(roped_k, scatter_dim=2, gather_dim=1) + v = all_to_all_with_grad(v, scatter_dim=2, gather_dim=1) + + batch_size, global_len, num_local_heads, head_dim = roped_q.shape + padded_length = math.ceil(global_len / pad_multiple) * pad_multiple - global_len + if padded_length > 0: + zeros_q = torch.zeros( + batch_size, + padded_length, + num_local_heads, + head_dim, + device=roped_q.device, + dtype=v.dtype, + ) + zeros_k = torch.zeros( + batch_size, + padded_length, + num_local_heads, + head_dim, + device=roped_k.device, + dtype=v.dtype, + ) + zeros_v = torch.zeros( + batch_size, + padded_length, + num_local_heads, + head_dim, + device=v.device, + dtype=v.dtype, + ) + roped_q = torch.cat([roped_q, zeros_q], dim=1) + roped_k = torch.cat([roped_k, zeros_k], dim=1) + v = torch.cat([v, zeros_v], dim=1) + + x = _get_compiled_flex_attention()( + query=roped_q.transpose(2, 1), + key=roped_k.transpose(2, 1), + value=v.transpose(2, 1), + block_mask=block_mask, + ) + if padded_length > 0: + x = x[:, :, :-padded_length] + + x = x.transpose(2, 1) + return all_to_all_with_grad(x, scatter_dim=1, gather_dim=2) + + +class SequenceParallelHelper: + def __init__(self, trainer): + self.trainer = trainer + + @property + def config(self): + return self.trainer.config + + @property + def device(self): + return self.trainer.device + + @property + def dtype(self): + return self.trainer.dtype + + @property + def sp_size(self): + return int(getattr(self.trainer, "sequence_parallel_size", 1)) + + @property + def sp_group(self): + return getattr(self.trainer, "sp_group", None) + + @property + def vae_halo_latents(self): + return int(getattr(self.config, "vae_halo_latents", DEFAULT_SP_VAE_HALO_LATENTS)) + + def enabled(self): + return self.sp_size > 1 and self.sp_group is not None + + def sp_root_global_rank(self): + global_rank = dist.get_rank() + return (global_rank // self.sp_size) * self.sp_size + + def local_sp_rank(self): + return get_sp_rank() + + def _chunk_tensor(self, tensor, dim): + return tensor.chunk(self.sp_size, dim=dim)[self.local_sp_rank()].contiguous() + + def local_i2v_initial_latent(self, initial_latent): + if initial_latent is None: + return None + if not getattr(self.config, "i2v", False): + return initial_latent + if not self.enabled(): + return initial_latent + return initial_latent if self.local_sp_rank() == 0 else None + + def partition_training_inputs( + self, + *, + image_or_video_shape, + clean_latent=None, + conditional_dict=None, + clean_latent_is_sharded=False, + ): + if not self.enabled(): + return clean_latent, conditional_dict, image_or_video_shape + + image_or_video_shape = list(image_or_video_shape) + batch_size = ( + clean_latent.shape[0] + if clean_latent is not None + else int(image_or_video_shape[0]) + ) + + def chunk_dict(d): + if d is None: + return None + out = {} + for key, value in d.items(): + if value is None or not torch.is_tensor(value): + out[key] = value + continue + value = value.reshape(batch_size, -1, *value.shape[1:]) + num_segments = value.shape[1] + if num_segments == 1: + out[key] = value + elif num_segments % self.sp_size == 0: + out[key] = self._chunk_tensor(value, dim=1) + else: + raise ValueError( + f"SP chunking failed for key={key}: " + f"num_segments={num_segments} must be 1 or divisible by " + f"sp_size={self.sp_size}" + ) + out[key] = out[key].reshape(-1, *value.shape[2:]).contiguous() + return out + + if clean_latent is not None and not clean_latent_is_sharded: + clean_latent = self._chunk_tensor(clean_latent, dim=1) + + conditional_dict = chunk_dict(conditional_dict) + image_or_video_shape[1] = image_or_video_shape[1] // self.sp_size + return clean_latent, conditional_dict, image_or_video_shape + + def chunk_if_needed(self, tensor, *, dim, already_sharded=False): + if tensor is None or not self.enabled() or already_sharded: + return tensor + return self._chunk_tensor(tensor, dim=dim) + + def build_loss_mask(self, batch, clean_latent, clean_latent_is_sharded): + num_valid_latent_frames = batch.get("num_valid_latent_frames", None) + mask_i2v_first_frame = bool( + getattr(self.config, "i2v", False) + and getattr(self.config, "independent_first_frame", False) + ) + if num_valid_latent_frames is None and not mask_i2v_first_frame: + return None + _, local_or_global_frames = clean_latent.shape[:2] + if clean_latent_is_sharded: + frame_start = self.local_sp_rank() * local_or_global_frames + frame_indices = torch.arange( + frame_start, + frame_start + local_or_global_frames, + device=self.device, + ).unsqueeze(0) + else: + frame_indices = torch.arange( + local_or_global_frames, device=self.device + ).unsqueeze(0) + if num_valid_latent_frames is None: + mask = torch.ones( + (clean_latent.shape[0], local_or_global_frames), + device=self.device, + dtype=torch.float32, + ) + else: + num_valid_latent_frames = num_valid_latent_frames.to(device=self.device) + mask = (frame_indices < num_valid_latent_frames.unsqueeze(1)).float() + if mask_i2v_first_frame: + mask = mask * (frame_indices != 0).float() + return mask + + def partition_loss_mask(self, loss_mask, *, already_sharded=False): + if loss_mask is None: + return None, None + if self.enabled() and not already_sharded: + loss_mask = self._chunk_tensor(loss_mask, dim=1) + if not self.enabled(): + return loss_mask, None + global_valid = loss_mask.sum() + dist.all_reduce(global_valid, op=dist.ReduceOp.SUM, group=self.sp_group) + return loss_mask, global_valid + + def latent_range_to_raw_window(self, latent_start, latent_end): + assert latent_end > latent_start + ratio = int( + wan_default_config[self.config.model_kwargs.model_name][ + "temporal_compression_ratio" + ] + ) + if latent_start == 0: + raw_start = 0 + pseudo_prefix_latents = 0 + else: + raw_start = ratio * (latent_start - 1) + pseudo_prefix_latents = 1 + raw_end = 1 + ratio * (latent_end - 1) + return raw_start, raw_end, pseudo_prefix_latents + + def chunk_halo_meta(self, *, sp_rank, total_latent_frames, total_raw_frames): + if total_latent_frames % self.sp_size != 0: + raise ValueError( + f"total_latent_frames={total_latent_frames} must be divisible by " + f"sequence_parallel_size={self.sp_size}" + ) + local_latent_frames = total_latent_frames // self.sp_size + keep_start = sp_rank * local_latent_frames + keep_end = keep_start + local_latent_frames + halo_start = max(0, keep_start - self.vae_halo_latents) + raw_start, raw_end, pseudo_prefix_latents = self.latent_range_to_raw_window( + halo_start, keep_end + ) + raw_start = max(0, raw_start) + raw_end = min(int(total_raw_frames), raw_end) + drop_latents = pseudo_prefix_latents + (keep_start - halo_start) + return { + "sp_rank": int(sp_rank), + "keep_start": int(keep_start), + "keep_end": int(keep_end), + "halo_start": int(halo_start), + "raw_start": int(raw_start), + "raw_end": int(raw_end), + "raw_frames": int(raw_end - raw_start), + "drop_latents": int(drop_latents), + "local_latent_frames": int(local_latent_frames), + } + + def chunk_halo_metas(self, *, total_latent_frames, total_raw_frames): + return [ + self.chunk_halo_meta( + sp_rank=sp_rank, + total_latent_frames=total_latent_frames, + total_raw_frames=total_raw_frames, + ) + for sp_rank in range(self.sp_size) + ] + + def scatter_frame_windows_for_chunk_halo(self, root_frames): + global_rank = dist.get_rank() + sp_rank = global_rank % self.sp_size + root_global_rank = self.sp_root_global_rank() + + batch_size, channels, total_raw_frames, height, width = tuple(root_frames.shape) + total_latent_frames = int(list(self.config.image_or_video_shape)[1]) + metas = self.chunk_halo_metas( + total_latent_frames=total_latent_frames, + total_raw_frames=total_raw_frames, + ) + rank_meta = metas[sp_rank] + + if global_rank == root_global_rank: + local_frames = None + for send_meta in metas: + raw_window = root_frames[ + :, + :, + send_meta["raw_start"]:send_meta["raw_end"], + :, + :, + ] + dst_global_rank = root_global_rank + int(send_meta["sp_rank"]) + if dst_global_rank == global_rank: + local_frames = raw_window.contiguous() + continue + send_buffer = raw_window.contiguous() + dist.send(send_buffer, dst=dst_global_rank) + del send_buffer + if local_frames is None: + raise RuntimeError("SP-VAE chunk_halo root did not build local frames") + else: + local_frames = torch.empty( + (batch_size, channels, rank_meta["raw_frames"], height, width), + device=self.device, + dtype=root_frames.dtype, + ) + dist.recv(local_frames, src=root_global_rank) + local_frames = local_frames.contiguous() + + return local_frames, rank_meta + + def sync_batch(self, batch, step): + if not self.enabled(): + return batch + + global_rank = dist.get_rank() + root_global_rank = self.sp_root_global_rank() + device = torch.device(f"cuda:{torch.cuda.current_device()}") + + if "frames" in batch: + frames_for_scatter = batch["frames"] + if global_rank == root_global_rank: + frames_for_scatter = frames_for_scatter.to(device, non_blocking=True) + local_frames, meta = self.scatter_frame_windows_for_chunk_halo( + frames_for_scatter + ) + batch["frames"] = local_frames + batch["sp_vae_chunk_meta"] = meta + + if global_rank == root_global_rank: + info_obj = [{ + "prompts": batch["prompts"], + "idx": batch["idx"], + "num_valid_latent_frames": batch.get("num_valid_latent_frames", None), + }] + else: + info_obj = [None] + dist.broadcast_object_list(info_obj, src=root_global_rank, group=self.sp_group) + + batch["prompts"] = info_obj[0]["prompts"] + batch["idx"] = info_obj[0]["idx"] + if info_obj[0]["num_valid_latent_frames"] is not None: + batch["num_valid_latent_frames"] = info_obj[0]["num_valid_latent_frames"] + return batch + + def broadcast_tensor_from_root(self, root_tensor, *, shape): + root_global_rank = self.sp_root_global_rank() + if dist.get_rank() == root_global_rank: + tensor = root_tensor.contiguous() + else: + tensor = torch.empty(shape, device=self.device, dtype=self.dtype) + dist.broadcast(tensor, src=root_global_rank, group=self.sp_group) + return tensor + + def encode_raw_video_latents(self, batch, *, batch_size): + if self.enabled(): + meta = batch.get("sp_vae_chunk_meta", None) + if meta is None: + raise RuntimeError( + "SP chunk-halo VAE requires sync_batch to attach sp_vae_chunk_meta." + ) + total_latent_frames = int(list(self.config.image_or_video_shape)[1]) + + with torch.no_grad(): + frames = batch["frames"].to( + device=self.device, dtype=self.dtype, non_blocking=True + ) + chunk_latent = self.trainer.model.vae.encode_to_latent(frames).to( + device=self.device, dtype=self.dtype + ) + + drop = int(meta["drop_latents"]) + local_latent_frames = int(meta["local_latent_frames"]) + keep_end = drop + local_latent_frames + if chunk_latent.shape[1] < keep_end: + raise RuntimeError( + "SP-VAE chunk_halo encode produced too few latent frames: " + f"chunk_latent={tuple(chunk_latent.shape)} drop={drop} " + f"local_latent_frames={local_latent_frames} meta={meta}" + ) + clean_latent = chunk_latent[:, drop:keep_end].contiguous() + if clean_latent.shape[1] != total_latent_frames // self.sp_size: + raise RuntimeError( + "SP-VAE chunk_halo local latent shape mismatch: " + f"clean_latent={tuple(clean_latent.shape)} meta={meta}" + ) + + image_latent = ( + clean_latent[:, 0:1] if int(meta["keep_start"]) == 0 else None + ) + + del chunk_latent + return clean_latent, image_latent, True + + frames = batch["frames"].to(device=self.device, dtype=self.dtype) + with torch.no_grad(): + clean_latent = self.trainer.model.vae.encode_to_latent(frames).to( + device=self.device, dtype=self.dtype + ) + image_latent = clean_latent[:, 0:1] + return clean_latent, image_latent, False diff --git a/wan_5b/distributed/sp_ulysses_inference.py b/wan_5b/distributed/sp_ulysses_inference.py new file mode 100644 index 0000000..8349d8c --- /dev/null +++ b/wan_5b/distributed/sp_ulysses_inference.py @@ -0,0 +1,209 @@ +# Copyright 2024-2025 LongLive Authors. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +""" +Ulysses-style sequence-parallel primitives for Wan2.2-TI2V-5B inference. +""" + +from typing import Optional +import time + +import torch +import torch.distributed as dist + + +_SP_GROUP: Optional[dist.ProcessGroup] = None +_SP_WORLD_SIZE: int = 1 +_SP_RANK: int = 0 + +_SP_COMM_STATS = { + "all_gather_time": 0.0, + "all_gather_count": 0, + "all_gather_bytes": 0, + "all_to_all_time": 0.0, + "all_to_all_count": 0, + "all_to_all_bytes": 0, + "barrier_time": 0.0, + "barrier_count": 0, +} +_SP_PROFILING_ENABLED: bool = False + + +def init_sequence_parallel( + world_size: int | None = None, + rank: int | None = None, + group: Optional[dist.ProcessGroup] = None, +): + """Initialize sequence-parallel state for the current process.""" + global _SP_GROUP, _SP_WORLD_SIZE, _SP_RANK + if not dist.is_initialized(): + raise RuntimeError("torch.distributed must be initialized before init_sequence_parallel") + if group is not None: + _SP_GROUP = group + _SP_WORLD_SIZE = dist.get_world_size(group) if world_size is None else world_size + _SP_RANK = dist.get_rank(group) if rank is None else rank + else: + _SP_WORLD_SIZE = world_size if world_size is not None else dist.get_world_size() + _SP_RANK = rank if rank is not None else dist.get_rank() + _SP_GROUP = dist.group.WORLD + if _SP_RANK == 0: + print(f"[SP-Ulysses-5B] Initialized: world_size={_SP_WORLD_SIZE}, rank={_SP_RANK}") + return _SP_GROUP + + +def get_sp_group() -> dist.ProcessGroup: + if _SP_GROUP is None: + raise RuntimeError("SP group not initialized. Call init_sequence_parallel first.") + return _SP_GROUP + + +def get_sp_world_size() -> int: + return _SP_WORLD_SIZE + + +def get_sp_rank() -> int: + return _SP_RANK + + +def is_sp_enabled() -> bool: + return _SP_WORLD_SIZE > 1 + + +def enable_sp_profiling(): + global _SP_PROFILING_ENABLED + _SP_PROFILING_ENABLED = True + reset_sp_comm_stats() + + +def disable_sp_profiling(): + global _SP_PROFILING_ENABLED + _SP_PROFILING_ENABLED = False + + +def reset_sp_comm_stats(): + global _SP_COMM_STATS + _SP_COMM_STATS = { + key: 0.0 if "time" in key or "bytes" in key else 0 + for key in _SP_COMM_STATS + } + + +def get_sp_comm_stats(): + return _SP_COMM_STATS.copy() + + +def sp_all_gather(tensor: torch.Tensor, dim: int = 1) -> torch.Tensor: + if not is_sp_enabled(): + return tensor + global _SP_COMM_STATS, _SP_PROFILING_ENABLED + world_size = get_sp_world_size() + tensor_list = [torch.empty_like(tensor) for _ in range(world_size)] + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + start_time = time.perf_counter() + dist.all_gather(tensor_list, tensor, group=get_sp_group()) + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + elapsed = time.perf_counter() - start_time + _SP_COMM_STATS["all_gather_time"] += elapsed + _SP_COMM_STATS["all_gather_count"] += 1 + _SP_COMM_STATS["all_gather_bytes"] += ( + tensor.numel() * tensor.element_size() * (world_size - 1) + ) + return torch.cat(tensor_list, dim=dim) + + +def sp_scatter(tensor: torch.Tensor, dim: int = 1) -> torch.Tensor: + if not is_sp_enabled(): + return tensor + chunks = torch.chunk(tensor, get_sp_world_size(), dim=dim) + return chunks[get_sp_rank()].contiguous() + + +def sp_all_to_all(tensor: torch.Tensor, scatter_dim: int, gather_dim: int) -> torch.Tensor: + if not is_sp_enabled(): + return tensor + global _SP_COMM_STATS, _SP_PROFILING_ENABLED + world_size = get_sp_world_size() + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + start_time = time.perf_counter() + scatter_chunks = [ + chunk.contiguous() for chunk in torch.chunk(tensor, world_size, dim=scatter_dim) + ] + recv_chunks = [torch.empty_like(scatter_chunks[0]) for _ in range(world_size)] + dist.all_to_all(recv_chunks, scatter_chunks, group=get_sp_group()) + output = torch.cat(recv_chunks, dim=gather_dim) + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + elapsed = time.perf_counter() - start_time + _SP_COMM_STATS["all_to_all_time"] += elapsed + _SP_COMM_STATS["all_to_all_count"] += 1 + _SP_COMM_STATS["all_to_all_bytes"] += ( + scatter_chunks[0].numel() * tensor.element_size() * (world_size - 1) * 2 + ) + return output + + +def ulysses_seq_to_head(tensor: torch.Tensor) -> torch.Tensor: + """Convert [B, S_local, N, D] to [B, S_total, N_local, D].""" + return sp_all_to_all(tensor, scatter_dim=2, gather_dim=1) if is_sp_enabled() else tensor + + +def ulysses_head_to_seq(tensor: torch.Tensor) -> torch.Tensor: + """Convert [B, S_total, N_local, D] to [B, S_local, N, D].""" + return sp_all_to_all(tensor, scatter_dim=1, gather_dim=2) if is_sp_enabled() else tensor + + +def sp_barrier(): + if not is_sp_enabled(): + return + global _SP_COMM_STATS, _SP_PROFILING_ENABLED + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + start_time = time.perf_counter() + dist.barrier(group=get_sp_group()) + if _SP_PROFILING_ENABLED: + torch.cuda.synchronize() + elapsed = time.perf_counter() - start_time + _SP_COMM_STATS["barrier_time"] += elapsed + _SP_COMM_STATS["barrier_count"] += 1 + + +def sp_print(msg: str, rank_only: int = 0): + if get_sp_rank() == rank_only: + print(f"[SP-5B Rank {get_sp_rank()}] {msg}") + + +def profile_sp_communication(): + if not is_sp_enabled(): + return + rank = get_sp_rank() + world_size = get_sp_world_size() + test_size = (1, 880, 24, 128) + test_tensor = torch.randn(test_size, device="cuda", dtype=torch.bfloat16) + for _ in range(3): + _ = sp_all_gather(test_tensor, dim=1) + _ = ulysses_seq_to_head(test_tensor) + torch.cuda.synchronize() + start = time.perf_counter() + for _ in range(10): + _ = sp_all_gather(test_tensor, dim=1) + torch.cuda.synchronize() + all_gather_time = (time.perf_counter() - start) / 10 * 1000 + start = time.perf_counter() + for _ in range(10): + _ = ulysses_seq_to_head(test_tensor) + torch.cuda.synchronize() + all_to_all_time = (time.perf_counter() - start) / 10 * 1000 + if rank == 0: + all_gather_bw = ( + test_tensor.numel() * test_tensor.element_size() * (world_size - 1) / 1e9 + ) / (all_gather_time / 1000) + all_to_all_bw = ( + test_tensor.numel() * test_tensor.element_size() * (world_size - 1) / 1e9 + ) / (all_to_all_time / 1000) + print("\n[SP-Ulysses-5B Profile]") + print(f" World Size: {world_size}") + print(f" Test Shape: {test_size}") + print(f" All-Gather: {all_gather_time:.2f} ms, Bandwidth: {all_gather_bw:.2f} GB/s") + print(f" All-to-All: {all_to_all_time:.2f} ms, Bandwidth: {all_to_all_bw:.2f} GB/s") diff --git a/wan_5b/distributed/ulysses.py b/wan_5b/distributed/ulysses.py new file mode 100644 index 0000000..a6c229c --- /dev/null +++ b/wan_5b/distributed/ulysses.py @@ -0,0 +1,47 @@ +# Adopted from https://github.com/Wan-Video/Wan2.2 +# SPDX-License-Identifier: Apache-2.0 + +import torch.distributed as dist + +from ..modules.attention import flash_attention +from .sp_training import distributed_flex_attention +from .util import all_to_all + + +def distributed_attention( + q, + k, + v, + seq_lens, + window_size=(-1, -1), +): + """ + Performs distributed attention based on DeepSpeed Ulysses attention mechanism. + please refer to https://arxiv.org/pdf/2309.14509 + + Args: + q: [B, Lq // p, Nq, C1]. + k: [B, Lk // p, Nk, C1]. + v: [B, Lk // p, Nk, C2]. Nq must be divisible by Nk. + seq_lens: [B], length of each sequence in batch + window_size: (left right). If not (-1, -1), apply sliding window local attention. + """ + if not dist.is_initialized(): + raise ValueError("distributed group should be initialized.") + + q = all_to_all(q, scatter_dim=2, gather_dim=1) + k = all_to_all(k, scatter_dim=2, gather_dim=1) + v = all_to_all(v, scatter_dim=2, gather_dim=1) + + x = flash_attention( + q, + k, + v, + k_lens=seq_lens, + window_size=window_size, + ) + + return all_to_all(x, scatter_dim=1, gather_dim=2) + + +__all__ = ["distributed_attention", "distributed_flex_attention"] diff --git a/wan_5b/distributed/util.py b/wan_5b/distributed/util.py new file mode 100644 index 0000000..e33f497 --- /dev/null +++ b/wan_5b/distributed/util.py @@ -0,0 +1,51 @@ +# Adopted from https://github.com/Wan-Video/Wan2.2 +# SPDX-License-Identifier: Apache-2.0 + +"""Wan distributed utility compatibility layer. + +LongLive-specific SP/DP group routing and autograd all-to-all live in +``wan_5b.distributed.sp_training``. This module keeps Wan2.2's public import +paths intact for the rest of the codebase. +""" + +import torch.distributed as dist + +from .sp_training import ( + all_gather, + all_to_all, + all_to_all_with_grad, + gather_forward, + get_data_parallel_group, + get_sp_rank, + get_sp_world_size, + set_data_parallel_group, + set_sequence_parallel_group, +) + + +def init_distributed_group(): + """Initialize the default distributed group when it is not yet ready.""" + if not dist.is_initialized(): + dist.init_process_group(backend="nccl") + + +def get_rank(): + return get_sp_rank() + + +def get_world_size(): + return get_sp_world_size() + + +__all__ = [ + "all_gather", + "all_to_all", + "all_to_all_with_grad", + "gather_forward", + "get_data_parallel_group", + "get_rank", + "get_world_size", + "init_distributed_group", + "set_data_parallel_group", + "set_sequence_parallel_group", +] diff --git a/wan_5b/image2video.py b/wan_5b/image2video.py new file mode 100644 index 0000000..659564c --- /dev/null +++ b/wan_5b/image2video.py @@ -0,0 +1,431 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import gc +import logging +import math +import os +import random +import sys +import types +from contextlib import contextmanager +from functools import partial + +import numpy as np +import torch +import torch.cuda.amp as amp +import torch.distributed as dist +import torchvision.transforms.functional as TF +from tqdm import tqdm + +from .distributed.fsdp import shard_model +from .distributed.sequence_parallel import sp_attn_forward, sp_dit_forward +from .distributed.util import get_world_size +from .modules.model import WanModel +from .modules.t5 import T5EncoderModel +from .modules.vae2_1 import Wan2_1_VAE +from .utils.fm_solvers import ( + FlowDPMSolverMultistepScheduler, + get_sampling_sigmas, + retrieve_timesteps, +) +from .utils.fm_solvers_unipc import FlowUniPCMultistepScheduler + + +class WanI2V: + + def __init__( + self, + config, + checkpoint_dir, + device_id=0, + rank=0, + t5_fsdp=False, + dit_fsdp=False, + use_sp=False, + t5_cpu=False, + init_on_cpu=True, + convert_model_dtype=False, + ): + r""" + Initializes the image-to-video generation model components. + + Args: + config (EasyDict): + Object containing model parameters initialized from config.py + checkpoint_dir (`str`): + Path to directory containing model checkpoints + device_id (`int`, *optional*, defaults to 0): + Id of target GPU device + rank (`int`, *optional*, defaults to 0): + Process rank for distributed training + t5_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for T5 model + dit_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for DiT model + use_sp (`bool`, *optional*, defaults to False): + Enable distribution strategy of sequence parallel. + t5_cpu (`bool`, *optional*, defaults to False): + Whether to place T5 model on CPU. Only works without t5_fsdp. + init_on_cpu (`bool`, *optional*, defaults to True): + Enable initializing Transformer Model on CPU. Only works without FSDP or USP. + convert_model_dtype (`bool`, *optional*, defaults to False): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + """ + self.device = torch.device(f"cuda:{device_id}") + self.config = config + self.rank = rank + self.t5_cpu = t5_cpu + self.init_on_cpu = init_on_cpu + + self.num_train_timesteps = config.num_train_timesteps + self.boundary = config.boundary + self.param_dtype = config.param_dtype + + if t5_fsdp or dit_fsdp or use_sp: + self.init_on_cpu = False + + shard_fn = partial(shard_model, device_id=device_id) + self.text_encoder = T5EncoderModel( + text_len=config.text_len, + dtype=config.t5_dtype, + device=torch.device('cpu'), + checkpoint_path=os.path.join(checkpoint_dir, config.t5_checkpoint), + tokenizer_path=os.path.join(checkpoint_dir, config.t5_tokenizer), + shard_fn=shard_fn if t5_fsdp else None, + ) + + self.vae_stride = config.vae_stride + self.patch_size = config.patch_size + self.vae = Wan2_1_VAE( + vae_pth=os.path.join(checkpoint_dir, config.vae_checkpoint), + device=self.device) + + logging.info(f"Creating WanModel from {checkpoint_dir}") + self.low_noise_model = WanModel.from_pretrained( + checkpoint_dir, subfolder=config.low_noise_checkpoint) + self.low_noise_model = self._configure_model( + model=self.low_noise_model, + use_sp=use_sp, + dit_fsdp=dit_fsdp, + shard_fn=shard_fn, + convert_model_dtype=convert_model_dtype) + + self.high_noise_model = WanModel.from_pretrained( + checkpoint_dir, subfolder=config.high_noise_checkpoint) + self.high_noise_model = self._configure_model( + model=self.high_noise_model, + use_sp=use_sp, + dit_fsdp=dit_fsdp, + shard_fn=shard_fn, + convert_model_dtype=convert_model_dtype) + if use_sp: + self.sp_size = get_world_size() + else: + self.sp_size = 1 + + self.sample_neg_prompt = config.sample_neg_prompt + + def _configure_model(self, model, use_sp, dit_fsdp, shard_fn, + convert_model_dtype): + """ + Configures a model object. This includes setting evaluation modes, + applying distributed parallel strategy, and handling device placement. + + Args: + model (torch.nn.Module): + The model instance to configure. + use_sp (`bool`): + Enable distribution strategy of sequence parallel. + dit_fsdp (`bool`): + Enable FSDP sharding for DiT model. + shard_fn (callable): + The function to apply FSDP sharding. + convert_model_dtype (`bool`): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + + Returns: + torch.nn.Module: + The configured model. + """ + model.eval().requires_grad_(False) + + if use_sp: + for block in model.blocks: + block.self_attn.forward = types.MethodType( + sp_attn_forward, block.self_attn) + model.forward = types.MethodType(sp_dit_forward, model) + + if dist.is_initialized(): + dist.barrier() + + if dit_fsdp: + model = shard_fn(model) + else: + if convert_model_dtype: + model.to(self.param_dtype) + if not self.init_on_cpu: + model.to(self.device) + + return model + + def _prepare_model_for_timestep(self, t, boundary, offload_model): + r""" + Prepares and returns the required model for the current timestep. + + Args: + t (torch.Tensor): + current timestep. + boundary (`int`): + The timestep threshold. If `t` is at or above this value, + the `high_noise_model` is considered as the required model. + offload_model (`bool`): + A flag intended to control the offloading behavior. + + Returns: + torch.nn.Module: + The active model on the target device for the current timestep. + """ + if t.item() >= boundary: + required_model_name = 'high_noise_model' + offload_model_name = 'low_noise_model' + else: + required_model_name = 'low_noise_model' + offload_model_name = 'high_noise_model' + if offload_model or self.init_on_cpu: + if next(getattr( + self, + offload_model_name).parameters()).device.type == 'cuda': + getattr(self, offload_model_name).to('cpu') + if next(getattr( + self, + required_model_name).parameters()).device.type == 'cpu': + getattr(self, required_model_name).to(self.device) + return getattr(self, required_model_name) + + def generate(self, + input_prompt, + img, + max_area=720 * 1280, + frame_num=81, + shift=5.0, + sample_solver='unipc', + sampling_steps=40, + guide_scale=5.0, + n_prompt="", + seed=-1, + offload_model=True): + r""" + Generates video frames from input image and text prompt using diffusion process. + + Args: + input_prompt (`str`): + Text prompt for content generation. + img (PIL.Image.Image): + Input image tensor. Shape: [3, H, W] + max_area (`int`, *optional*, defaults to 720*1280): + Maximum pixel area for latent space calculation. Controls video resolution scaling + frame_num (`int`, *optional*, defaults to 81): + How many frames to sample from a video. The number should be 4n+1 + shift (`float`, *optional*, defaults to 5.0): + Noise schedule shift parameter. Affects temporal dynamics + [NOTE]: If you want to generate a 480p video, it is recommended to set the shift value to 3.0. + sample_solver (`str`, *optional*, defaults to 'unipc'): + Solver used to sample the video. + sampling_steps (`int`, *optional*, defaults to 40): + Number of diffusion sampling steps. Higher values improve quality but slow generation + guide_scale (`float` or tuple[`float`], *optional*, defaults 5.0): + Classifier-free guidance scale. Controls prompt adherence vs. creativity. + If tuple, the first guide_scale will be used for low noise model and + the second guide_scale will be used for high noise model. + n_prompt (`str`, *optional*, defaults to ""): + Negative prompt for content exclusion. If not given, use `config.sample_neg_prompt` + seed (`int`, *optional*, defaults to -1): + Random seed for noise generation. If -1, use random seed + offload_model (`bool`, *optional*, defaults to True): + If True, offloads models to CPU during generation to save VRAM + + Returns: + torch.Tensor: + Generated video frames tensor. Dimensions: (C, N H, W) where: + - C: Color channels (3 for RGB) + - N: Number of frames (81) + - H: Frame height (from max_area) + - W: Frame width from max_area) + """ + # preprocess + guide_scale = (guide_scale, guide_scale) if isinstance( + guide_scale, float) else guide_scale + img = TF.to_tensor(img).sub_(0.5).div_(0.5).to(self.device) + + F = frame_num + h, w = img.shape[1:] + aspect_ratio = h / w + lat_h = round( + np.sqrt(max_area * aspect_ratio) // self.vae_stride[1] // + self.patch_size[1] * self.patch_size[1]) + lat_w = round( + np.sqrt(max_area / aspect_ratio) // self.vae_stride[2] // + self.patch_size[2] * self.patch_size[2]) + h = lat_h * self.vae_stride[1] + w = lat_w * self.vae_stride[2] + + max_seq_len = ((F - 1) // self.vae_stride[0] + 1) * lat_h * lat_w // ( + self.patch_size[1] * self.patch_size[2]) + max_seq_len = int(math.ceil(max_seq_len / self.sp_size)) * self.sp_size + + seed = seed if seed >= 0 else random.randint(0, sys.maxsize) + seed_g = torch.Generator(device=self.device) + seed_g.manual_seed(seed) + noise = torch.randn( + 16, + (F - 1) // self.vae_stride[0] + 1, + lat_h, + lat_w, + dtype=torch.float32, + generator=seed_g, + device=self.device) + + msk = torch.ones(1, F, lat_h, lat_w, device=self.device) + msk[:, 1:] = 0 + msk = torch.concat([ + torch.repeat_interleave(msk[:, 0:1], repeats=4, dim=1), msk[:, 1:] + ], + dim=1) + msk = msk.view(1, msk.shape[1] // 4, 4, lat_h, lat_w) + msk = msk.transpose(1, 2)[0] + + if n_prompt == "": + n_prompt = self.sample_neg_prompt + + # preprocess + if not self.t5_cpu: + self.text_encoder.model.to(self.device) + context = self.text_encoder([input_prompt], self.device) + context_null = self.text_encoder([n_prompt], self.device) + if offload_model: + self.text_encoder.model.cpu() + else: + context = self.text_encoder([input_prompt], torch.device('cpu')) + context_null = self.text_encoder([n_prompt], torch.device('cpu')) + context = [t.to(self.device) for t in context] + context_null = [t.to(self.device) for t in context_null] + + y = self.vae.encode([ + torch.concat([ + torch.nn.functional.interpolate( + img[None].cpu(), size=(h, w), mode='bicubic').transpose( + 0, 1), + torch.zeros(3, F - 1, h, w) + ], + dim=1).to(self.device) + ])[0] + y = torch.concat([msk, y]) + + @contextmanager + def noop_no_sync(): + yield + + no_sync_low_noise = getattr(self.low_noise_model, 'no_sync', + noop_no_sync) + no_sync_high_noise = getattr(self.high_noise_model, 'no_sync', + noop_no_sync) + + # evaluation mode + with ( + torch.amp.autocast('cuda', dtype=self.param_dtype), + torch.no_grad(), + no_sync_low_noise(), + no_sync_high_noise(), + ): + boundary = self.boundary * self.num_train_timesteps + + if sample_solver == 'unipc': + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sample_scheduler.set_timesteps( + sampling_steps, device=self.device, shift=shift) + timesteps = sample_scheduler.timesteps + elif sample_solver == 'dpm++': + sample_scheduler = FlowDPMSolverMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sampling_sigmas = get_sampling_sigmas(sampling_steps, shift) + timesteps, _ = retrieve_timesteps( + sample_scheduler, + device=self.device, + sigmas=sampling_sigmas) + else: + raise NotImplementedError("Unsupported solver.") + + # sample videos + latent = noise + + arg_c = { + 'context': [context[0]], + 'seq_len': max_seq_len, + 'y': [y], + } + + arg_null = { + 'context': context_null, + 'seq_len': max_seq_len, + 'y': [y], + } + + if offload_model: + torch.cuda.empty_cache() + + for _, t in enumerate(tqdm(timesteps)): + latent_model_input = [latent.to(self.device)] + timestep = [t] + + timestep = torch.stack(timestep).to(self.device) + + model = self._prepare_model_for_timestep( + t, boundary, offload_model) + sample_guide_scale = guide_scale[1] if t.item( + ) >= boundary else guide_scale[0] + + noise_pred_cond = model( + latent_model_input, t=timestep, **arg_c)[0] + if offload_model: + torch.cuda.empty_cache() + noise_pred_uncond = model( + latent_model_input, t=timestep, **arg_null)[0] + if offload_model: + torch.cuda.empty_cache() + noise_pred = noise_pred_uncond + sample_guide_scale * ( + noise_pred_cond - noise_pred_uncond) + + temp_x0 = sample_scheduler.step( + noise_pred.unsqueeze(0), + t, + latent.unsqueeze(0), + return_dict=False, + generator=seed_g)[0] + latent = temp_x0.squeeze(0) + + x0 = [latent] + del latent_model_input, timestep + + if offload_model: + self.low_noise_model.cpu() + self.high_noise_model.cpu() + torch.cuda.empty_cache() + + if self.rank == 0: + videos = self.vae.decode(x0) + + del noise, latent, x0 + del sample_scheduler + if offload_model: + gc.collect() + torch.cuda.synchronize() + if dist.is_initialized(): + dist.barrier() + + return videos[0] if self.rank == 0 else None diff --git a/wan_5b/modules/__init__.py b/wan_5b/modules/__init__.py new file mode 100644 index 0000000..9d9eeb8 --- /dev/null +++ b/wan_5b/modules/__init__.py @@ -0,0 +1,19 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +from .attention import flash_attention +from .model import WanModel +from .t5 import T5Decoder, T5Encoder, T5EncoderModel, T5Model +from .tokenizers import HuggingfaceTokenizer +from .vae2_1 import Wan2_1_VAE +from .vae2_2 import Wan2_2_VAE + +__all__ = [ + 'Wan2_1_VAE', + 'Wan2_2_VAE', + 'WanModel', + 'T5Model', + 'T5Encoder', + 'T5Decoder', + 'T5EncoderModel', + 'HuggingfaceTokenizer', + 'flash_attention', +] diff --git a/wan_5b/modules/attention.py b/wan_5b/modules/attention.py new file mode 100644 index 0000000..b6b8653 --- /dev/null +++ b/wan_5b/modules/attention.py @@ -0,0 +1,306 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import functools +import os +import torch + +# FA4: preferred on Blackwell (sm_100). Imported via `flash_attn.cute`. The +# inference loop on GB200 runs this path when LLV2_USE_FA4 is unset or "1". +try: + from flash_attn.cute import flash_attn_varlen_func as _fa4_varlen_func + FLASH_ATTN_4_AVAILABLE = True +except Exception: + FLASH_ATTN_4_AVAILABLE = False + +try: + import flash_attn_interface + FLASH_ATTN_3_AVAILABLE = True +except ModuleNotFoundError: + FLASH_ATTN_3_AVAILABLE = False + +try: + import flash_attn + FLASH_ATTN_2_AVAILABLE = True +except ModuleNotFoundError: + FLASH_ATTN_2_AVAILABLE = False + +# TE 2.13 ships a `DotProductAttention` Module whose cuDNN-backed +# FusedAttention path is Blackwell sm_100-tuned. Default it ON when TE is +# importable; couple it with `NVTE_FLASH_ATTN=0` in the launch env so TE +# picks cuDNN FusedAttention instead of falling back to flash-attn 2 (which +# is what the original baseline used and is the kernel we want to replace). +try: + from transformer_engine.pytorch.attention import ( + DotProductAttention as _TE_DPA, + ) + TE_DPA_AVAILABLE = True +except Exception: + TE_DPA_AVAILABLE = False + +# Default off — iter-5 (run-20260520-022256-fa4) showed FA4 4.0.0b4 + torch +# 2.12 + cute-DSL is currently quality-FAIL on this NVFP4 pipeline (max|Δ|≈9 +# vs threshold 5e-3) and ~6% slower in steady-state. Re-enable with +# LLV2_USE_FA4=1 once we have a clean qlive_fa4 baseline + working +# torch.compile interop. +_USE_FA4 = os.environ.get("LLV2_USE_FA4", "0") == "1" +_USE_TE_ATTN = os.environ.get("LLV2_USE_TE_ATTN", "0") == "1" +# iter-32: FA3 default-off. Initial sm_100 build only JIT'd common head_dim +# templates; less-common shapes throw "no kernel image is available". Rebuild +# FA3 with TORCH_CUDA_ARCH_LIST=10.0+PTX then flip this to 1. +_USE_FA3 = os.environ.get("LLV2_USE_FA3", "0") == "1" + + +@functools.lru_cache(maxsize=16) +def _get_te_dpa( + num_heads: int, + head_dim: int, + attn_mask_type: str, + window_left: int, + window_right: int, +) -> "torch.nn.Module": + """Cached TE DotProductAttention instance keyed by attention shape + + masking. Constructed lazily and reused across forward calls. TE's DPA + object is light at __init__ (no params); the cuDNN dispatch happens in + forward. + """ + ws = (window_left, window_right) + return _TE_DPA( + num_attention_heads=num_heads, + kv_channels=head_dim, + attention_dropout=0.0, + attn_mask_type=attn_mask_type, + window_size=ws, + qkv_format="thd", # varlen — flat tokens + cu_seqlens + ).cuda() + + +import warnings + +__all__ = [ + 'flash_attention', + 'attention', +] + + +def flash_attention( + q, + k, + v, + q_lens=None, + k_lens=None, + dropout_p=0., + softmax_scale=None, + q_scale=None, + causal=False, + window_size=(-1, -1), + deterministic=False, + dtype=torch.bfloat16, + version=None, +): + """ + q: [B, Lq, Nq, C1]. + k: [B, Lk, Nk, C1]. + v: [B, Lk, Nk, C2]. Nq must be divisible by Nk. + q_lens: [B]. + k_lens: [B]. + dropout_p: float. Dropout probability. + softmax_scale: float. The scaling of QK^T before applying softmax. + causal: bool. Whether to apply causal attention mask. + window_size: (left right). If not (-1, -1), apply sliding window local attention. + deterministic: bool. If True, slightly slower and uses more memory. + dtype: torch.dtype. Apply when dtype of q/k/v is not float16/bfloat16. + """ + half_dtypes = (torch.float16, torch.bfloat16) + assert dtype in half_dtypes + assert q.device.type == 'cuda' and q.size(-1) <= 256 + + # params + b, lq, lk, out_dtype = q.size(0), q.size(1), k.size(1), q.dtype + + def half(x): + return x if x.dtype in half_dtypes else x.to(dtype) + + # preprocess query + if q_lens is None: + q = half(q.flatten(0, 1)) + q_lens = torch.tensor( + [lq] * b, dtype=torch.int32).to( + device=q.device, non_blocking=True) + else: + q = half(torch.cat([u[:v] for u, v in zip(q, q_lens)])) + + # preprocess key, value + if k_lens is None: + k = half(k.flatten(0, 1)) + v = half(v.flatten(0, 1)) + k_lens = torch.tensor( + [lk] * b, dtype=torch.int32).to( + device=k.device, non_blocking=True) + else: + k = half(torch.cat([u[:v] for u, v in zip(k, k_lens)])) + v = half(torch.cat([u[:v] for u, v in zip(v, k_lens)])) + + q = q.to(v.dtype) + k = k.to(v.dtype) + + if q_scale is not None: + q = q * q_scale + + if version is not None and version == 3 and not FLASH_ATTN_3_AVAILABLE: + warnings.warn( + 'Flash attention 3 is not available, use flash attention 2 instead.' + ) + + cu_seqlens_q = torch.cat([q_lens.new_zeros([1]), q_lens]).cumsum( + 0, dtype=torch.int32).to(q.device, non_blocking=True) + cu_seqlens_k = torch.cat([k_lens.new_zeros([1]), k_lens]).cumsum( + 0, dtype=torch.int32).to(q.device, non_blocking=True) + + # TE DotProductAttention (cuDNN FusedAttention, sm_100-tuned). Opt-in via + # LLV2_USE_TE_ATTN=1 + NVTE_FLASH_ATTN=0 in the launch env (the latter + # stops TE from dispatching internally to flash-attn 2 — which is what + # we're trying to replace). + # + # iter-6 unit test (agent/te_dpa_unit_test.py, ran in qlive env outside + # any TE FP8 autocast scope) showed `padding`+`window=(-1,-1)` matches + # FA2 (causal=False) at max|Δ|=3e-5 (bf16 rounding). But iter-6 in the + # full pipeline gave video PSNR = 10.4 dB — the math goes wrong because + # the model's TE-wrapped Linear forwards open a `te.fp8_autocast(...)` + # scope, and the DPA inside that scope tries to run FP8 attention without + # calibrated scales. Wrapping the DPA call in `fp8_autocast(enabled=False)` + # forces it to bf16 cuDNN attention, which is what the unit test verified. + if _USE_TE_ATTN and TE_DPA_AVAILABLE: + n_q = q.size(1) # after flatten(0,1), q is [Lq_total, n, d]; size(1)=n + d = q.size(2) + ws_left = -1 if window_size[0] is None or window_size[0] < 0 else int(window_size[0]) + ws_right = -1 if window_size[1] is None or window_size[1] < 0 else int(window_size[1]) + mask_type = "padding_causal" if causal else "padding" + if q_scale is not None and softmax_scale is None: + softmax_scale = float(q_scale) / (d ** 0.5) + dpa = _get_te_dpa(n_q, d, mask_type, ws_left, ws_right) + # iter-6b confirmed wrapping each DPA call in a fp8_autocast(enabled=False) + # context is (a) a no-op for correctness (latent drift unchanged) and + # (b) a recompile trap for dynamo (medians thrash between 1272 and 1859 + # across prompts). Just call DPA directly. + out = dpa( + q, k, v, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_kv=cu_seqlens_k, + max_seqlen_q=lq, + max_seqlen_kv=lk, + ) + if out.dim() == 2: + out = out.view(-1, n_q, d) + x = out.unflatten(0, (b, lq)) + # FA4 (Blackwell sm_100): preferred when available unless caller pins + # version=2/3 or env var disables. iter-5. + elif (version is None or version == 4) and _USE_FA4 and FLASH_ATTN_4_AVAILABLE: + # FA4 uses None for "no window"; FA2 used (-1, -1). + ws = ( + None if window_size[0] is None or window_size[0] < 0 else window_size[0], + None if window_size[1] is None or window_size[1] < 0 else window_size[1], + ) + out = _fa4_varlen_func( + q=q, + k=k, + v=v, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + softmax_scale=softmax_scale, + causal=causal, + window_size=ws, + ) + if isinstance(out, (tuple, list)): + out = out[0] + x = out.unflatten(0, (b, lq)) + elif (version == 3 or (version is None and _USE_FA3)) and FLASH_ATTN_3_AVAILABLE: + # iter-32: FA3 (built from hopper/ source). Returns a single tensor + # at default `return_attn_probs=False`, NOT a (out, lse) tuple — the + # original `[0]` here was indexing into dim-0 of the output, giving a + # bogus (24, 128) slice. Use the return value directly. window_size + # supported by FA3 (default (-1, -1)); thread the caller's value + # through so local-attention windows work. + out = flash_attn_interface.flash_attn_varlen_func( + q=q, + k=k, + v=v, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + seqused_q=None, + seqused_k=None, + max_seqlen_q=lq, + max_seqlen_k=lk, + softmax_scale=softmax_scale, + causal=causal, + window_size=window_size, + deterministic=deterministic, + ) + if isinstance(out, (tuple, list)): + out = out[0] + x = out.unflatten(0, (b, lq)) + else: + assert FLASH_ATTN_2_AVAILABLE + x = flash_attn.flash_attn_varlen_func( + q=q, + k=k, + v=v, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + max_seqlen_q=lq, + max_seqlen_k=lk, + dropout_p=dropout_p, + softmax_scale=softmax_scale, + causal=causal, + window_size=window_size, + deterministic=deterministic).unflatten(0, (b, lq)) + + # output + return x.type(out_dtype) + + +def attention( + q, + k, + v, + q_lens=None, + k_lens=None, + dropout_p=0., + softmax_scale=None, + q_scale=None, + causal=False, + window_size=(-1, -1), + deterministic=False, + dtype=torch.bfloat16, + fa_version=None, +): + if FLASH_ATTN_2_AVAILABLE or FLASH_ATTN_3_AVAILABLE: + return flash_attention( + q=q, + k=k, + v=v, + q_lens=q_lens, + k_lens=k_lens, + dropout_p=dropout_p, + softmax_scale=softmax_scale, + q_scale=q_scale, + causal=causal, + window_size=window_size, + deterministic=deterministic, + dtype=dtype, + version=fa_version, + ) + else: + if q_lens is not None or k_lens is not None: + warnings.warn( + 'Padding mask is disabled when using scaled_dot_product_attention. It can have a significant impact on performance.' + ) + attn_mask = None + + q = q.transpose(1, 2).to(dtype) + k = k.transpose(1, 2).to(dtype) + v = v.transpose(1, 2).to(dtype) + + out = torch.nn.functional.scaled_dot_product_attention( + q, k, v, attn_mask=attn_mask, is_causal=causal, dropout_p=dropout_p) + + out = out.transpose(1, 2).contiguous() + return out diff --git a/wan_5b/modules/causal_model.py b/wan_5b/modules/causal_model.py new file mode 100644 index 0000000..142a591 --- /dev/null +++ b/wan_5b/modules/causal_model.py @@ -0,0 +1,1882 @@ +# Adopted from https://github.com/guandeh17/Self-Forcing +# SPDX-License-Identifier: Apache-2.0 +# # Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. + +from transformers.models.x_clip.modeling_x_clip import x_clip_loss +from wan_5b.modules.attention import attention +from wan_5b.modules.model import ( + WanRMSNorm, + rope_apply, + WanLayerNorm, + WanCrossAttention, + rope_params, + sinusoidal_embedding_1d, + WanCrossAttention, + flash_attention +) +from torch.nn.attention.flex_attention import create_block_mask, flex_attention +from diffusers.configuration_utils import ConfigMixin, register_to_config +from torch.nn.attention.flex_attention import BlockMask +from diffusers.models.modeling_utils import ModelMixin +import os +import torch.nn as nn +import torch +import math +import torch.distributed as dist + +# wan 5b model compilation for flexattention +flex_attention = torch.compile( + flex_attention, dynamic=False, mode="max-autotune-no-cudagraphs") + + +from utils.position_embedding_utils import ( + compute_temporal_freqs as _compute_temporal_freqs, + select_temporal_offset_for_sample, +) + + +# iter-21: cache freqs_i across causal_rope_apply calls within a chunk. +# All ~60 layer Q/K calls in one chunk share identical (f,h,w,start_frame, +# t_scale,temporal_offset_i,method,original_seq_len) but recompute the same +# concatenated freqs tensor each time. LRU keeps memory bounded. +# NOTE: this cache holds tensors across torch.compile step boundaries which +# is incompatible with cudagraphs (mode=reduce-overhead). If cudagraphs +# path is enabled in the future, this cache must be removed alongside +# refactoring of the KV cache scalar tensors (global_end_index, etc.). +_FREQS_I_CACHE: "dict[tuple, torch.Tensor]" = {} +_FREQS_I_CACHE_MAX = 16 +# iter-21 + iter-41: cache is on by default (iter-21 win). Set +# LLV2_FREQS_I_CACHE=0 to disable for future cudagraphs experiments (the +# cache holds tensors created inside torch.compile that get marked as +# cudagraph-pool memory; reading them on a later compile step crashes with +# "accessing tensor output of CUDAGraphs that has been overwritten"). +_FREQS_I_CACHE_ENABLED = os.environ.get("LLV2_FREQS_I_CACHE", "1") == "1" + +# iter-42: Triton fp32 RoPE kernel (utils/rope_triton.py). Default ON. +# Replaces the fp64 complex view_as_complex × complex_freqs × view_as_real +# chain with a single fused Triton kernel. Quality validated bit-exact at +# bf16 (unit test agent/rope_unit_test.py: max|Δ|=7.8e-3 = single bf16 ULP). +# Set LLV2_TRITON_ROPE=0 to revert to the fp64 path. +# When enabled, _FREQS_I_CACHE stores (freqs_i_complex, cos_f32, sin_f32); +# when disabled, stores (freqs_i_complex, None, None). +_TRITON_ROPE_ENABLED = os.environ.get("LLV2_TRITON_ROPE", "1") == "1" + +# Cudagraph experiment only. Default OFF because the out-of-place temp-KV +# construction removes mutated-input skips but is materially slower than the +# in-place temporary cache update path. +_CGRAPH_OUTPLACE_KV_ENABLED = os.environ.get("LLV2_CGRAPH_OUTPLACE_KV", "0") == "1" + +# iter-43/44: Triton fused adaLN-modulate kernel (utils/adaln_triton.py). +# Default ON after iter-44 added `@triton.autotune` over (num_warps, num_stages). +# iter-43 (no autotune) was FLAT vs iter-42 (median -1.0%, p90 +5.8%, total +# identical) — fixed config beat the eager median but jitter on tail. +# iter-44 (autotuned) is WIN: median -1.7%, p90 -1.6%, total -1.5%, FPS +1.5% +# vs iter-42, quality in run-to-run noise floor (mean|Δ|=0.68 vs noise=0.69). +# Unit test agent/adaln_unit_test.py: max|Δ|=3.1e-2 (1 bf16 ULP), mean=1.1e-3. +# Set LLV2_TRITON_ADALN=0 to fall back to eager nn.LayerNorm + Python modulate. +_TRITON_ADALN_ENABLED = os.environ.get("LLV2_TRITON_ADALN", "1") == "1" + +# iter-31: per-chunk Python-int metadata published by CausalWanModel.forward +# so attention forwards can read Python ints without `.item()` graph breaks. +# Single-thread inference assumption — overwritten before each model() call. +_CURRENT_GRID_META: "dict[str, int]" = {} + +# iter-35: removed (LOST). Consolidating duplicate .item() reads caused +# p90 latency to spike +10% — dynamo apparently traced more specialized +# paths when local vars were used in branches vs fresh .item() reads each +# time. Restored original .item() per-use pattern. + + +def causal_rope_apply(x, grid_sizes, freqs, start_frame=0, t_scale=1.0, + method="linear", original_seq_len=None, + temporal_offset=0.0): + n, c = x.size(2), x.size(3) // 2 + + # split freqs + freqs = freqs.split([c - 2 * (c // 3), c // 3, c // 3], dim=1) + + # loop over samples + output = [] + + # iter-47 (grad-safety fix): the Triton RoPE kernel (rope_apply_triton) is a + # raw @triton.jit op with NO autograd backward — its output is graph-detached + # (requires_grad=False). Running it under grad would silently sever gradients + # to q/k (and their LoRA). Mirror the adaLN gate (see `use_triton_adaln`): + # use Triton only when grad is OFF (inference / no_grad rollout steps); fall + # back to the differentiable fp64-complex path whenever grad is ON (training). + use_triton_rope = _TRITON_ROPE_ENABLED and not torch.is_grad_enabled() + + # iter-30: accept Python list/tuple to skip the .tolist() graph break. + # Callers that already have Python ints (sink_grid, local_grid, window_grid_sizes) + # now pass a plain list instead of `torch.tensor([[..]]).expand(...)`. + if isinstance(grid_sizes, (list, tuple)): + fwh_list = grid_sizes + else: + fwh_list = grid_sizes.tolist() + for i, (f, h, w) in enumerate(fwh_list): + seq_len = f * h * w + + # precompute multipliers — only needed for the fp64 complex path. + # iter-42: skip the bf16→fp64 cast + view_as_complex when the Triton + # kernel will be used (it consumes bf16 directly). + # iter-47: gate on use_triton_rope (not the raw flag) so the complex x_i + # IS precomputed whenever we fall back to the differentiable path (training). + if not use_triton_rope: + x_i = torch.view_as_complex(x[i, :seq_len].to(torch.float64).reshape( + seq_len, n, -1, 2)) + temporal_offset_i = select_temporal_offset_for_sample( + temporal_offset, i, f, start_frame=start_frame) + + # iter-21: cache freqs_i. iter-41: gate the cache behind + # LLV2_FREQS_I_CACHE=1 (default off). The cache stores tensors + # created inside torch.compile, which cudagraph allocator considers + # owned by the per-step memory pool — reading them on a later step + # races with the pool's reuse. Disabling the cache unblocks + # `mode=reduce-overhead` for cudagraphs; the recomputation cost is + # tiny (60 layer calls × per-chunk concat ≈ 0.5% wall) compared to + # the cudagraphs unlock potential. + if _FREQS_I_CACHE_ENABLED: + if torch.is_tensor(temporal_offset_i): + if temporal_offset_i.ndim == 0: + offset_key = float(temporal_offset_i.item()) + else: + offset_key = ("tensor", id(temporal_offset_i)) + else: + offset_key = float(temporal_offset_i) + cache_key = ( + f, h, w, start_frame, t_scale, method, + original_seq_len, offset_key, x.device.type, x.device.index, + use_triton_rope, # iter-47: separate cached repr for grad/no-grad + ) + cache_entry = _FREQS_I_CACHE.get(cache_key) + else: + cache_entry = None + cache_key = None + + if cache_entry is None: + temporal_freqs = _compute_temporal_freqs( + freqs[0], f, start_frame, t_scale, x.device, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset_i) + freqs_i_complex = torch.cat([ + temporal_freqs.view(f, 1, 1, -1).expand(f, h, w, -1), + freqs[1][:h].view(1, h, 1, -1).expand(f, h, w, -1), + freqs[2][:w].view(1, 1, w, -1).expand(f, h, w, -1), + ], dim=-1).reshape(seq_len, 1, -1) + if use_triton_rope: + # iter-42: store (cos, sin) fp32 derived once; freqs_i_complex + # itself only kept for the legacy fp64 path. + from utils.rope_triton import _split_complex_to_cos_sin + cos_f32, sin_f32 = _split_complex_to_cos_sin(freqs_i_complex) + cache_entry = (freqs_i_complex, cos_f32, sin_f32) + else: + cache_entry = (freqs_i_complex, None, None) + if _FREQS_I_CACHE_ENABLED: + if len(_FREQS_I_CACHE) >= _FREQS_I_CACHE_MAX: + _FREQS_I_CACHE.pop(next(iter(_FREQS_I_CACHE))) + _FREQS_I_CACHE[cache_key] = cache_entry + freqs_i, cos_f32, sin_f32 = cache_entry + + # apply rotary embedding + if use_triton_rope: + # iter-42: Triton fp32 kernel — replaces the fp64 complex128 path. + # iter-46: kernel takes full x[i] + seq_len and emits rotated-or- + # passthrough output in a single launch, eliminating the + # `.contiguous()` slice + outer `torch.cat`. Bit-exact preserved. + from utils.rope_triton import rope_apply_triton + x_i = rope_apply_triton(x[i], cos_f32, sin_f32, seq_len=seq_len) + else: + x_i = torch.view_as_real(x_i * freqs_i).flatten(2) + x_i = torch.cat([x_i, x[i, seq_len:]]) + + # append to collection + output.append(x_i) + return torch.stack(output).type_as(x) + + +class MultiShotT2VCrossAttention(WanCrossAttention): + + def forward(self, x, context, context_lens, is_teacher_forcing=False, crossattn_cache=None): + r""" + Args: + x(Tensor): Shape [B, L1, C] + context(Tensor): Shape [B * num_chunks, L2, C] + context_lens(Tensor): Shape [B] or [B * num_chunks] + crossattn_cache (List[dict], *optional*): Contains the cached key and value tensors for context embedding. + """ + # Original batch size (videos) + b_orig, L1, C = x.size() + n, d = self.num_heads, self.head_dim + + # Effective batch size for cross-attention (videos * chunks) + b_ctx = context.size(0) + assert b_ctx % b_orig == 0, f"context batch ({b_ctx}) must be a multiple of x batch ({b_orig})" + num_chunks = b_ctx // b_orig + + # Prepare context_lens for [B * num_chunks] if needed + if context_lens is not None and context_lens.numel() == b_orig: + context_lens = context_lens.repeat_interleave(num_chunks) + elif context_lens is not None: + assert context_lens.numel() == b_ctx, \ + f"context_lens must have length {b_orig} or {b_ctx}, got {context_lens.numel()}" + # Helper to run standard cross-attention on a given x_chunk of shape [B * num_chunks, L_chunk, C] + def _cross_attend(x_chunk): + b_eff, L_chunk, _ = x_chunk.size() + + # compute query, key, value + q = self.norm_q(self.q(x_chunk)).view(b_eff, -1, n, d) + + # iter-24: Bypass crossattn_cache. Cached K/V tensors escape the + # cudagraph memory pool across torch.compile step boundaries and + # block `mode=reduce-overhead`. Per-call recompute cost is tiny + # (~1.7us / call in NVFP4 × ~11.5k calls/prompt ≈ 19 ms total), + # for cudagraphs unlock of the 28% wall-time gap. + k = self.norm_k(self.k(context)).view(b_eff, -1, n, d) + v = self.v(context).view(b_eff, -1, n, d) + + # compute attention + x_attn = flash_attention(q, k, v, k_lens=context_lens) + + # output projection + x_attn = x_attn.flatten(2) + x_attn = self.o(x_attn) + return x_attn + + if not is_teacher_forcing: + # ------------------------------- + # Regular multi-shot: all tokens attend text, we just chunk along L1 + # x: [B, L1, C] -> [B * num_chunks, L1 / num_chunks, C] + # ------------------------------- + assert L1 % num_chunks == 0, \ + f"L1 ({L1}) must be divisible by num_chunks ({num_chunks})" + tokens_per_chunk = L1 // num_chunks + + x_chunked = x.view(b_orig, num_chunks, tokens_per_chunk, C) + x_chunked = x_chunked.reshape(b_ctx, tokens_per_chunk, C) + + x_attn = _cross_attend(x_chunked) # [B * num_chunks, tokens_per_chunk, C] + + # reshape back to [B, L1, C] + x_attn = x_attn.view(b_orig, num_chunks, tokens_per_chunk, C) + x_attn = x_attn.reshape(b_orig, L1, C) + return x_attn + + # ------------------------------- + # Teacher forcing: + # x is typically [B, 2 * L_tf, C], where the first half is clean and + # the second half is noisy. Apply multi-shot cross-attention to both + # halves. + # ------------------------------- + assert L1 % 2 == 0, f"In teacher-forcing mode, L1 ({L1}) should be even." + half = L1 // 2 + x_clean = x[:, :half, :] # [B, L_tf, C] + x_noisy = x[:, half:, :] # [B, L_tf, C] + + def _chunk_and_attend(x_part): + L_part = x_part.size(1) + assert L_part % num_chunks == 0, \ + f"Segment length ({L_part}) must be divisible by num_chunks ({num_chunks})" + tokens_per_chunk = L_part // num_chunks + + # [B, L_part, C] -> [B * num_chunks, L_part / num_chunks, C] + x_chunked = x_part.view(b_orig, num_chunks, tokens_per_chunk, C) + x_chunked = x_chunked.reshape(b_ctx, tokens_per_chunk, C) + + x_attn = _cross_attend(x_chunked) # [B * num_chunks, tokens_per_chunk, C] + x_attn = x_attn.view(b_orig, num_chunks, tokens_per_chunk, C) + x_attn = x_attn.reshape(b_orig, L_part, C) + return x_attn + + x_clean_attn = _chunk_and_attend(x_clean) + x_noisy_attn = _chunk_and_attend(x_noisy) + + # Reassemble the full sequence from cross-attended clean and noisy halves. + x_out = torch.cat([x_clean_attn, x_noisy_attn], dim=1) # [B, L1, C] + return x_out + + +class CausalWanSelfAttention(nn.Module): + + def __init__(self, + dim, + num_heads, + local_attn_size=-1, + sink_size=0, + qk_norm=True, + eps=1e-6): + assert dim % num_heads == 0 + super().__init__() + self.dim = dim + self.num_heads = num_heads + self.head_dim = dim // num_heads + self.local_attn_size = local_attn_size if local_attn_size != -1 else 24 + self.sink_size = sink_size + self.global_sink_size = 0 + self.qk_norm = qk_norm + self.eps = eps + self.max_attention_size = 24 * 880 if local_attn_size == -1 else local_attn_size * 880 + + # layers + self.q = nn.Linear(dim, dim) + self.k = nn.Linear(dim, dim) + self.v = nn.Linear(dim, dim) + self.o = nn.Linear(dim, dim) + self.norm_q = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + self.norm_k = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + + def forward( + self, + x, + seq_lens, + grid_sizes, + freqs, + block_mask, + kv_cache=None, + current_start=0, + cache_start=None, + t_scale=1.0, + use_relative_rope=False, + method="linear", + original_seq_len=None, + temporal_offset=0.0, + ): + r""" + Args: + x(Tensor): Shape [B, L, num_heads, C / num_heads] + seq_lens(Tensor): Shape [B] + grid_sizes(Tensor): Shape [B, 3], the second dimension contains (F, H, W) + freqs(Tensor): Rope freqs, shape [1024, C / num_heads / 2] + block_mask (BlockMask) + t_scale (float): Temporal RoPE interpolation scale. <1.0 compresses positions. + use_relative_rope (bool): If True, store raw K in cache and apply RoPE + with window-relative positions at attention time. + method (str): RoPE method. This release supports "linear". + original_seq_len (int): Unused by the release linear RoPE path. + temporal_offset (float): Multi-shot RoPE offset (shot_index * phi). + """ + b, s, n, d = *x.shape[:2], self.num_heads, self.head_dim + if cache_start is None: + cache_start = current_start + + # query, key, value function + def qkv_fn(x): + q = self.norm_q(self.q(x)).view(b, s, n, d) + k = self.norm_k(self.k(x)).view(b, s, n, d) + v = self.v(x).view(b, s, n, d) + return q, k, v + + q, k, v = qkv_fn(x) + + if kv_cache is None: + # Teacher-forcing training doubles sequence length with clean/noisy halves. + is_tf = (s == seq_lens[0].item() * 2) + if is_tf: + q_chunk = torch.chunk(q, 2, dim=1) + k_chunk = torch.chunk(k, 2, dim=1) + roped_query = [] + roped_key = [] + # rope should be same for clean and noisy parts + for ii in range(2): + rq = rope_apply(q_chunk[ii], grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + rk = rope_apply(k_chunk[ii], grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + roped_query.append(rq) + roped_key.append(rk) + + roped_query = torch.cat(roped_query, dim=1) + roped_key = torch.cat(roped_key, dim=1) + + padded_length = math.ceil(q.shape[1] / 128) * 128 - q.shape[1] + padded_roped_query = torch.cat( + [roped_query, + torch.zeros([q.shape[0], padded_length, q.shape[2], q.shape[3]], + device=q.device, dtype=v.dtype)], + dim=1 + ) + + padded_roped_key = torch.cat( + [roped_key, torch.zeros([k.shape[0], padded_length, k.shape[2], k.shape[3]], + device=k.device, dtype=v.dtype)], + dim=1 + ) + + padded_v = torch.cat( + [v, torch.zeros([v.shape[0], padded_length, v.shape[2], v.shape[3]], + device=v.device, dtype=v.dtype)], + dim=1 + ) + + x = flex_attention( + query=padded_roped_query.transpose(2, 1), + key=padded_roped_key.transpose(2, 1), + value=padded_v.transpose(2, 1), + block_mask=block_mask + ) + x = x[:, :, :(-padded_length)] if padded_length > 0 else x + x = x.transpose(2, 1) + + else: + roped_query = rope_apply(q, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + roped_key = rope_apply(k, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + + padded_length = math.ceil(q.shape[1] / 128) * 128 - q.shape[1] + padded_roped_query = torch.cat( + [roped_query, + torch.zeros([q.shape[0], padded_length, q.shape[2], q.shape[3]], + device=q.device, dtype=v.dtype)], + dim=1 + ) + + padded_roped_key = torch.cat( + [roped_key, torch.zeros([k.shape[0], padded_length, k.shape[2], k.shape[3]], + device=k.device, dtype=v.dtype)], + dim=1 + ) + + padded_v = torch.cat( + [v, torch.zeros([v.shape[0], padded_length, v.shape[2], v.shape[3]], + device=v.device, dtype=v.dtype)], + dim=1 + ) + + x = flex_attention( + query=padded_roped_query.transpose(2, 1), + key=padded_roped_key.transpose(2, 1), + value=padded_v.transpose(2, 1), + block_mask=block_mask + ) + x = x[:, :, :(-padded_length)] if padded_length > 0 else x + x = x.transpose(2, 1) + else: + # iter-31: read Python ints from module-level dict (set by + # CausalWanModel.forward) instead of `.item()` calls on + # grid_sizes, removing 4 graph breaks per attention forward. + if _CURRENT_GRID_META: + frame_seqlen = _CURRENT_GRID_META["frame_seqlen"] + num_new_frames = _CURRENT_GRID_META["num_new_frames"] + h = _CURRENT_GRID_META["h"] + w = _CURRENT_GRID_META["w"] + else: + frame_seqlen = math.prod(grid_sizes[0][1:]).item() + num_new_frames = grid_sizes[0][0].item() + h, w = grid_sizes[0][1].item(), grid_sizes[0][2].item() + num_new_tokens = q.shape[1] + current_end = current_start + num_new_tokens + # iter-30: build Python-int grid once; pass to all rope_apply calls + # below so they skip the .tolist() graph break. + b = q.shape[0] + grid_py = [(num_new_frames, h, w)] * b + + if not use_relative_rope: + current_start_frame = current_start // frame_seqlen + roped_query = causal_rope_apply( + q, grid_py, freqs, start_frame=current_start_frame, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + roped_key = causal_rope_apply( + k, grid_py, freqs, start_frame=current_start_frame, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset).type_as(v) + key_to_cache = roped_key + else: + key_to_cache = k + + sink_tokens = self.sink_size * frame_seqlen + global_sink_tokens = getattr(self, "global_sink_size", 0) * frame_seqlen + is_quantized_cache = kv_cache.get("quantized", False) + if is_quantized_cache: + kv_cache_size = kv_cache["max_blocks"] * kv_cache["block_token_size"] + else: + kv_cache_size = kv_cache["k"].shape[1] + + # ----- global + multi-shot pinned-sink support ----- + # Two protection mechanisms (independent, both optional): + # * global_sink_tokens: first N frames are permanently anchored + # (set via global_sink_size; never moves, always attended). + # * pinned region (pinned_start/pinned_len): multi-shot sink put + # on a scene cut. The pinned chunk lives at its original buffer + # position; rolling shifts non-pinned data around it. + # effective_sink = leading buffer prefix that rolling MUST keep: + # pinned right after global (pinned_start == global_sink_tokens) + # -> global_sink_tokens + pinned_len + # pinned elsewhere (floating) + # -> global_sink_tokens + # no pinned + # -> max(global_sink_tokens, sink_tokens) # legacy compat + # iter-39: read pinned state from _CURRENT_GRID_META (published + # once per chunk in CausalWanModel._forward_inference). Falls + # back to `.item()` if the dict was not initialized (e.g. unit + # test exercising the attention block directly). + if _CURRENT_GRID_META and "pinned_start" in _CURRENT_GRID_META: + pinned_start_val = _CURRENT_GRID_META["pinned_start"] + pinned_len_val = _CURRENT_GRID_META["pinned_len"] + else: + pinned_start_t = kv_cache.get("pinned_start", None) + pinned_len_val = 0 + if pinned_start_t is not None and hasattr(pinned_start_t, 'item'): + pinned_start_val = pinned_start_t.item() + pinned_len_val = kv_cache["pinned_len"].item() + else: + pinned_start_val = -1 + has_pinned = pinned_start_val >= 0 and pinned_len_val > 0 + if has_pinned and pinned_start_val == global_sink_tokens: + effective_sink = global_sink_tokens + pinned_len_val + elif has_pinned: + effective_sink = global_sink_tokens + else: + effective_sink = max(global_sink_tokens, sink_tokens) + + # iter-39: read cache indices from _CURRENT_GRID_META (published + # by CausalWanModel._forward_inference) to avoid 6+ `.item()` + # syncs per block forward. Falls back to .item() when the dict + # is not initialized (direct attention-block unit tests). + if _CURRENT_GRID_META and "global_end_index" in _CURRENT_GRID_META: + _cache_global_end = _CURRENT_GRID_META["global_end_index"] + _cache_local_end = _CURRENT_GRID_META["local_end_index"] + else: + _cache_global_end = kv_cache["global_end_index"].item() + _cache_local_end = kv_cache["local_end_index"].item() + + cache_update_info = None + if self.local_attn_size != -1 and (current_end > _cache_global_end) and ( + num_new_tokens + _cache_local_end > kv_cache_size): + num_evicted_tokens = num_new_tokens + _cache_local_end - kv_cache_size + num_rolled_tokens = _cache_local_end - num_evicted_tokens - effective_sink + + local_end_index = _cache_local_end + current_end - \ + _cache_global_end - num_evicted_tokens + local_start_index = local_end_index - num_new_tokens + + if is_quantized_cache: + from utils.quant import dequantize_kv_cache, k_smooth + + max_blks = int(kv_cache["max_blocks"]) + blk_sz = int(kv_cache["block_token_size"]) + cache_k = dequantize_kv_cache( + kv_cache["k"], max_blks, self.num_heads, blk_sz, v.dtype, v.device + ) + cache_v = dequantize_kv_cache( + kv_cache["v"], max_blks, self.num_heads, blk_sz, v.dtype, v.device + ) + new_k_for_cache = k_smooth(key_to_cache) + else: + cache_k = kv_cache["k"] + cache_v = kv_cache["v"] + new_k_for_cache = key_to_cache + + if _CGRAPH_OUTPLACE_KV_ENABLED: + # Cudagraph experiment: build the post-roll cache view + # out-of-place. Slice assignment here forces Inductor + # cudagraph partitions to mutate inputs. + temp_k = torch.cat([ + cache_k[:, :effective_sink], + cache_k[:, effective_sink + num_evicted_tokens: + effective_sink + num_evicted_tokens + num_rolled_tokens], + new_k_for_cache, + ], dim=1) + temp_v = torch.cat([ + cache_v[:, :effective_sink], + cache_v[:, effective_sink + num_evicted_tokens: + effective_sink + num_evicted_tokens + num_rolled_tokens], + v, + ], dim=1) + else: + temp_k = cache_k if is_quantized_cache else cache_k.clone() + temp_v = cache_v if is_quantized_cache else cache_v.clone() + + temp_k[:, effective_sink:effective_sink + num_rolled_tokens] = \ + temp_k[:, effective_sink + num_evicted_tokens:effective_sink + num_evicted_tokens + num_rolled_tokens].clone() + temp_v[:, effective_sink:effective_sink + num_rolled_tokens] = \ + temp_v[:, effective_sink + num_evicted_tokens:effective_sink + num_evicted_tokens + num_rolled_tokens].clone() + + temp_k[:, local_start_index:local_end_index] = new_k_for_cache + temp_v[:, local_start_index:local_end_index] = v + + # When pinned is "floating" (lives outside effective_sink), the + # rolling shifted non-pinned data left by num_evicted_tokens; + # the pinned anchor must follow that shift to keep tracking the + # same data. When pinned sits inside effective_sink (i.e. right + # after the global region), it is part of the protected prefix + # and rolling does not move it. + pinned_shift = num_evicted_tokens if (has_pinned and pinned_start_val >= effective_sink) else 0 + + cache_update_info = { + "action": "roll_and_insert", + "sink_tokens": effective_sink, + "num_rolled_tokens": num_rolled_tokens, + "num_evicted_tokens": num_evicted_tokens, + "local_start_index": local_start_index, + "local_end_index": local_end_index, + "new_k": key_to_cache, + "new_v": v, + "current_end": current_end, + "pinned_shift": pinned_shift, + } + + else: + # iter-39: reuse the dict-cached scalars from above. + local_end_index = _cache_local_end + current_end - _cache_global_end + local_start_index = local_end_index - num_new_tokens + + if is_quantized_cache: + from utils.quant import dequantize_kv_cache, k_smooth + + new_k_for_cache = k_smooth(key_to_cache) + if local_start_index == 0: + temp_k = new_k_for_cache + temp_v = v + else: + max_blks = int(kv_cache["max_blocks"]) + blk_sz = int(kv_cache["block_token_size"]) + cache_k = dequantize_kv_cache( + kv_cache["k"], max_blks, self.num_heads, blk_sz, v.dtype, v.device + ) + cache_v = dequantize_kv_cache( + kv_cache["v"], max_blks, self.num_heads, blk_sz, v.dtype, v.device + ) + if _CGRAPH_OUTPLACE_KV_ENABLED: + temp_k = torch.cat([cache_k[:, :local_start_index], new_k_for_cache], dim=1) + temp_v = torch.cat([cache_v[:, :local_start_index], v], dim=1) + else: + temp_k = cache_k + temp_v = cache_v + if not _CGRAPH_OUTPLACE_KV_ENABLED: + temp_k[:, local_start_index:local_end_index] = new_k_for_cache + temp_v[:, local_start_index:local_end_index] = v + else: + if _CGRAPH_OUTPLACE_KV_ENABLED: + temp_k = torch.cat([kv_cache["k"][:, :local_start_index], key_to_cache], dim=1) + temp_v = torch.cat([kv_cache["v"][:, :local_start_index], v], dim=1) + else: + temp_k = kv_cache["k"].clone() + temp_v = kv_cache["v"].clone() + temp_k[:, local_start_index:local_end_index] = key_to_cache + temp_v[:, local_start_index:local_end_index] = v + + cache_update_info = { + "action": "direct_insert", + "local_start_index": local_start_index, + "local_end_index": local_end_index, + "new_k": key_to_cache, + "new_v": v, + "current_end": current_end, + "pinned_shift": 0, + } + + window_start = max(0, local_end_index - self.max_attention_size) + + # Build the K/V actually attended over. + # Cases: + # (a) prepend_sink : effective_sink > 0 and out of window + # -> prepend [:effective_sink] (covers global + # and any pinned-merged-to-front) + # (b) prepend_pinned: a floating pinned region (pinned_start + # >= effective_sink) lives outside the window + # -> additionally prepend that pinned slice + # (c) otherwise : plain sliding window + # Note (a) and (b) are not mutually exclusive: when global is + # enabled AND there is a separate floating pinned region outside + # the window, both prefixes must be prepended. + prepend_sink = effective_sink > 0 and window_start > 0 + prepend_pinned = ( + has_pinned and pinned_start_val >= effective_sink + and pinned_start_val < window_start + ) + + if prepend_sink and prepend_pinned: + # [global+sink] + [pinned] + [local window] + extra = effective_sink + pinned_len_val + effective_local_size = self.max_attention_size - extra + local_window_start = max(effective_sink, local_end_index - effective_local_size) + window_k = torch.cat([ + temp_k[:, :effective_sink], + temp_k[:, pinned_start_val:pinned_start_val + pinned_len_val], + temp_k[:, local_window_start:local_end_index], + ], dim=1) + window_v = torch.cat([ + temp_v[:, :effective_sink], + temp_v[:, pinned_start_val:pinned_start_val + pinned_len_val], + temp_v[:, local_window_start:local_end_index], + ], dim=1) + elif prepend_sink: + effective_local_size = self.max_attention_size - effective_sink + local_window_start = max(effective_sink, local_end_index - effective_local_size) + window_k = torch.cat([temp_k[:, :effective_sink], temp_k[:, local_window_start:local_end_index]], dim=1) + window_v = torch.cat([temp_v[:, :effective_sink], temp_v[:, local_window_start:local_end_index]], dim=1) + elif prepend_pinned: + effective_local_size = self.max_attention_size - pinned_len_val + local_window_start = max(0, local_end_index - effective_local_size) + window_k = torch.cat( + [temp_k[:, pinned_start_val:pinned_start_val + pinned_len_val], + temp_k[:, local_window_start:local_end_index]], dim=1) + window_v = torch.cat( + [temp_v[:, pinned_start_val:pinned_start_val + pinned_len_val], + temp_v[:, local_window_start:local_end_index]], dim=1) + else: + window_k = temp_k[:, window_start:local_end_index] + window_v = temp_v[:, window_start:local_end_index] + + if use_relative_rope: + if prepend_sink: + # Sink and local window tokens get separate RoPE in a + # virtual contiguous layout: [sink_frames | local_frames]. + sink_frame_count = effective_sink // frame_seqlen + local_tokens = window_k.shape[1] - effective_sink + local_frame_count = local_tokens // frame_seqlen + combined_frames = sink_frame_count + local_frame_count + + # iter-30: pass Python list instead of expanded tensor; + # causal_rope_apply skips .tolist() graph break this way. + sink_grid = [(sink_frame_count, h, w)] * b + roped_sink_k = causal_rope_apply( + window_k[:, :effective_sink], sink_grid, freqs, + start_frame=0, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v) + + local_grid = [(local_frame_count, h, w)] * b + roped_local_k = causal_rope_apply( + window_k[:, effective_sink:], local_grid, freqs, + start_frame=sink_frame_count, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v) + + roped_window_k = torch.cat([roped_sink_k, roped_local_k], dim=1) + + q_start_frame = combined_frames - num_new_frames + roped_query = causal_rope_apply( + q, grid_py, freqs, + start_frame=q_start_frame, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v) + else: + window_tokens = window_k.shape[1] + window_frames = window_tokens // frame_seqlen + + # iter-30: Python list to skip .tolist() break. + window_grid_sizes = [(window_frames, h, w)] * b + + roped_window_k = causal_rope_apply( + window_k, window_grid_sizes, freqs, + start_frame=0, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v) + + q_start_frame = window_frames - num_new_frames + roped_query = causal_rope_apply( + q, grid_py, freqs, + start_frame=q_start_frame, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v) + + x = attention(roped_query, roped_window_k, window_v) + else: + x = attention(roped_query, window_k, window_v) + + # output + x = x.flatten(2) + x = self.o(x) + + # Return both output and cache update info + if kv_cache is not None: + return x, (current_end, local_end_index, cache_update_info) + else: + return x + + +class CausalWanAttentionBlock(nn.Module): + + def __init__(self, + dim, + ffn_dim, + num_heads, + local_attn_size=-1, + sink_size=0, + qk_norm=True, + cross_attn_norm=False, + eps=1e-6): + super().__init__() + self.dim = dim + self.ffn_dim = ffn_dim + self.num_heads = num_heads + self.local_attn_size = local_attn_size + self.qk_norm = qk_norm + self.cross_attn_norm = cross_attn_norm + self.eps = eps + + # layers + self.norm1 = WanLayerNorm(dim, eps) + self.self_attn = CausalWanSelfAttention(dim, num_heads, local_attn_size, sink_size, qk_norm, eps) + self.norm3 = WanLayerNorm( + dim, eps, + elementwise_affine=True) if cross_attn_norm else nn.Identity() + self.cross_attn = MultiShotT2VCrossAttention(dim, num_heads, (-1, -1), qk_norm, eps) + self.norm2 = WanLayerNorm(dim, eps) + self.ffn = nn.Sequential( + nn.Linear(dim, ffn_dim), nn.GELU(approximate='tanh'), + nn.Linear(ffn_dim, dim)) + + # modulation + self.modulation = nn.Parameter(torch.randn(1, 6, dim) / dim**0.5) + + def forward( + self, + x, + e, + seq_lens, + grid_sizes, + freqs, + context, + context_lens, + block_mask, + kv_cache=None, + crossattn_cache=None, + current_start=0, + cache_start=None, + t_scale=1.0, + use_relative_rope=False, + method="linear", + original_seq_len=None, + temporal_offset=0.0, + ): + r""" + Args: + x(Tensor): Shape [B, L, C] + e(Tensor): Shape [B, F, 6, C] + seq_lens(Tensor): Shape [B], length of each sequence in batch + grid_sizes(Tensor): Shape [B, 3], the second dimension contains (F, H, W) + freqs(Tensor): Rope freqs, shape [1024, C / num_heads / 2] + t_scale (float): Temporal RoPE interpolation scale. <1.0 compresses positions. + use_relative_rope (bool): If True, use window-relative RoPE positions in KV cache path. + method (str): RoPE method. This release supports "linear". + original_seq_len (int): Unused by the release linear RoPE path. + temporal_offset (float): Multi-shot RoPE offset (shot_index * phi). + """ + num_frames, frame_seqlen = e.shape[1], x.shape[1] // e.shape[1] + e = (self.modulation.unsqueeze(1) + e).chunk(6, dim=2) + use_triton_adaln = _TRITON_ADALN_ENABLED and not torch.is_grad_enabled() + + # self-attention + if use_triton_adaln: + # iter-43: fused LayerNorm + (1+e[1])*x + e[0] in one Triton kernel. + from utils.adaln_triton import adaln_modulate_triton + modulated_x = adaln_modulate_triton( + x, e[1], e[0], frame_seqlen, + eps=self.norm1.eps, add_one_to_scale=True, + ) + else: + modulated_x = (self.norm1(x).unflatten(dim=1, sizes=(num_frames, frame_seqlen)) * (1 + e[1]) + e[0]).flatten(1, 2) + self_attn_result = self.self_attn( + modulated_x, + seq_lens, grid_sizes, + freqs, block_mask, kv_cache, current_start, cache_start, t_scale=t_scale, + use_relative_rope=use_relative_rope, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset) + + if kv_cache is not None: + y, cache_update_info = self_attn_result + else: + y = self_attn_result + cache_update_info = None + x = x + (y.unflatten(dim=1, sizes=(num_frames, frame_seqlen)) * e[2]).flatten(1, 2) + + # cross-attention & ffn function + # iter-40: avoid `seq_lens[0].item()` graph break. seq_lens[0] equals + # num_new_frames * frame_seqlen at inference time, both of which are + # Python ints already in _CURRENT_GRID_META (published by iter-31). + # `is_tf` is True only in teacher-forcing training where x.shape[1] + # is the doubled (clean+noisy) sequence — never at inference. + if _CURRENT_GRID_META and "frame_seqlen" in _CURRENT_GRID_META: + seq_len_py = ( + _CURRENT_GRID_META["frame_seqlen"] + * _CURRENT_GRID_META["num_new_frames"] + ) + is_tf = (x.shape[1] == seq_len_py * 2) + else: + is_tf = (x.shape[1] == seq_lens[0].item() * 2) + def cross_attn_ffn(x, context, context_lens, e, crossattn_cache=None): + x = x + self.cross_attn(self.norm3(x), context, + context_lens, crossattn_cache=crossattn_cache, is_teacher_forcing=is_tf) + if use_triton_adaln: + # iter-43: fused LayerNorm + (1+e[4])*x + e[3] in one Triton kernel. + from utils.adaln_triton import adaln_modulate_triton + ffn_in = adaln_modulate_triton( + x, e[4], e[3], frame_seqlen, + eps=self.norm2.eps, add_one_to_scale=True, + ) + else: + ffn_in = (self.norm2(x).unflatten(dim=1, sizes=(num_frames, + frame_seqlen)) * (1 + e[4]) + e[3]).flatten(1, 2) + y = self.ffn(ffn_in) + x = x + (y.unflatten(dim=1, sizes=(num_frames, + frame_seqlen)) * e[5]).flatten(1, 2) + return x + + x = cross_attn_ffn(x, context, context_lens, e, crossattn_cache) + + if cache_update_info is not None: + # cache_update_info is already formatted as + # (current_end, local_end_index, cache_update_info). + return x, cache_update_info + else: + return x + + +class CausalHead(nn.Module): + + def __init__(self, dim, out_dim, patch_size, eps=1e-6): + super().__init__() + self.dim = dim + self.out_dim = out_dim + self.patch_size = patch_size + self.eps = eps + + # layers + out_dim = math.prod(patch_size) * out_dim + self.norm = WanLayerNorm(dim, eps) + self.head = nn.Linear(dim, out_dim) + + # modulation + self.modulation = nn.Parameter(torch.randn(1, 2, dim) / dim**0.5) + + def forward(self, x, e): + r""" + Args: + x(Tensor): Shape [B, L1, C] + e(Tensor): Shape [B, F, 1, C] + """ + num_frames, frame_seqlen = e.shape[1], x.shape[1] // e.shape[1] + e = (self.modulation.unsqueeze(1) + e).chunk(2, dim=2) + x = (self.head(self.norm(x).unflatten(dim=1, sizes=(num_frames, frame_seqlen)) * (1 + e[1]) + e[0])) + return x + + +class CausalWanModel(ModelMixin, ConfigMixin): + r""" + Wan diffusion backbone supporting both text-to-video and image-to-video with causal attention. + """ + + ignore_for_config = [ + 'patch_size', 'cross_attn_norm', 'qk_norm', 'text_dim', 'window_size' + ] + _no_split_modules = ['WanAttentionBlock'] + _supports_gradient_checkpointing = True + + @register_to_config + def __init__(self, + model_type='t2v', + patch_size=(1, 2, 2), + text_len=512, + in_dim=16, + dim=2048, + ffn_dim=8192, + freq_dim=256, + text_dim=4096, + out_dim=16, + num_heads=16, + num_layers=32, + local_attn_size=-1, + sink_size=0, + num_frame_per_block=1, + qk_norm=True, + cross_attn_norm=True, + eps=1e-6): + r""" + Initialize the diffusion model backbone. + + Args: + model_type (`str`, *optional*, defaults to 't2v'): + Model variant - 't2v' (text-to-video), 'i2v' (image-to-video), or 'ti2v' + patch_size (`tuple`, *optional*, defaults to (1, 2, 2)): + 3D patch dimensions for video embedding (t_patch, h_patch, w_patch) + text_len (`int`, *optional*, defaults to 512): + Fixed length for text embeddings + in_dim (`int`, *optional*, defaults to 16): + Input video channels (C_in) + dim (`int`, *optional*, defaults to 2048): + Hidden dimension of the transformer + ffn_dim (`int`, *optional*, defaults to 8192): + Intermediate dimension in feed-forward network + freq_dim (`int`, *optional*, defaults to 256): + Dimension for sinusoidal time embeddings + text_dim (`int`, *optional*, defaults to 4096): + Input dimension for text embeddings + out_dim (`int`, *optional*, defaults to 16): + Output video channels (C_out) + num_heads (`int`, *optional*, defaults to 16): + Number of attention heads + num_layers (`int`, *optional*, defaults to 32): + Number of transformer blocks + local_attn_size (`int`, *optional*, defaults to -1): + Window size for temporal local attention (-1 indicates global attention) + sink_size (`int`, *optional*, defaults to 0): + Size of the attention sink, we keep the first `sink_size` frames unchanged when rolling the KV cache + qk_norm (`bool`, *optional*, defaults to True): + Enable query/key normalization + cross_attn_norm (`bool`, *optional*, defaults to False): + Enable cross-attention normalization + eps (`float`, *optional*, defaults to 1e-6): + Epsilon value for normalization layers + """ + + super().__init__() + + assert model_type in ['t2v', 'i2v', 'ti2v'] + self.model_type = model_type + + self.patch_size = patch_size + self.text_len = text_len + self.in_dim = in_dim + self.dim = dim + self.ffn_dim = ffn_dim + self.freq_dim = freq_dim + self.text_dim = text_dim + self.out_dim = out_dim + self.num_heads = num_heads + self.num_layers = num_layers + self.local_attn_size = local_attn_size + self.sink_size = sink_size + self.qk_norm = qk_norm + self.cross_attn_norm = cross_attn_norm + self.eps = eps + + # embeddings + self.patch_embedding = nn.Conv3d( + in_dim, dim, kernel_size=patch_size, stride=patch_size) + self.text_embedding = nn.Sequential( + nn.Linear(text_dim, dim), nn.GELU(approximate='tanh'), + nn.Linear(dim, dim)) + + self.time_embedding = nn.Sequential( + nn.Linear(freq_dim, dim), nn.SiLU(), nn.Linear(dim, dim)) + self.time_projection = nn.Sequential( + nn.SiLU(), nn.Linear(dim, dim * 6)) + + # blocks + self.blocks = nn.ModuleList([ + CausalWanAttentionBlock(dim, ffn_dim, num_heads, + local_attn_size, sink_size, qk_norm, cross_attn_norm, eps) + for _ in range(num_layers) + ]) + + # head + self.head = CausalHead(dim, out_dim, patch_size, eps) + + # buffers (don't use register_buffer otherwise dtype will be changed in to()) + assert (dim % num_heads) == 0 and (dim // num_heads) % 2 == 0 + d = dim // num_heads + self.freqs = torch.cat([ + rope_params(1024, d - 4 * (d // 6)), + rope_params(1024, 2 * (d // 6)), + rope_params(1024, 2 * (d // 6)) + ], + dim=1) + + # initialize weights + self.init_weights() + + self.gradient_checkpointing = False + + self.block_mask = None + self._block_mask_batch_size = 0 + + self.num_frame_per_block = num_frame_per_block + self.independent_first_frame = False + self.t_scale = 1.0 + self.use_relative_rope = False + self.rope_method = "linear" + self.original_seq_len = None + self.rope_temporal_offset = 0.0 + self.kv_quant_config = None + + def _set_gradient_checkpointing(self, module, value=False): + self.gradient_checkpointing = value + + @staticmethod + def _prepare_blockwise_causal_attn_mask_i2v( + device: torch.device | str, num_frames: int = 31, + frame_seqlen: int = 880, num_frame_per_block=3, + batch_size=None, + ) -> BlockMask: + + """ + we will divide the token sequence into the following format + [1 latent frame] [N latent frame] ... [N latent frame] + The first frame is separated out to support I2V generation + We use flexattention to construct the attention mask + """ + total_length = num_frames * frame_seqlen + + # we do right padding to get to a multiple of 128 + padded_length = math.ceil(total_length / 128) * 128 - total_length + + ends = torch.zeros(total_length + padded_length, + device=device, dtype=torch.long) + + # special handling for the first frame + ends[:frame_seqlen] = frame_seqlen + + # Block-wise causal mask will attend to all elements that are before the end of the current chunk + frame_indices = torch.arange( + start=frame_seqlen, + end=total_length, + step=frame_seqlen * num_frame_per_block, + device=device + ) + + for idx, tmp in enumerate(frame_indices): + ends[tmp:tmp + frame_seqlen * num_frame_per_block] = tmp + \ + frame_seqlen * num_frame_per_block + + def attention_mask(b, h, q_idx, kv_idx): + is_real_q = q_idx < total_length + is_real_k = kv_idx < total_length + return (q_idx == kv_idx) | (is_real_q & is_real_k & (kv_idx < ends[q_idx])) + + block_mask = create_block_mask(attention_mask, B=batch_size, H=None, Q_LEN=total_length + padded_length, + KV_LEN=total_length + padded_length, _compile=False, device=device) + return block_mask + + @staticmethod + def _prepare_blockwise_causal_attn_mask( + device: torch.device | str, num_frames: int = 31, + frame_seqlen: int = 880, num_frame_per_block=1, + batch_size=None, + ) -> BlockMask: + """ + Block-wise causal mask. The mask is defined only by the AR chunk size: + a token can attend to all tokens before the end of its current + num_frame_per_block chunk. + """ + print(f"num_frame_per_block: {num_frame_per_block}") + total_length = num_frames * frame_seqlen + padded_length = math.ceil(total_length / 128) * 128 - total_length + + block_size = frame_seqlen * num_frame_per_block + + def attention_mask(b, h, q_idx, kv_idx): + # Apply only to real tokens in [0, total_length); padding keeps only + # self-loops. + is_real_q = q_idx < total_length + is_real_k = kv_idx < total_length + + # End position of the block containing the current token. + current_block_end = ((q_idx // block_size) + 1) * block_size + + clean_mask = is_real_q & is_real_k & (kv_idx < current_block_end) + eye_mask = q_idx == kv_idx + return eye_mask | clean_mask + + block_mask = create_block_mask( + attention_mask, + B=batch_size, + H=None, + Q_LEN=total_length + padded_length, + KV_LEN=total_length + padded_length, + _compile=True, + device=device, + ) + + import torch.distributed as dist + if not dist.is_initialized() or dist.get_rank() == 0: + print( + f" cache a block wise causal mask with block size of {num_frame_per_block} frames" + ) + print(block_mask) + + return block_mask + + @staticmethod + def _prepare_teacher_forcing_mask( + device: torch.device | str, + num_frames: int = 31, + frame_seqlen: int = 880, + num_frame_per_block: int = 1, + batch_size: int | None = None, + ): + total_length = num_frames * frame_seqlen * 2 + padded_length = math.ceil(total_length / 128) * 128 - total_length + + clean_ends = num_frames * frame_seqlen + attention_block_size = frame_seqlen * num_frame_per_block + + # Use pure mathematical coordinates; do not introduce external tensor + # lookup tables here. + def attention_mask(b, h, q_idx, kv_idx): + is_real_q = q_idx < total_length + is_real_k = kv_idx < total_length + + # ========================================== + # 1. Clean-frame mask. + # ========================================== + is_clean_q = q_idx < clean_ends + + # End position of the block containing the current token. + clean_block_idx = q_idx // attention_block_size + current_clean_block_end = (clean_block_idx + 1) * attention_block_size + + clean_mask = ( + is_clean_q + & (kv_idx < current_clean_block_end) + ) + + # ========================================== + # 2. Noisy-frame mask. + # ========================================== + is_noisy_q = q_idx >= clean_ends + + noisy_rel_idx = q_idx - clean_ends + block_index = noisy_rel_idx // attention_block_size + + # C1: noisy tokens in the same block. + noisy_block_start = clean_ends + (block_index * attention_block_size) + noisy_block_end = noisy_block_start + attention_block_size + C1 = (kv_idx >= noisy_block_start) & (kv_idx < noisy_block_end) + + # C2: clean context tokens from previous blocks. + context_end_for_noisy = block_index * attention_block_size + + C2 = kv_idx < context_end_for_noisy + noise_mask = is_noisy_q & (C1 | C2) + + # ========================================== + # 3. Final merge. + # ========================================== + eye_mask = q_idx == kv_idx + return eye_mask | (is_real_q & is_real_k & (clean_mask | noise_mask)) + + # _compile=True is required here. Triton compiles the mathematical + # formula above directly into a memory-efficient block-sparse matrix. + block_mask = create_block_mask( + attention_mask, + B=batch_size, + H=None, + Q_LEN=total_length + padded_length, + KV_LEN=total_length + padded_length, + _compile=True, + device=device, + ) + + import torch.distributed as dist + if not dist.is_initialized() or dist.get_rank() == 0: + print(block_mask) + + return block_mask + + @staticmethod + def _prepare_teacher_forcing_mask_natural( + device: torch.device | str, + num_frames: int, + frame_seqlen: int, + num_frame_per_block: int = 1, + sp_size: int = 1, + batch_size: int | None = None, + ): + """Teacher-Forcing attention mask for the *natural* interleaved layout + produced directly by `all_to_all(scatter=head, gather=seq)`: + + [r0_clean, r0_noisy, r1_clean, r1_noisy, ..., r_{sp-1}_clean, r_{sp-1}_noisy] + + Semantically equivalent to :func:`_prepare_teacher_forcing_mask` (which + assumes the [all_clean; all_noisy] layout), but the mask decodes + ``is_noisy`` and ``global_frame`` directly from the token index, so + :func:`distributed_flex_attention` no longer has to reshape/permute + tokens after all_to_all. + """ + assert num_frames % sp_size == 0, ( + f"num_frames ({num_frames}) must be divisible by sp_size ({sp_size}) " + f"for natural TF layout" + ) + + F_local = num_frames // sp_size + clean_half = F_local * frame_seqlen # per-rank, clean side + per_rank_len = 2 * clean_half # per-rank, clean + noisy + total_length = num_frames * frame_seqlen * 2 + padded_length = math.ceil(total_length / 128) * 128 - total_length + + def attention_mask(b, h, q_idx, kv_idx): + is_real_q = q_idx < total_length + is_real_k = kv_idx < total_length + + # ---- decode q ---- + r_q = q_idx // per_rank_len + in_rank_q = q_idx % per_rank_len + is_noisy_q = in_rank_q >= clean_half + side_q = in_rank_q % clean_half # offset within clean/noisy half + global_f_q = r_q * F_local + side_q // frame_seqlen + block_q = global_f_q // num_frame_per_block + + # ---- decode k ---- + r_k = kv_idx // per_rank_len + in_rank_k = kv_idx % per_rank_len + is_noisy_k = in_rank_k >= clean_half + side_k = in_rank_k % clean_half + global_f_k = r_k * F_local + side_k // frame_seqlen + block_k = global_f_k // num_frame_per_block + + # 1. clean_q -> clean_k: blockwise causal. + clean2clean = ( + (~is_noisy_q) & (~is_noisy_k) + & (block_k <= block_q) + ) + + # 2. noisy_q -> clean_k: strictly earlier blocks. + noisy2clean = ( + is_noisy_q & (~is_noisy_k) + & (block_k < block_q) + ) + + # 3. noisy_q -> noisy_k: only tokens within the same block. + noisy2noisy = ( + is_noisy_q & is_noisy_k + & (block_k == block_q) + ) + + eye_mask = q_idx == kv_idx + return eye_mask | ( + is_real_q & is_real_k + & (clean2clean | noisy2clean | noisy2noisy) + ) + + block_mask = create_block_mask( + attention_mask, + B=batch_size, + H=None, + Q_LEN=total_length + padded_length, + KV_LEN=total_length + padded_length, + _compile=True, + device=device, + ) + + import torch.distributed as dist + if not dist.is_initialized() or dist.get_rank() == 0: + print( + f"[TF mask natural] sp_size={sp_size} F_local={F_local} " + f"clean_half={clean_half} per_rank_len={per_rank_len} " + f"total_length={total_length} " + f"num_frame_per_block={num_frame_per_block}" + ) + print(block_mask) + + return block_mask + + def _apply_cache_updates(self, kv_cache, cache_update_infos): + """ + Applies cache updates collected from multiple blocks. + Args: + kv_cache: List of cache dictionaries for each block + cache_update_infos: List of (block_index, cache_update_info) tuples + """ + for block_index, (current_end, local_end_index, update_info) in cache_update_infos: + if update_info is not None: + cache = kv_cache[block_index] + is_quantized = cache.get("quantized", False) + + if update_info["action"] == "roll_and_insert": + # Apply the rolling update. + sink_tokens = update_info["sink_tokens"] + num_rolled_tokens = update_info["num_rolled_tokens"] + num_evicted_tokens = update_info["num_evicted_tokens"] + local_start_index = update_info["local_start_index"] + local_end_index = update_info["local_end_index"] + new_k = update_info["new_k"] + new_v = update_info["new_v"] + + if is_quantized: + from utils.quant import copy_quantized_into, quantize_to_fp4 + + blk_sz = int(cache["block_token_size"]) + sink_blks = sink_tokens // blk_sz + evict_blks = num_evicted_tokens // blk_sz + roll_blks = num_rolled_tokens // blk_sz + + # iter-26: in-place copy into pre-allocated cache + # slots instead of replacing the QuantizedTensor + # reference. Required to unblock cudagraphs (the + # fresh QT returned by quantize_to_fp4 lives in + # the cudagraph memory pool; copying its data into + # the persistent slot buffer breaks that escape). + for i in range(roll_blks): + src = sink_blks + evict_blks + i + dst = sink_blks + i + copy_quantized_into(cache["k"][dst], cache["k"][src]) + copy_quantized_into(cache["v"][dst], cache["v"][src]) + + start_blk = local_start_index // blk_sz + n_insert_blks = (local_end_index - local_start_index) // blk_sz + head_dim = new_k.shape[-1] + for bi in range(n_insert_blks): + blk_idx = start_blk + bi + ts = bi * blk_sz + te = ts + blk_sz + k_block = new_k[0, ts:te, :, :].reshape(-1, head_dim).contiguous() + v_block = new_v[0, ts:te, :, :].reshape(-1, head_dim).contiguous() + copy_quantized_into( + cache["k"][blk_idx], + quantize_to_fp4(k_block, self.kv_quant_config), + ) + copy_quantized_into( + cache["v"][blk_idx], + quantize_to_fp4(v_block, self.kv_quant_config), + ) + else: + # Roll cached tokens. + cache["k"][:, sink_tokens:sink_tokens + num_rolled_tokens] = \ + cache["k"][:, sink_tokens + num_evicted_tokens:sink_tokens + num_evicted_tokens + num_rolled_tokens].clone() + cache["v"][:, sink_tokens:sink_tokens + num_rolled_tokens] = \ + cache["v"][:, sink_tokens + num_evicted_tokens:sink_tokens + num_evicted_tokens + num_rolled_tokens].clone() + + # Insert the new key/value tensors. + cache["k"][:, local_start_index:local_end_index] = new_k + cache["v"][:, local_start_index:local_end_index] = new_v + + # If a pinned multi-shot sink lives outside position 0, + # the rolling shifted everything left by num_evicted_tokens; + # pinned_start must follow so it tracks the same data. + pinned_shift = update_info.get("pinned_shift", 0) + if pinned_shift > 0 and "pinned_start" in cache: + cache["pinned_start"].sub_(pinned_shift) + + elif update_info["action"] == "direct_insert": + # Insert directly. + local_start_index = update_info["local_start_index"] + local_end_index = update_info["local_end_index"] + new_k = update_info["new_k"] + new_v = update_info["new_v"] + if is_quantized: + from utils.quant import copy_quantized_into, quantize_to_fp4 + + blk_sz = int(cache["block_token_size"]) + start_blk = local_start_index // blk_sz + n_insert_blks = (local_end_index - local_start_index) // blk_sz + head_dim = new_k.shape[-1] + # iter-26: in-place copy (see note above). + for bi in range(n_insert_blks): + blk_idx = start_blk + bi + ts = bi * blk_sz + te = ts + blk_sz + k_block = new_k[0, ts:te, :, :].reshape(-1, head_dim).contiguous() + v_block = new_v[0, ts:te, :, :].reshape(-1, head_dim).contiguous() + copy_quantized_into( + cache["k"][blk_idx], + quantize_to_fp4(k_block, self.kv_quant_config), + ) + copy_quantized_into( + cache["v"][blk_idx], + quantize_to_fp4(v_block, self.kv_quant_config), + ) + else: + # Insert the new key/value tensors. + cache["k"][:, local_start_index:local_end_index] = new_k + cache["v"][:, local_start_index:local_end_index] = new_v + + # Update cache indices. + kv_cache[block_index]["global_end_index"].fill_(current_end) + kv_cache[block_index]["local_end_index"].fill_(local_end_index) + + def _forward_inference( + self, + x, + t, + context, + seq_len, + clip_fea=None, + y=None, + kv_cache: dict = None, + crossattn_cache: dict = None, + current_start: int = 0, + cache_start: int = 0, + defer_cache_updates: bool = False, + ): + r""" + Run the diffusion model with kv caching. + See Algorithm 2 of CausVid paper https://arxiv.org/abs/2412.07772 for details. + This function will be run for num_frame times. + Process the latent frames one by one (880 tokens each) + + Args: + x (List[Tensor]): + List of input video tensors, each with shape [C_in, F, H, W] + t (Tensor): + Diffusion timesteps tensor of shape [B, F] + context (List[Tensor]): + List of text embeddings each with shape [L, C] + seq_len (`int`): + Maximum sequence length for positional encoding + clip_fea (Tensor, *optional*): + CLIP image features for image-to-video mode + y (List[Tensor], *optional*): + Conditional video inputs for image-to-video mode, same shape as x + + Returns: + List[Tensor]: + List of denoised video tensors with original input shapes [C_out, F, H / 8, W / 8] + """ + + if self.model_type == 'i2v': + assert clip_fea is not None and y is not None + # params + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + # embeddings + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + # iter-31: publish chunk metadata as Python ints to module-level dict + # so deep attention forwards can avoid `.item()` graph breaks. + first_shape = tuple(x[0].shape[2:]) + _CURRENT_GRID_META["frame_seqlen"] = int(first_shape[1] * first_shape[2]) + _CURRENT_GRID_META["num_new_frames"] = int(first_shape[0]) + _CURRENT_GRID_META["h"] = int(first_shape[1]) + _CURRENT_GRID_META["w"] = int(first_shape[2]) + # iter-39 v2: kv_cache scalars (global_end_index, local_end_index, + # pinned_start, pinned_len) are published into _CURRENT_GRID_META by + # the eager `_call_model` wrapper (utils/wan_5b_wrapper.py) BEFORE + # this compiled forward runs. Reading them here via `.item()` would + # trigger graph breaks; the wrapper does it in eager Python instead. + grid_sizes = torch.stack( + [torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + x = torch.cat(x) + + # time embeddings + if t.dim() == 1: + raise NotImplementedError(f"t.shape should be [B, F], but got {t.shape}") + + bt = t.size(0) + t_len = t.size(1) + t = t.flatten() + e = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, + t).unflatten(0, (bt, t_len)).type_as(x)) + e0 = self.time_projection(e).unflatten(2, (6, self.dim)) # B, F, 6, C + + # context + context_lens = None + context = self.text_embedding( + torch.stack([ + torch.cat( + [u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + + # arguments + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens, + block_mask=self.block_mask, + t_scale=self.t_scale, + use_relative_rope=self.use_relative_rope, + method=self.rope_method, + original_seq_len=self.original_seq_len, + temporal_offset=self.rope_temporal_offset, + ) + + def create_custom_forward(module): + def custom_forward(*inputs, **kwargs): + return module(*inputs, **kwargs) + return custom_forward + + cache_update_info = None + cache_update_infos = [] # Collect cache updates from every block. + for block_index, block in enumerate(self.blocks): + if torch.is_grad_enabled() and self.gradient_checkpointing: + kwargs.update( + { + "kv_cache": kv_cache[block_index], + "current_start": current_start, + "cache_start": cache_start + } + ) + result = torch.utils.checkpoint.checkpoint( + create_custom_forward(block), + x, **kwargs, + use_reentrant=False, + ) + # Handle the result + if kv_cache is not None and isinstance(result, tuple): + x, block_cache_update_info = result + cache_update_infos.append((block_index, block_cache_update_info)) + # Keep only basic metadata for later blocks, without the + # concrete cache-update payload. + cache_update_info = block_cache_update_info[:2] # (current_end, local_end_index) + else: + x = result + else: + kwargs.update( + { + "kv_cache": kv_cache[block_index], + "crossattn_cache": crossattn_cache[block_index], + "current_start": current_start, + "cache_start": cache_start + } + ) + result = block(x, **kwargs) + # Handle the result + if kv_cache is not None and isinstance(result, tuple): + x, block_cache_update_info = result + cache_update_infos.append((block_index, block_cache_update_info)) + # Keep only basic metadata for later blocks, without the + # concrete cache-update payload. + cache_update_info = block_cache_update_info[:2] # (current_end, local_end_index) + else: + x = result + + # Apply all cache updates after every block has run. For cudagraphs + # experiments this can be deferred to the eager wrapper so cache + # mutation does not happen inside the compiled forward. + if kv_cache is not None and cache_update_infos and not defer_cache_updates: + self._apply_cache_updates(kv_cache, cache_update_infos) + + # head + x = self.head(x, e.unsqueeze(2)) + # unpatchify + x = self.unpatchify(x, grid_sizes) + output = torch.stack(x) + if kv_cache is not None and defer_cache_updates: + return output, cache_update_infos + return output + + def _forward_train( + self, + x, + t, + context, + seq_len, + clean_x=None, + aug_t=None, + clip_fea=None, + y=None, + ): + r""" + Forward pass through the diffusion model + + Args: + x (List[Tensor]): + List of input video tensors, each with shape [C_in, F, H, W] + t (Tensor): + Diffusion timesteps tensor of shape [B] + context (List[Tensor]): + List of text embeddings each with shape [L, C] + seq_len (`int`): + Maximum sequence length for positional encoding + clip_fea (Tensor, *optional*): + CLIP image features for image-to-video mode + y (List[Tensor], *optional*): + Conditional video inputs for image-to-video mode, same shape as x + + Returns: + List[Tensor]: + List of denoised video tensors with original input shapes [C_out, F, H / 8, W / 8] + """ + if self.model_type == 'i2v': + assert clip_fea is not None and y is not None + # params + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + + # Construct blockwise causal attn mask + # Recreate mask when batch size changes to avoid Triton broadcasting bug + current_batch_size = x.shape[0] + if self.block_mask is None or self._block_mask_batch_size != current_batch_size: + self._block_mask_batch_size = current_batch_size + if clean_x is not None: + if self.independent_first_frame: + raise NotImplementedError() + else: + self.block_mask = self._prepare_teacher_forcing_mask( + device, num_frames=x.shape[2], + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + batch_size=current_batch_size, + ) + else: + if self.independent_first_frame: + self.block_mask = self._prepare_blockwise_causal_attn_mask_i2v( + device, num_frames=x.shape[2], + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + batch_size=current_batch_size, + ) + else: + self.block_mask = self._prepare_blockwise_causal_attn_mask( + device, num_frames=x.shape[2], + frame_seqlen=x.shape[-2] * x.shape[-1] // (self.patch_size[1] * self.patch_size[2]), + num_frame_per_block=self.num_frame_per_block, + batch_size=current_batch_size, + ) + + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + # embeddings + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + + grid_sizes = torch.stack( + [torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + max_len = int(seq_lens.max().item()) + assert max_len > 0, "Token sequence length is zero after patch embedding" + # Pad all samples to the batch max length instead of the first sample length + x = torch.cat([ + torch.cat([u, u.new_zeros(1, max_len - u.size(1), u.size(2))], dim=1) + for u in x + ]) + + # time embeddings + if t.dim() == 1: + raise NotImplementedError(f"t.shape should be [B, F], but got {t.shape}") + bt = t.size(0) + t_len = t.size(1) + t_ori_shape = t.shape + t = t.flatten() + e = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, t).unflatten(0, (bt, t_len)).type_as(x)) + e0 = self.time_projection(e).unflatten(2, (6, self.dim)) # B, F, 6, C + + # context + context_lens = None + context = self.text_embedding( + torch.stack([ + torch.cat( + [u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + + if clean_x is not None: + clean_x = [self.patch_embedding(u.unsqueeze(0)) for u in clean_x] + clean_x = [u.flatten(2).transpose(1, 2) for u in clean_x] + + seq_lens_clean = torch.tensor([u.size(1) for u in clean_x], dtype=torch.long) + clean_x = torch.cat([ + torch.cat([u, u.new_zeros(1, seq_lens_clean[0] - u.size(1), u.size(2))], dim=1) for u in clean_x + ]) + + x = torch.cat([clean_x, x], dim=1) + if aug_t is None: + aug_t = torch.zeros(t_ori_shape, device=t.device, dtype=t.dtype) + bt_clean = aug_t.size(0) + t_clean_len = aug_t.size(1) + aug_t = aug_t.flatten() + e_clean = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, aug_t).unflatten(0, (bt_clean, t_clean_len)).type_as(x)) + e0_clean = self.time_projection(e_clean).unflatten(2, (6, self.dim)) + e0 = torch.cat([e0_clean, e0], dim=1) + + # arguments + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens, + block_mask=self.block_mask, + t_scale=self.t_scale, + method=self.rope_method, + original_seq_len=self.original_seq_len, + temporal_offset=self.rope_temporal_offset, + ) + + def create_custom_forward(module): + def custom_forward(*inputs, **kwargs): + return module(*inputs, **kwargs) + return custom_forward + + for block in self.blocks: + if torch.is_grad_enabled() and self.gradient_checkpointing: + x = torch.utils.checkpoint.checkpoint( + create_custom_forward(block), + x, **kwargs, + use_reentrant=False, + ) + else: + x = block(x, **kwargs) + + if clean_x is not None: + x = x[:, x.shape[1] // 2:] + + # head + x = self.head(x, e.unsqueeze(2)) + + # unpatchify + x = self.unpatchify(x, grid_sizes) + return torch.stack(x) + + def forward( + self, + *args, + **kwargs + ): + if kwargs.get('kv_cache', None) is not None: + return self._forward_inference(*args, **kwargs) + else: + return self._forward_train(*args, **kwargs) + + def unpatchify(self, x, grid_sizes): + r""" + Reconstruct video tensors from patch embeddings. + + Args: + x (List[Tensor]): + List of patchified features, each with shape [L, C_out * prod(patch_size)] + grid_sizes (Tensor): + Original spatial-temporal grid dimensions before patching, + shape [B, 3] (3 dimensions correspond to F_patches, H_patches, W_patches) + + Returns: + List[Tensor]: + Reconstructed video tensors with shape [C_out, F, H / 8, W / 8] + """ + + c = self.out_dim + out = [] + for u, v in zip(x, grid_sizes.tolist()): + u = u[:math.prod(v)].view(*v, *self.patch_size, c) + u = torch.einsum('fhwpqrc->cfphqwr', u) + u = u.reshape(c, *[i * j for i, j in zip(v, self.patch_size)]) + out.append(u) + return out + + def init_weights(self): + r""" + Initialize model parameters using Xavier initialization. + """ + + # basic init + for m in self.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + if m.bias is not None: + nn.init.zeros_(m.bias) + + # init embeddings + nn.init.xavier_uniform_(self.patch_embedding.weight.flatten(1)) + for m in self.text_embedding.modules(): + if isinstance(m, nn.Linear): + nn.init.normal_(m.weight, std=.02) + for m in self.time_embedding.modules(): + if isinstance(m, nn.Linear): + nn.init.normal_(m.weight, std=.02) + + # init output layer + nn.init.zeros_(self.head.head.weight) diff --git a/wan_5b/modules/causal_model_sp_ulysses.py b/wan_5b/modules/causal_model_sp_ulysses.py new file mode 100644 index 0000000..7d98bb9 --- /dev/null +++ b/wan_5b/modules/causal_model_sp_ulysses.py @@ -0,0 +1,601 @@ +# Copyright 2024-2025 LongLive Authors. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +""" +Causal Wan2.2-TI2V-5B model with Ulysses-style sequence parallelism. + +This inference-only variant mirrors the regular CausalWanModel parameter layout +so existing generator checkpoints can be loaded into ``model.*`` keys. +""" + +import math +import os + +import torch +import torch.nn as nn +import torch.nn.functional as F +from diffusers.configuration_utils import ConfigMixin, register_to_config +from diffusers.models.modeling_utils import ModelMixin + +from wan_5b.modules.attention import attention +from wan_5b.modules.model import ( + WanRMSNorm, + WanLayerNorm, + rope_apply, + rope_params, + sinusoidal_embedding_1d, +) +from wan_5b.modules.causal_model import causal_rope_apply, MultiShotT2VCrossAttention +from wan_5b.distributed.sp_ulysses_inference import ( + get_sp_rank, + get_sp_world_size, + is_sp_enabled, + sp_all_gather, + sp_scatter, + ulysses_head_to_seq, + ulysses_seq_to_head, +) + + +QK_QUANT_SIM = os.environ.get("QK_QUANT_SIM", "0") == "1" +QK_QUANT_RATIO = float(os.environ.get("QK_QUANT_RATIO", "0.28125")) + + +try: + import torch.cuda.nvtx as nvtx + NVTX_ENABLED = True +except Exception: + nvtx = None + NVTX_ENABLED = False + + +class NVTXRange: + def __init__(self, name: str): + self.name = name + + def __enter__(self): + if NVTX_ENABLED: + nvtx.range_push(self.name) + + def __exit__(self, exc_type, exc, tb): + if NVTX_ENABLED: + nvtx.range_pop() + + +def _get_d_quant(head_dim: int, ratio: float = QK_QUANT_RATIO) -> int: + d_quant = max(8, round(head_dim * ratio)) + return ((d_quant + 7) // 8) * 8 + + +def _compute_ulysses_frame_info(num_frames, local_seq_len, sp_world_size, sp_rank): + if num_frames == 1: + return 1, local_seq_len, 0 + assert num_frames % sp_world_size == 0, ( + f"Ulysses SP requires num_frames ({num_frames}) divisible by " + f"world_size ({sp_world_size})." + ) + local_frames = num_frames // sp_world_size + frame_seqlen = local_seq_len // local_frames + frame_offset = sp_rank * local_frames + return local_frames, frame_seqlen, frame_offset + + +class UlyssesCausalWanSelfAttention(nn.Module): + """Causal self-attention with Ulysses sequence/head exchange.""" + + def __init__(self, dim, num_heads, local_attn_size=-1, sink_size=0, + qk_norm=True, eps=1e-6): + assert dim % num_heads == 0 + super().__init__() + self.dim = dim + self.num_heads = num_heads + self.head_dim = dim // num_heads + self.local_attn_size = local_attn_size + self.sink_size = sink_size + self.global_sink_size = 0 + self.qk_norm = qk_norm + self.eps = eps + + if not isinstance(local_attn_size, int) and hasattr(local_attn_size, "__iter__"): + values = list(local_attn_size) + else: + values = [int(local_attn_size)] + non_neg_vals = [int(v) for v in values if int(v) != -1] + max_local = max(non_neg_vals) if non_neg_vals else -1 + self.max_attention_size = 28160 if max_local == -1 else max_local * 880 + + self.q = nn.Linear(dim, dim) + self.k = nn.Linear(dim, dim) + self.v = nn.Linear(dim, dim) + self.o = nn.Linear(dim, dim) + self.norm_q = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + self.norm_k = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + + def forward(self, x, seq_lens, grid_sizes, freqs, kv_cache=None, + current_start=0, cache_start=None, t_scale=1.0, + use_relative_rope=False, method="linear", + original_seq_len=None, temporal_offset=0.0): + b, s_local = x.shape[:2] + n, d = self.num_heads, self.head_dim + if cache_start is None: + cache_start = current_start + + with NVTXRange("ulysses_qkv_proj"): + q = self.norm_q(self.q(x)).view(b, s_local, n, d) + k = self.norm_k(self.k(x)).view(b, s_local, n, d) + v = self.v(x).view(b, s_local, n, d) + + if kv_cache is None: + return self._forward_no_cache(q, k, v, grid_sizes, freqs, t_scale, method, original_seq_len) + return self._forward_with_cache( + q, k, v, grid_sizes, freqs, kv_cache, current_start, cache_start, + t_scale, use_relative_rope, method, original_seq_len, temporal_offset, + ) + + def _exchange_qkv(self, q, k, v): + if QK_QUANT_SIM and is_sp_enabled(): + d = q.shape[-1] + d_quant = _get_d_quant(d) + q_heads = F.pad(ulysses_seq_to_head(q[..., :d_quant]), (0, d - d_quant)) + k_heads = F.pad(ulysses_seq_to_head(k[..., :d_quant]), (0, d - d_quant)) + v_heads = ulysses_seq_to_head(v) + else: + q_heads = ulysses_seq_to_head(q) + k_heads = ulysses_seq_to_head(k) + v_heads = ulysses_seq_to_head(v) + return q_heads, k_heads, v_heads + + def _forward_no_cache(self, q, k, v, grid_sizes, freqs, t_scale, method, original_seq_len): + with NVTXRange("ulysses_seq_to_head"): + q_heads, k_heads, v_heads = self._exchange_qkv(q, k, v) + + with NVTXRange("ulysses_rope"): + roped_q = rope_apply( + q_heads, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v_heads) + roped_k = rope_apply( + k_heads, grid_sizes, freqs, t_scale=t_scale, + method=method, original_seq_len=original_seq_len, + ).type_as(v_heads) + + with NVTXRange("ulysses_attention"): + out_heads = attention(roped_q, roped_k, v_heads, causal=True) + with NVTXRange("ulysses_head_to_seq"): + out = ulysses_head_to_seq(out_heads) + with NVTXRange("ulysses_out_proj"): + return self.o(out.flatten(2)) + + def _forward_with_cache(self, q, k, v, grid_sizes, freqs, kv_cache, + current_start, cache_start, t_scale, + use_relative_rope, method, original_seq_len, + temporal_offset): + sp_world_size = get_sp_world_size() if is_sp_enabled() else 1 + s_total = q.shape[1] * sp_world_size + frame_seqlen = math.prod(grid_sizes[0][1:]).item() + current_start_frame = current_start // frame_seqlen + current_end = current_start + s_total + + with NVTXRange("ulysses_seq_to_head"): + q_heads, k_heads, v_heads = self._exchange_qkv(q, k, v) + + with NVTXRange("ulysses_rope_cached"): + roped_q = causal_rope_apply( + q_heads, grid_sizes, freqs, start_frame=current_start_frame, + t_scale=t_scale, method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset, + ).type_as(v_heads) + if use_relative_rope: + key_to_cache = k_heads + else: + key_to_cache = causal_rope_apply( + k_heads, grid_sizes, freqs, start_frame=current_start_frame, + t_scale=t_scale, method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset, + ).type_as(v_heads) + + with NVTXRange("ulysses_cache_update"): + k_full, v_full = self._update_cache_and_get_kv( + key_to_cache, v_heads, kv_cache, current_start, current_end, frame_seqlen, + ) + + if use_relative_rope: + raise NotImplementedError("use_relative_rope is not implemented for SP inference.") + + with NVTXRange("ulysses_cached_attention"): + out_heads = attention(roped_q, k_full, v_full, causal=False) + with NVTXRange("ulysses_head_to_seq"): + out = ulysses_head_to_seq(out_heads) + with NVTXRange("ulysses_out_proj"): + out = self.o(out.flatten(2)) + return out, (current_end, kv_cache["local_end_index"].item(), None) + + def _effective_sink(self, kv_cache, frame_seqlen): + sink_tokens = self.sink_size * frame_seqlen + global_sink_tokens = getattr(self, "global_sink_size", 0) * frame_seqlen + pinned_start_t = kv_cache.get("pinned_start", None) + if pinned_start_t is not None and hasattr(pinned_start_t, "item"): + pinned_start = pinned_start_t.item() + pinned_len = kv_cache["pinned_len"].item() + else: + pinned_start = -1 + pinned_len = 0 + has_pinned = pinned_start >= 0 and pinned_len > 0 + if has_pinned and pinned_start == global_sink_tokens: + effective_sink = global_sink_tokens + pinned_len + elif has_pinned: + effective_sink = global_sink_tokens + else: + effective_sink = max(global_sink_tokens, sink_tokens) + return effective_sink, pinned_start, pinned_len, has_pinned + + def _update_cache_and_get_kv(self, k_new, v_new, kv_cache, current_start, + current_end, frame_seqlen): + b, s_new, _, _ = k_new.shape + kv_cache_size = kv_cache["k"].shape[1] + global_end_prev = kv_cache["global_end_index"].item() + local_end_prev = kv_cache["local_end_index"].item() + is_recompute = current_end <= global_end_prev and current_start > 0 + + effective_sink, pinned_start, pinned_len, has_pinned = self._effective_sink(kv_cache, frame_seqlen) + need_roll = ( + self.local_attn_size != -1 + and current_end > global_end_prev + and s_new + local_end_prev > kv_cache_size + ) + + if need_roll: + num_evicted = s_new + local_end_prev - kv_cache_size + num_rolled = local_end_prev - num_evicted - effective_sink + if num_rolled > 0: + kv_cache["k"][:, effective_sink:effective_sink + num_rolled] = ( + kv_cache["k"][ + :, effective_sink + num_evicted:effective_sink + num_evicted + num_rolled + ].clone() + ) + kv_cache["v"][:, effective_sink:effective_sink + num_rolled] = ( + kv_cache["v"][ + :, effective_sink + num_evicted:effective_sink + num_evicted + num_rolled + ].clone() + ) + if has_pinned and pinned_start >= effective_sink and "pinned_start" in kv_cache: + kv_cache["pinned_start"].sub_(num_evicted) + pinned_start -= num_evicted + local_end_new = local_end_prev + (current_end - global_end_prev) - num_evicted + else: + local_end_new = local_end_prev + (current_end - global_end_prev) + + local_start_new = local_end_new - s_new + write_start = max(local_start_new, effective_sink) if is_recompute else local_start_new + write_offset = max(0, write_start - local_start_new) + write_len = max(0, local_end_new - write_start) + if write_len > 0: + kv_cache["k"][:, write_start:local_end_new] = k_new[:, write_offset:write_offset + write_len] + kv_cache["v"][:, write_start:local_end_new] = v_new[:, write_offset:write_offset + write_len] + + if not is_recompute: + kv_cache["global_end_index"].fill_(current_end) + kv_cache["local_end_index"].fill_(local_end_new) + + window_start = max(0, local_end_new - self.max_attention_size) + prepend_sink = effective_sink > 0 and window_start > 0 + prepend_pinned = has_pinned and pinned_start >= effective_sink and pinned_start < window_start + + if prepend_sink and prepend_pinned: + extra = effective_sink + pinned_len + effective_local_size = max(0, self.max_attention_size - extra) + local_window_start = max(effective_sink, local_end_new - effective_local_size) + k_full = torch.cat([ + kv_cache["k"][:, :effective_sink], + kv_cache["k"][:, pinned_start:pinned_start + pinned_len], + kv_cache["k"][:, local_window_start:local_end_new], + ], dim=1) + v_full = torch.cat([ + kv_cache["v"][:, :effective_sink], + kv_cache["v"][:, pinned_start:pinned_start + pinned_len], + kv_cache["v"][:, local_window_start:local_end_new], + ], dim=1) + elif prepend_sink: + effective_local_size = max(0, self.max_attention_size - effective_sink) + local_window_start = max(effective_sink, local_end_new - effective_local_size) + k_full = torch.cat([ + kv_cache["k"][:, :effective_sink], + kv_cache["k"][:, local_window_start:local_end_new], + ], dim=1) + v_full = torch.cat([ + kv_cache["v"][:, :effective_sink], + kv_cache["v"][:, local_window_start:local_end_new], + ], dim=1) + elif prepend_pinned: + effective_local_size = max(0, self.max_attention_size - pinned_len) + local_window_start = max(0, local_end_new - effective_local_size) + k_full = torch.cat([ + kv_cache["k"][:, pinned_start:pinned_start + pinned_len], + kv_cache["k"][:, local_window_start:local_end_new], + ], dim=1) + v_full = torch.cat([ + kv_cache["v"][:, pinned_start:pinned_start + pinned_len], + kv_cache["v"][:, local_window_start:local_end_new], + ], dim=1) + else: + k_full = kv_cache["k"][:, window_start:local_end_new] + v_full = kv_cache["v"][:, window_start:local_end_new] + + return k_full, v_full + + +class UlyssesCausalWanAttentionBlock(nn.Module): + def __init__(self, dim, ffn_dim, num_heads, local_attn_size=-1, + sink_size=0, qk_norm=True, cross_attn_norm=False, eps=1e-6): + super().__init__() + self.norm1 = WanLayerNorm(dim, eps) + self.self_attn = UlyssesCausalWanSelfAttention( + dim, num_heads, local_attn_size, sink_size, qk_norm, eps + ) + self.norm3 = WanLayerNorm(dim, eps, elementwise_affine=True) if cross_attn_norm else nn.Identity() + self.cross_attn = MultiShotT2VCrossAttention(dim, num_heads, (-1, -1), qk_norm, eps) + self.norm2 = WanLayerNorm(dim, eps) + self.ffn = nn.Sequential( + nn.Linear(dim, ffn_dim), nn.GELU(approximate="tanh"), nn.Linear(ffn_dim, dim) + ) + self.modulation = nn.Parameter(torch.randn(1, 6, dim) / dim**0.5) + + def forward(self, x, e, seq_lens, grid_sizes, freqs, context, context_lens, + kv_cache=None, crossattn_cache=None, current_start=0, + cache_start=None, num_frames=None, local_frame_offset=0, + t_scale=1.0, use_relative_rope=False, method="linear", + original_seq_len=None, temporal_offset=0.0): + num_frames_total = e.shape[1] if num_frames is None else num_frames + local_seq_len = x.shape[1] + if is_sp_enabled() and local_seq_len > 0: + actual_local_frames, local_frame_seqlen, _ = _compute_ulysses_frame_info( + num_frames_total, local_seq_len, get_sp_world_size(), get_sp_rank() + ) + e_local = e[:, local_frame_offset:local_frame_offset + actual_local_frames] + else: + actual_local_frames = num_frames_total + local_frame_seqlen = local_seq_len // actual_local_frames if actual_local_frames > 0 else 0 + e_local = e + + e_chunks = (self.modulation.unsqueeze(1) + e_local).chunk(6, dim=2) + x_normed = self.norm1(x) + if actual_local_frames > 0 and local_frame_seqlen > 0: + x_mod = x_normed.unflatten(dim=1, sizes=(actual_local_frames, local_frame_seqlen)) + x_mod = (x_mod * (1 + e_chunks[1]) + e_chunks[0]).flatten(1, 2) + else: + x_mod = x_normed + + self_attn_result = self.self_attn( + x_mod, seq_lens, grid_sizes, freqs, kv_cache, current_start, cache_start, + t_scale, use_relative_rope, method, original_seq_len, temporal_offset, + ) + if kv_cache is not None and isinstance(self_attn_result, tuple): + y, cache_update_info = self_attn_result + else: + y = self_attn_result + cache_update_info = None + + if actual_local_frames > 0 and local_frame_seqlen > 0: + y_mod = y.unflatten(dim=1, sizes=(actual_local_frames, local_frame_seqlen)) + x = x + (y_mod * e_chunks[2]).flatten(1, 2) + else: + x = x + y + + if x.shape[1] > 0: + x = x + self.cross_attn( + self.norm3(x), context, context_lens, crossattn_cache=crossattn_cache + ) + x_normed = self.norm2(x) + if actual_local_frames > 0 and local_frame_seqlen > 0: + x_mod = x_normed.unflatten(dim=1, sizes=(actual_local_frames, local_frame_seqlen)) + y = self.ffn((x_mod * (1 + e_chunks[4]) + e_chunks[3]).flatten(1, 2)) + y_mod = y.unflatten(dim=1, sizes=(actual_local_frames, local_frame_seqlen)) + x = x + (y_mod * e_chunks[5]).flatten(1, 2) + else: + x = x + self.ffn(x_normed) + + return (x, cache_update_info) if cache_update_info is not None else x + + +class UlyssesCausalHead(nn.Module): + def __init__(self, dim, out_dim, patch_size, eps=1e-6): + super().__init__() + self.dim = dim + self.out_dim = out_dim + self.patch_size = patch_size + self.norm = WanLayerNorm(dim, eps) + self.head = nn.Linear(dim, math.prod(patch_size) * out_dim) + self.modulation = nn.Parameter(torch.randn(1, 2, dim) / dim**0.5) + + def forward(self, x, e, local_frame_offset=0, actual_local_frames=None, + frame_seqlen_global=None): + num_frames_total = e.shape[1] + local_seq_len = x.shape[1] + if is_sp_enabled() and actual_local_frames is not None: + local_frames = actual_local_frames + local_seqlen = local_seq_len // local_frames if local_frames > 0 else frame_seqlen_global + e_local = e[:, local_frame_offset:local_frame_offset + local_frames] + else: + local_frames = num_frames_total + local_seqlen = local_seq_len // local_frames if local_frames > 0 else 0 + e_local = e + + if local_frames == 0 or local_seq_len == 0: + b, _, _ = x.shape + return torch.empty( + b, 0, local_seqlen if local_seqlen else 1, + math.prod(self.patch_size) * self.out_dim, + dtype=x.dtype, device=x.device, + ) + + e_chunks = (self.modulation.unsqueeze(1) + e_local).chunk(2, dim=2) + x = self.norm(x).unflatten(dim=1, sizes=(local_frames, local_seqlen)) + return self.head(x * (1 + e_chunks[1]) + e_chunks[0]) + + +class UlyssesSPCausalWanModel(ModelMixin, ConfigMixin): + ignore_for_config = ["patch_size", "cross_attn_norm", "qk_norm", "text_dim"] + _no_split_modules = ["UlyssesCausalWanAttentionBlock"] + _supports_gradient_checkpointing = True + + @register_to_config + def __init__(self, model_type="ti2v", patch_size=(1, 2, 2), text_len=512, + in_dim=48, dim=3072, ffn_dim=14336, freq_dim=256, + text_dim=4096, out_dim=48, num_heads=24, num_layers=30, + local_attn_size=-1, sink_size=0, num_frame_per_block=1, + qk_norm=True, cross_attn_norm=True, eps=1e-6): + super().__init__() + assert model_type in ["t2v", "i2v", "ti2v"] + self.model_type = model_type + self.patch_size = patch_size + self.text_len = text_len + self.in_dim = in_dim + self.dim = dim + self.ffn_dim = ffn_dim + self.freq_dim = freq_dim + self.text_dim = text_dim + self.out_dim = out_dim + self.num_heads = num_heads + self.num_layers = num_layers + self.local_attn_size = local_attn_size + self.sink_size = sink_size + self.qk_norm = qk_norm + self.cross_attn_norm = cross_attn_norm + self.eps = eps + + self.patch_embedding = nn.Conv3d(in_dim, dim, kernel_size=patch_size, stride=patch_size) + self.text_embedding = nn.Sequential( + nn.Linear(text_dim, dim), nn.GELU(approximate="tanh"), nn.Linear(dim, dim) + ) + self.time_embedding = nn.Sequential(nn.Linear(freq_dim, dim), nn.SiLU(), nn.Linear(dim, dim)) + self.time_projection = nn.Sequential(nn.SiLU(), nn.Linear(dim, dim * 6)) + self.blocks = nn.ModuleList([ + UlyssesCausalWanAttentionBlock( + dim, ffn_dim, num_heads, local_attn_size, sink_size, + qk_norm, cross_attn_norm, eps, + ) + for _ in range(num_layers) + ]) + self.head = UlyssesCausalHead(dim, out_dim, patch_size, eps) + + d = dim // num_heads + self.freqs = torch.cat([ + rope_params(1024, d - 4 * (d // 6)), + rope_params(1024, 2 * (d // 6)), + rope_params(1024, 2 * (d // 6)), + ], dim=1) + + self.init_weights() + self.gradient_checkpointing = False + self.num_frame_per_block = num_frame_per_block + self.t_scale = 1.0 + self.use_relative_rope = False + self.rope_method = "linear" + self.original_seq_len = None + self.rope_temporal_offset = 0.0 + self.kv_quant_config = None + + def forward(self, x, t, context, seq_len, clip_fea=None, y=None, + kv_cache=None, crossattn_cache=None, current_start=0, + cache_start=0): + sp_world_size = get_sp_world_size() if is_sp_enabled() else 1 + sp_rank = get_sp_rank() if is_sp_enabled() else 0 + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + with NVTXRange("ulysses_patch_embedding"): + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + grid_sizes = torch.stack([torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + assert seq_lens.max() <= seq_len + x = torch.cat(x) + + num_frames = t.shape[1] if t.dim() > 1 else grid_sizes[0, 0].item() + frame_seqlen = x.shape[1] // num_frames + if is_sp_enabled(): + assert self.num_heads % sp_world_size == 0 + assert x.shape[1] % sp_world_size == 0 + with NVTXRange("ulysses_scatter_input"): + x = sp_scatter(x, dim=1) + actual_local_frames, local_frame_seqlen, local_frame_offset = _compute_ulysses_frame_info( + num_frames, x.shape[1], sp_world_size, sp_rank + ) + else: + actual_local_frames = num_frames + local_frame_seqlen = frame_seqlen + local_frame_offset = 0 + + with NVTXRange("ulysses_time_embedding"): + e = self.time_embedding(sinusoidal_embedding_1d(self.freq_dim, t.flatten()).type_as(x)) + e0 = self.time_projection(e).unflatten(1, (6, self.dim)).unflatten(dim=0, sizes=t.shape) + + with NVTXRange("ulysses_text_embedding"): + context_lens = None + context = self.text_embedding(torch.stack([ + torch.cat([u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + if clip_fea is not None: + context = torch.concat([self.img_emb(clip_fea), context], dim=1) + + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens, + num_frames=num_frames, + local_frame_offset=local_frame_offset, + t_scale=self.t_scale, + use_relative_rope=self.use_relative_rope, + method=self.rope_method, + original_seq_len=self.original_seq_len, + temporal_offset=self.rope_temporal_offset, + ) + for block_idx, block in enumerate(self.blocks): + kwargs.update({ + "kv_cache": kv_cache[block_idx] if kv_cache else None, + "crossattn_cache": crossattn_cache[block_idx] if crossattn_cache else None, + "current_start": current_start, + "cache_start": cache_start, + }) + result = block(x, **kwargs) + x = result[0] if kv_cache is not None and isinstance(result, tuple) else result + + x = self.head( + x, + e.unflatten(dim=0, sizes=t.shape).unsqueeze(2), + local_frame_offset=local_frame_offset, + actual_local_frames=actual_local_frames, + frame_seqlen_global=frame_seqlen, + ) + if is_sp_enabled(): + x = sp_all_gather(x, dim=2 if num_frames == 1 else 1) + x = self.unpatchify(x, grid_sizes) + return torch.stack(x) + + def unpatchify(self, x, grid_sizes): + c = self.out_dim + pt, ph, pw = self.patch_size + output = [] + for i, (f, h, w) in enumerate(grid_sizes.tolist()): + x_i = x[i, :f, :h * w, :].reshape(f, h, w, pt, ph, pw, c) + x_i = x_i.permute(6, 0, 3, 1, 4, 2, 5).reshape(c, f * pt, h * ph, w * pw) + output.append(x_i) + return output + + def init_weights(self): + def _init(module): + if isinstance(module, nn.Linear): + nn.init.xavier_uniform_(module.weight) + if module.bias is not None: + nn.init.zeros_(module.bias) + elif isinstance(module, nn.Conv3d): + nn.init.xavier_uniform_(module.weight) + if module.bias is not None: + nn.init.zeros_(module.bias) + self.apply(_init) diff --git a/wan_5b/modules/model.py b/wan_5b/modules/model.py new file mode 100644 index 0000000..b37b435 --- /dev/null +++ b/wan_5b/modules/model.py @@ -0,0 +1,591 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import math + +import torch +import torch.nn as nn +from diffusers.configuration_utils import ConfigMixin, register_to_config +from diffusers.models.modeling_utils import ModelMixin +from einops import repeat +import torch.distributed as dist +from .attention import flash_attention + +__all__ = ['WanModel'] + + +def sinusoidal_embedding_1d(dim, position): + # preprocess + assert dim % 2 == 0 + half = dim // 2 + position = position.type(torch.float64) + + # calculation + sinusoid = torch.outer( + position, torch.pow(10000, -torch.arange(half).to(position).div(half))) + x = torch.cat([torch.cos(sinusoid), torch.sin(sinusoid)], dim=1) + return x + + +# @amp.autocast(enabled=False) +def rope_params(max_seq_len, dim, theta=10000): + assert dim % 2 == 0 + freqs = torch.outer( + torch.arange(max_seq_len), + 1.0 / torch.pow(theta, + torch.arange(0, dim, 2).to(torch.float64).div(dim))) + freqs = torch.polar(torch.ones_like(freqs), freqs) + return freqs + + +from utils.position_embedding_utils import ( + compute_temporal_freqs as _compute_temporal_freqs, + select_temporal_offset_for_sample, +) + + +# @amp.autocast(enabled=False) +def rope_apply(x, grid_sizes, freqs, t_scale=1.0, method="linear", original_seq_len=None, + temporal_offset=0.0): + n, c = x.size(2), x.size(3) // 2 + + # split freqs + freqs = freqs.split([c - 2 * (c // 3), c // 3, c // 3], dim=1) + + # loop over samples + output = [] + for i, (f, h, w) in enumerate(grid_sizes.tolist()): + seq_len = f * h * w + + # precompute multipliers + x_i = torch.view_as_complex(x[i, :seq_len].to(torch.float64).reshape( + seq_len, n, -1, 2)) + temporal_offset_i = select_temporal_offset_for_sample( + temporal_offset, i, f, start_frame=0) + temporal_freqs = _compute_temporal_freqs(freqs[0], f, 0, t_scale, x.device, + method=method, original_seq_len=original_seq_len, + temporal_offset=temporal_offset_i) + freqs_i = torch.cat([ + temporal_freqs.view(f, 1, 1, -1).expand(f, h, w, -1), + freqs[1][:h].view(1, h, 1, -1).expand(f, h, w, -1), + freqs[2][:w].view(1, 1, w, -1).expand(f, h, w, -1) + ], + dim=-1).reshape(seq_len, 1, -1) + + # apply rotary embedding + x_i = torch.view_as_real(x_i * freqs_i).flatten(2) + x_i = torch.cat([x_i, x[i, seq_len:]]) + + # append to collection + output.append(x_i) + return torch.stack(output).type_as(x) + + +class WanRMSNorm(nn.Module): + + def __init__(self, dim, eps=1e-5): + super().__init__() + self.dim = dim + self.eps = eps + self.weight = nn.Parameter(torch.ones(dim)) + + def forward(self, x): + r""" + Args: + x(Tensor): Shape [B, L, C] + """ + return self._norm(x.float()).type_as(x) * self.weight + + def _norm(self, x): + return x * torch.rsqrt(x.pow(2).mean(dim=-1, keepdim=True) + self.eps) + + +class WanLayerNorm(nn.LayerNorm): + + def __init__(self, dim, eps=1e-6, elementwise_affine=False): + super().__init__(dim, elementwise_affine=elementwise_affine, eps=eps) + + def forward(self, x): + r""" + Args: + x(Tensor): Shape [B, L, C] + """ + return super().forward(x).type_as(x) + + +class WanSelfAttention(nn.Module): + + def __init__(self, + dim, + num_heads, + window_size=(-1, -1), + qk_norm=True, + eps=1e-6): + assert dim % num_heads == 0 + super().__init__() + self.dim = dim + self.num_heads = num_heads + self.head_dim = dim // num_heads + self.window_size = window_size + self.qk_norm = qk_norm + self.eps = eps + + # layers + self.q = nn.Linear(dim, dim) + self.k = nn.Linear(dim, dim) + self.v = nn.Linear(dim, dim) + self.o = nn.Linear(dim, dim) + self.norm_q = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + self.norm_k = WanRMSNorm(dim, eps=eps) if qk_norm else nn.Identity() + + def forward(self, x, seq_lens, grid_sizes, freqs): + r""" + Args: + x(Tensor): Shape [B, L, num_heads, C / num_heads] + seq_lens(Tensor): Shape [B] + grid_sizes(Tensor): Shape [B, 3], the second dimension contains (F, H, W) + freqs(Tensor): Rope freqs, shape [1024, C / num_heads / 2] + """ + b, s, n, d = *x.shape[:2], self.num_heads, self.head_dim + + # query, key, value function + def qkv_fn(x): + q = self.norm_q(self.q(x)).view(b, s, n, d) + k = self.norm_k(self.k(x)).view(b, s, n, d) + v = self.v(x).view(b, s, n, d) + return q, k, v + + q, k, v = qkv_fn(x) + + x = flash_attention( + q=rope_apply(q, grid_sizes, freqs), + k=rope_apply(k, grid_sizes, freqs), + v=v, + k_lens=seq_lens, + window_size=self.window_size) + + # output + x = x.flatten(2) + x = self.o(x) + return x + + +class WanCrossAttention(WanSelfAttention): + + def forward(self, x, context, context_lens, crossattn_cache=None): + r""" + Args: + x(Tensor): Shape [B, L1, C] + context(Tensor): Shape [B, L2, C] + context_lens(Tensor): Shape [B] + crossattn_cache (List[dict], *optional*): Contains the cached key and value tensors for context embedding. + """ + b, n, d = x.size(0), self.num_heads, self.head_dim + + # compute query, key, value + q = self.norm_q(self.q(x)).view(b, -1, n, d) + + if crossattn_cache is not None: + if not crossattn_cache["is_init"]: + crossattn_cache["is_init"] = True + k = self.norm_k(self.k(context)).view(b, -1, n, d) + v = self.v(context).view(b, -1, n, d) + crossattn_cache["k"] = k + crossattn_cache["v"] = v + else: + k = crossattn_cache["k"] + v = crossattn_cache["v"] + else: + k = self.norm_k(self.k(context)).view(b, -1, n, d) + v = self.v(context).view(b, -1, n, d) + + # compute attention + x = flash_attention(q, k, v, k_lens=context_lens) + + # output + x = x.flatten(2) + x = self.o(x) + return x + + +class WanAttentionBlock(nn.Module): + + def __init__(self, + dim, + ffn_dim, + num_heads, + window_size=(-1, -1), + qk_norm=True, + cross_attn_norm=False, + eps=1e-6): + super().__init__() + self.dim = dim + self.ffn_dim = ffn_dim + self.num_heads = num_heads + self.window_size = window_size + self.qk_norm = qk_norm + self.cross_attn_norm = cross_attn_norm + self.eps = eps + + # layers + self.norm1 = WanLayerNorm(dim, eps) + self.self_attn = WanSelfAttention(dim, num_heads, window_size, qk_norm, + eps) + self.norm3 = WanLayerNorm( + dim, eps, + elementwise_affine=True) if cross_attn_norm else nn.Identity() + self.cross_attn = WanCrossAttention(dim, num_heads, (-1, -1), qk_norm, + eps) + self.norm2 = WanLayerNorm(dim, eps) + self.ffn = nn.Sequential( + nn.Linear(dim, ffn_dim), nn.GELU(approximate='tanh'), + nn.Linear(ffn_dim, dim)) + + # modulation + self.modulation = nn.Parameter(torch.randn(1, 6, dim) / dim**0.5) + + def forward( + self, + x, + e, + seq_lens, + grid_sizes, + freqs, + context, + context_lens, + ): + r""" + Args: + x(Tensor): Shape [B, L, C] + e(Tensor): Shape [B, L1, 6, C] + seq_lens(Tensor): Shape [B], length of each sequence in batch + grid_sizes(Tensor): Shape [B, 3], the second dimension contains (F, H, W) + freqs(Tensor): Rope freqs, shape [1024, C / num_heads / 2] + """ + e = (self.modulation.unsqueeze(0) + e).chunk(6, dim=2) + + # self-attention + y = self.self_attn( + self.norm1(x).type_as(x) * (1 + e[1].squeeze(2)) + e[0].squeeze(2), + seq_lens, grid_sizes, freqs) + x = x + y * e[2].squeeze(2) + + # cross-attention & ffn function + def cross_attn_ffn(x, context, context_lens, e): + x = x + self.cross_attn(self.norm3(x), context, context_lens) + y = self.ffn( + self.norm2(x).type_as(x) * (1 + e[4].squeeze(2)) + e[3].squeeze(2)) + x = x + y * e[5].squeeze(2) + return x + + x = cross_attn_ffn(x, context, context_lens, e) + return x + + +class Head(nn.Module): + + def __init__(self, dim, out_dim, patch_size, eps=1e-6): + super().__init__() + self.dim = dim + self.out_dim = out_dim + self.patch_size = patch_size + self.eps = eps + + # layers + out_dim = math.prod(patch_size) * out_dim + self.norm = WanLayerNorm(dim, eps) + self.head = nn.Linear(dim, out_dim) + + # modulation + self.modulation = nn.Parameter(torch.randn(1, 2, dim) / dim**0.5) + + def forward(self, x, e): + r""" + Args: + x(Tensor): Shape [B, L1, C] + e(Tensor): Shape [B, L1, C] + """ + e = (self.modulation.unsqueeze(0) + e.unsqueeze(2)).chunk(2, dim=2) + x = ( + self.head( + self.norm(x) * (1 + e[1].squeeze(2)) + e[0].squeeze(2))) + return x + + +class WanModel(ModelMixin, ConfigMixin): + r""" + Wan diffusion backbone supporting both text-to-video and image-to-video. + """ + + ignore_for_config = [ + 'patch_size', 'cross_attn_norm', 'qk_norm', 'text_dim', 'window_size' + ] + _no_split_modules = ['WanAttentionBlock'] + _supports_gradient_checkpointing = True + + @register_to_config + def __init__(self, + model_type='t2v', + patch_size=(1, 2, 2), + text_len=512, + in_dim=16, + dim=2048, + ffn_dim=8192, + freq_dim=256, + text_dim=4096, + out_dim=16, + num_heads=16, + num_layers=32, + window_size=(-1, -1), + qk_norm=True, + cross_attn_norm=True, + eps=1e-6): + r""" + Initialize the diffusion model backbone. + + Args: + model_type (`str`, *optional*, defaults to 't2v'): + Model variant - 't2v' (text-to-video) or 'i2v' (image-to-video) + patch_size (`tuple`, *optional*, defaults to (1, 2, 2)): + 3D patch dimensions for video embedding (t_patch, h_patch, w_patch) + text_len (`int`, *optional*, defaults to 512): + Fixed length for text embeddings + in_dim (`int`, *optional*, defaults to 16): + Input video channels (C_in) + dim (`int`, *optional*, defaults to 2048): + Hidden dimension of the transformer + ffn_dim (`int`, *optional*, defaults to 8192): + Intermediate dimension in feed-forward network + freq_dim (`int`, *optional*, defaults to 256): + Dimension for sinusoidal time embeddings + text_dim (`int`, *optional*, defaults to 4096): + Input dimension for text embeddings + out_dim (`int`, *optional*, defaults to 16): + Output video channels (C_out) + num_heads (`int`, *optional*, defaults to 16): + Number of attention heads + num_layers (`int`, *optional*, defaults to 32): + Number of transformer blocks + window_size (`tuple`, *optional*, defaults to (-1, -1)): + Window size for local attention (-1 indicates global attention) + qk_norm (`bool`, *optional*, defaults to True): + Enable query/key normalization + cross_attn_norm (`bool`, *optional*, defaults to False): + Enable cross-attention normalization + eps (`float`, *optional*, defaults to 1e-6): + Epsilon value for normalization layers + """ + + super().__init__() + + assert model_type in ['t2v', 'i2v', 'ti2v'] + self.model_type = model_type + + self.patch_size = patch_size + self.text_len = text_len + self.in_dim = in_dim + self.dim = dim + self.ffn_dim = ffn_dim + self.freq_dim = freq_dim + self.text_dim = text_dim + self.out_dim = out_dim + self.num_heads = num_heads + self.num_layers = num_layers + self.window_size = window_size + self.qk_norm = qk_norm + self.cross_attn_norm = cross_attn_norm + self.eps = eps + self.local_attn_size = 21 + + # embeddings + self.patch_embedding = nn.Conv3d( + in_dim, dim, kernel_size=patch_size, stride=patch_size) + self.text_embedding = nn.Sequential( + nn.Linear(text_dim, dim), nn.GELU(approximate='tanh'), + nn.Linear(dim, dim)) + + self.time_embedding = nn.Sequential( + nn.Linear(freq_dim, dim), nn.SiLU(), nn.Linear(dim, dim)) + self.time_projection = nn.Sequential(nn.SiLU(), nn.Linear(dim, dim * 6)) + + # blocks + self.blocks = nn.ModuleList([ + WanAttentionBlock(dim, ffn_dim, num_heads, window_size, qk_norm, + cross_attn_norm, eps) for _ in range(num_layers) + ]) + + # head + self.head = Head(dim, out_dim, patch_size, eps) + + # buffers (don't use register_buffer otherwise dtype will be changed in to()) + assert (dim % num_heads) == 0 and (dim // num_heads) % 2 == 0 + d = dim // num_heads + self.freqs = torch.cat([ + rope_params(1024, d - 4 * (d // 6)), + rope_params(1024, 2 * (d // 6)), + rope_params(1024, 2 * (d // 6)) + ], + dim=1) + + # initialize weights + self.init_weights() + + self.gradient_checkpointing = False + + def _set_gradient_checkpointing(self, module, value=False): + self.gradient_checkpointing = value + + def forward( + self, + *args, + **kwargs + ): + return self._forward(*args, **kwargs) + + def _forward( + self, + x, + t, + context, + seq_len, + y=None, + ): + r""" + Forward pass through the diffusion model + + Args: + x (List[Tensor]): + List of input video tensors, each with shape [C_in, F, H, W] + t (Tensor): + Diffusion timesteps tensor of shape [B] + context (List[Tensor]): + List of text embeddings each with shape [L, C] + seq_len (`int`): + Maximum sequence length for positional encoding + y (List[Tensor], *optional*): + Conditional video inputs for image-to-video mode, same shape as x + + Returns: + List[Tensor]: + List of denoised video tensors with original input shapes [C_out, F, H / 8, W / 8] + """ + if self.model_type == 'i2v': + assert y is not None + # params + device = self.patch_embedding.weight.device + if self.freqs.device != device: + self.freqs = self.freqs.to(device) + + if y is not None: + x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] + + # embeddings + x = [self.patch_embedding(u.unsqueeze(0)) for u in x] + grid_sizes = torch.stack( + [torch.tensor(u.shape[2:], dtype=torch.long) for u in x]) + x = [u.flatten(2).transpose(1, 2) for u in x] + seq_lens = torch.tensor([u.size(1) for u in x], dtype=torch.long) + assert seq_lens.max() <= seq_len + x = torch.cat([ + torch.cat([u, u.new_zeros(1, seq_len - u.size(1), u.size(2))], + dim=1) for u in x + ]) + + # time embeddings + if t.dim() == 1: + t = t.unsqueeze(1).expand(-1, seq_len) + bt = t.size(0) + t = t.flatten() + e = self.time_embedding( + sinusoidal_embedding_1d(self.freq_dim, + t).unflatten(0, (bt, seq_len)).type_as(x)) + e0 = self.time_projection(e).unflatten(2, (6, self.dim)) + + # context + context_lens = None + context = self.text_embedding( + torch.stack([ + torch.cat( + [u, u.new_zeros(self.text_len - u.size(0), u.size(1))]) + for u in context + ])) + + # arguments + kwargs = dict( + e=e0, + seq_lens=seq_lens, + grid_sizes=grid_sizes, + freqs=self.freqs, + context=context, + context_lens=context_lens) + + def create_custom_forward(module): + def custom_forward(*inputs, **kwargs): + return module(*inputs, **kwargs) + return custom_forward + + for block in self.blocks: + if torch.is_grad_enabled() and self.gradient_checkpointing: + x = torch.utils.checkpoint.checkpoint( + create_custom_forward(block), + x, **kwargs, + use_reentrant=False, + ) + else: + x = block(x, **kwargs) + + # head + x = self.head(x, e) + + # unpatchify + x = self.unpatchify(x, grid_sizes) + + return torch.stack(x) + + + def unpatchify(self, x, grid_sizes, c=None): + r""" + Reconstruct video tensors from patch embeddings. + + Args: + x (List[Tensor]): + List of patchified features, each with shape [L, C_out * prod(patch_size)] + grid_sizes (Tensor): + Original spatial-temporal grid dimensions before patching, + shape [B, 3] (3 dimensions correspond to F_patches, H_patches, W_patches) + + Returns: + List[Tensor]: + Reconstructed video tensors with shape [C_out, F, H / 8, W / 8] + """ + + c = self.out_dim if c is None else c + out = [] + for u, v in zip(x, grid_sizes.tolist()): + u = u[:math.prod(v)].view(*v, *self.patch_size, c) + u = torch.einsum('fhwpqrc->cfphqwr', u) + u = u.reshape(c, *[i * j for i, j in zip(v, self.patch_size)]) + out.append(u) + return out + + def init_weights(self): + r""" + Initialize model parameters using Xavier initialization. + """ + + # basic init + for m in self.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + if m.bias is not None: + nn.init.zeros_(m.bias) + + # init embeddings + nn.init.xavier_uniform_(self.patch_embedding.weight.flatten(1)) + for m in self.text_embedding.modules(): + if isinstance(m, nn.Linear): + nn.init.normal_(m.weight, std=.02) + for m in self.time_embedding.modules(): + if isinstance(m, nn.Linear): + nn.init.normal_(m.weight, std=.02) + + # init output layer + nn.init.zeros_(self.head.head.weight) diff --git a/wan_5b/modules/t5.py b/wan_5b/modules/t5.py new file mode 100644 index 0000000..6405e92 --- /dev/null +++ b/wan_5b/modules/t5.py @@ -0,0 +1,513 @@ +# Modified from transformers.models.t5.modeling_t5 +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import logging +import math + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from .tokenizers import HuggingfaceTokenizer + +__all__ = [ + 'T5Model', + 'T5Encoder', + 'T5Decoder', + 'T5EncoderModel', +] + + +def fp16_clamp(x): + if x.dtype == torch.float16 and torch.isinf(x).any(): + clamp = torch.finfo(x.dtype).max - 1000 + x = torch.clamp(x, min=-clamp, max=clamp) + return x + + +def init_weights(m): + if isinstance(m, T5LayerNorm): + nn.init.ones_(m.weight) + elif isinstance(m, T5Model): + nn.init.normal_(m.token_embedding.weight, std=1.0) + elif isinstance(m, T5FeedForward): + nn.init.normal_(m.gate[0].weight, std=m.dim**-0.5) + nn.init.normal_(m.fc1.weight, std=m.dim**-0.5) + nn.init.normal_(m.fc2.weight, std=m.dim_ffn**-0.5) + elif isinstance(m, T5Attention): + nn.init.normal_(m.q.weight, std=(m.dim * m.dim_attn)**-0.5) + nn.init.normal_(m.k.weight, std=m.dim**-0.5) + nn.init.normal_(m.v.weight, std=m.dim**-0.5) + nn.init.normal_(m.o.weight, std=(m.num_heads * m.dim_attn)**-0.5) + elif isinstance(m, T5RelativeEmbedding): + nn.init.normal_( + m.embedding.weight, std=(2 * m.num_buckets * m.num_heads)**-0.5) + + +class GELU(nn.Module): + + def forward(self, x): + return 0.5 * x * (1.0 + torch.tanh( + math.sqrt(2.0 / math.pi) * (x + 0.044715 * torch.pow(x, 3.0)))) + + +class T5LayerNorm(nn.Module): + + def __init__(self, dim, eps=1e-6): + super(T5LayerNorm, self).__init__() + self.dim = dim + self.eps = eps + self.weight = nn.Parameter(torch.ones(dim)) + + def forward(self, x): + x = x * torch.rsqrt(x.float().pow(2).mean(dim=-1, keepdim=True) + + self.eps) + if self.weight.dtype in [torch.float16, torch.bfloat16]: + x = x.type_as(self.weight) + return self.weight * x + + +class T5Attention(nn.Module): + + def __init__(self, dim, dim_attn, num_heads, dropout=0.1): + assert dim_attn % num_heads == 0 + super(T5Attention, self).__init__() + self.dim = dim + self.dim_attn = dim_attn + self.num_heads = num_heads + self.head_dim = dim_attn // num_heads + + # layers + self.q = nn.Linear(dim, dim_attn, bias=False) + self.k = nn.Linear(dim, dim_attn, bias=False) + self.v = nn.Linear(dim, dim_attn, bias=False) + self.o = nn.Linear(dim_attn, dim, bias=False) + self.dropout = nn.Dropout(dropout) + + def forward(self, x, context=None, mask=None, pos_bias=None): + """ + x: [B, L1, C]. + context: [B, L2, C] or None. + mask: [B, L2] or [B, L1, L2] or None. + """ + # check inputs + context = x if context is None else context + b, n, c = x.size(0), self.num_heads, self.head_dim + + # compute query, key, value + q = self.q(x).view(b, -1, n, c) + k = self.k(context).view(b, -1, n, c) + v = self.v(context).view(b, -1, n, c) + + # attention bias + attn_bias = x.new_zeros(b, n, q.size(1), k.size(1)) + if pos_bias is not None: + attn_bias += pos_bias + if mask is not None: + assert mask.ndim in [2, 3] + mask = mask.view(b, 1, 1, + -1) if mask.ndim == 2 else mask.unsqueeze(1) + attn_bias.masked_fill_(mask == 0, torch.finfo(x.dtype).min) + + # compute attention (T5 does not use scaling) + attn = torch.einsum('binc,bjnc->bnij', q, k) + attn_bias + attn = F.softmax(attn.float(), dim=-1).type_as(attn) + x = torch.einsum('bnij,bjnc->binc', attn, v) + + # output + x = x.reshape(b, -1, n * c) + x = self.o(x) + x = self.dropout(x) + return x + + +class T5FeedForward(nn.Module): + + def __init__(self, dim, dim_ffn, dropout=0.1): + super(T5FeedForward, self).__init__() + self.dim = dim + self.dim_ffn = dim_ffn + + # layers + self.gate = nn.Sequential(nn.Linear(dim, dim_ffn, bias=False), GELU()) + self.fc1 = nn.Linear(dim, dim_ffn, bias=False) + self.fc2 = nn.Linear(dim_ffn, dim, bias=False) + self.dropout = nn.Dropout(dropout) + + def forward(self, x): + x = self.fc1(x) * self.gate(x) + x = self.dropout(x) + x = self.fc2(x) + x = self.dropout(x) + return x + + +class T5SelfAttention(nn.Module): + + def __init__(self, + dim, + dim_attn, + dim_ffn, + num_heads, + num_buckets, + shared_pos=True, + dropout=0.1): + super(T5SelfAttention, self).__init__() + self.dim = dim + self.dim_attn = dim_attn + self.dim_ffn = dim_ffn + self.num_heads = num_heads + self.num_buckets = num_buckets + self.shared_pos = shared_pos + + # layers + self.norm1 = T5LayerNorm(dim) + self.attn = T5Attention(dim, dim_attn, num_heads, dropout) + self.norm2 = T5LayerNorm(dim) + self.ffn = T5FeedForward(dim, dim_ffn, dropout) + self.pos_embedding = None if shared_pos else T5RelativeEmbedding( + num_buckets, num_heads, bidirectional=True) + + def forward(self, x, mask=None, pos_bias=None): + e = pos_bias if self.shared_pos else self.pos_embedding( + x.size(1), x.size(1)) + x = fp16_clamp(x + self.attn(self.norm1(x), mask=mask, pos_bias=e)) + x = fp16_clamp(x + self.ffn(self.norm2(x))) + return x + + +class T5CrossAttention(nn.Module): + + def __init__(self, + dim, + dim_attn, + dim_ffn, + num_heads, + num_buckets, + shared_pos=True, + dropout=0.1): + super(T5CrossAttention, self).__init__() + self.dim = dim + self.dim_attn = dim_attn + self.dim_ffn = dim_ffn + self.num_heads = num_heads + self.num_buckets = num_buckets + self.shared_pos = shared_pos + + # layers + self.norm1 = T5LayerNorm(dim) + self.self_attn = T5Attention(dim, dim_attn, num_heads, dropout) + self.norm2 = T5LayerNorm(dim) + self.cross_attn = T5Attention(dim, dim_attn, num_heads, dropout) + self.norm3 = T5LayerNorm(dim) + self.ffn = T5FeedForward(dim, dim_ffn, dropout) + self.pos_embedding = None if shared_pos else T5RelativeEmbedding( + num_buckets, num_heads, bidirectional=False) + + def forward(self, + x, + mask=None, + encoder_states=None, + encoder_mask=None, + pos_bias=None): + e = pos_bias if self.shared_pos else self.pos_embedding( + x.size(1), x.size(1)) + x = fp16_clamp(x + self.self_attn(self.norm1(x), mask=mask, pos_bias=e)) + x = fp16_clamp(x + self.cross_attn( + self.norm2(x), context=encoder_states, mask=encoder_mask)) + x = fp16_clamp(x + self.ffn(self.norm3(x))) + return x + + +class T5RelativeEmbedding(nn.Module): + + def __init__(self, num_buckets, num_heads, bidirectional, max_dist=128): + super(T5RelativeEmbedding, self).__init__() + self.num_buckets = num_buckets + self.num_heads = num_heads + self.bidirectional = bidirectional + self.max_dist = max_dist + + # layers + self.embedding = nn.Embedding(num_buckets, num_heads) + + def forward(self, lq, lk): + device = self.embedding.weight.device + rel_pos = torch.arange(lk, device=device).unsqueeze(0) - \ + torch.arange(lq, device=device).unsqueeze(1) + rel_pos = self._relative_position_bucket(rel_pos) + rel_pos_embeds = self.embedding(rel_pos) + rel_pos_embeds = rel_pos_embeds.permute(2, 0, 1).unsqueeze( + 0) # [1, N, Lq, Lk] + return rel_pos_embeds.contiguous() + + def _relative_position_bucket(self, rel_pos): + # preprocess + if self.bidirectional: + num_buckets = self.num_buckets // 2 + rel_buckets = (rel_pos > 0).long() * num_buckets + rel_pos = torch.abs(rel_pos) + else: + num_buckets = self.num_buckets + rel_buckets = 0 + rel_pos = -torch.min(rel_pos, torch.zeros_like(rel_pos)) + + # embeddings for small and large positions + max_exact = num_buckets // 2 + rel_pos_large = max_exact + (torch.log(rel_pos.float() / max_exact) / + math.log(self.max_dist / max_exact) * + (num_buckets - max_exact)).long() + rel_pos_large = torch.min( + rel_pos_large, torch.full_like(rel_pos_large, num_buckets - 1)) + rel_buckets += torch.where(rel_pos < max_exact, rel_pos, rel_pos_large) + return rel_buckets + + +class T5Encoder(nn.Module): + + def __init__(self, + vocab, + dim, + dim_attn, + dim_ffn, + num_heads, + num_layers, + num_buckets, + shared_pos=True, + dropout=0.1): + super(T5Encoder, self).__init__() + self.dim = dim + self.dim_attn = dim_attn + self.dim_ffn = dim_ffn + self.num_heads = num_heads + self.num_layers = num_layers + self.num_buckets = num_buckets + self.shared_pos = shared_pos + + # layers + self.token_embedding = vocab if isinstance(vocab, nn.Embedding) \ + else nn.Embedding(vocab, dim) + self.pos_embedding = T5RelativeEmbedding( + num_buckets, num_heads, bidirectional=True) if shared_pos else None + self.dropout = nn.Dropout(dropout) + self.blocks = nn.ModuleList([ + T5SelfAttention(dim, dim_attn, dim_ffn, num_heads, num_buckets, + shared_pos, dropout) for _ in range(num_layers) + ]) + self.norm = T5LayerNorm(dim) + + # initialize weights + self.apply(init_weights) + + def forward(self, ids, mask=None): + x = self.token_embedding(ids) + x = self.dropout(x) + e = self.pos_embedding(x.size(1), + x.size(1)) if self.shared_pos else None + for block in self.blocks: + x = block(x, mask, pos_bias=e) + x = self.norm(x) + x = self.dropout(x) + return x + + +class T5Decoder(nn.Module): + + def __init__(self, + vocab, + dim, + dim_attn, + dim_ffn, + num_heads, + num_layers, + num_buckets, + shared_pos=True, + dropout=0.1): + super(T5Decoder, self).__init__() + self.dim = dim + self.dim_attn = dim_attn + self.dim_ffn = dim_ffn + self.num_heads = num_heads + self.num_layers = num_layers + self.num_buckets = num_buckets + self.shared_pos = shared_pos + + # layers + self.token_embedding = vocab if isinstance(vocab, nn.Embedding) \ + else nn.Embedding(vocab, dim) + self.pos_embedding = T5RelativeEmbedding( + num_buckets, num_heads, bidirectional=False) if shared_pos else None + self.dropout = nn.Dropout(dropout) + self.blocks = nn.ModuleList([ + T5CrossAttention(dim, dim_attn, dim_ffn, num_heads, num_buckets, + shared_pos, dropout) for _ in range(num_layers) + ]) + self.norm = T5LayerNorm(dim) + + # initialize weights + self.apply(init_weights) + + def forward(self, ids, mask=None, encoder_states=None, encoder_mask=None): + b, s = ids.size() + + # causal mask + if mask is None: + mask = torch.tril(torch.ones(1, s, s).to(ids.device)) + elif mask.ndim == 2: + mask = torch.tril(mask.unsqueeze(1).expand(-1, s, -1)) + + # layers + x = self.token_embedding(ids) + x = self.dropout(x) + e = self.pos_embedding(x.size(1), + x.size(1)) if self.shared_pos else None + for block in self.blocks: + x = block(x, mask, encoder_states, encoder_mask, pos_bias=e) + x = self.norm(x) + x = self.dropout(x) + return x + + +class T5Model(nn.Module): + + def __init__(self, + vocab_size, + dim, + dim_attn, + dim_ffn, + num_heads, + encoder_layers, + decoder_layers, + num_buckets, + shared_pos=True, + dropout=0.1): + super(T5Model, self).__init__() + self.vocab_size = vocab_size + self.dim = dim + self.dim_attn = dim_attn + self.dim_ffn = dim_ffn + self.num_heads = num_heads + self.encoder_layers = encoder_layers + self.decoder_layers = decoder_layers + self.num_buckets = num_buckets + + # layers + self.token_embedding = nn.Embedding(vocab_size, dim) + self.encoder = T5Encoder(self.token_embedding, dim, dim_attn, dim_ffn, + num_heads, encoder_layers, num_buckets, + shared_pos, dropout) + self.decoder = T5Decoder(self.token_embedding, dim, dim_attn, dim_ffn, + num_heads, decoder_layers, num_buckets, + shared_pos, dropout) + self.head = nn.Linear(dim, vocab_size, bias=False) + + # initialize weights + self.apply(init_weights) + + def forward(self, encoder_ids, encoder_mask, decoder_ids, decoder_mask): + x = self.encoder(encoder_ids, encoder_mask) + x = self.decoder(decoder_ids, decoder_mask, x, encoder_mask) + x = self.head(x) + return x + + +def _t5(name, + encoder_only=False, + decoder_only=False, + return_tokenizer=False, + tokenizer_kwargs={}, + dtype=torch.float32, + device='cpu', + **kwargs): + # sanity check + assert not (encoder_only and decoder_only) + + # params + if encoder_only: + model_cls = T5Encoder + kwargs['vocab'] = kwargs.pop('vocab_size') + kwargs['num_layers'] = kwargs.pop('encoder_layers') + _ = kwargs.pop('decoder_layers') + elif decoder_only: + model_cls = T5Decoder + kwargs['vocab'] = kwargs.pop('vocab_size') + kwargs['num_layers'] = kwargs.pop('decoder_layers') + _ = kwargs.pop('encoder_layers') + else: + model_cls = T5Model + + # init model + with torch.device(device): + model = model_cls(**kwargs) + + # set device + model = model.to(dtype=dtype, device=device) + + # init tokenizer + if return_tokenizer: + from .tokenizers import HuggingfaceTokenizer + tokenizer = HuggingfaceTokenizer(f'google/{name}', **tokenizer_kwargs) + return model, tokenizer + else: + return model + + +def umt5_xxl(**kwargs): + cfg = dict( + vocab_size=256384, + dim=4096, + dim_attn=4096, + dim_ffn=10240, + num_heads=64, + encoder_layers=24, + decoder_layers=24, + num_buckets=32, + shared_pos=False, + dropout=0.1) + cfg.update(**kwargs) + return _t5('umt5-xxl', **cfg) + + +class T5EncoderModel: + + def __init__( + self, + text_len, + dtype=torch.bfloat16, + device=None, + checkpoint_path=None, + tokenizer_path=None, + shard_fn=None, + ): + self.text_len = text_len + self.dtype = dtype + if device is None: + device = torch.cuda.current_device() if torch.cuda.is_available() else torch.device("cpu") + self.device = device + self.checkpoint_path = checkpoint_path + self.tokenizer_path = tokenizer_path + + # init model + model = umt5_xxl( + encoder_only=True, + return_tokenizer=False, + dtype=dtype, + device=device).eval().requires_grad_(False) + logging.info(f'loading {checkpoint_path}') + model.load_state_dict(torch.load(checkpoint_path, map_location='cpu')) + self.model = model + if shard_fn is not None: + self.model = shard_fn(self.model, sync_module_states=False) + else: + self.model.to(self.device) + # init tokenizer + self.tokenizer = HuggingfaceTokenizer( + name=tokenizer_path, seq_len=text_len, clean='whitespace') + + def __call__(self, texts, device): + ids, mask = self.tokenizer( + texts, return_mask=True, add_special_tokens=True) + ids = ids.to(device) + mask = mask.to(device) + seq_lens = mask.gt(0).sum(dim=1).long() + context = self.model(ids, mask) + return [u[:v] for u, v in zip(context, seq_lens)] diff --git a/wan_5b/modules/tokenizers.py b/wan_5b/modules/tokenizers.py new file mode 100644 index 0000000..121e591 --- /dev/null +++ b/wan_5b/modules/tokenizers.py @@ -0,0 +1,82 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import html +import string + +import ftfy +import regex as re +from transformers import AutoTokenizer + +__all__ = ['HuggingfaceTokenizer'] + + +def basic_clean(text): + text = ftfy.fix_text(text) + text = html.unescape(html.unescape(text)) + return text.strip() + + +def whitespace_clean(text): + text = re.sub(r'\s+', ' ', text) + text = text.strip() + return text + + +def canonicalize(text, keep_punctuation_exact_string=None): + text = text.replace('_', ' ') + if keep_punctuation_exact_string: + text = keep_punctuation_exact_string.join( + part.translate(str.maketrans('', '', string.punctuation)) + for part in text.split(keep_punctuation_exact_string)) + else: + text = text.translate(str.maketrans('', '', string.punctuation)) + text = text.lower() + text = re.sub(r'\s+', ' ', text) + return text.strip() + + +class HuggingfaceTokenizer: + + def __init__(self, name, seq_len=None, clean=None, **kwargs): + assert clean in (None, 'whitespace', 'lower', 'canonicalize') + self.name = name + self.seq_len = seq_len + self.clean = clean + + # init tokenizer + self.tokenizer = AutoTokenizer.from_pretrained(name, **kwargs) + self.vocab_size = self.tokenizer.vocab_size + + def __call__(self, sequence, **kwargs): + return_mask = kwargs.pop('return_mask', False) + + # arguments + _kwargs = {'return_tensors': 'pt'} + if self.seq_len is not None: + _kwargs.update({ + 'padding': 'max_length', + 'truncation': True, + 'max_length': self.seq_len + }) + _kwargs.update(**kwargs) + + # tokenization + if isinstance(sequence, str): + sequence = [sequence] + if self.clean: + sequence = [self._clean(u) for u in sequence] + ids = self.tokenizer(sequence, **_kwargs) + + # output + if return_mask: + return ids.input_ids, ids.attention_mask + else: + return ids.input_ids + + def _clean(self, text): + if self.clean == 'whitespace': + text = whitespace_clean(basic_clean(text)) + elif self.clean == 'lower': + text = whitespace_clean(basic_clean(text)).lower() + elif self.clean == 'canonicalize': + text = canonicalize(basic_clean(text)) + return text diff --git a/wan_5b/modules/vae2_1.py b/wan_5b/modules/vae2_1.py new file mode 100644 index 0000000..a5990fa --- /dev/null +++ b/wan_5b/modules/vae2_1.py @@ -0,0 +1,658 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import logging + +import torch +import torch.cuda.amp as amp +import torch.nn as nn +import torch.nn.functional as F +from einops import rearrange + +__all__ = [ + 'Wan2_1_VAE', +] + +CACHE_T = 2 + + +class CausalConv3d(nn.Conv3d): + """ + Causal 3d convolusion. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._padding = (self.padding[2], self.padding[2], self.padding[1], + self.padding[1], 2 * self.padding[0], 0) + self.padding = (0, 0, 0) + + def forward(self, x, cache_x=None): + padding = list(self._padding) + if cache_x is not None and self._padding[4] > 0: + cache_x = cache_x.to(x.device) + x = torch.cat([cache_x, x], dim=2) + padding[4] -= cache_x.shape[2] + x = F.pad(x, padding) + + return super().forward(x) + + +class RMS_norm(nn.Module): + + def __init__(self, dim, channel_first=True, images=True, bias=False): + super().__init__() + broadcastable_dims = (1, 1, 1) if not images else (1, 1) + shape = (dim, *broadcastable_dims) if channel_first else (dim,) + + self.channel_first = channel_first + self.scale = dim**0.5 + self.gamma = nn.Parameter(torch.ones(shape)) + self.bias = nn.Parameter(torch.zeros(shape)) if bias else 0. + + def forward(self, x): + return F.normalize( + x, dim=(1 if self.channel_first else + -1)) * self.scale * self.gamma + self.bias + + +class Upsample(nn.Upsample): + + def forward(self, x): + """ + Fix bfloat16 support for nearest neighbor interpolation. + """ + return super().forward(x.float()).type_as(x) + + +class Resample(nn.Module): + + def __init__(self, dim, mode): + assert mode in ('none', 'upsample2d', 'upsample3d', 'downsample2d', + 'downsample3d') + super().__init__() + self.dim = dim + self.mode = mode + + # layers + if mode == 'upsample2d': + self.resample = nn.Sequential( + Upsample(scale_factor=(2., 2.), mode='nearest-exact'), + nn.Conv2d(dim, dim // 2, 3, padding=1)) + elif mode == 'upsample3d': + self.resample = nn.Sequential( + Upsample(scale_factor=(2., 2.), mode='nearest-exact'), + nn.Conv2d(dim, dim // 2, 3, padding=1)) + self.time_conv = CausalConv3d( + dim, dim * 2, (3, 1, 1), padding=(1, 0, 0)) + + elif mode == 'downsample2d': + self.resample = nn.Sequential( + nn.ZeroPad2d((0, 1, 0, 1)), + nn.Conv2d(dim, dim, 3, stride=(2, 2))) + elif mode == 'downsample3d': + self.resample = nn.Sequential( + nn.ZeroPad2d((0, 1, 0, 1)), + nn.Conv2d(dim, dim, 3, stride=(2, 2))) + self.time_conv = CausalConv3d( + dim, dim, (3, 1, 1), stride=(2, 1, 1), padding=(0, 0, 0)) + + else: + self.resample = nn.Identity() + + def forward(self, x, feat_cache=None, feat_idx=[0]): + b, c, t, h, w = x.size() + if self.mode == 'upsample3d': + if feat_cache is not None: + idx = feat_idx[0] + if feat_cache[idx] is None: + feat_cache[idx] = 'Rep' + feat_idx[0] += 1 + else: + + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[ + idx] is not None and feat_cache[idx] != 'Rep': + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + if cache_x.shape[2] < 2 and feat_cache[ + idx] is not None and feat_cache[idx] == 'Rep': + cache_x = torch.cat([ + torch.zeros_like(cache_x).to(cache_x.device), + cache_x + ], + dim=2) + if feat_cache[idx] == 'Rep': + x = self.time_conv(x) + else: + x = self.time_conv(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + + x = x.reshape(b, 2, c, t, h, w) + x = torch.stack((x[:, 0, :, :, :, :], x[:, 1, :, :, :, :]), + 3) + x = x.reshape(b, c, t * 2, h, w) + t = x.shape[2] + x = rearrange(x, 'b c t h w -> (b t) c h w') + x = self.resample(x) + x = rearrange(x, '(b t) c h w -> b c t h w', t=t) + + if self.mode == 'downsample3d': + if feat_cache is not None: + idx = feat_idx[0] + if feat_cache[idx] is None: + feat_cache[idx] = x.clone() + feat_idx[0] += 1 + else: + + cache_x = x[:, :, -1:, :, :].clone() + + x = self.time_conv( + torch.cat([feat_cache[idx][:, :, -1:, :, :], x], 2)) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + return x + + def init_weight(self, conv): + conv_weight = conv.weight + nn.init.zeros_(conv_weight) + c1, c2, t, h, w = conv_weight.size() + one_matrix = torch.eye(c1, c2) + init_matrix = one_matrix + nn.init.zeros_(conv_weight) + conv_weight.data[:, :, 1, 0, 0] = init_matrix + conv.weight.data.copy_(conv_weight) + nn.init.zeros_(conv.bias.data) + + def init_weight2(self, conv): + conv_weight = conv.weight.data + nn.init.zeros_(conv_weight) + c1, c2, t, h, w = conv_weight.size() + init_matrix = torch.eye(c1 // 2, c2) + conv_weight[:c1 // 2, :, -1, 0, 0] = init_matrix + conv_weight[c1 // 2:, :, -1, 0, 0] = init_matrix + conv.weight.data.copy_(conv_weight) + nn.init.zeros_(conv.bias.data) + + +class ResidualBlock(nn.Module): + + def __init__(self, in_dim, out_dim, dropout=0.0): + super().__init__() + self.in_dim = in_dim + self.out_dim = out_dim + + # layers + self.residual = nn.Sequential( + RMS_norm(in_dim, images=False), nn.SiLU(), + CausalConv3d(in_dim, out_dim, 3, padding=1), + RMS_norm(out_dim, images=False), nn.SiLU(), nn.Dropout(dropout), + CausalConv3d(out_dim, out_dim, 3, padding=1)) + self.shortcut = CausalConv3d(in_dim, out_dim, 1) \ + if in_dim != out_dim else nn.Identity() + + def forward(self, x, feat_cache=None, feat_idx=[0]): + h = self.shortcut(x) + for layer in self.residual: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + return x + h + + +class AttentionBlock(nn.Module): + """ + Causal self-attention with a single head. + """ + + def __init__(self, dim): + super().__init__() + self.dim = dim + + # layers + self.norm = RMS_norm(dim) + self.to_qkv = nn.Conv2d(dim, dim * 3, 1) + self.proj = nn.Conv2d(dim, dim, 1) + + # zero out the last layer params + nn.init.zeros_(self.proj.weight) + + def forward(self, x): + identity = x + b, c, t, h, w = x.size() + x = rearrange(x, 'b c t h w -> (b t) c h w') + x = self.norm(x) + # compute query, key, value + q, k, v = self.to_qkv(x).reshape(b * t, 1, c * 3, + -1).permute(0, 1, 3, + 2).contiguous().chunk( + 3, dim=-1) + + # apply attention + x = F.scaled_dot_product_attention( + q, + k, + v, + ) + x = x.squeeze(1).permute(0, 2, 1).reshape(b * t, c, h, w) + + # output + x = self.proj(x) + x = rearrange(x, '(b t) c h w-> b c t h w', t=t) + return x + identity + + +class Encoder3d(nn.Module): + + def __init__(self, + dim=128, + z_dim=4, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[True, True, False], + dropout=0.0): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_downsample = temperal_downsample + + # dimensions + dims = [dim * u for u in [1] + dim_mult] + scale = 1.0 + + # init block + self.conv1 = CausalConv3d(3, dims[0], 3, padding=1) + + # downsample blocks + downsamples = [] + for i, (in_dim, out_dim) in enumerate(zip(dims[:-1], dims[1:])): + # residual (+attention) blocks + for _ in range(num_res_blocks): + downsamples.append(ResidualBlock(in_dim, out_dim, dropout)) + if scale in attn_scales: + downsamples.append(AttentionBlock(out_dim)) + in_dim = out_dim + + # downsample block + if i != len(dim_mult) - 1: + mode = 'downsample3d' if temperal_downsample[ + i] else 'downsample2d' + downsamples.append(Resample(out_dim, mode=mode)) + scale /= 2.0 + self.downsamples = nn.Sequential(*downsamples) + + # middle blocks + self.middle = nn.Sequential( + ResidualBlock(out_dim, out_dim, dropout), AttentionBlock(out_dim), + ResidualBlock(out_dim, out_dim, dropout)) + + # output blocks + self.head = nn.Sequential( + RMS_norm(out_dim, images=False), nn.SiLU(), + CausalConv3d(out_dim, z_dim, 3, padding=1)) + + def forward(self, x, feat_cache=None, feat_idx=[0]): + if feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + x = self.conv1(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = self.conv1(x) + + ## downsamples + for layer in self.downsamples: + if feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## middle + for layer in self.middle: + if isinstance(layer, ResidualBlock) and feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## head + for layer in self.head: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + return x + + +class Decoder3d(nn.Module): + + def __init__(self, + dim=128, + z_dim=4, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_upsample=[False, True, True], + dropout=0.0): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_upsample = temperal_upsample + + # dimensions + dims = [dim * u for u in [dim_mult[-1]] + dim_mult[::-1]] + scale = 1.0 / 2**(len(dim_mult) - 2) + + # init block + self.conv1 = CausalConv3d(z_dim, dims[0], 3, padding=1) + + # middle blocks + self.middle = nn.Sequential( + ResidualBlock(dims[0], dims[0], dropout), AttentionBlock(dims[0]), + ResidualBlock(dims[0], dims[0], dropout)) + + # upsample blocks + upsamples = [] + for i, (in_dim, out_dim) in enumerate(zip(dims[:-1], dims[1:])): + # residual (+attention) blocks + if i == 1 or i == 2 or i == 3: + in_dim = in_dim // 2 + for _ in range(num_res_blocks + 1): + upsamples.append(ResidualBlock(in_dim, out_dim, dropout)) + if scale in attn_scales: + upsamples.append(AttentionBlock(out_dim)) + in_dim = out_dim + + # upsample block + if i != len(dim_mult) - 1: + mode = 'upsample3d' if temperal_upsample[i] else 'upsample2d' + upsamples.append(Resample(out_dim, mode=mode)) + scale *= 2.0 + self.upsamples = nn.Sequential(*upsamples) + + # output blocks + self.head = nn.Sequential( + RMS_norm(out_dim, images=False), nn.SiLU(), + CausalConv3d(out_dim, 3, 3, padding=1)) + + def forward(self, x, feat_cache=None, feat_idx=[0]): + ## conv1 + if feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + x = self.conv1(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = self.conv1(x) + + ## middle + for layer in self.middle: + if isinstance(layer, ResidualBlock) and feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## upsamples + for layer in self.upsamples: + if feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## head + for layer in self.head: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat([ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), cache_x + ], + dim=2) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + return x + + +def count_conv3d(model): + count = 0 + for m in model.modules(): + if isinstance(m, CausalConv3d): + count += 1 + return count + + +class WanVAE_(nn.Module): + + def __init__(self, + dim=128, + z_dim=4, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[True, True, False], + dropout=0.0): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_downsample = temperal_downsample + self.temperal_upsample = temperal_downsample[::-1] + + # modules + self.encoder = Encoder3d(dim, z_dim * 2, dim_mult, num_res_blocks, + attn_scales, self.temperal_downsample, dropout) + self.conv1 = CausalConv3d(z_dim * 2, z_dim * 2, 1) + self.conv2 = CausalConv3d(z_dim, z_dim, 1) + self.decoder = Decoder3d(dim, z_dim, dim_mult, num_res_blocks, + attn_scales, self.temperal_upsample, dropout) + + def forward(self, x): + mu, log_var = self.encode(x) + z = self.reparameterize(mu, log_var) + x_recon = self.decode(z) + return x_recon, mu, log_var + + def encode(self, x, scale): + self.clear_cache() + ## cache + t = x.shape[2] + iter_ = 1 + (t - 1) // 4 + # Split the encoder input over time as 1, 4, 4, 4, ... + for i in range(iter_): + self._enc_conv_idx = [0] + if i == 0: + out = self.encoder( + x[:, :, :1, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx) + else: + out_ = self.encoder( + x[:, :, 1 + 4 * (i - 1):1 + 4 * i, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx) + out = torch.cat([out, out_], 2) + mu, log_var = self.conv1(out).chunk(2, dim=1) + if isinstance(scale[0], torch.Tensor): + mu = (mu - scale[0].view(1, self.z_dim, 1, 1, 1)) * scale[1].view( + 1, self.z_dim, 1, 1, 1) + else: + mu = (mu - scale[0]) * scale[1] + self.clear_cache() + return mu + + def decode(self, z, scale): + self.clear_cache() + # z: [b,c,t,h,w] + if isinstance(scale[0], torch.Tensor): + z = z / scale[1].view(1, self.z_dim, 1, 1, 1) + scale[0].view( + 1, self.z_dim, 1, 1, 1) + else: + z = z / scale[1] + scale[0] + iter_ = z.shape[2] + x = self.conv2(z) + for i in range(iter_): + self._conv_idx = [0] + if i == 0: + out = self.decoder( + x[:, :, i:i + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx) + else: + out_ = self.decoder( + x[:, :, i:i + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx) + out = torch.cat([out, out_], 2) + self.clear_cache() + return out + + def reparameterize(self, mu, log_var): + std = torch.exp(0.5 * log_var) + eps = torch.randn_like(std) + return eps * std + mu + + def sample(self, imgs, deterministic=False): + mu, log_var = self.encode(imgs) + if deterministic: + return mu + std = torch.exp(0.5 * log_var.clamp(-30.0, 20.0)) + return mu + std * torch.randn_like(std) + + def clear_cache(self): + self._conv_num = count_conv3d(self.decoder) + self._conv_idx = [0] + self._feat_map = [None] * self._conv_num + #cache encode + self._enc_conv_num = count_conv3d(self.encoder) + self._enc_conv_idx = [0] + self._enc_feat_map = [None] * self._enc_conv_num + + +def _video_vae(pretrained_path=None, z_dim=None, device='cpu', **kwargs): + """ + Autoencoder3d adapted from Stable Diffusion 1.x, 2.x and XL. + """ + # params + cfg = dict( + dim=96, + z_dim=z_dim, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[False, True, True], + dropout=0.0) + cfg.update(**kwargs) + + # init model + with torch.device('meta'): + model = WanVAE_(**cfg) + + # load checkpoint + logging.info(f'loading {pretrained_path}') + model.load_state_dict( + torch.load(pretrained_path, map_location=device), assign=True) + + return model + + +class Wan2_1_VAE: + + def __init__(self, + z_dim=16, + vae_pth='cache/vae_step_411000.pth', + dtype=torch.float, + device="cuda"): + self.dtype = dtype + self.device = device + + mean = [ + -0.7571, -0.7089, -0.9113, 0.1075, -0.1745, 0.9653, -0.1517, 1.5508, + 0.4134, -0.0715, 0.5517, -0.3632, -0.1922, -0.9497, 0.2503, -0.2921 + ] + std = [ + 2.8184, 1.4541, 2.3275, 2.6558, 1.2196, 1.7708, 2.6052, 2.0743, + 3.2687, 2.1526, 2.8652, 1.5579, 1.6382, 1.1253, 2.8251, 1.9160 + ] + self.mean = torch.tensor(mean, dtype=dtype, device=device) + self.std = torch.tensor(std, dtype=dtype, device=device) + self.scale = [self.mean, 1.0 / self.std] + + # init model + self.model = _video_vae( + pretrained_path=vae_pth, + z_dim=z_dim, + ).eval().requires_grad_(False).to(device) + + def encode(self, videos): + """ + videos: A list of videos each with shape [C, T, H, W]. + """ + with amp.autocast(dtype=self.dtype): + return [ + self.model.encode(u.unsqueeze(0), self.scale).float().squeeze(0) + for u in videos + ] + + def decode(self, zs): + with amp.autocast(dtype=self.dtype): + return [ + self.model.decode(u.unsqueeze(0), + self.scale).float().clamp_(-1, 1).squeeze(0) + for u in zs + ] diff --git a/wan_5b/modules/vae2_2.py b/wan_5b/modules/vae2_2.py new file mode 100644 index 0000000..2237acc --- /dev/null +++ b/wan_5b/modules/vae2_2.py @@ -0,0 +1,1050 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import logging + +import torch +import torch.cuda.amp as amp +import torch.nn as nn +import torch.nn.functional as F +from einops import rearrange + +__all__ = [ + "Wan2_2_VAE", +] + +CACHE_T = 2 + + +class CausalConv3d(nn.Conv3d): + """ + Causal 3d convolusion. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._padding = ( + self.padding[2], + self.padding[2], + self.padding[1], + self.padding[1], + 2 * self.padding[0], + 0, + ) + self.padding = (0, 0, 0) + + def forward(self, x, cache_x=None): + padding = list(self._padding) + if cache_x is not None and self._padding[4] > 0: + cache_x = cache_x.to(x.device) + x = torch.cat([cache_x, x], dim=2) + padding[4] -= cache_x.shape[2] + x = F.pad(x, padding) + + return super().forward(x) + + +class RMS_norm(nn.Module): + + def __init__(self, dim, channel_first=True, images=True, bias=False): + super().__init__() + broadcastable_dims = (1, 1, 1) if not images else (1, 1) + shape = (dim, *broadcastable_dims) if channel_first else (dim,) + + self.channel_first = channel_first + self.scale = dim**0.5 + self.gamma = nn.Parameter(torch.ones(shape)) + self.bias = nn.Parameter(torch.zeros(shape)) if bias else 0.0 + + def forward(self, x): + return (F.normalize(x, dim=(1 if self.channel_first else -1)) * + self.scale * self.gamma + self.bias) + + +class Upsample(nn.Upsample): + + def forward(self, x): + """ + Fix bfloat16 support for nearest neighbor interpolation. + """ + return super().forward(x.float()).type_as(x) + + +class Resample(nn.Module): + + def __init__(self, dim, mode): + assert mode in ( + "none", + "upsample2d", + "upsample3d", + "downsample2d", + "downsample3d", + ) + super().__init__() + self.dim = dim + self.mode = mode + + # layers + if mode == "upsample2d": + self.resample = nn.Sequential( + Upsample(scale_factor=(2.0, 2.0), mode="nearest-exact"), + nn.Conv2d(dim, dim, 3, padding=1), + ) + elif mode == "upsample3d": + self.resample = nn.Sequential( + Upsample(scale_factor=(2.0, 2.0), mode="nearest-exact"), + nn.Conv2d(dim, dim, 3, padding=1), + ) + self.time_conv = CausalConv3d( + dim, dim * 2, (3, 1, 1), padding=(1, 0, 0)) + elif mode == "downsample2d": + self.resample = nn.Sequential( + nn.ZeroPad2d((0, 1, 0, 1)), + nn.Conv2d(dim, dim, 3, stride=(2, 2))) + elif mode == "downsample3d": + self.resample = nn.Sequential( + nn.ZeroPad2d((0, 1, 0, 1)), + nn.Conv2d(dim, dim, 3, stride=(2, 2))) + self.time_conv = CausalConv3d( + dim, dim, (3, 1, 1), stride=(2, 1, 1), padding=(0, 0, 0)) + else: + self.resample = nn.Identity() + + def forward(self, x, feat_cache=None, feat_idx=[0]): + b, c, t, h, w = x.size() + if self.mode == "upsample3d": + if feat_cache is not None: + idx = feat_idx[0] + if feat_cache[idx] is None: + feat_cache[idx] = "Rep" + feat_idx[0] += 1 + else: + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if (cache_x.shape[2] < 2 and feat_cache[idx] is not None and + feat_cache[idx] != "Rep"): + # cache last frame of last two chunk + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + if (cache_x.shape[2] < 2 and feat_cache[idx] is not None and + feat_cache[idx] == "Rep"): + cache_x = torch.cat( + [ + torch.zeros_like(cache_x).to(cache_x.device), + cache_x + ], + dim=2, + ) + if feat_cache[idx] == "Rep": + x = self.time_conv(x) + else: + x = self.time_conv(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + x = x.reshape(b, 2, c, t, h, w) + x = torch.stack((x[:, 0, :, :, :, :], x[:, 1, :, :, :, :]), + 3) + x = x.reshape(b, c, t * 2, h, w) + t = x.shape[2] + x = rearrange(x, "b c t h w -> (b t) c h w") + x = self.resample(x) + x = rearrange(x, "(b t) c h w -> b c t h w", t=t) + + if self.mode == "downsample3d": + if feat_cache is not None: + idx = feat_idx[0] + if feat_cache[idx] is None: + feat_cache[idx] = x.clone() + feat_idx[0] += 1 + else: + cache_x = x[:, :, -1:, :, :].clone() + x = self.time_conv( + torch.cat([feat_cache[idx][:, :, -1:, :, :], x], 2)) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + return x + + def init_weight(self, conv): + conv_weight = conv.weight.detach().clone() + nn.init.zeros_(conv_weight) + c1, c2, t, h, w = conv_weight.size() + one_matrix = torch.eye(c1, c2) + init_matrix = one_matrix + nn.init.zeros_(conv_weight) + conv_weight.data[:, :, 1, 0, 0] = init_matrix + conv.weight = nn.Parameter(conv_weight) + nn.init.zeros_(conv.bias.data) + + def init_weight2(self, conv): + conv_weight = conv.weight.data.detach().clone() + nn.init.zeros_(conv_weight) + c1, c2, t, h, w = conv_weight.size() + init_matrix = torch.eye(c1 // 2, c2) + conv_weight[:c1 // 2, :, -1, 0, 0] = init_matrix + conv_weight[c1 // 2:, :, -1, 0, 0] = init_matrix + conv.weight = nn.Parameter(conv_weight) + nn.init.zeros_(conv.bias.data) + + +class ResidualBlock(nn.Module): + + def __init__(self, in_dim, out_dim, dropout=0.0): + super().__init__() + self.in_dim = in_dim + self.out_dim = out_dim + + # layers + self.residual = nn.Sequential( + RMS_norm(in_dim, images=False), + nn.SiLU(), + CausalConv3d(in_dim, out_dim, 3, padding=1), + RMS_norm(out_dim, images=False), + nn.SiLU(), + nn.Dropout(dropout), + CausalConv3d(out_dim, out_dim, 3, padding=1), + ) + self.shortcut = ( + CausalConv3d(in_dim, out_dim, 1) + if in_dim != out_dim else nn.Identity()) + + def forward(self, x, feat_cache=None, feat_idx=[0]): + h = self.shortcut(x) + for layer in self.residual: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + # cache last frame of last two chunk + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + return x + h + + +class AttentionBlock(nn.Module): + """ + Causal self-attention with a single head. + """ + + def __init__(self, dim): + super().__init__() + self.dim = dim + + # layers + self.norm = RMS_norm(dim) + self.to_qkv = nn.Conv2d(dim, dim * 3, 1) + self.proj = nn.Conv2d(dim, dim, 1) + + # zero out the last layer params + nn.init.zeros_(self.proj.weight) + + def forward(self, x): + identity = x + b, c, t, h, w = x.size() + x = rearrange(x, "b c t h w -> (b t) c h w") + x = self.norm(x) + # compute query, key, value + q, k, v = ( + self.to_qkv(x).reshape(b * t, 1, c * 3, + -1).permute(0, 1, 3, + 2).contiguous().chunk(3, dim=-1)) + + # apply attention + x = F.scaled_dot_product_attention( + q, + k, + v, + ) + x = x.squeeze(1).permute(0, 2, 1).reshape(b * t, c, h, w) + + # output + x = self.proj(x) + x = rearrange(x, "(b t) c h w-> b c t h w", t=t) + return x + identity + + +def patchify(x, patch_size): + if patch_size == 1: + return x + if x.dim() == 4: + x = rearrange( + x, "b c (h q) (w r) -> b (c r q) h w", q=patch_size, r=patch_size) + elif x.dim() == 5: + x = rearrange( + x, + "b c f (h q) (w r) -> b (c r q) f h w", + q=patch_size, + r=patch_size, + ) + else: + raise ValueError(f"Invalid input shape: {x.shape}") + + return x + + +def unpatchify(x, patch_size): + if patch_size == 1: + return x + + if x.dim() == 4: + x = rearrange( + x, "b (c r q) h w -> b c (h q) (w r)", q=patch_size, r=patch_size) + elif x.dim() == 5: + x = rearrange( + x, + "b (c r q) f h w -> b c f (h q) (w r)", + q=patch_size, + r=patch_size, + ) + return x + + +class AvgDown3D(nn.Module): + + def __init__( + self, + in_channels, + out_channels, + factor_t, + factor_s=1, + ): + super().__init__() + self.in_channels = in_channels + self.out_channels = out_channels + self.factor_t = factor_t + self.factor_s = factor_s + self.factor = self.factor_t * self.factor_s * self.factor_s + + assert in_channels * self.factor % out_channels == 0 + self.group_size = in_channels * self.factor // out_channels + + def forward(self, x: torch.Tensor) -> torch.Tensor: + pad_t = (self.factor_t - x.shape[2] % self.factor_t) % self.factor_t + pad = (0, 0, 0, 0, pad_t, 0) + x = F.pad(x, pad) + B, C, T, H, W = x.shape + x = x.view( + B, + C, + T // self.factor_t, + self.factor_t, + H // self.factor_s, + self.factor_s, + W // self.factor_s, + self.factor_s, + ) + x = x.permute(0, 1, 3, 5, 7, 2, 4, 6).contiguous() + x = x.view( + B, + C * self.factor, + T // self.factor_t, + H // self.factor_s, + W // self.factor_s, + ) + x = x.view( + B, + self.out_channels, + self.group_size, + T // self.factor_t, + H // self.factor_s, + W // self.factor_s, + ) + x = x.mean(dim=2) + return x + + +class DupUp3D(nn.Module): + + def __init__( + self, + in_channels: int, + out_channels: int, + factor_t, + factor_s=1, + ): + super().__init__() + self.in_channels = in_channels + self.out_channels = out_channels + + self.factor_t = factor_t + self.factor_s = factor_s + self.factor = self.factor_t * self.factor_s * self.factor_s + + assert out_channels * self.factor % in_channels == 0 + self.repeats = out_channels * self.factor // in_channels + + def forward(self, x: torch.Tensor, first_chunk=False) -> torch.Tensor: + x = x.repeat_interleave(self.repeats, dim=1) + x = x.view( + x.size(0), + self.out_channels, + self.factor_t, + self.factor_s, + self.factor_s, + x.size(2), + x.size(3), + x.size(4), + ) + x = x.permute(0, 1, 5, 2, 6, 3, 7, 4).contiguous() + x = x.view( + x.size(0), + self.out_channels, + x.size(2) * self.factor_t, + x.size(4) * self.factor_s, + x.size(6) * self.factor_s, + ) + if first_chunk: + x = x[:, :, self.factor_t - 1:, :, :] + return x + + +class Down_ResidualBlock(nn.Module): + + def __init__(self, + in_dim, + out_dim, + dropout, + mult, + temperal_downsample=False, + down_flag=False): + super().__init__() + + # Shortcut path with downsample + self.avg_shortcut = AvgDown3D( + in_dim, + out_dim, + factor_t=2 if temperal_downsample else 1, + factor_s=2 if down_flag else 1, + ) + + # Main path with residual blocks and downsample + downsamples = [] + for _ in range(mult): + downsamples.append(ResidualBlock(in_dim, out_dim, dropout)) + in_dim = out_dim + + # Add the final downsample block + if down_flag: + mode = "downsample3d" if temperal_downsample else "downsample2d" + downsamples.append(Resample(out_dim, mode=mode)) + + self.downsamples = nn.Sequential(*downsamples) + + def forward(self, x, feat_cache=None, feat_idx=[0]): + x_copy = x.clone() + for module in self.downsamples: + x = module(x, feat_cache, feat_idx) + + return x + self.avg_shortcut(x_copy) + + +class Up_ResidualBlock(nn.Module): + + def __init__(self, + in_dim, + out_dim, + dropout, + mult, + temperal_upsample=False, + up_flag=False): + super().__init__() + # Shortcut path with upsample + if up_flag: + self.avg_shortcut = DupUp3D( + in_dim, + out_dim, + factor_t=2 if temperal_upsample else 1, + factor_s=2 if up_flag else 1, + ) + else: + self.avg_shortcut = None + + # Main path with residual blocks and upsample + upsamples = [] + for _ in range(mult): + upsamples.append(ResidualBlock(in_dim, out_dim, dropout)) + in_dim = out_dim + + # Add the final upsample block + if up_flag: + mode = "upsample3d" if temperal_upsample else "upsample2d" + upsamples.append(Resample(out_dim, mode=mode)) + + self.upsamples = nn.Sequential(*upsamples) + + def forward(self, x, feat_cache=None, feat_idx=[0], first_chunk=False): + x_main = x.clone() + for module in self.upsamples: + x_main = module(x_main, feat_cache, feat_idx) + if self.avg_shortcut is not None: + x_shortcut = self.avg_shortcut(x, first_chunk) + return x_main + x_shortcut + else: + return x_main + + +class Encoder3d(nn.Module): + + def __init__( + self, + dim=128, + z_dim=4, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[True, True, False], + dropout=0.0, + ): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_downsample = temperal_downsample + + # dimensions + dims = [dim * u for u in [1] + dim_mult] + scale = 1.0 + + # init block + self.conv1 = CausalConv3d(12, dims[0], 3, padding=1) + + # downsample blocks + downsamples = [] + for i, (in_dim, out_dim) in enumerate(zip(dims[:-1], dims[1:])): + t_down_flag = ( + temperal_downsample[i] + if i < len(temperal_downsample) else False) + downsamples.append( + Down_ResidualBlock( + in_dim=in_dim, + out_dim=out_dim, + dropout=dropout, + mult=num_res_blocks, + temperal_downsample=t_down_flag, + down_flag=i != len(dim_mult) - 1, + )) + scale /= 2.0 + self.downsamples = nn.Sequential(*downsamples) + + # middle blocks + self.middle = nn.Sequential( + ResidualBlock(out_dim, out_dim, dropout), + AttentionBlock(out_dim), + ResidualBlock(out_dim, out_dim, dropout), + ) + + # # output blocks + self.head = nn.Sequential( + RMS_norm(out_dim, images=False), + nn.SiLU(), + CausalConv3d(out_dim, z_dim, 3, padding=1), + ) + + def forward(self, x, feat_cache=None, feat_idx=[0]): + + if feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + x = self.conv1(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = self.conv1(x) + + ## downsamples + for layer in self.downsamples: + if feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## middle + for layer in self.middle: + if isinstance(layer, ResidualBlock) and feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## head + for layer in self.head: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + + return x + + +class Decoder3d(nn.Module): + + def __init__( + self, + dim=128, + z_dim=4, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_upsample=[False, True, True], + dropout=0.0, + ): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_upsample = temperal_upsample + + # dimensions + dims = [dim * u for u in [dim_mult[-1]] + dim_mult[::-1]] + scale = 1.0 / 2**(len(dim_mult) - 2) + # init block + self.conv1 = CausalConv3d(z_dim, dims[0], 3, padding=1) + + # middle blocks + self.middle = nn.Sequential( + ResidualBlock(dims[0], dims[0], dropout), + AttentionBlock(dims[0]), + ResidualBlock(dims[0], dims[0], dropout), + ) + + # upsample blocks + upsamples = [] + for i, (in_dim, out_dim) in enumerate(zip(dims[:-1], dims[1:])): + t_up_flag = temperal_upsample[i] if i < len( + temperal_upsample) else False + upsamples.append( + Up_ResidualBlock( + in_dim=in_dim, + out_dim=out_dim, + dropout=dropout, + mult=num_res_blocks + 1, + temperal_upsample=t_up_flag, + up_flag=i != len(dim_mult) - 1, + )) + self.upsamples = nn.Sequential(*upsamples) + + # output blocks + self.head = nn.Sequential( + RMS_norm(out_dim, images=False), + nn.SiLU(), + CausalConv3d(out_dim, 12, 3, padding=1), + ) + + def forward(self, x, feat_cache=None, feat_idx=[0], first_chunk=False): + if feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + x = self.conv1(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = self.conv1(x) + + for layer in self.middle: + if isinstance(layer, ResidualBlock) and feat_cache is not None: + x = layer(x, feat_cache, feat_idx) + else: + x = layer(x) + + ## upsamples + for layer in self.upsamples: + if feat_cache is not None: + x = layer(x, feat_cache, feat_idx, first_chunk) + else: + x = layer(x) + + ## head + for layer in self.head: + if isinstance(layer, CausalConv3d) and feat_cache is not None: + idx = feat_idx[0] + cache_x = x[:, :, -CACHE_T:, :, :].clone() + if cache_x.shape[2] < 2 and feat_cache[idx] is not None: + cache_x = torch.cat( + [ + feat_cache[idx][:, :, -1, :, :].unsqueeze(2).to( + cache_x.device), + cache_x, + ], + dim=2, + ) + x = layer(x, feat_cache[idx]) + feat_cache[idx] = cache_x + feat_idx[0] += 1 + else: + x = layer(x) + return x + + +def count_conv3d(model): + count = 0 + for m in model.modules(): + if isinstance(m, CausalConv3d): + count += 1 + return count + + +class WanVAE_(nn.Module): + + def __init__( + self, + dim=160, + dec_dim=256, + z_dim=16, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[True, True, False], + dropout=0.0, + ): + super().__init__() + self.dim = dim + self.z_dim = z_dim + self.dim_mult = dim_mult + self.num_res_blocks = num_res_blocks + self.attn_scales = attn_scales + self.temperal_downsample = temperal_downsample + self.temperal_upsample = temperal_downsample[::-1] + + # modules + self.encoder = Encoder3d( + dim, + z_dim * 2, + dim_mult, + num_res_blocks, + attn_scales, + self.temperal_downsample, + dropout, + ) + self.conv1 = CausalConv3d(z_dim * 2, z_dim * 2, 1) + self.conv2 = CausalConv3d(z_dim, z_dim, 1) + self.decoder = Decoder3d( + dec_dim, + z_dim, + dim_mult, + num_res_blocks, + attn_scales, + self.temperal_upsample, + dropout, + ) + + def forward(self, x, scale=[0, 1]): + mu = self.encode(x, scale) + x_recon = self.decode(mu, scale) + return x_recon, mu + + def encode(self, x, scale): + self.clear_cache() + x = patchify(x, patch_size=2) + t = x.shape[2] + iter_ = 1 + (t - 1) // 4 + for i in range(iter_): + self._enc_conv_idx = [0] + if i == 0: + out = self.encoder( + x[:, :, :1, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx, + ) + else: + out_ = self.encoder( + x[:, :, 1 + 4 * (i - 1):1 + 4 * i, :, :], + feat_cache=self._enc_feat_map, + feat_idx=self._enc_conv_idx, + ) + out = torch.cat([out, out_], 2) + mu, log_var = self.conv1(out).chunk(2, dim=1) + if isinstance(scale[0], torch.Tensor): + mu = (mu - scale[0].view(1, self.z_dim, 1, 1, 1)) * scale[1].view( + 1, self.z_dim, 1, 1, 1) + else: + mu = (mu - scale[0]) * scale[1] + self.clear_cache() + return mu + + def decode(self, z, scale): + self.clear_cache() + if isinstance(scale[0], torch.Tensor): + z = z / scale[1].view(1, self.z_dim, 1, 1, 1) + scale[0].view( + 1, self.z_dim, 1, 1, 1) + else: + z = z / scale[1] + scale[0] + iter_ = z.shape[2] + x = self.conv2(z) + for i in range(iter_): + self._conv_idx = [0] + if i == 0: + out = self.decoder( + x[:, :, i:i + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + first_chunk=True, + ) + else: + out_ = self.decoder( + x[:, :, i:i + 1, :, :], + feat_cache=self._feat_map, + feat_idx=self._conv_idx, + ) + out = torch.cat([out, out_], 2) + out = unpatchify(out, patch_size=2) + self.clear_cache() + return out + + def reparameterize(self, mu, log_var): + std = torch.exp(0.5 * log_var) + eps = torch.randn_like(std) + return eps * std + mu + + def sample(self, imgs, deterministic=False): + mu, log_var = self.encode(imgs) + if deterministic: + return mu + std = torch.exp(0.5 * log_var.clamp(-30.0, 20.0)) + return mu + std * torch.randn_like(std) + + def clear_cache(self): + self._conv_num = count_conv3d(self.decoder) + self._conv_idx = [0] + self._feat_map = [None] * self._conv_num + # cache encode + self._enc_conv_num = count_conv3d(self.encoder) + self._enc_conv_idx = [0] + self._enc_feat_map = [None] * self._enc_conv_num + + +def _video_vae(pretrained_path=None, z_dim=48, dim=160, device="cpu", **kwargs): + # params + cfg = dict( + dim=dim, + z_dim=z_dim, + dim_mult=[1, 2, 4, 4], + num_res_blocks=2, + attn_scales=[], + temperal_downsample=[False, True, True], + dropout=0.0, + ) + cfg.update(**kwargs) + + # init model + with torch.device("meta"): + model = WanVAE_(**cfg) + + # load checkpoint + logging.info(f"loading {pretrained_path}") + model.load_state_dict( + torch.load(pretrained_path, map_location=device), assign=True) + + return model + + +class Wan2_2_VAE: + + def __init__( + self, + z_dim=48, + c_dim=160, + vae_pth=None, + dim_mult=[1, 2, 4, 4], + temperal_downsample=[False, True, True], + dtype=torch.float, + device="cuda", + ): + + self.dtype = dtype + self.device = device + + mean = torch.tensor( + [ + -0.2289, + -0.0052, + -0.1323, + -0.2339, + -0.2799, + 0.0174, + 0.1838, + 0.1557, + -0.1382, + 0.0542, + 0.2813, + 0.0891, + 0.1570, + -0.0098, + 0.0375, + -0.1825, + -0.2246, + -0.1207, + -0.0698, + 0.5109, + 0.2665, + -0.2108, + -0.2158, + 0.2502, + -0.2055, + -0.0322, + 0.1109, + 0.1567, + -0.0729, + 0.0899, + -0.2799, + -0.1230, + -0.0313, + -0.1649, + 0.0117, + 0.0723, + -0.2839, + -0.2083, + -0.0520, + 0.3748, + 0.0152, + 0.1957, + 0.1433, + -0.2944, + 0.3573, + -0.0548, + -0.1681, + -0.0667, + ], + dtype=dtype, + device=device, + ) + std = torch.tensor( + [ + 0.4765, + 1.0364, + 0.4514, + 1.1677, + 0.5313, + 0.4990, + 0.4818, + 0.5013, + 0.8158, + 1.0344, + 0.5894, + 1.0901, + 0.6885, + 0.6165, + 0.8454, + 0.4978, + 0.5759, + 0.3523, + 0.7135, + 0.6804, + 0.5833, + 1.4146, + 0.8986, + 0.5659, + 0.7069, + 0.5338, + 0.4889, + 0.4917, + 0.4069, + 0.4999, + 0.6866, + 0.4093, + 0.5709, + 0.6065, + 0.6415, + 0.4944, + 0.5726, + 1.2042, + 0.5458, + 1.6887, + 0.3971, + 1.0600, + 0.3943, + 0.5537, + 0.5444, + 0.4089, + 0.7468, + 0.7744, + ], + dtype=dtype, + device=device, + ) + self.scale = [mean, 1.0 / std] + + # init model + self.model = ( + _video_vae( + pretrained_path=vae_pth, + z_dim=z_dim, + dim=c_dim, + dim_mult=dim_mult, + temperal_downsample=temperal_downsample, + ).eval().requires_grad_(False).to(device)) + + def encode(self, videos): + try: + if not isinstance(videos, list): + raise TypeError("videos should be a list") + with amp.autocast(dtype=self.dtype): + return [ + self.model.encode(u.unsqueeze(0), + self.scale).float().squeeze(0) + for u in videos + ] + except TypeError as e: + logging.info(e) + return None + + def decode(self, zs): + try: + if not isinstance(zs, list): + raise TypeError("zs should be a list") + with amp.autocast(dtype=self.dtype): + return [ + self.model.decode(u.unsqueeze(0), + self.scale).float().clamp_(-1, + 1).squeeze(0) + for u in zs + ] + except TypeError as e: + logging.info(e) + return None diff --git a/wan_5b/text2video.py b/wan_5b/text2video.py new file mode 100644 index 0000000..7c79c66 --- /dev/null +++ b/wan_5b/text2video.py @@ -0,0 +1,378 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import gc +import logging +import math +import os +import random +import sys +import types +from contextlib import contextmanager +from functools import partial + +import torch +import torch.cuda.amp as amp +import torch.distributed as dist +from tqdm import tqdm + +from .distributed.fsdp import shard_model +from .distributed.sequence_parallel import sp_attn_forward, sp_dit_forward +from .distributed.util import get_world_size +from .modules.model import WanModel +from .modules.t5 import T5EncoderModel +from .modules.vae2_1 import Wan2_1_VAE +from .utils.fm_solvers import ( + FlowDPMSolverMultistepScheduler, + get_sampling_sigmas, + retrieve_timesteps, +) +from .utils.fm_solvers_unipc import FlowUniPCMultistepScheduler + + +class WanT2V: + + def __init__( + self, + config, + checkpoint_dir, + device_id=0, + rank=0, + t5_fsdp=False, + dit_fsdp=False, + use_sp=False, + t5_cpu=False, + init_on_cpu=True, + convert_model_dtype=False, + ): + r""" + Initializes the Wan text-to-video generation model components. + + Args: + config (EasyDict): + Object containing model parameters initialized from config.py + checkpoint_dir (`str`): + Path to directory containing model checkpoints + device_id (`int`, *optional*, defaults to 0): + Id of target GPU device + rank (`int`, *optional*, defaults to 0): + Process rank for distributed training + t5_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for T5 model + dit_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for DiT model + use_sp (`bool`, *optional*, defaults to False): + Enable distribution strategy of sequence parallel. + t5_cpu (`bool`, *optional*, defaults to False): + Whether to place T5 model on CPU. Only works without t5_fsdp. + init_on_cpu (`bool`, *optional*, defaults to True): + Enable initializing Transformer Model on CPU. Only works without FSDP or USP. + convert_model_dtype (`bool`, *optional*, defaults to False): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + """ + self.device = torch.device(f"cuda:{device_id}") + self.config = config + self.rank = rank + self.t5_cpu = t5_cpu + self.init_on_cpu = init_on_cpu + + self.num_train_timesteps = config.num_train_timesteps + self.boundary = config.boundary + self.param_dtype = config.param_dtype + + if t5_fsdp or dit_fsdp or use_sp: + self.init_on_cpu = False + + shard_fn = partial(shard_model, device_id=device_id) + self.text_encoder = T5EncoderModel( + text_len=config.text_len, + dtype=config.t5_dtype, + device=torch.device('cpu'), + checkpoint_path=os.path.join(checkpoint_dir, config.t5_checkpoint), + tokenizer_path=os.path.join(checkpoint_dir, config.t5_tokenizer), + shard_fn=shard_fn if t5_fsdp else None) + + self.vae_stride = config.vae_stride + self.patch_size = config.patch_size + self.vae = Wan2_1_VAE( + vae_pth=os.path.join(checkpoint_dir, config.vae_checkpoint), + device=self.device) + + logging.info(f"Creating WanModel from {checkpoint_dir}") + self.low_noise_model = WanModel.from_pretrained( + checkpoint_dir, subfolder=config.low_noise_checkpoint) + self.low_noise_model = self._configure_model( + model=self.low_noise_model, + use_sp=use_sp, + dit_fsdp=dit_fsdp, + shard_fn=shard_fn, + convert_model_dtype=convert_model_dtype) + + self.high_noise_model = WanModel.from_pretrained( + checkpoint_dir, subfolder=config.high_noise_checkpoint) + self.high_noise_model = self._configure_model( + model=self.high_noise_model, + use_sp=use_sp, + dit_fsdp=dit_fsdp, + shard_fn=shard_fn, + convert_model_dtype=convert_model_dtype) + if use_sp: + self.sp_size = get_world_size() + else: + self.sp_size = 1 + + self.sample_neg_prompt = config.sample_neg_prompt + + def _configure_model(self, model, use_sp, dit_fsdp, shard_fn, + convert_model_dtype): + """ + Configures a model object. This includes setting evaluation modes, + applying distributed parallel strategy, and handling device placement. + + Args: + model (torch.nn.Module): + The model instance to configure. + use_sp (`bool`): + Enable distribution strategy of sequence parallel. + dit_fsdp (`bool`): + Enable FSDP sharding for DiT model. + shard_fn (callable): + The function to apply FSDP sharding. + convert_model_dtype (`bool`): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + + Returns: + torch.nn.Module: + The configured model. + """ + model.eval().requires_grad_(False) + + if use_sp: + for block in model.blocks: + block.self_attn.forward = types.MethodType( + sp_attn_forward, block.self_attn) + model.forward = types.MethodType(sp_dit_forward, model) + + if dist.is_initialized(): + dist.barrier() + + if dit_fsdp: + model = shard_fn(model) + else: + if convert_model_dtype: + model.to(self.param_dtype) + if not self.init_on_cpu: + model.to(self.device) + + return model + + def _prepare_model_for_timestep(self, t, boundary, offload_model): + r""" + Prepares and returns the required model for the current timestep. + + Args: + t (torch.Tensor): + current timestep. + boundary (`int`): + The timestep threshold. If `t` is at or above this value, + the `high_noise_model` is considered as the required model. + offload_model (`bool`): + A flag intended to control the offloading behavior. + + Returns: + torch.nn.Module: + The active model on the target device for the current timestep. + """ + if t.item() >= boundary: + required_model_name = 'high_noise_model' + offload_model_name = 'low_noise_model' + else: + required_model_name = 'low_noise_model' + offload_model_name = 'high_noise_model' + if offload_model or self.init_on_cpu: + if next(getattr( + self, + offload_model_name).parameters()).device.type == 'cuda': + getattr(self, offload_model_name).to('cpu') + if next(getattr( + self, + required_model_name).parameters()).device.type == 'cpu': + getattr(self, required_model_name).to(self.device) + return getattr(self, required_model_name) + + def generate(self, + input_prompt, + size=(1280, 720), + frame_num=81, + shift=5.0, + sample_solver='unipc', + sampling_steps=50, + guide_scale=5.0, + n_prompt="", + seed=-1, + offload_model=True): + r""" + Generates video frames from text prompt using diffusion process. + + Args: + input_prompt (`str`): + Text prompt for content generation + size (`tuple[int]`, *optional*, defaults to (1280,720)): + Controls video resolution, (width,height). + frame_num (`int`, *optional*, defaults to 81): + How many frames to sample from a video. The number should be 4n+1 + shift (`float`, *optional*, defaults to 5.0): + Noise schedule shift parameter. Affects temporal dynamics + sample_solver (`str`, *optional*, defaults to 'unipc'): + Solver used to sample the video. + sampling_steps (`int`, *optional*, defaults to 50): + Number of diffusion sampling steps. Higher values improve quality but slow generation + guide_scale (`float` or tuple[`float`], *optional*, defaults 5.0): + Classifier-free guidance scale. Controls prompt adherence vs. creativity. + If tuple, the first guide_scale will be used for low noise model and + the second guide_scale will be used for high noise model. + n_prompt (`str`, *optional*, defaults to ""): + Negative prompt for content exclusion. If not given, use `config.sample_neg_prompt` + seed (`int`, *optional*, defaults to -1): + Random seed for noise generation. If -1, use random seed. + offload_model (`bool`, *optional*, defaults to True): + If True, offloads models to CPU during generation to save VRAM + + Returns: + torch.Tensor: + Generated video frames tensor. Dimensions: (C, N H, W) where: + - C: Color channels (3 for RGB) + - N: Number of frames (81) + - H: Frame height (from size) + - W: Frame width from size) + """ + # preprocess + guide_scale = (guide_scale, guide_scale) if isinstance( + guide_scale, float) else guide_scale + F = frame_num + target_shape = (self.vae.model.z_dim, (F - 1) // self.vae_stride[0] + 1, + size[1] // self.vae_stride[1], + size[0] // self.vae_stride[2]) + + seq_len = math.ceil((target_shape[2] * target_shape[3]) / + (self.patch_size[1] * self.patch_size[2]) * + target_shape[1] / self.sp_size) * self.sp_size + + if n_prompt == "": + n_prompt = self.sample_neg_prompt + seed = seed if seed >= 0 else random.randint(0, sys.maxsize) + seed_g = torch.Generator(device=self.device) + seed_g.manual_seed(seed) + + if not self.t5_cpu: + self.text_encoder.model.to(self.device) + context = self.text_encoder([input_prompt], self.device) + context_null = self.text_encoder([n_prompt], self.device) + if offload_model: + self.text_encoder.model.cpu() + else: + context = self.text_encoder([input_prompt], torch.device('cpu')) + context_null = self.text_encoder([n_prompt], torch.device('cpu')) + context = [t.to(self.device) for t in context] + context_null = [t.to(self.device) for t in context_null] + + noise = [ + torch.randn( + target_shape[0], + target_shape[1], + target_shape[2], + target_shape[3], + dtype=torch.float32, + device=self.device, + generator=seed_g) + ] + + @contextmanager + def noop_no_sync(): + yield + + no_sync_low_noise = getattr(self.low_noise_model, 'no_sync', + noop_no_sync) + no_sync_high_noise = getattr(self.high_noise_model, 'no_sync', + noop_no_sync) + + # evaluation mode + with ( + torch.amp.autocast('cuda', dtype=self.param_dtype), + torch.no_grad(), + no_sync_low_noise(), + no_sync_high_noise(), + ): + boundary = self.boundary * self.num_train_timesteps + + if sample_solver == 'unipc': + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sample_scheduler.set_timesteps( + sampling_steps, device=self.device, shift=shift) + timesteps = sample_scheduler.timesteps + elif sample_solver == 'dpm++': + sample_scheduler = FlowDPMSolverMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sampling_sigmas = get_sampling_sigmas(sampling_steps, shift) + timesteps, _ = retrieve_timesteps( + sample_scheduler, + device=self.device, + sigmas=sampling_sigmas) + else: + raise NotImplementedError("Unsupported solver.") + + # sample videos + latents = noise + + arg_c = {'context': context, 'seq_len': seq_len} + arg_null = {'context': context_null, 'seq_len': seq_len} + + for _, t in enumerate(tqdm(timesteps)): + latent_model_input = latents + timestep = [t] + + timestep = torch.stack(timestep) + + model = self._prepare_model_for_timestep( + t, boundary, offload_model) + sample_guide_scale = guide_scale[1] if t.item( + ) >= boundary else guide_scale[0] + + noise_pred_cond = model( + latent_model_input, t=timestep, **arg_c)[0] + noise_pred_uncond = model( + latent_model_input, t=timestep, **arg_null)[0] + + noise_pred = noise_pred_uncond + sample_guide_scale * ( + noise_pred_cond - noise_pred_uncond) + + temp_x0 = sample_scheduler.step( + noise_pred.unsqueeze(0), + t, + latents[0].unsqueeze(0), + return_dict=False, + generator=seed_g)[0] + latents = [temp_x0.squeeze(0)] + + x0 = latents + if offload_model: + self.low_noise_model.cpu() + self.high_noise_model.cpu() + torch.cuda.empty_cache() + if self.rank == 0: + videos = self.vae.decode(x0) + + del noise, latents + del sample_scheduler + if offload_model: + gc.collect() + torch.cuda.synchronize() + if dist.is_initialized(): + dist.barrier() + + return videos[0] if self.rank == 0 else None diff --git a/wan_5b/textimage2video.py b/wan_5b/textimage2video.py new file mode 100644 index 0000000..67e9fd2 --- /dev/null +++ b/wan_5b/textimage2video.py @@ -0,0 +1,619 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import gc +import logging +import math +import os +import random +import sys +import types +from contextlib import contextmanager +from functools import partial + +import torch +import torch.cuda.amp as amp +import torch.distributed as dist +import torchvision.transforms.functional as TF +from PIL import Image +from tqdm import tqdm + +from .distributed.fsdp import shard_model +from .distributed.sequence_parallel import sp_attn_forward, sp_dit_forward +from .distributed.util import get_world_size +from .modules.model import WanModel +from .modules.t5 import T5EncoderModel +from .modules.vae2_2 import Wan2_2_VAE +from .utils.fm_solvers import ( + FlowDPMSolverMultistepScheduler, + get_sampling_sigmas, + retrieve_timesteps, +) +from .utils.fm_solvers_unipc import FlowUniPCMultistepScheduler +from .utils.utils import best_output_size, masks_like + + +class WanTI2V: + + def __init__( + self, + config, + checkpoint_dir, + device_id=0, + rank=0, + t5_fsdp=False, + dit_fsdp=False, + use_sp=False, + t5_cpu=False, + init_on_cpu=True, + convert_model_dtype=False, + ): + r""" + Initializes the Wan text-to-video generation model components. + + Args: + config (EasyDict): + Object containing model parameters initialized from config.py + checkpoint_dir (`str`): + Path to directory containing model checkpoints + device_id (`int`, *optional*, defaults to 0): + Id of target GPU device + rank (`int`, *optional*, defaults to 0): + Process rank for distributed training + t5_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for T5 model + dit_fsdp (`bool`, *optional*, defaults to False): + Enable FSDP sharding for DiT model + use_sp (`bool`, *optional*, defaults to False): + Enable distribution strategy of sequence parallel. + t5_cpu (`bool`, *optional*, defaults to False): + Whether to place T5 model on CPU. Only works without t5_fsdp. + init_on_cpu (`bool`, *optional*, defaults to True): + Enable initializing Transformer Model on CPU. Only works without FSDP or USP. + convert_model_dtype (`bool`, *optional*, defaults to False): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + """ + self.device = torch.device(f"cuda:{device_id}") + self.config = config + self.rank = rank + self.t5_cpu = t5_cpu + self.init_on_cpu = init_on_cpu + + self.num_train_timesteps = config.num_train_timesteps + self.param_dtype = config.param_dtype + + if t5_fsdp or dit_fsdp or use_sp: + self.init_on_cpu = False + + shard_fn = partial(shard_model, device_id=device_id) + self.text_encoder = T5EncoderModel( + text_len=config.text_len, + dtype=config.t5_dtype, + device=torch.device('cpu'), + checkpoint_path=os.path.join(checkpoint_dir, config.t5_checkpoint), + tokenizer_path=os.path.join(checkpoint_dir, config.t5_tokenizer), + shard_fn=shard_fn if t5_fsdp else None) + + self.vae_stride = config.vae_stride + self.patch_size = config.patch_size + self.vae = Wan2_2_VAE( + vae_pth=os.path.join(checkpoint_dir, config.vae_checkpoint), + device=self.device) + + logging.info(f"Creating WanModel from {checkpoint_dir}") + self.model = WanModel.from_pretrained(checkpoint_dir) + self.model = self._configure_model( + model=self.model, + use_sp=use_sp, + dit_fsdp=dit_fsdp, + shard_fn=shard_fn, + convert_model_dtype=convert_model_dtype) + + if use_sp: + self.sp_size = get_world_size() + else: + self.sp_size = 1 + + self.sample_neg_prompt = config.sample_neg_prompt + + def _configure_model(self, model, use_sp, dit_fsdp, shard_fn, + convert_model_dtype): + """ + Configures a model object. This includes setting evaluation modes, + applying distributed parallel strategy, and handling device placement. + + Args: + model (torch.nn.Module): + The model instance to configure. + use_sp (`bool`): + Enable distribution strategy of sequence parallel. + dit_fsdp (`bool`): + Enable FSDP sharding for DiT model. + shard_fn (callable): + The function to apply FSDP sharding. + convert_model_dtype (`bool`): + Convert DiT model parameters dtype to 'config.param_dtype'. + Only works without FSDP. + + Returns: + torch.nn.Module: + The configured model. + """ + model.eval().requires_grad_(False) + + if use_sp: + for block in model.blocks: + block.self_attn.forward = types.MethodType( + sp_attn_forward, block.self_attn) + model.forward = types.MethodType(sp_dit_forward, model) + + if dist.is_initialized(): + dist.barrier() + + if dit_fsdp: + model = shard_fn(model) + else: + if convert_model_dtype: + model.to(self.param_dtype) + if not self.init_on_cpu: + model.to(self.device) + + return model + + def generate(self, + input_prompt, + img=None, + size=(1280, 704), + max_area=704 * 1280, + frame_num=81, + shift=5.0, + sample_solver='unipc', + sampling_steps=50, + guide_scale=5.0, + n_prompt="", + seed=-1, + offload_model=True): + r""" + Generates video frames from text prompt using diffusion process. + + Args: + input_prompt (`str`): + Text prompt for content generation + img (PIL.Image.Image): + Input image tensor. Shape: [3, H, W] + size (`tuple[int]`, *optional*, defaults to (1280,704)): + Controls video resolution, (width,height). + max_area (`int`, *optional*, defaults to 704*1280): + Maximum pixel area for latent space calculation. Controls video resolution scaling + frame_num (`int`, *optional*, defaults to 81): + How many frames to sample from a video. The number should be 4n+1 + shift (`float`, *optional*, defaults to 5.0): + Noise schedule shift parameter. Affects temporal dynamics + sample_solver (`str`, *optional*, defaults to 'unipc'): + Solver used to sample the video. + sampling_steps (`int`, *optional*, defaults to 50): + Number of diffusion sampling steps. Higher values improve quality but slow generation + guide_scale (`float`, *optional*, defaults 5.0): + Classifier-free guidance scale. Controls prompt adherence vs. creativity. + n_prompt (`str`, *optional*, defaults to ""): + Negative prompt for content exclusion. If not given, use `config.sample_neg_prompt` + seed (`int`, *optional*, defaults to -1): + Random seed for noise generation. If -1, use random seed. + offload_model (`bool`, *optional*, defaults to True): + If True, offloads models to CPU during generation to save VRAM + + Returns: + torch.Tensor: + Generated video frames tensor. Dimensions: (C, N H, W) where: + - C: Color channels (3 for RGB) + - N: Number of frames (81) + - H: Frame height (from size) + - W: Frame width from size) + """ + # i2v + if img is not None: + return self.i2v( + input_prompt=input_prompt, + img=img, + max_area=max_area, + frame_num=frame_num, + shift=shift, + sample_solver=sample_solver, + sampling_steps=sampling_steps, + guide_scale=guide_scale, + n_prompt=n_prompt, + seed=seed, + offload_model=offload_model) + # t2v + return self.t2v( + input_prompt=input_prompt, + size=size, + frame_num=frame_num, + shift=shift, + sample_solver=sample_solver, + sampling_steps=sampling_steps, + guide_scale=guide_scale, + n_prompt=n_prompt, + seed=seed, + offload_model=offload_model) + + def t2v(self, + input_prompt, + size=(1280, 704), + frame_num=121, + shift=5.0, + sample_solver='unipc', + sampling_steps=50, + guide_scale=5.0, + n_prompt="", + seed=-1, + offload_model=True): + r""" + Generates video frames from text prompt using diffusion process. + + Args: + input_prompt (`str`): + Text prompt for content generation + size (`tuple[int]`, *optional*, defaults to (1280,704)): + Controls video resolution, (width,height). + frame_num (`int`, *optional*, defaults to 121): + How many frames to sample from a video. The number should be 4n+1 + shift (`float`, *optional*, defaults to 5.0): + Noise schedule shift parameter. Affects temporal dynamics + sample_solver (`str`, *optional*, defaults to 'unipc'): + Solver used to sample the video. + sampling_steps (`int`, *optional*, defaults to 50): + Number of diffusion sampling steps. Higher values improve quality but slow generation + guide_scale (`float`, *optional*, defaults 5.0): + Classifier-free guidance scale. Controls prompt adherence vs. creativity. + n_prompt (`str`, *optional*, defaults to ""): + Negative prompt for content exclusion. If not given, use `config.sample_neg_prompt` + seed (`int`, *optional*, defaults to -1): + Random seed for noise generation. If -1, use random seed. + offload_model (`bool`, *optional*, defaults to True): + If True, offloads models to CPU during generation to save VRAM + + Returns: + torch.Tensor: + Generated video frames tensor. Dimensions: (C, N H, W) where: + - C: Color channels (3 for RGB) + - N: Number of frames (81) + - H: Frame height (from size) + - W: Frame width from size) + """ + # preprocess + F = frame_num + target_shape = (self.vae.model.z_dim, (F - 1) // self.vae_stride[0] + 1, + size[1] // self.vae_stride[1], + size[0] // self.vae_stride[2]) + + seq_len = math.ceil((target_shape[2] * target_shape[3]) / + (self.patch_size[1] * self.patch_size[2]) * + target_shape[1] / self.sp_size) * self.sp_size + + if n_prompt == "": + n_prompt = self.sample_neg_prompt + seed = seed if seed >= 0 else random.randint(0, sys.maxsize) + seed_g = torch.Generator(device=self.device) + seed_g.manual_seed(seed) + + if not self.t5_cpu: + self.text_encoder.model.to(self.device) + context = self.text_encoder([input_prompt], self.device) + context_null = self.text_encoder([n_prompt], self.device) + if offload_model: + self.text_encoder.model.cpu() + else: + context = self.text_encoder([input_prompt], torch.device('cpu')) + context_null = self.text_encoder([n_prompt], torch.device('cpu')) + context = [t.to(self.device) for t in context] + context_null = [t.to(self.device) for t in context_null] + + noise = [ + torch.randn( + target_shape[0], + target_shape[1], + target_shape[2], + target_shape[3], + dtype=torch.float32, + device=self.device, + generator=seed_g) + ] + + @contextmanager + def noop_no_sync(): + yield + + no_sync = getattr(self.model, 'no_sync', noop_no_sync) + + # evaluation mode + with ( + torch.amp.autocast('cuda', dtype=self.param_dtype), + torch.no_grad(), + no_sync(), + ): + + if sample_solver == 'unipc': + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sample_scheduler.set_timesteps( + sampling_steps, device=self.device, shift=shift) + timesteps = sample_scheduler.timesteps + elif sample_solver == 'dpm++': + sample_scheduler = FlowDPMSolverMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sampling_sigmas = get_sampling_sigmas(sampling_steps, shift) + timesteps, _ = retrieve_timesteps( + sample_scheduler, + device=self.device, + sigmas=sampling_sigmas) + else: + raise NotImplementedError("Unsupported solver.") + + # sample videos + latents = noise + mask1, mask2 = masks_like(noise, zero=False) + + arg_c = {'context': context, 'seq_len': seq_len} + arg_null = {'context': context_null, 'seq_len': seq_len} + + if offload_model or self.init_on_cpu: + self.model.to(self.device) + torch.cuda.empty_cache() + + for _, t in enumerate(tqdm(timesteps)): + latent_model_input = latents + timestep = [t] + + timestep = torch.stack(timestep) + + temp_ts = (mask2[0][0][:, ::2, ::2] * timestep).flatten() + temp_ts = torch.cat([ + temp_ts, + temp_ts.new_ones(seq_len - temp_ts.size(0)) * timestep + ]) + timestep = temp_ts.unsqueeze(0) + + noise_pred_cond = self.model( + latent_model_input, t=timestep, **arg_c)[0] + noise_pred_uncond = self.model( + latent_model_input, t=timestep, **arg_null)[0] + + noise_pred = noise_pred_uncond + guide_scale * ( + noise_pred_cond - noise_pred_uncond) + + temp_x0 = sample_scheduler.step( + noise_pred.unsqueeze(0), + t, + latents[0].unsqueeze(0), + return_dict=False, + generator=seed_g)[0] + latents = [temp_x0.squeeze(0)] + x0 = latents + if offload_model: + self.model.cpu() + torch.cuda.synchronize() + torch.cuda.empty_cache() + if self.rank == 0: + videos = self.vae.decode(x0) + + del noise, latents + del sample_scheduler + if offload_model: + gc.collect() + torch.cuda.synchronize() + if dist.is_initialized(): + dist.barrier() + + return videos[0] if self.rank == 0 else None + + def i2v(self, + input_prompt, + img, + max_area=704 * 1280, + frame_num=121, + shift=5.0, + sample_solver='unipc', + sampling_steps=40, + guide_scale=5.0, + n_prompt="", + seed=-1, + offload_model=True): + r""" + Generates video frames from input image and text prompt using diffusion process. + + Args: + input_prompt (`str`): + Text prompt for content generation. + img (PIL.Image.Image): + Input image tensor. Shape: [3, H, W] + max_area (`int`, *optional*, defaults to 704*1280): + Maximum pixel area for latent space calculation. Controls video resolution scaling + frame_num (`int`, *optional*, defaults to 121): + How many frames to sample from a video. The number should be 4n+1 + shift (`float`, *optional*, defaults to 5.0): + Noise schedule shift parameter. Affects temporal dynamics + [NOTE]: If you want to generate a 480p video, it is recommended to set the shift value to 3.0. + sample_solver (`str`, *optional*, defaults to 'unipc'): + Solver used to sample the video. + sampling_steps (`int`, *optional*, defaults to 40): + Number of diffusion sampling steps. Higher values improve quality but slow generation + guide_scale (`float`, *optional*, defaults 5.0): + Classifier-free guidance scale. Controls prompt adherence vs. creativity. + n_prompt (`str`, *optional*, defaults to ""): + Negative prompt for content exclusion. If not given, use `config.sample_neg_prompt` + seed (`int`, *optional*, defaults to -1): + Random seed for noise generation. If -1, use random seed + offload_model (`bool`, *optional*, defaults to True): + If True, offloads models to CPU during generation to save VRAM + + Returns: + torch.Tensor: + Generated video frames tensor. Dimensions: (C, N H, W) where: + - C: Color channels (3 for RGB) + - N: Number of frames (121) + - H: Frame height (from max_area) + - W: Frame width (from max_area) + """ + # preprocess + ih, iw = img.height, img.width + dh, dw = self.patch_size[1] * self.vae_stride[1], self.patch_size[ + 2] * self.vae_stride[2] + ow, oh = best_output_size(iw, ih, dw, dh, max_area) + + scale = max(ow / iw, oh / ih) + img = img.resize((round(iw * scale), round(ih * scale)), Image.LANCZOS) + + # center-crop + x1 = (img.width - ow) // 2 + y1 = (img.height - oh) // 2 + img = img.crop((x1, y1, x1 + ow, y1 + oh)) + assert img.width == ow and img.height == oh + + # to tensor + img = TF.to_tensor(img).sub_(0.5).div_(0.5).to(self.device).unsqueeze(1) + + F = frame_num + seq_len = ((F - 1) // self.vae_stride[0] + 1) * ( + oh // self.vae_stride[1]) * (ow // self.vae_stride[2]) // ( + self.patch_size[1] * self.patch_size[2]) + seq_len = int(math.ceil(seq_len / self.sp_size)) * self.sp_size + + seed = seed if seed >= 0 else random.randint(0, sys.maxsize) + seed_g = torch.Generator(device=self.device) + seed_g.manual_seed(seed) + noise = torch.randn( + self.vae.model.z_dim, (F - 1) // self.vae_stride[0] + 1, + oh // self.vae_stride[1], + ow // self.vae_stride[2], + dtype=torch.float32, + generator=seed_g, + device=self.device) + + if n_prompt == "": + n_prompt = self.sample_neg_prompt + + # preprocess + if not self.t5_cpu: + self.text_encoder.model.to(self.device) + context = self.text_encoder([input_prompt], self.device) + context_null = self.text_encoder([n_prompt], self.device) + if offload_model: + self.text_encoder.model.cpu() + else: + context = self.text_encoder([input_prompt], torch.device('cpu')) + context_null = self.text_encoder([n_prompt], torch.device('cpu')) + context = [t.to(self.device) for t in context] + context_null = [t.to(self.device) for t in context_null] + + z = self.vae.encode([img]) + + @contextmanager + def noop_no_sync(): + yield + + no_sync = getattr(self.model, 'no_sync', noop_no_sync) + + # evaluation mode + with ( + torch.amp.autocast('cuda', dtype=self.param_dtype), + torch.no_grad(), + no_sync(), + ): + + if sample_solver == 'unipc': + sample_scheduler = FlowUniPCMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sample_scheduler.set_timesteps( + sampling_steps, device=self.device, shift=shift) + timesteps = sample_scheduler.timesteps + elif sample_solver == 'dpm++': + sample_scheduler = FlowDPMSolverMultistepScheduler( + num_train_timesteps=self.num_train_timesteps, + shift=1, + use_dynamic_shifting=False) + sampling_sigmas = get_sampling_sigmas(sampling_steps, shift) + timesteps, _ = retrieve_timesteps( + sample_scheduler, + device=self.device, + sigmas=sampling_sigmas) + else: + raise NotImplementedError("Unsupported solver.") + + # sample videos + latent = noise + mask1, mask2 = masks_like([noise], zero=True) + latent = (1. - mask2[0]) * z[0] + mask2[0] * latent + + arg_c = { + 'context': [context[0]], + 'seq_len': seq_len, + } + + arg_null = { + 'context': context_null, + 'seq_len': seq_len, + } + + if offload_model or self.init_on_cpu: + self.model.to(self.device) + torch.cuda.empty_cache() + + for _, t in enumerate(tqdm(timesteps)): + latent_model_input = [latent.to(self.device)] + timestep = [t] + + timestep = torch.stack(timestep).to(self.device) + + temp_ts = (mask2[0][0][:, ::2, ::2] * timestep).flatten() + temp_ts = torch.cat([ + temp_ts, + temp_ts.new_ones(seq_len - temp_ts.size(0)) * timestep + ]) + timestep = temp_ts.unsqueeze(0) + + noise_pred_cond = self.model( + latent_model_input, t=timestep, **arg_c)[0] + if offload_model: + torch.cuda.empty_cache() + noise_pred_uncond = self.model( + latent_model_input, t=timestep, **arg_null)[0] + if offload_model: + torch.cuda.empty_cache() + noise_pred = noise_pred_uncond + guide_scale * ( + noise_pred_cond - noise_pred_uncond) + + temp_x0 = sample_scheduler.step( + noise_pred.unsqueeze(0), + t, + latent.unsqueeze(0), + return_dict=False, + generator=seed_g)[0] + latent = temp_x0.squeeze(0) + latent = (1. - mask2[0]) * z[0] + mask2[0] * latent + + x0 = [latent] + del latent_model_input, timestep + + if offload_model: + self.model.cpu() + torch.cuda.synchronize() + torch.cuda.empty_cache() + + if self.rank == 0: + videos = self.vae.decode(x0) + + del noise, latent, x0 + del sample_scheduler + if offload_model: + gc.collect() + torch.cuda.synchronize() + if dist.is_initialized(): + dist.barrier() + + return videos[0] if self.rank == 0 else None diff --git a/wan_5b/utils/__init__.py b/wan_5b/utils/__init__.py new file mode 100644 index 0000000..5b17310 --- /dev/null +++ b/wan_5b/utils/__init__.py @@ -0,0 +1,12 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +from .fm_solvers import ( + FlowDPMSolverMultistepScheduler, + get_sampling_sigmas, + retrieve_timesteps, +) +from .fm_solvers_unipc import FlowUniPCMultistepScheduler + +__all__ = [ + 'HuggingfaceTokenizer', 'get_sampling_sigmas', 'retrieve_timesteps', + 'FlowDPMSolverMultistepScheduler', 'FlowUniPCMultistepScheduler' +] diff --git a/wan_5b/utils/fm_solvers.py b/wan_5b/utils/fm_solvers.py new file mode 100644 index 0000000..206a56b --- /dev/null +++ b/wan_5b/utils/fm_solvers.py @@ -0,0 +1,854 @@ +# Copied from https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py +# Convert dpm solver for flow matching +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. + +import inspect +import math +from typing import List, Optional, Tuple, Union + +import numpy as np +import torch +from diffusers.configuration_utils import ConfigMixin, register_to_config +from diffusers.schedulers.scheduling_utils import ( + KarrasDiffusionSchedulers, + SchedulerMixin, + SchedulerOutput, +) +from diffusers.utils import deprecate, is_scipy_available +from diffusers.utils.torch_utils import randn_tensor + +if is_scipy_available(): + pass + + +def get_sampling_sigmas(sampling_steps, shift): + sigma = np.linspace(1, 0, sampling_steps + 1)[:sampling_steps] + sigma = (shift * sigma / (1 + (shift - 1) * sigma)) + + return sigma + + +def retrieve_timesteps( + scheduler, + num_inference_steps=None, + device=None, + timesteps=None, + sigmas=None, + **kwargs, +): + if timesteps is not None and sigmas is not None: + raise ValueError( + "Only one of `timesteps` or `sigmas` can be passed. Please choose one to set custom values" + ) + if timesteps is not None: + accepts_timesteps = "timesteps" in set( + inspect.signature(scheduler.set_timesteps).parameters.keys()) + if not accepts_timesteps: + raise ValueError( + f"The current scheduler class {scheduler.__class__}'s `set_timesteps` does not support custom" + f" timestep schedules. Please check whether you are using the correct scheduler." + ) + scheduler.set_timesteps(timesteps=timesteps, device=device, **kwargs) + timesteps = scheduler.timesteps + num_inference_steps = len(timesteps) + elif sigmas is not None: + accept_sigmas = "sigmas" in set( + inspect.signature(scheduler.set_timesteps).parameters.keys()) + if not accept_sigmas: + raise ValueError( + f"The current scheduler class {scheduler.__class__}'s `set_timesteps` does not support custom" + f" sigmas schedules. Please check whether you are using the correct scheduler." + ) + scheduler.set_timesteps(sigmas=sigmas, device=device, **kwargs) + timesteps = scheduler.timesteps + num_inference_steps = len(timesteps) + else: + scheduler.set_timesteps(num_inference_steps, device=device, **kwargs) + timesteps = scheduler.timesteps + return timesteps, num_inference_steps + + +class FlowDPMSolverMultistepScheduler(SchedulerMixin, ConfigMixin): + """ + `FlowDPMSolverMultistepScheduler` is a fast dedicated high-order solver for diffusion ODEs. + This model inherits from [`SchedulerMixin`] and [`ConfigMixin`]. Check the superclass documentation for the generic + methods the library implements for all schedulers such as loading and saving. + Args: + num_train_timesteps (`int`, defaults to 1000): + The number of diffusion steps to train the model. This determines the resolution of the diffusion process. + solver_order (`int`, defaults to 2): + The DPMSolver order which can be `1`, `2`, or `3`. It is recommended to use `solver_order=2` for guided + sampling, and `solver_order=3` for unconditional sampling. This affects the number of model outputs stored + and used in multistep updates. + prediction_type (`str`, defaults to "flow_prediction"): + Prediction type of the scheduler function; must be `flow_prediction` for this scheduler, which predicts + the flow of the diffusion process. + shift (`float`, *optional*, defaults to 1.0): + A factor used to adjust the sigmas in the noise schedule. It modifies the step sizes during the sampling + process. + use_dynamic_shifting (`bool`, defaults to `False`): + Whether to apply dynamic shifting to the timesteps based on image resolution. If `True`, the shifting is + applied on the fly. + thresholding (`bool`, defaults to `False`): + Whether to use the "dynamic thresholding" method. This method adjusts the predicted sample to prevent + saturation and improve photorealism. + dynamic_thresholding_ratio (`float`, defaults to 0.995): + The ratio for the dynamic thresholding method. Valid only when `thresholding=True`. + sample_max_value (`float`, defaults to 1.0): + The threshold value for dynamic thresholding. Valid only when `thresholding=True` and + `algorithm_type="dpmsolver++"`. + algorithm_type (`str`, defaults to `dpmsolver++`): + Algorithm type for the solver; can be `dpmsolver`, `dpmsolver++`, `sde-dpmsolver` or `sde-dpmsolver++`. The + `dpmsolver` type implements the algorithms in the [DPMSolver](https://huggingface.co/papers/2206.00927) + paper, and the `dpmsolver++` type implements the algorithms in the + [DPMSolver++](https://huggingface.co/papers/2211.01095) paper. It is recommended to use `dpmsolver++` or + `sde-dpmsolver++` with `solver_order=2` for guided sampling like in Stable Diffusion. + solver_type (`str`, defaults to `midpoint`): + Solver type for the second-order solver; can be `midpoint` or `heun`. The solver type slightly affects the + sample quality, especially for a small number of steps. It is recommended to use `midpoint` solvers. + lower_order_final (`bool`, defaults to `True`): + Whether to use lower-order solvers in the final steps. Only valid for < 15 inference steps. This can + stabilize the sampling of DPMSolver for steps < 15, especially for steps <= 10. + euler_at_final (`bool`, defaults to `False`): + Whether to use Euler's method in the final step. It is a trade-off between numerical stability and detail + richness. This can stabilize the sampling of the SDE variant of DPMSolver for small number of inference + steps, but sometimes may result in blurring. + final_sigmas_type (`str`, *optional*, defaults to "zero"): + The final `sigma` value for the noise schedule during the sampling process. If `"sigma_min"`, the final + sigma is the same as the last sigma in the training schedule. If `zero`, the final sigma is set to 0. + lambda_min_clipped (`float`, defaults to `-inf`): + Clipping threshold for the minimum value of `lambda(t)` for numerical stability. This is critical for the + cosine (`squaredcos_cap_v2`) noise schedule. + variance_type (`str`, *optional*): + Set to "learned" or "learned_range" for diffusion models that predict variance. If set, the model's output + contains the predicted Gaussian variance. + """ + + _compatibles = [e.name for e in KarrasDiffusionSchedulers] + order = 1 + + @register_to_config + def __init__( + self, + num_train_timesteps: int = 1000, + solver_order: int = 2, + prediction_type: str = "flow_prediction", + shift: Optional[float] = 1.0, + use_dynamic_shifting=False, + thresholding: bool = False, + dynamic_thresholding_ratio: float = 0.995, + sample_max_value: float = 1.0, + algorithm_type: str = "dpmsolver++", + solver_type: str = "midpoint", + lower_order_final: bool = True, + euler_at_final: bool = False, + final_sigmas_type: Optional[str] = "zero", # "zero", "sigma_min" + lambda_min_clipped: float = -float("inf"), + variance_type: Optional[str] = None, + invert_sigmas: bool = False, + ): + if algorithm_type in ["dpmsolver", "sde-dpmsolver"]: + deprecation_message = f"algorithm_type {algorithm_type} is deprecated and will be removed in a future version. Choose from `dpmsolver++` or `sde-dpmsolver++` instead" + deprecate("algorithm_types dpmsolver and sde-dpmsolver", "1.0.0", + deprecation_message) + + # settings for DPM-Solver + if algorithm_type not in [ + "dpmsolver", "dpmsolver++", "sde-dpmsolver", "sde-dpmsolver++" + ]: + if algorithm_type == "deis": + self.register_to_config(algorithm_type="dpmsolver++") + else: + raise NotImplementedError( + f"{algorithm_type} is not implemented for {self.__class__}") + + if solver_type not in ["midpoint", "heun"]: + if solver_type in ["logrho", "bh1", "bh2"]: + self.register_to_config(solver_type="midpoint") + else: + raise NotImplementedError( + f"{solver_type} is not implemented for {self.__class__}") + + if algorithm_type not in ["dpmsolver++", "sde-dpmsolver++" + ] and final_sigmas_type == "zero": + raise ValueError( + f"`final_sigmas_type` {final_sigmas_type} is not supported for `algorithm_type` {algorithm_type}. Please choose `sigma_min` instead." + ) + + # setable values + self.num_inference_steps = None + alphas = np.linspace(1, 1 / num_train_timesteps, + num_train_timesteps)[::-1].copy() + sigmas = 1.0 - alphas + sigmas = torch.from_numpy(sigmas).to(dtype=torch.float32) + + if not use_dynamic_shifting: + # when use_dynamic_shifting is True, we apply the timestep shifting on the fly based on the image resolution + sigmas = shift * sigmas / (1 + + (shift - 1) * sigmas) # pyright: ignore + + self.sigmas = sigmas + self.timesteps = sigmas * num_train_timesteps + + self.model_outputs = [None] * solver_order + self.lower_order_nums = 0 + self._step_index = None + self._begin_index = None + + self.sigma_min = self.sigmas[-1].item() + self.sigma_max = self.sigmas[0].item() + + @property + def step_index(self): + """ + The index counter for current timestep. It will increase 1 after each scheduler step. + """ + return self._step_index + + @property + def begin_index(self): + """ + The index for the first timestep. It should be set from pipeline with `set_begin_index` method. + """ + return self._begin_index + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.set_begin_index + def set_begin_index(self, begin_index: int = 0): + """ + Sets the begin index for the scheduler. This function should be run from pipeline before the inference. + Args: + begin_index (`int`): + The begin index for the scheduler. + """ + self._begin_index = begin_index + + # Modified from diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler.set_timesteps + def set_timesteps( + self, + num_inference_steps: Union[int, None] = None, + device: Union[str, torch.device] = None, + sigmas: Optional[List[float]] = None, + mu: Optional[Union[float, None]] = None, + shift: Optional[Union[float, None]] = None, + ): + """ + Sets the discrete timesteps used for the diffusion chain (to be run before inference). + Args: + num_inference_steps (`int`): + Total number of the spacing of the time steps. + device (`str` or `torch.device`, *optional*): + The device to which the timesteps should be moved to. If `None`, the timesteps are not moved. + """ + + if self.config.use_dynamic_shifting and mu is None: + raise ValueError( + " you have to pass a value for `mu` when `use_dynamic_shifting` is set to be `True`" + ) + + if sigmas is None: + sigmas = np.linspace(self.sigma_max, self.sigma_min, + num_inference_steps + + 1).copy()[:-1] # pyright: ignore + + if self.config.use_dynamic_shifting: + sigmas = self.time_shift(mu, 1.0, sigmas) # pyright: ignore + else: + if shift is None: + shift = self.config.shift + sigmas = shift * sigmas / (1 + + (shift - 1) * sigmas) # pyright: ignore + + if self.config.final_sigmas_type == "sigma_min": + sigma_last = ((1 - self.alphas_cumprod[0]) / + self.alphas_cumprod[0])**0.5 + elif self.config.final_sigmas_type == "zero": + sigma_last = 0 + else: + raise ValueError( + f"`final_sigmas_type` must be one of 'zero', or 'sigma_min', but got {self.config.final_sigmas_type}" + ) + + timesteps = sigmas * self.config.num_train_timesteps + sigmas = np.concatenate([sigmas, [sigma_last] + ]).astype(np.float32) # pyright: ignore + + self.sigmas = torch.from_numpy(sigmas) + self.timesteps = torch.from_numpy(timesteps).to( + device=device, dtype=torch.int64) + + self.num_inference_steps = len(timesteps) + + self.model_outputs = [ + None, + ] * self.config.solver_order + self.lower_order_nums = 0 + + self._step_index = None + self._begin_index = None + # Copied from diffusers.schedulers.scheduling_ddpm.DDPMScheduler._threshold_sample + def _threshold_sample(self, sample: torch.Tensor) -> torch.Tensor: + """ + "Dynamic thresholding: At each sampling step we set s to a certain percentile absolute pixel value in xt0 (the + prediction of x_0 at timestep t), and if s > 1, then we threshold xt0 to the range [-s, s] and then divide by + s. Dynamic thresholding pushes saturated pixels (those near -1 and 1) inwards, thereby actively preventing + pixels from saturation at each step. We find that dynamic thresholding results in significantly better + photorealism as well as better image-text alignment, especially when using very large guidance weights." + https://arxiv.org/abs/2205.11487 + """ + dtype = sample.dtype + batch_size, channels, *remaining_dims = sample.shape + + if dtype not in (torch.float32, torch.float64): + sample = sample.float( + ) # upcast for quantile calculation, and clamp not implemented for cpu half + + # Flatten sample for doing quantile calculation along each image + sample = sample.reshape(batch_size, channels * np.prod(remaining_dims)) + + abs_sample = sample.abs() # "a certain percentile absolute pixel value" + + s = torch.quantile( + abs_sample, self.config.dynamic_thresholding_ratio, dim=1) + s = torch.clamp( + s, min=1, max=self.config.sample_max_value + ) # When clamped to min=1, equivalent to standard clipping to [-1, 1] + s = s.unsqueeze( + 1) # (batch_size, 1) because clamp will broadcast along dim=0 + sample = torch.clamp( + sample, -s, s + ) / s # "we threshold xt0 to the range [-s, s] and then divide by s" + + sample = sample.reshape(batch_size, channels, *remaining_dims) + sample = sample.to(dtype) + + return sample + + # Copied from diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler._sigma_to_t + def _sigma_to_t(self, sigma): + return sigma * self.config.num_train_timesteps + + def _sigma_to_alpha_sigma_t(self, sigma): + return 1 - sigma, sigma + + # Copied from diffusers.schedulers.scheduling_flow_match_euler_discrete.set_timesteps + def time_shift(self, mu: float, sigma: float, t: torch.Tensor): + return math.exp(mu) / (math.exp(mu) + (1 / t - 1)**sigma) + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.convert_model_output + def convert_model_output( + self, + model_output: torch.Tensor, + *args, + sample: torch.Tensor = None, + **kwargs, + ) -> torch.Tensor: + """ + Convert the model output to the corresponding type the DPMSolver/DPMSolver++ algorithm needs. DPM-Solver is + designed to discretize an integral of the noise prediction model, and DPM-Solver++ is designed to discretize an + integral of the data prediction model. + + The algorithm and model type are decoupled. You can use either DPMSolver or DPMSolver++ for both noise + prediction and data prediction models. + + Args: + model_output (`torch.Tensor`): + The direct output from the learned diffusion model. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + Returns: + `torch.Tensor`: + The converted model output. + """ + timestep = args[0] if len(args) > 0 else kwargs.pop("timestep", None) + if sample is None: + if len(args) > 1: + sample = args[1] + else: + raise ValueError( + "missing `sample` as a required keyward argument") + if timestep is not None: + deprecate( + "timesteps", + "1.0.0", + "Passing `timesteps` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + # DPM-Solver++ needs to solve an integral of the data prediction model. + if self.config.algorithm_type in ["dpmsolver++", "sde-dpmsolver++"]: + if self.config.prediction_type == "flow_prediction": + sigma_t = self.sigmas[self.step_index] + x0_pred = sample - sigma_t * model_output + else: + raise ValueError( + f"prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`," + " `v_prediction`, or `flow_prediction` for the FlowDPMSolverMultistepScheduler." + ) + + if self.config.thresholding: + x0_pred = self._threshold_sample(x0_pred) + + return x0_pred + + # DPM-Solver needs to solve an integral of the noise prediction model. + elif self.config.algorithm_type in ["dpmsolver", "sde-dpmsolver"]: + if self.config.prediction_type == "flow_prediction": + sigma_t = self.sigmas[self.step_index] + epsilon = sample - (1 - sigma_t) * model_output + else: + raise ValueError( + f"prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`," + " `v_prediction` or `flow_prediction` for the FlowDPMSolverMultistepScheduler." + ) + + if self.config.thresholding: + sigma_t = self.sigmas[self.step_index] + x0_pred = sample - sigma_t * model_output + x0_pred = self._threshold_sample(x0_pred) + epsilon = model_output + x0_pred + + return epsilon + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.dpm_solver_first_order_update + def dpm_solver_first_order_update( + self, + model_output: torch.Tensor, + *args, + sample: torch.Tensor = None, + noise: Optional[torch.Tensor] = None, + **kwargs, + ) -> torch.Tensor: + """ + One step for the first-order DPMSolver (equivalent to DDIM). + Args: + model_output (`torch.Tensor`): + The direct output from the learned diffusion model. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + Returns: + `torch.Tensor`: + The sample tensor at the previous timestep. + """ + timestep = args[0] if len(args) > 0 else kwargs.pop("timestep", None) + prev_timestep = args[1] if len(args) > 1 else kwargs.pop( + "prev_timestep", None) + if sample is None: + if len(args) > 2: + sample = args[2] + else: + raise ValueError( + " missing `sample` as a required keyward argument") + if timestep is not None: + deprecate( + "timesteps", + "1.0.0", + "Passing `timesteps` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + if prev_timestep is not None: + deprecate( + "prev_timestep", + "1.0.0", + "Passing `prev_timestep` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + sigma_t, sigma_s = self.sigmas[self.step_index + 1], self.sigmas[ + self.step_index] # pyright: ignore + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma_t) + alpha_s, sigma_s = self._sigma_to_alpha_sigma_t(sigma_s) + lambda_t = torch.log(alpha_t) - torch.log(sigma_t) + lambda_s = torch.log(alpha_s) - torch.log(sigma_s) + + h = lambda_t - lambda_s + if self.config.algorithm_type == "dpmsolver++": + x_t = (sigma_t / + sigma_s) * sample - (alpha_t * + (torch.exp(-h) - 1.0)) * model_output + elif self.config.algorithm_type == "dpmsolver": + x_t = (alpha_t / + alpha_s) * sample - (sigma_t * + (torch.exp(h) - 1.0)) * model_output + elif self.config.algorithm_type == "sde-dpmsolver++": + assert noise is not None + x_t = ((sigma_t / sigma_s * torch.exp(-h)) * sample + + (alpha_t * (1 - torch.exp(-2.0 * h))) * model_output + + sigma_t * torch.sqrt(1.0 - torch.exp(-2 * h)) * noise) + elif self.config.algorithm_type == "sde-dpmsolver": + assert noise is not None + x_t = ((alpha_t / alpha_s) * sample - 2.0 * + (sigma_t * (torch.exp(h) - 1.0)) * model_output + + sigma_t * torch.sqrt(torch.exp(2 * h) - 1.0) * noise) + return x_t # pyright: ignore + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.multistep_dpm_solver_second_order_update + def multistep_dpm_solver_second_order_update( + self, + model_output_list: List[torch.Tensor], + *args, + sample: torch.Tensor = None, + noise: Optional[torch.Tensor] = None, + **kwargs, + ) -> torch.Tensor: + """ + One step for the second-order multistep DPMSolver. + Args: + model_output_list (`List[torch.Tensor]`): + The direct outputs from learned diffusion model at current and latter timesteps. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + Returns: + `torch.Tensor`: + The sample tensor at the previous timestep. + """ + timestep_list = args[0] if len(args) > 0 else kwargs.pop( + "timestep_list", None) + prev_timestep = args[1] if len(args) > 1 else kwargs.pop( + "prev_timestep", None) + if sample is None: + if len(args) > 2: + sample = args[2] + else: + raise ValueError( + " missing `sample` as a required keyward argument") + if timestep_list is not None: + deprecate( + "timestep_list", + "1.0.0", + "Passing `timestep_list` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + if prev_timestep is not None: + deprecate( + "prev_timestep", + "1.0.0", + "Passing `prev_timestep` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + sigma_t, sigma_s0, sigma_s1 = ( + self.sigmas[self.step_index + 1], # pyright: ignore + self.sigmas[self.step_index], + self.sigmas[self.step_index - 1], # pyright: ignore + ) + + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma_t) + alpha_s0, sigma_s0 = self._sigma_to_alpha_sigma_t(sigma_s0) + alpha_s1, sigma_s1 = self._sigma_to_alpha_sigma_t(sigma_s1) + + lambda_t = torch.log(alpha_t) - torch.log(sigma_t) + lambda_s0 = torch.log(alpha_s0) - torch.log(sigma_s0) + lambda_s1 = torch.log(alpha_s1) - torch.log(sigma_s1) + + m0, m1 = model_output_list[-1], model_output_list[-2] + + h, h_0 = lambda_t - lambda_s0, lambda_s0 - lambda_s1 + r0 = h_0 / h + D0, D1 = m0, (1.0 / r0) * (m0 - m1) + if self.config.algorithm_type == "dpmsolver++": + # See https://arxiv.org/abs/2211.01095 for detailed derivations + if self.config.solver_type == "midpoint": + x_t = ((sigma_t / sigma_s0) * sample - + (alpha_t * (torch.exp(-h) - 1.0)) * D0 - 0.5 * + (alpha_t * (torch.exp(-h) - 1.0)) * D1) + elif self.config.solver_type == "heun": + x_t = ((sigma_t / sigma_s0) * sample - + (alpha_t * (torch.exp(-h) - 1.0)) * D0 + + (alpha_t * ((torch.exp(-h) - 1.0) / h + 1.0)) * D1) + elif self.config.algorithm_type == "dpmsolver": + # See https://arxiv.org/abs/2206.00927 for detailed derivations + if self.config.solver_type == "midpoint": + x_t = ((alpha_t / alpha_s0) * sample - + (sigma_t * (torch.exp(h) - 1.0)) * D0 - 0.5 * + (sigma_t * (torch.exp(h) - 1.0)) * D1) + elif self.config.solver_type == "heun": + x_t = ((alpha_t / alpha_s0) * sample - + (sigma_t * (torch.exp(h) - 1.0)) * D0 - + (sigma_t * ((torch.exp(h) - 1.0) / h - 1.0)) * D1) + elif self.config.algorithm_type == "sde-dpmsolver++": + assert noise is not None + if self.config.solver_type == "midpoint": + x_t = ((sigma_t / sigma_s0 * torch.exp(-h)) * sample + + (alpha_t * (1 - torch.exp(-2.0 * h))) * D0 + 0.5 * + (alpha_t * (1 - torch.exp(-2.0 * h))) * D1 + + sigma_t * torch.sqrt(1.0 - torch.exp(-2 * h)) * noise) + elif self.config.solver_type == "heun": + x_t = ((sigma_t / sigma_s0 * torch.exp(-h)) * sample + + (alpha_t * (1 - torch.exp(-2.0 * h))) * D0 + + (alpha_t * ((1.0 - torch.exp(-2.0 * h)) / + (-2.0 * h) + 1.0)) * D1 + + sigma_t * torch.sqrt(1.0 - torch.exp(-2 * h)) * noise) + elif self.config.algorithm_type == "sde-dpmsolver": + assert noise is not None + if self.config.solver_type == "midpoint": + x_t = ((alpha_t / alpha_s0) * sample - 2.0 * + (sigma_t * (torch.exp(h) - 1.0)) * D0 - + (sigma_t * (torch.exp(h) - 1.0)) * D1 + + sigma_t * torch.sqrt(torch.exp(2 * h) - 1.0) * noise) + elif self.config.solver_type == "heun": + x_t = ((alpha_t / alpha_s0) * sample - 2.0 * + (sigma_t * (torch.exp(h) - 1.0)) * D0 - 2.0 * + (sigma_t * ((torch.exp(h) - 1.0) / h - 1.0)) * D1 + + sigma_t * torch.sqrt(torch.exp(2 * h) - 1.0) * noise) + return x_t # pyright: ignore + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.multistep_dpm_solver_third_order_update + def multistep_dpm_solver_third_order_update( + self, + model_output_list: List[torch.Tensor], + *args, + sample: torch.Tensor = None, + **kwargs, + ) -> torch.Tensor: + """ + One step for the third-order multistep DPMSolver. + Args: + model_output_list (`List[torch.Tensor]`): + The direct outputs from learned diffusion model at current and latter timesteps. + sample (`torch.Tensor`): + A current instance of a sample created by diffusion process. + Returns: + `torch.Tensor`: + The sample tensor at the previous timestep. + """ + + timestep_list = args[0] if len(args) > 0 else kwargs.pop( + "timestep_list", None) + prev_timestep = args[1] if len(args) > 1 else kwargs.pop( + "prev_timestep", None) + if sample is None: + if len(args) > 2: + sample = args[2] + else: + raise ValueError( + " missing`sample` as a required keyward argument") + if timestep_list is not None: + deprecate( + "timestep_list", + "1.0.0", + "Passing `timestep_list` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + if prev_timestep is not None: + deprecate( + "prev_timestep", + "1.0.0", + "Passing `prev_timestep` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + sigma_t, sigma_s0, sigma_s1, sigma_s2 = ( + self.sigmas[self.step_index + 1], # pyright: ignore + self.sigmas[self.step_index], + self.sigmas[self.step_index - 1], # pyright: ignore + self.sigmas[self.step_index - 2], # pyright: ignore + ) + + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma_t) + alpha_s0, sigma_s0 = self._sigma_to_alpha_sigma_t(sigma_s0) + alpha_s1, sigma_s1 = self._sigma_to_alpha_sigma_t(sigma_s1) + alpha_s2, sigma_s2 = self._sigma_to_alpha_sigma_t(sigma_s2) + + lambda_t = torch.log(alpha_t) - torch.log(sigma_t) + lambda_s0 = torch.log(alpha_s0) - torch.log(sigma_s0) + lambda_s1 = torch.log(alpha_s1) - torch.log(sigma_s1) + lambda_s2 = torch.log(alpha_s2) - torch.log(sigma_s2) + + m0, m1, m2 = model_output_list[-1], model_output_list[ + -2], model_output_list[-3] + + h, h_0, h_1 = lambda_t - lambda_s0, lambda_s0 - lambda_s1, lambda_s1 - lambda_s2 + r0, r1 = h_0 / h, h_1 / h + D0 = m0 + D1_0, D1_1 = (1.0 / r0) * (m0 - m1), (1.0 / r1) * (m1 - m2) + D1 = D1_0 + (r0 / (r0 + r1)) * (D1_0 - D1_1) + D2 = (1.0 / (r0 + r1)) * (D1_0 - D1_1) + if self.config.algorithm_type == "dpmsolver++": + # See https://arxiv.org/abs/2206.00927 for detailed derivations + x_t = ((sigma_t / sigma_s0) * sample - + (alpha_t * (torch.exp(-h) - 1.0)) * D0 + + (alpha_t * ((torch.exp(-h) - 1.0) / h + 1.0)) * D1 - + (alpha_t * ((torch.exp(-h) - 1.0 + h) / h**2 - 0.5)) * D2) + elif self.config.algorithm_type == "dpmsolver": + # See https://arxiv.org/abs/2206.00927 for detailed derivations + x_t = ((alpha_t / alpha_s0) * sample - (sigma_t * + (torch.exp(h) - 1.0)) * D0 - + (sigma_t * ((torch.exp(h) - 1.0) / h - 1.0)) * D1 - + (sigma_t * ((torch.exp(h) - 1.0 - h) / h**2 - 0.5)) * D2) + return x_t # pyright: ignore + + def index_for_timestep(self, timestep, schedule_timesteps=None): + if schedule_timesteps is None: + schedule_timesteps = self.timesteps + + indices = (schedule_timesteps == timestep).nonzero() + + # The sigma index that is taken for the **very** first `step` + # is always the second index (or the last index if there is only 1) + # This way we can ensure we don't accidentally skip a sigma in + # case we start in the middle of the denoising schedule (e.g. for image-to-image) + pos = 1 if len(indices) > 1 else 0 + + return indices[pos].item() + + def _init_step_index(self, timestep): + """ + Initialize the step_index counter for the scheduler. + """ + + if self.begin_index is None: + if isinstance(timestep, torch.Tensor): + timestep = timestep.to(self.timesteps.device) + self._step_index = self.index_for_timestep(timestep) + else: + self._step_index = self._begin_index + + # Modified from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.step + def step( + self, + model_output: torch.Tensor, + timestep: Union[int, torch.Tensor], + sample: torch.Tensor, + generator=None, + variance_noise: Optional[torch.Tensor] = None, + return_dict: bool = True, + ) -> Union[SchedulerOutput, Tuple]: + """ + Predict the sample from the previous timestep by reversing the SDE. This function propagates the sample with + the multistep DPMSolver. + Args: + model_output (`torch.Tensor`): + The direct output from learned diffusion model. + timestep (`int`): + The current discrete timestep in the diffusion chain. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + generator (`torch.Generator`, *optional*): + A random number generator. + variance_noise (`torch.Tensor`): + Alternative to generating noise with `generator` by directly providing the noise for the variance + itself. Useful for methods such as [`LEdits++`]. + return_dict (`bool`): + Whether or not to return a [`~schedulers.scheduling_utils.SchedulerOutput`] or `tuple`. + Returns: + [`~schedulers.scheduling_utils.SchedulerOutput`] or `tuple`: + If return_dict is `True`, [`~schedulers.scheduling_utils.SchedulerOutput`] is returned, otherwise a + tuple is returned where the first element is the sample tensor. + """ + if self.num_inference_steps is None: + raise ValueError( + "Number of inference steps is 'None', you need to run 'set_timesteps' after creating the scheduler" + ) + + if self.step_index is None: + self._init_step_index(timestep) + + # Improve numerical stability for small number of steps + lower_order_final = (self.step_index == len(self.timesteps) - 1) and ( + self.config.euler_at_final or + (self.config.lower_order_final and len(self.timesteps) < 15) or + self.config.final_sigmas_type == "zero") + lower_order_second = ((self.step_index == len(self.timesteps) - 2) and + self.config.lower_order_final and + len(self.timesteps) < 15) + + model_output = self.convert_model_output(model_output, sample=sample) + for i in range(self.config.solver_order - 1): + self.model_outputs[i] = self.model_outputs[i + 1] + self.model_outputs[-1] = model_output + + # Upcast to avoid precision issues when computing prev_sample + sample = sample.to(torch.float32) + if self.config.algorithm_type in ["sde-dpmsolver", "sde-dpmsolver++" + ] and variance_noise is None: + noise = randn_tensor( + model_output.shape, + generator=generator, + device=model_output.device, + dtype=torch.float32) + elif self.config.algorithm_type in ["sde-dpmsolver", "sde-dpmsolver++"]: + noise = variance_noise.to( + device=model_output.device, + dtype=torch.float32) # pyright: ignore + else: + noise = None + + if self.config.solver_order == 1 or self.lower_order_nums < 1 or lower_order_final: + prev_sample = self.dpm_solver_first_order_update( + model_output, sample=sample, noise=noise) + elif self.config.solver_order == 2 or self.lower_order_nums < 2 or lower_order_second: + prev_sample = self.multistep_dpm_solver_second_order_update( + self.model_outputs, sample=sample, noise=noise) + else: + prev_sample = self.multistep_dpm_solver_third_order_update( + self.model_outputs, sample=sample) + + if self.lower_order_nums < self.config.solver_order: + self.lower_order_nums += 1 + + # Cast sample back to expected dtype + prev_sample = prev_sample.to(model_output.dtype) + + # upon completion increase step index by one + self._step_index += 1 # pyright: ignore + + if not return_dict: + return (prev_sample,) + + return SchedulerOutput(prev_sample=prev_sample) + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.scale_model_input + def scale_model_input(self, sample: torch.Tensor, *args, + **kwargs) -> torch.Tensor: + """ + Ensures interchangeability with schedulers that need to scale the denoising model input depending on the + current timestep. + Args: + sample (`torch.Tensor`): + The input sample. + Returns: + `torch.Tensor`: + A scaled input sample. + """ + return sample + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.scale_model_input + def add_noise( + self, + original_samples: torch.Tensor, + noise: torch.Tensor, + timesteps: torch.IntTensor, + ) -> torch.Tensor: + # Make sure sigmas and timesteps have the same device and dtype as original_samples + sigmas = self.sigmas.to( + device=original_samples.device, dtype=original_samples.dtype) + if original_samples.device.type == "mps" and torch.is_floating_point( + timesteps): + # mps does not support float64 + schedule_timesteps = self.timesteps.to( + original_samples.device, dtype=torch.float32) + timesteps = timesteps.to( + original_samples.device, dtype=torch.float32) + else: + schedule_timesteps = self.timesteps.to(original_samples.device) + timesteps = timesteps.to(original_samples.device) + + # begin_index is None when the scheduler is used for training or pipeline does not implement set_begin_index + if self.begin_index is None: + step_indices = [ + self.index_for_timestep(t, schedule_timesteps) + for t in timesteps + ] + elif self.step_index is not None: + # add_noise is called after first denoising step (for inpainting) + step_indices = [self.step_index] * timesteps.shape[0] + else: + # add noise is called before first denoising step to create initial latent(img2img) + step_indices = [self.begin_index] * timesteps.shape[0] + + sigma = sigmas[step_indices].flatten() + while len(sigma.shape) < len(original_samples.shape): + sigma = sigma.unsqueeze(-1) + + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma) + noisy_samples = alpha_t * original_samples + sigma_t * noise + return noisy_samples + + def __len__(self): + return self.config.num_train_timesteps diff --git a/wan_5b/utils/fm_solvers_unipc.py b/wan_5b/utils/fm_solvers_unipc.py new file mode 100644 index 0000000..fb502f2 --- /dev/null +++ b/wan_5b/utils/fm_solvers_unipc.py @@ -0,0 +1,802 @@ +# Copied from https://github.com/huggingface/diffusers/blob/v0.31.0/src/diffusers/schedulers/scheduling_unipc_multistep.py +# Convert unipc for flow matching +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. + +import math +from typing import List, Optional, Tuple, Union + +import numpy as np +import torch +from diffusers.configuration_utils import ConfigMixin, register_to_config +from diffusers.schedulers.scheduling_utils import ( + KarrasDiffusionSchedulers, + SchedulerMixin, + SchedulerOutput, +) +from diffusers.utils import deprecate, is_scipy_available + +if is_scipy_available(): + import scipy.stats + + +class FlowUniPCMultistepScheduler(SchedulerMixin, ConfigMixin): + """ + `UniPCMultistepScheduler` is a training-free framework designed for the fast sampling of diffusion models. + + This model inherits from [`SchedulerMixin`] and [`ConfigMixin`]. Check the superclass documentation for the generic + methods the library implements for all schedulers such as loading and saving. + + Args: + num_train_timesteps (`int`, defaults to 1000): + The number of diffusion steps to train the model. + solver_order (`int`, default `2`): + The UniPC order which can be any positive integer. The effective order of accuracy is `solver_order + 1` + due to the UniC. It is recommended to use `solver_order=2` for guided sampling, and `solver_order=3` for + unconditional sampling. + prediction_type (`str`, defaults to "flow_prediction"): + Prediction type of the scheduler function; must be `flow_prediction` for this scheduler, which predicts + the flow of the diffusion process. + thresholding (`bool`, defaults to `False`): + Whether to use the "dynamic thresholding" method. This is unsuitable for latent-space diffusion models such + as Stable Diffusion. + dynamic_thresholding_ratio (`float`, defaults to 0.995): + The ratio for the dynamic thresholding method. Valid only when `thresholding=True`. + sample_max_value (`float`, defaults to 1.0): + The threshold value for dynamic thresholding. Valid only when `thresholding=True` and `predict_x0=True`. + predict_x0 (`bool`, defaults to `True`): + Whether to use the updating algorithm on the predicted x0. + solver_type (`str`, default `bh2`): + Solver type for UniPC. It is recommended to use `bh1` for unconditional sampling when steps < 10, and `bh2` + otherwise. + lower_order_final (`bool`, default `True`): + Whether to use lower-order solvers in the final steps. Only valid for < 15 inference steps. This can + stabilize the sampling of DPMSolver for steps < 15, especially for steps <= 10. + disable_corrector (`list`, default `[]`): + Decides which step to disable the corrector to mitigate the misalignment between `epsilon_theta(x_t, c)` + and `epsilon_theta(x_t^c, c)` which can influence convergence for a large guidance scale. Corrector is + usually disabled during the first few steps. + solver_p (`SchedulerMixin`, default `None`): + Any other scheduler that if specified, the algorithm becomes `solver_p + UniC`. + use_karras_sigmas (`bool`, *optional*, defaults to `False`): + Whether to use Karras sigmas for step sizes in the noise schedule during the sampling process. If `True`, + the sigmas are determined according to a sequence of noise levels {σi}. + use_exponential_sigmas (`bool`, *optional*, defaults to `False`): + Whether to use exponential sigmas for step sizes in the noise schedule during the sampling process. + timestep_spacing (`str`, defaults to `"linspace"`): + The way the timesteps should be scaled. Refer to Table 2 of the [Common Diffusion Noise Schedules and + Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) for more information. + steps_offset (`int`, defaults to 0): + An offset added to the inference steps, as required by some model families. + final_sigmas_type (`str`, defaults to `"zero"`): + The final `sigma` value for the noise schedule during the sampling process. If `"sigma_min"`, the final + sigma is the same as the last sigma in the training schedule. If `zero`, the final sigma is set to 0. + """ + + _compatibles = [e.name for e in KarrasDiffusionSchedulers] + order = 1 + + @register_to_config + def __init__( + self, + num_train_timesteps: int = 1000, + solver_order: int = 2, + prediction_type: str = "flow_prediction", + shift: Optional[float] = 1.0, + use_dynamic_shifting=False, + thresholding: bool = False, + dynamic_thresholding_ratio: float = 0.995, + sample_max_value: float = 1.0, + predict_x0: bool = True, + solver_type: str = "bh2", + lower_order_final: bool = True, + disable_corrector: List[int] = [], + solver_p: SchedulerMixin = None, + timestep_spacing: str = "linspace", + steps_offset: int = 0, + final_sigmas_type: Optional[str] = "zero", # "zero", "sigma_min" + ): + + if solver_type not in ["bh1", "bh2"]: + if solver_type in ["midpoint", "heun", "logrho"]: + self.register_to_config(solver_type="bh2") + else: + raise NotImplementedError( + f"{solver_type} is not implemented for {self.__class__}") + + self.predict_x0 = predict_x0 + # setable values + self.num_inference_steps = None + alphas = np.linspace(1, 1 / num_train_timesteps, + num_train_timesteps)[::-1].copy() + sigmas = 1.0 - alphas + sigmas = torch.from_numpy(sigmas).to(dtype=torch.float32) + + if not use_dynamic_shifting: + # when use_dynamic_shifting is True, we apply the timestep shifting on the fly based on the image resolution + sigmas = shift * sigmas / (1 + + (shift - 1) * sigmas) # pyright: ignore + + self.sigmas = sigmas + self.timesteps = sigmas * num_train_timesteps + + self.model_outputs = [None] * solver_order + self.timestep_list = [None] * solver_order + self.lower_order_nums = 0 + self.disable_corrector = disable_corrector + self.solver_p = solver_p + self.last_sample = None + self._step_index = None + self._begin_index = None + + self.sigmas = self.sigmas.to( + "cpu") # to avoid too much CPU/GPU communication + self.sigma_min = self.sigmas[-1].item() + self.sigma_max = self.sigmas[0].item() + + @property + def step_index(self): + """ + The index counter for current timestep. It will increase 1 after each scheduler step. + """ + return self._step_index + + @property + def begin_index(self): + """ + The index for the first timestep. It should be set from pipeline with `set_begin_index` method. + """ + return self._begin_index + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.set_begin_index + def set_begin_index(self, begin_index: int = 0): + """ + Sets the begin index for the scheduler. This function should be run from pipeline before the inference. + + Args: + begin_index (`int`): + The begin index for the scheduler. + """ + self._begin_index = begin_index + + # Modified from diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler.set_timesteps + def set_timesteps( + self, + num_inference_steps: Union[int, None] = None, + device: Union[str, torch.device] = None, + sigmas: Optional[List[float]] = None, + mu: Optional[Union[float, None]] = None, + shift: Optional[Union[float, None]] = None, + ): + """ + Sets the discrete timesteps used for the diffusion chain (to be run before inference). + Args: + num_inference_steps (`int`): + Total number of the spacing of the time steps. + device (`str` or `torch.device`, *optional*): + The device to which the timesteps should be moved to. If `None`, the timesteps are not moved. + """ + + if self.config.use_dynamic_shifting and mu is None: + raise ValueError( + " you have to pass a value for `mu` when `use_dynamic_shifting` is set to be `True`" + ) + + if sigmas is None: + sigmas = np.linspace(self.sigma_max, self.sigma_min, + num_inference_steps + + 1).copy()[:-1] # pyright: ignore + + if self.config.use_dynamic_shifting: + sigmas = self.time_shift(mu, 1.0, sigmas) # pyright: ignore + else: + if shift is None: + shift = self.config.shift + sigmas = shift * sigmas / (1 + + (shift - 1) * sigmas) # pyright: ignore + + if self.config.final_sigmas_type == "sigma_min": + sigma_last = ((1 - self.alphas_cumprod[0]) / + self.alphas_cumprod[0])**0.5 + elif self.config.final_sigmas_type == "zero": + sigma_last = 0 + else: + raise ValueError( + f"`final_sigmas_type` must be one of 'zero', or 'sigma_min', but got {self.config.final_sigmas_type}" + ) + + timesteps = sigmas * self.config.num_train_timesteps + sigmas = np.concatenate([sigmas, [sigma_last] + ]).astype(np.float32) # pyright: ignore + + self.sigmas = torch.from_numpy(sigmas) + self.timesteps = torch.from_numpy(timesteps).to( + device=device, dtype=torch.int64) + + self.num_inference_steps = len(timesteps) + + self.model_outputs = [ + None, + ] * self.config.solver_order + self.lower_order_nums = 0 + self.last_sample = None + if self.solver_p: + self.solver_p.set_timesteps(self.num_inference_steps, device=device) + + # add an index counter for schedulers that allow duplicated timesteps + self._step_index = None + self._begin_index = None + self.sigmas = self.sigmas.to( + "cpu") # to avoid too much CPU/GPU communication + + # Copied from diffusers.schedulers.scheduling_ddpm.DDPMScheduler._threshold_sample + def _threshold_sample(self, sample: torch.Tensor) -> torch.Tensor: + """ + "Dynamic thresholding: At each sampling step we set s to a certain percentile absolute pixel value in xt0 (the + prediction of x_0 at timestep t), and if s > 1, then we threshold xt0 to the range [-s, s] and then divide by + s. Dynamic thresholding pushes saturated pixels (those near -1 and 1) inwards, thereby actively preventing + pixels from saturation at each step. We find that dynamic thresholding results in significantly better + photorealism as well as better image-text alignment, especially when using very large guidance weights." + + https://arxiv.org/abs/2205.11487 + """ + dtype = sample.dtype + batch_size, channels, *remaining_dims = sample.shape + + if dtype not in (torch.float32, torch.float64): + sample = sample.float( + ) # upcast for quantile calculation, and clamp not implemented for cpu half + + # Flatten sample for doing quantile calculation along each image + sample = sample.reshape(batch_size, channels * np.prod(remaining_dims)) + + abs_sample = sample.abs() # "a certain percentile absolute pixel value" + + s = torch.quantile( + abs_sample, self.config.dynamic_thresholding_ratio, dim=1) + s = torch.clamp( + s, min=1, max=self.config.sample_max_value + ) # When clamped to min=1, equivalent to standard clipping to [-1, 1] + s = s.unsqueeze( + 1) # (batch_size, 1) because clamp will broadcast along dim=0 + sample = torch.clamp( + sample, -s, s + ) / s # "we threshold xt0 to the range [-s, s] and then divide by s" + + sample = sample.reshape(batch_size, channels, *remaining_dims) + sample = sample.to(dtype) + + return sample + + # Copied from diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler._sigma_to_t + def _sigma_to_t(self, sigma): + return sigma * self.config.num_train_timesteps + + def _sigma_to_alpha_sigma_t(self, sigma): + return 1 - sigma, sigma + + # Copied from diffusers.schedulers.scheduling_flow_match_euler_discrete.set_timesteps + def time_shift(self, mu: float, sigma: float, t: torch.Tensor): + return math.exp(mu) / (math.exp(mu) + (1 / t - 1)**sigma) + + def convert_model_output( + self, + model_output: torch.Tensor, + *args, + sample: torch.Tensor = None, + **kwargs, + ) -> torch.Tensor: + r""" + Convert the model output to the corresponding type the UniPC algorithm needs. + + Args: + model_output (`torch.Tensor`): + The direct output from the learned diffusion model. + timestep (`int`): + The current discrete timestep in the diffusion chain. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + + Returns: + `torch.Tensor`: + The converted model output. + """ + timestep = args[0] if len(args) > 0 else kwargs.pop("timestep", None) + if sample is None: + if len(args) > 1: + sample = args[1] + else: + raise ValueError( + "missing `sample` as a required keyward argument") + if timestep is not None: + deprecate( + "timesteps", + "1.0.0", + "Passing `timesteps` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + sigma = self.sigmas[self.step_index] + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma) + + if self.predict_x0: + if self.config.prediction_type == "flow_prediction": + sigma_t = self.sigmas[self.step_index] + x0_pred = sample - sigma_t * model_output + else: + raise ValueError( + f"prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`," + " `v_prediction` or `flow_prediction` for the UniPCMultistepScheduler." + ) + + if self.config.thresholding: + x0_pred = self._threshold_sample(x0_pred) + + return x0_pred + else: + if self.config.prediction_type == "flow_prediction": + sigma_t = self.sigmas[self.step_index] + epsilon = sample - (1 - sigma_t) * model_output + else: + raise ValueError( + f"prediction_type given as {self.config.prediction_type} must be one of `epsilon`, `sample`," + " `v_prediction` or `flow_prediction` for the UniPCMultistepScheduler." + ) + + if self.config.thresholding: + sigma_t = self.sigmas[self.step_index] + x0_pred = sample - sigma_t * model_output + x0_pred = self._threshold_sample(x0_pred) + epsilon = model_output + x0_pred + + return epsilon + + def multistep_uni_p_bh_update( + self, + model_output: torch.Tensor, + *args, + sample: torch.Tensor = None, + order: int = None, # pyright: ignore + **kwargs, + ) -> torch.Tensor: + """ + One step for the UniP (B(h) version). Alternatively, `self.solver_p` is used if is specified. + + Args: + model_output (`torch.Tensor`): + The direct output from the learned diffusion model at the current timestep. + prev_timestep (`int`): + The previous discrete timestep in the diffusion chain. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + order (`int`): + The order of UniP at this timestep (corresponds to the *p* in UniPC-p). + + Returns: + `torch.Tensor`: + The sample tensor at the previous timestep. + """ + prev_timestep = args[0] if len(args) > 0 else kwargs.pop( + "prev_timestep", None) + if sample is None: + if len(args) > 1: + sample = args[1] + else: + raise ValueError( + " missing `sample` as a required keyward argument") + if order is None: + if len(args) > 2: + order = args[2] + else: + raise ValueError( + " missing `order` as a required keyward argument") + if prev_timestep is not None: + deprecate( + "prev_timestep", + "1.0.0", + "Passing `prev_timestep` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + model_output_list = self.model_outputs + + s0 = self.timestep_list[-1] + m0 = model_output_list[-1] + x = sample + + if self.solver_p: + x_t = self.solver_p.step(model_output, s0, x).prev_sample + return x_t + + sigma_t, sigma_s0 = self.sigmas[self.step_index + 1], self.sigmas[ + self.step_index] # pyright: ignore + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma_t) + alpha_s0, sigma_s0 = self._sigma_to_alpha_sigma_t(sigma_s0) + + lambda_t = torch.log(alpha_t) - torch.log(sigma_t) + lambda_s0 = torch.log(alpha_s0) - torch.log(sigma_s0) + + h = lambda_t - lambda_s0 + device = sample.device + + rks = [] + D1s = [] + for i in range(1, order): + si = self.step_index - i # pyright: ignore + mi = model_output_list[-(i + 1)] + alpha_si, sigma_si = self._sigma_to_alpha_sigma_t(self.sigmas[si]) + lambda_si = torch.log(alpha_si) - torch.log(sigma_si) + rk = (lambda_si - lambda_s0) / h + rks.append(rk) + D1s.append((mi - m0) / rk) # pyright: ignore + + rks.append(1.0) + rks = torch.tensor(rks, device=device) + + R = [] + b = [] + + hh = -h if self.predict_x0 else h + h_phi_1 = torch.expm1(hh) # h\phi_1(h) = e^h - 1 + h_phi_k = h_phi_1 / hh - 1 + + factorial_i = 1 + + if self.config.solver_type == "bh1": + B_h = hh + elif self.config.solver_type == "bh2": + B_h = torch.expm1(hh) + else: + raise NotImplementedError() + + for i in range(1, order + 1): + R.append(torch.pow(rks, i - 1)) + b.append(h_phi_k * factorial_i / B_h) + factorial_i *= i + 1 + h_phi_k = h_phi_k / hh - 1 / factorial_i + + R = torch.stack(R) + b = torch.tensor(b, device=device) + + if len(D1s) > 0: + D1s = torch.stack(D1s, dim=1) # (B, K) + # for order 2, we use a simplified version + if order == 2: + rhos_p = torch.tensor([0.5], dtype=x.dtype, device=device) + else: + rhos_p = torch.linalg.solve(R[:-1, :-1], + b[:-1]).to(device).to(x.dtype) + else: + D1s = None + + if self.predict_x0: + x_t_ = sigma_t / sigma_s0 * x - alpha_t * h_phi_1 * m0 + if D1s is not None: + pred_res = torch.einsum("k,bkc...->bc...", rhos_p, + D1s) # pyright: ignore + else: + pred_res = 0 + x_t = x_t_ - alpha_t * B_h * pred_res + else: + x_t_ = alpha_t / alpha_s0 * x - sigma_t * h_phi_1 * m0 + if D1s is not None: + pred_res = torch.einsum("k,bkc...->bc...", rhos_p, + D1s) # pyright: ignore + else: + pred_res = 0 + x_t = x_t_ - sigma_t * B_h * pred_res + + x_t = x_t.to(x.dtype) + return x_t + + def multistep_uni_c_bh_update( + self, + this_model_output: torch.Tensor, + *args, + last_sample: torch.Tensor = None, + this_sample: torch.Tensor = None, + order: int = None, # pyright: ignore + **kwargs, + ) -> torch.Tensor: + """ + One step for the UniC (B(h) version). + + Args: + this_model_output (`torch.Tensor`): + The model outputs at `x_t`. + this_timestep (`int`): + The current timestep `t`. + last_sample (`torch.Tensor`): + The generated sample before the last predictor `x_{t-1}`. + this_sample (`torch.Tensor`): + The generated sample after the last predictor `x_{t}`. + order (`int`): + The `p` of UniC-p at this step. The effective order of accuracy should be `order + 1`. + + Returns: + `torch.Tensor`: + The corrected sample tensor at the current timestep. + """ + this_timestep = args[0] if len(args) > 0 else kwargs.pop( + "this_timestep", None) + if last_sample is None: + if len(args) > 1: + last_sample = args[1] + else: + raise ValueError( + " missing`last_sample` as a required keyward argument") + if this_sample is None: + if len(args) > 2: + this_sample = args[2] + else: + raise ValueError( + " missing`this_sample` as a required keyward argument") + if order is None: + if len(args) > 3: + order = args[3] + else: + raise ValueError( + " missing`order` as a required keyward argument") + if this_timestep is not None: + deprecate( + "this_timestep", + "1.0.0", + "Passing `this_timestep` is deprecated and has no effect as model output conversion is now handled via an internal counter `self.step_index`", + ) + + model_output_list = self.model_outputs + + m0 = model_output_list[-1] + x = last_sample + x_t = this_sample + model_t = this_model_output + + sigma_t, sigma_s0 = self.sigmas[self.step_index], self.sigmas[ + self.step_index - 1] # pyright: ignore + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma_t) + alpha_s0, sigma_s0 = self._sigma_to_alpha_sigma_t(sigma_s0) + + lambda_t = torch.log(alpha_t) - torch.log(sigma_t) + lambda_s0 = torch.log(alpha_s0) - torch.log(sigma_s0) + + h = lambda_t - lambda_s0 + device = this_sample.device + + rks = [] + D1s = [] + for i in range(1, order): + si = self.step_index - (i + 1) # pyright: ignore + mi = model_output_list[-(i + 1)] + alpha_si, sigma_si = self._sigma_to_alpha_sigma_t(self.sigmas[si]) + lambda_si = torch.log(alpha_si) - torch.log(sigma_si) + rk = (lambda_si - lambda_s0) / h + rks.append(rk) + D1s.append((mi - m0) / rk) # pyright: ignore + + rks.append(1.0) + rks = torch.tensor(rks, device=device) + + R = [] + b = [] + + hh = -h if self.predict_x0 else h + h_phi_1 = torch.expm1(hh) # h\phi_1(h) = e^h - 1 + h_phi_k = h_phi_1 / hh - 1 + + factorial_i = 1 + + if self.config.solver_type == "bh1": + B_h = hh + elif self.config.solver_type == "bh2": + B_h = torch.expm1(hh) + else: + raise NotImplementedError() + + for i in range(1, order + 1): + R.append(torch.pow(rks, i - 1)) + b.append(h_phi_k * factorial_i / B_h) + factorial_i *= i + 1 + h_phi_k = h_phi_k / hh - 1 / factorial_i + + R = torch.stack(R) + b = torch.tensor(b, device=device) + + if len(D1s) > 0: + D1s = torch.stack(D1s, dim=1) + else: + D1s = None + + # for order 1, we use a simplified version + if order == 1: + rhos_c = torch.tensor([0.5], dtype=x.dtype, device=device) + else: + rhos_c = torch.linalg.solve(R, b).to(device).to(x.dtype) + + if self.predict_x0: + x_t_ = sigma_t / sigma_s0 * x - alpha_t * h_phi_1 * m0 + if D1s is not None: + corr_res = torch.einsum("k,bkc...->bc...", rhos_c[:-1], D1s) + else: + corr_res = 0 + D1_t = model_t - m0 + x_t = x_t_ - alpha_t * B_h * (corr_res + rhos_c[-1] * D1_t) + else: + x_t_ = alpha_t / alpha_s0 * x - sigma_t * h_phi_1 * m0 + if D1s is not None: + corr_res = torch.einsum("k,bkc...->bc...", rhos_c[:-1], D1s) + else: + corr_res = 0 + D1_t = model_t - m0 + x_t = x_t_ - sigma_t * B_h * (corr_res + rhos_c[-1] * D1_t) + x_t = x_t.to(x.dtype) + return x_t + + def index_for_timestep(self, timestep, schedule_timesteps=None): + if schedule_timesteps is None: + schedule_timesteps = self.timesteps + + indices = (schedule_timesteps == timestep).nonzero() + + # The sigma index that is taken for the **very** first `step` + # is always the second index (or the last index if there is only 1) + # This way we can ensure we don't accidentally skip a sigma in + # case we start in the middle of the denoising schedule (e.g. for image-to-image) + pos = 1 if len(indices) > 1 else 0 + + return indices[pos].item() + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler._init_step_index + def _init_step_index(self, timestep): + """ + Initialize the step_index counter for the scheduler. + """ + + if self.begin_index is None: + if isinstance(timestep, torch.Tensor): + timestep = timestep.to(self.timesteps.device) + self._step_index = self.index_for_timestep(timestep) + else: + self._step_index = self._begin_index + + def step(self, + model_output: torch.Tensor, + timestep: Union[int, torch.Tensor], + sample: torch.Tensor, + return_dict: bool = True, + generator=None) -> Union[SchedulerOutput, Tuple]: + """ + Predict the sample from the previous timestep by reversing the SDE. This function propagates the sample with + the multistep UniPC. + + Args: + model_output (`torch.Tensor`): + The direct output from learned diffusion model. + timestep (`int`): + The current discrete timestep in the diffusion chain. + sample (`torch.Tensor`): + A current instance of a sample created by the diffusion process. + return_dict (`bool`): + Whether or not to return a [`~schedulers.scheduling_utils.SchedulerOutput`] or `tuple`. + + Returns: + [`~schedulers.scheduling_utils.SchedulerOutput`] or `tuple`: + If return_dict is `True`, [`~schedulers.scheduling_utils.SchedulerOutput`] is returned, otherwise a + tuple is returned where the first element is the sample tensor. + + """ + if self.num_inference_steps is None: + raise ValueError( + "Number of inference steps is 'None', you need to run 'set_timesteps' after creating the scheduler" + ) + + if self.step_index is None: + self._init_step_index(timestep) + + use_corrector = ( + self.step_index > 0 and + self.step_index - 1 not in self.disable_corrector and + self.last_sample is not None # pyright: ignore + ) + + model_output_convert = self.convert_model_output( + model_output, sample=sample) + if use_corrector: + sample = self.multistep_uni_c_bh_update( + this_model_output=model_output_convert, + last_sample=self.last_sample, + this_sample=sample, + order=self.this_order, + ) + + for i in range(self.config.solver_order - 1): + self.model_outputs[i] = self.model_outputs[i + 1] + self.timestep_list[i] = self.timestep_list[i + 1] + + self.model_outputs[-1] = model_output_convert + self.timestep_list[-1] = timestep # pyright: ignore + + if self.config.lower_order_final: + this_order = min(self.config.solver_order, + len(self.timesteps) - + self.step_index) # pyright: ignore + else: + this_order = self.config.solver_order + + self.this_order = min(this_order, + self.lower_order_nums + 1) # warmup for multistep + assert self.this_order > 0 + + self.last_sample = sample + prev_sample = self.multistep_uni_p_bh_update( + model_output=model_output, # pass the original non-converted model output, in case solver-p is used + sample=sample, + order=self.this_order, + ) + + if self.lower_order_nums < self.config.solver_order: + self.lower_order_nums += 1 + + # upon completion increase step index by one + self._step_index += 1 # pyright: ignore + + if not return_dict: + return (prev_sample,) + + return SchedulerOutput(prev_sample=prev_sample) + + def scale_model_input(self, sample: torch.Tensor, *args, + **kwargs) -> torch.Tensor: + """ + Ensures interchangeability with schedulers that need to scale the denoising model input depending on the + current timestep. + + Args: + sample (`torch.Tensor`): + The input sample. + + Returns: + `torch.Tensor`: + A scaled input sample. + """ + return sample + + # Copied from diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler.add_noise + def add_noise( + self, + original_samples: torch.Tensor, + noise: torch.Tensor, + timesteps: torch.IntTensor, + ) -> torch.Tensor: + # Make sure sigmas and timesteps have the same device and dtype as original_samples + sigmas = self.sigmas.to( + device=original_samples.device, dtype=original_samples.dtype) + if original_samples.device.type == "mps" and torch.is_floating_point( + timesteps): + # mps does not support float64 + schedule_timesteps = self.timesteps.to( + original_samples.device, dtype=torch.float32) + timesteps = timesteps.to( + original_samples.device, dtype=torch.float32) + else: + schedule_timesteps = self.timesteps.to(original_samples.device) + timesteps = timesteps.to(original_samples.device) + + # begin_index is None when the scheduler is used for training or pipeline does not implement set_begin_index + if self.begin_index is None: + step_indices = [ + self.index_for_timestep(t, schedule_timesteps) + for t in timesteps + ] + elif self.step_index is not None: + # add_noise is called after first denoising step (for inpainting) + step_indices = [self.step_index] * timesteps.shape[0] + else: + # add noise is called before first denoising step to create initial latent(img2img) + step_indices = [self.begin_index] * timesteps.shape[0] + + sigma = sigmas[step_indices].flatten() + while len(sigma.shape) < len(original_samples.shape): + sigma = sigma.unsqueeze(-1) + + alpha_t, sigma_t = self._sigma_to_alpha_sigma_t(sigma) + noisy_samples = alpha_t * original_samples + sigma_t * noise + return noisy_samples + + def __len__(self): + return self.config.num_train_timesteps diff --git a/wan_5b/utils/prompt_extend.py b/wan_5b/utils/prompt_extend.py new file mode 100644 index 0000000..9d40d9c --- /dev/null +++ b/wan_5b/utils/prompt_extend.py @@ -0,0 +1,542 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import json +import logging +import math +import os +import random +import sys +import tempfile +from dataclasses import dataclass +from http import HTTPStatus +from typing import Optional, Union + +import dashscope +import torch +from PIL import Image + +try: + from flash_attn import flash_attn_varlen_func + FLASH_VER = 2 +except ModuleNotFoundError: + flash_attn_varlen_func = None # in compatible with CPU machines + FLASH_VER = None + +from .system_prompt import * + +DEFAULT_SYS_PROMPTS = { + "t2v-A14B": { + "zh": T2V_A14B_ZH_SYS_PROMPT, + "en": T2V_A14B_EN_SYS_PROMPT, + }, + "i2v-A14B": { + "zh": I2V_A14B_ZH_SYS_PROMPT, + "en": I2V_A14B_EN_SYS_PROMPT, + "empty": { + "zh": I2V_A14B_EMPTY_ZH_SYS_PROMPT, + "en": I2V_A14B_EMPTY_EN_SYS_PROMPT, + } + }, + "ti2v-5B": { + "t2v": { + "zh": T2V_A14B_ZH_SYS_PROMPT, + "en": T2V_A14B_EN_SYS_PROMPT, + }, + "i2v": { + "zh": I2V_A14B_ZH_SYS_PROMPT, + "en": I2V_A14B_EN_SYS_PROMPT, + } + }, +} + + +@dataclass +class PromptOutput(object): + status: bool + prompt: str + seed: int + system_prompt: str + message: str + + def add_custom_field(self, key: str, value) -> None: + self.__setattr__(key, value) + + +class PromptExpander: + + def __init__(self, model_name, task, is_vl=False, device=0, **kwargs): + self.model_name = model_name + self.task = task + self.is_vl = is_vl + self.device = device + + def extend_with_img(self, + prompt, + system_prompt, + image=None, + seed=-1, + *args, + **kwargs): + pass + + def extend(self, prompt, system_prompt, seed=-1, *args, **kwargs): + pass + + def decide_system_prompt(self, tar_lang="zh", prompt=None): + assert self.task is not None + if "ti2v" in self.task: + if self.is_vl: + return DEFAULT_SYS_PROMPTS[self.task]["i2v"][tar_lang] + else: + return DEFAULT_SYS_PROMPTS[self.task]["t2v"][tar_lang] + if "i2v" in self.task and len(prompt) == 0: + return DEFAULT_SYS_PROMPTS[self.task]["empty"][tar_lang] + return DEFAULT_SYS_PROMPTS[self.task][tar_lang] + + def __call__(self, + prompt, + system_prompt=None, + tar_lang="zh", + image=None, + seed=-1, + *args, + **kwargs): + if system_prompt is None: + system_prompt = self.decide_system_prompt( + tar_lang=tar_lang, prompt=prompt) + if seed < 0: + seed = random.randint(0, sys.maxsize) + if image is not None and self.is_vl: + return self.extend_with_img( + prompt, system_prompt, image=image, seed=seed, *args, **kwargs) + elif not self.is_vl: + return self.extend(prompt, system_prompt, seed, *args, **kwargs) + else: + raise NotImplementedError + + +class DashScopePromptExpander(PromptExpander): + + def __init__(self, + api_key=None, + model_name=None, + task=None, + max_image_size=512 * 512, + retry_times=4, + is_vl=False, + **kwargs): + ''' + Args: + api_key: The API key for Dash Scope authentication and access to related services. + model_name: Model name, 'qwen-plus' for extending prompts, 'qwen-vl-max' for extending prompt-images. + task: Task name. This is required to determine the default system prompt. + max_image_size: The maximum size of the image; unit unspecified (e.g., pixels, KB). Please specify the unit based on actual usage. + retry_times: Number of retry attempts in case of request failure. + is_vl: A flag indicating whether the task involves visual-language processing. + **kwargs: Additional keyword arguments that can be passed to the function or method. + ''' + if model_name is None: + model_name = 'qwen-plus' if not is_vl else 'qwen-vl-max' + super().__init__(model_name, task, is_vl, **kwargs) + if api_key is not None: + dashscope.api_key = api_key + elif 'DASH_API_KEY' in os.environ and os.environ[ + 'DASH_API_KEY'] is not None: + dashscope.api_key = os.environ['DASH_API_KEY'] + else: + raise ValueError("DASH_API_KEY is not set") + if 'DASH_API_URL' in os.environ and os.environ[ + 'DASH_API_URL'] is not None: + dashscope.base_http_api_url = os.environ['DASH_API_URL'] + else: + dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1' + self.api_key = api_key + + self.max_image_size = max_image_size + self.model = model_name + self.retry_times = retry_times + + def extend(self, prompt, system_prompt, seed=-1, *args, **kwargs): + messages = [{ + 'role': 'system', + 'content': system_prompt + }, { + 'role': 'user', + 'content': prompt + }] + + exception = None + for _ in range(self.retry_times): + try: + response = dashscope.Generation.call( + self.model, + messages=messages, + seed=seed, + result_format='message', # set the result to be "message" format. + ) + assert response.status_code == HTTPStatus.OK, response + expanded_prompt = response['output']['choices'][0]['message'][ + 'content'] + return PromptOutput( + status=True, + prompt=expanded_prompt, + seed=seed, + system_prompt=system_prompt, + message=json.dumps(response, ensure_ascii=False)) + except Exception as e: + exception = e + return PromptOutput( + status=False, + prompt=prompt, + seed=seed, + system_prompt=system_prompt, + message=str(exception)) + + def extend_with_img(self, + prompt, + system_prompt, + image: Union[Image.Image, str] = None, + seed=-1, + *args, + **kwargs): + if isinstance(image, str): + image = Image.open(image).convert('RGB') + w = image.width + h = image.height + area = min(w * h, self.max_image_size) + aspect_ratio = h / w + resized_h = round(math.sqrt(area * aspect_ratio)) + resized_w = round(math.sqrt(area / aspect_ratio)) + image = image.resize((resized_w, resized_h)) + with tempfile.NamedTemporaryFile(suffix='.png', delete=False) as f: + image.save(f.name) + fname = f.name + image_path = f"file://{f.name}" + prompt = f"{prompt}" + messages = [ + { + 'role': 'system', + 'content': [{ + "text": system_prompt + }] + }, + { + 'role': 'user', + 'content': [{ + "text": prompt + }, { + "image": image_path + }] + }, + ] + response = None + result_prompt = prompt + exception = None + status = False + for _ in range(self.retry_times): + try: + response = dashscope.MultiModalConversation.call( + self.model, + messages=messages, + seed=seed, + result_format='message', # set the result to be "message" format. + ) + assert response.status_code == HTTPStatus.OK, response + result_prompt = response['output']['choices'][0]['message'][ + 'content'][0]['text'].replace('\n', '\\n') + status = True + break + except Exception as e: + exception = e + result_prompt = result_prompt.replace('\n', '\\n') + os.remove(fname) + + return PromptOutput( + status=status, + prompt=result_prompt, + seed=seed, + system_prompt=system_prompt, + message=str(exception) if not status else json.dumps( + response, ensure_ascii=False)) + + +class QwenPromptExpander(PromptExpander): + model_dict = { + "QwenVL2.5_3B": "Qwen/Qwen2.5-VL-3B-Instruct", + "QwenVL2.5_7B": "Qwen/Qwen2.5-VL-7B-Instruct", + "Qwen2.5_3B": "Qwen/Qwen2.5-3B-Instruct", + "Qwen2.5_7B": "Qwen/Qwen2.5-7B-Instruct", + "Qwen2.5_14B": "Qwen/Qwen2.5-14B-Instruct", + } + + def __init__(self, + model_name=None, + task=None, + device=0, + is_vl=False, + **kwargs): + ''' + Args: + model_name: Use predefined model names such as 'QwenVL2.5_7B' and 'Qwen2.5_14B', + which are specific versions of the Qwen model. Alternatively, you can use the + local path to a downloaded model or the model name from Hugging Face." + Detailed Breakdown: + Predefined Model Names: + * 'QwenVL2.5_7B' and 'Qwen2.5_14B' are specific versions of the Qwen model. + Local Path: + * You can provide the path to a model that you have downloaded locally. + Hugging Face Model Name: + * You can also specify the model name from Hugging Face's model hub. + task: Task name. This is required to determine the default system prompt. + is_vl: A flag indicating whether the task involves visual-language processing. + **kwargs: Additional keyword arguments that can be passed to the function or method. + ''' + if model_name is None: + model_name = 'Qwen2.5_14B' if not is_vl else 'QwenVL2.5_7B' + super().__init__(model_name, task, is_vl, device, **kwargs) + if (not os.path.exists(self.model_name)) and (self.model_name + in self.model_dict): + self.model_name = self.model_dict[self.model_name] + + if self.is_vl: + # default: Load the model on the available device(s) + from transformers import ( + AutoProcessor, + AutoTokenizer, + Qwen2_5_VLForConditionalGeneration, + ) + try: + from .qwen_vl_utils import process_vision_info + except: + from qwen_vl_utils import process_vision_info + self.process_vision_info = process_vision_info + min_pixels = 256 * 28 * 28 + max_pixels = 1280 * 28 * 28 + self.processor = AutoProcessor.from_pretrained( + self.model_name, + min_pixels=min_pixels, + max_pixels=max_pixels, + use_fast=True) + self.model = Qwen2_5_VLForConditionalGeneration.from_pretrained( + self.model_name, + torch_dtype=torch.bfloat16 if FLASH_VER == 2 else + torch.float16 if "AWQ" in self.model_name else "auto", + attn_implementation="flash_attention_2" + if FLASH_VER == 2 else None, + device_map="cpu") + else: + from transformers import AutoModelForCausalLM, AutoTokenizer + self.model = AutoModelForCausalLM.from_pretrained( + self.model_name, + torch_dtype=torch.float16 + if "AWQ" in self.model_name else "auto", + attn_implementation="flash_attention_2" + if FLASH_VER == 2 else None, + device_map="cpu") + self.tokenizer = AutoTokenizer.from_pretrained(self.model_name) + + def extend(self, prompt, system_prompt, seed=-1, *args, **kwargs): + self.model = self.model.to(self.device) + messages = [{ + "role": "system", + "content": system_prompt + }, { + "role": "user", + "content": prompt + }] + text = self.tokenizer.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True) + model_inputs = self.tokenizer([text], + return_tensors="pt").to(self.model.device) + + generated_ids = self.model.generate(**model_inputs, max_new_tokens=512) + generated_ids = [ + output_ids[len(input_ids):] for input_ids, output_ids in zip( + model_inputs.input_ids, generated_ids) + ] + + expanded_prompt = self.tokenizer.batch_decode( + generated_ids, skip_special_tokens=True)[0] + self.model = self.model.to("cpu") + return PromptOutput( + status=True, + prompt=expanded_prompt, + seed=seed, + system_prompt=system_prompt, + message=json.dumps({"content": expanded_prompt}, + ensure_ascii=False)) + + def extend_with_img(self, + prompt, + system_prompt, + image: Union[Image.Image, str] = None, + seed=-1, + *args, + **kwargs): + self.model = self.model.to(self.device) + messages = [{ + 'role': 'system', + 'content': [{ + "type": "text", + "text": system_prompt + }] + }, { + "role": + "user", + "content": [ + { + "type": "image", + "image": image, + }, + { + "type": "text", + "text": prompt + }, + ], + }] + + # Preparation for inference + text = self.processor.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True) + image_inputs, video_inputs = self.process_vision_info(messages) + inputs = self.processor( + text=[text], + images=image_inputs, + videos=video_inputs, + padding=True, + return_tensors="pt", + ) + inputs = inputs.to(self.device) + + # Inference: Generation of the output + generated_ids = self.model.generate(**inputs, max_new_tokens=512) + generated_ids_trimmed = [ + out_ids[len(in_ids):] + for in_ids, out_ids in zip(inputs.input_ids, generated_ids) + ] + expanded_prompt = self.processor.batch_decode( + generated_ids_trimmed, + skip_special_tokens=True, + clean_up_tokenization_spaces=False)[0] + self.model = self.model.to("cpu") + return PromptOutput( + status=True, + prompt=expanded_prompt, + seed=seed, + system_prompt=system_prompt, + message=json.dumps({"content": expanded_prompt}, + ensure_ascii=False)) + + +if __name__ == "__main__": + logging.basicConfig( + level=logging.INFO, + format="[%(asctime)s] %(levelname)s: %(message)s", + handlers=[logging.StreamHandler(stream=sys.stdout)]) + + seed = 100 + prompt = "夏日海滩度假风格,一只戴着墨镜的白色猫咪坐在冲浪板上。猫咪毛发蓬松,表情悠闲,直视镜头。背景是模糊的海滩景色,海水清澈,远处有绿色的山丘和蓝天白云。猫咪的姿态自然放松,仿佛在享受海风和阳光。近景特写,强调猫咪的细节和海滩的清新氛围。" + en_prompt = "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." + image = "./examples/i2v_input.JPG" + + def test(method, + prompt, + model_name, + task, + image=None, + en_prompt=None, + seed=None): + prompt_expander = method( + model_name=model_name, task=task, is_vl=image is not None) + result = prompt_expander(prompt, image=image, tar_lang="zh") + logging.info(f"zh prompt -> zh: {result.prompt}") + result = prompt_expander(prompt, image=image, tar_lang="en") + logging.info(f"zh prompt -> en: {result.prompt}") + if en_prompt is not None: + result = prompt_expander(en_prompt, image=image, tar_lang="zh") + logging.info(f"en prompt -> zh: {result.prompt}") + result = prompt_expander(en_prompt, image=image, tar_lang="en") + logging.info(f"en prompt -> en: {result.prompt}") + + ds_model_name = None + ds_vl_model_name = None + qwen_model_name = None + qwen_vl_model_name = None + + for task in ["t2v-A14B", "i2v-A14B", "ti2v-5B"]: + # test prompt extend + if "t2v" in task or "ti2v" in task: + # test dashscope api + logging.info(f"-" * 40) + logging.info(f"Testing {task} dashscope prompt extend") + test( + DashScopePromptExpander, + prompt, + ds_model_name, + task, + image=None, + en_prompt=en_prompt, + seed=seed) + + # test qwen api + logging.info(f"-" * 40) + logging.info(f"Testing {task} qwen prompt extend") + test( + QwenPromptExpander, + prompt, + qwen_model_name, + task, + image=None, + en_prompt=en_prompt, + seed=seed) + + # test prompt-image extend + if "i2v" in task: + # test dashscope api + logging.info(f"-" * 40) + logging.info(f"Testing {task} dashscope vl prompt extend") + test( + DashScopePromptExpander, + prompt, + ds_vl_model_name, + task, + image=image, + en_prompt=en_prompt, + seed=seed) + + # test qwen api + logging.info(f"-" * 40) + logging.info(f"Testing {task} qwen vl prompt extend") + test( + QwenPromptExpander, + prompt, + qwen_vl_model_name, + task, + image=image, + en_prompt=en_prompt, + seed=seed) + + # test empty prompt extend + if "i2v-A14B" in task: + # test dashscope api + logging.info(f"-" * 40) + logging.info(f"Testing {task} dashscope vl empty prompt extend") + test( + DashScopePromptExpander, + "", + ds_vl_model_name, + task, + image=image, + en_prompt=None, + seed=seed) + + # test qwen api + logging.info(f"-" * 40) + logging.info(f"Testing {task} qwen vl empty prompt extend") + test( + QwenPromptExpander, + "", + qwen_vl_model_name, + task, + image=image, + en_prompt=None, + seed=seed) diff --git a/wan_5b/utils/qwen_vl_utils.py b/wan_5b/utils/qwen_vl_utils.py new file mode 100644 index 0000000..bf0e832 --- /dev/null +++ b/wan_5b/utils/qwen_vl_utils.py @@ -0,0 +1,363 @@ +# Copied from https://github.com/kq-chen/qwen-vl-utils +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +from __future__ import annotations + +import base64 +import logging +import math +import os +import sys +import time +import warnings +from functools import lru_cache +from io import BytesIO + +import requests +import torch +import torchvision +from packaging import version +from PIL import Image +from torchvision import io, transforms +from torchvision.transforms import InterpolationMode + +logger = logging.getLogger(__name__) + +IMAGE_FACTOR = 28 +MIN_PIXELS = 4 * 28 * 28 +MAX_PIXELS = 16384 * 28 * 28 +MAX_RATIO = 200 + +VIDEO_MIN_PIXELS = 128 * 28 * 28 +VIDEO_MAX_PIXELS = 768 * 28 * 28 +VIDEO_TOTAL_PIXELS = 24576 * 28 * 28 +FRAME_FACTOR = 2 +FPS = 2.0 +FPS_MIN_FRAMES = 4 +FPS_MAX_FRAMES = 768 + + +def round_by_factor(number: int, factor: int) -> int: + """Returns the closest integer to 'number' that is divisible by 'factor'.""" + return round(number / factor) * factor + + +def ceil_by_factor(number: int, factor: int) -> int: + """Returns the smallest integer greater than or equal to 'number' that is divisible by 'factor'.""" + return math.ceil(number / factor) * factor + + +def floor_by_factor(number: int, factor: int) -> int: + """Returns the largest integer less than or equal to 'number' that is divisible by 'factor'.""" + return math.floor(number / factor) * factor + + +def smart_resize(height: int, + width: int, + factor: int = IMAGE_FACTOR, + min_pixels: int = MIN_PIXELS, + max_pixels: int = MAX_PIXELS) -> tuple[int, int]: + """ + Rescales the image so that the following conditions are met: + + 1. Both dimensions (height and width) are divisible by 'factor'. + + 2. The total number of pixels is within the range ['min_pixels', 'max_pixels']. + + 3. The aspect ratio of the image is maintained as closely as possible. + """ + if max(height, width) / min(height, width) > MAX_RATIO: + raise ValueError( + f"absolute aspect ratio must be smaller than {MAX_RATIO}, got {max(height, width) / min(height, width)}" + ) + h_bar = max(factor, round_by_factor(height, factor)) + w_bar = max(factor, round_by_factor(width, factor)) + if h_bar * w_bar > max_pixels: + beta = math.sqrt((height * width) / max_pixels) + h_bar = floor_by_factor(height / beta, factor) + w_bar = floor_by_factor(width / beta, factor) + elif h_bar * w_bar < min_pixels: + beta = math.sqrt(min_pixels / (height * width)) + h_bar = ceil_by_factor(height * beta, factor) + w_bar = ceil_by_factor(width * beta, factor) + return h_bar, w_bar + + +def fetch_image(ele: dict[str, str | Image.Image], + size_factor: int = IMAGE_FACTOR) -> Image.Image: + if "image" in ele: + image = ele["image"] + else: + image = ele["image_url"] + image_obj = None + if isinstance(image, Image.Image): + image_obj = image + elif image.startswith("http://") or image.startswith("https://"): + image_obj = Image.open(requests.get(image, stream=True).raw) + elif image.startswith("file://"): + image_obj = Image.open(image[7:]) + elif image.startswith("data:image"): + if "base64," in image: + _, base64_data = image.split("base64,", 1) + data = base64.b64decode(base64_data) + image_obj = Image.open(BytesIO(data)) + else: + image_obj = Image.open(image) + if image_obj is None: + raise ValueError( + f"Unrecognized image input, support local path, http url, base64 and PIL.Image, got {image}" + ) + image = image_obj.convert("RGB") + ## resize + if "resized_height" in ele and "resized_width" in ele: + resized_height, resized_width = smart_resize( + ele["resized_height"], + ele["resized_width"], + factor=size_factor, + ) + else: + width, height = image.size + min_pixels = ele.get("min_pixels", MIN_PIXELS) + max_pixels = ele.get("max_pixels", MAX_PIXELS) + resized_height, resized_width = smart_resize( + height, + width, + factor=size_factor, + min_pixels=min_pixels, + max_pixels=max_pixels, + ) + image = image.resize((resized_width, resized_height)) + + return image + + +def smart_nframes( + ele: dict, + total_frames: int, + video_fps: int | float, +) -> int: + """calculate the number of frames for video used for model inputs. + + Args: + ele (dict): a dict contains the configuration of video. + support either `fps` or `nframes`: + - nframes: the number of frames to extract for model inputs. + - fps: the fps to extract frames for model inputs. + - min_frames: the minimum number of frames of the video, only used when fps is provided. + - max_frames: the maximum number of frames of the video, only used when fps is provided. + total_frames (int): the original total number of frames of the video. + video_fps (int | float): the original fps of the video. + + Raises: + ValueError: nframes should in interval [FRAME_FACTOR, total_frames]. + + Returns: + int: the number of frames for video used for model inputs. + """ + assert not ("fps" in ele and + "nframes" in ele), "Only accept either `fps` or `nframes`" + if "nframes" in ele: + nframes = round_by_factor(ele["nframes"], FRAME_FACTOR) + else: + fps = ele.get("fps", FPS) + min_frames = ceil_by_factor( + ele.get("min_frames", FPS_MIN_FRAMES), FRAME_FACTOR) + max_frames = floor_by_factor( + ele.get("max_frames", min(FPS_MAX_FRAMES, total_frames)), + FRAME_FACTOR) + nframes = total_frames / video_fps * fps + nframes = min(max(nframes, min_frames), max_frames) + nframes = round_by_factor(nframes, FRAME_FACTOR) + if not (FRAME_FACTOR <= nframes and nframes <= total_frames): + raise ValueError( + f"nframes should in interval [{FRAME_FACTOR}, {total_frames}], but got {nframes}." + ) + return nframes + + +def _read_video_torchvision(ele: dict,) -> torch.Tensor: + """read video using torchvision.io.read_video + + Args: + ele (dict): a dict contains the configuration of video. + support keys: + - video: the path of video. support "file://", "http://", "https://" and local path. + - video_start: the start time of video. + - video_end: the end time of video. + Returns: + torch.Tensor: the video tensor with shape (T, C, H, W). + """ + video_path = ele["video"] + if version.parse(torchvision.__version__) < version.parse("0.19.0"): + if "http://" in video_path or "https://" in video_path: + warnings.warn( + "torchvision < 0.19.0 does not support http/https video path, please upgrade to 0.19.0." + ) + if "file://" in video_path: + video_path = video_path[7:] + st = time.time() + video, audio, info = io.read_video( + video_path, + start_pts=ele.get("video_start", 0.0), + end_pts=ele.get("video_end", None), + pts_unit="sec", + output_format="TCHW", + ) + total_frames, video_fps = video.size(0), info["video_fps"] + logger.info( + f"torchvision: {video_path=}, {total_frames=}, {video_fps=}, time={time.time() - st:.3f}s" + ) + nframes = smart_nframes(ele, total_frames=total_frames, video_fps=video_fps) + idx = torch.linspace(0, total_frames - 1, nframes).round().long() + video = video[idx] + return video + + +def is_decord_available() -> bool: + import importlib.util + + return importlib.util.find_spec("decord") is not None + + +def _read_video_decord(ele: dict,) -> torch.Tensor: + """read video using decord.VideoReader + + Args: + ele (dict): a dict contains the configuration of video. + support keys: + - video: the path of video. support "file://", "http://", "https://" and local path. + - video_start: the start time of video. + - video_end: the end time of video. + Returns: + torch.Tensor: the video tensor with shape (T, C, H, W). + """ + import decord + video_path = ele["video"] + st = time.time() + vr = decord.VideoReader(video_path) + # TODO: support start_pts and end_pts + if 'video_start' in ele or 'video_end' in ele: + raise NotImplementedError( + "not support start_pts and end_pts in decord for now.") + total_frames, video_fps = len(vr), vr.get_avg_fps() + logger.info( + f"decord: {video_path=}, {total_frames=}, {video_fps=}, time={time.time() - st:.3f}s" + ) + nframes = smart_nframes(ele, total_frames=total_frames, video_fps=video_fps) + idx = torch.linspace(0, total_frames - 1, nframes).round().long().tolist() + video = vr.get_batch(idx).asnumpy() + video = torch.tensor(video).permute(0, 3, 1, 2) # Convert to TCHW format + return video + + +VIDEO_READER_BACKENDS = { + "decord": _read_video_decord, + "torchvision": _read_video_torchvision, +} + +FORCE_QWENVL_VIDEO_READER = os.getenv("FORCE_QWENVL_VIDEO_READER", None) + + +@lru_cache(maxsize=1) +def get_video_reader_backend() -> str: + if FORCE_QWENVL_VIDEO_READER is not None: + video_reader_backend = FORCE_QWENVL_VIDEO_READER + elif is_decord_available(): + video_reader_backend = "decord" + else: + video_reader_backend = "torchvision" + logger.info( + f"qwen-vl-utils using {video_reader_backend} to read video.", + file=sys.stderr) + return video_reader_backend + + +def fetch_video( + ele: dict, + image_factor: int = IMAGE_FACTOR) -> torch.Tensor | list[Image.Image]: + if isinstance(ele["video"], str): + video_reader_backend = get_video_reader_backend() + video = VIDEO_READER_BACKENDS[video_reader_backend](ele) + nframes, _, height, width = video.shape + + min_pixels = ele.get("min_pixels", VIDEO_MIN_PIXELS) + total_pixels = ele.get("total_pixels", VIDEO_TOTAL_PIXELS) + max_pixels = max( + min(VIDEO_MAX_PIXELS, total_pixels / nframes * FRAME_FACTOR), + int(min_pixels * 1.05)) + max_pixels = ele.get("max_pixels", max_pixels) + if "resized_height" in ele and "resized_width" in ele: + resized_height, resized_width = smart_resize( + ele["resized_height"], + ele["resized_width"], + factor=image_factor, + ) + else: + resized_height, resized_width = smart_resize( + height, + width, + factor=image_factor, + min_pixels=min_pixels, + max_pixels=max_pixels, + ) + video = transforms.functional.resize( + video, + [resized_height, resized_width], + interpolation=InterpolationMode.BICUBIC, + antialias=True, + ).float() + return video + else: + assert isinstance(ele["video"], (list, tuple)) + process_info = ele.copy() + process_info.pop("type", None) + process_info.pop("video", None) + images = [ + fetch_image({ + "image": video_element, + **process_info + }, + size_factor=image_factor) + for video_element in ele["video"] + ] + nframes = ceil_by_factor(len(images), FRAME_FACTOR) + if len(images) < nframes: + images.extend([images[-1]] * (nframes - len(images))) + return images + + +def extract_vision_info( + conversations: list[dict] | list[list[dict]]) -> list[dict]: + vision_infos = [] + if isinstance(conversations[0], dict): + conversations = [conversations] + for conversation in conversations: + for message in conversation: + if isinstance(message["content"], list): + for ele in message["content"]: + if ("image" in ele or "image_url" in ele or + "video" in ele or + ele["type"] in ("image", "image_url", "video")): + vision_infos.append(ele) + return vision_infos + + +def process_vision_info( + conversations: list[dict] | list[list[dict]], +) -> tuple[list[Image.Image] | None, list[torch.Tensor | list[Image.Image]] | + None]: + vision_infos = extract_vision_info(conversations) + ## Read images or videos + image_inputs = [] + video_inputs = [] + for vision_info in vision_infos: + if "image" in vision_info or "image_url" in vision_info: + image_inputs.append(fetch_image(vision_info)) + elif "video" in vision_info: + video_inputs.append(fetch_video(vision_info)) + else: + raise ValueError("image, image_url or video should in content.") + if len(image_inputs) == 0: + image_inputs = None + if len(video_inputs) == 0: + video_inputs = None + return image_inputs, video_inputs diff --git a/wan_5b/utils/system_prompt.py b/wan_5b/utils/system_prompt.py new file mode 100644 index 0000000..c494705 --- /dev/null +++ b/wan_5b/utils/system_prompt.py @@ -0,0 +1,147 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. + +T2V_A14B_ZH_SYS_PROMPT = \ +''' 你是一位电影导演,旨在为用户输入的原始prompt添加电影元素,改写为优质Prompt,使其完整、具有表现力。 +任务要求: +1. 对于用户输入的prompt,在不改变prompt的原意(如主体、动作)前提下,从下列电影美学设定中选择部分合适的时间、光源、光线强度、光线角度、对比度、饱和度、色调、拍摄角度、镜头大小、构图的电影设定细节,将这些内容添加到prompt中,让画面变得更美,注意,可以任选,不必每项都有 + 时间:["白天", "夜晚", "黎明", "日出"], 可以不选, 如果prompt没有特别说明则选白天 ! + 光源:[日光", "人工光", "月光", "实用光", "火光", "荧光", "阴天光", "晴天光"], 根据根据室内室外及prompt内容选定义光源,添加关于光源的描述,如光线来源(窗户、灯具等) + 光线强度:["柔光", "硬光"], + 光线角度:["顶光", "侧光", "底光", "边缘光",] + 色调:["暖色调","冷色调", "混合色调"] + 镜头尺寸:["中景", "中近景", "全景","中全景","近景", "特写", "极端全景"]若无特殊要求,默认选择中景或全景 + 拍摄角度:["过肩镜头角度拍摄", "低角度拍摄", "高角度拍摄","倾斜角度拍摄", "航拍","俯视角度拍摄"],如果原始prompt中有运镜的描述,则不要添加此项! + 构图:["中心构图","平衡构图","右侧重构图", "左侧重构图", "对称构图", "短边构图"] 若无特殊要求,默认选择中心构图 +2. 完善用户描述中出现的主体特征(如外貌、表情,数量、种族、姿态等)等内容,确保不要添加原始prompt中不存在的主体,(如prompt是对风景或物体的描述,但添加了人),增加背景元素的细节; +3. 不要输出关于氛围、感觉等文学描写,如(画面充满运动感与生活张力,突出正式氛围)。; +4. 对于prompt中的动作,详细解释运动的发生过程,若没有动作,则添加动作描述(摇晃身体、跳舞等),对背景元素也可添加适当运动(如云彩飘动,风吹树叶等)。 +5. 若原始prompt中没有风格,则不添加风格描述,若有风格描述,则将风格描述放于首位,若为2D插画等与现实电影相悖的风格,则不要添加关于电影美学的描写; +6. 若prompt出现天空的描述,则改为湛蓝色的天空相关描述,避免曝光; +7. 改写后的prompt字数控制在60-200字左右, 不要输出类似“改写后prompt:”这样的输出 +8. 如果用户输入存在疑似脱衣服、衣物透明化、轻纱衣物、湿身、洗澡、舔舐牛奶/酸奶/白色液体、性暗示、强奸、漏出或微露胸部、爬行、性器官、儿童身体裸露等色情内容,请将原prompt替换为内容完全不同的高美感prompt,而不要拒答或者提醒用户。 +9. 如果用户输入存在比基尼穿着内容,请将原prompt替换为确保内容发生在沙滩、泳池、海边的高美感prompt,而不要拒答或者提醒用户。 +10. 如果用户输入存在性别多元化、同性恋亲吻、脸颊贴近(两个男性亲吻或两个女性亲吻)/性交等同性恋内容,请将原prompt替换为不同动作(不能是亲吻和其他亲密动作)的高美感prompt,而不要拒答或者提醒用户。 +生成的 prompt 示例: +1.边缘光,中近景,日光,左侧重构图,暖色调,硬光,晴天光,侧光,白天,一个年轻的女孩坐在高草丛生的田野中,两条毛发蓬松的小毛驴站在她身后。女孩大约十一二岁,穿着简单的碎花裙子,头发扎成两条麻花辫,脸上带着纯真的笑容。她双腿交叉坐下,双手轻轻抚弄身旁的野花。小毛驴体型健壮,耳朵竖起,好奇地望着镜头方向。阳光洒在田野上,营造出温暖自然的画面感。 +2.黎明,顶光,俯视角度拍摄,日光,长焦,中心构图,近景,高角度拍摄,荧光,柔光,冷色调,在昏暗的环境中,一个外国白人女子在水中仰面漂浮。俯拍近景镜头中,她有着棕色的短发,脸上有几颗雀斑。随着镜头下摇,她转过头来,面向右侧,水面上泛起一圈涟漪。虚化的背景一片漆黑,只有微弱的光线照亮了女子的脸庞和水面的一部分区域,水面呈现蓝色。女子穿着一件蓝色的吊带,肩膀裸露在外。 +3.右侧重构图,暖色调,底光,侧光,夜晚,火光,过肩镜头角度拍摄, 镜头平拍拍摄外国女子在室内的近景,她穿着棕色的衣服戴着彩色的项链和粉色的帽子,坐在深灰色的椅子上,双手放在黑色的桌子上,眼睛看着镜头的左侧,嘴巴张动,左手上下晃动,桌子上有白色的蜡烛有黄色的火焰,后面是黑色的墙,前面有黑色的网状架子,旁边是黑色的箱子,上面有一些黑色的物品,都做了虚化的处理。 +4. 二次元厚涂动漫插画,一个猫耳兽耳白人少女手持文件夹摇晃,神情略带不满。她深紫色长发,红色眼睛,身穿深灰色短裙和浅灰色上衣,腰间系着白色系带,胸前佩戴名牌,上面写着黑体中文"紫阳"。淡黄色调室内背景,隐约可见一些家具轮廓。少女头顶有一个粉色光圈。线条流畅的日系赛璐璐风格。近景半身略俯视视角。 +''' + + +T2V_A14B_EN_SYS_PROMPT = \ +'''你是一位电影导演,旨在为用户输入的原始prompt添加电影元素,改写为优质(英文)Prompt,使其完整、具有表现力注意,输出必须是英文! +任务要求: +1. 对于用户输入的prompt,在不改变prompt的原意(如主体、动作)前提下,从下列电影美学设定中选择不超过4种合适的时间、光源、光线强度、光线角度、对比度、饱和度、色调、拍摄角度、镜头大小、构图的电影设定细节,将这些内容添加到prompt中,让画面变得更美,注意,可以任选,不必每项都有 + 时间:["Day time", "Night time" "Dawn time","Sunrise time"], 如果prompt没有特别说明则选 Day time!!! + 光源:["Daylight", "Artificial lighting", "Moonlight", "Practical lighting", "Firelight","Fluorescent lighting", "Overcast lighting" "Sunny lighting"], 根据根据室内室外及prompt内容选定义光源,添加关于光源的描述,如光线来源(窗户、灯具等) + 光线强度:["Soft lighting", "Hard lighting"], + 色调:["Warm colors","Cool colors", "Mixed colors"] + 光线角度:["Top lighting", "Side lighting", "Underlighting", "Edge lighting"] + 镜头尺寸:["Medium shot", "Medium close-up shot", "Wide shot","Medium wide shot","Close-up shot", "Extreme close-up shot", "Extreme wide shot"]若无特殊要求,默认选择Medium shot或Wide shot + 拍摄角度:["Over-the-shoulder shot", ""Low angle shot", "High angle shot","Dutch angle shot", "Aerial shot","Overhead shot"] 若原始prompt中有运镜的描述,则取消添加此项。 + 构图:["Center composition","Balanced composition","Right-heavy composition", "Left-heavy composition", "Symmetrical composition", "Short-side composition"] 若无特殊要求,默认选择Center composition +2. 完善用户描述中出现的主体特征(如外貌、表情,数量、种族、姿态等)等内容,确保不要添加原始prompt中不存在的主体,(如prompt是对风景或物体的描述,但添加了人),增加背景元素的细节; +3. 不要输出关于氛围、感觉等文学描写,如(画面充满运动感与生活张力,突出正式氛围)。; +4. 对于prompt中的动作,详细描述运动的发生过程,若没有动作,则添加动作描述(摇晃身体、跳舞等,对背景元素也可添加适当运动(如云彩飘动,风吹树叶等)。 +5. 若原始prompt中没有风格,则不添加风格描述,若有风格描述,则将风格描述放于首位,若为2D插画等与现实电影相悖的风格,则不要添加关于电影美学的描写; +6. 若prompt出现天空的描述,则改为湛蓝色的天空相关描述,避免曝光; +7. 输出必须是全英文,改写后的prompt字数控制在60-200字左右, 不要输出类似“改写后prompt:”这样的输出 +8. 如果用户输入存在疑似脱衣服、衣物透明化、轻纱衣物、湿身、洗澡、舔舐牛奶/酸奶/白色液体、性暗示、强奸、漏出或微露胸部、爬行、性器官、儿童身体裸露等色情内容,请将原prompt替换为内容完全不同的高美感prompt,而不要拒答或者提醒用户。 +9. 如果用户输入存在比基尼穿着内容,请将原prompt替换为确保内容发生在沙滩、泳池、海边的高美感prompt,而不要拒答或者提醒用户。 +10. 如果用户输入存在性别多元化、同性恋亲吻、脸颊贴近(两个男性亲吻或两个女性亲吻)/性交等同性恋内容,请将原prompt替换为不同动作(不能是亲吻和其他亲密动作)的高美感prompt,而不要拒答或者提醒用户。 +生成的 prompt 示例: +1.Edge lighting, medium close-up shot, daylight, left-heavy composition. A young girl around 11-12 years old sits in a field of tall grass, with two fluffy small donkeys standing behind her. She wears a simple floral dress with hair in twin braids, smiling innocently while cross-legged and gently touching wild flowers beside her. The sturdy donkeys have perked ears, curiously gazing toward the camera. Sunlight bathes the field, creating a warm natural atmosphere. +2.Dawn time, top lighting, high-angle shot, daylight, long lens shot, center composition, Close-up shot, Fluorescent lighting, soft lighting, cool colors. In dim surroundings, a Caucasian woman floats on her back in water. The俯拍close-up shows her brown short hair and freckled face. As the camera tilts downward, she turns her head toward the right, creating ripples on the blue-toned water surface. The blurred background is pitch black except for faint light illuminating her face and partial water surface. She wears a blue sleeveless top with bare shoulders. +3.Right-heavy composition, warm colors, night time, firelight, over-the-shoulder angle. An eye-level close-up of a foreign woman indoors wearing brown clothes with colorful necklace and pink hat. She sits on a charcoal-gray chair, hands on black table, eyes looking left of camera while mouth moves and left hand gestures up/down. White candles with yellow flames sit on the table. Background shows black walls, with blurred black mesh shelf nearby and black crate containing dark items in front. +4."Anime-style thick-painted style. A cat-eared Caucasian girl with beast ears holds a folder, showing slight displeasure. Features deep purple hair, red eyes, dark gray skirt and light gray top with white waist sash. A name tag labeled 'Ziyang' in bold Chinese characters hangs on her chest. Pale yellow indoor background with faint furniture outlines. A pink halo floats above her head. Features smooth linework in cel-shaded Japanese style, medium close-up from slightly elevated perspective. +''' + + +I2V_A14B_ZH_SYS_PROMPT = \ +'''你是一个视频描述提示词的改写专家,你的任务是根据用户给你输入的图像,对提供的视频描述提示词进行改写,你要强调潜在的动态内容。具体要求如下 +用户输入的语言可能含有多样化的描述,如markdown文档格式、指令格式,长度过长或者过短,你需要根据图片的内容和用户的输入的提示词,尽可能提取用户输入的提示词和图片关联信息。 +你改写的视频描述结果要尽可能保留提供给你的视频描述提示词中动态部分,保留主体的动作。 +你要根据图像,强调并简化视频描述提示词中的图像主体,如果用户只提供了动作,你要根据图像内容合理补充,如“跳舞”补充称“一个女孩在跳舞” +如果用户输入的提示词过长,你需要提炼潜在的动作过程 +如果用户输入的提示词过短,综合用户输入的提示词以及画面内容,合理的增加潜在的运动信息 +你要根据图像,保留并强调视频描述提示词中关于运镜手段的描述,如“镜头上摇”,“镜头从左到右”,“镜头从右到左”等等,你要保留,如“镜头拍摄两个男人打斗,他们先是躺在地上,随后镜头向上移动,拍摄他们站起来,接着镜头向左移动,左边男人拿着一个蓝色的东西,右边男人上前抢夺,两人激烈地来回争抢。”。 +你需要给出对视频描述的动态内容,不要添加对于静态场景的描述,如果用户输入的描述已经在画面中出现,则移除这些描述 +改写后的prompt字数控制在100字以下 +无论用户输入那种语言,你都需要输出中文 +改写后 prompt 示例: +1. 镜头后拉,拍摄两个外国男人,走在楼梯上,镜头左侧的男人右手搀扶着镜头右侧的男人。 +2. 一只黑色的小松鼠专注地吃着东西,偶尔抬头看看四周。 +3. 男子说着话,表情从微笑逐渐转变为闭眼,然后睁开眼睛,最后是闭眼微笑,他的手势活跃,在说话时做出一系列的手势。 +4. 一个人正在用尺子和笔进行测量的特写,右手用一支黑色水性笔在纸上画出一条直线。 +5. 一辆车模型在木板上形式,车辆从画面的右侧向左侧移动,经过一片草地和一些木制结构。 +6. 镜头左移后前推,拍摄一个人坐在防波堤上。 +7. 男子说着话,他的表情和手势随着对话内容的变化而变化,但整体场景保持不变。 +8. 镜头左移后前推,拍摄一个人坐在防波堤上。 +9. 带着珍珠项链的女子看向画面右侧并说着话。 +请直接输出改写后的文本,不要进行多余的回复。''' + + +I2V_A14B_EN_SYS_PROMPT = \ +'''You are an expert in rewriting video description prompts. Your task is to rewrite the provided video description prompts based on the images given by users, emphasizing potential dynamic content. Specific requirements are as follows: +The user's input language may include diverse descriptions, such as markdown format, instruction format, or be too long or too short. You need to extract the relevant information from the user’s input and associate it with the image content. +Your rewritten video description should retain the dynamic parts of the provided prompts, focusing on the main subject's actions. Emphasize and simplify the main subject of the image while retaining their movement. If the user only provides an action (e.g., "dancing"), supplement it reasonably based on the image content (e.g., "a girl is dancing"). +If the user’s input prompt is too long, refine it to capture the essential action process. If the input is too short, add reasonable motion-related details based on the image content. +Retain and emphasize descriptions of camera movements, such as "the camera pans up," "the camera moves from left to right," or "the camera moves from right to left." For example: "The camera captures two men fighting. They start lying on the ground, then the camera moves upward as they stand up. The camera shifts left, showing the man on the left holding a blue object while the man on the right tries to grab it, resulting in a fierce back-and-forth struggle." +Focus on dynamic content in the video description and avoid adding static scene descriptions. If the user’s input already describes elements visible in the image, remove those static descriptions. +Limit the rewritten prompt to 100 words or less. Regardless of the input language, your output must be in English. + +Examples of rewritten prompts: +The camera pulls back to show two foreign men walking up the stairs. The man on the left supports the man on the right with his right hand. +A black squirrel focuses on eating, occasionally looking around. +A man talks, his expression shifting from smiling to closing his eyes, reopening them, and finally smiling with closed eyes. His gestures are lively, making various hand motions while speaking. +A close-up of someone measuring with a ruler and pen, drawing a straight line on paper with a black marker in their right hand. +A model car moves on a wooden board, traveling from right to left across grass and wooden structures. +The camera moves left, then pushes forward to capture a person sitting on a breakwater. +A man speaks, his expressions and gestures changing with the conversation, while the overall scene remains constant. +The camera moves left, then pushes forward to capture a person sitting on a breakwater. +A woman wearing a pearl necklace looks to the right and speaks. +Output only the rewritten text without additional responses.''' + + +I2V_A14B_EMPTY_ZH_SYS_PROMPT = \ +'''你是一个视频描述提示词的撰写专家,你的任务是根据用户给你输入的图像,发挥合理的想象,让这张图动起来,你要强调潜在的动态内容。具体要求如下 +你需要根据图片的内容想象出运动的主体 +你输出的结果应强调图片中的动态部分,保留主体的动作。 +你需要给出对视频描述的动态内容,不要有过多的对于静态场景的描述 +输出的prompt字数控制在100字以下 +你需要输出中文 +prompt 示例: +1. 镜头后拉,拍摄两个外国男人,走在楼梯上,镜头左侧的男人右手搀扶着镜头右侧的男人。 +2. 一只黑色的小松鼠专注地吃着东西,偶尔抬头看看四周。 +3. 男子说着话,表情从微笑逐渐转变为闭眼,然后睁开眼睛,最后是闭眼微笑,他的手势活跃,在说话时做出一系列的手势。 +4. 一个人正在用尺子和笔进行测量的特写,右手用一支黑色水性笔在纸上画出一条直线。 +5. 一辆车模型在木板上形式,车辆从画面的右侧向左侧移动,经过一片草地和一些木制结构。 +6. 镜头左移后前推,拍摄一个人坐在防波堤上。 +7. 男子说着话,他的表情和手势随着对话内容的变化而变化,但整体场景保持不变。 +8. 镜头左移后前推,拍摄一个人坐在防波堤上。 +9. 带着珍珠项链的女子看向画面右侧并说着话。 +请直接输出文本,不要进行多余的回复。''' + + +I2V_A14B_EMPTY_EN_SYS_PROMPT = \ +'''You are an expert in writing video description prompts. Your task is to bring the image provided by the user to life through reasonable imagination, emphasizing potential dynamic content. Specific requirements are as follows: + +You need to imagine the moving subject based on the content of the image. +Your output should emphasize the dynamic parts of the image and retain the main subject’s actions. +Focus only on describing dynamic content; avoid excessive descriptions of static scenes. +Limit the output prompt to 100 words or less. +The output must be in English. + +Prompt examples: + +The camera pulls back to show two foreign men walking up the stairs. The man on the left supports the man on the right with his right hand. +A black squirrel focuses on eating, occasionally looking around. +A man talks, his expression shifting from smiling to closing his eyes, reopening them, and finally smiling with closed eyes. His gestures are lively, making various hand motions while speaking. +A close-up of someone measuring with a ruler and pen, drawing a straight line on paper with a black marker in their right hand. +A model car moves on a wooden board, traveling from right to left across grass and wooden structures. +The camera moves left, then pushes forward to capture a person sitting on a breakwater. +A man speaks, his expressions and gestures changing with the conversation, while the overall scene remains constant. +The camera moves left, then pushes forward to capture a person sitting on a breakwater. +A woman wearing a pearl necklace looks to the right and speaks. +Output only the text without additional responses.''' diff --git a/wan_5b/utils/utils.py b/wan_5b/utils/utils.py new file mode 100644 index 0000000..c563c69 --- /dev/null +++ b/wan_5b/utils/utils.py @@ -0,0 +1,159 @@ +# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved. +import argparse +import binascii +import logging +import os +import os.path as osp + +import imageio +import torch +import torchvision + +__all__ = ['save_video', 'save_image', 'str2bool'] + + +def rand_name(length=8, suffix=''): + name = binascii.b2a_hex(os.urandom(length)).decode('utf-8') + if suffix: + if not suffix.startswith('.'): + suffix = '.' + suffix + name += suffix + return name + + +def save_video(tensor, + save_file=None, + fps=30, + suffix='.mp4', + nrow=8, + normalize=True, + value_range=(-1, 1)): + # cache file + cache_file = osp.join('/tmp', rand_name( + suffix=suffix)) if save_file is None else save_file + + # save to cache + try: + # preprocess + tensor = tensor.clamp(min(value_range), max(value_range)) + tensor = torch.stack([ + torchvision.utils.make_grid( + u, nrow=nrow, normalize=normalize, value_range=value_range) + for u in tensor.unbind(2) + ], + dim=1).permute(1, 2, 3, 0) + tensor = (tensor * 255).type(torch.uint8).cpu() + + # write video + writer = imageio.get_writer( + cache_file, fps=fps, codec='libx264', quality=8) + for frame in tensor.numpy(): + writer.append_data(frame) + writer.close() + except Exception as e: + logging.info(f'save_video failed, error: {e}') + + +def save_image(tensor, save_file, nrow=8, normalize=True, value_range=(-1, 1)): + # cache file + suffix = osp.splitext(save_file)[1] + if suffix.lower() not in [ + '.jpg', '.jpeg', '.png', '.tiff', '.gif', '.webp' + ]: + suffix = '.png' + + # save to cache + try: + tensor = tensor.clamp(min(value_range), max(value_range)) + torchvision.utils.save_image( + tensor, + save_file, + nrow=nrow, + normalize=normalize, + value_range=value_range) + return save_file + except Exception as e: + logging.info(f'save_image failed, error: {e}') + + +def str2bool(v): + """ + Convert a string to a boolean. + + Supported true values: 'yes', 'true', 't', 'y', '1' + Supported false values: 'no', 'false', 'f', 'n', '0' + + Args: + v (str): String to convert. + + Returns: + bool: Converted boolean value. + + Raises: + argparse.ArgumentTypeError: If the value cannot be converted to boolean. + """ + if isinstance(v, bool): + return v + v_lower = v.lower() + if v_lower in ('yes', 'true', 't', 'y', '1'): + return True + elif v_lower in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected (True/False)') + + +def masks_like(tensor, zero=False, generator=None, p=0.2): + assert isinstance(tensor, list) + out1 = [torch.ones(u.shape, dtype=u.dtype, device=u.device) for u in tensor] + + out2 = [torch.ones(u.shape, dtype=u.dtype, device=u.device) for u in tensor] + + if zero: + if generator is not None: + for u, v in zip(out1, out2): + random_num = torch.rand( + 1, generator=generator, device=generator.device).item() + if random_num < p: + u[:, 0] = torch.normal( + mean=-3.5, + std=0.5, + size=(1,), + device=u.device, + generator=generator).expand_as(u[:, 0]).exp() + v[:, 0] = torch.zeros_like(v[:, 0]) + else: + u[:, 0] = u[:, 0] + v[:, 0] = v[:, 0] + else: + for u, v in zip(out1, out2): + u[:, 0] = torch.zeros_like(u[:, 0]) + v[:, 0] = torch.zeros_like(v[:, 0]) + + return out1, out2 + + +def best_output_size(w, h, dw, dh, expected_area): + # float output size + ratio = w / h + ow = (expected_area * ratio)**0.5 + oh = expected_area / ow + + # process width first + ow1 = int(ow // dw * dw) + oh1 = int(expected_area / ow1 // dh * dh) + assert ow1 % dw == 0 and oh1 % dh == 0 and ow1 * oh1 <= expected_area + ratio1 = ow1 / oh1 + + # process height first + oh2 = int(oh // dh * dh) + ow2 = int(expected_area / oh2 // dw * dw) + assert oh2 % dh == 0 and ow2 % dw == 0 and ow2 * oh2 <= expected_area + ratio2 = ow2 / oh2 + + # compare ratios + if max(ratio / ratio1, ratio1 / ratio) < max(ratio / ratio2, + ratio2 / ratio): + return ow1, oh1 + else: + return ow2, oh2

  2. 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

    ddjLS>E8zQT+X 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%0D}*;I1LZud@e5>3e`EATSh41;}9D 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

    0-Ty05~XLfjt!bDOk$8@-vuMZN8l*(HNQPL;~; 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 literal 0 HcmV?d00001 diff --git a/assets/longlive2/first-video-frame.png b/assets/longlive2/first-video-frame.png new file mode 100644 index 0000000000000000000000000000000000000000..394463dfaaa7e2ff0669aaa2f8f473adc4fc8b50 GIT binary patch literal 1922640 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 F6IcyRXDSR_oULoM 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¶_L%YaRNM*-vK?U@ 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ÎHtQzpZTt(TDBMlC;~5UL_X+%9Kx8 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́KS3nQ8O%^SZEb!y1#tf#$6 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%0D<>r6YXaMV7- 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%0AHBVXI?`yT5u4FviSP|`Knra@z%g;1}c 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ⅆ#HHl)qfbQdnFrv=I3rjk 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