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: оптимізує винагороду від 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 анотаторів для 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 — ключова техніка, описана в науковій літературі.