Видео на WanVideoWrapper

<!-- lesson: wrapper -->

Урок «wrapper» в группе WanVideoWrapper списка уроков. Шагов: 17.

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

Соберёте граф Wan 2.2 на нодах пака WanVideoWrapper и поймёте, чем он отличается от встроенного.

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

  • Файлы моделей, которые урок проверяет:
    • половина high_noise модели Wan 2.2: models/diffusion_models, например Wan2_2-T2V-A14B-HIGH_fp8_e4m3fn_scaled_KJ.safetensors;
    • половина low_noise модели Wan 2.2: models/diffusion_models, например Wan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors;
    • чтение текста Wan, umt5-xxl: models/text_encoders, например umt5_xxl_fp8_e4m3fn_scaled.safetensors;
    • VAE от Wan 2.1 (wan_2.1_vae): models/vae, например wan_2.1_vae.safetensors.
  • Ноды: WanVideo Model Loader, WanVideo T5 Text Encoder Loader, WanVideo VAE Loader, WanVideo TextEncode, WanVideo Empty Embeds / WanVideo ImageToVideo Encode / WanVideo VACE Encode, WanVideo Sampler, WanVideo Decode, Create Video, Save Video.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

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

  1. Что такое WanVideoWrapper (чтение)

    Пак нод WanVideoWrapper написал автор по имени Kijai. Он запускает те же модели Wan, что и встроенные ноды ComfyUI, но по-своему. Его любят за две вещи: он умеет держать большую модель частями то в видеокарте, то в обычной памяти, и в нём раньше всего появляются новые возможности Wan.

    Важно: его ноды не соединяются со встроенными. Модель из его загрузчика имеет свой тип, и вход model встроенного сэмплера её не примет. Поэтому граф собирают целиком на одном или на другом.

    Этот урок повторяет урок «Видео из текста», только на нодах пака. Если на холсте уже есть другой граф, начните с пустого: «Файл ▸ Новый проект».

  2. Загрузите две модели

    Добавьте две ноды WanVideo Model Loader. В поле model одной выберите файл со словами high_noise, в другой файл со словами low_noise.

    Поле quantization оставьте disabled: нода сама поймёт формат файла. Поле load_device оставьте offload_device, если модель больше памяти видеокарты.

    Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI пример графа из папки example_workflows самого пака: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.

  3. Загрузите чтение текста

    Добавьте ноду WanVideo T5 Text Encoder Loader и выберите в поле model_name файл umt5-xxl-enc.

    У пака своё чтение текста. Ему нужен файл из набора автора пака, его выкладывают на Hugging Face в Kijai/WanVideo_comfy. Файл из шаблонов ComfyUI этой ноде может не подойти: тогда ComfyUI скажет об ошибке при запуске.

  4. Загрузите VAE

    Добавьте ноду WanVideo VAE Loader и выберите в поле model_name файл wan_2.1_vae.

    Как и во встроенном графе, большим моделям Wan 2.2 нужен VAE от версии 2.1.

  5. Напишите промпт

    Добавьте ноду WanVideo TextEncode. Ко входу t5 подключите выход ноды WanVideo T5 Text Encoder Loader.

    Здесь оба текста в одной ноде: в поле positive_prompt промпт ролика, в поле negative_prompt то, чего быть не должно. Пишите так же, как в уроке «Промпт для видео».

  6. Задайте размер и длину

    Добавьте ноду WanVideo Empty Embeds. Поставьте width 832, height 480 и num_frames 81.

    Эта нода заменяет пустую заготовку из встроенного графа. 81 кадр при 16 кадрах в секунду даёт пять секунд.

  7. Первый проход

    Добавьте ноду WanVideo Sampler и подключите к ней:

    • ко входу model выход ноды WanVideo Model Loader с моделью high_noise;
    • ко входу text_embeds выход ноды WanVideo TextEncode;
    • ко входу image_embeds выход ноды WanVideo Empty Embeds.

    Отдельной ноды для сдвига шума здесь нет: он задаётся полем shift самого сэмплера.

  8. Второй проход

    Добавьте вторую ноду WanVideo Sampler и подключите к ней:

    • ко входу model модель low_noise;
    • ко входам text_embeds и image_embeds те же выходы, что у первого;
    • ко входу samples выход samples первого сэмплера.

    Так второй сэмплер получает недорисованный ролик и доводит его.

  9. Разделите шаги

    В обоих сэмплерах поставьте steps 20. В первом поставьте end_step 10, во втором start_step 10.

    Первый делает шаги с нулевого по десятый, второй с десятого до конца. Значение end_step -1 значит «до конца»: с ним первый сэмплер сделал бы всё сам.

    Отдельных полей для шума, как во встроенном сэмплере, здесь нет: пак сам понимает, что ролик пришёл недорисованным.

  10. Строгость и сдвиг шума

В обоих сэмплерах поставьте cfg 3.5 и shift 8.

