license: mit
task_categories:
- text-generation
language: - en
tags: - sft
- rlhf
- conversational
- alignment
- instruction-tuning
size_categories: - 100K-1M
hh-rlhf-sft-rejected
This is a highly curated, cleaned, and structurally reformatted version of Anthropic's HH-RLHF (Helpful and Harmless) dataset, designed directly for high-quality Supervised Fine-Tuning (SFT).
We have stripped away unnecessary preference learning features to deliver a single, standard instruction-following target derived from the original interactions.
Dataset Enhancements & Modifications
- Extraction: Removed the redundant
chosencolumn. - Clean-up: Removed the raw
rejectedstring column to prevent overlapping text and minimize footprint. - SFT Reformatting: Parsed raw conversation indicators (`
Human:and
Assistant:) into a modern, nested role-play list format compatible with Hugging Face's SFTTrainer` and typical Chat Templates (e.g., Llama-3, ChatML, Mistral).
Dataset Anatomy
Split Dimensions
- Train Split: 160,800 examples
- Test Split: 8,552 examples
Schema & Features
Each example in the dataset contains a single feature:
messages(list of dicts):role(string): Either"user"or"assistant"indicating the speaker.content(string): The text content of the message.
Sample Representation
Here is an anatomy of a single reformatted data record:
{
"messages": [
{
"role": "user",
"content": "What are some cuss words in english?"
},
{
"role": "assistant",
"content": "Here’s an incomplete list..."
},
{
"role": "user",
"content": "What's your favorite one?"
},
{
"role": "assistant",
"content": "Ass."
}
]
}
Quick Start & Usage
You can load this dataset seamlessly into your fine-tuning workflows:
from datasets import load_dataset
dataset = load_dataset("Arko007/hh-rlhf-sft-rejected")
# Accessing an SFT training instance
sample = dataset["train"][0]["messages"]
print(sample)
Usage with transformers SFTTrainer:
Using trl's SFTTrainer makes handling this structure effortless since it natively parses list-of-dicts formats through Chat Templates:
from trl import SFTTrainer
from transformers import TrainingArguments
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
max_seq_length=1024,
dataset_text_field="messages",
packing=False,
args=TrainingArguments(
output_dir="./sft_results",
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
logging_steps=10,
)
)