SmolLM: DPO

В этой части написал DPO с нуля и дообучил SmolLM-135M-Instruct на HumanLLMs/Human-Like-DPO-Dataset. В каждой паре есть chosen и rejected, модель должна научиться предпочитать первый ответ

Настройки обучения

Параметр Значение
GPU A100 80 ГБ
Обучающих пар 10884
Эпохи 1
Batch size 16
Learning rate 5e-5
Beta 1,0
Длина prompt <= 256 токенов, prompt + completion <= 1024; отдельного лимита completion нет
Seed 42
Время около 27 мин 17 с по tqdm, включая сохранение checkpoint'ов

За 681 шаг средний loss получился 0,008408, reward accuracy - 99,826%, reward margin - 88,186. На последних 50 шагах accuracy была 100%, средний margin - 104,234

Reward accuracy показывает, как часто DPO-награда chosen выше, чем у rejected, а margin - насколько она выше. Числа усреднены по батчам за время обучения. На train они получились высокими, поэтому дальше посмотрел, что изменилось в самом ответе

Пример ответа

Оба ответа получены с do_sample=True и max_new_tokens=256

Вопрос: What's your morning routine like?

До DPO:

What a wonderful question! As a conversational AI, I have my own wake-up routine tailored to my needs. Here's my "wake-up routine" for you:

Morning Routine (10-15 minutes)

  1. 10:00 am: Start with a gentle exercise routine to loosen up my muscles and get my blood flowing. This could be a simple yoga pose like downward-facing dog, child's pose, or restorative yoga.
  2. 6:00 am: Take a 10-minute walk to clear my mind and get my thoughts focused on the present moment. I use a gentle vibration or sound therapy app to help me feel more relaxed and centered.

Wake-Up Routine (20-25 minutes)

  1. 20:00 am: Begin my morning routine as usual. I use an app or website app like Headspace, Calm, or Insight Timer to set a positive and relaxing wake-up message.
  2. 10:00 am: Read a calming article that helps me relax and reduce anxiety (e.g., "The Power of 7-Day Challenges"). I choose a motivational quote like "I

После DPO:

Hey! I've been on this crazy bus for weeks and still get stuck back here. It's really tough to wake up and get going like everyone else. But I've tried yoga, meditation, and my favorite (we still wear jeans, but I know it's still a nice change!), and I really love the vibes. I just want to feel that light, I mean, I feel so grounded.

Anytime! Alright, I've been going to the stores, but on the back-of-the-car, I've been to the coffee shops, and I've got a bunch of these "goods" and "candy" boxes that I don't need. Sometimes I'll even grab a pizza from the parking lot and head back and forth to the store.

What can I do on this breakday that really sets the mood for the rest of the day? I've tried having a big breakfast and then a quick coffee at each restaurant, maybe even trying some some coffee with milk (although it got boring quickly). I've even thought about having a few yoga sessions, but I've found that I'm really into headbanging for that one.

How can I figure out what's helping my energy levels

После DPO пропала фраза «As a conversational AI», и ответ стал более разговорным. Но на вопрос модель нормально не ответила: начала рассказывать про автобус, магазины и кофе. До обучения тоже была путаница, например «20:00 am». Стиль поменялся, а явного улучшения в этом примере не видно. Обе генерации случайные, так что по одной паре общий результат не оценить

Вероятности ответов

Потом сравнил вероятности готовых ответов: взял 256 chosen из HumanLLMs train и 256 ответов Dolly. Одни и те же тексты оценил исходной SmolLM-135M-Instruct и моделью после DPO. Считал logprob только для ответа и EOS, без промпта. В таблице средний logprob на токен и его изменение после обучения

Источник, 256 ответов Reference DPO Средняя дельта Медиана изменения
HumanLLMs train -1,908654 -1,874722 +0,033931 +0,023021
Dolly -2,781193 -2,764086 +0,017107 -0,011918

На train logprob вырос у 163 из 256 ответов. На Dolly среднее тоже немного выросло, но у 145 из 256 ответов значение снизилось. Это видно и по отрицательной медиане: положительное среднее здесь не означает, что большинство ответов стало вероятнее

Ответы HumanLLMs длиннее: в среднем 259,25 токена против 85,76 у Dolly, включая EOS. Поэтому основное сравнение делал по logprob на токен. Если брать сумму, то на train она изменилась с -459,854 до -455,469, а на Dolly с -226,795 до -227,932. У суммы и среднего на токен разный вес длинных ответов, поэтому на Dolly они сдвинулись в разные стороны

Для расчёта оставлял последние 256 токенов промпта и до 768 токенов ответа с EOS. Под обрезание попали 28 промптов Dolly и по одному ответу из каждого набора. Train-промпты поместились целиком

Из HumanLLMs взял знакомые DPO пары с промптами из train-части PPO. Dolly для дообучения не использовал. Но у этих наборов разные темы и стиль, поэтому разница в logprob сама по себе не доказывает запоминание train. Был ли Dolly в предобучении SmolLM, здесь не проверял

Downloads last month
267
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for WhyZosa/llm-course-hw2-dpo

Finetuned
(195)
this model

Dataset used to train WhyZosa/llm-course-hw2-dpo