RLHF‑дообучение LLM: выравнивание с человеческими предпочтениями

RLHF для выравнивания LLM: от SFT до PPO

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1284
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    696
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982

RLHF для выравнивания LLM: от SFT до PPO

Вы дообучили LLM на инструкциях — модель корректно заполняет шаблоны, но выдает откровенно вредные или бесполезные ответы в сложных сценариях. Многие сталкиваются с такой ситуацией. SFT (Supervised Fine-Tuning) не учит модель расставлять приоритеты между качеством, безопасностью и стилем. Мы специализируемся на RLHF — технике alignment tuning, которая решает эту проблему, выравнивая модель с бизнес-требованиями через человеческую обратную связь. Наш опыт включает проекты для финансового сектора, медицинской диагностики и юридических ассистентов, где точность и безопасность критичны. Гарантируем, что итоговая модель будет не только умной, но и полезной, безвредной и честной. Наша компания работает на рынке более 5 лет и имеет более 50 успешных проектов в области RLHF.

Почему RLHF превосходит SFT?

SFT на инструкциях даёт модель, которая умеет следовать формату. Но не умеет расставлять приоритеты между качеством ответов. RLHF добавляет сигнал предпочтения: ответ A лучше ответа B по критериям полезности/безопасности/стиля. Этот сигнал нельзя выразить через cross-entropy loss.

Без RLHF: модель оптимизирует правдоподобие следующего токена. С RLHF: оптимизирует reward от human proxy (reward model), удержанный KL-дивергенцией от SFT baseline.

Как устроен пайплайн RLHF?

SFT: начальная настройка

Fine-tuning базовой LLM на (prompt, quality_response) парах. Датасет: 10K–100K примеров качественных демонстраций.

from trl import SFTTrainer from transformers import AutoModelForCausalLM, TrainingArguments model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B") trainer = SFTTrainer( model=model, train_dataset=dataset, dataset_text_field="text", max_seq_length=2048, args=TrainingArguments( output_dir="./sft-output", per_device_train_batch_size=4, gradient_accumulation_steps=8, learning_rate=2e-5, num_train_epochs=3, bf16=True ) ) trainer.train() 

LoRA для SFT: PEFT/LoRA снижает требования к памяти с ~160 GB (70B full fine-tune) до ~40 GB (QLoRA 4-bit). r=64, alpha=128, target_modules=["q_proj","v_proj","k_proj","o_proj","gate_proj","up_proj","down_proj"].

Reward Model: обучение предпочтениям

Reward Model (RM) принимает (prompt, response) → скаляр reward. Обучается на парных сравнениях.

Датасет сравнений: Аннотаторы оценивают пары ответов (y_w, y_l) — chosen/rejected. Источники: Anthropic HH-RLHF, OpenAI comparisons dataset, Alpaca Farm. Для домена — внутренние аннотаторы.

Архитектура RM: LLM с добавленной regression head (linear layer на [EOS] токене):

from trl import RewardTrainer, RewardConfig # базовая модель = SFT модель reward_model = AutoModelForSequenceClassification.from_pretrained( "sft-output", num_labels=1 # скаляр reward ) reward_trainer = RewardTrainer( model=reward_model, train_dataset=comparison_dataset, # chosen/rejected pairs args=RewardConfig( output_dir="./reward-model", per_device_train_batch_size=4, gradient_accumulation_steps=4, learning_rate=1e-5, max_length=512 ) ) 

Bradley-Terry loss: L = -log(sigmoid(r(y_w) - r(y_l))). Оптимизирует: reward выбранного ответа > reward отклонённого.

Метрики качества RM: Accuracy на held-out comparison dataset. Целевые значения: >70% (базовый), >75% (хороший), >80% (отличный). Выше 85% — риск overfitting на аннотаторский bias.

PPO: оптимизация с подкреплением

Proximal Policy Optimization оптимизирует LLM (policy) для максимизации reward при KL-ограничении:

Objective = E[r_θ(prompt, response)] - β * KL(π_θ || π_SFT) 

β — коэффициент KL penalty. При β=0 — pure RL, модель может коллапсировать в reward hacking. При β слишком высоком — не отходит от SFT.

from trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead ppo_config = PPOConfig( model_name="sft-output", learning_rate=1.41e-5, batch_size=128, mini_batch_size=16, gradient_accumulation_steps=1, ppo_epochs=4, kl_penalty="kl", init_kl_coef=0.2, # начальный β target_kl=6.0, # адаптивная KL цель adap_kl_ctrl=True # автоматическая коррекция β ) ppo_trainer = PPOTrainer( config=ppo_config, model=AutoModelForCausalLMWithValueHead.from_pretrained("sft-output"), ref_model=ref_model, # замороженный SFT reference tokenizer=tokenizer, reward_model=reward_model, dataset=prompt_dataset ) for batch in ppo_trainer.dataloader: queries, responses = ppo_trainer.generate(batch['input_ids'], ...) rewards = reward_model(queries, responses) stats = ppo_trainer.step(queries, responses, rewards) 

Value head: PPO требует оценку V(s) состояния. Добавляется linear layer поверх LLM — обучается совместно с policy.

Альтернативы PPO: DPO, ORPO, SimPO

DPO (Direct Preference Optimization) убирает RM и PPO — напрямую оптимизирует предпочтения через reparameterization. Проще, стабильнее, но менее гибкий.

from trl import DPOTrainer, DPOConfig dpo_trainer = DPOTrainer( model=sft_model, ref_model=ref_model, beta=0.1, # temperature train_dataset=comparison_dataset, args=DPOConfig(output_dir="dpo-output", ...) ) 

ORPO (Odds Ratio Preference Optimization): Объединяет SFT + preference alignment в один pass. Без reference модели.

SimPO: Sequence-level preference, reference-free.

Constitutional AI (CAI) — вариант Anthropic: Вместо human aннотаторов для RM: LLM-generated critique & revision. Набор принципов (constitution) → модель сама оценивает ответы → synthetic preference dataset → RM обучение. Снижает зависимость от дорогой human annotation.

Инфраструктура и мониторинг

Требования к GPU

Модель SFT (QLoRA) SFT (full) PPO
LLaMA-3 8B 2× A100 80GB 8× A100 80GB 8× A100 80GB
LLaMA-3 70B 8× A100 80GB 32× A100 80GB 32× A100 80GB

DeepSpeed ZeRO-3: Шардирование параметров/градиентов/оптимайзера между GPU. Обязательно для PPO на 70B+.

vLLM для генерации в PPO: Ускоряет sampling (rollout generation) в 10–20× vs HuggingFace generate. Критично — генерация занимает 80% времени PPO.

Мониторинг RLHF

W&B или MLflow для трекинга:

  • ppo/mean_scores — средний reward за эпоху (должен расти)
  • ppo/kl_divergence — должен оставаться в [target_kl ± 30%]
  • ppo/policy_loss — стабильность policy
  • Qualitative: регулярная ручная оценка сэмплов

Reward hacking детекция: перегенерация held-out промптов каждые N шагов, ручная оценка на наличие деградации (repetition, sycophancy, gibberish).

Сравнение методов выравнивания

Метод RM нужен? Reference модель? Сложность Стабильность Гибкость
PPO Да Да Высокая Средняя Высокая
DPO Нет Да Средняя Высокая Средняя
ORPO Нет Нет Низкая Высокая Низкая
SimPO Нет Нет Низкая Высокая Средняя

Процесс работы и гарантии

Полный цикл работ включает следующие этапы:

  1. Сбор и аннотация comparison-датасета (внутренними или аутсорсинговыми аннотаторами) — 6–10 недель.
  2. Технический пайплайн SFT → Reward Model → PPO (или DPO/ORPO) — 4–6 недель.
  3. Параметризация: подбор LoRA/QLoRA, beta, KL penalty, learning rate.
  4. Интеграция с MLOps-инфраструктурой (W&B, MLflow).
  5. Документация модели: model card, границы применимости, метрики.
  6. Обучение вашей команды работе с пайплайном.
  7. Поддержка на этапе эксплуатации: мониторинг reward hacking, ретренинг.

Наша команда имеет более пяти лет опыта в RLHF для промышленных LLM. Мы реализовали проекты для клиентов в сфере FinTech, HealthTech и LegalTech с общим объёмом дообучения свыше 50 моделей. Гарантируем прозрачность каждого этапа: вы получаете воспроизводимые эксперименты, модель карту и план итераций. Свяжитесь с нами для бесплатной оценки вашего проекта — мы подберём оптимальный метод выравнивания под ваши данные и задачи. Закажите консультацию нашего инженера.

Что входит в работу

  • Подготовка и аннотация датасета сравнений
  • SFT базовой модели (с LoRA или full fine-tune)
  • Обучение Reward Model с метриками качества
  • Оптимизация через PPO, DPO или альтернативный метод
  • Интеграция с MLOps (W&B, MLflow, vLLM)
  • Документация: model card, границы применимости, метрики
  • Обучение вашей команды и сопровождение до деплоя
  • Постдеплойный мониторинг и ретренинг

Сроки и стоимость

Полный цикл от сбора comparison-датасета до деплоя обычно занимает 12–20 недель. Самая затратная часть — сбор и аннотация человеческих предпочтений (6–10 недель). Технический пайплайн SFT+RM+PPO — 4–6 недель. Итеративные улучшения Constitution + RM могут продолжаться бесконечно.

Стоимость дообучения рассчитывается индивидуально. Для точной оценки вашего проекта свяжитесь с нами — мы предоставим детальную смету и timeline. Инвестиции в RLHF окупаются за счёт повышения качества генерации и снижения рисков. Получите консультацию нашего инженера — оценим ваш проект бесплатно.

RLHF — ключевая техника, описанная в научной литературе.