thu-ml/TurboDiffusion: TurboDiffusion: ускорение в 100–200 раз для моделей видеодиффузии

Этот репозиторий предоставляет официальную реализацию ТурбоДиффузияплатформа ускорения генерации видео, которая может ускорить сквозную генерацию распространения за счет 100 долларов США сим 200раз$ на одном RTX 5090, сохраняя при этом качество видео.
TurboDiffusion в основном использует МудрецВнимание, SLA (разреженно-линейное внимание) для ускорения внимания и рКМ для временной дистилляции.

Бумага: TurboDiffusion: ускорение моделей распространения видео в 100-200 раз

Примечание: контрольные точки и бумага еще не доработаны и будут обновлены позже для улучшения качества.

Оригинал, E2E Время: 184 с.

Турбодиффузия, время E2E: 1,9 с

Пример 5-секундное видео генерируется Wan-2.1-T2V-1.3B-480P на одном РТХ 5090.

Примечание. Все контрольные точки поддерживают создание видео с разрешением 480p или 720p. В столбце «Наилучшее разрешение» указано разрешение, при котором модель обеспечивает наилучшее качество видео.

Базовая среда: python>=3.9, torch>=2.7.0. torch==2.8.0 рекомендуется, так как более высокие версии могут вызвать OOM.

Установите TurboDiffusion с помощью pip:

conda create -n turbodiffusion python=3.12
conda activate turbodiffusion

pip install turbodiffusion --no-build-isolation

Или скомпилируйте из исходников:

git clone https://github.com/thu-ml/TurboDiffusion.git
cd TurboDiffusion
git submodule update --init --recursive
pip install -e . --no-build-isolation

Чтобы включить SageSLA, быстрый переход вперед по SLA на основе SageAttention, установите SpreadAttn первый:

pip install git+https://github.com/thu-ml/SpargeAttn.git --no-build-isolation

