Как это устроено и сколько занимает
Сервис работает на одной видеокарте RTX 3090 с 24 гигабайтами памяти. Все числа ниже сняты на этом железе, а не взяты из описаний модели.
Модель
Используется Wan 2.2 в двух вариантах. Для генерации из фотографии берётся вариант I2V-A14B, для генерации из одного описания вариант T2V-A14B. Это разные наборы весов, а не режимы одной модели.
Оба варианта состоят из двух моделей-экспертов, которые работают по очереди, а не одновременно.
- Первая работает на ранних шагах, когда кадр ещё близок к случайному шуму. Она отвечает за композицию, расположение предметов и общую траекторию движения.
- Вторая принимает работу во второй половине, когда структура кадра уже сложилась. Она отвечает за текстуру кожи, свет, контраст и мелкие черты лица.
Момент передачи задаётся параметром «Точка передачи». Обучены модели по-разному, поэтому подмена одной другой не работает. Первая на почти готовом кадре оставляет изображение мыльным. Вторая на случайном шуме разваливает структуру и движение.
Квантование и память
Веса хранятся в сжатом виде Q8_0 и занимают 14,3 гигабайта на каждую модель. Обе сразу в память видеокарты не помещаются, поэтому первая выгружается перед загрузкой второй.
Более сильное сжатие не применяется намеренно. На Q4 заметно ухудшается именно то, ради чего выбрана эта модель: правдоподобность лиц, кожи и волос.
Сколько занимает
Измерено при длине 81 кадр, то есть 5 секунд при скорости 16 кадров в секунду.
| Кадр | Режим | Шагов | Время |
|---|---|---|---|
| 832 на 480 | Быстро | 4 | 2,5 минуты |
| 832 на 480 | Глубоко | 20 | 17 минут |
| 1280 на 720 | Быстро | 4 | 7 минут |
| 1280 на 720 | Глубоко | 20 | около часа |
Один шаг на кадре 832 на 480 в глубоком режиме занимает около 50 секунд. Пик занятой памяти видеокарты на кадре 1280 на 720 составил 20,4 гигабайта из 24.
Почему глубокий режим на 1280 на 720 недоступен
Около часа на одну задачу при одной видеокарте означает 28 роликов в сутки, и всё это время очередь стоит. Сочетание отключено, остальные три доступны.
Почему быстрый режим быстрее в семь раз, а не в пять
Шагов в пять раз меньше, но экономия больше. Ускоряющая надстройка работает при силе описания, равной единице, и модель считает каждый шаг один раз. В глубоком режиме сила описания выше единицы, поэтому каждый шаг считается дважды: с описанием и без него, с последующим сравнением.
Постоянные затраты
Загрузка одной модели в память занимает от 30 до 43 секунд, и за одну генерацию она происходит дважды. В глубоком режиме эти полторы минуты составляют около десятой части времени. В быстром режиме они занимают больше половины.
Отсюда следует важное для быстрого режима: дальнейшее уменьшение числа шагов почти не сокращает время, потому что упирается в загрузку весов.
Кэш весов не помогает
Проверено четырьмя задачами подряд. Повторный запуск с теми же весами занимает столько же, сколько запуск со сменой модели.
Причина в порядке работы. Внутри задачи первая модель уступает место второй. Каждая задача заканчивается с загруженной второй моделью и начинается с потребности в первой, то есть запрашивает ровно тот вес, который сама только что вытеснила. Промах происходит всегда.
Длина ролика
Число кадров должно делиться на 4 с остатком 1. Ограничение исходит от модели: она сжимает время вчетверо. При другом значении расчёт округляется вниз, и ролик получается не той длины, которую запросили. Сервис такое значение отклоняет.
Диапазон составляет от 17 до 121 кадра. Обучение шло на 81 кадре, и на этой длине результат наиболее устойчив.
Размер кадра
Доступны только те размеры, на которых модель обучалась: 832 на 480, 480 на 832, 640 на 640, 1280 на 720, 720 на 1280, 960 на 960. Промежуточные значения модель не видела, и качество на них ниже.
Стоимость растёт быстрее числа точек. Кадр 1280 на 720 содержит в 2,3 раза больше точек, чем 832 на 480, а считается вчетверо дольше. Причина в том, что расход на связи между частями кадра растёт быстрее линейного.