🏠 Главная › user guide › mlops training trl fine tuning
{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}
Тонкая настройка с помощью Trl
TRL: SFT, DPO, PPO, GRPO, моделирование вознаграждений для LLM RLHF.
Метаданные навыков
Источник
Необязательно — установите с помощью hermesskills installofficial/mlops/trl-fine-tuning
Путь
optional-skills/mlops/training/trl-fine-tuning
Версия
1.0.0
Автор
Исследование оркестра
Лицензия
Массачусетский технологический институт
Зависимости
trl, трансформеры, наборы данных, peft, ускорение, факел
Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.
TRL — Обучение армированию трансформаторов
Быстрый старт
TRL предоставляет методы постобучения для согласования языковых моделей с предпочтениями человека.
Установка:
pipinstalltrltransformersdatasetspeftaccelerate
Контролируемая точная настройка (настройка по инструкции):
Модель обучения для прогнозирования предпочтений человека:
fromtransformersimportAutoModelForSequenceClassificationfromtrlimportRewardTrainer,RewardConfig# Load SFT model as basemodel=AutoModelForSequenceClassification.from_pretrained("Qwen2.5-0.5B-SFT",num_labels=1# Single reward score)tokenizer=AutoTokenizer.from_pretrained("Qwen2.5-0.5B-SFT")# Load preference data (chosen/rejected pairs)dataset=load_dataset("trl-lib/ultrafeedback_binarized",split="train")# Configure trainingtraining_args=RewardConfig(output_dir="Qwen2.5-0.5B-Reward",per_device_train_batch_size=2,num_train_epochs=1,learning_rate=1e-5)# Train reward modeltrainer=RewardTrainer(model=model,args=training_args,processing_class=tokenizer,train_dataset=dataset)trainer.train()trainer.save_model()
Шаг 3. Обучение с подкреплением PPO
Оптимизация политики с использованием модели вознаграждения:
fromtransformersimportpipeline# Load aligned modelgenerator=pipeline("text-generation",model="Qwen2.5-0.5B-PPO")# Testprompt="Explain quantum computing to a 10-year-old"output=generator(prompt,max_length=200)[0]["generated_text"]print(output)
Рабочий процесс 2: простое согласование предпочтений с помощью DPO
Приведите модель в соответствие с моделью предпочтений без вознаграждения.
{"prompt":"What is the capital of France?","chosen":"The capital of France is Paris.","rejected":"I don't know."}
Загрузить набор данных:
fromdatasetsimportload_datasetdataset=load_dataset("trl-lib/ultrafeedback_binarized",split="train")# Or load your own# dataset = load_dataset("json", data_files="preferences.json")
Рабочий процесс 3: онлайн-RL с эффективным использованием памяти с помощью GRPO
Тренируйтесь с помощью обучения с подкреплением, используя минимум памяти.
Подробное руководство GRPO — проектирование функции вознаграждения, важные сведения о обучении (поведение при потерях, коллапс режима, настройка) и расширенные многоэтапные шаблоны — см. references/grpo-training.md. Готовый к использованию сценарий обучения находится в templates/basic_grpo_training.py.
defreward_function(completions,**kwargs):""" Compute rewards for completions. Args: completions: List of generated texts Returns: List of reward scores (floats) """rewards=[]forcompletionincompletions:# Example: reward based on length and unique wordsscore=len(completion.split())# Favor longer responsesscore+=len(set(completion.lower().split()))# Reward unique wordsrewards.append(score)returnrewards
Или используйте модель вознаграждения:
fromtransformersimportpipelinereward_model=pipeline("text-classification",model="reward-model-path")defreward_from_model(completions,prompts,**kwargs):# Combine prompt + completionfull_texts=[p+cforp,cinzip(prompts,completions)]# Get reward scoresresults=reward_model(full_texts)return[r["score"]forrinresults]
Шаг 2. Настройте GRPO
fromtrlimportGRPOConfigconfig=GRPOConfig(output_dir="Qwen2-GRPO",per_device_train_batch_size=4,num_train_epochs=1,learning_rate=1e-5,num_generations=4,# Generate 4 completions per promptmax_new_tokens=128)
Шаг 3. Тренируйтесь с GRPOTrainer
fromdatasetsimportload_datasetfromtrlimportGRPOTrainer# Load prompt-only datasetdataset=load_dataset("trl-lib/tldr",split="train")trainer=GRPOTrainer(model="Qwen/Qwen2-0.5B-Instruct",reward_funcs=reward_function,# Your reward functionargs=config,train_dataset=dataset)trainer.train()
Используйте TRL, когда:
- Необходимо привести модель в соответствие с предпочтениями человека.
- Иметь данные о предпочтениях (выбранные/отклоненные пары)
- Хотите использовать обучение с подкреплением (PPO, GRPO)
- Необходимо обучение модели вознаграждения
- Выполнение RLHF (полный конвейер)
Выбор метода:
- SFT: есть пары «подсказка-завершение», требуется выполнение основных инструкций.
- DPO: есть предпочтения, требуется простое согласование (модель вознаграждения не требуется)
- PPO: есть модель вознаграждения, нужен максимальный контроль над RL.
- GRPO: ограничена память, требуется онлайн-RL.
- Модель вознаграждения: создание конвейера RLHF, необходимо подсчитать количество поколений.
Вместо этого используйте альтернативы:
- HuggingFace Trainer: базовая точная настройка без RL.
- Аксолотль: конфигурация обучения на основе YAML.
- LitGPT: обучающее, минимальная тонкая настройка.
- Unsloth: быстрое обучение LoRA.
Распространенные проблемы
Проблема: OOM во время обучения DPO
Уменьшите размер пакета и длину последовательности:
config=DPOConfig(per_device_train_batch_size=1,# Reduce from 4max_length=512,# Reduce from 1024gradient_accumulation_steps=8# Maintain effective batch)
Или используйте контрольную точку градиента:
model.gradient_checkpointing_enable()
Проблема: плохое качество выравнивания
Настройте бета-параметр:
# Higher beta = more conservative (stays closer to reference)config=DPOConfig(beta=0.5)# Default 0.1# Lower beta = more aggressive alignmentconfig=DPOConfig(beta=0.01)
Проблема: модель вознаграждения не обучается
Проверьте тип потери и скорость обучения:
config=RewardConfig(learning_rate=1e-5,# Try different LRnum_train_epochs=3# Train longer)
Убедитесь, что в наборе данных предпочтений есть явные победители:
# Verify datasetprint(dataset[0])# Should have clear chosen > rejected
Проблема: обучение PPO нестабильно
Отрегулируйте коэффициент KL:
config=PPOConfig(kl_coef=0.1,# Increase from 0.05cliprange=0.1# Reduce from 0.2)
Расширенные темы
Руководство по обучению SFT: см. references/sft-training.md для получения информации о форматах наборов данных, шаблонах чатов, стратегиях упаковки и обучении с использованием нескольких графических процессоров.
Варианты DPO: см. references/dpo-variants.md для IPO, cDPO, RPO и других функций потери DPO с рекомендуемыми гиперпараметрами.
Моделирование вознаграждения: см. references/reward-modeling.md для получения информации о вознаграждениях за результат и процесс, потерях Брэдли-Терри и оценке модели вознаграждения.
Методы онлайн-RL: см. references/online-rl.md для PPO, GRPO, RLOO и OnlineDPO с подробными настройками.
Подробное погружение в GRPO: шаблоны GRPO экспертного уровня см. в references/grpo-training.md — философия разработки функций вознаграждения, идеи обучения (почему увеличиваются потери, обнаружение коллапса режима), настройка гиперпараметров, многоэтапное обучение и устранение неполадок. Готовый к использованию шаблон в templates/basic_grpo_training.py.
Требования к оборудованию
Графический процессор: NVIDIA (требуется CUDA)
VRAM: зависит от модели и метода.
SFT 7B: 16 ГБ (с LoRA)
DPO 7B: 24 ГБ (хранится эталонная модель)
PPO 7B: 40 ГБ (модель «полис + вознаграждение»)
GRPO 7B: 24 ГБ (более эффективное использование памяти)
Мульти-GPU: поддерживается через ускорение.
Смешанная точность: рекомендуется BF16 (A100/H100).
Оптимизация памяти:
- Используйте LoRA/QLoRA для всех методов.
- Включить контрольную точку градиента
- Используйте меньшие размеры партий с накоплением градиента.
Ресурсы
Документы: https://huggingface.co/docs/trl/
GitHub: https://github.com/huggingface/trl
Документы:
«Обучение языковых моделей следованию инструкциям с обратной связью от человека» (InstructGPT, 2022 г.)
«Прямая оптимизация предпочтений: ваша языковая модель тайно является моделью вознаграждения» (DPO, 2023 г.)
«Оптимизация групповой относительной политики» (ГРПО, 2024 г.)