NLP Wanderer
رفتن به کانال در Telegram
Попытки разобраться в бесконечном потоке NLP статей и моделей, а еще немного странных идей...
نمایش بیشترروسيا631 402دسته بندی مشخص نشده است
414
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
+1130 روز
در حال بارگیری داده...
کانالهای مشابه
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
ابر برچسبها
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
دسامبر '24دسامبر '24
دسامبر '24
+112
در 3 کانالها
نوامبر '24
+100
در 5 کانالها
Get PRO
اکتبر '24
+198
در 7 کانالها
Get PRO
سپتامبر '24
+341
در 12 کانالها
Get PRO
اوت '24
+19
در 3 کانالها
Get PRO
ژوئیه '24
+204
در 3 کانالها
Get PRO
ژوئن '240
در 0 کانالها
Get PRO
مه '24
+82
در 1 کانالها
Get PRO
آوریل '240
در 0 کانالها
Get PRO
مارس '240
در 0 کانالها
Get PRO
فوریه '24
+113
در 1 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 20 دسامبر | +21 | |||
| 19 دسامبر | +5 | |||
| 18 دسامبر | +4 | |||
| 17 دسامبر | +5 | |||
| 16 دسامبر | +2 | |||
| 15 دسامبر | +2 | |||
| 14 دسامبر | +3 | |||
| 13 دسامبر | +11 | |||
| 12 دسامبر | +20 | |||
| 11 دسامبر | +1 | |||
| 10 دسامبر | +6 | |||
| 09 دسامبر | +11 | |||
| 08 دسامبر | +12 | |||
| 07 دسامبر | +2 | |||
| 06 دسامبر | +1 | |||
| 05 دسامبر | +1 | |||
| 04 دسامبر | +1 | |||
| 03 دسامبر | +1 | |||
| 02 دسامبر | +2 | |||
| 01 دسامبر | +1 |
پستهای کانال
Про истоки и различия методов алайнмента LLM и SimPO
На картинке вы можете увидеть основные различия в текущих наиболее известных подходах к офлайн оптимизации преференсов из недавней статьи метода SimPO, который меня и вдохновил написать этот пост.
Давайте посмотрим, что вобще тут является основными элементами:
1. Логарифм сигмойды - это прямое следствие из модели Bradley-Terry, согласно ей все выражение это логарифм вероятности превосходства chosen ответа над rejected ответом, абсолютно та же логика используется в обучении отдельных Reward моделей. Логарифм появляется по той же причине по которой он есть в Log Loss - мы конструируем функцию максимального правдоподобия.
2. Самое важное во всех этих методах - оценка разницы наград за ответ, которая находится обычно внутри логарифма сигмойды.
Основная идея фундаментального здесь метода DPO - выражать функцию награды (в онлайн RLHF это отдельная Reward модель) через политику LLM (условно политикой тут называется вероятность генерации ответов в зависимости от весов модели, т.е. перемноженная вероятность всех сгенерированных токенов). В DPO их сразу две - оригинальная после SFT тюна (она же ref) и текущая поверх этого SFT тюна. Сама разница наград представлена как разница логпроба хорошего ответа и логпроба плохого ответа.
Главное тут понимать, почему вобще мы что-то вычитаем и откуда это берется. Ответ кроется снова в модели Bradley-Terry, на самом деле модель BT это функция Softmax оценивающая вероятность P(chosen>rejected), с ее хараткерным видом дроби, в двумерном случае мы можем просто переписать ее так, чтобы числитель был равен 1, а снизу получится как раз 1+exp(разница двух ревардов), тоесть получили обычный вид сигмойды в частном случае. Логпробы ответов же являются логитами после применения функции log_softmax для удобства их перемножения (можем просто суммировать логарифмы). Подробнее про общую математику преференс обучения и как она связана с теорией игр можно прочитать в статье еще одного интересного метода, про который я расскажу позже.
Допустим это все понятно, а тогда зачем нам столько методов и как они получаются?
Чаще всего авторы новых методов говорят о неоптимальности классического DPO с разных точек зрения. Например, то что за счет учета референсной модели он становится вычислительно тяжелым (нужно держать 2 модели в памяти), а еще делает не то что от него на самом деле хотят - не оптимизирует политику генерации ответов, а несколько другую политику связаную с референсой моделью. Кроме того изза своей офлайн природы этот метод довольно легко переобучается и часто плохо коррелирует с SbS бенчмарками, а если и коррелирует то засчет отсутствия встроенного штрафа за длинные ответы. Некоторые авторы также говорят о том, что DPO не закладывает margin между плохими и хорошими ответами, что так же портит общий результат. Да и вобще DPO требует предварительного SFT тюна, что некоторые авторы также находят неоптимальным. Если суммаризировать претензии - DPO вовсе не является полностью надежным методом алайнмента, несмотря на свою сильную математическую базу и все новые методы так или иначе пытаются развивать его идеи, чтобы лечить перечисленные проблемы.
Про все альтернативы я рассказывать не буду, про них вы можете почитать например тут, расскажу немного только про ту, которая судя по всему доказала что действительно имеет сильные преимущества над DPO, а именно - SimPO.
Метод состоит из простых трех вещей: он удаляет референсную модель из обучения и добавляет штраф на длину ответа, кроме того он вводит margin внутри Bradley-Terry, который становится гиперпараметром. Сами авторы говорят, что их метод является частным случаем обобщенного фреймворка алайнмента представленного DeepMind - GPO, как собственно и многие другие оффлайн методы.
Эмпирически SimPO показывает лучшие результаты среди всех остальных методов на разных SbS бенчмарках, включая бенчмарки со штрафом на длину (в комментариях будет табличка). Авторы сделали простой и удобный репозиторий с кодом и провели большое количество экспериментов, а также опубликовали все свои модели и датасеты.
| 2 | Пока без особых комментариев, подробнее расскажу позже, но лидерборд и код для нашей Arena General вы можете найти тут
https://github.com/VikhrModels/ru_llm_arena | 632 |
| 3 | Провел работу над ошибки, на которые мне указал @YallenGusev.
- Сделал дедубликацию с помощью e5 поверх всего датасета
- Добавил информацию о языках в промптах и ответах
- Добавил датасет системных промптов abacusai/SystemChat-1.1 - следовательно модели обученные на таком датасете смогут и с ним работать
- Добавил пофильтрованные промпты из переведенного d0rj/OpenHermes-2.5-ru
- Улучшил пайплайны фильтрации и постобработки промптов и ответов
Все так же все, из всех новых датасетов я беру только промпты и генерирую ответы заного используя промпты-надстройки для управления качеством и языком ответа. Больше подробностей в карточке датасета.
Итого получилось 119398 пар, меньше, чем было изначально, зато куда более чистые. Датасет будет пополнятся и дальше, цель - 200к с большим количеством сильно диверсифицированных русских и английских промптов. | 662 |
| 4 | GrandMaster-PRO-MAX - Первый крупный высококачественный русскоязычный SFT датасет
Совместно с Vikhrmodels, представляю вам датасет для инструктивного обучения LLM полученный не с помощью переводов ответов моделей с английского языка. Он диверсифицирован по темам и позволяет моделям следовать самым разным инструкциям на разных языках (в основном на русском) и отвечать, так же, в основном на русском языке.
Ответы за ассистента в этом датасете полностью сгенерированы GPT-4-Turbo-1106 с нуля по исходным инструкциям от пользователя. Это позволило получить очень качественный русский язык в ответах без артефактов перевода. Исходные инструкции были взяты из различных источников, в том числе синтетических для подкрепления отдельных способностей вроде математики, программирования, следования формату и тд.
Кроме того, характерной особенностью является то, что модели обученные на этом датасете будут иметь уже "вшитую" способность к Chain-Of-Thought (CoT), за счет использования более сложного промпта для генерации большинства ответов (подробнее в карточке датасета).
Содержит примерно 142 тысячи уникальных пар инструкция - ответ. Денежный эквивалент генерации такого датасета с нуля - около 4к долларов. | 7 678 |
| 5 | Скоро я в коллаборации с Vikhrmodels релизну русскую general арену (на основе кода Arena-Hard-Auto. А еще готовлю несколько других крупных 🤗 релизов и статей (хабровских)...
А пока вам текущий стейт со всеми лучшими опенсорс (и не только моделями)
Датасет использованных русских промптов (500 штук), уже выложен и доступен по ссылке
P.S. Скоро восстановлю ведение канала, были не очень приятные обстоятельства для его ведения... | 8 024 |
| 6 | You Only Cache Once: Decoder-Decoder Architectures for Language Models
Yutao Sun, Li Dong, Yi Zhu, Shaohan Huang, Wenhui Wang, Shuming Ma, Quanlu Zhang, Jianyong Wang, Furu Wei
Статья: https://arxiv.org/abs/2405.05254
Код: https://github.com/microsoft/unilm/tree/master/YOCO
Архитектурные новости. Авторы придумали архитектуру для LLM под названием decoder-decoder.
Напомним, что оригинальный трансформер (и например модели типа T5) был построен на полной архитектуре encoder-decoder, большая часть современных LLM (типа GPT) используют только decoder, и другая популярная ветка недавнего прошлого (модели семейства BERT) состоит только из encoder. Энкодер всегда был двунаправленным (bidirectional) и модели с таким двунаправленным компонентом (то есть encoder и encoder-decoder) имели проблемы с авторегрессионной генерацией — там для генерации нового токена сначала надо было заэнкодить всю последовательность из входа и уже нагенерённой части выхода. Можно конечно использовать только декодерную часть для генерации, но тогда сгенерённые токены не используют на полную мощь параметры энкодера. У decoder тут всё неплохо, при авторегрессионной генерации можно закешировать вектора KV (key и value в блоках внимания) и переиспользовать для генерации нового токена, не надо заново кодировать всю историю.
Но как говорится в сказании о Савитри, “есть один недостаток”. KV-кэш очень пухнет при росте длины генерируемой последовательности, он отжирает кучу памяти GPU и LLM-ки становятся memory-bound. Так для 65B модели (с grouped-query attention и квантизацией KV в 8 бит) для 512k токенов нужно 86Gb памяти, что перекрывает объём памяти H100-80GB. К тому же фаза prefill (см тут или хороший обзор тут), в которой надо обработать все входные токены промпта и вычислить для них значения KV, может занимать сотни секунд для очень длинных входов типа 1М (здесь, кстати, интересно, что Гугл с Gemini 1.5 придумал).
Весь трансформер из L слоёв разделяется поровну и первые L/2 слоёв реализуют self-decoder через efficient self-attention. Размер KV-кеша этой части константен, то есть O(1). Выход последнего слоя self-decoder даёт глобальный KV-кеш, куда ходит вторая половина, cross-decoder, реализованная через оставшиеся L/2 слоёв. Каждый блок получает на вход Q и через cross-attention идёт в этот глобальный KV-кеш. Здесь уже везде стандартное (почти, с GQA, https://arxiv.org/abs/2305.13245) multi-head attention с полным окном.
Под efficient self-attention в self-decoder авторы подразумевают sliding-window attention как в старом добром sparse transformer имени Ильи Суцкевера и ко (https://t.me/gonzo_ML/65). Как вариант, вместо него в self-decoder может использоваться RetNet (https://t.me/gonzo_ML/1753) под названием gRet (aka gRetNet или RetNet-3) с data-dependent гейтингом. Вроде бы такой же мы и разбирали когда-то давно в оригинальной статье.
В остальном блоки в этих слоях в целом стандартные, чередование внимания и FFN, с использованием pre-RMSNorm, SwiGLU, GQA.
Полученная архитектура называется YOCO (You Only Cache Once, так понимаю тут речь про кеширование в L/2 слое). Это всё похоже на encoder-decoder, но снаружи выглядит как декодер и обе части используют causal masking.
YOCO эффективнее обычного трансформера за счёт меньших требований к памяти, кеш для длинных последовательностей скейлится как O(N) вместо O(NL), то есть можно делать больше инференса и/или с более крупными батчами (что повышает throughput).
Ещё из интересных свойств YOCO есть то, что во время стадии prefill можно сделать early exit и не ходить в cross-decoder, это повышает скорость данной фазы. Поскольку в self-decoder находится половина слоёв, то это уже сокращение вычислений и времени в два раза. К тому же эффективная реализация внимания в self-decoder обычно быстра. Они приводят пример запроса с размером контекста в 512K, на котором prefill latency падает со 180 секунд (трансформер с flash-decoding и kernel fusion) до менее 6 секунд. И даже на длине 32K YOCO всё равно в три раза быстрее (на этой фазе, а не в целом end-to-end). | 795 |
| 7 | Хочется еще упомянуть несколько важных свойств автоэнкодеров, которые авторы обнаружили в статье
– У фичей есть своя геометрическая структура, где похожия фичи оказываются близки к друг другу (что ожидаемо). Например, Золотые Ворота близки ко всем остальным достопримечательностям СФ, а отдаленно они связаны с другими популярными местами, типа статуи Иисуса в Рио-де-Жанейро
– Одинаковые фичи оказываются близки в автоэнкодерах всех размеров. Различие между ними в том, что в больших экодерах происходит feature splitting – если в маленькой модели мы найдем какое-то общее понятие, то в больших модель оно разобъется на что-то более конкретное. Вот тут есть интерактивный UMAP
– Нашелся также и scaling law:
Если концепт появляется один раз на миллиард токенов, то нам нужно пропорционально миллиарду активных фич в SAE, чтобы найти ту, которая бы уникально описывала этот концепт
– Для 82% фичей не нашлось сильно скоррелированных нейронов
– Хотя SAE тренировались только на тексте, они оказались способны реагировать и на картинки!
– Фичи отвечают как за абстрактные, так и за конкретные концепты. Например, одна и та же фича активируется на общие рассуждение о безопасности кода, и на конкретные примеры такого кода
– Если модели нужны промежуточные размышления, то активируются фичи, которые отвечают за “пропущенный концепт”. На конкретном примере: если модели нужно ответить на вопрос “Кто был главным соперником команды, в которой играл Коби Брайант”, то больше всего на финальный ответ “Boston Celtics” будут влиять фичи “Коби Брайант” -> его команда “Los Angeles Lakers” (пропущенный концепт) -> фича, отвечающая за спортивные противостояния. Я обожаю, когда в статьях такое находят! По-моему это отличная ответчочка на мнение, что LLM это стохастические попугаи и не понимают, что они генерируют
Спасибо, что дочитали этот лонгрид! Мне очень понравилась статья, и если вас тоже заинтриговала тема mechanistic interpretability, авторы предалагют вот этот гайд: https://neelnanda.io/mechanistic-interpretability/getting-started | 669 |
| 8 | بدون متن... | 436 |
| 9 | У Anthropic вышла очень большая статья про interpretability – они нашли в своей модели Claude Sonnet множество хорошо и четко интерпретируемых фич, отражающих определенные концепты. Многие из них оказались мультилингвальными и даже мультимодальными
В отличие от некоторых предыдущих работ в этой области (например, вот этой от OAI), интерпретировали они не нейроны по-отдельности, а активации. Это важно, потому что логично предположить, что за большинство концептов в LLM отвечают не конкретные нейроны, а какая-то их комбинация. И что скорее всего эта комбинация может быть также размазана между слоями (в limitations к статье отдельно обсуждается cross-layer superposition, кому интересно)
Как конкретно с технической точки зрения находили фичи?
- Активации замеряли в residual stream на каком-то среднем слое сети (каком конкретно не говорят, так как модель проприетарная). Для тех, кто забыл, что такое residual stream (я тоже забыла, не переживайте) – он проходит через все слои трансформера, от входных эмбеддингов до самого последнего линейного слоя. Каждый трансформер-блок (attention-head + MLP) “читает” информацию из него, а результаты его работы плюсуются к этому residual stream, и он итеративно обновляется после после каждого блока. Так что получается, что он “собирает” в себя информацию за последние сколько-то блоков, и логично предположить, что где-то посередине модели он будет в себе содержать какие-то абстрактные идеи и понятия. Попродробнее про residual stream и интуицию за ним можно почитать тут
- Фичи находили с помощью sparse autoencoders. Энкодеру на вход поступает как раз residual stream, который он разворачивает в слой большей размерности. Внутри этого латентного пространства как раз и будут находиться интерпретируемые фичи! Раньше у Anthropic выходила статья, где они это обнаруживали на маленькой игрушечной модели. Помимо того, что декодер учили реконструировать потом по этом фичам активации обратно, еще накидывалась регуляризация, чтобы его веса были в основном sparse (по сути это означает, что каждую активацию, которую мы подаем на вход, мы можем разложить на небольшое количество латентных фич, а остальные занулятся)
После тренировки такой энкодер представляет активации как линейную комбинацию латентных фич, где веса декодера “умножаются” на силу активации
– О данных для обучения SAE особо не говорится в статье, но извлекали фичи из семпла на 10M токенов из The Pile и Common Crawl. В статье пробуются автоэнкодеры трех размеров – 1M, 4M и 34M. В 34M варианте 65% фичей оказались мертыми – они не активировались ни разу на всей выборке
– Чтобы среди всех фичей найти хорошо интерпретируемые, авторы использовали Claude Opus: ему показывали примерно 1000 примеров, где активировалась какая-то фича, с указанием токенов, на которые она реагировала. Opus должен был выдать оценку, есть ли какая-то связь между текстами, или фича не особенно специфичная / не понятно, что именно она отражает. Насколько я понимаю, интерпретацию этих фичей авторы присваивали сами вручную
1/2 | 422 |
| 10 | Опять меня определили с разбором статьи⚡️
На этот раз очень интересный взгляд на то как работают LLM внутри от Anthropic, очень советую изучить и оригинал, мегаполезно для общего понимания | 318 |
| 11 | Новый метод молниеносного переноса навыков между моделями без обучения
Последнее время активно развивается техника model merging - когда веса 2 и более моделей объединяются по разным правилам для переноса навыков между ними без дообучения. Подробнее о том как это работает можно почитать тут, в качестве реализации в коде многих из этих методов - mergekit на Github.
Новые методы мерджинга моделей все больше ориентируются на так называемые Task Vectors, которые возникают при "вычитании" зафайнтьюненной на определенной задаче модели из оригинальной предобученной модели, после этого такие вектора можно применять к другим моделям, среди таких методов: сам Task Arithmetic, TIES, DARE и другие.
Несколько дней назад пользователь maywell опубликовал свой вариант этого метода на HF 🤗. Он отмечает что у простого добавления разниц есть ограничения - это плохо работает с моделями которые уже были сильно на чем-то зафайнтьюнены. Автор же акцентирует внимание на возможности переноса навыков вести диалог и, неожиданно, умения воспринимать длинный контекст.
Для этого он модифицирует метод Task Arithmetic добавляя функцию
calculate_sigmoid_ratios(base_model, target_model), которая расчитывает множители [0,1] для весов для стабилизации разрыва между минимальными и максимальными значениями в разницах между весами моделей. Интуитивно этот шаг можно понять как попытку скорректировать направление мерджинга для каждого параметра отдельно. Второй, и последний шаг, заключается в применении вычисленных разниц умноженных на вычисленные ratio к целевой модели по формуле diff * (1 - ratio).
Автор утверждает, что с помощью этого метода удалось получить модель с 100% качеством ретривала информации из 64k контекста (видимо тест needle-in-a-haystack). Кроме этого он сравнивает метрики переноса способности выполнять инструкции между обычным Task Arithmetic, и своим методом, показывая что качество удалось улучшить и минимизировать деградацию (между тем это еще и перенос этой способности между корейским и английским языком!). Больше подробностей в карточках моделей maywell/Llama-3-Ko-8B-Instruct и maywell/Llama-3-8B-Instruct-1M.
Реализация самого метода состоит всего из 3 функций и помешается только лишь в одном ноутбуке, который доступен на Github. | 1 010 |
| 12 | Как научить модель по-разному отвечать на одинаковые вопросы?
Именно один из вариантов ответа на этот вопрос предложил автор мини-статьи Configurable Safety Tuning of Language Models with Synthetic Preference Data. И, вы не поверите, можно просто использовать разные системные промпты. И это не было ни для кого секретом, но вот обучить такую модель используя DPO, наверное еще не пробовали, так как идея кажется слегка безумной и забавной.
И автор предлагает очень простую модификацию в процесс алаймента, мы можем составить датасет из квадриплетов (system prompt, instruction, chosen, rejected). Создать такой датасет можно из любого датасета фидбеков для DPO, однако, автор предлагает размножить его дополнительно, поменяв rejected и chosen местами, в зависимости от системного промпта (позитивный или негативный).
И что же из этого получается? А получается модель которая в позитивном сеттинге получает такое же качество как обычные DPO модели, но помимо этого в негативном сеттинге способна вести себя так же хорошо как в позитивном.
Но зачем это нужно? Вобще, объективно, это абсолютно бесполезно, только если вы не хотите заложить в модель секретную фразу после которой в ней активируется режим киборга-убийцы. Единственным интересным выводом, на мой взгляд, можно считать, что модель необязана быть исключительно негативной или позитивной, чтобы хорошо себя показывать в алайменте и идея эта была не так уж безумна...
Кстати, автор выложил Llama 3 на HF 🤗 обученную в таком сетапе (о нет, она обучена генерировать ансейф текст) | 680 |
| 13 | Как мне кажется, Mixture-of-Depths – одна из самых интересных недавно вышедших статей, так как посвящена она довольно очевидной проблеме, что все токены в механизме оттеншена потребляют одинаковое количество компьюта, хотя польза от них не одинаковая. Конкретно эта статья фокусируется на том, как тратить меньше вычислений на токены, которые особенно и не нужны в предсказании
Идея очень простая и поэтому уважаемая: перед каждым трансформер-блоком (в котором находится аттеншн и MLP) работает роутер, который выдает для каждого токена входной последовательности какой-нибудь вес. Дальше в блок поступают и обрабатываются только top-k токенов c наибольшими весами, а все остальные через residual connection обходят блок без каких-либо изменений. Соответственно, механизм оттеншена в итоге требует k^2 вычислений, где k << числа токенов во входной последовательности
Поскольку k задается самим пользователем, размеры матриц внутри аттеншена нам изначально известны, и мы точно можем посчитать, сколько компьюта урежет заданное значение k
Как корректно заметил один человек в реплаях Твиттера, в таком подходе если какой-то токен был проигнорирован в конкретном трансформер-блоке, то дальше все последующие токены не смогут аттендиться к нему, так как этот токен не попадет в KV-кеш. То есть он навсегда остается таким “слепым пятном” в этом блоке, но в следующих блоках он все равно может попасть в top-k и сыграть роль там. В теории возможно, что какой-то совсем бесполезный токен занулится во всех блоках и не окажет вообще никакого влияния на генерацию
В экспериментах лучшая вариация MoD оказалась та, где k был равен 256 (12.5% от всех входных токенов попадали в блок) и где роутер стоял перед каждым вторым трансформер-блоком. Помимо того, что у этой модели лосс был даже ниже, чем у стандартной модели с таким же количеством параметров, она еще и на 66% быстрее совершала шаг инференса. Это по сути и подтверждает, что куча операций в ванильном трансформере излишняя и не дает прироста качества
Довольно приколькую идею скрестить Mixture-of-Depths и Mixture-of-Experts предложили также сами авторы – просто можно заменить одного эксперта на identity function и готово 👍 По-моему очень элегантно
Еще хорошую идею развития этого ресерча закидывают в конце в discussion – можно предположить, что некоторые токены очень полезны как keys, но не очень полезны как queries или наоборот. В общем кажется, что эта команда ресерчеров опубликует позднее что-то еще про более сложный роутинг | 554 |
| 14 | Тоже обратил внимание на эту статью и хотел рассказать, но это объяснение считаю очень неплохим, а саму статью достаточно красивой и интересной с точки зрения анализа потенциала трансформеров как архитектуры (каждый раз нам показывают, что он далеко не исчерпан, как некоторые считают) | 421 |
| 15 | Вышла Starling-7B-beta, продолжение семейства старлингов
Starling-7b-alpha до недавнего времени была лучшей 7b моделью согласно LMSys Chatbot Arena. В ее основе лежал малоизвестный метод онлайн RL - APA и Reward модель обученная на датасете Nectar. И reward модель и сам alpha являются тюнами openchat-7b, другой хорошо известной модели, обученной с помощью другого малоизвестного метода C-RLFT, аналогом DPO.
Новая версия Starling - beta, судя по всему возвращается к корням и была обучена с помощью PPO, но теперь с куда более мощной reward моделью, в основе которой уже лежит одна из лучших опенсорс LLM Yi-Chat-34b. Интересно, что для тренировки RM использовался метод K-wise maximum likelihood из недавней статьи. За основу для тюна был так же взят OpenChat-7b, но уже новой версии 0106. В качестве датасета преференсов использовался тот же самый Nectar, что и для alpha.
Так как официальной статьи нет ни по alpha ни по beta, все на что можно опираться это лидерборды, карточки моделей и небольшой блогпост от berkley о том как делался Starling-alpha.
Согласно этому блогпосту, авторы делают заключение о том, что методы offline RL вроде DPO не могут дать такого же преимущества как правильно сделанный online RL с хорошей RM, и судя по метрикам и субъективному качеству в этом сложно сомневаться. Но также и сложно заключить какую роль тут играет основа моделей - OpenChat, который так же имеет очень неплохие метрики и идет сразу после Starling.
Новый Starling-7b-beta судя по появившимся оценкам, является новой SOTA для 7b моделей, теснит его разве что только сам OpenChat. MTBench оценил beta в 8.12 пунктов, что сейчас фактически почти лучший результат для опенсорса. На OpenLLM LB он имеет средний скор 69.68, что неплохо, но по цифрам это примерно так же как различные мерджи и dpo тюны openchat. Отличительной особенностью тут является скорее человеческая и GPT-4 оценка ответов, которая для старлингов обычно выше, чем для других моделей.
Свободно поиграться с моделькой можно на Chatbot Arena, она уже была туда добавлена. Кстати, она умеет неплохо отвечать на русском, но кажется хуже чем ее предыдушая версия, по моим оценкам, некоторые ее способности ризонинга ломаются на русском относительно английского (но все еще лучше сайги). | 547 |
| 16 | AdaLoRA (Adaptive LoRA) (2023)
Ключевая идея: AdaLoRA динамически регулирует ранг матриц A и B на основе их сингулярных значений, которые указывают на важность входящих в них параметров. Оценивая вклад каждого параметра с этой точки зрения, AdaLoRA точно настраивает размер и сложность адаптеров в соответствии с конкретными потребностями различных слоев, обеспечивая более целенаправленный и эффективный процесс тюнинга.
Потенциал: Улучшает эффективность адаптации модели, сосредотачивая усилия на наиболее влиятельных параметрах, что приводит к лучшему использованию вычислительных ресурсов и потенциально улучшенной производительности модели.
DoRA (Weight-Decomposed Low-Rank Adaptation) (2024)
Ключевая идея: DoRA разделяет обновления весов на компоненты magnitude (вектор) и direction (матрица) и тренируя их независимо. Такое разделение облегчает более точный контроль над процессом адаптации, потенциально позволяя вносить коррективы, которые более точно имитируют динамику полного тюна модели в ограниченном пространстве параметров LoRa.
Потенциал: Повышает качество тюнинга LLM за счет предоставления более красивого механизма, что потенциально приводит к адаптации, в большей степени соответствующей характеристикам полноценного файн-тьюнинга.
Delta-LoRA (2023)
Ключевая идея: Delta-LoRA делает интересную иновацию, позволяя делать обновления исходной матрицы весов W на основе градиентов, полученных из произведения адаптеров A и B, вместо того, чтобы оставлять W замороженной. При этом нам не нужно тратить память при обучении на хранение большого числа градиентов от W, нужны только от A*B. Кроме того метод использует итеративное обновление весов, используя специальный гиперпараметр для контроля того чтобы оригинальные веса в W не слишком сильно изменялись.
Потенциал: Сочетает эффективность адаптации с ограниченным количеством параметров и качеством полноценного FT, превосходя LoRA по качеству.
Gradient Low-Rank Projection (GaLore) (2024)
Ключевая идея: GaLore переключает фокус с сжатия весов модели на сжатие градиентов, проецируя их в пространство более низкого ранга для сохранения памяти без ущерба для производительности модели. Этот инновационный подход к управлению градиентами позволяет значительно сократить использование памяти во время обучения, позволяя использовать стандартное оборудование для задач, которые ранее требовали продвинутых вычислительных ресурсов. Сохраняя целостность динамики обучения через эту проекцию градиента, GaLore предлагает путь к обучению высокосложных моделей в условиях ограниченной памяти.
Потенциал: Существенно снижает барьеры для достижения качества FT, уменьшая ограничения по памяти, несколько похоже на Delta-LoRa.
ReLoRA (2023)
Ключевая идея: Авторы заметили что LoRA в комбинации с Adam имеют свойство уходить по инерации в апдейты в конкретных рангах, что по идее мешает модели обучаться. ReLoRA же предлагает гибридную методологию обучения, сочетающую обновления низкого ранга с периодическими остановками и full-rank слияниями адаптеров для эффективного обучения сетей высокого ранга. Этот метод начинается с full-rank warm-up фазы, за которой следует переход к обновлениям низкого ранга, которые периодически интегрируются обратно в основные параметры модели. Этот цикл позволяет эффективно масштабировать внутренние обучаемые ранги модели, при этом сохраняя производительность, сопоставимую с традиционными методами обучeния.
Потенциал: Предлагает экономичную и масштабируемую альтернативу для обучения больших моделей, сокращая требования к вычислительным ресурсам без ущерба для качества модели, делая улучшение относительно LoRa.
P.S. Помимо указанных методов для матриц весов, также существуют и методы для промптов, позволяющие делать адаптацию не изменяя веса напрямую. Подробнее о них можно почитать в документации библиотеки PEFT от HF 🤗 | 652 |
| 17 | О методах эффективного тюнинга нейросетей (PEFT)
В связи с тем, что последнее время активно обсуждаются новые DoRA и GaLore пришло время сделать обстоятельный recap того что это вобще такое и как работает.
Low-Rank Adaptation (LoRA) (2021)
Ключевая идея: LoRA позволяет эффективно адаптировать предварительно обученные LLM для конкретных задач, вводя две матрицы-проекции низкого ранга r на Linear и Embeddings слои. A (для проекции в r) и B (для проекции из r), которые значительно меньше по размеру по сравнению с весовой матрицей W нейронной сети. Обычно r выбирается в диапазоне [4, 64]. Обучаемы только матрицы A и B и служат т.н. адаптерами, позволяя модели настраиваться под задачи без изменения основной матрицы весов W. Процесс инференса включает умножение входных данных на B*A и добавление результата к исходному выходу от W*x.
Потенциал: Значительное снижение затрачиваемых ресурсов, затрачиваемых на тюнинга больших нейросетей для новых задач, позволяет широко использовать и экспериментировать с LLM в различных областях давая качество близкое к полноценному тюну. А еще метод позволяет сливать адаптеры с оригинальными весами модели, обеспечивая нулевой оверхед при конечном инференсе.
LoRA+ (2024)
Ключевая идея: На основе LoRA, LoRA+ предлагает использование различных learning rates для адаптерных матриц A и B, с значительно более высокой скоростью для B. Этот подход обоснован инициализацией B нулями и A случайными значениями, что указывает на то, что B, начиная с состояния без влияния, может позволить и выиграть от больших обновлений для быстрого становления эффективным.
Потенциал: Улучшает точность и скорость сходимости адаптеров, потенциально выигрывает пару процентов качества у LoRA.
VeRA (Vector-based Random Matrix Adaptation) (2023)
Ключевая идея: VeRA переосмысливает механизм адаптации LoRA, инициализируя матрицы A и B одним и тем же набором случайных весов для всех слоев (да, это почему-то работает) и вводя только два обучаемых вектора, d и b. Этот подход использует концепцию случайных проекций, которая заявляет, что при случайной инициализации мы можем получить сети которые уже могут давать нужное направление и требуются только обучаемый выбор из этих проекций. Собствено, манипулируя этими проекциями (через вектора d и b), а не плотными матрицами, VeRA достигает значительной эффективности параметров, сохраняя производительность модели с сильно уменьшенным адаптационным следом.
Потенциал: Результаты ресерча показывают что можно достигнуть почти той же эффективности что и LoRA, потратив на 97% меньше обучаемых параметров, что конечно делает этот метод очень эффективным в плане вычислительных ресурсов.
LoRA-FA (LoRA with Frozen-A) (2023)
Ключевая идея: LoRA-FA упрощает механизм LoRA, замораживая матрицу A после инициализации и оставляя обучаемой только B. Этот подход эффективно уменьшает вдвое количество обучаемых параметров, используя A в качестве фиксированной матрицы случайно инициализированной проекции, через которую B уже тренируют обратную проекцию. По заявляениям, такое упрощение также поддерживает адаптируемость модели к новым задачам, при этом сильнее снижая вычислительные требования.
Потенциал: Предлагает баланс между адаптируемостью и вычислительной эффективностью, делая обучение LLM еще более доступным относительно LoRA.
LoRA-drop (2024)
Ключевая идея: LoRA-drop вводит предвариетльный оценочный шаг на датасете для определения необходимости и влияния адаптеров LoRA в различных слоях нейросети. Оценивая таким образом влияние прозведения B*A на подмножество данных, он определяет и сохраняет адаптеры, которые значительно влияют на производительность модели, отбрасывая остальные. Этот стратегический отбор оптимизирует механизм адаптации, сосредотачивая вычислительные ресурсы на областях с наибольшим влиянием на результат.
Потенциал: Оптимизирует вычислительные расходы во время адаптации LLM, сокращая ненужные затраты на обучение, сохраняя при этом производительность модели на уровне обычной LoRA. | 537 |
| 18 | 🔥 Сегодня вышла моя первая статья на Хабр, как мы в Tochka AI сделали новые, улучшенные русскоязычные трансформеры с длинным контекстом.
Если кратко: в основе метода внедрение Rotary Embeddings в архитектуру и дистиляция (клонирование оригинальных моделей). Всего мы выпустили 4 разных модели для разных задач (sentence и word embeddings) и размеров контекста (до 2к токенов).
В итоге мы добились топ 1 по скору S+W на бенчмарке encodechka. И кроме того, мы внедрили FlashAttention из Pytorch и ускороили инференс и тренировку в несколько раз!
Веса всех моделей, их код и инструкции по запуску доступны в нашем аккаунте на HuggingFace 🤗
Классические берты с большим русским словарем токенов (идеально для NER и подобных задач):
Tochka-AI/ruRoPEBert-classic-base-512
Tochka-AI/ruRoPEBert-classic-base-2k
Sentence берты, с руссифицированным словарем от e5 (лидеры на encodechka):
Tochka-AI/ruRoPEBert-e5-base-512
Tochka-AI/ruRoPEBert-e5-base-2k
Больше подробностей вас ждут в статье по ссылке 💫 | 1 619 |
| 19 | Design2Code: How Far Are We From Automating Front-End Engineering?
Посмотрим на интересного рекордсмена по апвоутам (77) на HF daily от 6 марта. Статья от авторов из Майкрософт, DeepMind и Стендфорда.
В исследовании рассматривается возможность использования мультимодальных LLM для прямого преобразования визуального дизайна сайта в код для фронтенда. Работа направлена на формализацию задачи и оценку способности мультимодальных языковых моделей с ней справляться. Ну и конечно ответить на вопрос когда уже заменят фронтендеров.
В рамках исследования был создан бенчмарк из 484 разных реальных веб-страниц для тестирования. Много внимания уделено переcмотру классических автоматических метрик (вроде htmlBLEU) и построению новых метрик, на основе сходства отрендереных скриншотов и разных блоков текста, а еще провели перекрестную человеческую оценку результатов, отдельный респект, что посчитали корреляции с автоматикой. Еще предложили методы мультимодального промптинга (вроде многоэтапной генереации) и доказали их эффективность на моделях GPT-4V (OpenAI) и Gemini Pro Vision (Google), а также зафайнтьюнили с LoRA открытую модель Design2Code-18B, достигнув вполне сопоставимых результатов с закрытыми бигтехами.
Результаты весьма интересные: GPT-4V превосходит все другие модели, а человеческая разметка показала, что 49% генераций, достаточно хороши для замены оригинальных веб-страниц, и 64% считаются даже лучше оригиналов. Авторы подчеркивают потенциал Design2Code как хорошо составленного бенчмарка для будущих исследований, включая улучшение техник промптинга для мультимодальных моделей, тренировку и оценку новых открытых моделей для генерации веб-страниц, введение новых входных данных (вроде шаблонов из Figma напрямую) и добавление динамики в страницы (этого все еще пока никем не исследовано). | 386 |
| 20 | Вчера обновился периодичный лидерборд LLM моделей от LMSys основанный на открытой Chatbot Arena
Этот лидерборд обновляется нечастно (где-то раз в 2 недели), так как принцип его работы основан на ELO рангах и попарных сравнениях пользователями моделей, подробнее как это устроено можно почиатть в их статье.
Для меня это самый показательный на данный момент способ сравнения моделей, так как он исключает большинство возможностей для обмана оффлайн-метрик, а еще помогает отслеживать изменения моделей.
Но давайте к главному - что поменялось. С момента прошлого апдейта у нас добавилась gemma-7b от Google, mistral-large и обновления от OpenAI. Как же они себя показали?
Gemma-it, несмотря на топ-1 по популярности на HF, в итоге оказалась на 49 месте рейтинга (что хуже чем Mistral-7B-Instruct-v0.2, который на 30 месте). Mistral-Large ожидаемо оказался на 6том обойдя все старые Claude и становясь в один ранг с GPT-4-0613 по ELO.
Лучшей 7B моделью в рейтинге все также остается Starling-LM-7B-alpha (24 место), который кстати сейчас примерно на одном уровне в рейтинге с новой GPT-3.5-Turbo-0125, а та стала улучшением относительно версии 1106 (на 34 месте).
P.S. Кстати, Chatbot Arena это место, где вы можете бесплатно и без регистрации поиграться с любыми моделями и сравнивать их генерации друг против друга, приняв таким образом участие в расчете рейтинга. Сейчас там уже доступны новые Claude-3. | 372 |
