Учить, учить и еще раз учить ИИ
Давно тут не было статей! Много работы, докладов и конференций, поэтому как смог, так выдаю.
Сегодняшняя тема выбрана не просто так:
1. Сентябрь еще горит, а это месяц знаний. Значит, самое время поговорить про обучение ИИ.
2. Коллеги-разработчики, аналитики и продавцы очень просили доходчиво объяснить потенциальным клиентам, «ЧТО ЖЕ ЭТО ТАКОЕ ДООБУЧЕНИЕ LLM?!», а заказчики часто спрашивали, могут ли они сами дообучить LLM.
Ответы на эти и другие вопросы читайте ниже.
Начнем с базы!
Большие языковые модели (LLM) — это глубокие нейронные сети, способные обрабатывать естественный язык благодаря обучению на огромных объемах текста. Они могут понимать контекст, генерировать осмысленные ответы и обрабатывать естественный язык.
Дообучение LLM — тонкая настройка предварительно обученных больших языковых моделей для их адаптации к определенным знаниям или особенностям. В отличие от создания с нуля, дообучение помогает повысить точность и эффективность моделей в конкретных задачах. А ресурсов и времени требует гораздо меньше.
Вы могли слышать о проприетарных (GPT, GigaChat, YandexGPT) и открытых LLM-моделях (DeepSeek, Llama, Qwen и пр.). Открытые модели часто используют для дообучения под специфические задачи. Например, кейс с моделью A-Vibe от Авито: в компании дополнительно обучают открытые модели для своих продуктов.
Существует два основных подхода к дообучению LLM:
1. Fine-tuning — полная настройка всех слоев предварительно обученной модели на специализированных датасетах. С таким подходом вы «заточите» модель под конкретную задачу, но вам потребуется больше данных и вычислительных ресурсов (примерно в 3-4 раза по сравнению с затратами на «простое» выполнение задач).
2. Prompt-based learning — подход, при котором поведение модели задается с помощью промт-инжиниринга без изменения архитектуры. Здесь требуется меньше ресурсов, поскольку модель остается неизменной, а обучение сводится к подбору эффективных инструкций. Но и дообучением это назвать сложно, так как мы не наполняем LLM новыми знаниями о мире или о нужной нам теме.
Плюсы и минусы каждого подхода
Fine-tuning
Сильные стороны
- Высокая степень адаптации к специализированному домену или задаче
- Хорошие показатели точности и качества решений
Слабые стороны
- Требует значительного количества вычислений и памяти — большие затраты на инфраструктуру
- Нужны серьезные объемы высококачественных данных. Именно высококачественных, то есть перед дообучением еще потребуется внутренняя экспертиза ценности всей базы, на которой планируется вести дообучение
- Высокие риски переобучения, особенно при работе с небольшими датасетами. Модель может начать работать хуже, чем было до
Prompt-based learning
Сильные стороны
- Низкая стоимость реализации и минимальные требования к ресурсам
- Легкость интеграции с моделями
- Минимальное влияние на производительность системы.
Слабые стороны
- Ограниченная глубина адаптации, поскольку архитектура модели остаётся неизменной
- Возможны проблемы с устойчивостью результатов в зависимости от выбора промтов
Бытует мнение, и многие мои коллеги отмечают, что для качественного дообучения большой языковой модели требуется примерно 10% от объема уже имеющейся обучающей выборки. То есть, чтобы получить рост по качеству после дообучения модели примерно на 7 млрд параметров, надо в нее скормить около 10Тб данных. Опять же вспомним упомянутых коллег из Авито: они как раз примерно 10Тб и использовали для дообучения. Но, конечно, все сильно зависит от размера исходной модели и характера задачи.
Вы, наверно, где-то слышали еще про «предварительное обучение» (Pretraining). Это начальная фаза тренировки нейронной сети, направленная на создание универсальной модели, способной эффективно обобщать знания из широкого спектра данных. Цель pretraining заключается в извлечении общих закономерностей и характеристик из огромного количества несвязанных данных, что помогает сформировать базовые представления, полезные для последующего применения в различных задачах.
Всем подходам подход
Альтернативным и одним из наиболее перспективных направлений решения задач с добавлением в LLM контекста является метод Retrieval Augmented Generation (RAG) – генерация с дополнительным контекстом.
Этот подход предполагает объединение LLM с системой извлечения информации из внешних баз данных или документов. Получается, RAG сочетает сильные стороны двух подходов: способность нейросети генерировать связный и осмысленный контент и возможность оперативного обращения к актуальным источникам (внутренним или внешним) для повышения точности и полноты предоставляемых ответов.
В чем преимущества RAG:
· Можно быстро обновлять знания модели, просто добавляя свежие данные, без полного переобучения.
· Сохраняется высокий уровень производительности даже при увеличении объемов обрабатываемой информации.
· Управлять качеством ответом можно гибко через фильтрацию извлекаемых данных.
Таким образом, с RAG можно достигать сопоставимые или лучшие результаты при меньших затратах вычислительных ресурсов.
И что в итоге?
Проанализировав все вышесказанное, приходим к выводу, что традиционный подход fine-tuning не всегда оправдан финансово и технически. Часто оптимальным решением специфических задач для LLM будет являться метод RAG, который дает высокое качество решений и одновременно требует меньшего количества ресурсов.
Но не стоит также забывать, что для отдельных узких областей могут оказаться полезными маленькие языковые модели (SML), специально созданные, обученные и настроенные под конкретные задачи. Но это отдельная область исследований и разработок, заслуживающая отдельной статьи (когда кейсы будут!).
Спасибо, что дочитали, пишите свои мысли касательно дообучения моделей, и, если сами это делали, – делитесь лучшими практиками.