Сегодня на конференции Practical ML Conf была представлена новая версия нашей большой языковой модели YandexGPT 2. Она уже работает в навыке Алисы «Давай придумаем», где помогает структурировать информацию, генерировать идеи, писать тексты и многое другое. Новая модель отвечает лучше старой в 67% случаев, а в некоторых сценариях побеждает с ещё бо́льшим перевесом. Этого результата мы добились благодаря улучшениям на каждом этапе обучения модели, но ключевое изменение — новый pretrain.
Коротко расскажу о том, что изменилось в процессе обучения модели, в каких сценариях это принесло наибольший эффект и чем мы планируем заниматься дальше.
Для начала несколько слов о том, как модели сравниваются друг с другом. Одна и та же модель может быть сильна в одном сценарии, но проигрывать в другом. Как в таком случае определить, стала модель в целом умнее или нет?
Мы решили эту задачу так: собрали 500 максимально непохожих друг на друга примеров задач пользователей. Дальше мы отдали их старой и новой моделям и посчитали, как часто ответ новой модели оказывался лучше ответа старой. Если новая побеждает в бо́льшем числе заданий, то мы считаем её более умной. YandexGPT 2 одолела предыдущую версию в 67% случаев.
С оценкой модели в целом всё понятно. Но как она ведёт себя на конкретных срезах сценариев, которые популярны у пользователей? Чтобы понять это, мы разбили те же 500 примеров задач на отдельные группы, соответствующие разным сценариям, и замерили, как изменилось качество модели в каждой из них:
Вот несколько примеров для разных сценариев:
Пример работы YaGPT 2 для стилизации текста
Пример ответа на вопрос в виде таблицы
Пример генерации идеи
Пример анализа текста
Пример генерации текста
Есть два основных этапа обучения модели: претрейн (pretrain) и файнтюн (finetune). На первом этапе нейросеть повышает свою эрудицию и общие знания о мире, языке и задачах, а на втором — учится выполнять просьбы, придерживаться формата и стиля ответа. Об этих этапах я уже рассказывал в предыдущей статье про запуск YaGPT в Алисе. Главное, что важно помнить: проблему одного этапа нельзя решить улучшением другого.
В рассказе про запуск первой модели мы фокусировались на сборе данных для файнтюна. Сейчас более подробно расскажу про претрейн.
Задача претрейна — впитать в себя все полезные знания интернета. Самая большая сложность этого этапа — выбрать из бесконечного потока самые полезные данные для обучения. Но как понять, становится ли датасет лучше после каждой новой порции данных? Заново обучать большую модель на каждое изменение датасета и измерять её качество — невероятно долго и дорого. Если бы мы так делали, то двигались бы со скоростью улитки. Более реалистичный подход: копить много изменений в датасете и только затем переобучать модель. Но есть существенный риск не угадать с выбранным направлением и вместо роста получить падение качества.
Раньше мы отсматривали изменения сами и даже создали инструменты для ручного поиска информации в претрейне. Сбор датасета был сродни искусству. И чем лучше становился датасет, тем сложнее было искать проблемы вручную. Поэтому мы пошли другим путём.
Теперь при изменениях в датасете мы обучаем на нём маленькую, быструю модель и сравниваем её с такой же моделью для старой версии датасета. Если результат положительный, то изменение принимается. Так мы тратим ресурсы только на те изменения в датасете, которые помогают растить качество базовой модели, а это значит, что мы можем проверять существенно бо́льшее количество гипотез в единицу времени. Ключевая сложность в том, что маленькая модель не в полной мере отражает свойства большой. То есть такой подход к замерам не идеален, но на практике с ним лучше, чем без него.
Нам удалось проверить множество идей и принять среди них те, которые приносят пользу. Вот некоторые из них:
Новая модель уже работает в Алисе в навыке «Давай придумаем». Он доступен в Яндекс Станциях, телевизорах с Алисой, приложении Яндекс, Яндекс Браузере, на странице с результатами поиска и на ya.ru. Кстати, в Поиске окно чата с нейросетью теперь можно развернуть на весь экран для более удобной работы.
Что дальше? Мы продолжим растить качество датасетов претрейна и файнтюна, поскольку по-прежнему видим хороший эффект от качественных примеров. Мы ещё не внедрили RLHF, но готовимся к этому шагу. Ну и, конечно же, продолжим внедрять YaGPT в сервисы Яндекса. Но только там, где это будет полезно.
Коротко расскажу о том, что изменилось в процессе обучения модели, в каких сценариях это принесло наибольший эффект и чем мы планируем заниматься дальше.
В каких сценариях новая модель особенно полезна
Для начала несколько слов о том, как модели сравниваются друг с другом. Одна и та же модель может быть сильна в одном сценарии, но проигрывать в другом. Как в таком случае определить, стала модель в целом умнее или нет?
Мы решили эту задачу так: собрали 500 максимально непохожих друг на друга примеров задач пользователей. Дальше мы отдали их старой и новой моделям и посчитали, как часто ответ новой модели оказывался лучше ответа старой. Если новая побеждает в бо́льшем числе заданий, то мы считаем её более умной. YandexGPT 2 одолела предыдущую версию в 67% случаев.
С оценкой модели в целом всё понятно. Но как она ведёт себя на конкретных срезах сценариев, которые популярны у пользователей? Чтобы понять это, мы разбили те же 500 примеров задач на отдельные группы, соответствующие разным сценариям, и замерили, как изменилось качество модели в каждой из них:
- генерация текста — победа в 69% случаев;
- пересказ и анализ текста — 68%;
- брейншторм идей — 66%;
- стилизация текста под аудиторию или персонажа — 62%;
- ответы на вопросы — 62%.
Вот несколько примеров для разных сценариев:
Пример работы YaGPT 2 для стилизации текста
Пример ответа на вопрос в виде таблицы
Пример генерации идеи
Пример анализа текста
Пример генерации текста
Что изменилось в обучении новой модели
Есть два основных этапа обучения модели: претрейн (pretrain) и файнтюн (finetune). На первом этапе нейросеть повышает свою эрудицию и общие знания о мире, языке и задачах, а на втором — учится выполнять просьбы, придерживаться формата и стиля ответа. Об этих этапах я уже рассказывал в предыдущей статье про запуск YaGPT в Алисе. Главное, что важно помнить: проблему одного этапа нельзя решить улучшением другого.
В рассказе про запуск первой модели мы фокусировались на сборе данных для файнтюна. Сейчас более подробно расскажу про претрейн.
Задача претрейна — впитать в себя все полезные знания интернета. Самая большая сложность этого этапа — выбрать из бесконечного потока самые полезные данные для обучения. Но как понять, становится ли датасет лучше после каждой новой порции данных? Заново обучать большую модель на каждое изменение датасета и измерять её качество — невероятно долго и дорого. Если бы мы так делали, то двигались бы со скоростью улитки. Более реалистичный подход: копить много изменений в датасете и только затем переобучать модель. Но есть существенный риск не угадать с выбранным направлением и вместо роста получить падение качества.
Раньше мы отсматривали изменения сами и даже создали инструменты для ручного поиска информации в претрейне. Сбор датасета был сродни искусству. И чем лучше становился датасет, тем сложнее было искать проблемы вручную. Поэтому мы пошли другим путём.
Теперь при изменениях в датасете мы обучаем на нём маленькую, быструю модель и сравниваем её с такой же моделью для старой версии датасета. Если результат положительный, то изменение принимается. Так мы тратим ресурсы только на те изменения в датасете, которые помогают растить качество базовой модели, а это значит, что мы можем проверять существенно бо́льшее количество гипотез в единицу времени. Ключевая сложность в том, что маленькая модель не в полной мере отражает свойства большой. То есть такой подход к замерам не идеален, но на практике с ним лучше, чем без него.
Нам удалось проверить множество идей и принять среди них те, которые приносят пользу. Вот некоторые из них:
- Обучили классификатор некачественного текста. Такой текст может содержать ошибки в кодировке, HTML-разметку, повторы предложений и тому подобное.
- Обучили классификатор полезного текста. Текст может хорошо выглядеть, но быть бесполезным для пользователя. Полезными мы считаем тексты, которые содержат ответы на реальные запросы пользователей Яндекс Поиска.
- Увеличили долю текстов с высокой цитируемостью.
- Улучшили алгоритм дедупликации: дублей стало меньше 0,5%.
- Создали отдельный инструмент для оценки «фактовой полноты». Взяли реальные фактовые запросы из Поиска и замерили, какая доля из них может получить ответ из претрейна. Увеличили эту долю с 70% до 80%.
Где попробовать и что ждать в будущем
Новая модель уже работает в Алисе в навыке «Давай придумаем». Он доступен в Яндекс Станциях, телевизорах с Алисой, приложении Яндекс, Яндекс Браузере, на странице с результатами поиска и на ya.ru. Кстати, в Поиске окно чата с нейросетью теперь можно развернуть на весь экран для более удобной работы.
Что дальше? Мы продолжим растить качество датасетов претрейна и файнтюна, поскольку по-прежнему видим хороший эффект от качественных примеров. Мы ещё не внедрили RLHF, но готовимся к этому шагу. Ну и, конечно же, продолжим внедрять YaGPT в сервисы Яндекса. Но только там, где это будет полезно.