
# 构建微调训练任务数据集
#### 获取源数据
本案例使用开源通用中文指令微调数据集：
- **中文 SmolTalk 数据集**
  smoltalk-chinese是一个参照SmolTalk数据集构建的中文微调数据集。它旨在为训练大型语言模型（LLMs）提供高质量的合成数据支持。该数据集完全由合成数据组成，包含超过70万条记录。它专门设计用于提高中文LLMs在各种任务中的性能，增强其多样性和适应性。
  下载链接：
  https://modelscope.cn/datasets/opencsg/smoltalk-chinese/summary
  
- **OpenThoughts3-1.2M**
  OpenThoughts3-1.2M是一个严格实验流程的结果，该流程对问题来源和选择以及答案生成的设计选择进行了消融研究。 最终的数据集包括 850,000 个数学问题、250,000 个代码问题和 100,000 个科学问题。
  下载链接：
  https://modelscope.cn/datasets/open-thoughts/OpenThoughts3-1.2M
  
本案例使用开源金融中文指令微调数据集：
- **Fino1_Reasoning_Path_FinQA**
  Fino1是一个基于FinQA的金融推理数据集，通过GPT-4o生成的推理路径来增强结构化的金融问题回答。
  下载链接：
  https://modelscope.cn/datasets/TheFinAI/Fino1_Reasoning_Path_FinQA
  
- **OpenFinData**
  OpenFinData是由东方财富与上海人工智能实验室联合发布的开源金融评测数据集。该数据集代表了最真实的产业场景需求，是目前场景最全、专业性最深的金融评测数据集。它基于东方财富实际金融业务的多样化丰富场景，旨在为金融科技领域的研究者和开发者提供一个高质量的数据资源。
  下载链接：
  https://modelscope.cn/datasets/Shanghai_AI_Laboratory/open-compass-OpenFinData/summary
  