Это те же числа, что во встроенном графе. По умолчанию в сэмплере пака стоит cfg 6: для Wan 2.2 это слишком строго, ролик выгорает.

  1. Превратите результат в кадры

Добавьте ноду WanVideo Decode. Ко входу samples подключите выход второго сэмплера, ко входу vae выход ноды WanVideo VAE Loader.

  1. Соберите и сохраните ролик

Добавьте ноды Create Video и Save Video. Кадры из ноды WanVideo Decode идут во вход images ноды Create Video, а её выход во вход video ноды Save Video. В поле fps поставьте 16.

Для сохранения пак своих нод не требует: подходят встроенные.

  1. Если не хватает памяти видеокарты (чтение)

Модель Wan 2.2 14B весит больше, чем помещается в большинство видеокарт. Пак решает это так: часть блоков модели лежит в обычной памяти и переезжает в видеокарту, только когда нужна.

Для этого добавьте ноду WanVideo BlockSwap и подключите её выход ко входу block_swap_args каждого загрузчика модели. В её поле blocks_to_swap число блоков, которые держатся вне видеокарты: начните с 20 и прибавляйте, пока ролик не перестанет падать с нехваткой памяти. Чем больше число, тем медленнее.

Ещё два способа сэкономить память: файл модели в формате fp8 и поле quantization со значением fp8_e4m3fn.

  1. LoRA в этом паке (чтение)

LoRA здесь не встаёт на пути модели, а подключается к загрузчику. Добавьте ноду WanVideo Lora Select, выберите в её поле lora файл и подключите её выход ко входу lora загрузчика модели.

Каждой модели своя нода: файл high к загрузчику модели high_noise, файл low к загрузчику low_noise. Несколько LoRA ставят цепочкой: выход одной ноды выбора ко входу prev_lora следующей.

LoRA для встроенного графа Wan подходят и сюда: это те же файлы.

  1. Слова LoRA в промпте

Если на холсте стоит нода выбора LoRA, допишите слова её файла в поле positive_prompt.

Приложение сверяет промпт со словами, записанными в файлах LoRA на холсте. Если LoRA нет или в файле нет слов, шаг засчитывается сам.

  1. Быстро за четыре шага (чтение)

Ускоряющая LoRA lightx2v работает и в этом паке. Поставьте её через ноды выбора LoRA к обеим моделям, а в сэмплерах поставьте steps 4, в первом end_step 2, во втором start_step 2 и cfg 1 в обоих.

При cfg 1 текст из поля negative_prompt не действует.

  1. Граф готов (чтение)

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

Кнопка «Проверить» читает и промпта этого пака: она скажет, если в тексте остались записи из других программ или второй текст не действует при cfg 1.

