В прошлом месяце вышли две интересных модели - 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:

А также на задачах по генерации кода и математике:

При этом очевидно, что инференс Mistral Large 2 обходится дешевле.

Я еще не пробовал файнтюнинг Mistral - у Llama, на мой взгляд, больше инструментов для этого, включая официальные скрипты llama-recipes, которые поддерживают FSDP - Fully-Sharded Data Parallel, эффективный способ распределенного файнтюнинга, когда на нескольких видеокартах параллелятся не только данные (в отличие от DDP - Distributed Data Parallel), но и параметры и градиенты модели.

Так что по крайней мере 8B версия llama 3 и 3.1 остается отличным материалом для ИИ разработки, при ее легковесности и высокой производительности.

Комментарии (8)


  1. aka352
    13.08.2024 16:22

    Руслан, а не пробовали дообучать после квантования в 1бит? Была как-то информация о подобном эксперименте и весьма положительно оценивали. При таком раскладе 405b модель вполне реально развернуть на доступных ресурсах.


    1. man4j
      13.08.2024 16:22
      +1

      даже дообучение модели квантованной в 4бита снижает её качество, причем снижает с приколом. то есть на первый взгляд кажется что дообучилась норм, пока в определенном единичном кейсе модель резко не начинает тупить.


      1. aka352
        13.08.2024 16:22

        А есть публикации результатов? Интересно копнуть эту тему глубже. Возможно просто при дообучении обновились не все веса и именно они ответственны за "глюки" модели. В идеале конечно после квантования переобучать на полном датасете, но задачка не для простых смертных.


        1. man4j
          13.08.2024 16:22

          К сожалению результаты не сохраняю, я ведь не компания. На выходных когда время есть занимаюсь ради интереса. Максимум на что мой комп способен - дообучение 72b не квантованных моделей.


    1. ruslandevlabs Автор
      13.08.2024 16:22
      +1

      Не пробовал, мне казалось квантование в 1бит это слишком жестко в плане потери качества. Может быть стоит попробовать


      1. aka352
        13.08.2024 16:22

        Я думаю это был бы интересный эксперимент. Только обучающая выборка нужна большая, чтобы максимально охватить все параметры модели.


  1. avshkol
    13.08.2024 16:22
    +1

    Ссылка на модель ведёт на датасет, в котором почему-то текст на китайском???

    Хотел спросить: как по-вашему оптимальнее учить модель на отраслевых данных на русском?

    Вариант А: взять предобученную на русском модель (например, вашу) и файнтюнить её на отраслевых данных на русском?

    Вариант Б: взять модель, которую учили на разных языках, и файнтюнить на отраслевых данных на русском?

    Также развилка: если часть данных на английском, лучше 1) переводить на русский или 2) файнтюнить на английском, а модель внутри разберёт? Есть на эту тему исследования?

    Т.е. есть 4 варианта: А1, А2, В1, В2.

    Я пока склоняюсь к В2, но, возможно, я не прав...


    1. ruslandevlabs Автор
      13.08.2024 16:22
      +1

      В датасете только 1K примеров на китайском, столько же на английском, остальные 8K на русском. Так что моя модель предобучена на разных языках, тем более что корпус базовой лама-3 - мультиязычный.

      Есть статья Tagengo: A Multilingual Chat Dataset, в которой объясняется, что можно улучшить показатели модели для отдельно взятого языка, обучая на мультиязычных данных. Метрики моей модели ruslandev/llama-3-8b-gpt-4o-ru1.0 эту идею подтверждают.