* Хорошие предобученные модели рулят и их отлично использовать как готовые строительные блоки. Также это довольно простой способ устранения обнаруженных в имеющихся моделях проблем. Не умеет, скажем, CLIP считать объекты или привязывать признаки к объектам, ок, делаем модель, которая умеет, и собираем на ней. Не проходят примеры Гэри Маркуса на одной модели, делаем другую, на которой проходят. Так и до модульного AGI недалеко :)
* По имеющимся примерам есть ощущение, что Imagen лучше работает с запросами, где надо сгенерить картинку с текстом. Возможно, T5 в этом смысле даёт эмбеддинги получше. Но может и другие факторы играют.
* Теперь было бы интересно отскейлить на какую-нибудь гигантскую модель (PaLM https://arxiv.org/abs/2204.02311, GLaM https://news.1rj.ru/str/gonzo_ML/840, …) обученную по последнему слову техники (aka Chinchilla https://arxiv.org/abs/2203.15556). Там, правда, в основном декодеры, но наверное это не помеха. Скейлить точно есть куда, и даже не важно, is scaling all what you need or not.
* Интересно, что было бы, если бы получилось обучить сильно больший CLIP с большой текстовой частью, хоть как-то сравнимой по размеру с энкодером T5. Или взять какой-нибудь CoCa (https://arxiv.org/abs/2205.01917, хотя он меньше, но тоже можно обучить…), или тот же мультимодальный Flamingo (https://news.1rj.ru/str/gonzo_ML/941). Если бы отдельные блоки были доступны, было бы проще попробовать.
* По имеющимся примерам есть ощущение, что Imagen лучше работает с запросами, где надо сгенерить картинку с текстом. Возможно, T5 в этом смысле даёт эмбеддинги получше. Но может и другие факторы играют.
* Теперь было бы интересно отскейлить на какую-нибудь гигантскую модель (PaLM https://arxiv.org/abs/2204.02311, GLaM https://news.1rj.ru/str/gonzo_ML/840, …) обученную по последнему слову техники (aka Chinchilla https://arxiv.org/abs/2203.15556). Там, правда, в основном декодеры, но наверное это не помеха. Скейлить точно есть куда, и даже не важно, is scaling all what you need or not.
* Интересно, что было бы, если бы получилось обучить сильно больший CLIP с большой текстовой частью, хоть как-то сравнимой по размеру с энкодером T5. Или взять какой-нибудь CoCa (https://arxiv.org/abs/2205.01917, хотя он меньше, но тоже можно обучить…), или тот же мультимодальный Flamingo (https://news.1rj.ru/str/gonzo_ML/941). Если бы отдельные блоки были доступны, было бы проще попробовать.
👍6
[Google CoCa] CoCa: Contrastive Captioners are Image-Text Foundation Models
Jiahui Yu, Zirui Wang, Vijay Vasudevan, Legg Yeung, Mojtaba Seyedhosseini, Yonghui Wu
Статья: https://arxiv.org/abs/2205.01917
Пост в блоге: https://ai.googleblog.com/2022/05/image-text-pre-training-with.html
Модель: нет :(
Код: нет :(
Реимплементация от lucidrains: https://github.com/lucidrains/CoCa-pytorch
Важная недавняя мультимодальная модель от Гугла, про которую стоит рассказать.
Движуха с тем, что сейчас называется foundation models, развивается и усложняется. Авторы рассматривают варианты картиночных моделей с natural language supervision, куда относят и обычную классификацию.
Начиналось всё когда-то (когда термина foundation model и в помине не было) с предобученных на классификации с кросс-энтропийным лоссом single-encoder models, те же предобученные VGG и т.п. Использовать эти одиночные модели на сложных задачах, требующих больше одной модальности было не очень просто и эффективно.
Потом пошли бимодальные модели, часто выполненные в виде dual-encoder models, обученные контрастным лоссом, например, CLIP (https://news.1rj.ru/str/gonzo_ML/665) и ALIGN (https://news.1rj.ru/str/gonzo_ML/679). Они были полезнее для различных кросс-модальных историй, но всё равно не очень подходили для сложных зрительно-языковых задач типа VQA, где требовались совмещённые картиночные и языковые репрезентации (в этих моделях они были разделены).
Параллельно существовала ветка encoder-decoder моделей, например, с картинкой на входе энкодера, текстом на входе декодера, и текстом на выходе декодера. Лосс обычный, который используется в авторегрессионных декодерах, здесь его называют captioning loss. Выход декодера можно было использовать в качестве репрезентаций для мультимодальных задач. Такие модели были хороши (SimVLM, например, https://arxiv.org/abs/2108.10904), но не давали отдельных репрезентаций для текста (было сразу замешивание с репрезентациями картиночного энкодера).
В данной работе эти три парадигмы объединяются и авторы получают одну модель, обладающую возможностями всех трёх подходов. Новое семейство моделей называется Contrastive Captioners (CoCa). Это по сути модифицированная архитектура энкодер-декодер, обучающаяся одновременно на контрастном и генеративном (captioning) лоссе.
Картиночный энкодер в CoCa по дефолту ViT (https://news.1rj.ru/str/gonzo_ML/434), но может быть что угодно. Декодер трансформера разделяется на две части: унимодальный декодер (который получает только текст и на картиночные эмбеддинги никак не смотрит, n_uni слоёв) и мультимодальный декодер (который умеет делать cross-attention на эмбеддинги картиночного энкодера, n_multi слоёв).
Унимодальные картиночный энкодер и текстовый декодер обучаются через контрастный лосс (соответствие картинки и описания), а мультимодальный декодер обучается через captioning loss. Соответственно, в картиночном энкодере получаются эмбеддинги картинок, в унимодальном декодере эмбеддинги текстов, а в мультимодальном декодере мультимодальные картиночно-текстовые эмбеддинги. Под разные задачи можно брать что нужно. Профит!
Контрастный лосс считается между эмбеддингом обучаемого [CLS] токена, добавляемого к тексту, и эмбеддингом, получаемым из картиночных эмбеддингов с помощью задаче-специфичного pooler’а (однослойный self-attention с n_query обучаемыми Q, а K/V попадают из энкодера). Этот задаче-специфичный пулер выступает своего рода адаптером для новых задач. Для constrastive loss n_query=1, а для generative loss n_query=256.
В работе реализованы три варианта данной архитектуры разного размера. CoCa-Base (86M image encoder + 297M text decoder = 383M параметров), CoCa-Large (303M+484M=787M) и просто CoCa (1B+1.1B=2.1B). Везде n_uni = n_multi и для самой большой модели они равны 18, а картиночный энкодер в ней на 40 слоёв. Использовали гугловый фреймворк Lingvo (https://github.com/tensorflow/lingvo).
Jiahui Yu, Zirui Wang, Vijay Vasudevan, Legg Yeung, Mojtaba Seyedhosseini, Yonghui Wu
Статья: https://arxiv.org/abs/2205.01917
Пост в блоге: https://ai.googleblog.com/2022/05/image-text-pre-training-with.html
Модель: нет :(
Код: нет :(
Реимплементация от lucidrains: https://github.com/lucidrains/CoCa-pytorch
Важная недавняя мультимодальная модель от Гугла, про которую стоит рассказать.
Движуха с тем, что сейчас называется foundation models, развивается и усложняется. Авторы рассматривают варианты картиночных моделей с natural language supervision, куда относят и обычную классификацию.
Начиналось всё когда-то (когда термина foundation model и в помине не было) с предобученных на классификации с кросс-энтропийным лоссом single-encoder models, те же предобученные VGG и т.п. Использовать эти одиночные модели на сложных задачах, требующих больше одной модальности было не очень просто и эффективно.
Потом пошли бимодальные модели, часто выполненные в виде dual-encoder models, обученные контрастным лоссом, например, CLIP (https://news.1rj.ru/str/gonzo_ML/665) и ALIGN (https://news.1rj.ru/str/gonzo_ML/679). Они были полезнее для различных кросс-модальных историй, но всё равно не очень подходили для сложных зрительно-языковых задач типа VQA, где требовались совмещённые картиночные и языковые репрезентации (в этих моделях они были разделены).
Параллельно существовала ветка encoder-decoder моделей, например, с картинкой на входе энкодера, текстом на входе декодера, и текстом на выходе декодера. Лосс обычный, который используется в авторегрессионных декодерах, здесь его называют captioning loss. Выход декодера можно было использовать в качестве репрезентаций для мультимодальных задач. Такие модели были хороши (SimVLM, например, https://arxiv.org/abs/2108.10904), но не давали отдельных репрезентаций для текста (было сразу замешивание с репрезентациями картиночного энкодера).
В данной работе эти три парадигмы объединяются и авторы получают одну модель, обладающую возможностями всех трёх подходов. Новое семейство моделей называется Contrastive Captioners (CoCa). Это по сути модифицированная архитектура энкодер-декодер, обучающаяся одновременно на контрастном и генеративном (captioning) лоссе.
Картиночный энкодер в CoCa по дефолту ViT (https://news.1rj.ru/str/gonzo_ML/434), но может быть что угодно. Декодер трансформера разделяется на две части: унимодальный декодер (который получает только текст и на картиночные эмбеддинги никак не смотрит, n_uni слоёв) и мультимодальный декодер (который умеет делать cross-attention на эмбеддинги картиночного энкодера, n_multi слоёв).
Унимодальные картиночный энкодер и текстовый декодер обучаются через контрастный лосс (соответствие картинки и описания), а мультимодальный декодер обучается через captioning loss. Соответственно, в картиночном энкодере получаются эмбеддинги картинок, в унимодальном декодере эмбеддинги текстов, а в мультимодальном декодере мультимодальные картиночно-текстовые эмбеддинги. Под разные задачи можно брать что нужно. Профит!
Контрастный лосс считается между эмбеддингом обучаемого [CLS] токена, добавляемого к тексту, и эмбеддингом, получаемым из картиночных эмбеддингов с помощью задаче-специфичного pooler’а (однослойный self-attention с n_query обучаемыми Q, а K/V попадают из энкодера). Этот задаче-специфичный пулер выступает своего рода адаптером для новых задач. Для constrastive loss n_query=1, а для generative loss n_query=256.
В работе реализованы три варианта данной архитектуры разного размера. CoCa-Base (86M image encoder + 297M text decoder = 383M параметров), CoCa-Large (303M+484M=787M) и просто CoCa (1B+1.1B=2.1B). Везде n_uni = n_multi и для самой большой модели они равны 18, а картиночный энкодер в ней на 40 слоёв. Использовали гугловый фреймворк Lingvo (https://github.com/tensorflow/lingvo).
research.google
Image-Text Pre-training with Contrastive Captioners
Posted by Zirui Wang and Jiahui Yu, Research Scientists, Google Research, Brain Team Oftentimes, machine learning (ML) model developers begin their...
👍11
При обучении оба лосса считаются за один проход, так что особого оверхеда по сравнению с обычной архитектурой encoder-decoder не добавляется. Не надо также отдельных стадий обучения для разных задач, всё обучается end-to-end одновременно на разных источниках данных, и в случае классификации метки классов тоже подаются как текст.
Модель обучалась на датасетах JFT-3B (метки классов вместе с промптом используются в качестве текста, что-то типа “a photo of the cat, animal”) и шумном датасете пар картинка-текст из ALIGN. Обучалось на 500К шагов, что примерно соответствует 5 эпохам на JFT и 10 эпохам на ALIGN. Была также одна эпоха дообучения на более высоком разрешении 576×576. Оптимизатор Adafactor для экономии памяти. Обучалось 5 дней на 2048 TPUv4. По текущим ценам (https://cloud.google.com/tpu/pricing) это вышло бы в 791,347.2$, если захотите повторить.
Предобученную модель можно использовать в режиме zero-shot (с поправкой на то, что во время обучения модель могла видеть что-то релевантное, хотя в работе была дедупликация и фильтрация, чтобы не просочились данные похожие на downstream задачи). Также модель можно использовать в режиме замороженных фич, когда на основе фич замороженного энкодера обучаются задаче-специфичные пулеры. Для классификации видео можно обучить пулер поверх эмбеддингов отдельных кадров, а для zero-shot video-text retrieval вообще усреднить эмбеддинг от 16 кадров. Ну и файнтюнить, конечно, тоже можно.
Проверяли на трёхъ группах задач: 1) visual recognition, 2) crossmodal alignment, 3) image captioning and multimodal understanding. Поскольку модель одновременно производит и унимодальные выровненные (в смысле aligned, не знаю как по-русски лучше сказать) репрезентации и мультимодальные, то её легко приспособить для всех этих типов задач. CoCa установила новые SoTA на всех трёх типах задач с одной общей предобученной моделью.
На visual recognition новая SoTA на старом добром ImageNet, теперь там 91% top-1 accuracy (с файнтюнингом) и 90.6% (с замороженной моделью). Ну то есть даже без файн-тюнинга CoCa соперничает с топовыми моделями, специально обученными на ImageNet. Парето-фронт у CoCa относительно размера модели ощутимо лучше, чем у SwinV2, CoAtNet, ViT, Florence, CLIP, ALIGN. На других датасетах по распознаванию картинок и видео тоже всё хорошо.
На мой взгляд, знаковое событие, что топ (https://paperswithcode.com/sota/image-classification-on-imagenet) на ImageNet теперь не у чисто картиночной модели, а у мультимодальной картиночно-текстовой. Которая при этом ещё и меньше по размеру, чем следующие за ней (для классификации используется только картиночная часть, оба декодера здесь выступают скорее как нечто типа регуляризации, помогающей направить эмбеддинги в правильное русло).
На задачах crossmodal alignment в image-text retrieval на MSCOCO и Flickr30K тоже всё прекрасно, оставлены позади CLIP, ALIGN, FILIP, Florence. Даже самая малая CoCa уже очень хороша. На zero-shot video-text retrieval на MSR-VTT модель тоже очень хороша. На zero-shot image classification, когда надо выбрать наиболее соответствующий текстовый промпт, тоже установили SoTA, побив многих, включая также CLIP, ALIGN, FILIP, Florence, LiT и BASIC. У самой большой коки 86.3%, что в общем ещё несколько лет назад было лучшим результатом специализированных supervised моделей. А тут zero-shot! Ещё и на сложных кейсах с попорченными картинками модель тоже стабильнее конкурентов.
На задачах multimodal understaning, а именно visual question answering (VQA v2), visual entailment (SNLI-VE), и visual reasoning (NLVR2), тоже SoTA на всех трёх задачах.
Для image captioning модель файнтюнили только с captioning loss на MSCOCO. Модель в итоге тоже очень хороша, а на одном сложном бенчмарке даёт SoTA.
Модель обучалась на датасетах JFT-3B (метки классов вместе с промптом используются в качестве текста, что-то типа “a photo of the cat, animal”) и шумном датасете пар картинка-текст из ALIGN. Обучалось на 500К шагов, что примерно соответствует 5 эпохам на JFT и 10 эпохам на ALIGN. Была также одна эпоха дообучения на более высоком разрешении 576×576. Оптимизатор Adafactor для экономии памяти. Обучалось 5 дней на 2048 TPUv4. По текущим ценам (https://cloud.google.com/tpu/pricing) это вышло бы в 791,347.2$, если захотите повторить.
Предобученную модель можно использовать в режиме zero-shot (с поправкой на то, что во время обучения модель могла видеть что-то релевантное, хотя в работе была дедупликация и фильтрация, чтобы не просочились данные похожие на downstream задачи). Также модель можно использовать в режиме замороженных фич, когда на основе фич замороженного энкодера обучаются задаче-специфичные пулеры. Для классификации видео можно обучить пулер поверх эмбеддингов отдельных кадров, а для zero-shot video-text retrieval вообще усреднить эмбеддинг от 16 кадров. Ну и файнтюнить, конечно, тоже можно.
Проверяли на трёхъ группах задач: 1) visual recognition, 2) crossmodal alignment, 3) image captioning and multimodal understanding. Поскольку модель одновременно производит и унимодальные выровненные (в смысле aligned, не знаю как по-русски лучше сказать) репрезентации и мультимодальные, то её легко приспособить для всех этих типов задач. CoCa установила новые SoTA на всех трёх типах задач с одной общей предобученной моделью.
На visual recognition новая SoTA на старом добром ImageNet, теперь там 91% top-1 accuracy (с файнтюнингом) и 90.6% (с замороженной моделью). Ну то есть даже без файн-тюнинга CoCa соперничает с топовыми моделями, специально обученными на ImageNet. Парето-фронт у CoCa относительно размера модели ощутимо лучше, чем у SwinV2, CoAtNet, ViT, Florence, CLIP, ALIGN. На других датасетах по распознаванию картинок и видео тоже всё хорошо.
На мой взгляд, знаковое событие, что топ (https://paperswithcode.com/sota/image-classification-on-imagenet) на ImageNet теперь не у чисто картиночной модели, а у мультимодальной картиночно-текстовой. Которая при этом ещё и меньше по размеру, чем следующие за ней (для классификации используется только картиночная часть, оба декодера здесь выступают скорее как нечто типа регуляризации, помогающей направить эмбеддинги в правильное русло).
На задачах crossmodal alignment в image-text retrieval на MSCOCO и Flickr30K тоже всё прекрасно, оставлены позади CLIP, ALIGN, FILIP, Florence. Даже самая малая CoCa уже очень хороша. На zero-shot video-text retrieval на MSR-VTT модель тоже очень хороша. На zero-shot image classification, когда надо выбрать наиболее соответствующий текстовый промпт, тоже установили SoTA, побив многих, включая также CLIP, ALIGN, FILIP, Florence, LiT и BASIC. У самой большой коки 86.3%, что в общем ещё несколько лет назад было лучшим результатом специализированных supervised моделей. А тут zero-shot! Ещё и на сложных кейсах с попорченными картинками модель тоже стабильнее конкурентов.
На задачах multimodal understaning, а именно visual question answering (VQA v2), visual entailment (SNLI-VE), и visual reasoning (NLVR2), тоже SoTA на всех трёх задачах.
Для image captioning модель файнтюнили только с captioning loss на MSCOCO. Модель в итоге тоже очень хороша, а на одном сложном бенчмарке даёт SoTA.
Google Cloud
TPU Pricing
TPU Pricing.
👍2
Интересные абляции. Сравнили captioning loss (L_Cap) с cross-entropy loss (L_Cls) на классификации по JFT-3B, в первом случае был энкодер-декодер, во втором ViT-Base энкодер. Оказались сопоставимые результаты, что авторы считают подтверждением идеи о L_Cls как частном случае L_Cap, когда текстовый словарь — это множество всех имён классов. По сравнению с контрастным лоссом L_CoCa лучше, примерно соответствует L_Cap (на тех задачах, которые тот поддерживает), но при этом позволяет решать и задачи, которые L_Cap не поддерживает (например, задачи retrieval и zero-shot classification).
В целом, считаю, это важная и довольно знаковая модель. Во-первых, более универсальный подход с точки зрения архитектуры и training objective. Во-вторых, ещё и универсальность с точки зрения мультимодальности. В таких случаях всегда вспоминаю "Начало бесконечности" Дэвида Дойча и главу про универсальность. В-третьих, с более универсальным подходом ещё и более высокое качество по сравнению со “специалистами”.
Мне кажется, это важный тренд, который будет разворачиваться и дальше, специалисты хороши до определённых границ, часто обусловленных ограничением в ресурсах. У них всегда будет своя ниша, но как только ресурсов становится достаточно, чтобы из ниши вылезти, более универсальные модели могут “понять” мир лучше. Здесь есть много параллелей с эволюционной биологией, про которые стоит подумать отдельно.
Особо печально, что снова ничего не опубликовано и не выложено. Золотые годы NLP, когда были выложены BERT’ы, XLM-R и много всего другого, что существенно продвинуло всю область, стремительно заканчиваются, теперь все держат модели при себе, хотя модель типа CoCa могла бы дать жизнь огромному числу решений. Возвращаясь к термину foundation model, я считаю, такие модели неправомерно называть этим словом, они не выступают фундаментами ни для кого, кроме может быть ограниченного числа работников компании, создавших модель. Пускай это будет flagship model или как-то ещё, но точно не foundation :(
В целом, считаю, это важная и довольно знаковая модель. Во-первых, более универсальный подход с точки зрения архитектуры и training objective. Во-вторых, ещё и универсальность с точки зрения мультимодальности. В таких случаях всегда вспоминаю "Начало бесконечности" Дэвида Дойча и главу про универсальность. В-третьих, с более универсальным подходом ещё и более высокое качество по сравнению со “специалистами”.
Мне кажется, это важный тренд, который будет разворачиваться и дальше, специалисты хороши до определённых границ, часто обусловленных ограничением в ресурсах. У них всегда будет своя ниша, но как только ресурсов становится достаточно, чтобы из ниши вылезти, более универсальные модели могут “понять” мир лучше. Здесь есть много параллелей с эволюционной биологией, про которые стоит подумать отдельно.
Особо печально, что снова ничего не опубликовано и не выложено. Золотые годы NLP, когда были выложены BERT’ы, XLM-R и много всего другого, что существенно продвинуло всю область, стремительно заканчиваются, теперь все держат модели при себе, хотя модель типа CoCa могла бы дать жизнь огромному числу решений. Возвращаясь к термину foundation model, я считаю, такие модели неправомерно называть этим словом, они не выступают фундаментами ни для кого, кроме может быть ограниченного числа работников компании, создавших модель. Пускай это будет flagship model или как-то ещё, но точно не foundation :(
👍19