Дальше: урок «Видео из картинки на WanVideoWrapper» начинает ролик с вашей картинки.

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

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

  • Шаг 2, Загрузите две модели:
    • нода WanVideo Model Loader.
    • нода WanVideo Model Loader.
    • в поле model ноды WanVideo Model Loader (первый проход) стоит файл такого вида: половина high_noise модели Wan 2.2; такой файл лежит в models/diffusion_models, например Wan2_2-T2V-A14B-HIGH_fp8_e4m3fn_scaled_KJ.safetensors.
    • model ноды WanVideo Model Loader (второй проход): не тот же файл, что в поле model ноды WanVideo Model Loader (первый проход).
    • в поле model ноды WanVideo Model Loader (второй проход) стоит файл такого вида: половина low_noise модели Wan 2.2; такой файл лежит в models/diffusion_models, например Wan2_2-T2V-A14B-LOW_fp8_e4m3fn_scaled_KJ.safetensors.
  • Шаг 3, Загрузите чтение текста:
    • нода WanVideo T5 Text Encoder Loader.
    • в поле model_name ноды WanVideo T5 Text Encoder Loader стоит файл такого вида: чтение текста Wan, umt5-xxl; такой файл лежит в models/text_encoders, например umt5_xxl_fp8_e4m3fn_scaled.safetensors.
  • Шаг 4, Загрузите VAE:
    • нода WanVideo VAE Loader.
    • в поле model_name ноды WanVideo VAE Loader стоит файл такого вида: VAE от Wan 2.1 (wan_2.1_vae); такой файл лежит в models/vae, например wan_2.1_vae.safetensors.
  • Шаг 5, Напишите промпт:
    • нода WanVideo TextEncode.
    • wan_t5_model ноды WanVideo T5 Text Encoder Loader во вход t5 ноды WanVideo TextEncode.
    • positive_prompt ноды WanVideo TextEncode: не меньше 3 знаков и 2 настоящих слов.
  • Шаг 6, Задайте размер и длину:
    • нода WanVideo Empty Embeds или WanVideo ImageToVideo Encode или WanVideo VACE Encode.
    • num_frames ноды WanVideo Empty Embeds или WanVideo ImageToVideo Encode или WanVideo VACE Encode: от 49 до 121, число кадров вида 4n + 1; «Сделать за меня» ставит 81. Почему: wan берёт число кадров вида 4n + 1: 49, 81, 121. 81 кадр при 16 в секунду даёт пять секунд.
  • Шаг 7, Первый проход:
    • нода WanVideo Sampler.
    • model ноды WanVideo Model Loader (первый проход) во вход model ноды WanVideo Sampler (первый проход).
    • text_embeds ноды WanVideo TextEncode во вход text_embeds ноды WanVideo Sampler (первый проход).
    • WANVIDIMAGE_EMBEDS ноды WanVideo Empty Embeds или WanVideo ImageToVideo Encode или WanVideo VACE Encode во вход image_embeds ноды WanVideo Sampler (первый проход).
  • Шаг 8, Второй проход:
    • нода WanVideo Sampler.
    • model ноды WanVideo Model Loader (второй проход) во вход model ноды WanVideo Sampler (второй проход).
    • text_embeds ноды WanVideo TextEncode во вход text_embeds ноды WanVideo Sampler (второй проход).
    • WANVIDIMAGE_EMBEDS ноды WanVideo Empty Embeds или WanVideo ImageToVideo Encode или WanVideo VACE Encode во вход image_embeds ноды WanVideo Sampler (второй проход).
    • samples ноды WanVideo Sampler (первый проход) во вход samples ноды WanVideo Sampler (второй проход).
  • Шаг 9, Разделите шаги:
    • steps ноды WanVideo Sampler (первый проход): от 4 до 40; «Сделать за меня» ставит 20. Почему: двадцать шагов делятся на два прохода; с другим числом граница между ними сдвинется.
    • end_step ноды WanVideo Sampler (первый проход): от 1 до 20; «Сделать за меня» ставит 10. Почему: на этом шаге первая модель отдаёт ролик второй: двадцать шагов делятся пополам.
    • end_step ноды WanVideo Sampler (первый проход) меньше поля steps ноды WanVideo Sampler (первый проход). Почему: если первый сэмплер остановится не раньше последнего шага, он сделает всё сам и второму нечего будет доводить.
    • steps ноды WanVideo Sampler (второй проход) равно полю steps ноды WanVideo Sampler (первый проход). Почему: оба сэмплера считают одни и те же шаги, иначе граница между проходами не сойдётся.
    • start_step ноды WanVideo Sampler (второй проход) равно полю end_step ноды WanVideo Sampler (первый проход). Почему: второй сэмплер продолжает с того шага, на котором остановился первый. Иначе часть шагов пропадёт или сделается дважды.
  • Шаг 10, Строгость и сдвиг шума:
    • cfg ноды WanVideo Sampler (первый проход): от 1 до 4; «Сделать за меня» ставит 3.5. Почему: в сэмплере пака по умолчанию cfg 6: для Wan 2.2 это слишком строго, ролик выгорает.
    • cfg ноды WanVideo Sampler (второй проход): от 1 до 4; «Сделать за меня» ставит 3.5. Почему: в сэмплере пака по умолчанию cfg 6: для Wan 2.2 это слишком строго, ролик выгорает.
    • shift ноды WanVideo Sampler (первый проход): от 5 до 8; «Сделать за меня» ставит 8. Почему: у Wan при маленьком сдвиге хуже держатся композиция и движение, ролик выходит вялым.
    • shift ноды WanVideo Sampler (второй проход): от 5 до 8; «Сделать за меня» ставит 8. Почему: у Wan при маленьком сдвиге хуже держатся композиция и движение, ролик выходит вялым.
  • Шаг 11, Превратите результат в кадры:
    • нода WanVideo Decode.
    • samples ноды WanVideo Sampler (второй проход) во вход samples ноды WanVideo Decode.
    • vae ноды WanVideo VAE Loader во вход vae ноды WanVideo Decode.
  • Шаг 12, Соберите и сохраните ролик:
    • нода Create Video.
    • нода Save Video.
    • IMAGE ноды WanVideo Decode во вход images ноды Create Video.
    • VIDEO ноды Create Video во вход video ноды Save Video.
    • fps ноды Create Video: 16. Почему: wan рисует 16 кадров в секунду. С другим числом ролик пойдёт быстрее или медленнее, чем задумано.
  • Шаг 15, Слова LoRA в промпте:
    • positive_prompt ноды WanVideo TextEncode: есть слово-триггер файла из поля lora любой ноды WanVideo Lora Select, если описание файла их называет.

Частые ошибки

  • Подключить загрузчик пака к встроенному сэмплеру: связь не цепляется (WANVIDEOMODEL это не MODEL).
  • Оставить end_step -1: первый сэмплер делает всё сам.
  • Файл umt5_xxl из ComfyUI в загрузчике T5 пака: ошибка при запуске.
  • Оставить cfg 6 по умолчанию: выгоревший ролик.

Что дальше

Этот урок продолжают: Видео из картинки на WanVideoWrapper, VACE: движение из другого видео.

См. также

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

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