Привет! На связи NLP-команда Яндекса. Коллективный разум создал этот канал, чтобы делиться разборами научных статей со всеми, кто жаждет знаний. Не стесняйтесь общаться в комментариях! Мы за обмен опытом и увлекательные дискуссии. Кстати, форточку открывать не собираемся — здесь душно, потому что так нужно.
🔥12😁5
⚗️ Что такое дистилляция и как она применяется в LLM
Чем больше модель, тем сложнее ее инферить и дороже обучать. Решить проблему призвана, в том числе, дистилляция — передача знаний от тяжёлой модели («учителя») более лёгкой («ученика»). Расскажем, какие типы дистилляции существуют и как их используют.
Классический способ предложил Джеффри Хинтон в статье 2015 года. Учёный выдвигает гипотезу, что распределение классов, которые модель предлагает в качестве ответа, само по себе содержит немало знаний. Поэтому имеет смысл тренировать «ученика» не на ответах, а на распределении классов «учителя», используя Softmax с температурой. В качестве лосса использовали кросс-энтропию между двумя распределениями — ответами учителя и ученика.
Одна из первых моделей, которую дистиллировали на претрейне, — DistilBERT. Результат получился впечатляющим: language understanding удалось сохранить на 97%, а скорость по заявлению авторов выросла на 60%. Интересно, что дистиллировали веса, а в архитектуре модели изначально было вдвое меньше энкодер-блоков, чем у базовой BERT — 6 против 12. В основе обучения — перекрестная энтропия ответов «учителя» и «ученика», MLM и L cos — косинусная близость между эмбеддингами на скрытых слоях. Идеи DistilBERT позднее применяли, например, в DistilGPT.
Самый простой из современных методов — имитация модели. Его суть — добиться, чтобы небольшая модель копировала поведение крупной. Для этого «учителя» просят генерировать ответы на разные запросы, а потом на них обучают «ученика».
Маленькие модели отлично подражают большим, но не развивают собственные навыки. Поэтому «ученики» не получают новые знания, зато неплохо справляются с тем, чтобы извлекать имеющиеся. Этот метод подходит, когда нужно натренировать модель под конкретные задачи, например, для суммаризации или разметки данных.
Для дистилляции знаний в «младшую» модель можно использовать метод Chain-of-Thought Prompting. Суть: просить LLM давать не только ответ, но и описывать цепочку рассуждений, которые к нему привели. Как показывают исследования, такой подход существенно увеличивает качество ответов на некоторых датасетах.
К примеру, авторы статьи Distilling Step-by-Step! попросили «ученика» предсказывать не только ответы «учителя», но и обоснования, чередуя запросы. Так маленькая модель тренируется думать как большая LLM, а не просто копирует ответы и поведение — на некоторых датасетах этот подход даёт отличный результат.
Кроме того, можно использовать датасет, составленный по reward-модели. В этом случае «ученик» будет тренироваться не на всех ответах «учителя», а только на тех, которые reward-модель считает хорошими, что тоже может улучшить результаты.
Наконец, можно расширить датасет, на котором учится младшая модель, с помощью генерации с разными параметрами вроде температуры или seed. Набор данных по одному промту получится более разнообразным, а поведение «ученика» в теории должно больше походить на поведение «учителя».
На этом всё. Спасибо, что прочитали! Делитесь опытом и впечатлениями от поста в комментариях! А во второй части текста мы разберём другие методы дистилляции и, конечно, затронем MiniLLM. Оставайтесь на связи!
Разбор помог подготовить❣ Сергей Воробьев
@stuffyNLP
Чем больше модель, тем сложнее ее инферить и дороже обучать. Решить проблему призвана, в том числе, дистилляция — передача знаний от тяжёлой модели («учителя») более лёгкой («ученика»). Расскажем, какие типы дистилляции существуют и как их используют.
Классический способ предложил Джеффри Хинтон в статье 2015 года. Учёный выдвигает гипотезу, что распределение классов, которые модель предлагает в качестве ответа, само по себе содержит немало знаний. Поэтому имеет смысл тренировать «ученика» не на ответах, а на распределении классов «учителя», используя Softmax с температурой. В качестве лосса использовали кросс-энтропию между двумя распределениями — ответами учителя и ученика.
Одна из первых моделей, которую дистиллировали на претрейне, — DistilBERT. Результат получился впечатляющим: language understanding удалось сохранить на 97%, а скорость по заявлению авторов выросла на 60%. Интересно, что дистиллировали веса, а в архитектуре модели изначально было вдвое меньше энкодер-блоков, чем у базовой BERT — 6 против 12. В основе обучения — перекрестная энтропия ответов «учителя» и «ученика», MLM и L cos — косинусная близость между эмбеддингами на скрытых слоях. Идеи DistilBERT позднее применяли, например, в DistilGPT.
Самый простой из современных методов — имитация модели. Его суть — добиться, чтобы небольшая модель копировала поведение крупной. Для этого «учителя» просят генерировать ответы на разные запросы, а потом на них обучают «ученика».
Маленькие модели отлично подражают большим, но не развивают собственные навыки. Поэтому «ученики» не получают новые знания, зато неплохо справляются с тем, чтобы извлекать имеющиеся. Этот метод подходит, когда нужно натренировать модель под конкретные задачи, например, для суммаризации или разметки данных.
Для дистилляции знаний в «младшую» модель можно использовать метод Chain-of-Thought Prompting. Суть: просить LLM давать не только ответ, но и описывать цепочку рассуждений, которые к нему привели. Как показывают исследования, такой подход существенно увеличивает качество ответов на некоторых датасетах.
К примеру, авторы статьи Distilling Step-by-Step! попросили «ученика» предсказывать не только ответы «учителя», но и обоснования, чередуя запросы. Так маленькая модель тренируется думать как большая LLM, а не просто копирует ответы и поведение — на некоторых датасетах этот подход даёт отличный результат.
Кроме того, можно использовать датасет, составленный по reward-модели. В этом случае «ученик» будет тренироваться не на всех ответах «учителя», а только на тех, которые reward-модель считает хорошими, что тоже может улучшить результаты.
Наконец, можно расширить датасет, на котором учится младшая модель, с помощью генерации с разными параметрами вроде температуры или seed. Набор данных по одному промту получится более разнообразным, а поведение «ученика» в теории должно больше походить на поведение «учителя».
На этом всё. Спасибо, что прочитали! Делитесь опытом и впечатлениями от поста в комментариях! А во второй части текста мы разберём другие методы дистилляции и, конечно, затронем MiniLLM. Оставайтесь на связи!
Разбор помог подготовить
@stuffyNLP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤7👍3😱1
LIMA
Почти все знания и способности модель получает из претрейна, а алаймент лишь определяет, какое подраспределение форматов использовать для общения с пользователем. Эта гипотеза лежит в основе статьи о LIMA — 65B LLaMa-модели, файнтюненной на 1350 примерах. Авторы заверяют: модель показывает отличные результаты благодаря разнообразным и качественным данным на алайменте. Разберемся, как инженеры к этому пришли.
Тексты в датасете должны быть единообразными (как для ИИ-ассистента), но из разных источников. За данными обращались к Stack Exchange, wikiHow и Reddit, а какую-то часть написали сами. Всё отобрали вручную — с Reddit взяли только ответы с сабреддитов AskReddit и WritingPrompts.
На этапе обучения добавили токен End of Turn для распознавания спикеров, а также residual dropout для роста дропаута от слоя к слою. В оценке использовали pairwise-замеры: брали ответы на один промт от двух моделей, предлагая оценщику выбрать лучший по определённым критериям. Оценщиков заменили на GPT-4 без сильной потери качества — решения LLM и людей совпадали на 78-79%.
По результатам pairwise вышло, что LIMA побеждала Alpaca и DaVinci-003 (рис. 1). При проверке GPT-4 показатели LIMA были выше, чем при проверке человеком (рис. 2).
Авторы статьи обучили LLaMa 7B таким же способом. Но вместо 2 принимали по 5 ответов на промт, а датасет для алаймента расширили до 2000 примеров. Тестирование снова доверили ChatGPT — она оценивала ответы двух 7B-моделей, обученных на «грязных» и «отфильтрованных» данных со Stack Exchange. В первом случае результат оказался 3,3 из 6, во втором — 3,83. Для сравнения, обучение на премодерируемом контенте с wikiHow дало оценку 3,49 (рис. 3). Эти результаты кажутся не совсем валидным — слишком уж мало примеров.
Авторы статьи пришли к выводу, что самое главное — качество и разнообразие датасета, а скейлинг по данным почти не влияет на ответы языковой модели.
Спасибо, что прочитали! Расскажите, что думаете о LIMA, в комментариях.
Разбор подготовил❣ Роман Горб
@stuffyNLP
Почти все знания и способности модель получает из претрейна, а алаймент лишь определяет, какое подраспределение форматов использовать для общения с пользователем. Эта гипотеза лежит в основе статьи о LIMA — 65B LLaMa-модели, файнтюненной на 1350 примерах. Авторы заверяют: модель показывает отличные результаты благодаря разнообразным и качественным данным на алайменте. Разберемся, как инженеры к этому пришли.
Тексты в датасете должны быть единообразными (как для ИИ-ассистента), но из разных источников. За данными обращались к Stack Exchange, wikiHow и Reddit, а какую-то часть написали сами. Всё отобрали вручную — с Reddit взяли только ответы с сабреддитов AskReddit и WritingPrompts.
На этапе обучения добавили токен End of Turn для распознавания спикеров, а также residual dropout для роста дропаута от слоя к слою. В оценке использовали pairwise-замеры: брали ответы на один промт от двух моделей, предлагая оценщику выбрать лучший по определённым критериям. Оценщиков заменили на GPT-4 без сильной потери качества — решения LLM и людей совпадали на 78-79%.
По результатам pairwise вышло, что LIMA побеждала Alpaca и DaVinci-003 (рис. 1). При проверке GPT-4 показатели LIMA были выше, чем при проверке человеком (рис. 2).
Авторы статьи обучили LLaMa 7B таким же способом. Но вместо 2 принимали по 5 ответов на промт, а датасет для алаймента расширили до 2000 примеров. Тестирование снова доверили ChatGPT — она оценивала ответы двух 7B-моделей, обученных на «грязных» и «отфильтрованных» данных со Stack Exchange. В первом случае результат оказался 3,3 из 6, во втором — 3,83. Для сравнения, обучение на премодерируемом контенте с wikiHow дало оценку 3,49 (рис. 3). Эти результаты кажутся не совсем валидным — слишком уж мало примеров.
Авторы статьи пришли к выводу, что самое главное — качество и разнообразие датасета, а скейлинг по данным почти не влияет на ответы языковой модели.
Спасибо, что прочитали! Расскажите, что думаете о LIMA, в комментариях.
Разбор подготовил
@stuffyNLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤4👍3🤔1
Слияние моделей — часть I
Как можно догадаться из названия, слияние моделей — или мёржинг — это процесс совмещения двух или более LLM в одну. Самый базовый тип методов — усреднение весов. Например, exponential moving average, предполагающий смешивание веса одной модели на нескольких последних итерациях. Но есть и другие способы — о них и расскажем в этом посте.
SLERP (Spherical Linear Interpolation) предполагает, что мы рассматриваем веса модели не как набор чисел, а как вектора. Схему этого метода вы можете увидеть на картинке выше.
Усреднение происходит за счёт изменения угла между векторами в модели — то есть поворотом весов одной модели в сторону другой. Метод схож с усреднением весов потому что это тоже линейное комбинирование.
Более того, если вектора весов сонаправлены, то SLERP сводится к их усреднению. Магнитуда векторов в SLERP сохраняется. Минус метода в том, что его можно использовать только для слияния двух моделей единовременно.
Здесь стоит сказать о таск-векторах — то есть разнице весов предобученной и файнтюненной модели. При мерджинге файнтюнов одного предобучения можно сливать вместе не веса, а соответствующие таск-вектора.
Следующий метод — TIES. Здесь сперва нужно посчитать таск-вектора моделей и в тех параметрах, где вектора меньше некоего порога, занулить их. Далее следует «разрешить конфликты» между таск-векторами двух LLM: то есть избавиться от противоположных векторов и создать единый. Если изменение направлено в одну сторону, то делать ничего не надо, а если в разные — занулить наименьшее. Наконец, происходит сам мёрж любым способом. TIES так же подходит только для слияния двух моделей.
На этом на сегодня всё. А в следующей части мы расскажем ещё о паре классических методов и о самом популярном сейчас способе мержинга. Оставайтесь на связи и делитесь своим опытом в комментариях!
Душный NLP
Как можно догадаться из названия, слияние моделей — или мёржинг — это процесс совмещения двух или более LLM в одну. Самый базовый тип методов — усреднение весов. Например, exponential moving average, предполагающий смешивание веса одной модели на нескольких последних итерациях. Но есть и другие способы — о них и расскажем в этом посте.
SLERP (Spherical Linear Interpolation) предполагает, что мы рассматриваем веса модели не как набор чисел, а как вектора. Схему этого метода вы можете увидеть на картинке выше.
Усреднение происходит за счёт изменения угла между векторами в модели — то есть поворотом весов одной модели в сторону другой. Метод схож с усреднением весов потому что это тоже линейное комбинирование.
Более того, если вектора весов сонаправлены, то SLERP сводится к их усреднению. Магнитуда векторов в SLERP сохраняется. Минус метода в том, что его можно использовать только для слияния двух моделей единовременно.
Здесь стоит сказать о таск-векторах — то есть разнице весов предобученной и файнтюненной модели. При мерджинге файнтюнов одного предобучения можно сливать вместе не веса, а соответствующие таск-вектора.
Следующий метод — TIES. Здесь сперва нужно посчитать таск-вектора моделей и в тех параметрах, где вектора меньше некоего порога, занулить их. Далее следует «разрешить конфликты» между таск-векторами двух LLM: то есть избавиться от противоположных векторов и создать единый. Если изменение направлено в одну сторону, то делать ничего не надо, а если в разные — занулить наименьшее. Наконец, происходит сам мёрж любым способом. TIES так же подходит только для слияния двух моделей.
На этом на сегодня всё. А в следующей части мы расскажем ещё о паре классических методов и о самом популярном сейчас способе мержинга. Оставайтесь на связи и делитесь своим опытом в комментариях!
Душный NLP
🔥9👍7❤5
Слияние моделей — часть II
В прошлый раз мы рассмотрели несколько классических методов мёржинга: усреднение весов, SLERP и TIES. В этом посте завершим обзор ещё двумя не менее интересным способами.
Итак, метод DARE схож с TIES, но избавляются здесь не от слишком маленьких, а от случайных изменений. Можно выкинуть до 90% значений без ущерба для качества. Дальше нужно действовать как в методе SLERP, о котором мы рассказывали в прошлом посте, а затем необходимо скалирование весов, чтобы сохранить их среднюю магнитуду.
К классическим (но извращённым) методам слияния также относится Passthrough. Модели, созданные с его помощью, ещё называют «Франкенштейнами» — и это неудивительно. Passthrough предполагает простую замену слоёв одной модели слоями другой.
Самый популярный метод сейчас — это MoE (Mixture of Experts). Суть его заключается в замене FFN-слоев на «смесь экспертов». В таком случае каждый токен отправляется «эксперту», которому больше всего подходит. Распределением занимается роутер. Его можно инициализировать случайно и дообучить. Схему можно увидеть выше.
Но есть вариант и без дообучения. Скажем, у нас есть несколько моделей. Для каждой из них выберем промты, на которых она лучше всего работает. Для промтов можно предпосчитать среднее скрытое представление, а затем сравнить со скрытым представлением токенов, которые подаются в модель. Если они схожи — эксперты получают соответствующие токены. А чтобы определить похожесть достаточно прибегнуть к простому скалярному произведению.
Мы перечислили далеко не все методы мёржа — эта сфера развивается и эволюционирует как живой организм. К тому же, мы не углублялись в подробности каждого способа, а лишь описали их в общих чертах. Рассказывайте в комментариях, какими вы пользовались сами и какие вам кажутся самыми эффективными?
Душный NLP
В прошлый раз мы рассмотрели несколько классических методов мёржинга: усреднение весов, SLERP и TIES. В этом посте завершим обзор ещё двумя не менее интересным способами.
Итак, метод DARE схож с TIES, но избавляются здесь не от слишком маленьких, а от случайных изменений. Можно выкинуть до 90% значений без ущерба для качества. Дальше нужно действовать как в методе SLERP, о котором мы рассказывали в прошлом посте, а затем необходимо скалирование весов, чтобы сохранить их среднюю магнитуду.
К классическим (но извращённым) методам слияния также относится Passthrough. Модели, созданные с его помощью, ещё называют «Франкенштейнами» — и это неудивительно. Passthrough предполагает простую замену слоёв одной модели слоями другой.
Самый популярный метод сейчас — это MoE (Mixture of Experts). Суть его заключается в замене FFN-слоев на «смесь экспертов». В таком случае каждый токен отправляется «эксперту», которому больше всего подходит. Распределением занимается роутер. Его можно инициализировать случайно и дообучить. Схему можно увидеть выше.
Но есть вариант и без дообучения. Скажем, у нас есть несколько моделей. Для каждой из них выберем промты, на которых она лучше всего работает. Для промтов можно предпосчитать среднее скрытое представление, а затем сравнить со скрытым представлением токенов, которые подаются в модель. Если они схожи — эксперты получают соответствующие токены. А чтобы определить похожесть достаточно прибегнуть к простому скалярному произведению.
Мы перечислили далеко не все методы мёржа — эта сфера развивается и эволюционирует как живой организм. К тому же, мы не углублялись в подробности каждого способа, а лишь описали их в общих чертах. Рассказывайте в комментариях, какими вы пользовались сами и какие вам кажутся самыми эффективными?
Душный NLP
❤8👍5🔥5
Редактирование знаний внутри LLM
В постоянно изменяющихся условиях важно поддерживать актуальность информации, которой обладают LLM. Остро встаёт вопрос редактирования знаний модели — его и рассматривают авторы сегодняшней статьи.
В ней представлено три типа методов редактирования знаний. Первый — обращение к внешним знаниям. В этом случае модель получает новую информацию в виде контекстов, а затем пользуется ими, когда нужно ответить на вопрос.
Вначале собирают набор демонстраций:
+ копирования — показываем модели, что надо уметь повторять факты;
+ обновления — не только повтор факта, но и перефразирование;
+ сохранения — показываем LLM, что при изменении одного факта другие не должны меняться.
Далее эти демонстрации добавляются в текущий промт и отправляются на вход.
Второй тип — внедрение знаний. Это добавление новых параметров, которые позволяют выстроить связи между старыми и новыми знаниями. Суть заключается в создании нового feed forward-слоя, который будет меньше первого. Веса на втором определяются файнтюнингом по текстам с изменёнными знаниями.
Третий вид — собственно, редактирование. Новые параметры при этом не добавляются, но меняются данные, которыми модель уже обладает. Существует два способа сделать это:
+ Meta Learning предполагает обучение гиперсетки, предсказывающей изменения параметров, которые необходимо сделать. Исходя из этого мы обновляем веса и минимизируем loss на новых данных.
+ Location-then-Edit предполагает определение конкретного места в модели, где сосредоточены знания о каком-либо факте. Для этого мы наблюдаем за тем, как меняются градиенты.
Эффективность изменения знаний авторы предлагают измерять с помощью специального бенчмарка. Он состоит из шести датасетов, проверяющих разные аспекты: вставку, добавление, изменение и удаление знаний. Датасет доступен по этой ссылке.
Спасибо за внимание! Делитесь мыслями по теме в комментариях :)
Разбор подготовил❣ Артём Сафин
Душный NLP
В постоянно изменяющихся условиях важно поддерживать актуальность информации, которой обладают LLM. Остро встаёт вопрос редактирования знаний модели — его и рассматривают авторы сегодняшней статьи.
В ней представлено три типа методов редактирования знаний. Первый — обращение к внешним знаниям. В этом случае модель получает новую информацию в виде контекстов, а затем пользуется ими, когда нужно ответить на вопрос.
Вначале собирают набор демонстраций:
+ копирования — показываем модели, что надо уметь повторять факты;
+ обновления — не только повтор факта, но и перефразирование;
+ сохранения — показываем LLM, что при изменении одного факта другие не должны меняться.
Далее эти демонстрации добавляются в текущий промт и отправляются на вход.
Второй тип — внедрение знаний. Это добавление новых параметров, которые позволяют выстроить связи между старыми и новыми знаниями. Суть заключается в создании нового feed forward-слоя, который будет меньше первого. Веса на втором определяются файнтюнингом по текстам с изменёнными знаниями.
Третий вид — собственно, редактирование. Новые параметры при этом не добавляются, но меняются данные, которыми модель уже обладает. Существует два способа сделать это:
+ Meta Learning предполагает обучение гиперсетки, предсказывающей изменения параметров, которые необходимо сделать. Исходя из этого мы обновляем веса и минимизируем loss на новых данных.
+ Location-then-Edit предполагает определение конкретного места в модели, где сосредоточены знания о каком-либо факте. Для этого мы наблюдаем за тем, как меняются градиенты.
Эффективность изменения знаний авторы предлагают измерять с помощью специального бенчмарка. Он состоит из шести датасетов, проверяющих разные аспекты: вставку, добавление, изменение и удаление знаний. Датасет доступен по этой ссылке.
Спасибо за внимание! Делитесь мыслями по теме в комментариях :)
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍14❤1
Самые интересные статьи с ICLR 2024
В начале мая прошла ICLR 2024 — конференция, которая собирает специалистов в области машинного обучения со всего мира. Мы побывали на мероприятии и теперь в карточках рассказываем о статьях, которые запомнились больше всего.
А вот ссылки на все тексты:
1. Fast-DetectGPT: Efficient Zero-Shot Detection of Machine-Generated Text via Conditional Probability Curvature
2. LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models
3. DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models
4. Never Train from Scratch: Fair Comparison of Long-Sequence Models Requires Data-Driven Priors
5. ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs
6. Towards a statistical theory of data selection under weak supervision
Рассказывайте в комментариях, какие статьи понравились вам, и делитесь впечатлениями!
Душный NLP
В начале мая прошла ICLR 2024 — конференция, которая собирает специалистов в области машинного обучения со всего мира. Мы побывали на мероприятии и теперь в карточках рассказываем о статьях, которые запомнились больше всего.
А вот ссылки на все тексты:
1. Fast-DetectGPT: Efficient Zero-Shot Detection of Machine-Generated Text via Conditional Probability Curvature
2. LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models
3. DoLa: Decoding by Contrasting Layers Improves Factuality in Large Language Models
4. Never Train from Scratch: Fair Comparison of Long-Sequence Models Requires Data-Driven Priors
5. ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs
6. Towards a statistical theory of data selection under weak supervision
Рассказывайте в комментариях, какие статьи понравились вам, и делитесь впечатлениями!
Душный NLP
🔥33👍14❤10
Instruction Tuning для MoE-моделей
Техника Mixture of Experts (MoE) предполагает использование в сети нескольких специализированных блоков — экспертов — для решения одной задачи. Модели на архитектуре MoE сильно выигрывают от грамотного файнтюнинга. Об этом и говорится в статье, которую мы сегодня разберём.
Преимущества инстракшн-тюнинга
Секрет, как утверждают авторы, в предварительном инстракшн-тюнинге — после претрейна и до файнтюнинга. Проверяют эту гипотезу на нескольких сетапах. Первый — Switch Transformer, у которого каждый слой MoE и только топ-1 гейтинг. Далее — GShard с топ-2 гейтингом, expert-choice, дающий возможность экспертам выбирать токены и ST-MoE.
На графике можно увидеть результаты файнтьюнинга моделей с инстракшн-тюнингом (приставка Flan) и без него, сразу после претрейна. В первом случае МоE выбивается вперёд, а вот во втором её показатели хуже, чем у Т5. Это происходит потому, что при обычном файнтюнинге МоЕ-моделей они теряют преимущество, ведь «эксперты» начинают сходиться во мнениях.
Как устроен инстракшн-тюнинг
Авторы использовали задачи из FLAN-датасета и применяли auxillary loss. Это нужно, чтобы все токены не отправлялись одному «эксперту». Также применяли дропаут (0,05) и экспертный дропаут (0,2). Коэффициент скорости обучения — на уровне 1e −4.
Результаты
Авторы статьи утверждают, что их FLAN-MoE, требующий 32 миллиарда операций при форварде (32.1 GFLOPs/token), показывает себя лучше, чем FLAN-PALM, у которого в 3 раза больше количество операций 91.6 GFLOPs/token. В итоге после инстракшн-тюнинга показатели модели выросли в три с лишним раза. Выглядит слегка подозрительно, но впечатляет. Более того, при росте модели сохраняется тенденция к росту показателей после инстракшн-тюнинга. Но авторы подчёркивают, что количество данных важнее, чем число «экспертов».
Разбор подготовил❣ Александр Мазитов
Душный NLP
Техника Mixture of Experts (MoE) предполагает использование в сети нескольких специализированных блоков — экспертов — для решения одной задачи. Модели на архитектуре MoE сильно выигрывают от грамотного файнтюнинга. Об этом и говорится в статье, которую мы сегодня разберём.
Преимущества инстракшн-тюнинга
Секрет, как утверждают авторы, в предварительном инстракшн-тюнинге — после претрейна и до файнтюнинга. Проверяют эту гипотезу на нескольких сетапах. Первый — Switch Transformer, у которого каждый слой MoE и только топ-1 гейтинг. Далее — GShard с топ-2 гейтингом, expert-choice, дающий возможность экспертам выбирать токены и ST-MoE.
На графике можно увидеть результаты файнтьюнинга моделей с инстракшн-тюнингом (приставка Flan) и без него, сразу после претрейна. В первом случае МоE выбивается вперёд, а вот во втором её показатели хуже, чем у Т5. Это происходит потому, что при обычном файнтюнинге МоЕ-моделей они теряют преимущество, ведь «эксперты» начинают сходиться во мнениях.
Как устроен инстракшн-тюнинг
Авторы использовали задачи из FLAN-датасета и применяли auxillary loss. Это нужно, чтобы все токены не отправлялись одному «эксперту». Также применяли дропаут (0,05) и экспертный дропаут (0,2). Коэффициент скорости обучения — на уровне 1e −4.
Результаты
Авторы статьи утверждают, что их FLAN-MoE, требующий 32 миллиарда операций при форварде (32.1 GFLOPs/token), показывает себя лучше, чем FLAN-PALM, у которого в 3 раза больше количество операций 91.6 GFLOPs/token. В итоге после инстракшн-тюнинга показатели модели выросли в три с лишним раза. Выглядит слегка подозрительно, но впечатляет. Более того, при росте модели сохраняется тенденция к росту показателей после инстракшн-тюнинга. Но авторы подчёркивают, что количество данных важнее, чем число «экспертов».
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥13❤6🎃1
Ускорить обучение LLM 70B на 25%? Легко! YaFSDP
Сегодня мы выĸладываем в опенсорс наш новый инструмент — библиотеку YaFSDP. Она значительно ускоряет обучение больших языковых моделей — как собственной разработки, так и сторонних, с открытым исходным кодом.
Библиотека даёт ускорение до 25% — результат зависит от архитектуры и параметров нейросети. С помощью YaFSDP также можно расходовать до 20% меньше ресурсов графических процессоров (GPU), которые требуются для обучения.
Несколько подходов нашего метода:
— выделить два буфера под все собираемые веса, чтобы не отдавать их на отĸуп аллоĸатору памяти torch. Каждый нечётный слой будет использовать первый буфер, ĸаждый чётный — второй. Это уменьшит нагрузку на память и сделает её использование более предсказуемым;
— не делать чеĸпоинт аĸтиваций для ĸаĸ можно большего числа слоёв. Это позволит убрать избыточные вычисления за счёт сэкономленной памяти;
— выделить два стрима: вычислений и ĸоммуниĸаций, а синхронизацию построить таким образом, чтобы forward не начинался до завершения all_gather того же слоя, а all_gather не начинался до освобождения соответствующего буффера на предыдущем слое;
— разово собирать RMSNorm/LayerNorm в начале итерации и тольĸо в ĸонце усреднить градиенты;
— вынести predivide в самый ĸонец backward, таĸ ĸаĸ при reduce_scatter в bf16 или fp32 рисĸа переполнения нет.
Более подробно про проблемы обучения на множестве GPU можно почитать на Хабре. Приходите в репозиторий библиотеки YaFSDP, ставьте лайк и приносите вопросы в Issues. А ещё — делитесь своими впечатлениями здесь в комментариях.
Душный NLP
Сегодня мы выĸладываем в опенсорс наш новый инструмент — библиотеку YaFSDP. Она значительно ускоряет обучение больших языковых моделей — как собственной разработки, так и сторонних, с открытым исходным кодом.
Библиотека даёт ускорение до 25% — результат зависит от архитектуры и параметров нейросети. С помощью YaFSDP также можно расходовать до 20% меньше ресурсов графических процессоров (GPU), которые требуются для обучения.
Несколько подходов нашего метода:
— выделить два буфера под все собираемые веса, чтобы не отдавать их на отĸуп аллоĸатору памяти torch. Каждый нечётный слой будет использовать первый буфер, ĸаждый чётный — второй. Это уменьшит нагрузку на память и сделает её использование более предсказуемым;
— не делать чеĸпоинт аĸтиваций для ĸаĸ можно большего числа слоёв. Это позволит убрать избыточные вычисления за счёт сэкономленной памяти;
— выделить два стрима: вычислений и ĸоммуниĸаций, а синхронизацию построить таким образом, чтобы forward не начинался до завершения all_gather того же слоя, а all_gather не начинался до освобождения соответствующего буффера на предыдущем слое;
— разово собирать RMSNorm/LayerNorm в начале итерации и тольĸо в ĸонце усреднить градиенты;
— вынести predivide в самый ĸонец backward, таĸ ĸаĸ при reduce_scatter в bf16 или fp32 рисĸа переполнения нет.
Более подробно про проблемы обучения на множестве GPU можно почитать на Хабре. Приходите в репозиторий библиотеки YaFSDP, ставьте лайк и приносите вопросы в Issues. А ещё — делитесь своими впечатлениями здесь в комментариях.
Душный NLP
🔥68❤13👍13👏4
Mamba — что это такое и как себя показывает
Mamba — это LLM, которая основана на SSM (State Space Models). О ней рассказывается в статье, которую мы сегодня и разберем.
Для начала напомним, что такое SSM. Это модели, которые позволяют эффективно работать с длинными последовательностями данных. Что-то вроде RNN, но без нелинейности, благодаря чему запись можно осуществлять в виде одной большой матричной операции.
Mamba сочетает в себе преимущества SSM и Gated MLP. Вот, как это работает. Сначала к последовательности применяется in projection, увеличивается количество каналов. Затем используется 1D-конволюция и нелинейность. После этого, как в Gated MLP, происходит поэлементное умножение параллельного входа и выходной projection. Таких блоков может быть несколько.
Какие преимущества даёт такой подход
• Mamba использует recomputation во время backward pass, что позволяет эффективно утилизировать памяти. Это соответствует таким подходам, как Flash Attention, которые разработаны для оптимизации памяти.
• На длинных последовательностях Mamba превосходит Transformer++, особенно при увеличении числа FLOPS и размера модели. При этом на коротких последовательностях результаты сравнимы с Transformer++.
• Модель может работать с контекстом до одного миллиона токенов, что демонстрирует её способность обрабатывать очень длинные последовательности.
• Mamba показывает превосходные результаты на различных бенчмарках, таких как LAMBADA и PIQA, даже при сравнении с моделями в два раза больше.
• В экспериментах Mamba демонстрирует высокую эффективность на задачах копирования текста.
На этом всё. Рассказываете, что вы думаете о Mamba в комментариях!
Разбор подготовил❣ Александр Мазитов
Душный NLP
Mamba — это LLM, которая основана на SSM (State Space Models). О ней рассказывается в статье, которую мы сегодня и разберем.
Для начала напомним, что такое SSM. Это модели, которые позволяют эффективно работать с длинными последовательностями данных. Что-то вроде RNN, но без нелинейности, благодаря чему запись можно осуществлять в виде одной большой матричной операции.
Mamba сочетает в себе преимущества SSM и Gated MLP. Вот, как это работает. Сначала к последовательности применяется in projection, увеличивается количество каналов. Затем используется 1D-конволюция и нелинейность. После этого, как в Gated MLP, происходит поэлементное умножение параллельного входа и выходной projection. Таких блоков может быть несколько.
Какие преимущества даёт такой подход
• Mamba использует recomputation во время backward pass, что позволяет эффективно утилизировать памяти. Это соответствует таким подходам, как Flash Attention, которые разработаны для оптимизации памяти.
• На длинных последовательностях Mamba превосходит Transformer++, особенно при увеличении числа FLOPS и размера модели. При этом на коротких последовательностях результаты сравнимы с Transformer++.
• Модель может работать с контекстом до одного миллиона токенов, что демонстрирует её способность обрабатывать очень длинные последовательности.
• Mamba показывает превосходные результаты на различных бенчмарках, таких как LAMBADA и PIQA, даже при сравнении с моделями в два раза больше.
• В экспериментах Mamba демонстрирует высокую эффективность на задачах копирования текста.
На этом всё. Рассказываете, что вы думаете о Mamba в комментариях!
Разбор подготовил
Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39🔥16🎉9❤3🤡3😁1