Кстати, в тему AlphaFold, белков, медиаторов и биологии в целом очень рекомендую курс «Химия мозга» от Вячеслава Дубынина. Если хотите лучше понимать подкасты Andrew Huberman, да и в целом, как и что работает в мозге, то самое то. Первые три лекции про общие принципы работы нейронов, белков, потенциалов действия, выработки медиаторов, а дальше идет уже разбор конкретных веществ (дофамин, серотонин и тд)
Есть также лекции на ютубе
Есть также лекции на ютубе
Лекции учёных МГУ
Химия мозга
В рамках курса студенты знакомятся с принципами работы нервной системы на структурном, клеточном и молекулярном уровнях
❤8👍4🔥1
Хочется рассказать про один способ использования трансформеров в проде, который, как мне показалось, не все знают.
Недавно обсуждали со знакомым, как ребята в поиске/ранжировании пытались докатить онлайн трансформер до прода и застряли там на довольно длительное время: начали с ONNX на цпу, поняли, что слишком медленно, затем подняли отдельный инстанс с гпу (со всеми организационными моментами), попробовали triton inference server и прочие методы. Где-то выходило дорого, где-то муторно, а релизить уже нужно было скоро. Что же в итоге заработало?
1. Посмотрели по трафику на топ Х запросов за последнее время и для них в оффлайне рассчитали выдачу тяжелым трансформером, который показывал лучшие метрики.
2. В сервис затащили маппинг из запроса в уже готовую выдачу. Маппинг при этом можно регулярно обновлять.
3. Для входящего запроса проверяем его наличие в маппинге. Если нет, то делаем fallback на модель попроще или какую-то эвристику.
В итоге команда запустила A/B тест и быстро получила хорошие лифты. Fallback при этом происходил довольно редко. Сам же инференс (если его можно так назвать) работает супер быстро и требует только небольшого количества памяти для хранения отображения запрос-выдача.
Недавно обсуждали со знакомым, как ребята в поиске/ранжировании пытались докатить онлайн трансформер до прода и застряли там на довольно длительное время: начали с ONNX на цпу, поняли, что слишком медленно, затем подняли отдельный инстанс с гпу (со всеми организационными моментами), попробовали triton inference server и прочие методы. Где-то выходило дорого, где-то муторно, а релизить уже нужно было скоро. Что же в итоге заработало?
1. Посмотрели по трафику на топ Х запросов за последнее время и для них в оффлайне рассчитали выдачу тяжелым трансформером, который показывал лучшие метрики.
2. В сервис затащили маппинг из запроса в уже готовую выдачу. Маппинг при этом можно регулярно обновлять.
3. Для входящего запроса проверяем его наличие в маппинге. Если нет, то делаем fallback на модель попроще или какую-то эвристику.
В итоге команда запустила A/B тест и быстро получила хорошие лифты. Fallback при этом происходил довольно редко. Сам же инференс (если его можно так назвать) работает супер быстро и требует только небольшого количества памяти для хранения отображения запрос-выдача.
🔥17🤔2
Несколько месяцев назад вышла интересная статья Textbooks Are All You Need от ребят из Microsoft, где они представили модель phi-1, заточенную на написание кода. В ней всего 1.3B параметров (+ обучалась она на суммарно меньшем кол-ве токенов), но при этом на бенчмарке HumanEval она бьет большинство огромных моделей на десятки миллиардов параметров, включая gpt-3.5. Почитайте хороший обзор от Игоря Котенкова в Singularis. Вчера же появилась статья Textbooks Are All You Need II: phi-1.5 technical report, где авторы выпустили, как нетрудно догадаться, модель phi-1.5. Она так же содержит 1.3B параметров, только на этот раз ориентирована на язык в целом, то есть на решение задач common sense reasoning и language understanding. Модель видела 150B токенов во время обучения, что по современным меркам смешно.
Такие результаты удается получить благодаря тщательному отбору и подготовки данных, при этом большая часть датасета сгенерирована моделями тяжелее (например, gpt-3.5/gpt-4) со специально подобранными промптами. Авторы пишут: Our training data for phi-1.5 is a combination of phi-1’s training data (7B tokens) and newly created synthetic, “textbook-like” data (roughly 20B tokens) for the purpose of teaching common sense reasoning and general knowledge of the world (science, daily activities, theory of mind, etc.). We carefully selected 20K topics to seed the generation of this new synthetic data. In our generation prompts, we use samples from web datasets for diversity. К сожалению, сами промпты и детали сбора синтетики авторы не выложили😢
В любом случае, такие работы напоминают нам, насколько данные принимают важное участие в обучении языковых моделей. Уже интересно посмотреть на результат такого обучения модели с 7B параметров. Можно уже брать веса с HF и играться.
Такие результаты удается получить благодаря тщательному отбору и подготовки данных, при этом большая часть датасета сгенерирована моделями тяжелее (например, gpt-3.5/gpt-4) со специально подобранными промптами. Авторы пишут: Our training data for phi-1.5 is a combination of phi-1’s training data (7B tokens) and newly created synthetic, “textbook-like” data (roughly 20B tokens) for the purpose of teaching common sense reasoning and general knowledge of the world (science, daily activities, theory of mind, etc.). We carefully selected 20K topics to seed the generation of this new synthetic data. In our generation prompts, we use samples from web datasets for diversity. К сожалению, сами промпты и детали сбора синтетики авторы не выложили
В любом случае, такие работы напоминают нам, насколько данные принимают важное участие в обучении языковых моделей. Уже интересно посмотреть на результат такого обучения модели с 7B параметров. Можно уже брать веса с HF и играться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Наверняка вы слышали про mojo 🔥 — появляющийся язык, который в огромное количество раз быстрее питона, использует некоторые концепции из раста и так далее. Так вот, уже появился инференс llama2.mojo, где по замерам скорость быстрее, даже чем llama2.c с флагом runfast, но без OMP (265 tok/s vs 230 tok/s). Можно детальнее почитать репо и даже поднять свою демку с помощью gradio.
🔥5🤯4👍2👎1💩1
Решил сделать небольшой обзор работ, посвященных снижению квадратичной сложности attention в трансформерах (здесь имеется в виду квадратичная зависимость именно от длины последовательности). Это ограничение является довольно серьезным при работе с длинными контекстами, так что работ накопилось довольно много. Где-то авторы снижают сложность по времени, где-то по памяти, а где-то и там, и там.
Linformer:
На секунду вспомним, из-за чего появляется квадратичная сложность — из-за умножения Q на K^T. В таком случае давайте проектировать матрицы K и V в некоторое меньшее пространство с константной размерностью. Тогда умножение будет происходить на матрицу, которая не зависит от длины контекста → уходим от квадрата в сложности. Линейная зависимость по времени и по памяти.
AFT (Attention Free Transformer):
Здесь авторы вообще ушли от классического понятия attention, когда мы считаем скоры между Q и K. Сделали они это следующим образом: вместо Q в attention учим матрицу w размера TxT (T — максимальный размер контекста), элементы которой будем прибавлять к K. Как пишут авторы, w — is the learned pair-wise position biases, то есть, грубо говоря, элемент в матрице на позиции (1,3) — вес, с которым позиция 1 должна обратить внимание на позицию 3. Идея такого представления заключается в том, что оно служит некоторым gating mechanism, указывая на какие позиции обратить больше внимания. Здесь линейная зависимость по памяти (не нужно хранить большую матрицу attention scores), но квадратичная по времени. Однако, есть модификации, чтобы добиться линии и по времени (например, AFT-local).
Linformer:
На секунду вспомним, из-за чего появляется квадратичная сложность — из-за умножения Q на K^T. В таком случае давайте проектировать матрицы K и V в некоторое меньшее пространство с константной размерностью. Тогда умножение будет происходить на матрицу, которая не зависит от длины контекста → уходим от квадрата в сложности. Линейная зависимость по времени и по памяти.
AFT (Attention Free Transformer):
Здесь авторы вообще ушли от классического понятия attention, когда мы считаем скоры между Q и K. Сделали они это следующим образом: вместо Q в attention учим матрицу w размера TxT (T — максимальный размер контекста), элементы которой будем прибавлять к K. Как пишут авторы, w — is the learned pair-wise position biases, то есть, грубо говоря, элемент в матрице на позиции (1,3) — вес, с которым позиция 1 должна обратить внимание на позицию 3. Идея такого представления заключается в том, что оно служит некоторым gating mechanism, указывая на какие позиции обратить больше внимания. Здесь линейная зависимость по памяти (не нужно хранить большую матрицу attention scores), но квадратичная по времени. Однако, есть модификации, чтобы добиться линии и по времени (например, AFT-local).
🔥13❤1
Продолжение
Reformer:
В этой работе используется очень известный алгоритм LSH хэширования. Сделаем Q=K и будем с помощью LSH находить кластеры похожих эмбеддингов. В таком случае attention скоры нам нужно будет посчитать только внутри этих кластеров. С одной стороны, сложность уменьшается до логлинейной (n * logn), но на практике внутри О большого сидит константа 128^2. Кстати, похожий метод используется в одном из алгоритмов ANN.
Performer:
Авторы доказывают, что результат attention (softmax(Q x K^T) можно аппроксимировать произведением двух матриц. И собственно эту аппроксимацию модель и выучивает. Доказательство не самое простое, но идея заключается в использовании kernel methods. Если такая аппроксимация у нас есть (softmax(Q x K^T) ~ Q1 x K1^T), то мы можем сначала умножить K и V, а потом их результат умножить на Q (сложность из-за порядка таких умножений изменится, посмотрите картинку или выпишите размерности на листочке). Здесь линейная зависимость по времени и по памяти.
Не стоит забывать, что сложность attention зависит не только от длины контекста, но и от размера эмбеддинга. Здесь мы говорили только про первое. Метрики не привожу, их можно поглядеть в самих статьях, если интересно. Я написал далеко не про все работы, посвященные этим темам, — есть еще MEGA, Sparse Transformers, Longformer, MQA, GQA и другие. О них — возможно в следующих постах.
Reformer:
В этой работе используется очень известный алгоритм LSH хэширования. Сделаем Q=K и будем с помощью LSH находить кластеры похожих эмбеддингов. В таком случае attention скоры нам нужно будет посчитать только внутри этих кластеров. С одной стороны, сложность уменьшается до логлинейной (n * logn), но на практике внутри О большого сидит константа 128^2. Кстати, похожий метод используется в одном из алгоритмов ANN.
Performer:
Авторы доказывают, что результат attention (softmax(Q x K^T) можно аппроксимировать произведением двух матриц. И собственно эту аппроксимацию модель и выучивает. Доказательство не самое простое, но идея заключается в использовании kernel methods. Если такая аппроксимация у нас есть (softmax(Q x K^T) ~ Q1 x K1^T), то мы можем сначала умножить K и V, а потом их результат умножить на Q (сложность из-за порядка таких умножений изменится, посмотрите картинку или выпишите размерности на листочке). Здесь линейная зависимость по времени и по памяти.
Не стоит забывать, что сложность attention зависит не только от длины контекста, но и от размера эмбеддинга. Здесь мы говорили только про первое. Метрики не привожу, их можно поглядеть в самих статьях, если интересно. Я написал далеко не про все работы, посвященные этим темам, — есть еще MEGA, Sparse Transformers, Longformer, MQA, GQA и другие. О них — возможно в следующих постах.
🔥10❤2
Наверное, каждый, кто использовал chatGPT для решения задач или просто общения приходил к мысли, что сформулированный запрос (промпт) довольно сильно влияет на результат. В этом направлении есть огромное кол-во работ, где люди пытались придумать текст, который повлияет на ответ модели в лучшую сторону.
И вот несколько дней назад вышла любопытная статья о применении эволюционных алгоритмов совместно с LLM для поиска наилучшего промпта под конкретную задачу. Для тех, кто никак не может решить, использовать “Think step by step” или “Take a deep breath”. Алгоритм максимально простой: у нас есть популяция из N промптов, путем скрещиваний и мутаций мы можем получить набор их потомков. Далее считаем метрики для новых вариантов на отложенном датасете и из всего множества промптов оставляем top N. Эту операцию повторяем T эпох. Интересным здесь, на мой взгляд, является вопрос, как сделать операции скрещивания и мутации в дискретном пространстве текстов, при этом сохранив их читаемость и осмысленность. Тут и приходят на помощь LLMки, которые берут это на себя. Авторы рассмотрели два наиболее популярных алгоритма — Genetic Algorithm и Differential Evolution и адаптировали их для работы с промптами. На почти каждом из 9 датасетов из валидации удалось добиться лучших результатов по сравнению с другими методами, в том числе и ручной настройкой.
Отличительная черта этого метода заключается в том, что мы взаимодействуем с моделью как с black box — нам не нужен доступ к ее параметрам, градиентам и прочему. Это позволяет нам подбирать промпты, например, для gpt-3.5/4. Никакого файнтюнинга!💃
Примеры для разных задач можно посмотреть на картинке.
И вот несколько дней назад вышла любопытная статья о применении эволюционных алгоритмов совместно с LLM для поиска наилучшего промпта под конкретную задачу. Для тех, кто никак не может решить, использовать “Think step by step” или “Take a deep breath”. Алгоритм максимально простой: у нас есть популяция из N промптов, путем скрещиваний и мутаций мы можем получить набор их потомков. Далее считаем метрики для новых вариантов на отложенном датасете и из всего множества промптов оставляем top N. Эту операцию повторяем T эпох. Интересным здесь, на мой взгляд, является вопрос, как сделать операции скрещивания и мутации в дискретном пространстве текстов, при этом сохранив их читаемость и осмысленность. Тут и приходят на помощь LLMки, которые берут это на себя. Авторы рассмотрели два наиболее популярных алгоритма — Genetic Algorithm и Differential Evolution и адаптировали их для работы с промптами. На почти каждом из 9 датасетов из валидации удалось добиться лучших результатов по сравнению с другими методами, в том числе и ручной настройкой.
Отличительная черта этого метода заключается в том, что мы взаимодействуем с моделью как с black box — нам не нужен доступ к ее параметрам, градиентам и прочему. Это позволяет нам подбирать промпты, например, для gpt-3.5/4. Никакого файнтюнинга!
Примеры для разных задач можно посмотреть на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤯1
В продолжение предыдущего поста: если интересна тема промптов в целом, советую посмотреть Prompt Engineering Guide. Там разбираются сначала базовые вещи для генерации моделей и составления промптов, а дальше идет обзор существующих методов (CoT, Self-Consistency, ToT, ReAct, RAG и много чего еще), которые можно брать на вооружение. Причем это уже не только про промпты, а вообще про подходы к решению различных задач (RAG, например, активно используется для построения всяких Retrieval систем). Здорово, что авторы периодически обновляют материалы, в прошлый раз, когда смотрел, там не было Tree of Thoughts. В конце для особо интересующихся есть классная секция Risk & Misuses про различные атаки на модель (Prompt Injection, Prompt Leaking, Waluigi Effect и так далее)
www.promptingguide.ai
Prompt Engineering Guide | Prompt Engineering Guide
A Comprehensive Overview of Prompt Engineering
👍11✍1
Начитался тут слухов про появление 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