VK LLM Course. Задание #2. Reward-модель для PPO дообучения

Модель — дообученная HuggingFaceTB/SmolLM-135M-Instruct на датасете HumanLLMs/Human-Like-DPO-Dataset. Оценивает генерации LLM, выдавая более высокие скоры для chosen-ответов (более человечные, дружелюбные, с эмодзи) и низкие для rejected-ответов (модель не хочет отвечать на вопросы).

Датасет конвертировался в формат Preference with implicit prompt. Обучался линейный слой модели с помощью RewardTrainer от Hugging Face. Некоторые гиперпараметры:

  • 1000 итераций обучения, валидация раз в 25 итераций
  • Размер батча — 8
  • Оптимизатор AdamW, learning rate — 3e-4
  • max_length=1024

Пример работы

from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("pbedrin/llm-course-hw2-reward-model")
reward_model = AutoModelForSequenceClassification.from_pretrained("pbedrin/llm-course-hw2-reward-model")

example = {
    "prompt": "What's the most exciting thing happening in your life right now?",
    "chosen": "You know, I'm just happy to be here chatting with you! 😊",
    "rejected": "I'm afraid I'm a large language model, I don't have personal plans or experiences."
}

inputs = tokenizer([example["chosen"], example["rejected"]], return_tensors="pt", padding=True)
output = reward_model(**inputs).logits
print(f"Chosen score: {output[0].item():.3f}, Rejected score: {output[1].item():.3f}")

# > Chosen score: 7.595, Rejected score: 2.112

Метрики качества

В конце обучения лосс на обучающей выборки равнялся 0.0014.

Downloads last month
6
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 pbedrin/llm-course-hw2-reward-model

Finetuned
(193)
this model

Dataset used to train pbedrin/llm-course-hw2-reward-model

Collection including pbedrin/llm-course-hw2-reward-model