Обзор статьи «StreamDiffusion: конвейер для интерактивной генерации в режиме реального времени»

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Ссылка на статью

Ссылка на код

StreamDiffusion — это новый диффузионный конвейер для интерактивной генерации изображений в режиме реального времени, позволяющий добиться более высокой производительности для прямых трансляций и других подобных сценариев. Он заменяет традиционное последовательное шумоподавление (sequential denoising) на более быстрый пакетный процесс и вводит параллельную очередь ввода-вывода для более плавной работы.

В конвейере также используется новый метод Residual Classifier-Free Guidance (RCFG), позволяющий сократить количество этапов шумоподавления и повысить общую скорость работы. Кроме того, он включает стохастический фильтр сходства (Stochastic Similarity Filter) для повышения энергоэффективности. В целом StreamDiffusion может похвастаться 1,5-кратным ускорением обработки и 2,05-кратным увеличения скорости при использовании RCFG, достигая 91,07 кадров в секунду на графическом процессоре RTX4090. Кроме того, значительно снижается энергопотребление, что делает его более эффективным решением для генерации изображений в реальном времени.

Конвейер StreamDiffusion

Рисунок 2: Концепция Stream Batch. В нашем подходе вместо того, чтобы ждать, пока с одного изображения будет полностью удален весь шум, прежде чем обрабатывать следующее входное изображение, мы принимаем следующее входное изображение после каждого шага шумоподавления (denoising step). Таким образом, создается пакет шумоподавления (denoising batch), в котором шаги шумоподавления для каждого изображения чередуются. Объединяя этапы шумоподавления в пакет, мы можем обрабатывать непрерывные входные данные более эффективно, используя для пакетной обработки U-Net. Входное изображение, закодированное на временном интервале t, генерируется и декодируется на временном интервале t + n, где n — количество шагов шумоподавления.
Рисунок 2: Концепция Stream Batch. В нашем подходе вместо того, чтобы ждать, пока с одного изображения будет полностью удален весь шум, прежде чем обрабатывать следующее входное изображение, мы принимаем следующее входное изображение после каждого шага шумоподавления (denoising step). Таким образом, создается пакет шумоподавления (denoising batch), в котором шаги шумоподавления для каждого изображения чередуются. Объединяя этапы шумоподавления в пакет, мы можем обрабатывать непрерывные входные данные более эффективно, используя для пакетной обработки U-Net. Входное изображение, закодированное на временном интервале t, генерируется и декодируется на временном интервале t + n, где n — количество шагов шумоподавления.

Пакетирование шагов шумоподавления

Рисунок 3: Векторы виртуального остаточного шума: Оранжевые векторы изображают виртуальный остаточный шум, который начинается с траектории PF ODE (Probability Flow Ordinary Differential Equations) и указывает на исходный входной латентный сигнал x0
Рисунок 3: Векторы виртуального остаточного шума: Оранжевые векторы изображают виртуальный остаточный шум, который начинается с траектории PF ODE (Probability Flow Ordinary Differential Equations) и указывает на исходный входной латентный сигнал x0

Традиционные диффузионные модели основаны на последовательных шагах шумоподавления, которые линейно увеличивают время обработки с каждым дополнительным шагом, особенно в рамках U-Net. Однако для изображений с более высокой точностью требуется больше шагов шумоподавления, что приводит к увеличению времени задержки.

Stream Batch решает эту проблему, заменив последовательное удаление шума на пакетный процесс. Каждый пакет состоит из определенного количества шагов шумоподавления последовательных изображений, что позволяет каждому элементу в пакете продвинуться на один шаг в последовательности шумоподавления за один проход U-Net. Этот метод позволяет более рационально преобразовывать входные изображения на заданном временном интервале в результаты их преобразования в изображения на будущем временном интервале.

Такой подход ощутимо сокращает необходимость в многократных выводах U-Net и позволяет избежать линейной эскалации времени обработки с ростом числа шагов. Главный компромисс смещается от соотношения времени обработки и качества генерации к соотношению емкости VRAM и качества генерации. При достаточном объеме VRAM памяти высококачественные изображения могут быть получены за один цикл обработки U-Net, что позволяет добиться практически полного устранения проблемы задержки, вызванной увеличением количества шагов шумоподавления.

Residual Classifier-Free Guidance

