Post content
ICDPO (In Context Direct Preference Optimization), или DPO без файн-тюнинга Очередная работа по методам тюнинга, на этот раз немного необычная. Основной плюс — мы по факту ничего не делаем с весами модели, то есть используем претрейн. За это расплачиваемся дополнительным временем и памятью. Теперь давайте подробнее. Обозначим заданный промпт как x, датасет с заготовленными чистыми примерами как D. Далее: 1. Извлекаем d примеров из D, которые похожи на x. Это классический ретривал, то есть можно использовать BM25 + Sbert, bert, colbert, you name it. 2. Генерируем n различных ответов, поместив примеры d в контекст. 3. Для каждого ответа считаем вероятность p(y | x) = a и p(y | d, x) = b, то есть с условием на примеры d в контексте и без. Можно сказать, что это оценка вероятности ответа y в формате zero-shot и few-shot. 4. Считаем некоторый скор S, который отражает разницу между b и a. Это число показывает, насколько хорошо заалайнен ответ, так как d — качественные примеры из заготовленного датасета. В итоге берем генерацию с максимальным S. По экспериментам репортят, что удается добиться метрик на уровне тюнинга с LoRA. Ну и как раз за счет ретривера + n генераций мы сильно замедляемся по скорости, так что область применения такой техники сильно ограничена 😢 Статья ICDPO: https://arxiv.org/abs/2402.09320 Статья DPO: https://arxiv.org/abs/2305.18290