У меня возник вопрос касательно оптимизации инференса, а именно про баланс между memory-bound и compute-bound операциями. Как известно, классический AR-декодинг является memory-bound операцией. В диффузионных моделях за счет генерации сразу пачки токенов арифметическая эффективность теоретически должна возрастать. Из этого всего следует два вопроса:
Удалось ли вам на практике сдвинуть GFusion в сторону compute-bound при достаточно больших размерах блока? Или пропускная способность памяти все равно остается главным бутылочным горлышком, а ускорение достигается чисто за счет сокращения количества чтений весов?
Как в вашей интеграции с SGLang решается вопрос с PagedAttention и хранением состояния для токенов внутри самого диффузионного блока? Поскольку блок проходит через несколько итераций денойзинга и токены взаимодействуют друг с другом, требует ли это аллокации дополнительных буферов под промежуточные активации или специфичного KV-кэша для "незавершенных" токенов? Насколько это увеличивает общую память и ограничивает максимальный батч сайз по сравнению с классической AR-моделью?
Буду очень рад, если сможете поделиться инсайтами или метриками по утилизации GPU
Спасибо за интересный обзор!
У меня возник вопрос касательно оптимизации инференса, а именно про баланс между memory-bound и compute-bound операциями. Как известно, классический AR-декодинг является memory-bound операцией. В диффузионных моделях за счет генерации сразу пачки токенов арифметическая эффективность теоретически должна возрастать. Из этого всего следует два вопроса:
Удалось ли вам на практике сдвинуть GFusion в сторону compute-bound при достаточно больших размерах блока? Или пропускная способность памяти все равно остается главным бутылочным горлышком, а ускорение достигается чисто за счет сокращения количества чтений весов?
Как в вашей интеграции с SGLang решается вопрос с PagedAttention и хранением состояния для токенов внутри самого диффузионного блока? Поскольку блок проходит через несколько итераций денойзинга и токены взаимодействуют друг с другом, требует ли это аллокации дополнительных буферов под промежуточные активации или специфичного KV-кэша для "незавершенных" токенов? Насколько это увеличивает общую память и ограничивает максимальный батч сайз по сравнению с классической AR-моделью?
Буду очень рад, если сможете поделиться инсайтами или метриками по утилизации GPU
Спасибо за конструктивную критику. И правда забыл включить ограничение.