Традиционная Classifier-Free Guidance улучшает генерацию изображений путем корректировки влияния условий, но сама по себе требует вычислительных затрат на многократное прохождение через модель U-Net для каждого вывода. Residual Classifier-Free Guidance решает эту проблему, вводя понятие виртуального остаточного шума (virtual residual noise), который используется для предсказания скрытого представления исходного входного изображения в заданной точке процесса генерации. Этот метод позволяет эффективно генерировать изображения, отличающиеся от исходных в зависимости от степени соответствия, без необходимости дополнительных вычислений с помощью U-Net. Этот процесс называется Self-Negative RCFG.

Кроме того, RCFG можно использовать для отклонения от любого отрицательного условия, вычисляя отрицательный условный остаточный шум только один раз на первом шаге шумоподавления и используя его в течение всего процесса (Onetime-Negative RCFG). Этот метод значительно снижает вычислительную нагрузку, требуя всего n или n+1 U-Net вычислений для Self-Negative и Onetime-Negative RCFG соответственно, по сравнению с 2n вычислениями, требуемыми для обычного CFG. Это делает RCFG заметно более эффективным, сохраняя или повышая качество генерируемых изображений.

Очередь ввода-вывода

Рисунок 4: Очередь ввода-вывода: Процесс преобразования входных изображений в формат тензорных данных, управляемый конвейером, и, наоборот, преобразование декодированных тензоров обратно в выходные изображения требует немалого количества дополнительного времени обработки. Чтобы не добавлять это время обработки изображений к самому узкому месту — процессу нейросетевого вывода, мы разделили предварительную и последующую обработку изображений на отдельные потоки, что позволяет выполнять их параллельно. Более того, используя очередь входных тензоров (Input Tensor Queue), мы можем компенсировать временные задержки входных изображений из-за неисправностей устройства или ошибок связи, обеспечивая плавную потоковую передачу.
Рисунок 4: Очередь ввода-вывода: Процесс преобразования входных изображений в формат тензорных данных, управляемый конвейером, и, наоборот, преобразование декодированных тензоров обратно в выходные изображения требует немалого количества дополнительного времени обработки. Чтобы не добавлять это время обработки изображений к самому узкому месту — процессу нейросетевого вывода, мы разделили предварительную и последующую обработку изображений на отдельные потоки, что позволяет выполнять их параллельно. Более того, используя очередь входных тензоров (Input Tensor Queue), мы можем компенсировать временные задержки входных изображений из-за неисправностей устройства или ошибок связи, обеспечивая плавную потоковую передачу.

Высокоскоростные системы генерации изображений оптимизируются за счет смещения задач, не требующих обработки нейронной сетью, таких как предварительная и постобработка изображений, на параллельную обработку вне основного конвейера. Входные изображения подвергаются таким операциям, как изменение размера, тензорное преобразование и нормализация. Чтобы согласовать различные скорости обработки человеческих данных и пропускную способность модели, авторы реализовали систему на основе очередей ввода-вывода. Эти очереди обрабатывают входные тензоры для диффузионных моделей, которые затем проходят через вариационный автокодировщик (VAE) для формирования изображения. Выходные тензоры из вариационного автокодировщика попадают в выходную очередь для постобработки и преобразования формата, после чего отправляются на клиент рендеринга. Эта стратегия повышает эффективность системы и ускоряет генерацию изображений.

Стохастический фильтр сходства

Рисунок 5: Обзор конвейера вывода (inference pipeline): Ядро конвейера диффузии включает VAE и U-Net. Благодаря включению пакетного шумоподавления и кэша предварительного вычисленного для встраивания текстовых подсказок, кэша сэмплированного шума и кэша значений планировщика, конвейер вывода повышает скорость и позволяет генерировать изображения в реальном времени. Стохастический фильтр сходства (SSF) разработан для экономии энергии, потребляемой графическим процессором. Он динамически регулирует прохождение модели диффузии. Эта система обеспечивает быстрый и энергоэффективный вывод в реальном времени.
Рисунок 5: Обзор конвейера вывода (inference pipeline): Ядро конвейера диффузии включает VAE и U-Net. Благодаря включению пакетного шумоподавления и кэша предварительного вычисленного для встраивания текстовых подсказок, кэша сэмплированного шума и кэша значений планировщика, конвейер вывода повышает скорость и позволяет генерировать изображения в реальном времени. Стохастический фильтр сходства (SSF) разработан для экономии энергии, потребляемой графическим процессором. Он динамически регулирует прохождение модели диффузии. Эта система обеспечивает быстрый и энергоэффективный вывод в реальном времени.

