five

Ichsan2895/DPO_ID-Wiki_10kTesting

收藏
Hugging Face2023-11-25 更新2024-03-04 收录
下载链接:
https://hf-mirror.com/datasets/Ichsan2895/DPO_ID-Wiki_10kTesting
下载链接
链接失效反馈
官方服务:
资源简介:
--- license: cc-by-nc-sa-4.0 --- ## HOW TO WRANGLING THIS DATASET TO DPO & CHATML FORMAT ``` def return_prompt_and_responses(samples) -> dict[str, str, str]: return { "prompt": [ "<|im_start|>user\n" + i + "<|im_end|>\n" for i in samples["PROMPT"] ], "chosen": [ "<|im_start|>assistant\n" + j + "<|im_end|>" for j in samples["CHOSEN"] ], "rejected": [ "<|im_start|>assistant\n" + k + "<|im_end|>" for k in samples["REJECTED"] ], } dataset = load_dataset( "Ichsan2895/DPO_ID-Wiki_10kTesting", ) original_columns = dataset.column_names dataset.map( return_prompt_and_responses, batched=True, remove_columns=original_columns ) ``` ## HOW TO USE DPO ``` dpo_trainer = DPOTrainer( model, # base model from SFT pipeline model_ref, # typically a copy of the SFT trained base model beta=0.1, # temperature hyperparameter of DPO train_dataset=dataset['train'], # dataset prepared above tokenizer=tokenizer, # tokenizer args=training_args, # training arguments e.g. batch size, lr, etc. ) ``` ## CITATION ``` @ONLINE{wikidump, author = "Wikimedia Foundation", title = "Wikimedia Downloads", url = "https://dumps.wikimedia.org" } @misc{vonwerra2022trl, author = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang}, title = {TRL: Transformer Reinforcement Learning}, year = {2020}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/huggingface/trl}} } ```

许可证:CC-BY-NC-SA-4.0(知识共享署名-非商业性使用-相同方式共享4.0国际协议) ## 如何将本数据集整理为直接偏好优化(Direct Preference Optimization,DPO)与ChatML(对话标记语言)格式 python def return_prompt_and_responses(samples) -> dict[str, str, str]: return { "prompt": [ "<|im_start|>user " + i + "<|im_end|> " for i in samples["PROMPT"] ], "chosen": [ "<|im_start|>assistant " + j + "<|im_end|>" for j in samples["CHOSEN"] ], "rejected": [ "<|im_start|>assistant " + k + "<|im_end|>" for k in samples["REJECTED"] ], } dataset = load_dataset( "Ichsan2895/DPO_ID-Wiki_10kTesting", ) original_columns = dataset.column_names dataset.map( return_prompt_and_responses, batched=True, remove_columns=original_columns ) 函数`return_prompt_and_responses`接收样本集作为输入,返回格式为`dict[str, str, str]`的字典,其中: - `"prompt"`字段:由`<|im_start|>user `与样本集中`PROMPT`列表的每个元素拼接后再接`<|im_end|> `组成的字符串列表 - `"chosen"`字段:由`<|im_start|>assistant `与样本集中`CHOSEN`列表的每个元素拼接后再接`<|im_end|>`组成的字符串列表 - `"rejected"`字段:由`<|im_start|>assistant `与样本集中`REJECTED`列表的每个元素拼接后再接`<|im_end|>`组成的字符串列表 使用Hugging Face Datasets库的`load_dataset`函数加载标识为`Ichsan2895/DPO_ID-Wiki_10kTesting`的数据集,获取该数据集的原始列名并赋值给`original_columns`变量。随后调用`dataset.map`方法,传入上述`return_prompt_and_responses`函数,启用批处理模式,并移除所有原始列。 ## 直接偏好优化(DPO)使用方法 python dpo_trainer = DPOTrainer( model, # 来自监督微调(Supervised Fine-Tuning,SFT)流程的基础模型 model_ref, # 通常为经过SFT训练的基础模型的副本 beta=0.1, # DPO的温度超参数 train_dataset=dataset['train'], # 上述预处理完成的训练数据集 tokenizer=tokenizer, # 分词器(Tokenizer) args=training_args, # 训练参数,例如批次大小、学习率等 ) ## 引用格式 bibtex @ONLINE{wikidump, author = "Wikimedia基金会", title = "Wikimedia下载资源", url = "https://dumps.wikimedia.org" } @misc{vonwerra2022trl, author = {Leandro von Werra、Younes Belkada、Lewis Tunstall、Edward Beeching、Tristan Thrush、Nathan Lambert、Shengyi Huang}, title = {TRL: Transformer强化学习}, year = {2020}, publisher = {GitHub}, journal = {GitHub仓库}, howpublished = {url{https://github.com/huggingface/trl}} }
提供机构:
Ichsan2895
原始信息汇总

