Приближаем сингулярность
963 subscribers
79 photos
2 videos
57 links
Про AI, стартапы, и не только

По всем вопросам писать @leshanbog
Download Telegram
Усреднение весов моделей улучшает качество

Статья с ICML 2022 с супер понятным названием:
"Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time".
Всё, как и написано: усреднили веса, получили профит.

Усреднять лучше не все имеющиеся модели (uniform soup), а только те, которые добавляют качество на валидации, причем пытаться добавлять сначала те, которые имеют лучшее качество (greedy soup). Метрики на тесте выходят лучше, чем у отдельно взятых моделей, а работает так же быстро. Обучать дополнительно ничего не надо, так как все делают hyperparameter search.

Качество, кстати, получается хуже, чем у ансамбля, но ансамбль и инферить в k раз дольше; а тут одна модель.
1🔥1
Вторая картинка хорошо визуализирует, почему такое усреднение может работать. Тут кажется важным, что два набора весов находятся около одного и того же минимума. Поэтому, например, усреднять веса моделей, которые были по разному инициализированы, представляется не такой разумной затеей)

Получили профит относительно похожих бейзлайнов: дистилляция ансамбля, SWA (усреднение чекпоинтов вдоль одной траектории обучения), SAM (модифицированный оптимизатор, который ищет wide минимумы функции потерь).

В основном эксперименты были с CV сетками, но и про NLP кое что есть (не делает хуже, иногда немного лучше).

Много классных визуализаций и огромный аппендикс с кучей графиков, даже страшные формулы есть для любителей)

Paper
👍21🔥1
Диалоговая модель для Goal-Oriented & Open-Ended разговоров

Исследователи из Microsoft выложили в открытй доступ модели (220M, 770M, 2.7B) и код для их предобучения. Подчеркивают, что модель подходит и для chitchat'а, и для task-oriented режима (за счет добавления внешнего знания)

Предобучаются в 3 стадии:
1. На куче веб документов, чтобы модель научилась базовой генерации текста
2. На обычных диалогах (reddit), чтобы улучшить способности к общению
3. На grounded диалогах, чтобы научить модель использовать внешнюю информацию

Это особенно хорошо улучшило им метрики в low resource сетапе (файнтюн на 50 примерах) для ConvQA и подобных задач.

Разделили оценку качества модели на intrinsic (насколько ответы человечны) и extrinsic (насколько ответы полезны для пользователя). В последнем у асессоров больше согласия, то есть метрика более надежная.

Paper; Blogpost
👍6🤯2🔥1
Приближаем сингулярность
Диалоговая модель для Goal-Oriented & Open-Ended разговоров Исследователи из Microsoft выложили в открытй доступ модели (220M, 770M, 2.7B) и код для их предобучения. Подчеркивают, что модель подходит и для chitchat'а, и для task-oriented режима (за счет добавления…
Созданный учеными искусственный интеллект выходит из под контроля

Если вам захотелось заценить GODEL 2.7B модель, то я как раз поднял с ней демо на gradio : https://38340.gradio.app (она уже не работает, но если вам очень надо, пишите в личку)

Судя по примеру на скриншоте, присутствуют некоторые проблемы с конторлем через внешнюю инфу. Очевидный знак того, что AGI будет не остановить и он захватит мир (нет :))
🤯4👍21
Как генерировать более фактологический текст?
Factuality Enhanced Language Models for Open-Ended Text Generation

Есть проблема, что модель начинает выдумывать несуществующие факты. В статье предложили:
- автоматический способ оценки этого, провалидировали людьми и получили хорошую корреляцию
- метод генерации и дообучения, которые позволяют найти более хороший трейдофф между фактологичностью (factuality) и качеством (generation quality, в которую входят fluency, diversity, etc) ответа