Для решения проблемы генерации избыточных изображений и растраты ресурсов графического процессора в сценариях с минимальными изменениями или статичным окружением была предложена стратегия под названием стохастический фильтр сходства (Stochastic Similarity Filter). Стохастический фильтр сходства работает путем вычисления геометрического коэффициента сходства (cosine similarity) между текущим входным изображением и предшествующим эталонным изображением. На основе этого сходства рассчитывается вероятность пропуска процессов VAE и U-Net для сокращения ненужных вычислений. Если сходство велико, что свидетельствует о незначительных изменениях между кадрами, конвейер с большей вероятностью пропустит обработку, экономя вычислительные ресурсы. Этот механизм позволяет эффективно работать как в динамичных сценах, где обработка идет полным ходом, так и в статичных, где интенсивность обработки может быть снижена. В отличие от метода жесткого порога, который может привести к обрыву видео, вероятностный подход SSF обеспечивает более плавную генерацию видео, адаптируясь к изменяющейся динамике сцены без ущерба для восприятия.

Предварительные вычисления

Оптимизация архитектуры U-Net в системах генерации изображений, особенно для интерактивных или потоковых юзкейсов, включает предварительное вычисление и кэширование вставки текстовой подсказки (prompt), которая остается неизменной на протяжении всех кадров. Эти кэшированные данные используются для вычисления пар "ключ-значение" в U-Net, которые сохраняются и обновляются только при изменении входного запроса. Кроме того, гауссовский шум для каждого шага шумоподавления предварительно дискретизируется и кэшируется, что обеспечивает постоянство шума на всех временных промежутках и повышает эффективность при решении задач, связанных с переходом от изображения к изображению. Коэффициенты силы шума для каждого шага шумоподавления также вычисляются предварительно, что позволяет уменьшить накладные расходы в юзкейсах с высокой частотой кадров. Для Latent Consistency моделей необходимые функции предварительно вычисляются для всех шагов шумоподавления или же устанавливаются в константы, что позволяет избежать повторных вычислений в процессе вывода.

Ускорение модели и миниатюрного автоэнкодер

Рисунок 6: Сравнение использования графического процессора в статичной сцене. (GPU: RTX3060, количество кадров: 20) Синяя линия представляет использование GPU с SSF, оранжевая линия представляет использование GPU без SSF, а красная линия обозначает вероятность пропуска, рассчитанную на основе коэффициента сходства между входными кадрами. Кроме того, в верхней части графика показаны входные изображения, соответствующие одинаковым временным отрезкам. В этом случае персонаж на входных изображениях только мигает.
Рисунок 6: Сравнение использования графического процессора в статичной сцене. (GPU: RTX3060, количество кадров: 20) Синяя линия представляет использование GPU с SSF, оранжевая линия представляет использование GPU без SSF, а красная линия обозначает вероятность пропуска, рассчитанную на основе коэффициента сходства между входными кадрами. Кроме того, в верхней части графика показаны входные изображения, соответствующие одинаковым временным отрезкам. В этом случае персонаж на входных изображениях только мигает.

Движки U-Net и VAE построены с использованием TensorRT. Для дальнейшей оптимизации скорости авторы используют статические размеры пакетов и фиксированные размеры входных данных, что оптимизирует вычислительный граф и распределение памяти для конкретных размеров входных данных, благодаря чему время обработки сокращается. Однако такой подход ограничивает гибкость, так как для обработки изображений различной формы или с использованием различных размеров пакетов потребуется создание нового движка, адаптированного под эти конкретные размеры.

Кроме того, в системе используется миниатюрный автоэнкодер (Tiny AutoEncoder), представляющий собой оптимизированную и эффективную альтернативу традиционному автоэнкодеру Stable Diffusion. TAESD особенно эффективен при быстром преобразовании латентов в полноразмерные изображения и выполнении процессов декодирования при значительно меньших вычислительных требованиях.

Эксперименты

Рисунок 8: Сравнение среднего времени вывода между Stream Batch и обычным последовательным шумоподавлением без TensorRT.
Рисунок 8: Сравнение среднего времени вывода между Stream Batch и обычным последовательным шумоподавлением без TensorRT.

Пакетное шумоподавление в сравнении с последовательным циклом U-Net: Реализация стратегии пакетного шумоподавления значительно улучшает время обработки, достигая 50%-ного сокращения по сравнению с обычным последовательным циклом U-Net. Это улучшение наблюдается даже при использовании TensorRT, что указывает на то, что Stream Batch подход повышает эффективность оригинального последовательного конвейера диффузии на различных этапах шумоподавления.

