Add preference dataset format tests
This commit is contained in:
parent
c027ec192e
commit
e2724f88a5
1 changed files with 87 additions and 0 deletions
87
studio/backend/tests/test_dataset_preference_format.py
Normal file
87
studio/backend/tests/test_dataset_preference_format.py
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
|
||||
|
||||
from datasets import Dataset
|
||||
|
||||
from utils.datasets.dataset_utils import (
|
||||
check_dataset_format,
|
||||
format_and_template_dataset,
|
||||
format_dataset,
|
||||
)
|
||||
|
||||
|
||||
def _preference_dataset():
|
||||
return Dataset.from_list(
|
||||
[
|
||||
{
|
||||
"prompt": "The sky is",
|
||||
"chosen": " blue.",
|
||||
"rejected": " green.",
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_check_dataset_format_detects_preference_dataset():
|
||||
result = check_dataset_format(_preference_dataset())
|
||||
|
||||
assert result["detected_format"] == "preference"
|
||||
assert result["requires_manual_mapping"] is False
|
||||
|
||||
|
||||
def test_check_dataset_format_requires_review_when_prompt_is_missing():
|
||||
dataset = Dataset.from_list([{"chosen": " blue.", "rejected": " green."}])
|
||||
|
||||
result = check_dataset_format(dataset)
|
||||
|
||||
assert result["detected_format"] == "unknown"
|
||||
assert result["requires_manual_mapping"] is True
|
||||
|
||||
|
||||
def test_format_dataset_auto_preserves_preference_dataset():
|
||||
result = format_dataset(_preference_dataset(), format_type = "auto")
|
||||
|
||||
assert result["detected_format"] == "preference"
|
||||
assert result["final_format"] == "preference"
|
||||
assert result["requires_manual_mapping"] is False
|
||||
assert result["dataset"][0]["chosen"] == " blue."
|
||||
|
||||
|
||||
def test_format_dataset_preference_mapping_converts_custom_columns():
|
||||
dataset = Dataset.from_list(
|
||||
[{"question": "The sky is", "winner": " blue.", "loser": " green."}]
|
||||
)
|
||||
|
||||
result = format_dataset(
|
||||
dataset,
|
||||
format_type = "preference",
|
||||
custom_format_mapping = {
|
||||
"question": "prompt",
|
||||
"winner": "chosen",
|
||||
"loser": "rejected",
|
||||
},
|
||||
)
|
||||
|
||||
assert result["final_format"] == "preference"
|
||||
assert result["dataset"][0] == {
|
||||
"prompt": "The sky is",
|
||||
"chosen": " blue.",
|
||||
"rejected": " green.",
|
||||
}
|
||||
|
||||
|
||||
def test_format_and_template_dataset_skips_chat_template_for_preference():
|
||||
result = format_and_template_dataset(
|
||||
_preference_dataset(),
|
||||
model_name = "unsloth/Qwen2.5-0.5B-Instruct",
|
||||
tokenizer = object(),
|
||||
format_type = "auto",
|
||||
)
|
||||
|
||||
assert result["success"] is True
|
||||
assert result["final_format"] == "preference"
|
||||
assert result["dataset"][0] == {
|
||||
"prompt": "The sky is",
|
||||
"chosen": " blue.",
|
||||
"rejected": " green.",
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue