Всем привет! Мы в лаборатории анализа информационных ресурсов НИВЦ МГУ проводим исследования по адаптации LLM на русский язык под рабочим названием ruadapt. Год назад я уже писал в этом чате о наших экспериментах с адаптацией LLaMa-2 (Impact of Tokenization on LLaMa Russian Adaptation), теперь же у нас есть новые наработки, которыми я хочу с вами поделиться.
Вот уже год как открытые LLM взяли курс на мультиязычность, однако все мы наблюдаем две старые проблемы: (1) замедление генерации на неанглийских промптах и (2) внезапные китайские иероглифы. А все потому, что словарь модели хоть и стал больше, русских слов в нем почти не прибавилось и как было по 3 русских символа на токен так и осталось (qwen2.5 - 2.5, mistral-nemo - 3.0, llama-3 - 3.0, gemma - 3.2). Как результат мы не только тратим на русские слова раза в 2 больше токенов чем на английские (отсюда и замедление), но также оказываемся неспособны полноценно выделять смыслы этих токенов на фоне других (привет 嗨).
В качестве лекарства в нашей работе Impact of Tokenization on LLaMa Russian Adaptation мы предложили просто заменять словарь токенизации, входные и выходные эмбеддинги на адаптированные под русский язык. Год назад это хорошо сработало и даже смогли превзойти исходное качество LLaMA на Russian Supeglue и side-by-side тестах (со всеми ускорениями и экономией контекста).
Но как и все экспериментальные препараты методы наш имел ряд побочных эффектов:
1. Во-первых, из-за полной замены токенизации страдали исходные англоязычные знания модели,
2. Во-вторых, несмотря на то, что на выходе мы получаем более качественную базовую модель с точки зрения русского языка, чтобы получить сравнимую с популярными инструктивными версиями моделей требуется произвести сопоставимые процедуры инстракт-тюнинга, при том, что не все подходы воспроизводимы, так как не всегда открыты инструктивные датасеты (у llama-3 он состоял из 10 миллионов примеров)
Вот мы и решили посмотреть, а можно ли как-то совместить наши ruadapt базовые модели и исходные инструктивные версии (например, модель openchat-3.5 является инструктивной версией модели mistral-7b-v0.1). Мы выяснили следующее:
1. Даже просто заменив матрицы эмбеддингов у инструктивных версий моделей на новые ruadapt версии, модель не перестает работать, хотя и существенно теряет в качестве
2. Если вспомнить линал и посчитать траекторию (проекцию) от весов базы к весам инстракта, то можно откорректировать наши ruadapt эмбедды для лучшей состыковки со слоями инстракта. Этот подход и был нами реализован и назван как Learned Embedding Propagation (LEP).
3. Если этого мало, то после LEP можно произвести дополнительные шаги калибровки и/или инстракт тюнинга, по сути, аналогично любым методам, которые применяются над инстрактами (например, saiga или новый Vikhr)
Таким образом мы создали новое поколение ruadapt моделей: они имеют лучшую токенизацию, по сравнению с исходной моделью и не теряют в качестве, а по ряду бенчмарков даже превосходят качество исходных версий моделей. Первая в списке таких моделей идет RuadaptQwen-3B. Это адаптированная на русский язык модель qwen2.5_3B, к которой была применена описанная процедура. После LEP был произведено несколько этапов инстракт-тюнинга на основе кода проекта saiga. Токенизатор собрали с учетом специализации на русский и сохранения способностей на английском (i.e. 4.0 символа на русский токен), так что ускорение генерации русскоязычного текста до 60%.
На известном бенче Vikhrmodels/arenahardlb наш RuadaptQwen-3B набрал 66 очков , обходя при этом большинство моделей размером в 7-8 миллиардов параметров (и это мы ещё не применили секретную технику "тюна на тесте" 🤡). Это не говорит о том, что модель действительно лучше 7-8 миллиардных моделей, но по крайней мере с точки зрения данной арены не уступает им, имея при этом всего 3 миллиарда параметров.
Welcome попробовать нашу новую модель, будем рады полезному фидбеку, особенно по сравнению данной модели с ее исходным эквивалентом Qwen/Qwen2.5-3B-Instruct :)
https://huggingface.co/RefalMachine/ruadapt_qwen2.5_3B_ext_u48_instruct_v4
Вот уже год как открытые LLM взяли курс на мультиязычность, однако все мы наблюдаем две старые проблемы: (1) замедление генерации на неанглийских промптах и (2) внезапные китайские иероглифы. А все потому, что словарь модели хоть и стал больше, русских слов в нем почти не прибавилось и как было по 3 русских символа на токен так и осталось (qwen2.5 - 2.5, mistral-nemo - 3.0, llama-3 - 3.0, gemma - 3.2). Как результат мы не только тратим на русские слова раза в 2 больше токенов чем на английские (отсюда и замедление), но также оказываемся неспособны полноценно выделять смыслы этих токенов на фоне других (привет 嗨).
В качестве лекарства в нашей работе Impact of Tokenization on LLaMa Russian Adaptation мы предложили просто заменять словарь токенизации, входные и выходные эмбеддинги на адаптированные под русский язык. Год назад это хорошо сработало и даже смогли превзойти исходное качество LLaMA на Russian Supeglue и side-by-side тестах (со всеми ускорениями и экономией контекста).
Но как и все экспериментальные препараты методы наш имел ряд побочных эффектов:
1. Во-первых, из-за полной замены токенизации страдали исходные англоязычные знания модели,
2. Во-вторых, несмотря на то, что на выходе мы получаем более качественную базовую модель с точки зрения русского языка, чтобы получить сравнимую с популярными инструктивными версиями моделей требуется произвести сопоставимые процедуры инстракт-тюнинга, при том, что не все подходы воспроизводимы, так как не всегда открыты инструктивные датасеты (у llama-3 он состоял из 10 миллионов примеров)
Вот мы и решили посмотреть, а можно ли как-то совместить наши ruadapt базовые модели и исходные инструктивные версии (например, модель openchat-3.5 является инструктивной версией модели mistral-7b-v0.1). Мы выяснили следующее:
1. Даже просто заменив матрицы эмбеддингов у инструктивных версий моделей на новые ruadapt версии, модель не перестает работать, хотя и существенно теряет в качестве
2. Если вспомнить линал и посчитать траекторию (проекцию) от весов базы к весам инстракта, то можно откорректировать наши ruadapt эмбедды для лучшей состыковки со слоями инстракта. Этот подход и был нами реализован и назван как Learned Embedding Propagation (LEP).
3. Если этого мало, то после LEP можно произвести дополнительные шаги калибровки и/или инстракт тюнинга, по сути, аналогично любым методам, которые применяются над инстрактами (например, saiga или новый Vikhr)
Таким образом мы создали новое поколение ruadapt моделей: они имеют лучшую токенизацию, по сравнению с исходной моделью и не теряют в качестве, а по ряду бенчмарков даже превосходят качество исходных версий моделей. Первая в списке таких моделей идет RuadaptQwen-3B. Это адаптированная на русский язык модель qwen2.5_3B, к которой была применена описанная процедура. После LEP был произведено несколько этапов инстракт-тюнинга на основе кода проекта saiga. Токенизатор собрали с учетом специализации на русский и сохранения способностей на английском (i.e. 4.0 символа на русский токен), так что ускорение генерации русскоязычного текста до 60%.
На известном бенче Vikhrmodels/arenahardlb наш RuadaptQwen-3B набрал 66 очков , обходя при этом большинство моделей размером в 7-8 миллиардов параметров (и это мы ещё не применили секретную технику "тюна на тесте" 🤡). Это не говорит о том, что модель действительно лучше 7-8 миллиардных моделей, но по крайней мере с точки зрения данной арены не уступает им, имея при этом всего 3 миллиарда параметров.
Welcome попробовать нашу новую модель, будем рады полезному фидбеку, особенно по сравнению данной модели с ее исходным эквивалентом Qwen/Qwen2.5-3B-Instruct :)
https://huggingface.co/RefalMachine/ruadapt_qwen2.5_3B_ext_u48_instruct_v4