Когда видео не помещается в память
Урок «video-memory» в группе Видео списка уроков. Шагов: 9.
Чему вы научитесь
Переделаете граф малой модели Wan так, чтобы ему хватало меньше видеопамяти, и узнаете, чего стоит каждое изменение.
Что понадобится
- Урок продолжает Видео на скромной видеокарте: Wan 2.2 5B. Карточка говорит об этом; это подсказка, а не замок.
- Ноды: Load Diffusion Model, Load VAE, Wan22ImageToVideoLatent, KSampler, Create Video, VAE Decode (Tiled).
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Почему видео не помещается (чтение)
Практика на графе урока «Видео на скромной видеокарте». Во время запуска в видеопамяти три вещи: веса модели, латент всего ролика вместе с тем, что модель для него считает, и в самом конце разворачивание всех кадров сразу. Каждую можно уменьшить, и каждое изменение чего-то стоит: немного качества или времени.
Когда не хватает, в окне ComfyUI обычно видно сообщение «out of memory» (OOM).
Нужен граф малой модели
На холсте должен быть граф урока «Видео на скромной видеокарте»: Load Diffusion Model, Load VAE, Wan22ImageToVideoLatent, KSampler и Create Video. Если его нет, сначала пройдите тот урок.
Куда уходит память (чтение)
- Модель: файл в
fp16занимает два байта на параметр, значит 5B это около 10 ГБ. Вfp8вдвое меньше. - Текстовый энкодер: работает один раз в начале, потом ComfyUI его убирает, но пока работает, он должен поместиться.
- Ролик: память растёт с шириной × высотой × числом кадров. Вдвое меньше кадров примерно вдвое меньше памяти на эту часть.
- Разворачивание: VAE превращает в пиксели все кадры разом, это пик в самом конце.
- Модель: файл в
Держите модель в fp8
В ноде Load Diffusion Model поставьте
weight_dtypefp8_e4m3fn.Модель хранится в памяти по одному байту на параметр вместо двух. Картинка немного меняется, на большинстве роликов разницу трудно заметить. Файлу, который уже в
fp8(это видно по имени), это ничего не даёт.Лёгкие файлы (чтение)
Та же модель бывает в лёгких файлах:
fp8илиfp8_scaled: вдвое меньшеfp16, этот формат берёт большинство официальных шаблонов;- GGUF (Q8, Q6, Q5, Q4): ещё меньше, чем меньше число, тем меньше файл и грубее результат. Их загружает пак ComfyUI-GGUF своим загрузчиком, а не Load Diffusion Model;
- текстовый энкодер в
fp8вместо полного.
Берите файлы только с официальной страницы модели или у известного автора. Старые форматы (
.ckpt,.pt,.pth,.bin) при загрузке могут выполнить код;.safetensorsи.ggufне могут.Разворачивайте по кусочкам
Добавьте ноду VAE Decode (Tiled). Ко входу
samplesподключите выход сэмплера, кvaeVAE, а её выход ко входуimagesноды Create Video вместо старого декодера. Поставьтеtile_size512 иtemporal_size32.Кадры разворачиваются кусками: квадрат в 512 пикселей и 32 кадра за раз, и пик в конце намного ниже. Куски меньше требуют меньше памяти и работают дольше; швы между кусками при этих числах редки. Старый декодер можно удалить.
Ролик поменьше
В ноде Wan22ImageToVideoLatent поставьте
width960,height544 иlength81.Это около трёх секунд при 24 кадрах в секунду и размер ниже 720p. Оба размера у этой ноды остаются кратными 32, а длина вида 4n + 1. Это изменение экономит больше всех, и в ролике его видно: меньше деталей, короче сцена.
Если всё равно не помещается (чтение)
- ComfyUI сам переносит части модели в оперативную память, когда видеопамяти мало. Это медленнее, но работает, если оперативной памяти хватает. Закройте другие программы, которые заняли видеокарту.
- ComfyUI можно запустить с флагом
--lowvram, тогда он выносит из видеопамяти ещё больше. - Перенос блоков (block swap): некоторые паки держат часть блоков модели в оперативной памяти и подгружают каждый, когда он нужен. В WanVideoWrapper для этого есть нода Block Swap, в SeedVR2 поле
blocks_to_swap. Чем больше блоков, тем меньше видеопамяти и тем медленнее. - LoRA для ускорения (4-8 шагов) память не экономит, но экономит большую часть времени.
Проверяйте по одному изменению (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Меняйте одно, запускайте, смотрите на ролик и на время. Потом следующее. Так видно, что сколько стоило, и вы оставите то, что нужно вашей карте.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Нужен граф малой модели:
- нода Load Diffusion Model.
- нода Load VAE.
- нода Wan22ImageToVideoLatent.
- нода KSampler.
- нода Create Video.
LATENTноды Wan22ImageToVideoLatent во входlatent_imageноды KSampler.
- Шаг 4, Держите модель в fp8:
weight_dtypeноды Load Diffusion Model:fp8_e4m3fn.
- Шаг 6, Разворачивайте по кусочкам:
- нода VAE Decode (Tiled).
LATENTноды KSampler во входsamplesноды VAE Decode (Tiled).VAEноды Load VAE во входvaeноды VAE Decode (Tiled).IMAGEноды VAE Decode (Tiled) во входimagesноды Create Video.tile_sizeноды VAE Decode (Tiled): от 256 до 512; «Сделать за меня» ставит 512.temporal_sizeноды VAE Decode (Tiled): от 16 до 64; «Сделать за меня» ставит 32.
- Шаг 7, Ролик поменьше:
widthноды Wan22ImageToVideoLatent: от 480 до 960; «Сделать за меня» ставит 960.heightноды Wan22ImageToVideoLatent: от 320 до 544; «Сделать за меня» ставит 544.lengthноды Wan22ImageToVideoLatent: от 25 до 81; «Сделать за меня» ставит 81.