Таблица 1: Сравнение среднего времени вывода при различных шагах шумоподавления с коэффициентами ускорения. (GPU: NVIDIA RTX4090, CPU: Core i9-13900K, ОС: Ubuntu22.04.3 LTS) 

Шаги шумоподавления

StreamDiffusion (мс)

StreamDiffusion без TRT (мс)

AutoPipeline Image2Image (мс)

1

10.65 (59.6x)

21.34 (29.7x)

634.40 (1x)

2

16.74 (39.3x)

30.61 (21.3x)

652.66 (1x)

4

26.93 (25.8x)

48.15 (14.4x)

695.20 (1x)

10

62.00 (13.0x)

96.94 (8.3x)

803.23 (1x)

Сравнение с AutoPipelineForImage2Image: Предложенный конвейер демонстрирует значительное увеличение скорости по сравнению с AutoPipelineForImage2Image от Huggingface. С помощью TensorRT StreamDiffusion достигает ускорения не менее чем в 13 раз при выполнении 10 шагов шумоподавления и до 59,6 раз при выполнении одного шага шумоподавления. Без TensorRT ускорение все еще заметно, достигая 29,7 раза при одношаговом шумоподавлении и 8,3 раза при 10 шагах.

Таблица 2: Сравнение среднего времени вывода на разных этапах шумоподавления среди различных методов CFG

Шаги шумоподавления

Self-Negative RCFG (мс)

Onetime-Negative RCFG (мс)

Обычный CFG (мс)

1

11.04 (1.52x)

16.55 (1.01x)

16.74 (1x)

2

16.61 (1.64x)

20.64 (1.32x)

27.18 (1x)

3

20.64 (1.74x)

27.25 (1.32x)

35.91 (1x)

4

26.19 (1.90x)

31.65 (1.57x)

49.71 (1x)

5

31.47 (2.05x)

36.04 (1.79x)

64.64 (1x)

Конвейеры StreamDiffusion с RCFG в сравнении с обычным CFG: При сравнении StreamDiffusion с RCFG с обычным CFG дополнительные вычисления для Self-Negative RCFG минимальны, что приводит к незначительному изменению времени вывода. Onetime-Negative RCFG требует дополнительных вычислений U-Net только на первом шаге, что приводит к схожему времени вывода с обычным CFG для одного шага, но показывает большее преимущество при увеличении числа шагов шумоподавления. При пяти шагах шумоподавления Self-Negative RCFG показывает улучшение скорости в 2,05 раза, а Onetime-Negative RCFG — в 1,79 раза по сравнению с обычной CFG.

Исследование абляции

Таблица 3. Влияние различных модулей на среднее время вывода на разных этапах шумоподавления. Проверка влияния отключения различных модулей на процесс генерации изображений.

Метод

Шаги шумоподавления

Задержка [мс]

Наш результат (txt2img)

1

9.42

4

26.30

Наш результат (img2img)

1

10.65

4

26.93

без пакетирования

1

10.70

4

36.54

без TRT

1

21.34

4

48.15

без предварительных вычислений

1

13.63

4

31.16

без TinyAutoEncoder

1

49.72

4

65.48

без очереди

1

15.13

4

29.72

без каких-либо оптимизаций

1

76.78

4

134.37

с SSF

1

10.66

4

27.02

Качественные результаты

Рисунок 1: Результаты работы с изображениями в реальном времени, полученные с помощью камеры и захвата экрана. В первом и втором столбцах показаны примеры рисования с помощью ИИ в реальном времени, а в третьем — рендеринг 2D-иллюстраций с 3D-аватаров в реальном времени. Четвертый и пятый столбцы демонстрируют работу фильтра камеры в реальном времени.
Рисунок 1: Результаты работы с изображениями в реальном времени, полученные с помощью камеры и захвата экрана. В первом и втором столбцах показаны примеры рисования с помощью ИИ в реальном времени, а в третьем — рендеринг 2D-иллюстраций с 3D-аватаров в реальном времени. Четвертый и пятый столбцы демонстрируют работу фильтра камеры в реальном времени.

Конвейер StreamDiffusion демонстрирует свою эффективность в преобразовании изображений в реальном времени, подходящем для различных приложений, таких как игровая графика в реальном времени, фильтры камеры, преобразование лиц и рисование с помощью ИИ. Он обеспечивает низкую пропускную способность при использовании входных данных в реальном времени, таких как камеры или снимки экрана, сохраняя при этом высокое качество генерации изображений в соответствии с заданными текстовыми указаниями.

