Видео-модели: генерация с временной согласованностью
Видео — не стопка независимых картинок: без внимания по времени кадры мерцают, а объекты телепортируются. Разбираем temporal consistency, пространственно-временные патчи Sora-класса, цену видео в токенах и идею world models.
Интуиция: почему нельзя «по кадрику»
Казалось бы, видео — это 24 картинки в секунду: берём диффузионную модель, генерируем кадры по одному — готово? Нет. Каждый запуск генерации — независимый сэмпл из распределения: в первом кадре шарик красный и слева, во втором — уже оранжевый и правее, чем должен быть, в третьем фон стал другого оттенка. При проигрывании это выглядит как мерцание (flickering) и «телепортация» объектов.
Ключевая проблема видео-генерации — временная согласованность (temporal consistency): объекты обязаны сохранять форму, цвет и плавную траекторию от кадра к кадру. Согласованность не возникает сама — кадры должны буквально «видеть» друг друга при генерации.
Внимание по времени
Решение — расширить внимание с пространства на время. В картиночной диффузии патч смотрит на другие патчи своего кадра (spatial attention). В видео-модели добавляется temporal attention: тот же участок сцены смотрит на себя в соседних кадрах — «где этот шарик был кадр назад и куда он движется». Вместе это называют пространственно-временным вниманием (spatio-temporal attention, 3D attention).
Исторически первый рецепт — взять готовую картиночную диффузию и вставить temporal-слои между её блоками: пространственные слои рисуют «что», временные согласуют «как это движется». Так устроены AnimateDiff и ранние Stable Video Diffusion — дёшево, потому что картиночная часть уже обучена.
Современные модели (Sora-класс, Veo) идут дальше: это диффузионный трансформер (DiT) над пространственно-временными патчами — видео сжимается VAE и по пространству, и по времени, латент режется на «кубики» (x, y, t), каждый кубик становится токеном. Это прямое обобщение ViT-патчей из темы про мультимодальные LLM: у картинки патч плоский, у видео — объёмный.
Почему видео чудовищно дорого
Число токенов у видео растёт по двум осям сразу:
Одна картинка — сотни патчей; секунда видео — десятки кадров; минута — тысячи. Даже после латентного сжатия минуты видео — это миллионы токенов, а внимание квадратично по их числу. Поэтому видео-модели сжимают латент не только по пространству, но и по времени: соседние кадры почти одинаковы, и видео-VAE схлопывает, например, каждые 4 кадра в один временной срез латента. И всё равно генерация минутного ролика стоит на порядки дороже картинки — вот почему видео-модели тарифицируются посекундно.
Кондиционирование, артефакты и world models
Управляют видео-моделью так же, как картиночной, — через cross-attention: текстовый промпт, стартовый кадр (image-to-video — «оживи эту фотографию»), а в новых моделях и траектория камеры («наезд», «облёт»). Стартовый кадр — самый практичный режим: он фиксирует композицию и стиль, модели остаётся дорисовать движение. Длинные ролики собирают расширением (extend): последние кадры сгенерированного куска становятся условием для следующего — правда, ошибки при этом накапливаются, и к концу минуты сцена может незаметно «уплыть».
Физику мира модель нигде не «знает» — она выучивает интуитивную физику из миллионов роликов: мячи падают, вода льётся, тени следуют за объектами. И эта физика протекает: лишние пальцы, предметы, исчезающие за перекрытием, стакан, который наливается сам в себя. Чем длиннее ролик, тем больше шансов у несостыковок накопиться.
Отсюда же растёт идея world models: если модель предсказывает «что будет в кадре дальше», она фактически симулирует среду. Такую модель можно использовать как тренажёр для агентов и роботов: агент «прокручивает» действия в воображаемом видео-мире, прежде чем действовать в реальном, — предсказание «что будет, если».
- «Чем видео-генерация сложнее картиночной?» — добавляется ось времени: нужна temporal consistency (объекты сохраняют форму/цвет/траекторию), а число токенов = кадры × патчи — стоимость взлетает на порядки.
- «Как устроено пространственно-временное внимание?» — spatial attention связывает патчи внутри кадра, temporal — один участок сцены между кадрами; в Sora-классе латент видео режется на пространственно-временные «кубики»-токены для DiT.
- «Что такое world model?» — модель, предсказывающая развитие сцены («что будет, если»), — видео-модель как симулятор среды для планирования агентов и роботов.
- «Почему кадры нельзя генерировать независимо?» — каждый кадр — независимый сэмпл из распределения: детали (цвет, позиция, фон) выбираются заново → мерцание и телепортация объектов.