Зоопарк трансформеров: большой обзор моделей от BERT до Alpaca |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-05-09 12:46 Введение В последнее время только ленивый не говорит про революцию ИИ (искусственный интеллект), искусственные нейронные сети позволяют создавать сервисы, которые 10 лет назад показались бы фантастикой. Ведение диалогов, генерация и редактирование медиа-контента, написание программного кода, анализ и синтез речи и даже сдача университетских экзаменов — впечатляющий и далеко не полный перечень того, что научились делать ML-модели (Machine Learning) за считанные годы. Важную роль в этом сыграло появление "внимания-на-себя" (self-attention) и архитектуры трансформер (Transformer) для обработки последовательностей, которые позволили решить сразу несколько ключевых проблем, присущих доминировавшим в области RNN. Рождение трансформера совпало с началом активного внедрения переноса обучения (transfer learning) в области обработки текстов (Natural Language Processing), и довольно быстро предобученный (pre-trained) трансформер с возможностью дообучения (fine-tuning) стал стандартом как в индустрии, так и в науке. За последние 4-5 лет было выпущено множество работ, посвященных
Ориентироваться в потоке статей, моделей и подходов стало непросто даже вовлечённым специалистам. 2022 год получился крайне богатым на новинки, 2023 идёт в том же русле. Некоторое время назад я понял, что надо бы а) внимательнее изучить те работы, что я пропустил или проглядел мельком; б) лучше структурировать всю информацию о моделях и разных практических техниках, которая у меня накопилась за последние годы. К моменту завершения этой созидательной деятельности родилась мысль как-то оформить хотя бы часть результатов и поделиться с сообществом, что и привело к созданию этой статьи. Первая и наиболее очевидная идея — собрать структурированный список моделей на основе архитектуры трансформера, которые были созданы и опубликованы за последние несколько лет для разных предметных областей и типов данных. Об этом дальше и пойдёт речь. Несколько моментов, которые стоит предварительно отметить.
Структура статьи:
Везде ниже "Информация о модели" включает в себя последовательно
Итак, поехали. BERT-like модели для текстов Первый блок посвящён моделям на основе кодировщика Transformer, которые применяются для векторизации, классификации, разметки последовательностей, QA (Question Answering), NER (Named Entity Recognition) и т.д., в кросс / мультиязычных постановках. BERT Информация о моделиGoogle / 2018 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Transformer Encoder / 100M, 340M Кодировщик трансформера, токенизация Wordpiece (словарь 30К). Входной эмбеддинг формируется из трёх векторов: вектор токена, обучаемый позиционный вектор и вектор сегмента (1-й текст или 2-й). Вход модели — эмбеддинг CLS-токена, эмбеддинги 1-го текста и эмбеддинги второго. Две задачи обучения: Masked Language Modeling (MLM) и Next Sentence Prediction (NSP). В MLM 15% токенов статически маскируются, из них 80% заменяются токеном MASK, 10% заменяются на случайный токен, 10% остаются неизменными. Модель предсказывает верный токен, лосс считается только на этих 15% токенов. В NSP модель предсказывает, следует ли 2-й текст за 1-м. Предсказание делается на выходном векторе CLS-токена. Для ускорения обучения 90% времени длина последовательности была 128 токенов, затем 10% времени модель училась на 512 токенах для получения валидных позиционных эмбеддингов. 16Гб обучающих данных. RoBERTa Информация о моделиFacebook / 2019 RoBERTa: A Robustly Optimized BERT Pretraining Approach Transformer Encoder / 115M, 360M Улучшенная версия BERT без радикальных изменений. Учится только на MLM (NSP признана малополезной), обучающие последовательности более длинные (но максимум тоже 512). Используются динамические маски (т.е. при повторном проходе по тем же данным маскируются другие токены), на порядок больше обучающих данных. В целом аккуратно подобраны гиперпараметры обучения. XLM Информация о моделиFacebook / 2019 Cross-lingual Language Model Pretraining Transformer Encoder Один из подходов к обучению мультиязычных моделей, может использовать с разными базовыми моделями (наиболее популярная сейчас модель XLM-R на основе RoBERTa). В исходной XLM общий словарь BPE на все языки. Две задачи обучения: MLM и Translate LM. TLM — по сути тот же MLM на паре текстов, но тексты являются параллельными переводами друг друга, маскирование случайное, эмбеддинг сегмента кодирует язык. Transformer-XL Информация о моделиCarnegie Mellon University / 2019 Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context Transformer Encoder / 41M, 88M, 151M, 257M, 277M Модель ориентирована на обработку длинных последовательностей. Две основные идеи: рекурентная обработка сегментов и относительное позиционное кодирование. Длинный текст разбивается на сегменты, обработка производится по одному сегменту за раз. При этом выходы предыдущего сегмента кэшируются на всех слоях. При подсчёте self-attention в текущем сегменте ключи и значения считается на основании как выходов для текущего сегмента, так и для предыдущего (они просто конкатенируются). Градиенты идут только в рамках текущего сегмента. Такая схема не может работать с абсолютными позициями. Вместо добавления к входным эмбеддингам позиционных векторов информация о позиции добавляется напрямую в self-attention, для этого в модели репараметризуется формула подсчёта весов внимания. Абсолютные векторы заменяются на фиксированную матрицу на основе значений синусов от расстояний между позициями токенов и пару обучаемых векторов, общих для всех позиций. ERNIE Информация о моделиTsinghua University, Huawei / 2019 ERNIE: Enhanced Language Representation with Informative Entities Transformer Encoder / 114M Встраивание в BERT информации об именованных сущностях из графа знаний. На входе набор токенов текста и набор токенов сущностей текста (вся сущность - токен). Токены текста кодируются BERT. Поверх BERT идёт набор блоков K-encoder (~3% параметров сети). В них
На предобучении три лосса: MLM, NSP и предсказание сущности по токенам (типа denoising Auto Encoder). Для последнего
Предобученная модель быть дообучена как и обычный BERT (есть CLS-токен). Для определения связей между сущностями и их типов предлагается отдельная процедура дообучения. XLNet Информация о моделиCarnegie Mellon University / 2019 XLNet: Generalized Autoregressive Pretraining for Language Understanding Transformer Encoder / 110M, 340M У процедуры обучения BERT есть проблемы:
XLNet основан на Transformer-XL, дополнительно предлагается учить на задачу Permutation LM (PLM, вместо MLM и NSP): предсказывать токены в их коротких контекстах вместо прямого использования MASK. Это обеспечивает течение градиента через все токены и избавляет от спецтокена маски. Токены в контексте перемешиваются (т.е. i-й может предсказываться на основании (i-2)-го и (i+1)-го), но при этом их позиции остаются известными. Этого нельзя добиться текущим позиционным кодированием (в т.ч. из Transformer-XL): пытаясь предсказывать вероятность токена при условии части его контекста, модель, очевидно, не должна знать сам токен, но должна знать позицию в рамках контекста, в которой токен находится. Для решения этой проблемы можно разбить self-attention на два потока:
На этапе fine-tuning векторы запросов могут игнорироваться, и модель будет работать как обычный Transformer-XL. PLM ощутимо сложнее MLM, по факту контексты приходится делать достаточно длинными, чтобы модель смогла нормально выучиться. Учится на том же объёме данных, что и RoBERTa, результаты схожие, но из-за сложности реализации модель не стала такой популярной, как RoBERTa. ALBERT Информация о моделиGoogle / 2019 ALBERT: A Lite BERT for Self-supervised Learning of Language Representations Transformer Encoder / 12M, 18M, 60M, 235M Попытка облегчить BERT, не потеряв в качестве:
Учится на MLM и Sentence Order Prediction (SOP, предсказание порядка следования текстов). В MLM маскируются не только отдельные токены, но и N-граммы (один из недостатков BERT). В качестве обучающих данных используются датасеты XLNet и RoBERTa. DistilBERT Информация о моделиHugging Face / 2019 DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter Transformer Encoder / 66M Ещё один подход к оптимизации BERT — дистилляция:
В результате модель на 40% меньше учителя, на 60% быстрее, сохраняет 97% качества на разных задачах. LaBSE Информация о моделиGoogle / 2020 Language-agnostic BERT Sentence Embedding Transformer Encoder / 471M Мультиязычная модель на основе BERT для векторизации предложений. Сперва учится на MLM и TLM (маскируются 20% токенов), затем дообучается приближать векторы параллельных переводов. Поддерживает 100+ языков при словаре в 500К токенов. ELECTRA Информация о моделиGoogle, Stanford University / 2020 ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators Transformer Encoder / 14M, 110M, 335M Ускорение обучения BERT с помощью генеративно-состязательного подхода:
В отличие от MLM, градиент течет через все токены, а не только через маскированные. Модели используют общие веса эмбеддингов. Объём обучающих данных такой же, как у RoBERTa или XLNet, модель учится до аналогичного уровня качества быстрее, чем BERT, RoBERTa и ALBERT. Если учить дольше, то работает лучше. DeBERTa Информация о моделиMicrosoft / 2020 DeBERTa: Decoding-enhanced BERT with Disentangled Attention Transformer Encoder / <1B, 1.5B Ещё модель, в которой контентная и позиционная составляющие вектора токена разделяются на два отдельных вектора (disentangled attention):
Enhanced Mask Decoder — абсолютные позиционные эмбеддинги, которые не хочется использовать во внимании, но которые могут быть полезны при предсказании токена, добавляются после всех слоёв перед softmax. Как и в ALBERT, используется проекционная матрица для отвязки размера эмбеддинга от размера вектора скрытого представления токена. GPT-like и T5-like модели для текстов Самый большой блок из генеративных моделей на основе полного трансформера или его декодировщика. Сфера применений обширна: к задачам из предыдущего раздела добавляются ведение диалога, машинный перевод, логический и математический вывод, анализ и генерация кода, да и вообще всё, что можно свести к генерации текста по тексту. Наиболее крупные и "умные" модели обычно создаются именно на основе архитектуры декодировщика. Такие модели часто умеют хорошо работать без дообучения во few- и zero-shot режимах. GPT-2 Информация о моделиOpenAI / 2018 Language Models are Unsupervised Multitask Learners Transformer Decoder / 117M, 345M, 762M, 1.5B Декодировщик трансформера, учится на задачу Causal LM (предсказание следующего токена по левому контексту). С т.з. архитектуры есть небольшие изменения: из каждого блока декодировщика удаляется слой cross-attention (очевидно) и используется pre-LayerNorm — слой нормализации ставится на входе каждого блока и дополнительно на выходе последнего слоя self-attention. Токенизация byte-level BPE (словарь 50К) с запретом похожих подстрок ("dog", "dog!", "dog.") при формировании. Максимальная длина последовательности 1024. Выходы слоёв кэшируются для всех уже сгенерированных токенов. T5 Информация о моделиGoogle / 2019 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer Full Transformer / 60M, 220M, 770M, 3B, 11B Полный трансформер, предобучаемый на MLM (15% токенов маскируются), спаны маскируются одним уникальным кодом-маской (<X>, <Y>, ...). на выходе предсказывается последовательность <X>спан<Y>спан... LayerNorm ставится перед входом self-attention и полносвязных слоёв. Используется относительное позиционное кодирование:
Токенизация SentencePiece (словарь 32К), предобучение с максимальной длиной последовательности 512. После идёт дообучение на ряд NLP-задач с подходящими промптами ("translate", "TL;DR", ...). BART Информация о моделиFacebook / 2019 Full Transformer / 140M, 406M Ещё один полный трансформер, только ReLU заменена везде на GeLU. Учится предсказывать по зашумлённому тексту исходный (denoising AE), типы зашумлений:
Токенизация byte-level BPE (словарь 50К). CTRL Информация о моделиSalesforce / 2019 CTRL: A Conditional Transformer Language Model for Controllable Generation Transformer Decoder / 1.6B Декодировщик трансформера с возможностью управления генерацией с помощью префиксных токенов-кодов (пример входа: <Horror> input text ...). Коды проставляются подходящим текстам на обучении и далее используются на инференсе для генерации в соответствующем стиле. Обучение на Causal LM, дополнительные лоссы не используются. Токенизация BPE (словарь 250К). GPT-3 Информация о моделиOpenAI / 2020 Language Models are Few-Shot Learners Transformer Decoder / 125M, 350M, 760M, 1.3B, 2.7B, 6.7B, 13B, 175B В основе GPT-2 с использованием разреженного внимания из Sparse Transformer и увеличенной до 2048 длиной последовательности. Для оптимизации обучения и инференса модель раскладывается на разные GPU и в ширину, и в глубину. mT5 Информация о моделиGoogle / 2020 mT5: A massively multilingual pre-trained text-to-text transformer Full Transformer / 300M, 580M, 1.2B, 3.7B, 13B Основана на модели T5, обучение аналогичное, но с использованием мультиязычных данных. Вероятность выбора языка при формировании батчей на обучении пропорциональна доле сэмплов этого языка в корпусе с степени 0.3. Активация ReLU заменяется на GeGLU, словарь расширен до 250К токенов. M2M100 Информация о моделиFacebook / 2020 Beyond English-Centric Multilingual Machine Translation Full Transformer / 418M, 1.2B, 12B Модель для перевода, работает в режиме many-to-many, а не через английский язык. Ко входу кодировщика добавляется токен исходного языка, ко входу декодера — токен целевого языка. Токенизация SentencePiece (словарь 128К). GPT-J Информация о моделиEleutherAI / 2021 GPT-J-6B: 6B JAX-Based Transformer Transformer Decoder / 6B Open-source аналог GPT-3 6.7B, учится на Causal LM, особенности:
За счёт обучающих данных (Pile) может использоваться для генерации программного кода. Токенизатор и словарь как в GPT-2. Jurassic-1 Информация о моделиAI21 Labs / 2021 Jurassic-1: Technical Details and Evaluation Transformer Decoder / 7B, 178B Ещё одна GPT-like модель, в большой модели меньше слоёв, но больше размерности эмбеддингов. Токенизация SentencePiece (словарь 256К). Обучение с использованием DeepSpeed и MegatronLM. Switch Transformer Информация о моделиGoogle / 2021 Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity Full Transformer / 7B, 26B, 395B, 1.57T Идея работы в том, чтобы выучивать модель с огромным числом параметров, но на инференсе использовать только небольшую их часть. Полносвязный слой в блоках трансформера заменяется на Mixed-of-Experts (MoE):
В целях экономии памяти все параметры и активации хранятся в float16, для стабильности входы гейта и его операции проводятся в float32, но затем тоже переводятся в float16. Предобучение такое же, как в T5, ещё обучается в мультиязычном режиме на данных mT5. Дистиллированная в T5, такая модель работает лучше обычной. GLAM Информация о моделиGoogle / 2021 GLaM: Efficient Scaling of Language Models with Mixture-of-Experts Transformer Decoder / 1.9B, 20B, 27B, 53B, 105B, 143B, 1.2T Идейно похожа на Switch Transformer, но больше ориентирована на работу во few-shot режиме, а не на fine-tuning. В моделях разных размеров используется от 32 до 256 слоёв экспертов с K=2. Позиционное кодирование относительное из Transformer-XL. При обработке токена активируется менее 10% параметров сети. LaMDA Информация о моделиGoogle / 2021 LaMDA: Language Models for Dialog Applications Transformer Decoder / 2B, 8B, 137B GPT-like модель, активации Gated GELU, относительное позиционное кодирование в self-attention, как в T5. Модель диалоговая, предобученная на Causal LM и дообученная на генеративные и дискриминативные задачи. Формат входа "<контекст><префикс><ответ>[<атрибут><значение>]", пример "как дела? ОТВЕТ хорошо ЦЕННОСТЬ 0", лоссы считаются только на ответе и значении. Дообучение шло в две стадии:
Также модель дообучается на использование вызовов внешних систем (поиск, калькулятор и переводчик). При генерации префискса TS происходит вызов всех систем, их выходы конкатенируются. На основе этой информации и истории диалога происходит либо формирование итогового ответа, либо повторный уточняющий запрос во внешние системы. Объективно это очень крутая работа и модель, уверен, что моего объяснения тут недостаточно даже для поверхностного понимания, лучше сразу идти изучать оригинальную статью. Gopher Информация о моделиDeepMind / 2021 Scaling Language Models: Methods, Analysis & Insights from Training Gopher Transformer Decoder / 44M, 117M, 417M, 1.4B, 7.1B, 280B Декодировщик с относительным позиционным кодированием из Transformer-XL, вместо LayerNorm используется RMSNorm. Обучение обычное на Causal LM, длина последовательности 2048. Использует model-параллелизм и разделение состояния оптимизатора при обучении. У больших версий модели и для весов, и для активаций используется bfloat16. GPT-NeoX-20B Информация о моделиEleutherAI / 2022 GPT-NeoX-20B: An Open-Source Autoregressive Language Model Transformer Decoder / 20B Схожа с GPT-J, тоже использует rotary позиционное кодирование. В токенизатор добавляются токены повторяющихся пробелов (до 24 штук) для уменьшения числа токенов в тексте кода. Веса модели используют представление float16. Максимальная длина последовательности 2048, разделение состояния оптимизатора при обучении (ZeRO), tensor- и pipeline-параллелизм. Обычно в моделях 2 слоя LayerNorm в блоке обычно разделяют параметры, но в этой модели из-за ошибки веса получились раздельным. Авторы показали, что это не оказывает на качество существенного влияния. Megatron-Turing NLG Информация о моделиNVIDIA, Microsoft / 2022 Transformer Decoder / 530B Конкурент Gopher и GPT-3 на разных задачах. Основная особенность — подход к оптимизации обучения с помощью DeepSpeed и MegatronLM, комбинация data-, pipeline- и tensor-параллелизма (3D parallelism). В целом работа показательная: в более ранних статьях упор делался на архитектурные особенности и типы задач на предобучении. В этой и подобных публикациях последних двух лет рост размеров моделей приводит к смещению фокус внимания на эффективность обучения и последующего инференса. В работе очень много технических деталей, связанных с ускорением и масштабированием обучения, имеет смысл изучить. YALM Информация о моделиYandex / 2022 Яндекс выложил YaLM 100B — сейчас это крупнейшая GPT-подобная нейросеть в свободном доступе. Вот как удалось её обучить Transformer Decoder / 100B Большая open-source англо-русская модель, особенности обучения:
BLOOM Информация о моделиBigScience / 2022 BLOOM: A 176B-Parameter Open-Access Multilingual Language Model Transformer Decoder / 560M, 1.1B, 1.7B, 3B, 7.1B, 176B Самая большая open-source модель для 46 языков и 13 языков программирования. Для её обучения был агрегирован большой датасет ROOTS, включивший в себя ~500 открытых наборов данных. Особенности:
Chinchilla Информация о моделиDeepMind / 2022 Training Compute-Optimal Large Language Models Transformer Decoder / 70B Основная идея: размеры модели должны соответствовать объёму обучающих данных, многие модели недообучены или могли бы быть уменьшены без потери качества. Архитектура и процесс обучения аналогичны Gopher (только уменьшены число голов attention и батчи и вместо AdamW используется Adam). При аналогичном объёме вычислений удаётся получить модель, которая в разы меньше и работает лучше. PaLM Информация о моделиGoogle, 2022 PaLM: Scaling Language Modeling with Pathways Transformer Decoder / 8B, 62B, 540B Большая мультиязычная декодерная модель, детали:
Обучение с помощью Adafactor, на предобучении дропаут выключен, а fine-tuning 0.1. При расхождениях обучение рестартует с с валидного чекпойнта с пропуском 200-500 батчей. Токенизатор SentencePiece (словарь 256К), длина последовательности 2048. Хорошо походит для генерации и исправления программного кода. LLaMA Информация о моделиMeta / 2023 LLaMA: Open and Efficient Foundation Language Models Transformer Decoder / 7B, 13B, 30B, 65B Открытая для научных исследований большая GPT-like LM, на основе которой обучили несколько instruct-моделей. Используются pre-LayerNorm, активации SwiGLU и RoPE позиционные эмбеддинги. При обучении тяжёлые активации (как выходы линейных слоёв) кэшируются на forward-шаге для ускорения backward. Это растит потребление памяти, поэтому используются model- и sequence-параллелизм. Токенизация BPE с bytes fallback (словарь 32К). Pythia Информация о моделиEleutherAI / 2023 Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling Transformer Decoder / 70M, 160M, 410M, 1B, 1.4B, 2.8B, 6.9B, 12B Ещё одна open-source декодерная модель со стандартным набором практик:
FRED-T5 Информация о моделиSberDevices / 2023 FRED-T5. Новая SOTA модель для русского языка от SberDevices Full Transformer / 820M, 1.7B Одна из лучших на текущий момент моделей для русского языка. Архитектурно T5 с активацией Gated GeLU. Учится на 7 задач:
Обучение шло в 4 этапа, на первом префиксов не было, далее их добавили. До последнего этапа использовался Adafactor, далее AdamW. Токенизация Byte-level BPE (словарь 50К). Из-за ошибки первые 2 этапа модель училась только на 1% данных, но качество дала высокое, дальнейшее дообучение на всём не сильно его увеличило. Instruct-модели для текстов Работы этого блока представляют собой модернизированные версии декодерных моделей из предыдущего. К ним были применены дообучение для следования инструкциям и (опционально) дополнительные методы коррекции выхода моделей (типа RLHF) для повышения качества ответов в ходе ведения диалога и решения поставленных задач. RLHF на пальцах
InstructGPT Информация о моделиOpenAI / 2022 Training language models to follow instructions with human feedback Transformer Decoder / 1.3B, 6B, 175B Адаптация GPT-3 к качественному выполнению инструкций. Сперва модель проходят fine-tuning на набор данных с промптами и ответами, которые люди по набору критериев посчитали хорошими. Таким образом получается базовая модель, к которой применяется RLHF. Reword-модель ("награда") — GPT-3 6B. Полученная модель даёт более качественные ответы, на основе InstructGPT была создана модель ChatGPT. Flan-PaLM Информация о моделиGoogle / 2022 Scaling Instruction-Finetuned Language Models Transformer Decoder / 8B, 62B, 540B Модель PaLM, дообученная на выполнение инструкций:
Модель дообучается на 1800 задач: диалог, синтез кода, ответы на вопросы и т.д. Предполагается, что дообученная модель должна справляться и с новыми задачами, подаваемыми в аналогичном стиле. Оценки качества выставляют люди, для ряда задач оценивается только качество ответа, для других — пошаговое пояснение. Показан монотонный рост среднего качества на бенчмарках при росте и размера модели, и числа instruct-задач для дообучения. Дообучение PaLM производится с помощью Adafactor, на него затрачено всего 0.2% от объёма вычислений, потраченных на основное обучение, а качество модели на целом ряде бенчмарков сильно выросло. Flan-T5 Информация о моделиGoogle / 2022 Scaling Instruction-Finetuned Language Models Full Transformer / 80M, 250M, 780M, 3B, 11B Обучение Flan-PaLM, применённое к T5, аналогично за исключением небольших технических деталей. В ряде задач Flan-T5 11B работает лучше, чем PaLM 62B без такого дообучения. Эти модели были выложены в open-source. Sparrow Информация о моделиDeepMind / 2022 Improving alignment of dialogue agents via targeted human judgements Transformer Decoder / 70B Большая работа про повышение надёжности диалоговой модели. Базовая модель получается путём дообучения Chinchilla на отобранных качественных диалогах, при тюнинге заморожены первые 80% слоёв. Затем производится дообучение для выполнения инструкций под чат-бота с RLHF, модель при этом запускается с большим промптом, настраивающим на диалог. Reward-моделей несколько, они тоже обучаются поверх Chinchilla (со своими 20% последних слоёв) и оценивают качество ответа и соответствие его разнообразным правилам. Модель имеет возможность обращаться к поисковой системе и получать оттуда сниппет до 500 символов, который может стать ответом. На инференсе reward-модели используются для ранжирования кандидатов. Кандидаты либо генерируются моделью, либо получаются из поиска, после чего лучший становится ответом. Ещё одна крутая и интересная работа, которая подлежит внимательному изучению. Alpaca Информация о моделиStanford University / 2023 Alpaca: A Strong, Replicable Instruction-Following Model Transformer Decoder / 7B, 13B Instruct fine-tuning LLaMA. Основной интерес работы — в процессе формирования выборки с помощью GPT-3:
В сумме сгенерировано 52К уникальных троек, на которых дообучается LLaMA 7B. Koala Информация о моделиBerkeley University / 2023 Koala: A Dialogue Model for Academic Research Transformer Decoder / 7B, 13B Ещё одна работа про дообучение LLaMA на instruct-данные, но, в отличие от Alpaca, не только сгенерированные большой моделью типа GPT-3. Состав выборки:
Продемонстрировано, что данные сверху ответов GPT-3 добавляют немного качества. Тем не менее, в слепом тесте пользователи предпочитают ответы Koala ответам Alpaca. Dolly-2 Информация о моделиDatabricks / 2023 Transformer Decoder / 2.8B, 6.9B, 12B Open-source модель, полученная из Pythia путём дообучения на 15К инструкциях-ответах, сгенерированных людьми. Эти данные покрывают разнообразные задачи, включающие классификацию, CDQA, ODQA, суммаризацию. Модель не является SoTA, ещё в разработке, зато допускает коммерческое использование. Vicuna Информация о моделиBerkeley University, Carnegie Mellon University &, Stanford University, UC San Diego / 2023 Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality Transformer Decoder / 7B, 13B Одна из лучший на текущий момент моделей, полученных путём дообучения LLaMA. Используются 70К диалогов, собранных из сервиса ShareGPT. Данные прошли простую фильтрацию после парсинга, длинные диалоги разделены на более короткие. Выросла максимальная длина последовательности (до 2048). Для компенсации роста памяти используются чекпойнты градиентов и Flash Attention. Лосс при дообучении считается только для ответов модели. Качество модели оценивается автоматически в сравнении с конкурентами с помощью GPT-4. Vicuna в версии 13B получила более высокую оценку, чем аналогичная Alpaca (92% vs. 76%). В работе предлагается и используется менеджер обучения с использованием спотовых машин в облаке для уменьшения стоимости обучения. Модели, демонстрирующие оптимизацию внимания В этой категории представлены модели, которые созданы скорее не для использования as is, а для демонстрации оптимизаций (в первую очередь подсчёта механизма self-attention для его ускорения и увеличения длины обрабатываемых последовательностей) с целью дальнейшего внедрения в другие модели. Sparse Transformer Информация о моделиOpenAI, 2019 Generating Long Sequences with Sparse Transformers Transformer Decoder / 59M, 95M, 152M Знаковая работа, идеи из которой нашли применение в других моделях от OpenAI. Рассматриваются разные проблемы оптимизации обучения и инференса декодировщика трансформера, причём при обработке любых последовательностей, включая изображения, в которых объекты имеют две пространственные размерности.
Longformer Информация о моделиAllen Institute for AI / 2020 Longformer: The Long-Document Transformer Transformer Encoder / 41M, 102M В основе лежит модель RoBERTa, предлагается разделение механизма внимания на две части: глобальное и локальное. Для глобального выделяется набор токенов (CLS, в случае задачи QA — вопрос), которые считаются важными, они обращают внимание на всех, все обращают на них. В локальном внимании токен смотрит на N соседей с каждой стороны, это могут быть как ближайшие соседи, так и взятые с каким-то шагом для увеличения длины покрываемого контекста (но так делается только на верхних слоях, нижние обрабатывают узкий локальный контекст). N растёт линейно с ростом номера слоя. У глобального и локального внимания свои отдельные веса для подсчёта Q, K и V. Reformer Информация о моделиBerkeley University, Google / 2020 Reformer: The Efficient Transformer Transformer Encoder Предлагается считать self-attention не между всему ключами и запросами, а только между близкими. Для этого
Дополнительно предлагается использовать подход RevNet для экономии памяти (за счёт увеличения объема вычислений). Подход позволяет пересчитывать выходы слоя по выходам следующая слоя при backpropagation. Таким образом, можно хранить только выходы последнего слоя, прочие вычисляя на лету. Вычисления при этом можно производить блоками (в т.ч. и на полносвязном слое), что тоже приводит к уменьшение потребления памяти. Performer Информация о моделиGoogle, Cambridge University, DeepMind / 2020 Rethinking Attention with Performers Transformer Encoder Идея этой работы заключается в том, что вместо упрощения подсчёта внимания можно аппроксимировать его подсчёт, не делая никаких дополнительных предположений. Используя специальные ядра, можно провести следующую аппроксимацию self-attention с помощью новых Q' и K' для небольшого r (размерность новых признаков): Сложность вычисления падает с O(n^2 * d) до O(n * r * d). Обновлённый подсчёт внимания можно встраивать в любую модель. В работе много теоретических выкладок и теорем, которые можно изучить для понимания деталей использования ядер для перехода в новое признаковое пространство. Linformer Информация о моделиFacebook / 2020 Linformer: Self-Attention with Linear Complexity Transformer Encoder Ещё одна модификация RoBERTa с оптимизацией внимания. Предлагается использовать низкоранговое разложение матриц ключей и значений с помощью обучаемых и общих для всех блоков линейных слоёв: Сложность подсчёта внимания снижается с O(n^2 * d) до O(n * k * d), k << n. В работе приводится теоретическое обоснование подхода. BigBird Информация о моделиGoogle / 2020 Big Bird: Transformers for Longer Sequences Transformer Encoder Подход реализован на основе RoBERTa, подсчёт self-attention предлагается разбить на три компоненты:
Сниженная до линейной сложность подсчёта внимания позволила вырастить длину последовательности в 8 раз. Модель учится на MLM (15% маскируемых токенов). Используются активации GeLU, токенизация SentencePiece (словарь 50К), длина локального контекста 64-86 в каждую сторону от токена. LongT5 Информация о моделиGoogle / 2021 LongT5: Efficient Text-To-Text Transformer for Long Sequences Full Transformer Модель с оптимизацией внимания на основе T5. Внимание локальное и глобальное:
В остальном обычная модель T5, словарь 32К. Максимальная длина входной последовательности — до 32К, выходной — 512. Модели для текстов, использующие внешние ресурсы Пара моделей, демонстрирующих способности Transformer по взаимодействию с внешними источниками информации и инструментами. Такого рода возможности используют в своей работе большие языковые модели. RETRO Информация о моделиDeepMind / 2021 Improving language models by retrieving from trillions of tokens 2 x Transformer Encoder + Transformer Decoder / 172M, 425M, 1.5B, 7.5B Основная идея работы — использование внешнего источника информации при подсчёте внимания: генерация очередного токена должна идти с оглядкой на релевантные данные из базы. Источник информации:
Принцип работы модели:
Детали:
Toolformer Информация о моделиMeta / 2023 Toolformer: Language Models Can Teach Themselves to Use Tools Transformer Decoder / 124M, 355M, 775M, 1.6B, 6.7B Модель построена на основе уже обученной GPT-J. Основная идея — научить модель в нужных местах делать вызов API и использовать результат вызова при дальнейшей генерации. Используется разновидность self-suprvised подхода:
При инференсе модель может сгенерировать токен "[", означающий вызов API, после этого генерация останавливается, производится вызов нужного API, вставка результата и токена "]", после чего генерация продолжается. Инструменты, к которым осуществляются вызовы: календарь, калькулятор, QA, переводчик и поиск по Википедии. Модели, ориентированные на программный код Крупные языковые модели умеют в числе прочего анализировать и генерировать код, но есть класс моделей поменьше, ориентированных чисто на это. Основные задачи связаны с генерацией кода по словесному описанию и наоброт, продолжением и вставкой кода. PLBART Информация о моделиUniversity of California, Columbia University / 2021 Unified Pre-training for Program Understanding and Generation Full Transformer / 140M Модель основа на BART-base и на три задачи денойзинга (на выходе должен быть весь восстановленный текст):
Данные на предобучении: тексты-описания на английском и код на Python и Java. Fine-tuning на генерацию, суммаризацию, перевод кода, классификацию дубликатов и поиск уязвимостей. Токенизация SentencePiece (словарь 50К). CODEX Информация о моделиOpenAI / 2021 Evaluating Large Language Models Trained on Code Transformer Decoder / 12M, 25M, 42M, 85M, 300M, 679M, 2.5B, 12B Fine-tuning GPT-3 для улучшения генерации кода на Python. Качество оценивается по числу проходимых юнит-тестов, метрика pass@k: для задачи генерируется и проверяется k сэмплов, оценивается доля решённых задач лучшим решением. Помимо просто кода из репозиториев, модель дополнительно доучивали на отдельных функциях (сигнатура + docstring + код), она может работать в режиме генерации docstring по коду. Для сокращения длины последовательности в токенизатор добавлены токены наборов пробелов разной длины. CodeT5 Информация о моделиSalesforce / 2021 Full Transformer / 60M, 220M Дообучение T5 на три равнозначные кодовые задачи. Формат входа: "CLS, токены текста, SEP, токены кода", текст может быть пустым. У каждого токена кода есть маска, определяющая, является ли он идентификатором (имя функции, переменная) или нет. Это получается за счёт синтаксического парсинга кода и анализа полученного дерева. Задачи предобучения:
Затем модель учится генерировать код по docstring и наоборот одновременно. В модели используется собственный токенизатор, на кодовых данных последовательности получаются на 30-45% короче, чем у оригинального токенизатора T5. Предобученная модель дообучается на задачи суммаризации, генерации и перевода кода, качество оценивается метрикой BLEU. AlphaCode Информация о моделиDeepMind / 2022 Competition-Level Code Generation with AlphaCode Full Transformer / 284M, 1.1B, 2.8B, 8.7B, 41.1B Попытка обучить модель, способную решать кодовые олимпиадные задачи по их описаниям для человека. Метрикой является n@k: доля решенных задач при генерации k сэмплов, из которых на тестах валидируется n <= k. Это даёт возможность сгенерировать много решений, и предварительно оценить их перед тем, как прогонять юнит-тесты, что ставит модель в более конкурентные условия. В кодировщик подаётся текст задания, декодировщик генерирует решение. В среднем тексты заданий длинее решения, поэтому длина входа кодировщика 1536, а декодировщика — 768. Сперва предобучение на данных с GitHub: MLM для кодировщика и Causal LM для декодировщика. Дообучение на задачах из Codeforces с доступом к тегам сложности и описанию подхода к решению (ни того, ни другого нет на инференсе). Используются те же лоссы плюс:
В модели используется Multi Query Attention: ключей и значений во внимании меньше, чем запросов и они разделяются запросами. Для обучения двух больших моделей используется model-параллелизм и формат данных bfloat16. На инференсе решение генерируется так
Генерация решения:
В результате значения метрики 10@(1K/10K/100K/1M) получились от 7 до 28% для разных моделей. CodeGen Информация о моделиSalesforce / 2022 CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis Transformer Decoder / 350M, 2.7B, 6.1B, 16B Модель для поэтапной генерации кода, обучение производится по порядку на следующих данных
Идея — в многошаговой генерации кода по частям:
На выходе код C1 C2 ... должен работать корректно на входных данных. Для обучения этому был подготовлен специальный набор данных с входами, выходами и 3+ шагами-промптами. InCoder Информация о моделиMeta / 2022 InCoder: A Generative Model for Code Infilling and Synthesis Transformer Decoder / 1.3B, 6.7B Цель работы — научить модель не только генерировать и продолжать код, но и делать вставки в него. Для этого в промпте часть сниппетов заменяется на маски, содержимое которых модель должна далее предсказать. Токенизация byte-level BPE с токенам-пробелами разной длины и токенами-частыми конструкциями (import numpy as np), основной упор на Python. В результате получается на 45% меньше токенов для кода на Python, чем у токенизатора GPT-2. Максимальная длина последовательности 2048. Хорошо работает в zero-shot режиме и на продолжение кода, и на вставку, для генерации кода на нужном языке используется промпт вида <| file ext=.py|>. SantaCoder Информация о моделиHugging Face, ServiceNow / 2023 SantaCoder: don't reach for the stars! Transformer Decoder / 1.1B Ещё одна open-source модель для кода с поддержкой Java, JS и Python. GPT-like, веса в формате float16, Byte-BPE (словарь 49К). При обучении используется Multi Query Attention (для ускорения с небольшими потерями качества) и Fill-in-the-Middle (FIM). FIM используется для обучения модели вставкам кода посередине:
В работе опробованы разные подходы к чистке данных:
Модели для CV Успех трансформеров в обработке текстовых последовательностей привёл к попыткам (вполне успешным) их применения для обработки изображений. В этом разделе собраны модели, использующие в своём составе элементы архитектуры Transformer и решающие различные задачи компьютерного зрения (CV): векторизация и классификация изображений, сегментация, детекция объектов и т.д. Image GPT Информация о моделиOpenAI / 2020 Generative Pretraining from Pixels Transformer Decoder / 76M, 455M, 1.4B, 6.8B Работа основа на GPT-2, ставится задача генерации качественных признаков для задач CV. В качестве токенов используются пиксели, для сокращения огромного размера контекста вход ограничивается разрешением 32х32, а 3 восьмибитных цветовых канала (3x256) аппроксимируются одним девятибитным (1x512). После предобучения на Causal LM проивзодится либо fine-tuning, либо обучение головы поверх выходов модели. ViT Информация о моделиGoogle / 2020 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale Transformer Encoder / 86M, 307M, 632M Популярная и часто переиспользуемая в дальнейшем работа на основе кодировщика трансформера. Картинка разбивается на квадраты, которые становятся токенами. Используется pre-LayerNorm, есть CLS-токен для предсказания класса картинки на предобучении, при дообучении голова заменяется на новую. На предобучении используются изображения в меньшем разрешении, на fine-tuning — в большем. С учётом фиксированности квадратов это приводит к более длинным последовательностям. В модели используются обучаемые позиционные эмбеддинги, при увеличении длины последовательности используется их 2D-интерполяция с учётом позиции квадрата. DeiT Информация о моделиFacebook, Sorbonne University / 2020 Training data-efficient image transformers & distillation through attention Transformer Encoder / 5M, 22M, 86M Идея в дистилляции в ViT любой более крупной модели, в т.ч. CNN. На обучении в ViT добавляется похожий на CLS токен дистилляции, который предсказывает не верный ответ, а ответ большой модели. На выходе добавляется линейная голова. BEiT Информация о моделиMicrosoft, Harbin Institute of Technology / 2021 BEiT: BERT Pre-Training of Image Transformers Transformer Encoder / 86M, 307M Ещё одна модель для CV на основе кодировщика. Изображение разбивается на квадраты 14х14, для каждого квадрата формируется два представления:
В VAE 8К токенов-векторов, модель учится заранее или берется чужая (DALL-E). BEiT предобучается на Masked Image Model (MIM): на входе векторы пикселей, для масокированных токенов предсказываются их векторы представлений VAE. Далее fine-tuning на целевую задачу или сеть-адаптер. Swin Transformer Информация о моделиMicrosoft / 2021 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows Transformer Encoder / 29M, 50M, 88M, 197M По аналогии с ViT изображение разбивается на квадраты-токены, преобразуемые в векторы, которые подаются на вход кодировщику. На входе квадраты имеют размер 4х4 пикселя, далее они постепенно сливаются и увеличиваются. При слиянии векторы квадратов конкатенируются, и размерность результирующего вектора понижается. При обработке квадратов используется локальный self-attention, что делает сложность подсчёта линейной по числу пикселей. В модели используются парные блоки кодировщика трансформера для реализации внимания со сдвигом. В первом блоке разбиение на наборы квадратов для локального внимания равномерное. Во втором блоке делается сдвиг, чтобы друг на друга смогли посмотреть другие квадраты. Позиционные эмбеддинги представлены обучаемой матрицей скаляров (как в T5). Модель предобучается на задачу классификации изображений. Swin Transformer V2 Информация о моделиMicrosoft / 2021 Swin Transformer V2: Scaling Up Capacity and Resolution Transformer Encoder / 658M, 3B Вторая версия модели призвана решить проблемы первой:
Предлагаются следующие изменения:
Модель предобучается классификацию небольших изображений (для скорости). Дообучается на классификацию более больших (но в меньшем количестве). Дообучается и на другие дискриминативные задачи на разных датасетах. При обучении используется сохранение только чекпойнтов активаций (меньше потребление памяти, дольше обучение) и ZeRO. CLIP Информация о моделиOpenAI / 2021 Learning Transferable Visual Models From Natural Language Supervision Transformer Encoder + Transformer Decoder (Image + Text) / 150M, 426M Основная идея работы в получении zero-shot классификатора изображений, работа которого регулируется промптами. Модель состоит из двух кодировщиков, один для изображений (ResNet с вниманием или ViT) и один для текста (GPT-2). Их выходы агрегируются в один вектор для изображения и один для текста. На этапе обучения между векторами считается близость и CE-лосс по батчу пар изображение-текст описания. На этапе инференса подаётся N текстов-промптов вида "это собака/кот/машина/...", вектор изображения умножается на векторы всех промптов и ответ выбирается по лучшему значению. У GPT-2 токенизация byte-level BPE (словарь 49K), длина последовательности 76. Близость между векторами для стабильности обучения умножается на exp(t), где t — обучаемый параметр. Модель в zero-shot работает хорошо, но только на тех доменах и классах, которые видела при обучении. ViTMAE Информация о моделиFacebook / 2021 Masked Autoencoders Are Scalable Vision Learners Transformer Encoder / 86M, 304M, 632M В данной работе предлагается решать задачу маскирования, сделав её сопоставимой по сложности с MLM для текстов. Изображение разбивается на квадраты, как в ViT, 75% квадратов равномерно случайно маскируются (это ещё и ускоряет обучение). Кодировщик получает на вход только немаскированные квадраты (если подавать их, перемежая векторами масок, то качество падает). Декодеровщик (тоже ViT, но маленький, 10% от кодировщика), получает выходные представления кодировщика вместе с масками и должен восстановить всё, предсказывая пиксели маскированных квадратов. Эта задача оказалась лучше предсказания токенов-векторов из BEiT / DALL-E. После обучения декодировщик удаляется. При дообучении размораживается только часть блоков кодировщика вплоть до одного последнего. PoolFormer Информация о моделиSea AI Lab, National University of Singapore / 2021 MetaFormer Is Actually What You Need for Vision Transformer Encoder / 12M, 21M, 31M, 56M, 73M Ещё одна работа по кодированию изображений. Как и в прочих работах, изображение разбивается на квадраты, преобразуемые в токены-векторы. Векторы проходят 4 этапа обработки, на каждом квадраты сливаются с понижением размерности, происходит уменьшение числа токенов и изменение их размерности (по аналогии с Swin Transformer). Attention заменяется на простой пулинг между соседними токенами в окне размера 3-7, число токенов сохраняется за счёт паддинга. GeLU вместо ReLU, GroupNorm c числом групп 1 вместо LayerNorm. Предобучение на задачу классификации. ConvNeXt Информация о моделиMeta, Berkeley University / 2022 CNN / 29M, 50M, 89M, 198M, 350M Строго говоря, модели этого типа не являются трансформерами, скорее, это CNN (в данном случае ResNet-50), улучшенные с помощью техник из Swin Transformer. Изменения:
VAN Информация о моделиTsinghua University, Nankai University / 2022 Transformer Encoder / 4M, 14M, 27M, 45M, 60M, 90M, 200M Учёт информации в последовательности может производится свёртками (локальный контекст) или self-attention (глобальный контекст). Учитывать глобальный контекст также можно большими свёртками, но это вычислительно затратно. VAN основывается на идее использования больших свёрток с их декомпозицией в тройки более легковесных. Нейросеть на входе получает целое изображение, как в CNN. Свёртки дают веса attention (без softmax) за О(n), которые умножаются на вход, в остальном используется обычный блок кодировщика трансформера с нормализацией BatchNorm. Используется оследовательное уменьшение разрешения входов блоков (как в Swin Transformer) с увеличением количества каналов. ConvNeXt V2 Информация о моделиKAIST, Meta / 2023 ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders CNN / 4M, 5M, 9M, 16M, 29M, 89M, 198M, 659M Вторая версия ConvNeXt тоже основана на CNN. Идея обучения основана на Masked AE с иерархическим кодировщиком (как в ViTMAE), но в качестве базовой архитектуры используется ConvNeXt. Изображение разбивается на квадраты 32х32, 60% квадратов маскируются и подаются в иерархический ConvNeXt в понижением размерности. В ViTMAE на вход кодировщику идут только немаскированные квадраты, с CNN так не получится — нужно сохраняться 2D-структуру входа. При этом использовать какие-то обучаемые токены-маски не хочется — это портит качество, и на инференсе масок нет. Поэтому маскировать предлагается использованием разреженного представления изображений и разреженными свёртками на них, которые покрывают только нужные районы пикселей. Обученные разреженные свёртки конвертируются в обычные после обучения. В качестве декодировщика используется один плоский блок ConvNeXt, на выходе все пиксели, лосс обучения — MSE на маскированных блоках пикселей. У первой версии ConvNeXt были проблемы:
В качестве решения в новой версии предлагается использовать для карты признаков новый слой Global Response Normalization (GRN). Для это сперва вычисляется величина gx, равная L2-норме матрицы карты признаков для канала (аналог пулинга). Далее nx, равная отношению gx и его среднему по каналам (относительная важность канала). После этого итоговое преобразование получается по формуле (преобразование + сдвиг + residual connection)
Параметры и — обучаемые. GRN используется и при предобучении, и при дообучении, качество получается выше. Модели для генерации изображений по тексту и изображениям В этом блоке собраны модели, собравшие больше всего хайпа в 2022 году до релиза ChatGPT: генераторы изображений по текстовым описаниям. На текущий момент в области доминируют диффузионные модели в связке с трансформерами, они позволяют не только генерировать изображения, но и изменять их содержимое или повышать разрешение. Diffusion Models на пальцах
DALL-E Информация о моделиOpenAI / 2021 Zero-Shot Text-to-Image Generation VAE + Transformer Decoder / 12B Работа выполняется в два этапа: сперва обучаются токены для изображений, после чего выучивается совместная генеративная модель на текстах и изображениях. На первом этапе обучается dVAE, в котором изображение переводится из пространства 256x256x3 в 32x32xdim и обратно, где dim — размерность вектора скрытого представления. Всего таких векторов-токенов 8192, они дальше и используются в модели. В качестве основной модели используется декодировщик Sparse Transformer. На вход подаются токены текста и токены изображения, модель выучивает совместное распределение (Causal LM) и после может генерировать по тексту токены изображения. По этим же токенам dVAE генерирует изображение. Вес лосса на текстах 1/8, на токенах изображения — 7/8. У текстовых токенов эмбеддинги обычные и позиционные, у токенов изображений — обычный, позиционный по столбцу и позиционный по строке. Максимальная длина последовательности текстовых токенов 256, токенизация BPE (словарь 16К). Используется несколько видов self-attention:
Для регуляризации используется BPE дропаут для токенов текста при обучении. Основная часть весов и активаций в float16, иногда для стабильности (например, в residual connections) делается переход в float32. GLIDE Информация о моделиOpenAI / 2021 GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models 2 x [U-Net + Transformer Encoder] / 3.5B + 1.5B Диффузионная модель (DM), работающая на уровне пикселей, с текстовым управлением. Основана на архитектуре U-Net со свёртками, внимание и residual connection. В работе используются разные подходы к управлению генерацией. Среднее предсказываемого шума можно смещать в сторону градиента заданной функции от текста, сила смещения определяет trade-off между качеством и разнообразием. Тип управления зависит от используемой функции, варианты:
CLIP (ViT Large) учится на изображениях с разным уровнем шума для адекватности векторов. Модель композитная, состоит из диффузионной модели с текстовым контролем на изображениях 64х64, кодировщика текстовых промптов для этой модели и upscale диффузионной модели для повышения разрешения результата первой модели до 256х256. Тексты инкорпорируются в модель так:
Помимо генерации с нуля модель умеет дорисовывать изображения в отмеченном маской регионе в соответствии с заданным текстовым условием. При обучении этому
Latent Diffusion [Stable Diffusion] Информация о моделиCompVis [Stability AI] / 2021 [2022] High-Resolution Image Synthesis with Latent Diffusion Models U-Net + VAE + Transformer Encoder / 170M-400M, 1.45B Основная идея в том, что диффузионная модель, работающая в пространстве пикселей, сперва обучается переводить всё в латентное более низкоразмерное представление, после уже работает в нём. Поэтому имеет смысл сразу учить её в таком пространстве, а не на пикселях. Для этого обучается две модели:
Автокодировщик учится в стиле GAN с дискриминатором на его результатах, применяется дополнительная регуляризация на близость представлений к стандартному нормальному распределению. Условная генерация может производиться на основании текстов, изображений, семантических карт. Любой из этих объектов должен кодироваться своей моделью-кодировщиком в один или несколько векторов. Результат идёт в каждый шаг декодирования DM в латентном пространстве: если условие вектор, то он конкатенируется с латентным вектором на входе шага, если последовательность векторов — то используется в cross-attention на разных слоях U-Net. Для текстов промптов используется текстовый кодировщик из CLIP. Обучается общая модель для разных задач: text-to-image, coloring, inpainting, super resolution. DALL-E 2 (unCLIP) Информация о моделиOpenAI / 2022 Hierarchical Text-Conditional Image Generation with CLIP Latents 3 x U-Net + Transformer Encoder + Transformer Decoder / 3.5B + 700M + 300M + 630M + 1B Общий процесс работы новой версии DALL-E следующий
Декодировщик основан на тех же принципах, что и GLIDE:
Декодировщик (основная DM) генерирует изображение 64х64, параллельно учатся две повышающие модели 64 -> 256 -> 1024. Повышающие модели при обучении обуславливаются на повреждённые картинки, с нормальным размытием и шумом, это улучшает качество их работы. При обучении основной DM используется classifier-free guidance: CLIP-вектор текста зануляется в 10% случаев, текстовый промпт удаляется в 50% случаев. Prior-модель может быть либо авторегрессионной, либо тоже диффузионной, DM работает лучше при аналогичных размерах моделей. Imagen Информация о моделиGoogle / 2022 Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 3 x U-Net + Full Transformer / 2B + 600M + 400M + 11B В основе Imagen лежит идея о том, что рост размера текстового кодировщика может привнести в генеративную модель больше, чем рост размера DM. Поэтому CLIP был заменён на обычную T5-XXL, которая выдаёт набор эмбеддингов, отправляемых в cross-attention всех обучаемых DM. Их, как в других работах, используется три: одна основная, две повышающие разрешение (64 -> 256 -> 1024). Основное изображние получается из шума, обусловленного на вектор текста, повышающие разрешение модели при обучении обуславливаются на повреждённые изображения с нормальным размытием и шумом. Для контроля генерации используется classifier-free guidance, векторы текста зануляется в 10% случаев. Сама базовая архитектура U-Net в работе была оптимизирована по скорости работы и потребляемой памяти. Модели для генерации текста по тексту и изображениям Модели этого раздела обычно называют мультимодальными, они генерируют текст, но при этом могут принимать на вход и анализировать данные разной природы. Чаще всего это тексты и двумерные изображения, но иногда могут обрабатываться и сложные описания сред и сцен. Выходной текст при этом может быть как языком, так и набором команд, например, для робота. SimVLM Информация о моделиGoogle / 2021 SimVLM: Simple Visual Language Model Pretraining with Weak Supervision Full Transformer / 86M, 307M, 632M На входе кодировщика токены изображения и токены префикса текста описания, на выходе декодировщика предсказываются токены суффикса текста описания (Prefix LM). Изображение разбивается на квадраты и векторизуется с помощью CNN (три первых блока ResNet). У токенов изображения и текста на входе свои обучаемые позиционные эмбеддинги. Ко всем токенам применяется обычный self-attention. У токенов изображений дополнительно есть относительный 2D attention в блоке кодировщика. Модель предобучается одновременно на 800Гб текстов и 1.8 миллиардах пар изображений и их описаний. Дообучение производится на 6 задач с настройкой всех параметров модели. Словарь 32К, максимальная длина последовательности 256 и для кодировщика, и для декодировщика. Изображения на входе имеют разрешение 224х224, разбиение производится на квадраты 14х14. CoCa Информация о моделиGoogle / 2022 CoCa: Contrastive Captioners are Image-Text Foundation Models Transformer Encoder + Transformer Decoder / 86M + 297M, 303M + 484M, 1B + 1.1B Отдельный кодировщик для изображений (ViT или CNN) + общий декодеровщик, в котором первая половина обрабатывает текст, вторая — совместно текст и выход кодировщика изображений. Изображение 288х288 нарезается на квадраты 18х18, которые кодировщик переводит в векторы + общий вектор из attention pooling на основе всех этих векторов. На выходе первой половины декодировщика векторы текста и вектор CLS токена в конце последовательности, токенизация SentencePiece (словарь 64К). Векторы текста и изображения объединяются во второй части декодировщика через cross-attention. Используются два лосса с весами 1 и 2 соответственно:
При дообучении можно замораживать кодировщик изображений и доучивать тольуо attention pooling. BEiT-3 Информация о моделиMicrosoft / 2022 Image as a Foreign Language: BEiT Pretraining for All Vision and Vision-Language Tasks Transformer Encoder / 1.9B Использование MoE на основе полносвязных слоёв для изображений, текстов и пар изображений-текстов. Модель состоит из блоков кодировщика трансформера:
Изображения 224х224 нарезаются на квадраты 14х14, применяются аугментации: обрезка, растяжение, изменения цветов. Токенизация текста SentencePiece (словарь 64К). Модель предобучается на задачу Masked Data Modeilng (аналог MLM) на 21М пар изображение-текст, 14М изображений и 160Гб текстов. Flamingo Информация о моделиDeepMind / 2022 Flamingo: a Visual Language Model for Few-Shot Learning CNN + Transformer Decoder / 630M + 3.2B, 630M + 9.3B, 630M + 80B Flamingo — предобученные кодировщик изображений и большая языковая модель (Chinchilla), которые замораживаются и дополняются обучаемыми параметрами. Формат входа языковой модели "<img> текст <img> текст ...", соответствующие токенам <img> изображения же идут на вход кодировщику. Изображения кодируются NormalizerFree ResNet, 2D выходы переводятся в одномерные, видео переводится в фреймы, каждый кодируется в 2D + обучаемый эмбеддинг времени, после чего всё тоже переводится в одномерные векторы. На выходах кодировщика изображения ставится Perceiver Resampler, который преобразует любую последовательность векторов в набор из 64 векторов. Для этого входы идут в обучаемый слой cross self-attention, где переводятся в ключи и значения, а запросы получаются из 64 обучаемых латентных векторов. Результирующие 64 вектора проходят через полносвязные слои и после идут в языковую модель. В LLM между замороженными слоями добавляются новые блоки следующего вида:
В декодировщике токен текста может смотреть в self-attention только на токены текста до него и токены только последнего до него изображения (не на все), это позволяет обобщение на разное число изображений в одном сэмпле. В разных версиях модели обучаемые слои добавляются в LLM после каждого 1-го, каждого 4-го и каждого 7-го замороженного слоя. Модель учится на Prefix LM (по всему входу предсказать текстовый суффикс). Используются model параллелизм и ZeRO. Все обучаемые параметры в float32, все активации, градиенты и замороженные параметры в bfloat16. PaLI Информация о моделиGoogle / 2022 PaLI: A Jointly-Scaled Multilingual Language-Image Model Transformer Encoder + Full Transformer / 1.8B + 1.2B, 1.8B + 13B, 3.9B + 13B Обычный подход с кодировщиком изображения (своя версия ViT большего размера и с доработками) и текстовой моделью (mT5) с cross-attention на выходы кодировщика изображения. ViT учится на изображениях 224x224, большая модель дообучается дополнительно на 588х588. Далее модель замораживается, в основном обучении настраивается только mT5. Задачи основного предобучения (кросс-язычные, если это возможно):
Все задачи, кроме MLM обучаются с текстовыми промптами ("Generate OCR ..."). По сути во всех задачах Prefix LM — предсказать по общему входу текстовый суффикс. Gato Информация о моделиDeepmind / 2022 CNN + Transformer Decoder / 79M, 364M, 1.2B Идея: модели плохо обобщаются на задачи, не похожие на те, что они видели при обучении, поэтому лучше учить на максимально большой набор задач. Все типы данных кодируются и подаются на вход в одной последовательности-промпте. Способы кодирования зависят от данных:
Для не-изображений обучаются матрица эмбеддингов и позиционные эмбеддинги. Для квадрата изображения эмбеддинг получается из ResNet, к нему обучается эмбеддинг позиции в изображении. Примеры типов задач: ведение диалога, управление манипулятором робота, игры Atari, описание изображений. Для игр Atari входом является изображение-состояние игры, происходит предсказание действия, после чего всё повторяется с уже следующим состоянием. Везде обучение ведётся на Prefix LM. Максимальная длина последовательности 1024. При инференсе используется подход из Transformer-XL для увеличения длины. BLIP-2 Информация о моделиSalesforce / 2023 2 x Transformer Encoder (Image + Q-former) + [Transformer Decoder | Full Transformer] / 300M + 190M + 2.7B, 300M + 190M + 3B, 1B + 190M + 2.7B, 1B + 190M + 3B, 1B + 190M + 6.7B, 1B + 190M + 11B В работе предлагается заморозить предобученные кодировщик изображение и LLM, а между ними поместить обучаемый блок (Q-former), который будет "переводить" изображение и текст промпта для LLM, генерирующей итоговые ответ. Q-former извлекает из изображения фиксированное количество векторов (в работе 32) за счёт обучения заданного количества векторов-запросов Q, он состоит из блоков следующего вида
Всего в Q-former ~190M параметров, включая сами векторы-запросы. Предобучение производится в два этапа: кодировщик изображения + Q-former и они же + декодировщик. Задачи первого этапа:
Итоговые Q проецируются обучаемым полносвязным слоем в размерность LLM. Они ставятся перед токенами промпта, и вся последовательность становится входом декодировщика. Декодировщик может быть либо GPT-like, либо T5-like моделью, что определяет задачу: генерация текста по изображению или генерация суффикса текста по изображению и тексту-префиксу. Для обучения использовались как реальные пары изображение-текст, так и с синетическими подписями. Изображения кодируются в разрешении 224x224 моделью типа CLIP ViT без последнего слоя, в качестве LLM используются OPT и Flan-T5. Замороженные веса хранятся в float16 / bfloat16. PaLM-E Информация о моделиGoogle / 2023 PaLM-E: An Embodied Multimodal Language Model Transformer Encoder + Transformer Decoder / 4B + 8B, 22B + 62B, 22B + 540B Модель в целом схожа с GaTo. Изображения кодируются ViT, выходные векторы с векторами токенов текстов и команд подаются в PaLM, генерирующую выходные тексты. Кодируемые объекты:
Во всех задачах используется Prefix LM, задачи: VQA, object detection, robot manipulation. GPT-4 Информация о моделиOpenAI / 2023 Transformer Decoder + (?) Закрытая модель с небольшим количеством известных деталей. Предположительно декодер с sparse attention и мультимодальным входом. Авторегрессионное обучение, дообучение на RLHF, длина последовательности в моделях от 8K до 32К. Протестирована на сдаче человеческих экзаменов в zero- и few-shot, многое сдаёт на уровне людей. Решает задачи по картинке (в т.ч. математику) как и другие ММ-модели, как сразу, так и пошагово, понимает и объясняет картинки, анализирует и генерирует код. Работает на разных (в т.ч. low-resources) языках. Kosmos-1 Информация о моделиMicrosoft / 2023 Language Is Not All You Need: Aligning Perception with Language Models Transformer Encoder + Transformer Decoder / 300M + 1.3B Относительно небольшая мультимодальная модель с кодировщиком для изображений и декодировщиком трансформера для генерации. Для фиксации количества токенов одного изображения используется Resampler из Flamingo. Декодировщик основан на архитектуре трансформера Magneto. Для кодирования позиций используются xPos эмбеддинги. Формат входа (всё в виде векторов): "<s> Text1 <image> Image1 </image><image> Image2 </image> Text2 ... </s>". Данные: тексты, изображения, пары текст-изображение, тексты со вставками изображений. Модель учится Prefix LM: по мультимодальному входу с частью текста предсказывать оставшийся текст. Обучение инструкциям встроено в процесс основного обучения (~120K сэмплов), сэмплы только текстовые. Изображения 224x224 кодируются предобученным и замороженным до последнего слоя CLIP ViT. Максимальная длина последовательности 2048, токенизация SentencePiece (словарь 64К). Модели для анализа звука и ASR В финальном блоке собраны модели для ASR. Как правило, они основаны на предобучении на неразмеченных данных для генерации эффективных признаков с последующим дообучением на разметке под целевые задачи (ASR, перевод речи, определение языка). В обработке звуковых дорожек активно применяется связка CNN и кодировщика трансформера: свёрточная сеть (или отдельные слои) используются для извлечения локальных признаков, а трансформер (self-attention) отвечает за глобальную обработку в рамках всей последовательности аудиофреймов. Conformer Информация о моделиGoogle / 2020 Conformer: Convolution-augmented Transformer for Speech Recognition Conformer (Transformer Encoder + CNN) / 10M, 30M, 118M В работе предлагается блок Conformer, представляющий собой блок трансформера со встроенным свёрточным блоком. Составные части:
Блок Conformer представляет собой цепочку 0.5 * FF-модуль + Attention-модуль + CNN-модуль + 0.5 * FF-модуль, все с residual connection, сверху LayerNorm. Итоговая модель (снизу вверх):
T-T Информация о моделиMicrosoft / 2020 Developing Real-time Streaming Transformer Transducer for Speech Recognition on Large-scale Dataset Conformer (Transformer Encoder + CNN) + LSTM / 80M Развитие Conformer. Входной сигнал (акустические признаки) нарезается на фреймы, которые подаются на вход кодировщику с блоками Conformer (с небольшими изменениями). Позиционное кодирование относительное (lookup-таблица), вектор от индексов i и j прибавляется к векторам ключей в self-attention. В силу длины последовательностей нужно уменьшать область работы внимания:
Поверх выходов LSTM-предиктор предсказывает вектор ответа на текущем фрейме на основании предыдущего ответа, этот вектор суммируется с выходом кодировщика. Полученный вектор идёт в полносвязный слой и softmax, из которого предсказывается ответ для текущего фрейма. Для оптимизации используется кэширование ключей и значений и обработка блока фреймов за раз за счёт небольшой задержки предсказания для отдельных фреймов этого блока. Wav2Vec2 Информация о моделиFacebook / 2020 wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations CNN + Transformer Encoder / 95M, 317M Идея в предобучении на неразмеченных записях в стиле BERT с дообучением на размеченных. На входе модели центрированный сырой WAV сигнал, к которому применяются temporal convolution + LayerNorm + GeLU для получения латентных векторов на его частях. К результату применяется CNN (позиционное кодирование) с GeLU. Выход CNN складывается со скрытыми векторами, и всё через LayerNorm идёт к кодировщик трансформера. Для обучения нужен как-то unsupervised таргет. Для этого используются квантизованные представления, получаемые с помощью модуля квантизации:
Задача предобучения:
Fine-tuning:
Модель показывает бьёт конкурентов при обучении на аналогичных объёмах данных. Но основное достижение в том, что с относительно небольшими потерями можно сокращать объёмы размеченных данных на этапе дообучения в 10-1000 раз. XLSR Информация о моделиFacebook / 2020 Unsupervised Cross-lingual Representation Learning for Speech Recognition CNN + Transformer Encoder / 95M (?), 317M Wav2Vec2, обученная на мультиязычных данных для повышения качества:
Hubert Информация о моделиFacebook / 2021 HuBERT: Self-Supervised Speech Representation Learning by Masked Prediction of Hidden Units CNN + Transformer Encoder / 95M, 317M, 964M Модель, идейно схожая с Wav2Vec2: учится для маскированных фреймов предсказывать представления, полученные с помощью другого метода. Архитектура:
Обучение в 2 этапа: учится K-means и затем на нём учится основной кодировщик. Первый этап (K-means):
Второй этап (кодировщик):
Этапы повторяются итеративно, начиная со 2-й итерации обучение K-means производится не на векторах MFCC-признаков, а на векторах представлений с промежуточного слоя последней версии кодировщика. Разбиение на два этапа упрощает и стабилизирует обучение, больше не требуется сложный лосс, как в Wav2Vec2. Предобученная модель дообучается (с замороженной CNN) на размеченных записях. XLS-R Информация о моделиMeta / 2021 XLS-R: Self-supervised Cross-lingual Speech Representation Learning at Scale CNN + Transformer Encoder / 317M, 965M, 2162M Ещё одна попытка обучить Wav2Vec2 на мультиязычных данных:
Whisper Информация о моделиOpenAI / 2022 Robust Speech Recognition via Large-Scale Weak Supervision CNN + Transformer Encoder + Transformer Decoder / 39M, 74M, 244M, 769M, 1550M На текущий момент одно из лучших открытых решений для распознавания речи, которое стоит несколько в стороне от предыдущих работ этого раздела. Ключевые идеи:
Сбор и подготовка данных для Whisper:
Архитектура модели:
Задачи обучения (используется универсальный входной формат для всех):
При обучении используется data-параллелизм и чекпойнты активаций, формат данных float16. Заключение Ниже короткие выводы из представленного материала. Они могут быть смещёнными, неполными или просто неверными, лучше анализировать самостоятельно. Но если компетенция в области пока не позволяет, и хочется с чего-то начать, то отталкиваться можно от моих мыслей.
Спасибо за внимание и успехов! Мурат Апишев, руководитель NLP RnD команды в Just AI. Спасибо компании Just AI и моим коллегам за поддержку, благодаря которой статья была написана, а также Екатерине Артёмовой за рецензирование итогового материала и ценные комментарии. Источник: habr.com Комментарии: |
|