Начитался тут слухов про появление AGI, послушал выступление Andrej Karpathy и пошел читать исследования на тему Autonomous LLM-based Agents. На данный момент есть две большие работы (в сумме на 80 страниц 😢 ), обе вышли совсем недавно (август и сентябрь этого года): A Survey on Large Language Model based Autonomous Agents и The Rise and Potential of Large Language Model Based Agents: A Survey. Мне кажется направление очень интересное, и, как только LLM станут чуть сильнее, мы сможем оценить возможности агентов в полной мере, скорее всего без особых изменений в коде. Поэтому держим руку на пульсе. В скором времени хочу сделать обзор этой области: почему многие специалисты интересуются темой, что мы знаем сейчас о построении агентов, какие есть основные трудности, подходы к валидации и так далее. А пока поделюсь примерами, над которыми уже ведутся работы и идея которых мне нравится:
— Research Assistant. Агент, который может не просто полноценно анализировать статьи и делиться инсайтами, но и сам вести ресерч в некоторой области. Кстати говоря, это то, над чем активно работают OpenAI в направлении SuperAlignment.
— Personal Tutor. Уже сейчас есть помощники, которые помогают изучать материал. Хороший пример, который можно получить только за счет промптов — Ranedeer AI Tutor. А теперь представьте, что у агента помимо этого есть доступ к БД с полезными материалами, где-то он может объяснить тему на картинке, где-то — построить график, где-то — написать код. И объясняет он еще наиболее подходящим под ваш уровень образом.
— Social Simulation. Думаю, идея понравится социологам и вообще людям, которым интересны всякие социальные феномены. С помощью симуляций можно наблюдать за ситуациями, которые тяжело воспроизвести в реальной жизни (из-за самой ситуации или, например, из-за размера выборки).
— Embodied Intelligence. Просто знакомая всем идея про роботов, выполняющих определенные задачи. Tesla недавно показала прогресс по Optimus и, на мой взгляд, это очень крутые результаты для такого маленького срока (~1 год).
— Research Assistant. Агент, который может не просто полноценно анализировать статьи и делиться инсайтами, но и сам вести ресерч в некоторой области. Кстати говоря, это то, над чем активно работают OpenAI в направлении SuperAlignment.
— Personal Tutor. Уже сейчас есть помощники, которые помогают изучать материал. Хороший пример, который можно получить только за счет промптов — Ranedeer AI Tutor. А теперь представьте, что у агента помимо этого есть доступ к БД с полезными материалами, где-то он может объяснить тему на картинке, где-то — построить график, где-то — написать код. И объясняет он еще наиболее подходящим под ваш уровень образом.
— Social Simulation. Думаю, идея понравится социологам и вообще людям, которым интересны всякие социальные феномены. С помощью симуляций можно наблюдать за ситуациями, которые тяжело воспроизвести в реальной жизни (из-за самой ситуации или, например, из-за размера выборки).
— Embodied Intelligence. Просто знакомая всем идея про роботов, выполняющих определенные задачи. Tesla недавно показала прогресс по Optimus и, на мой взгляд, это очень крутые результаты для такого маленького срока (~1 год).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍1
Вчера Meta презентовали Meta Quest 3 — VR девайс последнего поколения, который поступит в продажу с 10 октября. Сегодня утром увидел ролик о колабе Meta и Kurzgesagt — команда собирается сделать образовательную игру, в которой игроки переносятся между пятью уровнями масштаба нашего мира (молекулярный, клеточный и т.д.), взаимодействуют с формами жизни и свойствами каждого измерения. Для тех, кто не знает, Kurzgesagt — канал на ютубе, уже 10 лет выпускающий классные ролики на тему медицины, космоса, философии и много чего еще. Очень неожиданный проект, на мой взгляд, но надеюсь, игра получится интересной, задумка крутая.
YouTube
Out of Scale - a Kurzgesagt Adventure | Coming Soon | Meta Quest 3
Coming this Fall to Meta Quest 3, the YouTube hit - Kurzgesagt - In a Nutshell, a fully immersive educational game that transforms the iconic look and feel of their 2D videos for users to explore and learn about the concept of scale. In addition to the core…
🔥9👍2💩2
Недавно пользователям стала доступна мультимодальная модель от OpenAI, которая может принимать на вход картинки - GPT-4V(ision). Захотелось потестить ее с разных сторон: как работает в плане OCR, может ли дететировать объекты, считать их, отвечать на детальные вопросы по текстовому промпту и так далее. А тут добрые люди скинули статью от Microsoft, где авторы упоролись и выкатили 150-страничную работу с детальным анализом модели: проверили на детекцию, анализ медицинских снимков, ориентацию в пространстве, мультимодальные знания, понимание доменных областей, понимание видео по серии кадров и мнооого чего еще. Можно залипнуть вечерком на пару часиков 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17
Небольшой обзор Mistral-7B.
Моделька сейчас на слуху, поэтому вот вам краткое саммари. Ребята из французского стартапа выкатили модель (лицензия Apache 2.0), которая побила LLaMa-2 7/13B на многих бенчмарках. Интересные особенности:
— Grouped-Query Attention (GQA). Прием, использующий 1 матрицу K и V на группу матриц Q. Это некоторое среднее между Multi-Head Attention и Multi-Query Attention.
— Sliding Window Attention (SWA). Модификация attention, при которой мы смотрим только на window_size (W) токенов назад. Важно, что токены за пределами окна тоже влияют на генерацию следующего, здесь можно провести аналогию с receptive field классических сверток.
— Rolling buffer cache. Изменение классического KV-cache для работы с SWA. Теперь кэш размера W и (key, value) для позиции i кладется на i % W позицию в кэше.
— Pre-fill and chunking. Оптимизация с предзаполнением кэша для токенов из промпта, который известен с самого начала.
Все эти трюки — про скорость инференса/экономию памяти.
Есть также Instruct версия, дообученная на открытых датасетах с инструкциями. И совсем недавно вышла fine-tuned версия в стиле Orca, который бьет уже практически все 13B.
Что такое Orca? Это подход (и модель, полученная в результате такого подхода) к обучению на синтетических данных. Заключается он в следующем:
1. Берем большой датасет с различными заданиями (user query): суммаризация текста, ответы на сложные вопросы, решение математических задач и т.д.
2. Для каждого задания в начало помещаем специальный system prompt, чтобы LFM (Large Foundation Model) генерировала ответ в определенном формате. Таким образом мы можем контролировать длину генерации, стиль, рассуждения и так далее.
3. Используем LFM (например, ChatGPT, GPT-4) для выполнения составленных заданий.
В итоге собранный датасет представляет тексты вида <system prompt, user query, gpt answer>. Цель — собрать не просто датасет от сильной модели, но сделать его разнообразным и детальным с точки зрения рассуждений и вариантов ответов. Получившиеся примеры в датасете можно посмотреть тут.
Моделька сейчас на слуху, поэтому вот вам краткое саммари. Ребята из французского стартапа выкатили модель (лицензия Apache 2.0), которая побила LLaMa-2 7/13B на многих бенчмарках. Интересные особенности:
— Grouped-Query Attention (GQA). Прием, использующий 1 матрицу K и V на группу матриц Q. Это некоторое среднее между Multi-Head Attention и Multi-Query Attention.
— Sliding Window Attention (SWA). Модификация attention, при которой мы смотрим только на window_size (W) токенов назад. Важно, что токены за пределами окна тоже влияют на генерацию следующего, здесь можно провести аналогию с receptive field классических сверток.
— Rolling buffer cache. Изменение классического KV-cache для работы с SWA. Теперь кэш размера W и (key, value) для позиции i кладется на i % W позицию в кэше.
— Pre-fill and chunking. Оптимизация с предзаполнением кэша для токенов из промпта, который известен с самого начала.
Все эти трюки — про скорость инференса/экономию памяти.
Есть также Instruct версия, дообученная на открытых датасетах с инструкциями. И совсем недавно вышла fine-tuned версия в стиле Orca, который бьет уже практически все 13B.
Что такое Orca? Это подход (и модель, полученная в результате такого подхода) к обучению на синтетических данных. Заключается он в следующем:
1. Берем большой датасет с различными заданиями (user query): суммаризация текста, ответы на сложные вопросы, решение математических задач и т.д.
2. Для каждого задания в начало помещаем специальный system prompt, чтобы LFM (Large Foundation Model) генерировала ответ в определенном формате. Таким образом мы можем контролировать длину генерации, стиль, рассуждения и так далее.
3. Используем LFM (например, ChatGPT, GPT-4) для выполнения составленных заданий.
В итоге собранный датасет представляет тексты вида <system prompt, user query, gpt answer>. Цель — собрать не просто датасет от сильной модели, но сделать его разнообразным и детальным с точки зрения рассуждений и вариантов ответов. Получившиеся примеры в датасете можно посмотреть тут.
🔥12👍3
Emerging architectures for LLM applications
Посмотрел недавний доклад, посвященный ограничениям LLM и способам борьбы с ними. Подготовил небольшую выжимку по основным тезисам авторов:
1. Hallucinations. Известно, что модели часто могут выдавать неправильную информацию, когда в них нет какого-то знания. Чтобы бороться с этим, придумали много методов, например, Retrieval Augmented Generation. RAG заключается в том, что из базы с документами извлекаются релевантные куски текста и помещаются в контекст модели, чтобы у нее была ценная информация для генерации финального ответа. Авторы рассказывают про модифицированный метод FLARE: Forward-Looking Active REtrieval augmented generation: a method which iteratively uses a prediction of the upcoming sentence to anticipate future content, which is then utilized as a query to retrieve relevant documents to regenerate the sentence if it contains low-confidence tokens.
2. Orchestration. Размер контекста в LLM — ограниченная величина. В GPT-4 есть вариация с 32к токенов (примерно 50 страниц текста), а в Claude 2 — 100к токенов, но:
a. Зачастую качество генерации на таких длинных контекстах будет проседать.
b. В open-source моделях стандартом является 4к токенов в контексте.
Если нужно действительно обрабатывать огромные контексты, то можно использовать следующее: разбиваем текст на кусочки поменьше и параллельно прогоняем через несколько инстансов модели. Далее накладываем Merging алгоритм (может быть опять LLM), который выдаст уже результат. Своего рода Map-Reduce в мире LLM.
3. Monitoring. В классическом ML мы отслеживаем распределение данных, чтобы вовремя детектировать distribution shift и переобучить модель. С LLM это сложнее, но можно смотреть на распределение промптов, их типы и классы, схожести извлеченных документов и через это пытаться уловить изменение данных. Переобучать или даже файнтюнить языковую модель не всегда есть возможность, поэтому на помощь приходит изменение промптов (+ их версионирование) или процесса ретривала.
Посмотрел недавний доклад, посвященный ограничениям LLM и способам борьбы с ними. Подготовил небольшую выжимку по основным тезисам авторов:
1. Hallucinations. Известно, что модели часто могут выдавать неправильную информацию, когда в них нет какого-то знания. Чтобы бороться с этим, придумали много методов, например, Retrieval Augmented Generation. RAG заключается в том, что из базы с документами извлекаются релевантные куски текста и помещаются в контекст модели, чтобы у нее была ценная информация для генерации финального ответа. Авторы рассказывают про модифицированный метод FLARE: Forward-Looking Active REtrieval augmented generation: a method which iteratively uses a prediction of the upcoming sentence to anticipate future content, which is then utilized as a query to retrieve relevant documents to regenerate the sentence if it contains low-confidence tokens.
2. Orchestration. Размер контекста в LLM — ограниченная величина. В GPT-4 есть вариация с 32к токенов (примерно 50 страниц текста), а в Claude 2 — 100к токенов, но:
a. Зачастую качество генерации на таких длинных контекстах будет проседать.
b. В open-source моделях стандартом является 4к токенов в контексте.
Если нужно действительно обрабатывать огромные контексты, то можно использовать следующее: разбиваем текст на кусочки поменьше и параллельно прогоняем через несколько инстансов модели. Далее накладываем Merging алгоритм (может быть опять LLM), который выдаст уже результат. Своего рода Map-Reduce в мире LLM.
3. Monitoring. В классическом ML мы отслеживаем распределение данных, чтобы вовремя детектировать distribution shift и переобучить модель. С LLM это сложнее, но можно смотреть на распределение промптов, их типы и классы, схожести извлеченных документов и через это пытаться уловить изменение данных. Переобучать или даже файнтюнить языковую модель не всегда есть возможность, поэтому на помощь приходит изменение промптов (+ их версионирование) или процесса ретривала.
YouTube
Emerging architectures for LLM applications
Everything from training models from scratch and fine-tuning open-source models to using hosted APIs, with a particular emphasis on the design pattern of in-context learning.
Key topics we'll cover during the session include:
- Data preprocessing and embedding…
Key topics we'll cover during the session include:
- Data preprocessing and embedding…
👍11🔥2❤1
Продолжаем серию постов про архитектуры и методы, позволяющие бороться с квадратичной сложностью attention в трансформерах. В прошлый раз мы говорили про Linformer, Reformer, Performer и AFT, сегодня — про Sparse Transformers, Longformer, MEGA. Не стоит забывать про всякие hardware оптимизации (например, FlashAttention), но это находится за пределами этого поста.
Sparse Transformers:
Sparse Transformers предлагает метод подсчета attention между подмножеством токенов: Factorized Self-Attention. Основной идеей является использование p голов с разными паттернами, за счет которых каждый i-ый токен может “посмотреть” на j-ый не более чем за p+1 шагов. Для p=2 мы можем использовать следующую комбинацию (fixed pattern): первая голова смотрит на все предыдущие k токенов, вторая — на токены с фиксированных позиций, обеспечивая протекание информации из прошлого. Такой паттерн позволяет снизить сложность до n корень из n. Метод используется в GPT-3, и возможно какая-то его модификация — GPT-3.5/4. SWA из Mistral напоминает этот же принцип.
Longformer:
Идея похожа на Sparse Transformers. Разница в следующем: Longformer создавался для задач с длинными последовательностями, поэтому авторы добавили global attention pattern, когда мы смотрим на токены важные для конкретной задачи: в классификации — CLS токен, в задачах QA — токены из вопроса. В итоге имеем комбинацию локального и глобального вниманий. Ну и дополнительно используются всякие трюки, которые подобрали эмпирически: разный размер окна в зависимости от слоя, dilated окна для глубоких слоев и тд. Тут получаем даже линейную сложность, потому что глобальное внимание привносит только константное число доп. токенов.
MEGA:
Довольно тяжело объяснить идею в нескольких предложениях, поэтому посмотрите сначала на картинку. Основных идей здесь 3:
1. Используем экспоненциальное сглаживание эмбеддингов для дальнейшего получения матриц Q и K. EMA позволяет агрегировать локальный контекст с настраиваемыми весами.
2. Добавляем два gating mechanisms: первый для протекания изначального эмбеддинга X, второй — для протекания EMA эмбеддинга X’.
3. Gated Attention имеет всего одну голову, но показывается, что за счет гейтингов и EMA он эквивалентен Multi-Head Attention.
Данные модификации не меняют сложность, они больше про inductive bias. Но есть вариация MEGA chunked, которая снижает сложность до линейной.
Sparse Transformers:
Sparse Transformers предлагает метод подсчета attention между подмножеством токенов: Factorized Self-Attention. Основной идеей является использование p голов с разными паттернами, за счет которых каждый i-ый токен может “посмотреть” на j-ый не более чем за p+1 шагов. Для p=2 мы можем использовать следующую комбинацию (fixed pattern): первая голова смотрит на все предыдущие k токенов, вторая — на токены с фиксированных позиций, обеспечивая протекание информации из прошлого. Такой паттерн позволяет снизить сложность до n корень из n. Метод используется в GPT-3, и возможно какая-то его модификация — GPT-3.5/4. SWA из Mistral напоминает этот же принцип.
Longformer:
Идея похожа на Sparse Transformers. Разница в следующем: Longformer создавался для задач с длинными последовательностями, поэтому авторы добавили global attention pattern, когда мы смотрим на токены важные для конкретной задачи: в классификации — CLS токен, в задачах QA — токены из вопроса. В итоге имеем комбинацию локального и глобального вниманий. Ну и дополнительно используются всякие трюки, которые подобрали эмпирически: разный размер окна в зависимости от слоя, dilated окна для глубоких слоев и тд. Тут получаем даже линейную сложность, потому что глобальное внимание привносит только константное число доп. токенов.
MEGA:
Довольно тяжело объяснить идею в нескольких предложениях, поэтому посмотрите сначала на картинку. Основных идей здесь 3:
1. Используем экспоненциальное сглаживание эмбеддингов для дальнейшего получения матриц Q и K. EMA позволяет агрегировать локальный контекст с настраиваемыми весами.
2. Добавляем два gating mechanisms: первый для протекания изначального эмбеддинга X, второй — для протекания EMA эмбеддинга X’.
3. Gated Attention имеет всего одну голову, но показывается, что за счет гейтингов и EMA он эквивалентен Multi-Head Attention.
Данные модификации не меняют сложность, они больше про inductive bias. Но есть вариация MEGA chunked, которая снижает сложность до линейной.
🔥9👍1
Говорят ли вам о чем-то слова GGML, GGUF, GPTQ, AWQ? За последнее время появился целый ряд форматов для того, чтобы инференсить LLM с ограниченными ресурсами, будь то CPU или GPU. Наткнулся на обзор, где совсем верхнеуровнево проходят по определениям и рассказывают про юзкейсы, для ознакомления думаю подойдет. А если интересно чуть подробнее посмотреть на методы квантизации (RTN, AWQ, GPTQ), то есть еще одно видео от того же автора.
GPTQ Paper
AWQ Paper
GPTQ Paper
AWQ Paper
❤6🔥6
В продолжение поста про Mistral и его различные модификации (Instruct, Orca) хочется также упомянуть модель Zephyr-7b-alpha. Это файнтюн модели Mistral на пользовательские предпочтения, чтобы сделать модель в роли helpful assistant. Для таких целей сейчас популярно использовать RLHF. Подход заключается в том, что сначала мы учим Reward Model (RM) на отсортированных по предпочтению ответах (то есть в итоге RM по тексту может дать ему некоторую оценку), а затем дообучаем основную модель в режиме RL, обычно используя алгоритм PPO. Задача обучения — максимизировать награду из RM, при этом не сильно меняя исходные веса модели, чтобы не переобучиться. Проблема в том, что это слишком нестабильный подход (RM может найти скрытые фичи, которые негативно будут влиять на генерализацию, например, давать текстам, где есть код, выше оценку. PPO может научиться обманывать RM и получать высокую награду, генерируя бессмысленные тексты и т.д. Вот, кстати, неплохая статья на тему). В мая 2023 вышла интересная работа: Direct Preference Optimization: Your Language Model is Secretly a Reward Model. Авторы показали, что двухэтапное обучение RLHF можно с некоторыми допущениями заменить на выражение, зависящее только от pi и pi_ref (см. картинку). Это означает, что 1) Нам не нужна RM и 2) Нам не нужен RL. Лосс в DPO считается максимально просто и в TRL занимает всего 7 строчек. Единственное, нужно иметь размеченные данные с упорядоченными ответами, то есть пары вида text1|x > text2|x. Именно DPO и применили к модели Zephyr.
По отзывам ребят, кто заводил DPO у себя, работает этот алгоритм действительно хорошо и намного стабильнее PPO.
По отзывам ребят, кто заводил DPO у себя, работает этот алгоритм действительно хорошо и намного стабильнее PPO.
🔥9👍5
Позалипал какое-то время на autogen от Microsoft — фреймворк для разработки приложений с использованием сразу нескольких агентов для взаимодействия друг с другом и совместного поиска решения задач. Один из примеров — Figure Creator: набор из трех агентов: Coder (пишет код для визуализации), Critic (мультимодальная модель, по картинке дающая фидбэк, что нужно исправить/улучшить) и Commander (координирует работу + общается с пользователем). В качестве мультимодальной модели выступает LLaVa, о ней и хочется сегодня рассказать, тем более, что она точно заслуживает внимания, которого не получила на волне хайпа других моделей.
Статья называется Visual Instruction Tuning, вышла в апреле 2023 и рассказывает о модели, которая одновременно хорошо понимает и картинки, и текст. Основных вещей здесь 2: архитектура и сбор данных. Архитектура довольно простая:
1. Картинку прогоняем через CLIP encoder (ViT-L) + дополнительную проекцию W, которая отображает эмбеддинги токенов изображения в пространство эмбеддингов токенов текста: Hv. На первом этапе обучения как раз учится только матрица W, чтобы уметь алайнить изображения и текст.
2. Объединяем это с эмбеддингами текстового промпта (Hq) и отдаем в руки декодера, который сгенерирует ответ, в данном случае — LLaMa. На втором этапе учим уже W + Decoder правильно генерировать ответы к запросам (например, описание изображения или более детальные вопросы).
3. Vision Encoder заморожен на всем этапе обучения.
Но особое внимание здесь хочется уделить методу сбора данных. О нем — следующий пост
Статья называется Visual Instruction Tuning, вышла в апреле 2023 и рассказывает о модели, которая одновременно хорошо понимает и картинки, и текст. Основных вещей здесь 2: архитектура и сбор данных. Архитектура довольно простая:
1. Картинку прогоняем через CLIP encoder (ViT-L) + дополнительную проекцию W, которая отображает эмбеддинги токенов изображения в пространство эмбеддингов токенов текста: Hv. На первом этапе обучения как раз учится только матрица W, чтобы уметь алайнить изображения и текст.
2. Объединяем это с эмбеддингами текстового промпта (Hq) и отдаем в руки декодера, который сгенерирует ответ, в данном случае — LLaMa. На втором этапе учим уже W + Decoder правильно генерировать ответы к запросам (например, описание изображения или более детальные вопросы).
3. Vision Encoder заморожен на всем этапе обучения.
Но особое внимание здесь хочется уделить методу сбора данных. О нем — следующий пост
🔥4👍2
Сбор данных, на мой взгляд, представляет собой самое ценное в этой статье. Авторы захотели адаптировать Instruction Tuning подход к обучению, который так популярен в языковых моделях, к мультимодальным. Разметку для этого они получили с помощью генерации моделями по типу ChatGPT/GPT-4. Еще одна работа в аргументы того, что обучение на хорошо подготовленных синтетических данных может давать очень сильные результаты. Пайплайн выглядит следующим образом:
1. Для того чтобы использовать модели по типу GPT (которая обрабатывает только текст) нам нужно научиться передавать информацию о картинке именно в текстовом формате. Для этого используют два типа промптов: Captions (описывают картинку с разных точек зрения) и Bounding boxes (описывают объекты на изображении и их местонахождение). Уже по ним GPT генерирует различные инструкции для обучения. Делается это в формате few-shot learning, то есть предварительно помещая в контекст вручную отобранные примеры ответов.
2. Для обучения Multimodal Chatbot всего используются три вида инструкций: Conversation, Detailed description, Complex reasoning.
На этапе обучения мы семплируем такие single/multi-turn диалоги из сгенерированных данных и учим модель предсказывать только ответы ассистента. Под обучением здесь понимается классическая постановка авторегрессионной модели, то есть по входным данным мы предсказываем ответы в стиле Next Token Prediction.
На картинке представлены примеры инструкций, запроса в GPT и финального датасета.
1. Для того чтобы использовать модели по типу GPT (которая обрабатывает только текст) нам нужно научиться передавать информацию о картинке именно в текстовом формате. Для этого используют два типа промптов: Captions (описывают картинку с разных точек зрения) и Bounding boxes (описывают объекты на изображении и их местонахождение). Уже по ним GPT генерирует различные инструкции для обучения. Делается это в формате few-shot learning, то есть предварительно помещая в контекст вручную отобранные примеры ответов.
2. Для обучения Multimodal Chatbot всего используются три вида инструкций: Conversation, Detailed description, Complex reasoning.
На этапе обучения мы семплируем такие single/multi-turn диалоги из сгенерированных данных и учим модель предсказывать только ответы ассистента. Под обучением здесь понимается классическая постановка авторегрессионной модели, то есть по входным данным мы предсказываем ответы в стиле Next Token Prediction.
На картинке представлены примеры инструкций, запроса в GPT и финального датасета.
🔥6👍3
Рассказывали мне тут про редкие вопросы с интервью, с которыми мало кто справляется, вспомнил, что и сам на такой натыкался в прошлом, поделюсь с вами. В целом есть идея изредка выносить что-то подобное с тегом #interview_questions, дайте знать, если полезно.
Вопрос: мы решаем задачу классификации и до софтмакса получаем вектор логитов, скажем [0.81, 3, 10, 15, 90]. В операции софтмакса есть возведение экспоненты в степень, то есть в данном случае нужно будет посчитать e^90. Это очевидно приведет к переполнению любого используемого типа, а в некоторых имплементациях получим значение inf -> 1.0 после софтмакса. Что делать в этом случае?
Ответ:До софтмакса нужно вычесть максимум из логитов, то есть в данном примере 90. Операция вычитания числа из всех элементов вектора не поменяет результат софтмакса (можете проделать ее на бумажке и убедиться) или просто прикинуть в уме, что e^max(logit) сократится из-за того, что он присутствует и в числителе, и в знаменателе. Экспоненту же от большого отрицательного числа посчитать можно, значение будет близко к 0.
Вопрос: мы решаем задачу классификации и до софтмакса получаем вектор логитов, скажем [0.81, 3, 10, 15, 90]. В операции софтмакса есть возведение экспоненты в степень, то есть в данном случае нужно будет посчитать e^90. Это очевидно приведет к переполнению любого используемого типа, а в некоторых имплементациях получим значение inf -> 1.0 после софтмакса. Что делать в этом случае?
Ответ:
👍18🔥13
Controlled Decoding from Language Models
Сегодня разбираем недавнюю статью от авторов из Google (один из которых уже успел перейти в OpenAI 😅), посвященную новому алгоритму алайнмента. Давайте разбираться, но прежде немного контекста для лучшего понимания.
1. Речь идет про заключительный этап файнтюнинга LLM, когда мы хотим настроить модель под helpful/harmless/respective/… ответы. То есть альтернативами здесь являются, например, RLHF (PPO) и DPO (не RL, подробнее писал здесь).
2. PPO/DPO алгоритмы меняют веса основной модели.
3. При использовании наиболее популярного сейчас алгоритма PPO, мы применяем on-policy RL, то есть для обновления весов модели каждый раз требуются свежие данные, полученные от самой этой модели. В таком случае схема выглядит как “генерируем ответы моделью → считаем лосс и делаем шаг оптимизатором → генерируем ответы уже обновленной моделью → считаем лосс …”. PPO позволяет делать несколько оптимизационных шагов за одно наблюдение, но все равно это накладывает свои ограничения.
В данной статье авторы предлагают другой подход к той же задаче:
1. Обучение отдельной модели Prefix Scorer (PS) в off-policy режиме, то есть нам не требуется генерировать ответы основной моделью. Мы можем использовать любые доступные данные и обучаться на них.
2. Так как PS представляет из себя отдельную модель, веса основной LLM остаются неизменны.
Основная идея метода — обучить PS для аппроксимации Value функции текущего состояния. Value функция по определению — средняя награда, которая может быть получена из состояния s (в данном случае s — любой момент на этапе генерации ответа). Делается это путем минимизации MSE ошибки между предсказанием PS и наградой, полученной из Reward Model (с оговоркой, посмотрите, как обрабатывается кейс при y ≠ EOS на картинке). Имея аппроксимацию Value функции, можно корректировать финальные предсказания модели в сторону бОльших наград. Авторы предлагают два способа:
1. Token-wise. На этапе генерации каждого токена прогоняем текущее выходное распределение через Prefix Scorer и изменяем предсказания модели.
2. Block-wise. Семплируем несколько продолжений ответа длины M (например, семплируем 5 вариантов, каждый из которых состоит из 4 токенов) и далее оставляем то, у которого оценка Value функции максимальна.
Также можно использовать несколько разных Prefix Scorer для оптимизации сразу нескольких наград. Хотелось бы видеть больше наглядных примеров работы алгоритма, а не просто графиков типа win rate, но все равно работа интересная.
Сегодня разбираем недавнюю статью от авторов из Google (один из которых уже успел перейти в OpenAI 😅), посвященную новому алгоритму алайнмента. Давайте разбираться, но прежде немного контекста для лучшего понимания.
1. Речь идет про заключительный этап файнтюнинга LLM, когда мы хотим настроить модель под helpful/harmless/respective/… ответы. То есть альтернативами здесь являются, например, RLHF (PPO) и DPO (не RL, подробнее писал здесь).
2. PPO/DPO алгоритмы меняют веса основной модели.
3. При использовании наиболее популярного сейчас алгоритма PPO, мы применяем on-policy RL, то есть для обновления весов модели каждый раз требуются свежие данные, полученные от самой этой модели. В таком случае схема выглядит как “генерируем ответы моделью → считаем лосс и делаем шаг оптимизатором → генерируем ответы уже обновленной моделью → считаем лосс …”. PPO позволяет делать несколько оптимизационных шагов за одно наблюдение, но все равно это накладывает свои ограничения.
В данной статье авторы предлагают другой подход к той же задаче:
1. Обучение отдельной модели Prefix Scorer (PS) в off-policy режиме, то есть нам не требуется генерировать ответы основной моделью. Мы можем использовать любые доступные данные и обучаться на них.
2. Так как PS представляет из себя отдельную модель, веса основной LLM остаются неизменны.
Основная идея метода — обучить PS для аппроксимации Value функции текущего состояния. Value функция по определению — средняя награда, которая может быть получена из состояния s (в данном случае s — любой момент на этапе генерации ответа). Делается это путем минимизации MSE ошибки между предсказанием PS и наградой, полученной из Reward Model (с оговоркой, посмотрите, как обрабатывается кейс при y ≠ EOS на картинке). Имея аппроксимацию Value функции, можно корректировать финальные предсказания модели в сторону бОльших наград. Авторы предлагают два способа:
1. Token-wise. На этапе генерации каждого токена прогоняем текущее выходное распределение через Prefix Scorer и изменяем предсказания модели.
2. Block-wise. Семплируем несколько продолжений ответа длины M (например, семплируем 5 вариантов, каждый из которых состоит из 4 токенов) и далее оставляем то, у которого оценка Value функции максимальна.
Также можно использовать несколько разных Prefix Scorer для оптимизации сразу нескольких наград. Хотелось бы видеть больше наглядных примеров работы алгоритма, а не просто графиков типа win rate, но все равно работа интересная.
🔥7
DeepMind совместно с Ливерпулем объединился для разработки TacticAI: an AI assistant for football tactics. Чтобы с чего-то начать, авторы сосредоточились на анализе угловых ударов, поскольку они предоставляют тренерам наиболее понятные возможности для вмешательства и улучшения ситуации. С помощью экспертов из клуба показали, что предложения TacticAI не только неотличимы от реальных ситуаций, но и в 90% случаев оказываются предпочтительнее существующих тактик.
Каждый угловой представляется в виде полного графа, где вершина — игрок с характеристиками (вес, рост, скорость, координаты), а ребро — отношения между игроками с пометкой команды. На выходе модель умеет предсказывать три вещи:
— Вероятность i-ого игрока получить мяч (классификация вершины)
— Вероятность нанесения удара (классификация графа)
— Изменения в расстановку игроков/состав для максимизации вероятности удара в случае атакующей стороны или, наборот, минимизации для обороняющейся (задача регрессии для каждой вершины)
В качестве датасета использовали 7176 угловых ударов из премьер лиги 2020-2021 года, в этом плане есть куда скейлиться. Архитектура же модели представляет из себя Deep graph attention (а куда без него?) network.
Теперь интересно посмотреть, как изменится розыгрыш Ливерпуля после пару месяцев, когда команда отработает новые сценарии. В целом кажется, что данных за всю историю футбола накопилась достаточное число, чтобы построить подобного рода базовую модель для более общего использования
Каждый угловой представляется в виде полного графа, где вершина — игрок с характеристиками (вес, рост, скорость, координаты), а ребро — отношения между игроками с пометкой команды. На выходе модель умеет предсказывать три вещи:
— Вероятность i-ого игрока получить мяч (классификация вершины)
— Вероятность нанесения удара (классификация графа)
— Изменения в расстановку игроков/состав для максимизации вероятности удара в случае атакующей стороны или, наборот, минимизации для обороняющейся (задача регрессии для каждой вершины)
В качестве датасета использовали 7176 угловых ударов из премьер лиги 2020-2021 года, в этом плане есть куда скейлиться. Архитектура же модели представляет из себя Deep graph attention (а куда без него?) network.
Теперь интересно посмотреть, как изменится розыгрыш Ливерпуля после пару месяцев, когда команда отработает новые сценарии. В целом кажется, что данных за всю историю футбола накопилась достаточное число, чтобы построить подобного рода базовую модель для более общего использования
❤11🔥6👍1
Сейчас выходом за неделю сразу нескольких новых LLM уже не удивишь, но прошлая была интересной, поэтому краткое саммари:
— DeepSeek Coder. Семейство моделей от 1.3B до 33B, заточенных под написание кода. Тренировалась в сумме на 2Т токенов и 86 языках программирования. По метрикам уходит далеко от CodeLLaMa, а Instruct версия на 6.7B бьет на HumanEval Chat-3.5-Turbo. Ну и дополнительно еще внедрили размер контекста в 16 тысяч токенов.
— OpenChat. Модель уже общего пользования. 7B бьет ChatGPT (мартовской версии) почти по всем бенчмаркам. В обучении использовался интересный подход C(onditioned)-RLFT, возможно сделаю по нему отдельный обзор. Еще и обещают завести Orca версию модели.
— Yi-34B. Стартап 01-AI под руководством Кай-Фу Ли (возможно вы слышали его по книге AI Superpowers) на днях релизнул свою модель. Подробностей пока немного, но судя по paperswithcode по MMLU модель устанавливает рекорд среди всех опенсурс моделей. Технический отчет обещают в следующем месяце.
— Grōk. Ну и напоследок под конец прошлой недели появилась инфа, что xAI запускают AI-ассистента, который будет доступен по подписке X Premium+ (Twitter). Про последнюю версию известно мало, но в любом случае будет интересно посмотреть на примеры использования. Вот уже пример promptIDE, подробнее можно почитать тут.
— DeepSeek Coder. Семейство моделей от 1.3B до 33B, заточенных под написание кода. Тренировалась в сумме на 2Т токенов и 86 языках программирования. По метрикам уходит далеко от CodeLLaMa, а Instruct версия на 6.7B бьет на HumanEval Chat-3.5-Turbo. Ну и дополнительно еще внедрили размер контекста в 16 тысяч токенов.
— OpenChat. Модель уже общего пользования. 7B бьет ChatGPT (мартовской версии) почти по всем бенчмаркам. В обучении использовался интересный подход C(onditioned)-RLFT, возможно сделаю по нему отдельный обзор. Еще и обещают завести Orca версию модели.
— Yi-34B. Стартап 01-AI под руководством Кай-Фу Ли (возможно вы слышали его по книге AI Superpowers) на днях релизнул свою модель. Подробностей пока немного, но судя по paperswithcode по MMLU модель устанавливает рекорд среди всех опенсурс моделей. Технический отчет обещают в следующем месяце.
— Grōk. Ну и напоследок под конец прошлой недели появилась инфа, что xAI запускают AI-ассистента, который будет доступен по подписке X Premium+ (Twitter). Про последнюю версию известно мало, но в любом случае будет интересно посмотреть на примеры использования. Вот уже пример promptIDE, подробнее можно почитать тут.
🔥14👍1
Пару дней назад вышла работа LLaVA-Plus: Learning to Use Tools for Creating Multimodal Agents, где авторы расширили возможности мультимодальной модели LLaVa путем добавления набора различных инструментов, к которым можно обращаться для выполнения задачи. Получилось довольно интересно. Про оригинальную модель подробнее писал тут.
Теперь взаимодействие пользователя с моделью состоит не из вопроса (текст + картинка) и ответа, а из 4 шагов:
— Человек предоставляют задачу (X_q) и картинку (I_q).
— Ассистент обрабатывает всю информацию и генерирует X_skill_use — набор инструментов, который потребуется для выполнения задачи (может быть пустым).
— После использования конкретного инструмента результат X_result подается обратно на вход ассистенту.
— Агрегируя всю доступную информацию, модель выдает финальный результат.
На картинке можно увидеть это взаимодействие в виде диаграммы. Зеленым помечены последовательности, по которым считается лосс при обучении, то есть модель учится предсказывать набор инструментов и финальный ответ.
В качестве самих инструментов добавлено множество вариантов: генерация через Stable Diffusion, OCR, сегментация через SAM, ControlNet, Pix2Pix и много чего еще.
Уже все выложили в открытый доступ: от самой модели, до кода обучения и нового датасета с инструкциями.
Теперь взаимодействие пользователя с моделью состоит не из вопроса (текст + картинка) и ответа, а из 4 шагов:
— Человек предоставляют задачу (X_q) и картинку (I_q).
— Ассистент обрабатывает всю информацию и генерирует X_skill_use — набор инструментов, который потребуется для выполнения задачи (может быть пустым).
— После использования конкретного инструмента результат X_result подается обратно на вход ассистенту.
— Агрегируя всю доступную информацию, модель выдает финальный результат.
На картинке можно увидеть это взаимодействие в виде диаграммы. Зеленым помечены последовательности, по которым считается лосс при обучении, то есть модель учится предсказывать набор инструментов и финальный ответ.
В качестве самих инструментов добавлено множество вариантов: генерация через Stable Diffusion, OCR, сегментация через SAM, ControlNet, Pix2Pix и много чего еще.
Уже все выложили в открытый доступ: от самой модели, до кода обучения и нового датасета с инструкциями.
🔥7