Физика языковых моделей: серия статей от FAIR
В прошлом году не успели поделиться с вами разбором полезной работы от исследователя лаборатории FAIR (Facebook AI Research) Цзэюань Аллен-Чжу. Исправляемся! В двухчасовом докладе и серии статей описаны свойства языковых моделей и приведено множество инсайтов.
Самые интересные идеи:
— LLM способна выучивать графы причинно-следственных связей для решения сложных задач. (Пример задачи: «В школе 10 аудиторий, в каждой по 15 парт, за каждой партой — два стула. Сколько всего стульев в школе?»). Если задача более запутанная, со сложным графом зависимостей, модель может использовать топологическую сортировку, чтобы понять порядок вычислений. Для повышения точности этого процесса предлагается обучать модель на дополнительных синтетических задачах. Описанный подход называется Level-1 reasoning.
— Перед генерацией первого токена LLM заранее просчитывает все промежуточные данные для построения ответа. Иногда модель допускает ошибки: вычисляет лишние данные или пытается оперировать тем, что ещё не вычислено. Этот процесс называется Level-2 reasoning.
— LLM способна определить, где произошла ошибка при генерации ответа. Для этого можно обучить Linear Probe, который с вероятностью около 99% предскажет место ошибки. Автор также предлагает добавить в обучающую выборку примеры Сhain-of-Thought, где модель не только ошибается, но и исправляет свои ошибки. Чем больше таких данных, тем выше становится качество модели.
— Ещё одна синтетическая задача для обучения модели — определение принадлежности последовательности грамматике Хомского. Задача формулируется так: даны правила раскрытия токенов (например: 5 → 43, 4 → 22, 3 → 11), и нужно понять, можно ли с их помощью сгенерировать последовательность 1122 (можно) или 1212 (нельзя). Оказалось, GPT не только успешно обучается на такую задачу, но и умеет определять, из каких нетерминальных токенов были сгенерированы подпоследовательности. При этом BERT, хотя и справляется с задачей, не оперирует понятием нетерминальных токенов.
Дополнительные инсайты:
— Претрейн должен содержать QA и другие задачи извлечения знаний (Knowledge Extraction, NE). Если только файнтюн содержит NE, модель будет плохо обобщаться на подобные задачи.
— Ошибки в данных на претрейне снижают качество, и стадия файнтюнинга не исправляет ситуацию.
— Аугментации заметно улучшают обобщающую способность модели. Это неудивительно, ведь они работают с перестановкой предложений, переформулировкой, стилистикой, переводами.
— Модели типа BERT работают хуже, чем GPT-архитектуры. Это объясняется авторегрессионной природой вторых, которая позволяет эффективнее генерировать и предсказывать последовательности (см. пункт о грамматике Хомского).
— Использование Сhain-of-Thought улучшает точность модели.
— GatedFFN работает хуже, чем обычный FFN.
— Универсальный закон: эффективность хранения информации (выученной из тренировочного датасета) в хорошо обученной LLM равна двум битам на один параметр модели. Этот закон действует для широкого диапазона размеров LLM.
Разбор подготовил❣ Александр Шишеня
Душный NLP
—
Meta признана экстремистской организацией, а Facebook и Instagram запрещены на территории РФ
В прошлом году не успели поделиться с вами разбором полезной работы от исследователя лаборатории FAIR (Facebook AI Research) Цзэюань Аллен-Чжу. Исправляемся! В двухчасовом докладе и серии статей описаны свойства языковых моделей и приведено множество инсайтов.
Самые интересные идеи:
— LLM способна выучивать графы причинно-следственных связей для решения сложных задач. (Пример задачи: «В школе 10 аудиторий, в каждой по 15 парт, за каждой партой — два стула. Сколько всего стульев в школе?»). Если задача более запутанная, со сложным графом зависимостей, модель может использовать топологическую сортировку, чтобы понять порядок вычислений. Для повышения точности этого процесса предлагается обучать модель на дополнительных синтетических задачах. Описанный подход называется Level-1 reasoning.
— Перед генерацией первого токена LLM заранее просчитывает все промежуточные данные для построения ответа. Иногда модель допускает ошибки: вычисляет лишние данные или пытается оперировать тем, что ещё не вычислено. Этот процесс называется Level-2 reasoning.
— LLM способна определить, где произошла ошибка при генерации ответа. Для этого можно обучить Linear Probe, который с вероятностью около 99% предскажет место ошибки. Автор также предлагает добавить в обучающую выборку примеры Сhain-of-Thought, где модель не только ошибается, но и исправляет свои ошибки. Чем больше таких данных, тем выше становится качество модели.
— Ещё одна синтетическая задача для обучения модели — определение принадлежности последовательности грамматике Хомского. Задача формулируется так: даны правила раскрытия токенов (например: 5 → 43, 4 → 22, 3 → 11), и нужно понять, можно ли с их помощью сгенерировать последовательность 1122 (можно) или 1212 (нельзя). Оказалось, GPT не только успешно обучается на такую задачу, но и умеет определять, из каких нетерминальных токенов были сгенерированы подпоследовательности. При этом BERT, хотя и справляется с задачей, не оперирует понятием нетерминальных токенов.
Дополнительные инсайты:
— Претрейн должен содержать QA и другие задачи извлечения знаний (Knowledge Extraction, NE). Если только файнтюн содержит NE, модель будет плохо обобщаться на подобные задачи.
— Ошибки в данных на претрейне снижают качество, и стадия файнтюнинга не исправляет ситуацию.
— Аугментации заметно улучшают обобщающую способность модели. Это неудивительно, ведь они работают с перестановкой предложений, переформулировкой, стилистикой, переводами.
— Модели типа BERT работают хуже, чем GPT-архитектуры. Это объясняется авторегрессионной природой вторых, которая позволяет эффективнее генерировать и предсказывать последовательности (см. пункт о грамматике Хомского).
— Использование Сhain-of-Thought улучшает точность модели.
— GatedFFN работает хуже, чем обычный FFN.
— Универсальный закон: эффективность хранения информации (выученной из тренировочного датасета) в хорошо обученной LLM равна двум битам на один параметр модели. Этот закон действует для широкого диапазона размеров LLM.
Разбор подготовил
Душный NLP
—
Meta признана экстремистской организацией, а Facebook и Instagram запрещены на территории РФ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🔥11❤8
Интересные решения из технического отчёта DeepSeek-V3 — часть I
В конце прошлого года вышел технический отчёт модели DeepSeek-V3. У неё 671 миллиардов параметров, из которых активные — 37 миллиардов (то есть меньше 1/16). Обучение длилось два месяца на 2 тысячах GPU H800. Впервые в истории LLM обучали на FP8 и с высокой степенью разреженности (sparsity). Полученная модель вошла в топ-10 на Chatbot Arena. Кроме того, DeepSeek-V3 хорошо показывала себя в бенчмарках.
Изучили технический отчёт и рассказываем, какие необычные и даже новаторские решения в нём есть. Обзор получился объёмным, поэтому мы поделили его на два поста.
MLA
Метод, который называется Multi-head Latent Attention (MLA), используют как альтернативу Grouped Query Attention (GQA) для снижения объёма KV-кэша. Этот подход апробировали ещё в июне 2024 года в DeepSeek-V2. Как утверждают разработчики, по качеству MLA превосходит GQA и Multi-Query Attention и сопоставим с Multi-Head Attention.
Суть MLA заключается в сжатии скрытого представления в латентные вектора и хранении их на продакшене вместо Key Value. Во время генерации токенов KV восстанавливается из латентных векторов, что требует отдельных, но не слишком затратных вычислений.
Такой подход позволяет здорово экономить память, однако лишает возможности применять Rotary Position Embedding (RoPE) — способ несовместим с низкоранговым сжатием KV. Чтобы обойти проблему, в DeepSeek прибегли к методу Decoupled Rotary Position Embedding. Он предполагает добавление к каждой голове вектора с RoPE.
В результате не происходит деградации качества из-за того, что для большей части каждой головы позиционные эмбеддинги не обрабатываются. При этом модель сохраняет способность учитывать очень длинные контексты, так как её производительность не ухудшается даже при значительном удалении токенов от начальной позиции.
После претрейна разработчики расширили контекст, используя YaRN-подход (Yet another RoPE extension) — c 4 тысяч токенов до 128 тысяч. В тесте Needle In A Haystack, по условиям которого нужно найти ответ на вопрос в контексте на 128 тысяч токенов, DeepSeek-V3 в 100% случаев справлялась с задачей. Сама по себе она несложная, но демонстрирует умение модели работать с большими контекстами.
MoE
По сравнению с DeepSeek-V2 изменился подход к Mixture-of-Experts. Здесь есть общие эксперты (Shared experts), которые применяются ко всем входным токенам, и маршрутизируемые эксперты (Routed experts), среди которых выбираются лучшие для решения конкретной задачи.
Специальный лосс для контроля загруженности экспертов не используется. Вместо этого для каждого эксперта вводится определённый bias, через который и осуществляется балансировка. Если эксперт вызывается слишком часто, то bias уменьшается, слишком редко — увеличивается. Благодаря этому обучение получается более стабильным, чем при использовании лоссов.
Однако разработчикам всё-таки пришлось ввести балансировочный лосс. Описанный выше способ приводит к тому, что эксперты становятся домен-специфичными. Дополнительный лосс позволяет избежать этого, создавая разнообразие в выдаче. Благодаря хорошей балансировке нагрузки в процессе обучения DeepSeek-V3 не отбрасывает ни одного токена.
Для снижения затрат на коммуникации использовали метод Node-Limited Routing. Он вводит ограничение на число хостов, куда может быть направлен токен. Сперва выбираются хосты, которые содержат необходимых экспертов, а затем среди них с помощью алгоритма top-K routing выбираются лучшие для конкретного токена.
Во второй части расскажем о FP8-квантизации, результатах на бенчмарках и не только. Не переключайтесь!
Разбор подготовил❣ Михаил Хрущев
Душный NLP
В конце прошлого года вышел технический отчёт модели DeepSeek-V3. У неё 671 миллиардов параметров, из которых активные — 37 миллиардов (то есть меньше 1/16). Обучение длилось два месяца на 2 тысячах GPU H800. Впервые в истории LLM обучали на FP8 и с высокой степенью разреженности (sparsity). Полученная модель вошла в топ-10 на Chatbot Arena. Кроме того, DeepSeek-V3 хорошо показывала себя в бенчмарках.
Изучили технический отчёт и рассказываем, какие необычные и даже новаторские решения в нём есть. Обзор получился объёмным, поэтому мы поделили его на два поста.
MLA
Метод, который называется Multi-head Latent Attention (MLA), используют как альтернативу Grouped Query Attention (GQA) для снижения объёма KV-кэша. Этот подход апробировали ещё в июне 2024 года в DeepSeek-V2. Как утверждают разработчики, по качеству MLA превосходит GQA и Multi-Query Attention и сопоставим с Multi-Head Attention.
Суть MLA заключается в сжатии скрытого представления в латентные вектора и хранении их на продакшене вместо Key Value. Во время генерации токенов KV восстанавливается из латентных векторов, что требует отдельных, но не слишком затратных вычислений.
Такой подход позволяет здорово экономить память, однако лишает возможности применять Rotary Position Embedding (RoPE) — способ несовместим с низкоранговым сжатием KV. Чтобы обойти проблему, в DeepSeek прибегли к методу Decoupled Rotary Position Embedding. Он предполагает добавление к каждой голове вектора с RoPE.
В результате не происходит деградации качества из-за того, что для большей части каждой головы позиционные эмбеддинги не обрабатываются. При этом модель сохраняет способность учитывать очень длинные контексты, так как её производительность не ухудшается даже при значительном удалении токенов от начальной позиции.
После претрейна разработчики расширили контекст, используя YaRN-подход (Yet another RoPE extension) — c 4 тысяч токенов до 128 тысяч. В тесте Needle In A Haystack, по условиям которого нужно найти ответ на вопрос в контексте на 128 тысяч токенов, DeepSeek-V3 в 100% случаев справлялась с задачей. Сама по себе она несложная, но демонстрирует умение модели работать с большими контекстами.
MoE
По сравнению с DeepSeek-V2 изменился подход к Mixture-of-Experts. Здесь есть общие эксперты (Shared experts), которые применяются ко всем входным токенам, и маршрутизируемые эксперты (Routed experts), среди которых выбираются лучшие для решения конкретной задачи.
Специальный лосс для контроля загруженности экспертов не используется. Вместо этого для каждого эксперта вводится определённый bias, через который и осуществляется балансировка. Если эксперт вызывается слишком часто, то bias уменьшается, слишком редко — увеличивается. Благодаря этому обучение получается более стабильным, чем при использовании лоссов.
Однако разработчикам всё-таки пришлось ввести балансировочный лосс. Описанный выше способ приводит к тому, что эксперты становятся домен-специфичными. Дополнительный лосс позволяет избежать этого, создавая разнообразие в выдаче. Благодаря хорошей балансировке нагрузки в процессе обучения DeepSeek-V3 не отбрасывает ни одного токена.
Для снижения затрат на коммуникации использовали метод Node-Limited Routing. Он вводит ограничение на число хостов, куда может быть направлен токен. Сперва выбираются хосты, которые содержат необходимых экспертов, а затем среди них с помощью алгоритма top-K routing выбираются лучшие для конкретного токена.
Во второй части расскажем о FP8-квантизации, результатах на бенчмарках и не только. Не переключайтесь!
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥68👍21❤11👏3
Интересные решения из технического отчёта DeepSeek-V3 — часть II
Продолжаем разбираться, как устроена DeepSeek-V3, изучая технический отчёт её создателей. В первой части речь шла о MLA и MoE, а сегодня поговорим о предсказании токенов и квантизации. Ну и, наконец, коснёмся результатов на бенчмарках
MTP
Метод Multi-Token Prediction (MTP) предполагает предсказание сразу нескольких токенов на этапе претрейна. В MTP эмбеддинг после всех трансформерных слоёв и перед выходной головой отправляется в дополнительный трансформерный блок (первое изображение).
Через линейную проекцию формируется новое представление, которое затем обрабатывается этим дополнительным блоком, эквивалентным по архитектуре стандартным слоям трансформера. Итоговое представление используется для предсказания сразу нескольких токенов.
Pipeline parallelism
Pipeline parallelism — это метод распределения работы модели, при котором разные слои исполняются на разных устройствах. Такой подход позволяет увеличивать количество шагов аккумуляции градиентов, уменьшая суммарное число коммуникаций. Однако при pipeline parallelism образуются «пузыри» — это периоды времени, когда устройства простаивают в ожидании данных от других устройств.
В решении этой проблемы создатели DeepSeek-V3 ссылаются на статью Zero Bubble. Её идея состоит в разбивании backward на два шага: на ту часть, которая считает сквозные градиенты, и отдельно градиенты на веса. Это полностью решает проблему «пузырей» в случаях, если количество шагов аккумуляции градиента в два раза больше пайплайна. Однако остаётся проблема коммуникаций — простои могут возникать, например, когда одно устройство передаёт другому активации со слоя на слой. Кроме того, в этом методе нужно хранить достаточно много промежуточных градиентов для вычисления градиента по весам.
В DeepSeek изобрели метод DualPipe (второе изображение). Каждый фрагмент forward и backward делится на четыре части: attention, all-to-all dispatch, MLP и all-to-all combine. Кроме того, вводится компонент коммуникации в рамках pipeline parallelism (PP communication). Создатели меняют местами эти части и вручную регулируют, сколько ресурсов GPU выделять на коммуникации и вычисления. Микробатчи при этом подаются с обоих концов пайплайна одновременно. Всё это позволяет минимизировать задержки, перекрывая коммуникации с вычислениями. «Пузыри» всё равно остаются, но, как отмечают в DeepSeek, они несущественны.
FP8-квантизация
FP8-квантизация не очень подходит для больших моделей из-за широкого диапазона весов, активаций и градиентов. Использование FP8-квантизации в таких условиях может приводить к выбросам, а следовательно, и потере качества.
Чтобы справиться с выбросами, создатели DeepSeek-V3 применяли блочную квантизацию. Для весов брались блоки 128x128 — и для каждого такого блока вычислялся свой скейл. А для активаций размер блока составлял 1x128, чтобы выбросы, если они происходят, затрагивали лишь небольшую часть активаций.
Разработчики также выяснили, что GEMM, реализованная на H800, аккумулирует результаты матричного умножения во что-то близкое к 14 битам, хотя должно быть 32 бита. Из-за этого одно матричное умножение может приводить к ошибке в 2%. Нехватку точности вручную добавляли к обычному FP32-регистру.
Итог
Благодаря всем сделанным разработчиками трюкам DeepSeek-V3 показывает отличные результаты в бенчмарках (третье изображение). На MMLU модель получает 88,5 процентных пункта, проигрывая лишь Llama 3.1 на 405B с 88,6 пп. На математических задачах (MATH-500, AIME 2024, CNMO 2024) DeepSeek — абсолютный лидер. В части программирования модель незначительно уступает Claude-3.5. Таким образом, DeepSeek-V3 — это одна из лучших опенсорсных моделей прямо сейчас.
Разбор подготовил❣ Михаил Хрущев
Душный NLP
Продолжаем разбираться, как устроена DeepSeek-V3, изучая технический отчёт её создателей. В первой части речь шла о MLA и MoE, а сегодня поговорим о предсказании токенов и квантизации. Ну и, наконец, коснёмся результатов на бенчмарках
MTP
Метод Multi-Token Prediction (MTP) предполагает предсказание сразу нескольких токенов на этапе претрейна. В MTP эмбеддинг после всех трансформерных слоёв и перед выходной головой отправляется в дополнительный трансформерный блок (первое изображение).
Через линейную проекцию формируется новое представление, которое затем обрабатывается этим дополнительным блоком, эквивалентным по архитектуре стандартным слоям трансформера. Итоговое представление используется для предсказания сразу нескольких токенов.
Pipeline parallelism
Pipeline parallelism — это метод распределения работы модели, при котором разные слои исполняются на разных устройствах. Такой подход позволяет увеличивать количество шагов аккумуляции градиентов, уменьшая суммарное число коммуникаций. Однако при pipeline parallelism образуются «пузыри» — это периоды времени, когда устройства простаивают в ожидании данных от других устройств.
В решении этой проблемы создатели DeepSeek-V3 ссылаются на статью Zero Bubble. Её идея состоит в разбивании backward на два шага: на ту часть, которая считает сквозные градиенты, и отдельно градиенты на веса. Это полностью решает проблему «пузырей» в случаях, если количество шагов аккумуляции градиента в два раза больше пайплайна. Однако остаётся проблема коммуникаций — простои могут возникать, например, когда одно устройство передаёт другому активации со слоя на слой. Кроме того, в этом методе нужно хранить достаточно много промежуточных градиентов для вычисления градиента по весам.
В DeepSeek изобрели метод DualPipe (второе изображение). Каждый фрагмент forward и backward делится на четыре части: attention, all-to-all dispatch, MLP и all-to-all combine. Кроме того, вводится компонент коммуникации в рамках pipeline parallelism (PP communication). Создатели меняют местами эти части и вручную регулируют, сколько ресурсов GPU выделять на коммуникации и вычисления. Микробатчи при этом подаются с обоих концов пайплайна одновременно. Всё это позволяет минимизировать задержки, перекрывая коммуникации с вычислениями. «Пузыри» всё равно остаются, но, как отмечают в DeepSeek, они несущественны.
FP8-квантизация
FP8-квантизация не очень подходит для больших моделей из-за широкого диапазона весов, активаций и градиентов. Использование FP8-квантизации в таких условиях может приводить к выбросам, а следовательно, и потере качества.
Чтобы справиться с выбросами, создатели DeepSeek-V3 применяли блочную квантизацию. Для весов брались блоки 128x128 — и для каждого такого блока вычислялся свой скейл. А для активаций размер блока составлял 1x128, чтобы выбросы, если они происходят, затрагивали лишь небольшую часть активаций.
Разработчики также выяснили, что GEMM, реализованная на H800, аккумулирует результаты матричного умножения во что-то близкое к 14 битам, хотя должно быть 32 бита. Из-за этого одно матричное умножение может приводить к ошибке в 2%. Нехватку точности вручную добавляли к обычному FP32-регистру.
Итог
Благодаря всем сделанным разработчиками трюкам DeepSeek-V3 показывает отличные результаты в бенчмарках (третье изображение). На MMLU модель получает 88,5 процентных пункта, проигрывая лишь Llama 3.1 на 405B с 88,6 пп. На математических задачах (MATH-500, AIME 2024, CNMO 2024) DeepSeek — абсолютный лидер. В части программирования модель незначительно уступает Claude-3.5. Таким образом, DeepSeek-V3 — это одна из лучших опенсорсных моделей прямо сейчас.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤35🔥18👍8👀2
Лучшие публикации 2024-го по мнению инженеров Яндекса
В 2024 году вышло так много статей по ML, что читать — не перечитать. Руководитель команды YandexGPT Alignment Андрей Бут поделился с нами работами, которые запомнились именно ему. Есть, чем заняться на досуге! А в комментариях рассказывайте, какие публикации ушедшего года запомнились вам и почему.
Статьи, которые упоминает Андрей:
— Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study
— O1 Replication Journey: A Strategic Progress Report
— O1 Replication Journey — Part 2
— Техотчёт Llama 3
— Техотчёт Qwen2.5
— Техотчёт DeepSeek-V3
Душный NLP
В 2024 году вышло так много статей по ML, что читать — не перечитать. Руководитель команды YandexGPT Alignment Андрей Бут поделился с нами работами, которые запомнились именно ему. Есть, чем заняться на досуге! А в комментариях рассказывайте, какие публикации ушедшего года запомнились вам и почему.
Статьи, которые упоминает Андрей:
— Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study
— O1 Replication Journey: A Strategic Progress Report
— O1 Replication Journey — Part 2
— Техотчёт Llama 3
— Техотчёт Qwen2.5
— Техотчёт DeepSeek-V3
Душный NLP
👍45❤11🔥8👏1
Технический отчёт DeepSeek-R1
DeepSeek-R1 — опенсорсная модель, которая на равных конкурирует с o1 от OpenAI. Сегодня разберём технический отчёт её разработчиков.
Компания DeepSeek сделала ставку на RL. В качестве инита взяли DeepSeek-V3-Base и применили метод Group Relative Policy Optimization (GRPO). Система наград включала в себя две составляющие: accuracy reward и format reward. В задачах, связанных с математикой и программированием, получившаяся модель DeepSeek-R1-Zero выдаёт ответы, по качеству на бенчмарках сопоставимые с ответами OpenAI-01-0912.
Однако из-за accuracy reward модель стала тратить больше времени на раздумья. Кроме того, у DeepSeek-R1-Zero возникли способности к рефлексии (reflection) и саморазвитию (self-evolution). Это значит, что модель учится переосмыслять свои генерации и самостоятельно обнаруживать в них ошибки. Разработчики отмечают, что сами не ожидали такого.
Проблема DeepSeek-R1-Zero заключалась в том, что её ответы были трудночитаемыми — модель могла перескакивать с языка на язык в рамках одной генерации. К тому же, они могли быть очень большими — до 10 тысяч токенов. Плюс из отчёта не очень понятно, как модель показывает себя в задачах, не связанных с математикой и кодом.
Весь пайплайн создания финальной версии DeepSeek-R1 разделили на четыре этапа. Первый — Cold Start. В его рамках делали SFT, чтобы повысить читаемость (readability) генераций. В SFT-датасет входили в том числе ответы R1-Zero, исправленные людьми — как отметили в DeepSeek, это дало прирост качества по сравнению с R1-Zero.
Второй этап был аналогичен тому, как обучали R1-Zero, однако здесь к accuracy reward и format reward добавили language consistency reward, чтобы генерации были на одном языке. Качество ответов немного снизилось, однако они больше нравились людям-оценщикам.
Третий этап — Rejection Fine-Tuning. Авторы генерировали ответы на тщательно отобранный набор инструкций и отбирали лучшие, пользуясь, помимо прочего, генеративными наградами на основе DeepSeek-V3. Отсеивались ответы на нескольких языках, слишком длинные генерации и генерации, содержащие код. В итоге получилось 600 тысяч reasoning-примеров. SFT-датасет DeepSeek-V3 использовали как основу для не-reasoning данных, а для ответов на некоторые инструкции генерировали CoT и добавляли его перед ответом. Всего получилось 200 тысяч non-reasoning-примеров.
Последний этап — RLHF. Для reasoning-данных применялся тот же алгоритм, что и в R1-Zero. А для общих данных — стандартные reward-модели, которые оценивали полезность по краткому решению задачи и финальному ответу. А для оценки безвредности рассматривали весь ответ, включая процесс рассуждения.
Получившаяся версия DeepSeek-R1 выигрывает у o1-1217 в пяти из бенчмарках из 11 — в том числе, во всех математических (первая таблица).
В DeepSeek также взяли SFT с V3, сгенерировали ответы с помощью R1 и дистиллировали полученные данные в открытые модели. RL на них не производился. В результате, например, Qwen-7B стала сопоставима по качеству с GPT-4o-0513 (вторая таблица). Однако стоит учесть, что авторы статьи сообщают только о показателях в математических бенчмарках и бенчмарках, проверяющих способность к генерации кода.
В целом, исследование показало, что дистилляция даёт лучшие результаты, чем RL (третья таблица). Но и тут есть оговорка, потому что сравнивали дистилляцию из R1, а RL осуществляли методом, как у R1-Zero.
Авторам статьи не удалось извлечь пользу из метода Process Reward Model (PRM) на этапе обучения. Это было связано со сложностью определения шагов рассуждения их корректности, а также с проблемой «взлома наград».
Также в DeepSeek безуспешно пробовали использовать в обучении Monte Carlo Tree Search (MCTS), как в AlphaGo и AlphaZero. Здесь препятствием стало огромное пространство поиска, которое несравнимо больше, чем в случае с шахматами. Ограничение по top-k при этом приводит к локальному оптимуму. Кроме того, возникают сложности с обучением Value-модели. Тем не менее MCTS способен повысить качество на инференсе.
Разбор подготовил❣ Дмитрий Мокеев
Душный NLP
DeepSeek-R1 — опенсорсная модель, которая на равных конкурирует с o1 от OpenAI. Сегодня разберём технический отчёт её разработчиков.
Компания DeepSeek сделала ставку на RL. В качестве инита взяли DeepSeek-V3-Base и применили метод Group Relative Policy Optimization (GRPO). Система наград включала в себя две составляющие: accuracy reward и format reward. В задачах, связанных с математикой и программированием, получившаяся модель DeepSeek-R1-Zero выдаёт ответы, по качеству на бенчмарках сопоставимые с ответами OpenAI-01-0912.
Однако из-за accuracy reward модель стала тратить больше времени на раздумья. Кроме того, у DeepSeek-R1-Zero возникли способности к рефлексии (reflection) и саморазвитию (self-evolution). Это значит, что модель учится переосмыслять свои генерации и самостоятельно обнаруживать в них ошибки. Разработчики отмечают, что сами не ожидали такого.
Проблема DeepSeek-R1-Zero заключалась в том, что её ответы были трудночитаемыми — модель могла перескакивать с языка на язык в рамках одной генерации. К тому же, они могли быть очень большими — до 10 тысяч токенов. Плюс из отчёта не очень понятно, как модель показывает себя в задачах, не связанных с математикой и кодом.
Весь пайплайн создания финальной версии DeepSeek-R1 разделили на четыре этапа. Первый — Cold Start. В его рамках делали SFT, чтобы повысить читаемость (readability) генераций. В SFT-датасет входили в том числе ответы R1-Zero, исправленные людьми — как отметили в DeepSeek, это дало прирост качества по сравнению с R1-Zero.
Второй этап был аналогичен тому, как обучали R1-Zero, однако здесь к accuracy reward и format reward добавили language consistency reward, чтобы генерации были на одном языке. Качество ответов немного снизилось, однако они больше нравились людям-оценщикам.
Третий этап — Rejection Fine-Tuning. Авторы генерировали ответы на тщательно отобранный набор инструкций и отбирали лучшие, пользуясь, помимо прочего, генеративными наградами на основе DeepSeek-V3. Отсеивались ответы на нескольких языках, слишком длинные генерации и генерации, содержащие код. В итоге получилось 600 тысяч reasoning-примеров. SFT-датасет DeepSeek-V3 использовали как основу для не-reasoning данных, а для ответов на некоторые инструкции генерировали CoT и добавляли его перед ответом. Всего получилось 200 тысяч non-reasoning-примеров.
Последний этап — RLHF. Для reasoning-данных применялся тот же алгоритм, что и в R1-Zero. А для общих данных — стандартные reward-модели, которые оценивали полезность по краткому решению задачи и финальному ответу. А для оценки безвредности рассматривали весь ответ, включая процесс рассуждения.
Получившаяся версия DeepSeek-R1 выигрывает у o1-1217 в пяти из бенчмарках из 11 — в том числе, во всех математических (первая таблица).
В DeepSeek также взяли SFT с V3, сгенерировали ответы с помощью R1 и дистиллировали полученные данные в открытые модели. RL на них не производился. В результате, например, Qwen-7B стала сопоставима по качеству с GPT-4o-0513 (вторая таблица). Однако стоит учесть, что авторы статьи сообщают только о показателях в математических бенчмарках и бенчмарках, проверяющих способность к генерации кода.
В целом, исследование показало, что дистилляция даёт лучшие результаты, чем RL (третья таблица). Но и тут есть оговорка, потому что сравнивали дистилляцию из R1, а RL осуществляли методом, как у R1-Zero.
Авторам статьи не удалось извлечь пользу из метода Process Reward Model (PRM) на этапе обучения. Это было связано со сложностью определения шагов рассуждения их корректности, а также с проблемой «взлома наград».
Также в DeepSeek безуспешно пробовали использовать в обучении Monte Carlo Tree Search (MCTS), как в AlphaGo и AlphaZero. Здесь препятствием стало огромное пространство поиска, которое несравнимо больше, чем в случае с шахматами. Ограничение по top-k при этом приводит к локальному оптимуму. Кроме того, возникают сложности с обучением Value-модели. Тем не менее MCTS способен повысить качество на инференсе.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤7🔥5
Сбалансированный метод семплирования Min-p
Min-p — метод семплирования, который, по словам его создателей, позволяет найти баланс между креативностью и связностью ответов. Сегодня разберём статью с описанием этого подхода.
При использовании отсекающего семплирования вроде top-p или top-k, на каждом шаге генерации после отсечения может всё ещё оставаться ненужный нам «хвост» из маловероятных токенов. Это приводит к тому, что вероятность допустить ошибку на следующем шаге генерации — не нулевая. А токен — не воробей, вылетит — не поймаешь. Из-за этого может пострадать весь ответ.
Это происходит потому что top-p и top-k предполагают применение жёсткого порога отсечения, который никак не зависит от шага генерации и уверенности модели в следующем токене. А подобрать универсальный порог на все случаи жизни невозможно.
Метод Min-p пытается решить эту проблему с помощью динамической настройки порога в зависимости от токена с самой высокой вероятностью. Если модель уверена в токене, то порог обрезки будет высокий. Если сомневается — то из распределения возьмётся больше токенов.
Как это работает:
1. выбирается токен с наибольшей вероятностью — Pmax;
2. гиперпараметр метода — базовый порог вероятности, Pbase (авторы рекомендуют выбирать между 0,05 и 0,1) — умножается на Pmax, и получается порог отсечки — Pscaled. По нему отсекаются токены, всё, что ниже, выкидывается;
3.формируется пул для семплирования из оставшихся токенов;
4. вероятности нормализуются.
Получается, что на каждом шаге генерации порог отсечки может меняться. При этом ресурсозатраты метода не намного выше, чем у Top-p.
Преимущество Min-p в том, что этот метод подходит для разных температур — даже при высоком значении в 3-5. Важный момент: температура должна применяться после Min-p. Авторы не рекомендуют использовать Min-p с другими методами семплирования, хотя они и могут сочетаться.
Авторы тестировали метод на Mistral 7B в трёх бенчмарках: GPQA Main, GSM8K CoT — которые проверяют конкретные знания — и AlpacaEval Creative Writing. На первых двух бенчмарках Min-p может показывать результаты чуть хуже, чем Top-p при низких температурах. Зато в AlpacaEval Creative Writing, где осуществляется SbS-сравнение на креативных задачах, он строго лучше.
Разбор подготовил❣ Алексей Малафеев
Душный NLP
Min-p — метод семплирования, который, по словам его создателей, позволяет найти баланс между креативностью и связностью ответов. Сегодня разберём статью с описанием этого подхода.
При использовании отсекающего семплирования вроде top-p или top-k, на каждом шаге генерации после отсечения может всё ещё оставаться ненужный нам «хвост» из маловероятных токенов. Это приводит к тому, что вероятность допустить ошибку на следующем шаге генерации — не нулевая. А токен — не воробей, вылетит — не поймаешь. Из-за этого может пострадать весь ответ.
Это происходит потому что top-p и top-k предполагают применение жёсткого порога отсечения, который никак не зависит от шага генерации и уверенности модели в следующем токене. А подобрать универсальный порог на все случаи жизни невозможно.
Метод Min-p пытается решить эту проблему с помощью динамической настройки порога в зависимости от токена с самой высокой вероятностью. Если модель уверена в токене, то порог обрезки будет высокий. Если сомневается — то из распределения возьмётся больше токенов.
Как это работает:
1. выбирается токен с наибольшей вероятностью — Pmax;
2. гиперпараметр метода — базовый порог вероятности, Pbase (авторы рекомендуют выбирать между 0,05 и 0,1) — умножается на Pmax, и получается порог отсечки — Pscaled. По нему отсекаются токены, всё, что ниже, выкидывается;
3.формируется пул для семплирования из оставшихся токенов;
4. вероятности нормализуются.
Получается, что на каждом шаге генерации порог отсечки может меняться. При этом ресурсозатраты метода не намного выше, чем у Top-p.
Преимущество Min-p в том, что этот метод подходит для разных температур — даже при высоком значении в 3-5. Важный момент: температура должна применяться после Min-p. Авторы не рекомендуют использовать Min-p с другими методами семплирования, хотя они и могут сочетаться.
Авторы тестировали метод на Mistral 7B в трёх бенчмарках: GPQA Main, GSM8K CoT — которые проверяют конкретные знания — и AlpacaEval Creative Writing. На первых двух бенчмарках Min-p может показывать результаты чуть хуже, чем Top-p при низких температурах. Зато в AlpacaEval Creative Writing, где осуществляется SbS-сравнение на креативных задачах, он строго лучше.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥5❤3
А в нашем канале ML Underhood (подписывайтесь, если ещё не!) — краткий обзор большой статьи о новом LLM-переводчике Яндекса. Отличный текст, чтобы с пользой провести пятничный вечер.
Forwarded from ML Underhood
Документный LLM-переводчик в Яндексе
Яндекс запустил новую модель для документного перевода на основе YandexGPT. Она уже работает в Поиске, Умной камере и Нейропереводчике Яндекс Браузера, а также заняла первое место в бенчмарке DiBiMT по переводу с английского на русский. Обо всех нюансах работы переводчика и о том, как его создавали, на Хабре рассказал руководитель группы базового качества перевода Николай Карпачёв. А здесь — кратко о главном.
Документный перевод предполагает адаптацию на другой язык не каждого отдельного предложения, а всего текста. Почему это важно? Причин несколько. Например, английское «you» может означать как «ты», так и «вы», но без контекста модель не понимает, какой вариант выбрать. Термины и стилистика могут «прыгать» внутри текста, а пропущенные элементы, понятные носителю языка, в переводе превращаются в бессмысленный набор слов. Люди воспринимают текст иначе: мы читаем книги, статьи, субтитры — всё целиком. Значит, и машинный перевод должен работать так же.
Инженеры Яндекса попробовали перевести тексты LLM-моделью «из коробки», без дообучения, но столкнулись с типичными ошибками: пропущенные фрагменты, лишние добавления, галлюцинации. Чтобы этого избежать, модель пришлось адаптировать. На первом этапе подготовили данные, включая не только классические парные предложения, но и переводы документов, полученные автоматическим выравниванием и с помощью синтетики. Дообучение проходило в форматах LoRA и P-Tuning.
На следующем этапе модель дообучалась с помощью технологии alignment. Разные варианты переводов сравнивались редакторами-профессионалами. Полученные оценки использовали для оптимизации методом Contrastive Preference Optimization (CPO). На этой стадии происходит исправление существующих ошибок и проблем LLM-модели, найденных редакторами. Это позволило минимизировать ошибки, связанные с потерей информации и несогласованностью.
В итоге по метрике MQM новая модель переводит тексты почти так же хорошо, как человек. Количество грубых ошибок сократилось в два раза по сравнению с предыдущей версией, а финальный результат оказался даже лучше GPT-4o.
ML Underhood
Яндекс запустил новую модель для документного перевода на основе YandexGPT. Она уже работает в Поиске, Умной камере и Нейропереводчике Яндекс Браузера, а также заняла первое место в бенчмарке DiBiMT по переводу с английского на русский. Обо всех нюансах работы переводчика и о том, как его создавали, на Хабре рассказал руководитель группы базового качества перевода Николай Карпачёв. А здесь — кратко о главном.
Документный перевод предполагает адаптацию на другой язык не каждого отдельного предложения, а всего текста. Почему это важно? Причин несколько. Например, английское «you» может означать как «ты», так и «вы», но без контекста модель не понимает, какой вариант выбрать. Термины и стилистика могут «прыгать» внутри текста, а пропущенные элементы, понятные носителю языка, в переводе превращаются в бессмысленный набор слов. Люди воспринимают текст иначе: мы читаем книги, статьи, субтитры — всё целиком. Значит, и машинный перевод должен работать так же.
Инженеры Яндекса попробовали перевести тексты LLM-моделью «из коробки», без дообучения, но столкнулись с типичными ошибками: пропущенные фрагменты, лишние добавления, галлюцинации. Чтобы этого избежать, модель пришлось адаптировать. На первом этапе подготовили данные, включая не только классические парные предложения, но и переводы документов, полученные автоматическим выравниванием и с помощью синтетики. Дообучение проходило в форматах LoRA и P-Tuning.
На следующем этапе модель дообучалась с помощью технологии alignment. Разные варианты переводов сравнивались редакторами-профессионалами. Полученные оценки использовали для оптимизации методом Contrastive Preference Optimization (CPO). На этой стадии происходит исправление существующих ошибок и проблем LLM-модели, найденных редакторами. Это позволило минимизировать ошибки, связанные с потерей информации и несогласованностью.
В итоге по метрике MQM новая модель переводит тексты почти так же хорошо, как человек. Количество грубых ошибок сократилось в два раза по сравнению с предыдущей версией, а финальный результат оказался даже лучше GPT-4o.
ML Underhood
👍27❤8🔥7🤮2😁1
Яндекс выпустила новое поколение LLM — YandexGPT 5. Модели можно опробовать в облаке, Алисе и открытом доступе. Делимся подробностями обучения и результатами бенчмарков.
🔥7👍5❤3
Forwarded from ML Underhood
YandexGPT 5 уже в опенсорсе и Алисе
Сегодня Яндекс показал миру новое поколение больших языковых моделей — YandexGPT 5. Старшая модель YandexGPT 5 Pro доступна в чате с Алисой и Yandex Cloud через API. Ну а претрейн-версия младшей модели YandexGPT 5 Lite Pretrain — уже лежит на Hugging Face.
Все подробности о процессе обучения можно прочитать в статье на Хабре. А в этом посте — главные факты о свежей опенсорсной модели Яндекса.
YandexGPT 5 Lite Pretrain — модель на 8 миллиардов параметров с длиной контекста 32 тысячи токенов. Претрейн проходил в два этапа: сначала модель обучили на 15 триллионах токенов текста на русском и английском языках, а потом использовали 320 миллиардов токенов высококачественных данных, включая образовательный контент.
На первом этапе датасет больше чем на половину состоял из веб-документов, остальное — код, математика и специфичные данные. Под последними подразумеваются синтетика (сгенерированные YandexGPT 4 вопросы на основе проверенных источников) и внутренние наработки компании (например, внутренняя база Яндекса Fact Snippet и новый корпус данных Переводчика).
На втором этапе датасет на четверть состоял из веб-страниц и почти в равных пропорциях содержал математику, код и образовательные данные. Также была небольшая часть аугментаций фактовых документов, другой синтетики и датасетов сервисов.
По сравнению с моделью предыдущего поколения, YandexGPT 4 Lite Pretrain, новая модель показывает ощутимый рост качества в решении математических задач и написании кода. А в сравнении с зарубежными аналогами, такими как LLaMa3.1-8B и Qwen-2.5-7B-base, она лидирует почти во всех типах задач.
Ещё раз приглашаем пощупать модель, почитать статью на Хабре с деталями обучения и не забыть поделиться впечатлениями в комментариях!
ML Underhood
Сегодня Яндекс показал миру новое поколение больших языковых моделей — YandexGPT 5. Старшая модель YandexGPT 5 Pro доступна в чате с Алисой и Yandex Cloud через API. Ну а претрейн-версия младшей модели YandexGPT 5 Lite Pretrain — уже лежит на Hugging Face.
Все подробности о процессе обучения можно прочитать в статье на Хабре. А в этом посте — главные факты о свежей опенсорсной модели Яндекса.
YandexGPT 5 Lite Pretrain — модель на 8 миллиардов параметров с длиной контекста 32 тысячи токенов. Претрейн проходил в два этапа: сначала модель обучили на 15 триллионах токенов текста на русском и английском языках, а потом использовали 320 миллиардов токенов высококачественных данных, включая образовательный контент.
На первом этапе датасет больше чем на половину состоял из веб-документов, остальное — код, математика и специфичные данные. Под последними подразумеваются синтетика (сгенерированные YandexGPT 4 вопросы на основе проверенных источников) и внутренние наработки компании (например, внутренняя база Яндекса Fact Snippet и новый корпус данных Переводчика).
На втором этапе датасет на четверть состоял из веб-страниц и почти в равных пропорциях содержал математику, код и образовательные данные. Также была небольшая часть аугментаций фактовых документов, другой синтетики и датасетов сервисов.
По сравнению с моделью предыдущего поколения, YandexGPT 4 Lite Pretrain, новая модель показывает ощутимый рост качества в решении математических задач и написании кода. А в сравнении с зарубежными аналогами, такими как LLaMa3.1-8B и Qwen-2.5-7B-base, она лидирует почти во всех типах задач.
Ещё раз приглашаем пощупать модель, почитать статью на Хабре с деталями обучения и не забыть поделиться впечатлениями в комментариях!
ML Underhood
👍23🔥15❤10🤮2🫡2
Технический отчёт Qwen2.5-Coder
Qwen2.5-Coder — семейство моделей, предназначенных для генерации кода. Его технический отчёт вышел ещё в прошлом году, но там много интересного, что стоит разобрать. Этим и займёмся.
Модель учили работать как с отдельными файлами, так и с целыми репозиториями. Что касается токенизации, то авторы взяли словарь Qwen2.5 на 151,646 токенов, но добавили к нему спецтокены. Например, для обучения в режиме Fill-in-the-Middle (FIM).
В датасете для допретрейна было пять типов данных:
— код на 92 языках программирования — примеры брали с GitHub до февраля 2024 года. Использовали фильтры на эвристиках, чтобы отсеять некачественные данные;
— text-code grounding data — уже не только код, но и документация, руководства. Использовали итеративную иерархическую фильтрацию: сперва брали большой массив данных, но с каждым шагом фильтрации их становилось всё меньше;
— синтетические данные — их генерировали с помощью CodeQwen1.5. Оставляли только выполнявшийся код;
— математические данные — использовали претрейн-датасет Qwen2.5-Math;
— текст — использовали данные из претрейна Qwen2.5, но без кода. Авторы хотели, чтобы модель получилась достаточно универсальной и умела решать различные задачи, а не только связанные с программированием. По результатам бенчмарков, лучше всего себя показала пропорция кода, математики и текста — 7:2:1.
Сперва был допретрейн на уровне файлов. Контекстное окно тут составляло не более 8 тысяч токенов. Здесь как раз и использовали FIM. Следом шло обучение на уровне репозиториев с контекстным окном до 32 тысяч токенов за счёт увеличения параметра RoPE base до миллиона. Для экстраполяции до 128 тысяч применяли технику YARN.
На посттрейне обучили модель CodeBERT, чтобы классифицировать документы по примерно сотне языков программирования. При этом авторы сохраняли все найденные документы на популярных языках, а те, которые написаны на редких — частично удаляли. Кроме того, убирали все примеры без кода, потому что на этапе инструктивного обучения они ухудшали показатели на бенчмарках.
Для репозиториев на GitHub генерировали инструкции неназванной в отчёте LLM, а с помощью другой модели — тоже неназванной — создавали ответы. Третья LLM занималась фильтрацией полученных пар. Для повышения точности использовали фьюшот на опенсорсных инстракт-датасетах — например, McEval-Instruct.
Для формирования мультиязычного SFT-датасета использовали языкоспецефичных агентов, у каждого из которых, как заявляют авторы, был свой банк памяти с историей генераций. В целом, в техническом отчёте не хватает конкретики по SFT-датасету. Оценка получившихся пар примеров производилась по чеклисту из 9 параметров. Среди них: соответствие ответа вопросу, сложность, наличие кода, его правильность и ясность.
Самый трудный с точки зрения разработки элемент — это мультиязычная «песочница». Нужно было обеспечить поддержку каждого из 92 языков программирования, собрать репозиторий эталонного кода, создать генераторы юнит-тестов, движки выполнения и анализаторы результатов. «Песочница» — вещь итеративная, которая нуждается в постоянной поддержке. Для этого разработчики привлекли экспертов, что делает «песочницу» особенно ресурсозатратной.
SFT сперва осуществлялся на нескольких десятках миллионов не слишком качественных, но разнообразных примеров. Затем с помощью rejection sampling выборка снижалась до нескольких миллионов лучших сэмплов.
Чтобы на этапе SFT модель не разучилась работать с длинным контекстом, авторы использовали короткие инстракт-сэмплы с FIM. При этом добавленный контекст — синтаксис — получался с помощью парсинга библиотекой Tree-sitter-languages. Примеров, обогащённых контекстом, было меньше, чем обычных SFT-данных.
В рамках DPO использовали RLEF для сигналов о том, что код работает, а также юнит-тесты для некоторых примеров. Были и примеры без кода, чтобы модель могла решать задачи, не связанные с программированием. В качестве LLM-as-a-judge выступала 4о.
Разбор подготовил❣ Алексей Малафеев
Душный NLP
Qwen2.5-Coder — семейство моделей, предназначенных для генерации кода. Его технический отчёт вышел ещё в прошлом году, но там много интересного, что стоит разобрать. Этим и займёмся.
Модель учили работать как с отдельными файлами, так и с целыми репозиториями. Что касается токенизации, то авторы взяли словарь Qwen2.5 на 151,646 токенов, но добавили к нему спецтокены. Например, для обучения в режиме Fill-in-the-Middle (FIM).
В датасете для допретрейна было пять типов данных:
— код на 92 языках программирования — примеры брали с GitHub до февраля 2024 года. Использовали фильтры на эвристиках, чтобы отсеять некачественные данные;
— text-code grounding data — уже не только код, но и документация, руководства. Использовали итеративную иерархическую фильтрацию: сперва брали большой массив данных, но с каждым шагом фильтрации их становилось всё меньше;
— синтетические данные — их генерировали с помощью CodeQwen1.5. Оставляли только выполнявшийся код;
— математические данные — использовали претрейн-датасет Qwen2.5-Math;
— текст — использовали данные из претрейна Qwen2.5, но без кода. Авторы хотели, чтобы модель получилась достаточно универсальной и умела решать различные задачи, а не только связанные с программированием. По результатам бенчмарков, лучше всего себя показала пропорция кода, математики и текста — 7:2:1.
Сперва был допретрейн на уровне файлов. Контекстное окно тут составляло не более 8 тысяч токенов. Здесь как раз и использовали FIM. Следом шло обучение на уровне репозиториев с контекстным окном до 32 тысяч токенов за счёт увеличения параметра RoPE base до миллиона. Для экстраполяции до 128 тысяч применяли технику YARN.
На посттрейне обучили модель CodeBERT, чтобы классифицировать документы по примерно сотне языков программирования. При этом авторы сохраняли все найденные документы на популярных языках, а те, которые написаны на редких — частично удаляли. Кроме того, убирали все примеры без кода, потому что на этапе инструктивного обучения они ухудшали показатели на бенчмарках.
Для репозиториев на GitHub генерировали инструкции неназванной в отчёте LLM, а с помощью другой модели — тоже неназванной — создавали ответы. Третья LLM занималась фильтрацией полученных пар. Для повышения точности использовали фьюшот на опенсорсных инстракт-датасетах — например, McEval-Instruct.
Для формирования мультиязычного SFT-датасета использовали языкоспецефичных агентов, у каждого из которых, как заявляют авторы, был свой банк памяти с историей генераций. В целом, в техническом отчёте не хватает конкретики по SFT-датасету. Оценка получившихся пар примеров производилась по чеклисту из 9 параметров. Среди них: соответствие ответа вопросу, сложность, наличие кода, его правильность и ясность.
Самый трудный с точки зрения разработки элемент — это мультиязычная «песочница». Нужно было обеспечить поддержку каждого из 92 языков программирования, собрать репозиторий эталонного кода, создать генераторы юнит-тестов, движки выполнения и анализаторы результатов. «Песочница» — вещь итеративная, которая нуждается в постоянной поддержке. Для этого разработчики привлекли экспертов, что делает «песочницу» особенно ресурсозатратной.
SFT сперва осуществлялся на нескольких десятках миллионов не слишком качественных, но разнообразных примеров. Затем с помощью rejection sampling выборка снижалась до нескольких миллионов лучших сэмплов.
Чтобы на этапе SFT модель не разучилась работать с длинным контекстом, авторы использовали короткие инстракт-сэмплы с FIM. При этом добавленный контекст — синтаксис — получался с помощью парсинга библиотекой Tree-sitter-languages. Примеров, обогащённых контекстом, было меньше, чем обычных SFT-данных.
В рамках DPO использовали RLEF для сигналов о том, что код работает, а также юнит-тесты для некоторых примеров. Были и примеры без кода, чтобы модель могла решать задачи, не связанные с программированием. В качестве LLM-as-a-judge выступала 4о.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤7🔥6
SpinQuant: LLM quantization with learned rotations. Часть 1/2
Решение из сегодняшней статьи от Meta* — конкурент другой разработки по квантизации в низкую битность, QuaRot. Но в SpinQuant, кроме весов и активаций, квантуется ещё и KV-кэш. Иными словами, это SOTA-результат w4a4kv4-квантизации, который показывает очень хороший перфоманс даже на «макбуках».
Главная идея — победить проблемы выбросов (поканальных отклонений в активациях attention), добавив матрицы поворота до и после каждого линейного слоя модели. После этого квантизация проводится как обычно, но без потери качества — спасибо обучаемым, а не случайным, как в QuaRot, матрицам вращения (розовые R₁ на рисунке).
Но ничего не бывает бесплатно: умножение — отдельная операция, которая требует дополнительных ресурсов. Чтобы сэкономить в момент инференса, матрицы вращения R₁ вмёрживаются в матрицы весов W умножением. Но так получается сделать не для всех вращений: например, матрицы R₃ и R₄ вставляют в слой отдельной операцией и, как в статье QuaRot, — используют случайные матрицы Адамара.
*Компания Meta признана экстремистской организацией в России.
Разбор подготовил❣ Роман Горб
Душный NLP
Решение из сегодняшней статьи от Meta* — конкурент другой разработки по квантизации в низкую битность, QuaRot. Но в SpinQuant, кроме весов и активаций, квантуется ещё и KV-кэш. Иными словами, это SOTA-результат w4a4kv4-квантизации, который показывает очень хороший перфоманс даже на «макбуках».
Главная идея — победить проблемы выбросов (поканальных отклонений в активациях attention), добавив матрицы поворота до и после каждого линейного слоя модели. После этого квантизация проводится как обычно, но без потери качества — спасибо обучаемым, а не случайным, как в QuaRot, матрицам вращения (розовые R₁ на рисунке).
Но ничего не бывает бесплатно: умножение — отдельная операция, которая требует дополнительных ресурсов. Чтобы сэкономить в момент инференса, матрицы вращения R₁ вмёрживаются в матрицы весов W умножением. Но так получается сделать не для всех вращений: например, матрицы R₃ и R₄ вставляют в слой отдельной операцией и, как в статье QuaRot, — используют случайные матрицы Адамара.
*Компания Meta признана экстремистской организацией в России.
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍8🔥6