Автор: Илья Димов

Редактура: Тимур Фатыхов

Введение

В этой статье мы обсудим файнтюнинг LLM, его альтернативы и фреймворки. А ещё рассмотрим примеры использования и поделимся полезными советами 🙂

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

Когда нужен файнтюнинг?

Современные модели довольно умные и уже не требуют дообучения: зачастую можно обойтись промптингом и RAG. Например, та же вежливость в задаче customer support легко задается промптом.

Ответы по документации тоже проще сделать через RAG. Допустим, ****мы хотим предоставить бота, отвечающего согласно документации какого-нибудь проекта. Для этого преобразовываем наш корпус в вопросно-ответный датасет и обучаем модель давать правильные ответы по вопросам. Однако она не сможет узнавать новые характеристики проекта без переобучения. Да ещё и такой датасет собрать с нуля не так уж просто! Поэтому здесь гораздо быстрее завести RAG и посмотреть, какая модель лучше справится на тестовом корпусе (меньшем в сравнении с потенциальным обучающим корпусом).

Получается, файнтюнинг не нужен? Ведь внешнюю информацию мы задаём через RAG, а не обучаем модель напрямую, стиль речи и прочие детали задаём промптом, поскольку современные модели уже достаточно качественные.

На самом деле не всё так просто. На практике есть множество нюансов. Например, мы хотим, чтобы наша модель отвечала как друг, а у неё формальный стиль речи (она была обучена на корпусе ассистента). Тогда промпта хватит на несколько шагов диалога, после которых модель снова начнёт общаться формально.

RAG здесь тоже не поможет — нам нужны не факты, а стиль и формулировки.

Получается, файнтюнинг, всё-таки, иногда нужен 🙂. Давай рассмотрим несколько таких примеров.

Пример №1. Ответ на другом языке

Представим, что мы маркетплейс, у которого есть LLM. Она помогает пользователю при обсуждении товара: отвечает на вопросы, рассказывает о плюсах и минусах. Менеджеры решили продать наше решение иностранному клиенту, поэтому нам нужно срочно адаптировать его для исландского языка.

Конечно, можно воспользоваться переводчиком. Но что делать, если мы хотим сэкономить?

Большая модель, скорее всего, в каком-то виде уже знает исландский, но качество этих знаний недостаточное: языка было очень мало при обучении, поэтому сейчас допускается много ошибок. Что делать?

Во-первых, можно спарсить корпус исландского языка, дообучить на нём LLM до этапа ассистента, а потом сделать SFT на англоязычном корпусе. Это улучшит качество и на исландском. Во-вторых, напрямую переводим наши примеры и учим модель сразу на них, таким образом исключая последующую работу с переводчиком (мы его используем один раз для перевода корпуса).

Отметим, что подобные задачи пытаются решить и промптингом. Например, в этой работе, переводят без дообучения с помощью подачи в модель примеров текстов и переводов слов.

Пример №2. Ответ в стиле mail.ru