В перерывах между задачками на биддере я продолжаю изучать LLM. В более раннем посте я писал про RAG (Retrieval Augmented Generation). Сегодня рассмотрим, как дообучить LLM под задачу RAG.
Можно условно выделить три этапа:
- Pretraining. Стадия, где модель обучается на огромном количестве неразмеченных текстовых данных. Задача предобучения - это дать модели возможность изучить закономерности языка, и научиться предсказывать следующий токен в последовательности
- Supervised Fine-Tuning (SFT). После этапа претрейна модель дообучается на данных, с размеченными парами вопрос-ответ. Здесь цель - адаптировать модель под конкретную задачу
- Alignment. Здесь дообучаем модель под формат в запросе пользователя, и если надо этическим нормам. Существует целый зоопарк методов alignment'а, некоторые из них построены на методах RL (PPO, GRPO etc.), некоторые нет (Rejection Sampling, DPO и etc.). Каждый из них выдает разное качество, стабильность, сходимость и скорость
Также как и в классических ML задачах при дообучении LLM смотрим на распределение данных прода и трейна. Через продовую RAG-систему всегда проходит поток запросов в определённом соотношении тематик, стилей, длины, ошибок и других свойств, и точно также определенными свойствами обладают ожидаемые ответы в этом потоке. Стоит озаботиться тем, чтобы обучающая выборка имела несмещённое относительно реального потока распределение. Это часто справедливо для 1го и 2го этапов дообучения
>>Click here to continue<<