Некоторые хайлайты и мысли:
- Жадная генерация относительно семплинга имеет бОльшую factuality, но меньшую generation quality
- Чтобы что то улучшить, хорошо бы уметь это замерять 🙂
- NLI и NER модели могут быть полезны для оценки groundness моделей; особенно если ground truth внешняя информация известна
- “Начинать интересно, продолжать уместно” - в начале генерации температуру / top-p можно делать побольше, а в течение генерации уменьшать. Так ответы будут начинаться разнообразно, но вторая половина будет не такой случайной. В итоге сохраним factuality и улучшим generation quality
- Хорошего датасета недостаточно: обычное дообучение на Википедии не улучшило фактологичность, а их метод - улучшил
- Идея по улучшению фактологичности. Разбить словарь на две части: factuality-related токены (например числа, именованные сущности) и остальное. Во время обучения лосс на первой части домнодать на коэффициент больше единицы. Во время генерации смешивать жадную вероятность над первой группой токенов и семплинг над второй. Как думаете, будет работать?)

Paper
👍5🤔3🤯2
Retrieval-based NLP

Классный пост от Stanford AI Lab. Приводят аргументы, почему retrieval-based подход в NLP это круто. Ниже коротко их тезисы.

Проблемы текущих моделей:
- Гигантские - тяжело, долго и дорого обучать и применять
- Сложно обновлять их знания, требуется дорогостоящее дообучение (модели же гигантские)
- Модель - black box. Неясно, какой документ повлиял на её ответ. А может она вообще сгенерировала ложный факт

Как retrieval-based подход чинит это:
- Разъединяет способность манипулировать (понимать и использовать) текстом и запоминание фактов. Хранение фактов в индексе, а не неявно в весах, позволяет с меньшим числом параметров получать то же качество. Кстати, вот цитата из недавнего поста от DeepMind про их retrieval-based модель RETRO: “7.5 billion parameter RETRO model outperforms the 175 billion parameter Jurassic-1 on 10 out of 16 datasets and outperforms the 280B Gopher on 9 out of 16 datasets”
- Адаптировать модель к новым фактам - просто обновить индекс
- Можно видеть, на основе какого документа был сгенерирован ответ

В посте нет про проблемы retrieval-based NLP, поэтому накину)
- Нужна не только способность манипулировать текстом, но и способность искать информацию в индексе. То есть, вместо одной модели получается как минимум две
- Как понять, что документ был использован, а не проигнорирован? Проблема интерпретации все ещё остается
- Ну и главная проблема для практиков: пока нет способа завести на любой задаче из коробки и получить профит. Значит, есть над чем работать)
👍4🤔2🔥1
Наткнулся на удобную тулзу, чтобы понимать, что делает конерктная bash команда: https://explainshell.com/

Прикрепил пару собственных юскейсов. Выглядит хорошо и удобна в использовании :)
👍8
Улучшение диалоговой модели за счет фидбека пользователей

Вместе с нашумевшей статьей про BlenderBot 3, чуваки из $<&^ %@ опубликовали пару сопутствующих.

В этой они исследуют, как можно получать профит от различного фидбека пользователей:
- бинарный лейбл на ответ модели (понравилось / не понравилось)
- текстовый фидбек в свободной форме на плохой ответ
- исправление одного из
1. запрос в поиск
2. выбор предложений из результатов поиска
3. финальный ответ

Сравнили разные подходы к дообучению моделей для каждого из типов фидбека. Для бинарных лейблов, например, пробовали:
- generate моделью + rerank обученным классификатором
- нагенерили моделью n кандидитов, проскорили их классификатором, и сделали supervised обучение генератора на топ-1 ответах модели
- DIRECTOR - 2 головы у трансформера (LM + classification) со смешиванием вероятностей

Для реальных приложений это самый релевантный кейс. Жаль, что не добавили такой бейзлайн: обычный MLE на позитивных ответах и, опционально, unlikelihood training на негативных.

На скрине human evaluation. Рекомендую посмотреть twitter пост с выводами.

Paper
👍8🔥41
Google объединил self-supervised NLP подходы и получил профит на 50 задачах

Обычно GPT-like (только декодер) модели обучаются на Language Modeling (LM), энкодер-декодер - на Span Corruption (SC). Первая задача больше про экстраполяцию, вторая - про интерполяцию. Поэтому GPT умеет во few-shot и в целом лучше для генерации текстов, а условный T5 хорош в понимании классификации текста.

Ученые из гугла решили обучить модель, которая бы хорошо себя показывала на всех задачах (генерация, классификация, retrieval, QA, …) и в разных постановках (supervised дообучение, zero/few - shot).