数据集处理方法

数据格式转换

python def return_prompt_and_responses(samples) -> dict[str, str, str]: return { "prompt": [ "<|im_start|>user " + i + "<|im_end|> " for i in samples["PROMPT"] ], "chosen": [ "<|im_start|>assistant " + j + "<|im_end|>" for j in samples["CHOSEN"] ], "rejected": [ "<|im_start|>assistant " + k + "<|im_end|>" for k in samples["REJECTED"] ], }

该函数将数据集中的样本转换为特定的格式,包括用户提示、被选中的响应和被拒绝的响应。

数据集加载与映射

python dataset = load_dataset( "Ichsan2895/DPO_ID-Wiki_10kTesting", ) original_columns = dataset.column_names

dataset.map( return_prompt_and_responses, batched=True, remove_columns=original_columns )

这段代码加载了一个名为 "Ichsan2895/DPO_ID-Wiki_10kTesting" 的数据集,并对其进行映射处理,移除原始列,替换为新的格式化列。

DPO 使用方法

python dpo_trainer = DPOTrainer( model, # base model from SFT pipeline model_ref, # typically a copy of the SFT trained base model beta=0.1, # temperature hyperparameter of DPO train_dataset=dataset[train], # dataset prepared above tokenizer=tokenizer, # tokenizer args=training_args, # training arguments e.g. batch size, lr, etc. )

这段代码展示了如何使用 DPOTrainer 进行训练,包括基础模型、参考模型、超参数设置、训练数据集、分词器和训练参数。

引用

@ONLINE{wikidump, author = "Wikimedia Foundation", title = "Wikimedia Downloads", url = "https://dumps.wikimedia.org" }

@misc{vonwerra2022trl, author = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang}, title = {TRL: Transformer Reinforcement Learning}, year = {2020}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/huggingface/trl}} }

这些引用信息提供了数据集来源和相关工具的参考文献。

