Вы, наверное, уже не раз слышали о тонкой настройке (fine-tuning) моделей. На самом деле, в нашей компании мы настраиваем модель каждые 10 секунд. До написания этой статьи я даже настроил свой завтрак, на всякий случай, потому что как мы знаем, все становится лучше, когда зафайнтюнено ????.

Но что это на самом деле? Это просто очередной модный термин или в нем есть смысл? ???? Давайте выясним.

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

f(x) = a * x + b

или

вес = a * рост + b

Тренировка модели - это просто поиск правильных параметров a и b, чтобы наша модель, когда мы вставляем рост, давала нам правильный вес (в среднем).

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

Обучить модель с двумя параметрами просто. Вы даже можете сделать это с помощью карандаша и бумаги. Но тренировать модель с миллиардами параметров? Это как пытаться сосчитать каждую песчинку на пляже - задача, требующая серьезной вычислительной мощности: обычно GPU или TPU, которые могут стоить дороже, чем новый Ламборгини. Говорят, что Meta (известная экстремистская организация ????) потратила более 20 миллионов долларов на обучение своей модели LLama только в вычислительных затратах. Если ваше имя - Цукерберг, то можете прекратить чтение прямо сейчас, потому что вы можете позволить себе тренировать новую модель хоть каждый день. Для нас, простых смертных, это не реалистично.

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

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

Таблица корреляции среднего веса и роста
Таблица корреляции среднего веса и роста

Мы собираемся подогнать функцию так чтобы она была как можно ближе к каждой точке (в среднем). Это наша модель:

График подогнанной функции
График подогнанной функции

Эта модель - линейная функция с двумя параметрами:

вес = a * рост + b 

a называется уклоном (углом между линией и осью X) и b - пересечением (точкой, где линия пересекает ось Y).

Чтобы подогнать линию, нам нужно найти правильный уклон И правильное пересечение. Но что, если бы мы знали правильный уклон с самого начала? Тогда нам нужно было бы только переместить линию вверх или вниз, чтобы подогнать ее к нашим данным. Гораздо проще.

Вот что такое тонкая настройка. Мы берем существующую модель, в которой уже установлено большинство параметров, и нам нужно только подкрутить несколько других. Это гораздо проще, чем тренировать модель с нуля.

Ключевой момент здесь - использовать модель, которая уже хорошо справляется с определенными базовыми аспектами типа задачи, которую вы хотите решить. Например, если вы пытаетесь построить систему, которая категоризирует отзывы пользователей на товары как положительные, нейтральные или отрицательные, лучше использовать существующую модель обработки естественного языка (NLP модель), которая уже хорошо понимает человеческий язык, в качестве основы. Например, модель, обученная на Википедии, чтобы предсказывать следующее слово статьи Википедии. Затем вы можете провести дополнительную настройку с набором данных отзывов на товары, чтобы она могла определять оценку товара из текстового обзора пользователя.

Или подумайте об этом так: вы хотите починить унитаз, но вокруг нет сантехников. Вы не будете берать 5-летнего ребенка, учить его читать и писать, отправлять его в сантехнический колледж, чтобы он получил диплом сантехника, а затем чинить вам трубы. Это займет слишком много времени. Вместо этого вы берете плотника. Он уже знает все основы - как пользоваться инструментами и читать инструкции. Ему нужно только немного обучения, чтобы он мог заниматься сантехникой. Так что тонкая настройка - это взятие хорошо обученной модели - той, которая уже является асом в определенной задаче - и дача ей нескольких дополнительных уроков, чтобы сделать ее экспертом в чем-то немного другом. Основные навыки уже есть; их просто нужно немного настроить.

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

Давайте рассмотрим такую аналогию.

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

Ваш 10-летний сын, парень по имени Петя, который только что закончил институт и подрабатывал барменом в свободное время, и Илон Маск. Предположим, они все стоят одинаково.

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

Чего вы ожидали от 10-летнего ребенка? Кстати детский труд запрещен и к вам уже выехали...
Чего вы ожидали от 10-летнего ребенка? Кстати детский труд запрещен и к вам уже выехали...