Рисунок 10: Результаты использования без CFG, стандартного CFG и RCFG с Self-Negative и Onetime-Negative подходами. По сравнению со случаями, когда CFG не используется, случаи с использованием CFG могут усилить влияние текстовой подсказки. В предложенном методе RCFG наблюдается более выраженное влияние текстовой подсказки. И CFG, и RCFG используют шкалу подсказок γ = 1,4. Для RCFG в первых двух рядах используется коэффициент моделирования влияния δ = 1,0, а в третьем ряду - δ = 0,5. 
Рисунок 10: Результаты использования без CFG, стандартного CFG и RCFG с Self-Negative и Onetime-Negative подходами. По сравнению со случаями, когда CFG не используется, случаи с использованием CFG могут усилить влияние текстовой подсказки. В предложенном методе RCFG наблюдается более выраженное влияние текстовой подсказки. И CFG, и RCFG используют шкалу подсказок γ = 1,4. Для RCFG в первых двух рядах используется коэффициент моделирования влияния δ = 1,0, а в третьем ряду - δ = 0,5. 

Используя RCFG, конвейер демонстрирует улучшенное согласование сгенерированных изображений с условиями подсказки по сравнению с CFG. RCFG улучшает модификации изображения, такие как изменение цвета или добавление элементов, постоянно обращаясь к скрытому значению входного изображения и первоначально сэмплированному шуму. Это приводит к более сильному влиянию подсказки и более выраженным изменениям, хотя и может увеличить контрастность изображения. Регулировка величины вектора виртуального остаточного шума может уменьшить этот эффект.

Рисунок 11: Результаты генерации текста в изображение. Для LCM-LoRA мы используем четырехэтапное шумоподавление, а для sd-turbo — одноэтапное. Наш StreamDiffusion позволяет генерировать изображения в реальном времени с качеством, сравнимым с тем, что получается при использовании диффузоров AutoPipeline Text2Image.
Рисунок 11: Результаты генерации текста в изображение. Для LCM-LoRA мы используем четырехэтапное шумоподавление, а для sd-turbo — одноэтапное. Наш StreamDiffusion позволяет генерировать изображения в реальном времени с качеством, сравнимым с тем, что получается при использовании диффузоров AutoPipeline Text2Image.

Возможности конвейера распространяются не только на стандартную генерацию текста в изображение, но и на высококачественные изображения, быстро созданные с помощью модели sd-turbo. На RTX 4090 с процессором Core i9-13900K конвейер может генерировать со скоростью более 100 кадров в секунду и до 150 изображений в секунду при больших объемах пакетов. Хотя использование открытых моделей, объединенных с LCM-LoRA для получения более разнообразных выражений, снижает скорость примерно до 40 кадров в секунду, оно по-прежнему обеспечивает гибкость и высокое качество генерации.


Что общего между недавними прорывами в области искусственного интеллекта, DALLE и Stable Diffusion?

Оба они используют компоненты архитектуры CLIP. Следовательно, если вы хотите понять, как работают эти модели, понимание CLIP является обязательным условием.

На открытом уроке ”CLIP или история о том, подружить картинки и текст" мы поговорим про CLIP-модели, как они устроены и в чем их особенность. Разберём, каким образом можно объяснить модели, что изображено на картинке. Узнаем, как можно применять CLIP-модель для решения самых разнообразных задач: от классификации до семантического поиска по картинкам. Урок пройдет 25 января, записаться можно по ссылке.

Источник: https://habr.com/ru/companies/otus/articles/787484/


Интересные статьи

Интересные статьи

Не так давно (13 Сентября 2023) на Хабре опубликовали статью "Подборка выдающихся статей по тестированию". В приведенном списке есть и статья "Фетиш юнит-тестов" Мартина Сустрика. Я считаю эту статью ...
Страны борются за первое место в перспективных инновациях за счет вложений в науку, привлечения ученых и поощрения изобретательности в целом. Некоторым хватает ресурсов на использование сразу нескольк...
В этом докладе я расскажу о стандартах безопасности в Kubernetes. Мы рассмотрим, какие правила безопасности действительно необходимы, а также разберем пять шагов, которые помогают решить проблему с бе...
Контейнеризация, CI/CD, оркестрация, микросервисы и agile-процессы – это облако тегов, которое теперь находится в словаре security-инженеров. Микросервисная модель и сопутствующие техноло...
Многие уже давно или активно используют или смотрят в сторону модели хранения и публикации документации как кода, это значит применять к документации все те же правила, инструменты и процедуры, ч...