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