![](https://support.huaweicloud.com/bestpractice-pangulm/public_sys-resources/note_3.0-zh-cn.png)
其他合成微调数据的方式主要包含以下几类：
1. 通过self_qa方式从金融专业书籍中抽取问答对，对行业知识进行补充。 https://arxiv.org/abs/2305.11952
   
2. 根据具体的行业场景需求和样例，通过大模型进行指令泛化和答案获取。 https://arxiv.org/abs/2212.10560
   
 
#### 数据预处理
- **数据格式样例** ：所有数据要放到一个JSONL格式文件里面，每一行文本为一个JSON字符串，至少包含两个JSON键分别表示问题和回答，对应的键为context和target，system字段支持自定义人设，为可选。
  样例一(通用数据)：
  ```
  {"context":"原始文本：近年来，随着无人驾驶技术的不断发展和普及，越来越多的人开始关注这项技术的安全性和实用性。然而，尽管一些人已通过选取不同路线来测试无人驾驶汽车的安全性，但对于无人驾驶技术的整体安全性仍缺乏系统的评估。据了解，目前市场上无人驾驶汽车的安全性评估主要依赖于数据收集，但是数据也并非完全可靠。考虑到无人驾驶汽车的广泛使用可能会导致交通事故，这种风险的解决需要各方的共同努力。\n改写要求：简化语言，突出关键信息，使读者更容易理解。","target":"<think>好的，我现在需要处理用户的请求，把一段关于无人驾驶技术的原始文本改写成更简单、更突出关键信息的内容。首先，我得仔细阅读原文，理解其主要信息。原文主要讲的是随着无人驾驶技术的发展，人们关注其安全性和实用性，但目前缺乏系统评估，数据不可靠，需要各方合作解决风险。接下来，用户的要求是简化语言，突出关键信息，让读者更容易理解。这意味着我需要去掉复杂的句子结构，用更通俗的词汇，同时确保关键点不被遗漏。</think>\n\n近年来，无人驾驶技术发展迅速，安全性和实用性备受关注。尽管有测试，但整体安全性缺乏系统评估。当前评估主要依赖数据，但数据并非完全可靠。广泛使用可能增加事故风险，解决需要多方合作。"}
  ```
  样例二（行业数据）：
  ```
  {"context":"你的任务是辨别客户的意图。有四种意图可选择：[投资咨询, 财务分析, 交易操作, 一般咨询]。请直接提供正确答案，无需解释推理过程。\n以下是一个示例:\n客户说：我应该持有或卖出我的股票吗?\n客户的意图是：投资咨询\n现在有新的客户输入：我想了解下最近股市的走势\n客户的意图是：","target":"<think>好的，我现在需要分析客户的这句话：“我想了解下最近股市的走势”，并确定其意图属于四种中的哪一种：[投资咨询, 财务分析, 交易操作, 一般咨询]。\n\n首先，我需要明确每个分类的定义。投资咨询通常涉及建议是否买入、卖出或持有投资产品。财务分析可能更偏向于公司的财务数据或投资组合的分析。交易操作则涉及具体的买卖指令或账户操作。一般咨询可能包括市场动态、基本信息的询问，不涉及具体的建议或操作。</think>\n\n客户的意图是：一般咨询"}
  ```
  
- **数据量级要求** ：
  本场景使用了31万条通用数据和8W条行业数据进行微调，行业指令数据和通用指令数据的比例在1:4。
  
 
#### 导入微调数据至平台
导入微调数据至平台的步骤如下：
1. 登录ModelArts Studio平台，单击进入操作空间。
2. 在左侧导航栏中选择"数据工程 \> 数据获取 \> 导入任务"，单击界面右上角"创建导入任务"。
3. 在"创建导入任务"页面，选择"数据集类型"为"文本 \> 单轮问答"，选择"文件格式"为"jsonl"，选择"导入来源"为"OBS"。
4. 在"存储位置"弹窗，选取数据所在的存储位置，比如"question_answer"目录，单击"确定"。
5. 填写"数据集名称"和"描述"。
6. 单击页面右下角"立即创建"，回退至"数据导入"页面，在该页面可以查看数据集的任务状态，若状态为"运行成功"，则数据导入成功。
![](https://support.huaweicloud.com/bestpractice-pangulm/public_sys-resources/note_3.0-zh-cn.png)
详细导入步骤请见[导入数据](https://support.huaweicloud.com/bestpractice-pangulm/pangulm_04_0118.html)。
 #### 加工微调数据集
将数据导入至平台后，需要对数据进行加工，保证微调数据内容质量高，不包含异常字符。
创建加工任务步骤如下：
1. 登录ModelArts Studio平台，在"我的空间"模块，单击进入所需空间。
2. 在左侧导航栏中选择"数据工程 \> 数据加工 \> 加工任务"，单击界面右上角"创建加工任务"。
3. 在"创建加工任务"页面，选择需要加工的文本类数据集，单击"下一步"。
4. 进入"加工步骤编排"页面。
5. 加工步骤编排完成后，单击右下角"下一步"进入"任务配置界面"。
6. 单击页面右下角"启动加工"，回退至"加工任务"页面，在该页面可以查看数据集加工任务的状态，若状态为"数据集生成成功"，则数据加工成功。
![](https://support.huaweicloud.com/bestpractice-pangulm/public_sys-resources/note_3.0-zh-cn.png)
详细数据加工步骤与加工算子的支持情况请见[加工数据集](https://support.huaweicloud.com/bestpractice-pangulm/pangulm_04_0119.html)。
#### 发布微调数据集
数据集加工完成后，可参考[评估数据集](https://support.huaweicloud.com/bestpractice-pangulm/pangulm_04_0120.html)对数据集进行评估，若数据集符合真实场景的使用的要求，需要将该数据集进行发布用于后续训练任务，发布该数据集的步骤如下
1. 登录ModelArts Studio大模型开发平台，在"我的空间"模块，单击进入所需空间。
2. 在左侧导航栏中选择"数据工程 \> 数据发布 \> 发布任务"，单击界面右上角"创建发布任务"。
3. 在"创建发布任务"页面，选择数据集模态，如"文本 \> 单轮问答"类型的数据集。
4. 选择[加工微调数据集]步骤中加工好的数据集，单击"下一步"。
5. 在"基本配置"中选择数据用途、数据集可见性、使用场景和格式配置，"格式配置"选择发布格式为"盘古格式"。
6. 填写数据集名称、描述，设置扩展信息后，单击"确认"，发布数据集。
![](https://support.huaweicloud.com/bestpractice-pangulm/public_sys-resources/note_3.0-zh-cn.png)
详细数据发布步骤请见[配比并发布数据集](https://support.huaweicloud.com/bestpractice-pangulm/pangulm_04_0121.html)。
