{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}

Обучение Симпо

Простая оптимизация предпочтений для спортивного LLM. Бесреференсная альтернатива DPO с лучшей производительностью (+6,4 балла по AlpacaEval 2.0). Не нужна референсная модель, эффективность DPO. Используйте для спортивных соревнований по предпочтениям, когда необходимо более простое и быстрое обучение, чем DPO/PPO.

Метаданные навыки

Источник Опционально — установка: hermeskills installofficial/mlops/simpo
Путь optional-skills/mlops/simpo
Версия 1.0.0
Автор Исследование оркестра
Лицензия Массачусетский технологический институт
Зависимости факел, трансформеры, наборы данных, трл, ускорение
Платформы Linux, MacOS, Windows
Теги «Пост-обучение», «SimPO», «Оптимизация предпочтений», «Выравнивание», «Альтернатива DPO», «Без справок», «Выравнивание LLM», «Эффективное обучение»

Справочник: полный SKILL.md:::информация

Ниже приведено полное описание навыков, которые Hermes загружает при его активации. Агент увидит эту инструкцию, когда навыки активны.

SimPO — Простая оптимизация предпочтений

Быстрый старт

SimPO — это метод оптимизации предпочтений без референсной модели, который превосходит DPO, не требуя референсной модели.

Установка:

# Create environment
conda create -n simpo python=3.10 && conda activate simpo

# Install PyTorch 2.2.2
# Visit: https://pytorch.org/get-started/locally/

# Install alignment-handbook
git clone https://github.com/huggingface/alignment-handbook.git
cd alignment-handbook
python -m pip install.

# Install Flash Attention 2
python -m pip install flash-attn --no-build-isolation

Обучение (Мистраль 7Б):

ACCELERATE_LOG_LEVEL=info accelerate launch \
  --config_file accelerate_configs/deepspeed_zero3.yaml \
  scripts/run_simpo.py \
  training_configs/mistral-7b-base-simpo.yaml

Типовые рабочие процессы

Рабочий процесс 1: Обучение с моделями местонахождения (Mistral 7B)

Конфиг (mistral-7b-base-simpo.yaml):

# Model
model_name_or_path: mistralai/Mistral-7B-v0.1
torch_dtype: bfloat16

# Dataset
dataset_mixer:
  HuggingFaceH4/ultrafeedback_binarized: 1.0
dataset_splits:
  - train_prefs
  - test_prefs

# SimPO hyperparameters
beta: 2.0                  # Масштабирование награды (2.0-10.0)
gamma_beta_ratio: 0.5       # Целевой запас (0-1)
loss_type: sigmoid          # sigmoid или hinge
sft_weight: 0.0             # Опциональная SFT-регуляризация

# Training
learning_rate: 5e-7         # Критично: 3e-7 до 1e-6
num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 8

# Output
output_dir:./outputs/mistral-7b-simpo

Запуск обучения:

accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \
  scripts/run_simpo.py training_configs/mistral-7b-base-simpo.yaml

Рабочий процесс 2: Донастройка инструкция-модели (Llama 3 8B)

Конфиг (llama3-8b-instruct-simpo.yaml):

model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct

dataset_mixer:
  argilla/ultrafeedback-binarized-preferences-cleaned: 1.0

beta: 2.5
gamma_beta_ratio: 0.5
learning_rate: 5e-7
sft_weight: 0.1             # Добавить SFT-потери для сохранения способностей

num_train_epochs: 1
per_device_train_batch_size: 2
gradient_accumulation_steps: 4
output_dir:./outputs/llama3-8b-simpo

Запуск:

accelerate launch --config_file accelerate_configs/deepspeed_zero3.yaml \
  scripts/run_simpo.py training_configs/llama3-8b-instruct-simpo.yaml

Рабочий процесс 3: Задачи, требующие рассуждений (меньшая скорость обучения)

Для задач по математике/коду:

model_name_or_path: deepseek-ai/deepseek-math-7b-base

dataset_mixer:
  argilla/distilabel-math-preference-dpo: 1.0

beta: 5.0                   # Выше для сильного сигнала
gamma_beta_ratio: 0.7       # Больший запас
learning_rate: 3e-7         # Меньшая LR для рассуждений
sft_weight: 0.0

num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 16

Когда использовать по сравнению с альтернативами

Используйте СимПО, когда: - Необходимо более простое обучение, чем DPO (без референсной модели) - Есть данные о предпочтениях (пары «выбранный/отклонённый») - Нужна производительность лучше, чем у DPO - Ограничения вычислительных ресурсов - Достаточно обучения на одном узле

Выбор алгоритма: - SimPO: самый простой, лучшая производительность, без референсной модели. - DPO: нужен базовый уровень референсной модели, более консервативный. - PPO: максимальный контроль, нужная модель, сложность настройки. - GRPO: энергоэффективное RL, без критики.

Используйте альтернативы вместо этого: - OpenRLHF: распределённое обучение на нескольких узлах, PPO/GRPO. - TRL: необходимо несколько методов в одном фреймворке. - DPO: устоявшийся базовый уровень для сравнения

Частные проблемы

Проблема: потери расхода

Уменьшите скорость обучения:

learning_rate: 3e-7  # Уменьшить с 5e-7

Уменьшите бета-версию:

beta: 1.0  # Уменьшить с 2.0

Проблема: модель забывает способности

Добавить SFT-регуляризацию:

sft_weight: 0.1  # Добавить компонент SFT-потерь

Проблема: плохое своеобразие

Увеличьте бета-версию и запас:

beta: 5.0            # Увеличить с 2.0
gamma_beta_ratio: 0.8  # Увеличить с 0.5

Проблема: ООМ во время обучения

Уменьшите размер батча:

per_device_train_batch_size: 1
gradient_accumulation_steps: 16  # Сохранить эффективный батч

Включите градиентную контрольную точку:

gradient_checkpointing: true

Продвинутые темы

Функции потерь: См. references/loss-functions.md для информации о сигмоидной и шарнирной функциях потерь, математических формулировках и когда каждыйиспользуется.

Настройка гиперпараметров: См. references/hyperparameters.md для руководства по выбору бета-версии, гаммы, обучения скорости и рекомендаций для моделей разных размеров.

Подготовка датасета: См. references/datasets.md для форматирования данных, фильтрации качества и создания подходящих датсетов.

Требования к оборудованию

Оптимизация памяти: - DeepSpeed ZeRO-3 (конфиг по умолчанию) - Градиентные контрольные точки - Вспышка внимания 2

Ресурсы