Buckets:
| # CacheDiT | |
| [CacheDiT](https://github.com/vipshop/cache-dit) ускоряет пайплайны DiT за счёт повторного использования выходов блоков трансформера на шагах денойзинга. Он не требует обучения и поддерживает большинство пайплайнов DiT в Diffusers, включая Flux, Qwen-Image, Wan и HunyuanVideo. В Diffusers также есть [встроенный кэширование](./cache), которое не требует дополнительных зависимостей. | |
| Установите CacheDiT из PyPI. | |
| ```bash | |
| pip install -U cache-dit | |
| ``` | |
| Вызовите `cache_dit.supported_pipelines()`, чтобы получить список семейств пайплайнов, поддерживаемых CacheDiT. | |
| ```py | |
| import cache_dit | |
| cache_dit.supported_pipelines() | |
| ``` | |
| ## Включить кэширование | |
| Вызовите `cache_dit.enable_cache` для конвейера, чтобы кэшировать его с настройками по умолчанию, а затем запустите конвейер в обычном режиме. | |
| ```py | |
| import torch | |
| import cache_dit | |
| from diffusers import FluxPipeline | |
| pipeline = FluxPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16 | |
| ).to("cuda") | |
| cache_dit.enable_cache(pipeline) | |
| image = pipeline( | |
| "A cat holding a sign that says hello world", num_inference_steps=28 | |
| ).images[0] | |
| ``` | |
| CacheDiT также работает с `torch.compile`. Компилируйте трансформер после вызова `enable_cache`. См. документацию по [compile](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/COMPILE.md) для настроек, позволяющих избежать повторной компиляции при динамических формах входных данных. | |
| ```py | |
| pipeline.transformer = torch.compile(pipeline.transformer) | |
| ``` | |
| Вызовите `cache_dit.summary` после инференса, чтобы зафиксировать количество закэшированных шагов и остаточные различия между шагами. | |
| ```py | |
| stats = cache_dit.summary(pipeline) | |
| ``` | |
| Вызовите `cache_dit.disable_cache`, чтобы восстановить исходный конвейер. | |
| ```py | |
| cache_dit.disable_cache(pipeline) | |
| ``` | |
| ## Настройка кэша | |
| DBCache (Dual Block Cache) вычисляет первые n блоков (Fn) на каждом шаге. Если их выход почти не меняется по сравнению с предыдущим шагом, кэшированный выход переиспользуется для оставшихся блоков, при этом последние n блоков (Bn) могут быть пересчитаны для коррекции. Калибратор TaylorSeer предсказывает кэшированный выход из более ранних шагов, вместо того чтобы переиспользовать его без изменений. | |
| `enable_cache` по умолчанию использует DBCache, при этом первые 8 блоков всегда вычисляются (F8B0), а также выполняется 8 шагов прогрева без кэширования. Чтобы пожертвовать скоростью ради качества, увеличьте `Fn_compute_blocks` или уменьшите `residual_diff_threshold` (по умолчанию `0.08`). Для наилучшего качества при высоких скоростях кэширования добавьте калибровщик TaylorSeer. | |
| ```py | |
| from cache_dit import DBCacheConfig, TaylorSeerCalibratorConfig | |
| cache_dit.enable_cache( | |
| pipeline, | |
| cache_config=DBCacheConfig( | |
| max_warmup_steps=8, | |
| Fn_compute_blocks=8, | |
| Bn_compute_blocks=0, | |
| residual_diff_threshold=0.12, | |
| ), | |
| calibrator_config=TaylorSeerCalibratorConfig(taylorseer_order=1), | |
| ) | |
| ``` | |
| Для поддерживаемых пайплайнов CacheDiT уже знает, выполняется ли CFG как отдельный прямой проход. Для других моделей установите `enable_separate_cfg=True` в `DBCacheConfig`, если модель выполняет условный и безусловный проходы отдельно, или `False`, если она объединяет их или не использует CFG. | |
| См. документацию [проектирования DBCache](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/DBCACHE_DESIGN.md) о том, как работают блоки Fn и Bn, а также [бенчмарки кэша](https://github.com/vipshop/cache-dit/blob/main/bench/cache/README.md) для показателей скорости и качества. | |
| ## Дальнейшие шаги | |
| - Для пайплайнов, которые пока не поддерживаются CacheDiT, см. документацию [BlockAdapter](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/CACHE_API.md#automatic-block-adapter). | |
| - CacheDiT также поддерживает [контекстную параллельность](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/CONTEXT_PARALLEL.md) и [квантование](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/QUANTIZATION.md). | |
Xet Storage Details
- Size:
- 5.66 kB
- Xet hash:
- 50720e8329c130fbe40b0e4d89b789bf7c66aad572f11eaca5401518c2ad8097
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.