Использование больших языковых моделей для создания генеративных AI-приложений сопряжено с новыми вызовами. Ключевая задача — обеспечить качество ответов (точность и релевантность) в содержимом, сгенерированном моделью на запрос пользователя. В предыдущих уроках мы обсуждали такие техники, как prompt engineering и retrieval-augmented generation, которые пытаются решить эту проблему путём изменения входного запроса для существующей модели.
В сегодняшнем уроке мы рассмотрим третий подход — тонкую настройку, которая пытается решить задачу путём дополнительного обучения самой модели на новых данных. Давайте разберёмся подробнее.
В этом уроке вы познакомитесь с понятием тонкой настройки предобученных языковых моделей, узнаете о преимуществах и сложностях этого подхода, а также получите рекомендации, когда и как использовать тонкую настройку для улучшения работы ваших генеративных AI-моделей.
К концу урока вы сможете ответить на следующие вопросы:
- Что такое тонкая настройка языковых моделей?
- Когда и зачем она нужна?
- Как можно тонко настроить предобученную модель?
- Какие ограничения есть у тонкой настройки?
Готовы? Поехали.
Хотите получить общее представление о том, что мы будем изучать, прежде чем углубляться? Ознакомьтесь с этим иллюстрированным руководством, которое описывает путь обучения в этом уроке — от изучения основных концепций и мотивации тонкой настройки до понимания процесса и лучших практик выполнения задачи тонкой настройки. Это увлекательная тема для изучения, не забудьте заглянуть на страницу Resources для дополнительных ссылок, которые помогут вам в самостоятельном обучении!
По определению, большие языковые модели предобучены на огромных объёмах текстов из различных источников, включая интернет. Как мы узнали в предыдущих уроках, для улучшения качества ответов модели на вопросы пользователя ("промпты") нужны такие техники, как prompt engineering и retrieval-augmented generation.
Популярный метод prompt engineering — дать модели больше указаний о том, что ожидается в ответе, либо через инструкции (явные указания), либо через несколько примеров (неявные указания). Это называется few-shot learning, но у этого подхода есть два ограничения:
- Ограничения по количеству токенов модели могут ограничить число примеров и снизить эффективность.
- Стоимость токенов может сделать добавление примеров к каждому запросу дорогим и ограничить гибкость.
Тонкая настройка — распространённая практика в машинном обучении, когда берут предобученную модель и дообучают её на новых данных для улучшения результатов в конкретной задаче. В контексте языковых моделей мы можем тонко настроить предобученную модель на специально подобранном наборе примеров для конкретной задачи или области применения, чтобы создать кастомную модель, которая будет точнее и релевантнее для этой задачи или области. Дополнительным плюсом тонкой настройки является уменьшение количества примеров, необходимых для few-shot обучения — что снижает использование токенов и связанные с этим затраты.
В этом контексте под тонкой настройкой понимается контролируемая тонкая настройка, когда дообучение происходит за счёт добавления новых данных, которые не входили в исходный тренировочный набор. Это отличается от неконтролируемой тонкой настройки, когда модель дообучается на исходных данных, но с другими гиперпараметрами.
Главное помнить, что тонкая настройка — это продвинутый метод, требующий определённого уровня экспертизы для достижения желаемых результатов. Если сделать это неправильно, улучшений может не быть, а производительность модели для вашей целевой области может даже ухудшиться.
Поэтому, прежде чем изучать "как" тонко настраивать языковые модели, нужно понять "зачем" это делать и "когда" начинать процесс тонкой настройки. Начните с ответов на следующие вопросы:
- Сценарий использования: Какова ваша цель тонкой настройки? Какой аспект текущей предобученной модели вы хотите улучшить?
- Альтернативы: Пробовали ли вы другие методы для достижения желаемого результата? Используйте их как базу для сравнения.
- Prompt engineering: попробуйте few-shot prompting с примерами релевантных ответов. Оцените качество ответов.
- Retrieval Augmented Generation: попробуйте дополнить запросы результатами поиска по вашим данным. Оцените качество ответов.
- Затраты: Определили ли вы затраты на тонкую настройку?
- Возможность настройки — доступна ли предобученная модель для тонкой настройки?
- Усилия — подготовка данных, оценка и доработка модели.
- Вычислительные ресурсы — для запуска задач тонкой настройки и развертывания модели.
- Данные — наличие достаточного количества качественных примеров для заметного эффекта.
- Преимущества: Подтвердили ли вы выгоды от тонкой настройки?
- Качество — превзошла ли тонко настроенная модель базовую?
- Стоимость — снизилось ли использование токенов за счёт упрощения запросов?
- Расширяемость — можно ли использовать базовую модель для новых областей?
Ответив на эти вопросы, вы сможете решить, подходит ли тонкая настройка для вашего случая. Идеально, если преимущества перевешивают затраты. Если решение принято, пора подумать о том, как тонко настраивать предобученную модель.
Хотите больше информации о процессе принятия решения? Посмотрите To fine-tune or not to fine-tune
Для тонкой настройки предобученной модели вам понадобятся:
- предобученная модель для дообучения
- набор данных для тонкой настройки
- среда для запуска задачи тонкой настройки
- среда для развертывания тонко настроенной модели
Ниже приведены ресурсы с пошаговыми руководствами, которые помогут вам пройти реальный пример с выбранной моделью и подобранным набором данных. Для работы с этими уроками вам понадобится аккаунт у соответствующего провайдера, а также доступ к нужной модели и данным.
| Провайдер | Руководство | Описание |
|---|---|---|
| OpenAI | How to fine-tune chat models | Научитесь тонко настраивать gpt-35-turbo для конкретной области ("помощник по рецептам") — подготовка данных, запуск задачи тонкой настройки и использование модели для вывода. |
| Azure OpenAI | GPT 3.5 Turbo fine-tuning tutorial | Узнайте, как тонко настроить модель gpt-35-turbo-0613 в Azure: создание и загрузка данных, запуск задачи тонкой настройки, развертывание и использование новой модели. |
| Hugging Face | Fine-tuning LLMs with Hugging Face | В этом блоге показано, как тонко настраивать открытую LLM (например, CodeLlama 7B) с помощью библиотеки transformers и Transformer Reinforcement Learning (TRL) с использованием открытых наборов данных Hugging Face. |
| 🤗 AutoTrain | Fine-tuning LLMs with AutoTrain | AutoTrain (или AutoTrain Advanced) — это python-библиотека от Hugging Face, позволяющая тонко настраивать модели для различных задач, включая LLM. AutoTrain — решение без кода, тонкая настройка может выполняться в вашем облаке, на Hugging Face Spaces или локально. Поддерживает веб-интерфейс, CLI и обучение через yaml-конфигурации. |
Выберите одно из приведённых выше руководств и пройдите его. Мы можем создать версию этих уроков в Jupyter Notebooks в этом репозитории для справки. Пожалуйста, используйте оригинальные источники, чтобы получить самые свежие версии.
После завершения этого урока ознакомьтесь с нашей коллекцией Generative AI Learning collection, чтобы продолжить развивать свои знания в области генеративного ИИ!
Поздравляем!! Вы завершили последний урок из серии v2 этого курса! Не останавливайтесь на достигнутом — продолжайте учиться и создавать. **Загляните на страницу RESOURCES для списка дополнительных материалов по этой теме.
Наша серия уроков v1 также обновлена с новыми заданиями и концепциями. Потратьте минуту, чтобы освежить знания — и, пожалуйста, делитесь своими вопросами и отзывами, чтобы помочь нам улучшить эти уроки для сообщества.
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, просим учитывать, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обращаться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.