Обучали на миксе трех лоссов:
- S-denoiser - LM-like
- R-denoiser - SC
- X-denoiser - extreme SC: спаны длиннее и/или их больше

В итоге дообучение модели с таким претрейном дает им профит на большинстве из 50+ различных задач и постановок. То есть они двигают Парето границу качества, улучшая его по нескольким направлениям.

Ещё из интересного:
- Mode switching: обучали, добавляя токен задачи [R], [S] или [X]; на дообучении помогает подставлять соответствующий токен
- X-denoiser помогает, но его одного недостаточно (и много чего ещё в ablations)
-  Их модель UL2 20B получает профит от Chain of Thought промптинга. Это эмерджентное свойство не наблюдалось у моделей средних размеров (да, 20B - средний размер :) )
- Дают soft advice: используйте энкодер-декодер архитектуру (разделение весов); похуже: только декодер, но с bidirectional attention на префикс; ещё хуже - vanilla decoder only; encoder only - deprecated
- Веса UL2 20B в открытом доступе

Paper; Blogpost

Подписывайтесь: https://t.iss.one/building_singularity. Здесь больше интересных постов про AI :)
👍5🔥31
"Stable Diffusion" from NLP world

CarperAI - лаба внутри EleutherAI; проект, связанный с чуваками, которые релизили Stable Diffusion.

Так вот, эти CarperAI анонсировали, что в скором времени выложат в открытый доступ обученную ими Instruct-GPT. В статье от OpenAI генерации из 1.3B Instruct-GPT нравятся людям больше, чем из 175B GPT-3. Поэтому CarperAI выбрали этот метод дообучения (RL на фидбек людей).

К тому же они хотят её сделать "chinchilla-optimal": в DeepMind заметили, что модели часто обучаются на недостаточном количестве примеров относительно их огромного размера. И увеличение обучающего датасета помогло их 70B модели выиграть на разных бенчмарках у моделей в 175B, 280B и 530B параметров. Короче, обучать надо дольше)

В анонсе они сравнивают свой будущий релиз с релизом Stable Diffusion, и тоже надеются на вклад сообщества. Говорят, что нехорошо такие классные модели прятать за API, надо давать их людям. Доступная модель (это будет ещё и от её размера зависеть, кстати) + креативность большого количества людей = Net Positive

Интересно посмотреть, что из этого получится)

Анонс в твиттере
🔥9👍41
Как работает In-Context Learning (ICL)?

Интересный пост от Stanford AI Lab: https://ai.stanford.edu/blog/understanding-incontext. Они наводят теории для понимания ICL, показывают её состоятельность на синтетическом и реальных датасетах.

ICL это когда модель выполняет поставленную задачу (классификация, суммаризация, ...) без дополнительного обучения, то есть без обновления параметров. Это эмерджентное свойство обычно наблюдается у гигантских моделей после большого претрейна.

Авторы предлагают рассмотреть ICL как байсовский вывод латентной переменной (концепта), обуславливаясь на промпт, который делает возможным решение поставленной задачи. Этот нывык модель приобретает за счет того, что тексты в обущающем датасете связные и "держать у себя в голове" некий порождающий концепт оказывается полезным.

Они составили небольшой синтетический датасет, в котором их предположение верно (тексты определяются концептами, как на рисунке 1), обучили на нем трансформер и lstm, ICL возник в обоих случаях.

Далее, анализируя качество ICL классификации на реальных датасетах, они выделяют 4 аспекта:
- распределение x-ов
- распределение y-ов
- связь между x и y (является ли этот ответ y верным для данного x)
- формат

Из неожиданных выводов: оказалось, что связь между x и y не критична. То есть в промпте можно для x выбирать случайный y и от этого просадка в качестве будет небольшой (рисунок 2). Но важно показать модели то, как выглядят входы и какие существуют метки ответов. На языке их теории: модель робастна к шуму и может выводить нужный концепт из достаточно сильного сигнала из распределений отдельно x, отдельно y, и формата; все 4 аспекта излишни.

Интересно, если обучить относительно небольшую модель на синтетическом датасете, который способствует возникновению ICL, а потом дообучить на реальных данных, можно ли добиться того, что и в небольших моделях ICL будет хорошо работать?
🔥7👍3🤔1
Интерпретируемые текстовые эмбеддинги