Для графических процессоров с объемом памяти более 40 ГБ: например, H100, используйте неквантованные контрольные точки (без -quant) и удалить --quant_linear из команды. Для RTX 5090, RTX 4090 или аналогичных графических процессоров используйте квантованные контрольные точки (с -quant) и добавьте --quant_linear в команде.)

  1. Загрузите VAE (применимо как для Wan2.1, так и для Wan2.2) и контрольные точки кодировщика текста umT5:

    mkdir checkpoints
    cd checkpoints
    wget https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B/resolve/main/Wan2.1_VAE.pth
    wget https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B/resolve/main/models_t5_umt5-xxl-enc-bf16.pth
  2. Загрузите контрольные точки квантовой модели (для RTX 5090 или аналогичных графических процессоров):

    # For Wan2.1-T2V-1.3B
    wget https://huggingface.co/TurboDiffusion/TurboWan2.1-T2V-1.3B-480P/resolve/main/TurboWan2.1-T2V-1.3B-480P-quant.pth
    
    # For Wan2.2-I2V-14B
    wget https://huggingface.co/TurboDiffusion/TurboWan2.2-I2V-A14B-720P/resolve/main/TurboWan2.2-I2V-A14B-high-720P-quant.pth
    wget https://huggingface.co/TurboDiffusion/TurboWan2.2-I2V-A14B-720P/resolve/main/TurboWan2.2-I2V-A14B-low-720P-quant.pth

    Или загрузите наши контрольные точки неквантованной модели (для H100 или аналогичных графических процессоров):

    # For Wan2.1-T2V-1.3B
    wget https://huggingface.co/TurboDiffusion/TurboWan2.1-T2V-1.3B-480P/resolve/main/TurboWan2.1-T2V-1.3B-480P.pth
    
    # For Wan2.2-I2V-14B
    wget https://huggingface.co/TurboDiffusion/TurboWan2.2-I2V-A14B-720P/resolve/main/TurboWan2.2-I2V-A14B-high-720P.pth
    wget https://huggingface.co/TurboDiffusion/TurboWan2.2-I2V-A14B-720P/resolve/main/TurboWan2.2-I2V-A14B-low-720P.pth
  3. Используйте сценарий вывода для Т2В модели:

    export PYTHONPATH=turbodiffusion
    
    # Arguments:
    # --dit_path            Path to the finetuned TurboDiffusion checkpoint
    # --model               Model to use: Wan2.1-1.3B or Wan2.1-14B (default: Wan2.1-1.3B)
    # --num_samples         Number of videos to generate (default: 1)
    # --num_steps           Sampling steps, 1–4 (default: 4)
    # --sigma_max           Initial sigma for rCM (default: 80); larger choices (e.g., 1600) reduce diversity but may enhance quality
    # --vae_path            Path to Wan2.1 VAE (default: checkpoints/Wan2.1_VAE.pth)
    # --text_encoder_path   Path to umT5 text encoder (default: checkpoints/models_t5_umt5-xxl-enc-bf16.pth)
    # --num_frames          Number of frames to generate (default: 81)
    # --prompt              Text prompt for video generation
    # --resolution          Output resolution: "480p" or "720p" (default: 480p)
    # --aspect_ratio        Aspect ratio in W:H format (default: 16:9)
    # --seed                Random seed for reproducibility (default: 0)
    # --save_path           Output file path including extension (default: output/generated_video.mp4)
    # --attention_type      Attention module to use: original, sla or sagesla (default: sagesla)
    # --sla_topk            Top-k ratio for SLA/SageSLA attention (default: 0.1), we recommend using 0.15 for better video quality
    # --quant_linear        Enable quantization for linear layers, pass this if using a quantized checkpoint
    # --default_norm        Use the original LayerNorm and RMSNorm of Wan models
    
    python turbodiffusion/inference/wan2.1_t2v_infer.py 
        --model Wan2.1-1.3B 
        --dit_path checkpoints/TurboWan2.1-T2V-1.3B-480P-quant.pth 
        --resolution 480p 
        --prompt "A stylish woman walks down a Tokyo street filled with warm glowing neon and animated city signage. She wears a black leather jacket, a long red dress, and black boots, and carries a black purse. She wears sunglasses and red lipstick. She walks confidently and casually. The street is damp and reflective, creating a mirror effect of the colorful lights. Many pedestrians walk about." 
        --num_samples 1 
        --num_steps 4 
        --quant_linear 
        --attention_type sagesla 
        --sla_topk 0.1

    Или сценарий для I2V модель:

    export PYTHONPATH=turbodiffusion
    
    # --image_path              Path to the input image
    # --high_noise_model_path   Path to the high noise TurboDiffusion checkpoint
    # --low_noise_model_path    Path to the high noise TurboDiffusion checkpoint
    # --boundary                Timestep boundary for switching from high to low noise model (default: 0.9)
    # --model                   Model to use: Wan2.2-A14B (default: Wan2.2-A14B)
    # --num_samples             Number of videos to generate (default: 1)
    # --num_steps               Sampling steps, 1–4 (default: 4)
    # --sigma_max               Initial sigma for rCM (default: 200); larger choices (e.g., 1600) reduce diversity but may enhance quality
    # --vae_path                Path to Wan2.2 VAE (default: checkpoints/Wan2.2_VAE.pth)
    # --text_encoder_path       Path to umT5 text encoder (default: checkpoints/models_t5_umt5-xxl-enc-bf16.pth)
    # --num_frames              Number of frames to generate (default: 81)
    # --prompt                  Text prompt for video generation
    # --resolution              Output resolution: "480p" or "720p" (default: 720p)
    # --aspect_ratio            Aspect ratio in W:H format (default: 16:9)
    # --adaptive_resolution     Enable adaptive resolution based on input image size
    # --ode                     Use ODE for sampling (sharper but less robust than SDE)
    # --seed                    Random seed for reproducibility (default: 0)
    # --save_path               Output file path including extension (default: output/generated_video.mp4)
    # --attention_type          Attention module to use: original, sla or sagesla (default: sagesla)
    # --sla_topk                Top-k ratio for SLA/SageSLA attention (default: 0.1), we recommend using 0.15 for better video quality
    # --quant_linear            Enable quantization for linear layers, pass this if using a quantized checkpoint
    # --default_norm            Use the original LayerNorm and RMSNorm of Wan models
    
    python turbodiffusion/inference/wan2.2_i2v_infer.py 
        --model Wan2.2-A14B 
        --low_noise_model_path checkpoints/TurboWan2.2-I2V-A14B-low-720P-quant.pth 
        --high_noise_model_path checkpoints/TurboWan2.2-I2V-A14B-high-720P-quant.pth 
        --resolution 720p 
        --adaptive_resolution 
        --image_path assets/i2v_inputs/i2v_input_0.jpg 
        --prompt "POV selfie video, ultra-messy and extremely fast. A white cat in sunglasses stands on a surfboard with a neutral look when the board suddenly whips sideways, throwing cat and camera into the water; the frame dives sharply downward, swallowed by violent bursts of bubbles, spinning turbulence, and smeared water streaks as the camera sinks. Shadows thicken, pressure ripples distort the edges, and loose bubbles rush upward past the lens, showing the camera is still sinking. Then the cat kicks upward with explosive speed, dragging the view through churning bubbles and rapidly brightening water as sunlight floods back in; the camera races upward, water streaming off the lens, and finally breaks the surface in a sudden blast of light and spray, snapping back into a crooked, frantic selfie as the cat resurfaces." 
        --num_samples 1 
        --num_steps 4 
        --quant_linear 
        --attention_type sagesla 
        --sla_topk 0.1 
        --ode

