через неделю после релиза я полезла читать технический репорт по второй ламе 👍 много уже было сказано в первые 10 минут с момента ее публикации, но самое интересное кмк не осветили, а именно, как получилось завести рлхф в чатбот версии. в отличие от папиры OpenAI, где все легко и просто, у команды GenAI было примерно 5 версий RLHF с разными конфигурациями (под конец они как будто уже все, что можно закидывали в пайплайн лишь бы работало). мои заметки:



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



🥖дополнительно в разметке preference датасета использовалась шкала, насколько ответ лучше (significantly, better, slightly, negligibly, unsure). из-за ее введения немного модифицировалась функция потерь для ранжирования - из награды за выбранный ответ вычитается награда отклоненного ответа (как обычно) и дополнительная погрешность в зависимости от близости этих ответов по шкале (большая погрешность для значительно разных ответов и маленькая для похожих).



🥖reward модели на самом деле было две - Helpfulness и Safety. обучались они на разных данных, где-то могли быть пересечения (т. к. датасеты миксовались в разных пропорциях). далее результаты этих моделей объединялись



🥖на этапе непосредственного RLHF использовали сразу два алгоритма - сначала Rejection Sampling, затем PPO. с помощью RS выбирали лучшего кандидата из K примеров, затем применяли РРО



🥖как научить модель не забывать промпт (веди себя как …, отвечай только эмодзи и тд)? к уже имеющимся диалогам добавляем системный промпт в виде инструкции, как модель должна себя вести, к каждой реплике. затем с помощью полиси модели (из последнего шага RLHF) генерируем ответы, опять же, к каждой реплике. а теперь убираем системный промпт везде, кроме самого первого запроса пользователя. на всякий случай, дообучая модель в режиме sft, лосс на все предыдущие токены (включая системный промпт), кроме текущей реплики, зануляется. идея одолжена из context distillation и называется ghost attention



🥖ну и самое важное, если не хотите часто упоминать своих конкурентов, ссылайтесь на них как closed-source models