Типичная модель для текстовых эмбеддингов считает близкими предложения типа "Два человека поют" и "Три человека поют". Это конечно верно для некоторых приложений, но, например, для оценки правдивости это совсем не так. Квантификаторы (все, некоторые, никто, ...), отрицания, числительные, собственные имена - здесь критически важны.

Авторы предложили обучать эмбеддинги через декомпозицию на интерпретируемые признаки (и неинтерпретируемый residual). В итоге можно вычислять близость текстов как по понятным аспектам, так и в целом. На рисунке 1 результат модели на примере "Два человека поют" и "Три человека поют" (в твиттер посте их ещё больше)

Как они это сделали?

Есть всякие меры близости текстов, которые используют парсеры предложений и последующее сравнение получившихся семантических графов. Они медленные и качество в целом не на уровне нейросетевых моделей близости. Авторы предложили взять 15 таких интерпретируемых функций и разделить финальный эмбеддинг на 16 частей: 15 под каждый из аспектов и 1 для всего остального, что осталось не представленно. Каждую аспектную часть они обучают приближать соответствующий долговычислимый graph-based признак (Score Decomposition), а в residual дистиллируют обычный sentence transformer (Score Consistency)

В итоге получается модель, эмбеддинги которой и быстро вычисляются, и могут быть интерпретируемы, и без просадки в качестве (рисунок 2)


Код для обучения, инференса и веса модели выложены на гитхаб 👍
Статья с ACL: Decomposing Sentence Embeddings into Explainable Semantic Features
Twitter post
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥61
SparseGPT: сжатие 175B модели в 2 раза без потери в качестве

Для широкого распространения моделей и последующих инноваций важно, чтобы модель можно было запустить на любом чайнике не имея 8xA100 GPU. Ещё желательно, чтобы эта сжатая модель работала так же хорошо, как и исходная.

Типичные способы достигнуть этого: дистилляция в меньшую модель-ученика, квантизация (например, преобразование весов и активаций в int8), прунинг (выкидывание части весов)

В статье предлагают метод прунинга, который
- работает на очень больших моделях
- позволяет сжать в 2 раза без потери в perplexity (левый график)
- не требует дообучения
- локальный, то есть работает с отдельными матрицами весов
- за 4 часа сжимает 175B модель

Также их метод умеет в structural sparsity - когда зануляются не произвольные веса, а согласно некоторому правилу. Например, 2:4 паттерн - в последовательных блоках из 4 элементов 2 элемента нули. Тензорные ядра в A100 работают с такими матрицами в 2 раза быстрее.

На правом графике видно, что чем больше модель, тем лучше она сжимается. Интересно, какая настоящая размерность числа параметров у этих сетей, если отбросить все лишнее 🤔

Подробности в статье
🔥10👍51
Тяжелое будущее промпт инженеров

Несколько раз слышал мнение, что в будущем промпт инженеры будут очень важны и нужны. Объясняю, почему мне так не кажется

Для понимания контекста: промпт - текст, который подается на вход в модель и сообщает ей, какую картинку или текст хочется получить на выходе. От него может сильно зависеть качество и типичная ситуация, когда добавление десятка слов типа trending on artstation, 4k, sharp focus и тд сильно улучшают привлекательность картинки. И это очень тупо, в иделе так быть не должно

Сейчас существуют сервисы, чтобы промпт инженеры могли зарабатывать. Вот, например, маркетплейс для промптов: https://promptbase.com/

Но ещё года полтора назад промпты для текстовых моделей выглядели так: надо было придумать несколько примеров, да ещё и
- либо очень хорошо понимать распределение, на котором нейросеть обучалась, и формулировать примеры в таком же стиле
- либо использовать язык шаблонов (как в этой статье про zero-shot трансфер стиля)

А сейчас научили текстовые модели следовать инструкциям и добиться желаемого ответа от них стало заметно проще. Что-нибудь анлогичное произойдет и с text-to-image моделями. И в принципе, работа по облегчению использования любых моделей (будущих text-to-video, например) вряд ли остановится. Такие вот дела :)
👍9🔥6