Интерактивный вывод через терминал доступен по адресу turbodiffusion/serve/. Это позволяет генерировать многоходовое видео без перезагрузки модели.

Read more:  Бельгия присоединяется к Дании, Мексике, Германии, Бразилии, Италии, Турции и другим странам, поскольку Канада выпускает срочные новые рекомендации для туристов высокого уровня на фоне растущих опасений по поводу паспортов и растущих угроз.

Мы оцениваем генерацию видео на один графический процессор RTX 5090. Время E2E относится к задержке сквозной диффузионной генерации, исключая кодирование текста и декодирование VAE.

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Исходное время, E2E: 4549 с.

Турбодиффузия, время E2E: 38 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Оригинал, E2E Время: 184 с.

FastVideo, время E2E: 5,3 с.

Турбодиффузия, время E2E: 1,9 с

Исходное время, E2E: 4767 с.

FastVideo, время E2E: 72,6 с.

Турбодиффузия, время E2E: 24 секунды

Исходное время, E2E: 4767 с.

FastVideo, время E2E: 72,6 с.

Турбодиффузия, время E2E: 24 секунды

Исходное время, E2E: 4767 с.

FastVideo, время E2E: 72,6 с.

Турбодиффузия, время E2E: 24 секунды

Read more:  Исход войны на Украине определит будущее Европы

Оригинал, E2E Время: 1676 с.

FastVideo, время E2E: 26,3 с.

Турбодиффузия, время E2E: 9,9 с

Оригинал, E2E Время: 1676 с.

FastVideo, время E2E: 26,3 с.

Турбодиффузия, время E2E: 9,9 с

Оригинал, E2E Время: 1676 с.

FastVideo, время E2E: 26,3 с.

Турбодиффузия, время E2E: 9,9 с

Оригинал, E2E Время: 1676 с.

FastVideo, время E2E: 26,3 с.

Турбодиффузия, время E2E: 9,9 с

