Этот узел применяет два экспериментальных оптимизации для снижения VRAM при прямом проходе модели Ideogram4. Он относится к категории "KJNodes/experimental" и может изменить выходы модели — используйте только когда пиковое использование VRAM является ограничивающим фактором и после проверки качества выхода.
Описание
Узел Ideogram4 Optimizations KJ патчит модель Ideogram4 для снижения пикового использования памяти GPU во время вывода, нацеливаясь на два самых больших временных тензора в каждом блоке трансформера: активации SwiGLU и вычисления RoPE. Обе оптимизации управляются дискретными булевыми и целочисленными входами, что позволяет тонко настраивать баланс между экономией памяти и вычислительными накладными расходами.
Входы
-
model (MODEL, обязательно) – Базовая модель Ideogram4, к которой будут применены оптимизации.
-
chunk_ffn (БУЛЕВО, по умолчанию
истина) – Когда включено, активации прямого распространения (SwiGLU) разделяются по размерности последовательности токенов, ограничивая размер промежуточного тензора до(B, chunk_size, hidden)вместо(B, L, hidden). Это снижает пиковое использование памяти за счет небольшого увеличения вычислений. -
ffn_chunks (ЦЕЛОЕ, по умолчанию
2, диапазон 1–64, шаг 1) – Количество чанков последовательности, на которые разделяется прямое распространение. Большие значения дают меньшее пиковое использование памяти, но увеличивают накладные расходы (больше запусков ядер). Значение1фактически отключает разбиение на чанки. Начните с2и увеличивайте, если VRAM все еще не хватает. -
ffn_seq_threshold (ЦЕЛОЕ, по умолчанию
1024, диапазон 256–65536, шаг 256) – Разбиение на чанки применяется только когда длина входной последовательности токенов превышает это значение. Для коротких последовательностей (например, менее 1024 токенов) базовая память уже достаточно мала, и разбиение добавило бы ненужные накладные расходы. Установите этот порог в соответствии с типичной длиной генерации. -
bf16_rope (БУЛЕВО, по умолчанию
истина) – Когда включено, Rotary Position Embedding (RoPE) применяется в рабочем типе данных модели (обычноbfloat16илиfloat16) вместо повышения доfloat32. Это примерно вдвое уменьшает память активаций RoPE и соответствует точности, используемой в эталонных реализациях Hugging Face. Качество выхода может незначительно отличаться от пути RoPE по умолчанию сfp32.
Выходы
- MODEL – Та же модель с включенными выбранными оптимизациями. Предназначена для использования в качестве прямой замены исходной непатченной модели в рабочем процессе ComfyUI.
Примечания по использованию
- Обе оптимизации являются экспериментальными. Всегда тестируйте качество выхода и сравнивайте с непатченной моделью перед развертыванием в рабочем процессе.
- Оптимизации
chunk_ffnиbf16_ropeнезависимы; включайте только то, что нужно. Для максимальной экономии памяти включите обе. - При использовании
chunk_ffnначните сffn_chunks = 2по умолчанию и увеличивайте только если переполнение VRAM сохраняется, так как большее количество чанков приводит к большим накладным расходам. ffn_seq_thresholdнаиболее полезен, когда ваш рабочий процесс обрабатывает как очень короткие, так и очень длинные последовательности (например, условие изображения против полной генерации изображения). Настройте его, чтобы избежать накладных расходов на коротких промптах.- Эти оптимизации разработаны специально для Ideogram4; они не будут иметь эффекта на других архитектурах моделей и могут вызвать ошибки при применении. Убедитесь, что входная модель является вариантом Ideogram4.
Комментарии
Войдите через GitHub, чтобы участвовать в обсуждении.