refactor(belle_sft): 重构处理数据集的逻辑

This commit is contained in:
2025-07-20 09:59:40 +08:00
parent faf9f81e7c
commit 6762842b0c
2 changed files with 36 additions and 7 deletions
+34 -5
View File
@@ -1,10 +1,39 @@
from datasets import load_dataset from datasets import load_dataset
from utils import process_dataset from utils import process_dataset
def build_prompt(query, history) -> str:
ret_prompt = ""
if len(history) > 0:
for his_query, his_response in history:
ret_prompt += f"<|user|> {his_query} <|system|> <bos>{his_response}<eos>\n"
if query is not None:
ret_prompt += f"<|user|> {query} <|system|> <bos>"
return ret_prompt
def process_func(input_dict: dict):
conversations = input_dict["conversations"]
n = len(conversations) // 2
examples = []
for i in range(n):
user_msg = conversations[2*i]["value"]
assistant_msg = conversations[2*i+1]["value"]
examples.append((user_msg, assistant_msg))
content = {
"text": build_prompt(None, examples)
}
print(content)
return content
if __name__ == "__main__": if __name__ == "__main__":
dataset = load_dataset("BelleGroup/train_3.5M_CN") dataset = load_dataset("BelleGroup/train_3.5M_CN")
# process_dataset( process_dataset(
# dataset_dict=dataset, dataset_dict=dataset,
# output_subdir="belle_sft", output_subdir="belle_sft",
# max_chunk_size=5, chunk_size=5,
# ) process_func=process_func,
)
+2 -2
View File
@@ -1,4 +1,4 @@
from typing import List, Callable from typing import List, Callable, Union
from datasets import DatasetDict from datasets import DatasetDict
from tokenizer import BpeTokenizer from tokenizer import BpeTokenizer
from tqdm import tqdm from tqdm import tqdm
@@ -64,7 +64,7 @@ def process_dataset(
chunk_size: int = 1000000, chunk_size: int = 1000000,
split_name: str = "train", split_name: str = "train",
column_name: str = "text", column_name: str = "text",
process_func: Callable[[dict], dict] = None, process_func: Callable[[Union[dict, List[dict]]], dict] = None,
normalization_func=comprehensive_normalization, normalization_func=comprehensive_normalization,
): ):
train_dataset = dataset_dict[split_name] train_dataset = dataset_dict[split_name]