Сегодня разберём статью о Loong — авторегрессионной модели для генерации видео на основе LLM. Архитектура у неё типичная:
1. Видео токенизируют. В качестве энкодера использует MAGViT2. Это 3D CNN свёрточная модель, которая обрабатывает темпоральную часть кадров видео, токенизированную с помощью Clustering Vector Quantization. Размер токенайзера — 246M параметров.
2. Вектора видео подают на вход LLM. Авторы учат с нуля LLaMa от 700M до 7B параметров: 32 000 токенов для текста, 8 192 — для видео и 10 специальных — скорее всего, для разделителей между кадрами.
3. LLM возвращает другие вектора, на основе которых модель-декодер VQGAN предсказывает изображения — кадры видео.
Лосс в конце длинной последовательности кадров оказывается меньше, так как видеотокены в одном видео похожи между собой, а модели проще предсказывать похожие токены последовательно. Текстовые токены сильно отличаются от видео: для того чтобы качественно генерировать первые кадры, авторы предлагают перевзвешивать их лосс.
Обучение делят на три стадии:
1-я стадия. Модель предсказывает только одно изображение.
2-я стадия. Генерируется 1 секунда видео и 17 фреймов.
3-я стадия. Самое длинное видео — 10 секунд.
Модель обучают на десятисекундных видео. Этого мало, если на выходе должно получиться качественное длинное видео. Чтобы повысить качество генерации, авторы предлагают так называемый реинкодинг. То есть, генерировать первые кадры по исходному промпту пользователя. А потом брать в качестве следующего промпта несколько последних кадров получившегося видео и генерировать новое.
Такой подход замедляет инференс, но снижает требования к обучающему датасету. Loong тренировали на 100M пар «текст + изображение». Для первой стадии использовали датасеты LAION-2B и CC12M. Обучающие видео — 5,5M клипов, отфильтрованных из HDVG.
Пример Loong подтверждает: генерировать качественные длинные видео можно, даже если обучать модель только на коротких примерах.
Посмотреть результаты генераций можно на GitHub.
Разбор подготовил
CV Time