В прошлом месяце вышли две интересных модели - Llama 3.1, улучшенная версия Llama 3, и Mistral Large 2.
Самое заметное отличие Llama 3.1 от предыдущих моделей - у нее есть версия 405B- 405 миллиардов обучаемых параметров. Это самая большая открытая языковая модель, и опубликованные метрики показывают ее производительность на уровне GPT-4. Тесты проводились как на общих бенчмарках, например MMLU, так и специализированных - на код и математику.
Для меня особенно интересными показались улучшенные мультиязычные возможности этой модели, так как я давно экспериментирую с обучением LLM на мультиязычных данных, моя последняя модель ruslandev/llama-3-8b-gpt-4o-ru1.0 превзошла GPT-3.5 на русскоязычной версии бенчмарка MT-Bench.
Llama 3.1 поддерживает семь языков, кроме английского - французский, немецкий, хинди, итальянский, португальский, испанский и тайский. Русского в списке нет, как легко заметить, но это не значит, что в корпусе базовой модели нет примеров на русском. Есть, и предостаточно, это становится очевидно при файнтюнинге. У меня есть мой собственный датасет для файнтюнинга ruslandev/tagengo-rus-gpt-4o, который я сгенерировал из преимущественно русскоязычных промптов датасета Tagengo с помощью GPT-4o.
Теперь о минусах модели Llama 3.1 - файнтюнинг 405B версии обойдется дорого, так как даже при сжатии в 4bit необходимо выделить около 200 ГБ VRAM для такой задачи. Поэтому я файнтюнил версию 8b на вышеупомянутом датасете, арендуя две видеокарты A100 на облачном сервисе immers.cloud. Но я не заметил особого превосходства версии 3.1 над третьей версией. Даже наоборот, я столкнулся с несколькими проблемами - например, 3.1 после файнтюнинга на моем датасете показала тенденцию прерывать генерацию, не завершив ответ - до причины я так и не докопался, но у Llama 3 такой проблемы не было.
Кстати, если вам тоже кажется неподъемной версия 405B для запуска на своем железе, стоит обратить внимание на модель Mistral Large 2, которая вышла почти одновременно с Llama 3.1. У этой модели 123 миллиарда параметров - в три с лишним раза меньше, чем у Llama 3.1 405B. Но вот интересные результаты бенчмарков, по которым можно сравнить эти две модели.
Мистраль побеждает ламу на MT-Bench:
![](https://habrastorage.org/getpro/habr/upload_files/43c/fba/f1b/43cfbaf1b1e9c48d5541c43378b7d45a.png)
А также на задачах по генерации кода и математике:
![](https://habrastorage.org/getpro/habr/upload_files/d71/5af/315/d715af31562a5361dbf524246a165050.png)
![](https://habrastorage.org/getpro/habr/upload_files/931/cc1/c80/931cc1c80b93d0b4e7cc5365586f9e9a.png)
При этом очевидно, что инференс Mistral Large 2 обходится дешевле.
Я еще не пробовал файнтюнинг Mistral - у Llama, на мой взгляд, больше инструментов для этого, включая официальные скрипты llama-recipes, которые поддерживают FSDP - Fully-Sharded Data Parallel, эффективный способ распределенного файнтюнинга, когда на нескольких видеокартах параллелятся не только данные (в отличие от DDP - Distributed Data Parallel), но и параметры и градиенты модели.
Так что по крайней мере 8B версия llama 3 и 3.1 остается отличным материалом для ИИ разработки, при ее легковесности и высокой производительности.
Комментарии (8)
avshkol
13.08.2024 16:22+1Ссылка на модель ведёт на датасет, в котором почему-то текст на китайском???
Хотел спросить: как по-вашему оптимальнее учить модель на отраслевых данных на русском?
Вариант А: взять предобученную на русском модель (например, вашу) и файнтюнить её на отраслевых данных на русском?
Вариант Б: взять модель, которую учили на разных языках, и файнтюнить на отраслевых данных на русском?
Также развилка: если часть данных на английском, лучше 1) переводить на русский или 2) файнтюнить на английском, а модель внутри разберёт? Есть на эту тему исследования?
Т.е. есть 4 варианта: А1, А2, В1, В2.
Я пока склоняюсь к В2, но, возможно, я не прав...
ruslandevlabs Автор
13.08.2024 16:22+1В датасете только 1K примеров на китайском, столько же на английском, остальные 8K на русском. Так что моя модель предобучена на разных языках, тем более что корпус базовой лама-3 - мультиязычный.
Есть статья Tagengo: A Multilingual Chat Dataset, в которой объясняется, что можно улучшить показатели модели для отдельно взятого языка, обучая на мультиязычных данных. Метрики моей модели ruslandev/llama-3-8b-gpt-4o-ru1.0 эту идею подтверждают.
aka352
Руслан, а не пробовали дообучать после квантования в 1бит? Была как-то информация о подобном эксперименте и весьма положительно оценивали. При таком раскладе 405b модель вполне реально развернуть на доступных ресурсах.
man4j
даже дообучение модели квантованной в 4бита снижает её качество, причем снижает с приколом. то есть на первый взгляд кажется что дообучилась норм, пока в определенном единичном кейсе модель резко не начинает тупить.
aka352
А есть публикации результатов? Интересно копнуть эту тему глубже. Возможно просто при дообучении обновились не все веса и именно они ответственны за "глюки" модели. В идеале конечно после квантования переобучать на полном датасете, но задачка не для простых смертных.
man4j
К сожалению результаты не сохраняю, я ведь не компания. На выходных когда время есть занимаюсь ради интереса. Максимум на что мой комп способен - дообучение 72b не квантованных моделей.
ruslandevlabs Автор
Не пробовал, мне казалось квантование в 1бит это слишком жестко в плане потери качества. Может быть стоит попробовать
aka352
Я думаю это был бы интересный эксперимент. Только обучающая выборка нужна большая, чтобы максимально охватить все параметры модели.