Когда граф не помещается в видеокарту

<!-- lesson: vram -->

Урок «vram» в группе Основы ComfyUI списка уроков. Шагов: 10.

Чему вы научитесь

Вы узнаете, почему графу не хватает памяти и что менять, и настроите граф картинки так, чтобы ему нужно было меньше.

Что понадобится

  • Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
  • Ноды: Load Checkpoint, Empty Latent Image, KSampler, Save Image / Preview Image, VAE Decode (Tiled).
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Что занимает память (чтение)

    У видеокарты своя память, VRAM. Запуску нужно место для двух вещей.

    • Модели: файлу нужно примерно столько памяти, сколько он весит. Чекпойнту SDXL на 7 ГБ нужно около 7 ГБ.
    • Сама работа: она растёт с размером картинки, с числом картинок разом, а у видео с кадрами.

    ComfyUI грузит модель, когда она нужна, а остальные уносит в обычную память (RAM). Когда не помещается даже один шаг, запуск останавливается с ошибкой.

  2. Ошибка, которую вы увидите (чтение)

    ComfyUI показывает красное сообщение на ноде, где кончилась память. В тексте будет «out of memory» или «Allocation on device», и ComfyUI добавит: «This error means you ran out of memory on your GPU. TIPS: If the workflow worked before you might have accidentally set the batch_size to a large number.» Это значит: кончилась память видеокарты; если граф раньше работал, возможно, случайно поставлен большой batch_size.

    Названная нода подсказывает, куда смотреть. В сэмплере: слишком велика модель или размер. В VAE Decode в самом конце: декодирование большой картинки или ролика.

  3. Нужен граф картинки

    На холсте должен быть граф «Первая картинка из текста»: Load Checkpoint, Empty Latent Image, KSampler и Save Image.

    Если его нет, сначала пройдите тот урок.

  4. По одной картинке

    Поставьте batch_size ноды Empty Latent Image на 1.

    Каждой картинке пачки нужна своя рабочая память. Несколько вариантов лучше делать по очереди, каждый раз с другим seed.

  5. Размер (чтение)

    Память растёт с числом пикселей: в 2048 на 2048 в 4 раза больше пикселей, чем в 1024 на 1024. Для видео умножайте на кадры.

    Делайте картинку в размере, на котором обучена модель, и увеличивайте потом увеличителем или вторым проходом. Это быстрее и выглядит лучше, чем рисовать сразу крупно.

  6. Декодируйте по кускам

    Добавьте ноду VAE Decode (Tiled). Подключите выход KSampler к её входу samples, а выход VAE ноды Load Checkpoint ко входу vae. Оставьте tile_size на 512.

    Она делает то же, что VAE Decode, по кускам, поэтому памяти нужно гораздо меньше. Когда запуск падает в самом конце, после сэмплера, это лекарство. Если 512 всё ещё не помещается, попробуйте 256.

  7. Сохраняйте после декодирования по кускам

    Подключите выход IMAGE ноды VAE Decode (Tiled) ко входу images ноды Save Image. Связь от старой VAE Decode заменится.

    Старая VAE Decode теперь никуда не ведёт, поэтому ComfyUI её не выполнит. Её можно удалить.

  8. Более лёгкие файлы (чтение)

    Одна и та же модель бывает в файлах разной точности. Меньше бит на число, меньше файл и память.

    • fp16 и bf16: обычные полные файлы.
    • fp8: вдвое меньше, с небольшой потерей; обычный выбор для видеокарт на 12-16 ГБ. Load Diffusion Model умеет и сам загрузить 16-битный файл как fp8 своим полем weight_dtype.
    • GGUF (Q8, Q6, Q5, Q4): квантованные файлы пака ComfyUI-GGUF и его ноды Unet Loader (GGUF). Q8 близок к fp16 при половине размера; Q4 занимает около четверти с заметной потерей.

    Текстовый энкодер тоже бывает в fp8 и GGUF и может работать на процессоре.

  9. Помогает обычная память (чтение)

    • ComfyUI сам уносит неиспользуемые модели в RAM, а новые версии подают большие модели по кускам.
    • Флаги запуска это меняют: --reserve-vram 2 оставляет системе 2 ГБ, --lowvram и --novram держат в RAM больше.
    • Block swap (WanVideo Block Swap из WanVideoWrapper) держит часть блоков видеомодели в RAM.
    • ComfyUI-MultiGPU кладёт части модели на вторую видеокарту или в RAM.

    Всё это медленнее, чем всё на видеокарте, и требует достаточно RAM.

  10. Что менять и в каком порядке (чтение)

  11. batch_size на 1, размер вниз до родного для модели.

  12. Декодирование по кускам, если запуск падает в конце.

  13. Файл той же модели в fp8 или GGUF.

  14. Текстовый энкодер в fp8 или на процессоре.

  15. Для видео: меньше кадров, меньший кадр, block swap.

  16. Флаги запуска ComfyUI.

  17. Модель семейства поменьше или облачная видеокарта.

Знания приложения объясняют каждое сообщение ComfyUI о памяти. Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…» и запустите в ComfyUI.

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 3, Нужен граф картинки:
    • нода Load Checkpoint.
    • нода Empty Latent Image.
    • нода KSampler.
    • нода Save Image или Preview Image.
    • MODEL ноды Load Checkpoint во вход model ноды KSampler (можно через Load LoRA или LoraLoaderModelOnly).
    • LATENT ноды Empty Latent Image во вход latent_image ноды KSampler.
  • Шаг 4, По одной картинке:
    • batch_size ноды Empty Latent Image: 1.
  • Шаг 6, Декодируйте по кускам:
    • нода VAE Decode (Tiled).
    • LATENT ноды KSampler во вход samples ноды VAE Decode (Tiled).
    • VAE ноды Load Checkpoint во вход vae ноды VAE Decode (Tiled).
    • tile_size ноды VAE Decode (Tiled): от 256 до 512; «Сделать за меня» ставит 512.
  • Шаг 7, Сохраняйте после декодирования по кускам:
    • IMAGE ноды VAE Decode (Tiled) во вход images ноды Save Image или Preview Image.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Graph-Too-Big.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.