Продолжаем серию постов про основные методы для ускорения диффузионных моделей. [Ссылка на часть 1].
Optimized Sampling Efficiency by new samplers: Есть подходы на основе численных методов, которые позволяют более эффективно решать дифференциальное уравнение, задающее траекторию обратной диффузии (это когда мы из шума движемся к картинке). ➖STSP: Sampling with splitting numerical methods ➖В эту категорию тоже можно отнести всякие замысловатые солверы, такие как DDIM, DPM, PNDM, PLMS, UniPC [пост]. ➖Итеративный метод Пикарда, который позволяет распараллелить семплинг, ценой больших вычислений [пост].
Low-level optimizations: ➖Профайлером анализируем узкие места в сети и переписываем отдельные операции на CUDA и вручную оптимизируем и фьюзим кернелы. Тут общие советы трудно давать, все зависит от вашей архитектуры. ➖FlashAttention-2 - ускоряет flash-attention блоки, которые являются одними из самых прожорливых по ресурсам в архитектуре Unet, широко используемой в диффузиях.