搜集汇总
数据集介绍
main_image_url
构建方式
在偏好对齐与强化学习领域,数据集的质量直接决定了模型对人类偏好的学习效果。Ichsan2895/DPO_ID-Wiki_10kTesting 数据集源自维基百科数据转储,经过精心筛选与格式化处理,专为直接偏好优化(DPO)任务设计。其构建过程遵循标准化的数据转换流程:首先从原始数据中提取出用户指令(PROMPT)、优选回答(CHOSEN)以及次优回答(REJECTED)三列字段,随后通过定义明确的函数将这些字段封装为符合 ChatML 格式的对话结构。具体而言,每个 prompt 被包裹在 <|im_start|>user 与 <|im_end|> 标记之间,而 chosen 与 rejected 回答则分别以 <|im_start|>assistant 标签进行标记,从而形成可直接用于 DPO 训练的标准化三元组样本集。
特点
该数据集最显著的特点在于其紧密贴合 DPO 训练范式的结构设计。所有样本均以三元组形式呈现,包含明确的 prompt、chosen 与 rejected 字段,使得模型能够直观地学习到偏好排序。数据集采用 ChatML 标记格式,不仅便于与主流 Transformer 库无缝集成,还保留了对话上下文的完整性。此外,数据规模约为 10,000 条测试样本,既保证了足够的多样性以覆盖常见指令场景,又因规模适中而便于快速迭代验证。其来源为维基百科语料,确保了内容的中立性与知识覆盖面,而 cc-by-nc-sa-4.0 许可协议则允许研究者在非商业用途下自由使用。
使用方法
使用该数据集进行 DPO 训练时,研究者首先通过 Hugging Face Datasets 库加载数据集,并利用提供的 return_prompt_and_responses 函数将原始列转换为包含 prompt、chosen 与 rejected 的标准字典格式,同时移除原始列以精简内存。随后,将处理后的数据集传入 DPOTrainer 对象,配置基础模型(通常为经过监督微调的模型)及其参考副本,设定 beta 超参数(如 0.1)以控制偏好强度,并指定训练参数如批次大小与学习率。训练过程将自动基于偏好对优化策略,使模型生成更贴近人类偏好的回答。该流程高度模块化,可轻松嵌入现有的强化学习训练管线。
背景与挑战
背景概述
在自然语言处理领域,偏好对齐技术逐渐成为提升大型语言模型与人类意图一致性的关键手段,其中直接偏好优化(DPO)方法因其简洁高效的训练框架而备受关注。Ichsan2895/DPO_ID-Wiki_10kTesting数据集由研究者基于印度尼西亚语维基百科语料构建,旨在为低资源语言的DPO训练提供标准化测试基准。该数据集创建于2024年,主要依托Wikimedia Foundation的维基百科数据转储,并整合了TRL库的DPO训练范式,核心研究问题聚焦于如何通过结构化偏好数据(包括提示、优选回答与拒绝回答)来优化印尼语模型的对话能力。作为印尼语领域首个公开的DPO格式测试集,该数据集填补了低资源语言在偏好对齐研究中的空白,为后续印尼语大模型的伦理对齐与指令遵循研究提供了重要评估基础。
当前挑战
该数据集面临的核心挑战包括:第一,在领域问题层面,印尼语作为低资源语言,其偏好数据标注缺乏大规模人工校验,导致优选与拒绝回答的区分度可能不足,影响DPO训练中模型对细微语义差异的捕捉能力;第二,构建过程中,原始维基百科文本需经过复杂的格式转换(如从纯文本到ChatML模板),这一步骤易引入噪声,例如提示与回答之间的上下文断裂或特殊符号错位;第三,数据集规模仅约一万条样本,难以覆盖印尼语中丰富的方言、正式与非正式语体变化,限制了模型在真实场景下的泛化鲁棒性;第四,现有引用依赖维基百科转储与TRL库,但未提供详细的筛选或清洗策略,使得数据质量的可复现性存在隐忧。
常用场景
经典使用场景
在自然语言处理与对齐研究领域,DPO_ID-Wiki_10kTesting数据集凭借其精心构建的偏好三元组结构,成为训练与评估直接偏好优化(DPO)算法的经典基准。该数据集源自印尼语维基百科语料,通过提取提示、优选回答与拒答样本,为模型提供清晰的偏好信号,使得研究者能够高效地微调语言模型,使其生成更符合人类偏好的输出。其标准化的ChatML格式和开箱即用的DPO接口,极大降低了入门门槛,广泛应用于偏好学习方法的对比实验与消融研究。
解决学术问题
该数据集直接回应了语言模型对齐研究中的核心挑战:如何在不依赖复杂强化学习框架的情况下,利用人类偏好信号优化生成质量。传统基于RLHF的方法需要训练奖励模型并执行在线采样,计算成本高昂且不稳定。DPO_ID-Wiki_10kTesting通过提供结构化的偏好数据,使得研究者能够直接应用DPO算法,以更简洁、高效的方式探索偏好学习的内在机理,解决了偏好信号稀疏、奖励模型偏差等关键学术问题,推动了对齐理论从工程实践向可解释性分析的发展。
衍生相关工作
该数据集衍生了一系列围绕DPO算法改进与跨语言对齐的重要工作。研究者基于此数据探索了动态β温度调节、多轮偏好聚合以及混合SFT与DPO的联合训练策略。同时,它催生了针对印尼语特有的形态丰富性与文化敏感性的偏好建模方法,例如结合词汇语义相似度的拒绝采样优化。此外,该数据集常作为基准被引入TRL库的官方示例,促进了偏好学习框架在非英语社区中的标准化与可复现性,成为连接理论创新与区域化部署的桥梁。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务