В этом репозитории мы предоставляем обучающий код на основе Wan2.1 и его синтетических данных. Обучение основано на кодовой базе rCM (https://github.com/NVlabs/rcm), с поддержкой инфраструктуры, включая FSDP2, Ulysses CP и контрольную точку выборочной активации (SAC). Инструкции по обучению rCM можно найти в исходном репозитории rCM; SLA (разреженно-линейное внимание) Руководство по обучению представлено здесь.

Для обучения rCM/SLA дополнительно запустите:

pip install megatron-core hydra-core wandb webdataset
pip install --no-build-isolation transformer_engine[pytorch]

Загрузите предварительно обученные контрольные точки Wan2.1 в .pth формат и VAE/текстовый кодер для assets/checkpoints:

# make sure git lfs is installed
git clone https://huggingface.co/worstcoder/Wan assets/checkpoints

FSDP2 опирается на Распределенная контрольная точка (DCP) для загрузки и сохранения контрольных точек. Перед тренировкой конвертируйте .pth контрольно-пропускные пункты учителей .dcp первый:

python -m torch.distributed.checkpoint.format_utils torch_to_dcp assets/checkpoints/Wan2.1-T2V-1.3B.pth assets/checkpoints/Wan2.1-T2V-1.3B.dcp

После тренировки сохраненные .dcp контрольно-пропускные пункты могут быть преобразованы в .pth используя сценарий scripts/dcp_to_pth.py.

Мы предоставляем наборы данных, синтезированные с помощью Wan2.1-14B. Загрузите в assets/datasets с использованием:

# make sure git lfs is installed
git clone https://huggingface.co/datasets/worstcoder/Wan_datasets assets/datasets

Мы реализуем обучение SLA по принципу «белого ящика», совмещая прогнозы модели с поддержкой SLA с прогнозами предварительно обученной модели с полным вниманием. В отличие от обучения «черного ящика» в оригинальной статье, которое настраивает предварительно обученную модель с использованием диффузионных потерь, обучение «белого ящика» смягчает сдвиг распределения и менее чувствительно к обучающим данным.

Read more:  Казинс Аджит и Суле делят сцену и манифест для гражданских опросов в Пуне | Новости Индии

Пример обучения с одним узлом:

WORKDIR="/your/path/to/turbodiffusion"
cd $WORKDIR
export PYTHONPATH=turbodiffusion

# the "IMAGINAIRE_OUTPUT_ROOT" environment variable is the path to save experiment output files
export IMAGINAIRE_OUTPUT_ROOT=${WORKDIR}/outputs
CHECKPOINT_ROOT=${WORKDIR}/assets/checkpoints
DATASET_ROOT=${WORKDIR}/assets/datasets/Wan2.1_14B_480p_16:9_Euler-step100_shift-3.0_cfg-5.0_seed-0_250K

# your Wandb information
export WANDB_API_KEY=xxx
export WANDB_ENTITY=xxx

registry=registry_sla
experiment=wan2pt1_1pt3B_res480p_t2v_SLA

torchrun --nproc_per_node=8 
    -m scripts.train --config=rcm/configs/${registry}.py -- experiment=${experiment} 
        model.config.teacher_ckpt=${CHECKPOINT_ROOT}/Wan2.1-T2V-1.3B.dcp 
        model.config.tokenizer.vae_pth=${CHECKPOINT_ROOT}/Wan2.1_VAE.pth 
        model.config.text_encoder_path=${CHECKPOINT_ROOT}/models_t5_umt5-xxl-enc-bf16.pth 
        model.config.neg_embed_path=${CHECKPOINT_ROOT}/umT5_wan_negative_emb.pt 
        dataloader_train.tar_path_pattern=${DATASET_ROOT}/shard*.tar

Пожалуйста, обратитесь к turbodiffusion/rcm/configs/experiments/sla/wan2pt1_t2v.py для конфигурации 14B или внесите необходимые изменения.

Обновления параметров, полученные в результате обучения SLA, можно объединить с контрольными точками rCM, используя turbodiffusion/scripts/merge_models.pyчто позволяет rCM выполнять вывод о разреженном внимании. Указать --base как модель RCM, --diff_base в качестве предварительно обученной модели, и --diff_target как модель с настройкой SLA.

Мы благодарим сообщество за усилия Comfyui_turbodiffusion за интеграцию TurboDiffusion в ComfyUI.

Мы активно работаем над следующими функциями и улучшениями:

Мы приглашаем членов сообщества помочь поддерживать и расширять TurboDiffusion. Добро пожаловать в команду TurboDiffusion и вносите свой вклад вместе!

Если вы используете этот код или считаете нашу работу ценной, укажите:

@article{zhang2025turbodiffusion,
  title={TurboDiffusion: Accelerating Video Diffusion Models by 100-200 Times},
  author={Zhang, Jintao and Zheng, Kaiwen and Jiang, Kai and Wang, Haoxu and Stoica, Ion and Gonzalez, Joseph E and Chen, Jianfei and Zhu, Jun},
  journal={arXiv preprint arXiv:2512.16093},
  year={2025}
}

@software{turbodiffusion2025,
  title={TurboDiffusion: Accelerating Video Diffusion Models by 100-200 Times},
  author={The TurboDiffusion Team},
  url={https://github.com/thu-ml/TurboDiffusion},
  year={2025}
}

@inproceedings{zhang2025sageattention,
  title={SageAttention: Accurate 8-Bit Attention for Plug-and-play Inference Acceleration}, 
  author={Zhang, Jintao and Wei, Jia and Zhang, Pengle and Zhu, Jun and Chen, Jianfei},
  booktitle={International Conference on Learning Representations (ICLR)},
  year={2025}
}

@article{zhang2025sla,
  title={SLA: Beyond Sparsity in Diffusion Transformers via Fine-Tunable Sparse-Linear Attention},
  author={Zhang, Jintao and Wang, Haoxu and Jiang, Kai and Yang, Shuo and Zheng, Kaiwen and Xi, Haocheng and Wang, Ziteng and Zhu, Hongzhou and Zhao, Min and Stoica, Ion and others},
  journal={arXiv preprint arXiv:2509.24006},
  year={2025}
}

@article{zheng2025rcm,
  title={Large Scale Diffusion Distillation via Score-Regularized Continuous-Time Consistency},
  author={Zheng, Kaiwen and Wang, Yuji and Ma, Qianli and Chen, Huayu and Zhang, Jintao and Balaji, Yogesh and Chen, Jianfei and Liu, Ming-Yu and Zhu, Jun and Zhang, Qinsheng},
  journal={arXiv preprint arXiv:2510.08431},
  year={2025}
}

@inproceedings{zhang2024sageattention2,
  title={Sageattention2: Efficient attention with thorough outlier smoothing and per-thread int4 quantization},
  author={Zhang, Jintao and Huang, Haofeng and Zhang, Pengle and Wei, Jia and Zhu, Jun and Chen, Jianfei},
  booktitle={International Conference on Machine Learning (ICML)},
  year={2025}
}

2025-12-26 03:19:00


1766733709
#thumlTurboDiffusion #TurboDiffusion #ускорение #раз #для #моделей #видеодиффузии

Читайте также

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.