Buckets:

mishig's picture
|
download
raw
4.87 kB
# 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`. قم بتجميع المحوّل (transformer) بعد استدعاء `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),
)
```
بالنسبة إلى خطوط الأنابيب المدعومة، يعرف CacheDiit مسبقًا ما إذا كان 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:
4.87 kB
·
Xet hash:
ac56f814cf27ea870282719f49ef81e1096aeaaec33678177fba720d4a0abe31

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.