Open sora? Hype or not?
Короче сегодня будет пояснять за самую хайповую китайскую поделку этой весны - OpenSora.
Back to the roots
Помните была такая dalle1? ну которая картинки, vqvae токены и вот это все. Ну так вот, если у тебя есть модель которая может генерить 256*256 картинку, значит у тебя есть модель которая может генерить 4 картинки 128*128. Или 8 картинок 64*64
ну вот, так работала https://github.com/wilson1yan/VideoGPT и пачка китайских работ про которые я не хочу говорить, ну собственно если вы готовы генерить 1м токенов то 1минутное видео с частотой 60fps не очень то и большая проблема.
С вас две почки и ваша мать за компьют на ring attention.
Мы нищие, значит претрен с нуля не наш путь
Короче что такое видео? это последовательность картинок. Проще говоря для того чтобы из картиночной модели сделать video достаточно доложить temporal канал imagen.research.google/video/
cобственно гугл придумал это еще летом 22, но произошел амнезия инцедент и все на это забили. Хотя в целом никаких ограничений чтобы сделать тоже самое с SD1.4 не было.
Проходит пол года и выходит align your latents
Пресловатая SD, но тут используют встройки temporal layer_ов которые в свою очередь опирируют батчем латентов из 8 кадров. Те размер такого темпорал лайера = [число кадров, latent_dim ]. к слову так же построены https://stability.ai/news/stable-video-diffusion-open-ai-video-model от того же робина ромбаха
к баранам, ой в смысле трансформерам
короче если у вас есть видео которое по сути картинки, то вы очень захотите его сжать по RGB и tempora, быстро пробежимся по тому как это делается
Ну есть три работы magvit1-2 и cavvit. про вторую почитаете сами, а я про magvit расскажу
Меня всегда забавляло что в сообществе называют такие архитектуры Video/Image tokenizer_ом, хотя очевидно к токенизации оно отношения не имеет
Cобственно в чем идея - у нас есть сжималка для видео - мы сжимаем N_frames*H*W в размерность N_FRAMES/1.3*64*64 ~ те это вполне себе штука с которой удобно работать, а еще и сжатая по тайм оси, мы не богатые, токены не бесплатные.
А потом учится трансформер на таких "токенах", по старой гугловой традиции учится мультитаск, например может предсказать новые виды или сделать из картинки/видео 1:1 картинку/видео 16:9
Video poet
Работа которую пропустили почти все(?) мои знакомые блогеры, хотя работа довольно любопытная
Собственно идея простая, берем и скейлим magvit, но еще докидываем токенезацию для аудио. Круто!!
Но вероятно модель была пиздец какой медленной + огромной + гуглу надо закопать еще одну крутую штуку на кладбище. НУ и закопали, хули)))
Через пол годика опенаи докинет аудио токены в сору и вот тогда будут бурления в интернетах: ААААА, ВОРЛД МОДЕЛЬ ПОНИМАЕТ АУДИО, МЫ В МАТРИЦЕ.
Latte
Собственно что у нас тут, DIT ака трансформер который инферят и учат как диффузию, при этом авторы проводят АБАЛЕЙШН АРХИТЕКТУР И ОН НЕ БЕСПОЛЕЗНЫЙ!!!!(прикинитье можно не только тупо SELF attn махнуть на conv но и что то поумнее сделать)
архитектурные экспы в latte
1) Давайте возьмем Temporal(по кадрам) и Spatial (по сути на токены), а размерность входа выхода получается NUM_FRAMES*TOKEN_PER_FRAME(где то 1024 токена на фрейм)
2)Все тоже самое, просто в начале spatial, потом temporal блоки
3)Тут все довольно просто, давайте возьмем и в один и тот же трансформер блок пихнем и temporal и spatial фичи. Так победим.
Пиздатые идеи для резерча
1) Авторы говорят, учить целиком дифужн трансформер - не наш путь, мы заинитим весами просто DIT который учился на ImageNet, а лейблы переделаем. А позиции токенов переинтим по аналогии с ROPE.
2) Давайте докинем фреймы из видео в претрен сет, нам полезно не забывать что видео это вообще то картинки
Сравнение разных вариантов сэмлирования видео, сэмлринга кадров и то как сэмлятся кадры
4) Сompression patch embedings
Ну типа можем патчить не просто кадры, а кадры по времени, но по итогу оно хуже
5) По флопсам кстати довольно выгодным выходит именно 4 вариант
Хотя по метрикам и похуже, но любопытно.
Open sora
По сути это подход Latte, только на большем обьеме данных и больше экспов по video vae и с более высоким разрешением и числом фреймов. А еще зачем то используют DeepFloyd/t5-v1_1-xxl который ээээ, пиздец огромный и ну не секс.