Вот это похоже на тренировку собственной модели. В общем не советую.

Или вы можете обучить Джо, и, возможно, в конечном итоге он сможет управлять баром. Но это займет очень много времени. И вы рискуете своими деньгами на его обучение без каких-либо гарантий, что он будет хорош в этом. Это настройка собственной модели.

Типичный разговор с AI разработчиками
Типичный разговор с AI разработчиками

Так что есть очень веские причины не тренировать модель самостоятельно.

Или вы нанимаете Илона Маска. Да, он не знает, как управлять баром. Но у него огромный опыт управления другими бизнесами. Вы можете дать ему инструкцию по управлению баром и быть довольно уверенным, что если он чего-то не знает — он это прочитает в инструкции. Вы можете быть достаточно уверены, что он не приведет вас к банкротству и справится с работой (если только он внезапно не решит запустить ваш бар в космос, в этом случае вам не повезло). Это аналогично использованию универсальной большой модели (LLM), такой как ChatGPT, с векторной базой данных, которая играет роль инструкции. Это техника называется RAG (об этом позже).

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

Решение о настройке модели машинного обучения немного похоже на выбор подходящей одежды для случая. Не всегда нужно полностью менять гардероб; иногда достаточно нового аксессуара. Вот несколько сценариев, где настройка помогает:

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

  2. Улучшение качества: если ваша цель — улучшить способность модели выполнять определенные задачи, например, писать стихи или переводить языки, донастройка может помочь достичь этого.

  3. Настройка стиля вывода: вы можете настроить модель, чтобы корректировать ее тон, личность или уровень детализации в ее выводах, делая ее более подходящей для ваших требований.

  4. Адаптация к меняющимся данным: по мере изменения типа данных, с которыми вы работаете, настройка модели обеспечивает ее актуальность и эффективность.

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

RAG

Метод генерации с дополнением запросами (RAG) используется в языковых моделях ИИ и похож на сочетание суперумного библиотекаря с искусным писателем. Часть ИИ "библиотекарь" (обычно векторная база данных) просматривает огромное количество текстов (как книги, статьи и веб-сайты), чтобы найти информацию, которая идеально подходит для вашего вопроса. Подумайте об этом как о поиске лучших справочных материалов. Как только он находит эту информацию, он передает ее части "писатель". Поиск в векторной базе идёт не по текстовому совпадению а по смыслу, что похоже на поиск в Гугле. При поиске слова собака, будут найдены записи про овчарку, пуделя так далее, даже если в тексте записи слово собака не упоминается.

Часть ИИ "писатель" (обычно LLM) затем использует эту информацию для создания ответа. Она не просто копирует то, что нашла; вместо этого она понимает, переформулирует и иногда сочетает или расширяет информацию, чтобы создать новый, оригинальный ответ, который подходит для вашего вопроса. Этот подход помогает ИИ давать более точные и подробные ответы, особенно на сложные вопросы, потому что он использует широкий спектр информации, очень похоже на то, как человек пишет исследовательскую работу с лучшими источниками под рукой.

Итак, что мы узнали о настройке и RAG в мире машинного обучения? Во-первых, настройка — это как дать опытному шеф-повару новую книгу рецептов — это умный, находчивый способ расширить навыки существующей модели, не начиная с нуля. Речь идет о том, чтобы работать умнее, а не усерднее, в погоне за совершенством ИИ.

На этом пока все, удачи!

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


  1. aleksejs1
    11.01.2024 09:05

    А как в RAG происходит поиск нужной записи из векторной базы?


    1. Squirrelfm Автор
      11.01.2024 09:05

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


  1. ovsale
    11.01.2024 09:05
    +1

    в тексте статьи ничего про файн тьюнинг? а рассказать тут есть о чем


    1. Squirrelfm Автор
      11.01.2024 09:05

      Будет отдельный статьей. Я стараюсь не делать статьи длиннее 10 минут, чтобы было проще читать