
# 合成文本类数据集
#### 功能介绍
数据合成是指依托大模型能力，结合预置或自定义指令，对已导入的原始数据集（如文本类单轮问答数据集）进行加工处理，生成符合特定需求的新数据的过程。其核心是通过指令编排（如生成问答对、改写问题 / 回答、生成人设等操作），实现数据的扩展、优化或格式转换，最终可生成加工数据集，且支持将原始数据集与合成数据整合，以满足模型训练、应用开发等下游需求。
数据合成过程中可对指令效果进行调测，同时支持将成熟的指令编排保存为模板，供后续相同输入输出类型的数据集复用，提升合成效率。
数据合成功能支持合成单轮问答、单轮问答（人设）、问答排序、偏好优化DPO、偏好优化DPO（人设）类型的数据。
#### 约束限制
合成预置指令调测，自定义指令创建，以及合成任务运行都需要依赖大模型，需要在ModelArtsStudio中[购买模型](https://support.huaweicloud.com/usermanual-pangulm/pangulm_04_0004.html)并[部署](https://support.huaweicloud.com/usermanual-pangulm/pangulm_04_0176.html)。
#### 创建文本类数据集合成任务
合成文本类数据集任务前，请先完成数据导入操作，具体步骤请参见[导入数据至盘古平台](https://support.huaweicloud.com/usermanual-pangulm/pangulm_04_0025.html)。
创建文本类数据集合成任务步骤如下：
1. 登录ModelArts Studio大模型开发平台，在"我的空间"模块，单击进入所需空间。
   图1我的空间   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605979.png) 
2. 在左侧导航栏中选择"数据工程 \> 数据加工 \> 合成任务"，单击界面右上角"创建合成任务"。
3. 在"创建合成任务"页面，选择需要合成的数据集，选择合成内容与预期合成条数，如[图2]，系统指定预期合成条数则为数据集初始数据条数。
   图2创建合成任务预期合成数据条数配置   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206392.png) 
4. 如果合成前的数据集类型与合成后的数据集类型相同，可选择开启"将源数据集整合至合成后数据"，在合成任务运行完成后，将生成的数据与原始数据集合并。配置确认后单击"下一步"。
5. 当用户进入 "合成编排" 页面，如[图3]。页面起始区域会显示与当前数据集数据类型相对应的固有字段，以及数据集内除固有字段外的其他自定义字段。这些字段均可在指令输入输出变量配置环节中予以选定，以便后续指令操作调用。单选题编排示例如[图4]。
   在页面左侧的 "添加指令" 功能模块，用户拥有选择系统预置指令或自定义指令的权限。在指令编排过程必须遵循既定逻辑规则。例如，若用户同时选用三条生成问答对类型的指令，系统最终仅会将一条问答对数据留存于输出结果中。
   每条指令的底部均设有一个 "保留思考内容" 复选框。当执行指令所调用的模型为思考模型时，用户可勾选该复选框，将模型产生的慢思考内容保留至输出变量。此慢思考内容以/think标签进行封装，若存在多个输出变量，慢思考内容将随机保存在其中一个变量之内。若所使用的模型为非思考模型，该复选框无需勾选，因为即便勾选，系统也不会产生思考内容并输出。
   图3合成编排示例   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605973.png)
   图4合成单选题示例   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605941.png) 
6. 编排完成的指令，可单击"保存为新模板"，保存当前的指令编排内容供下次一键复用。在右侧可通过单击"选择合成模板"选择一个模板编排，如[图5]所示，模板只有输入类型和输出类型相同的情况下才可见，如：输入为预训练文本，输出为单轮问答，若当前输入数据类型（如：单轮问答）与保存模板时的输入类型（如：预训练）不一致，当前数据选择合成模板时将不可见该模板。
   图5选择合成模板   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571046730.png)
   图6选择合成模板   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571046710.png)
   - 预置指令。平台为用户提供了多种预置指令，便于用户执行合成任务，请详见[预置数据指令介绍]。
   
   - 自定义指令。平台支持编排用户自定义指令。自定义指令的创建详见[创建自定义数据合成指令]。
     
7. 指令选择完成后，单击"确定"，并配置指令参数。 如[图7]，展示了预训练文本类数据集的合成指令参数配置示例，该合成任务实现利用预训练文本生成问答对，除了输出问答对的固定字段context和target外，还支持将指令中间结果保存到最终输出结果。
   此外source字段可保存数据集来源信息，选择字段后，生成的数据集在标注中可展示原文信息内容，该字段仅合成输入数据集为**预训练文本**类型才能使用。编排完的指令可以单击右侧"保存合成模板"，后续的预训练文本可一键选中模板生成问答对。
   图7预训练文本类数据集合成指令参数配置示例   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206414.png) 
8. 若编排的指令输出变量有数值型变量，如integer和float，则可勾选数据筛选，根据数值变量的值来过滤数据，主要应用于质检场景，使用质检指令给数据打分，根据变量分值进行过滤。有两种过滤粒度， 1）单维度评分。对于单个字段的值进行过滤筛选，可增加多个单维度条件，最多20个，所有过滤条件是且的关系。如[图8]。
   2）多维度评分求和。每个条件中可以选多个变量，选择的变量会求和，比较条件是这些变量求和后的比较，每个条件选择的变量数为2-20，可增加多个多维度条件，最多20个，所有过滤条件是且的关系，如[图9]。
   若配置了数据筛选，最终生成的数据集是根据筛选条件过滤后的结果，若所有数据都被过滤掉，则本次任务失败。比较条件如[表1]
    表1比较条件示例 
   | 比较条件 |   条件范围   |  举例   |
   |---|---|---|
   | 大于   | 单个数值     | 3     |
   | 小于   | 单个数值     | 3     |
   | 不低于  | 单个数值     | 3     |
   | 不高于  | 单个数值     | 3     |
   | 等于   | 单个数值     | 3     |
   | 包含   | 单个或者多个数值 | 3,4,5 |
      
   图8单维度评分   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605983.png)
   图9多维度评分求和   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206378.png) 
9. 指令编排完成后，单击右上角"启用调测"，可以对当前编排的指令效果进行预览。注：调测结果不包含数据筛选结果。
10. 指令调测完成后，单击右下角"下一步"，选择是否勾选自动生成加工数据集。 勾选，配置生成加工数据集的信息，如[图6 自动生成加工数据集]；单击右下角"创建并启动"，平台将启动合成任务。合成任务运行成功后自动生成加工数据集。
    不勾选，单击右下角"创建并启动"，平台将启动合成任务。合成任务运行成功后手动生成加工数据集。
    图10自动生成加工数据集   
    ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601725887.png) 
11. 当数据合成任务运行成功后，状态将从"运行中"变为"运行成功"，表示数据已经完成合成操作。
![](https://support.huaweicloud.com/usermanual-pangulm/public_sys-resources/note_3.0-zh-cn.png)
在完成数据合成后，若无需使用数据标注、数据配比功能，可直接在"合成任务"页面单击操作列"生成"，生成加工数据集。
生成的加工数据集可在"数据工程 \> 数据管理 \> 数据集 \> 加工数据集"中查看。
 #### 预置数据指令介绍
ModelArts Studio平台的数据合成功能为用户提供了预置指令，用户可以在"数据工程 \> 数据加工 \> 合成任务 \> 管理合成指令 \> 系统预置"查看指令详情，如[图11]，单击"调测"可查看调测指南，如[图12]，帮助用户更好地使用该指令。
预置的数据指令清单详见[表2]。
图11指令详情   
![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571206404.png)
图12调测指南   
![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605909.png)
 表2预置数据指令清单 
| 指令分类                                            | 指令名称                | 指令描述                                                                            |
|:---|:---|:---|
| 生成问题                                            | 问题改写为更低难度           | 该指令可以通过用户输入的问题，使大模型按要求生成一个难度更低、更为简单的问题。                                         |
| 生成问题                                            | 问题改写为更高难度           | 该指令通过用户输入的问题，使大模型按要求生成一个难度更高、更为复杂的问题。                                           |
| 生成问题                                            | 基于提问生成作答要求          | 该指令根据输入的问题，使大模型泛化一个相应问题的作答要求，该要求与原问题内容不直接相关。该指令可与根据作答要求回答问题的指令进行编排，实现风格多样回答的合成。 |
| 生成问题                                            | 根据样例生成相似问题_few-shot | 该指令通过用户输入的多个问题样例，生成一个或多个与样例风格相匹配的新问题。                                           |
| 生成问题                                            | 根据文本生成问题            | 根据用户输入的上下文，生成一个问题。可用于文本生成QA对的合成编排。                                              |
| 生成问题                                            | 问题改写                | 改写问题，生成更复杂的问题，可用于指令泛化。                                                          |
| 生成回答                                            | 回答改写                | 根据用户指定人设，改写回答的风格，不改变回答内容。可与人设泛化指令编排，实现问答对泛化。                                    |
| 生成回答                                            | 根据文本生成回答_遵循要求       | 根据用户指定的指令要求和问题，根据输入的上下文生成相应回答。可与指令泛化进行编排，实现事实遵循类问答对泛化。                          |
| 生成回答                                            | 问题生成回答              | 根据提问，生成回答。                                                                      |
| 生成回答                                            | 根据文本生成回答_扮演指定人设     | 根据用户指定的人设和问题，根据输入的上下文生成相应回答。可与人设泛化指令编排，实现事实遵循类问答对泛化。                            |
| 生成回答                                            | 问题生成回答_扮演指定人设       | 根据用户指定的人设和问题，生成相应回答。可与人设泛化指令编排，实现问答对泛化。                                         |
| 生成回答                                            | 根据文本生成回答            | 根据用户输入的上下文和问题，生成相应回答。可实现事实遵从的合成。                                                |
| 生成问答对  | 文本生成问答对_判断题         | 该指令能够从用户提供的参考文本中构建出一个判断题，同时给出其正确回答。                                             |
| 生成问答对  | 文本生成问答对_填空题         | 该指令能够从用户提供的参考文本中构建出一个填空题，同时给出其正确回答。                                             |
| 生成问答对  | 文本生成问答对_问答题         | 该指令能够从用户提供的参考文本中构建出一个问题，同时给出其相应回答。                                              |
| 生成问答对  | 根据文本抽取问答对_金融场景      | 根据用户输入的金融类文档进行问答对的抽取。                                                           |
| 生成问答对  | 文本生成问答对_单选题         | 该指令能够从用户提供的参考文本中构建出一个单选题，同时给出其正确回答。                                             |
| 生成人设                                            | 根据问题生成人设            | 根据用户输入的问题生成一个人物设定。                                                              |
| 其他                                              | BadCase问题泛化         | 该指令通过用户提供的badcase问题和回答，利用大模型生成在类似情景下可能犯错的攻击性问题。用户可指定生成的攻击性问题个数，个数不超过10。         |
| 其他                                              | 根据答案推理解题思路          | 指令通过用户输入的问题和回答，利用大模型生成包含相应解题思路的回答。                                              |
| 其他                                              | 指令泛化                | 根据用户指定风格，进行指令泛化。可与指定要求类的问答对生成相关指令编排，实现问答对泛化。                                    |
   
 #### 创建自定义数据合成指令
平台支持用户创建自定义数据合成指令。
本章节将以"生成主题散文"的场景为例，详细介绍自定义数据合成指令的配置步骤。
1. 登录ModelArts Studio大模型开发平台，在"我的空间"模块，单击进入所需空间。
   图13我的空间   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571046768.png) 
2. 在左侧导航栏中选择"数据工程 \> 数据加工 \> 合成任务 \> 管理合成指令"，在"自定义"页签，单击"创建自定义指令"。
3. 在"创建指令"弹窗中，输入名称与描述，单击"确定"，进入配置合成指令页面。
4. 选择变量标识符为"双大括号{{}}"，输入指令为"请以{{topic}}为主题，写一篇字数不超过{{num}}的散文。" 单击"识别"，再单击"确定"。
   图14配置指令   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571046726.png) 
5. 按照[表3]进行变量配置。
    表3数据指令变量配置 
   | 变量类型 | 变量名称   | 变量类型    | 变量描述 |
   |:---|:---|:---|:---|
   | 输入变量 | topic  | string  | 主题   |
   | 输入变量 | num    | integer | 字数   |
   | 输出变量 | output | string  | 散文   |
      
   其中，输出变量的"变量描述"字段为大模型理解的内容，需仔细填写。
   图15配置变量   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601605907.png) 
6. 配置完毕后，在"完整指令预览"处单击刷新键，可预览最终拼接的完整指令，系统会将输出参数内容自动输出一段prompt拼接到指令下方，以确保模型能根据预期的返回类型返回对应内容。如[图16]。
   图16完整指令预览   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571046794.png) 
7. 调测数据指令。
   - 在"调试 \> 模型"中，选择指令所需的模型，单击"配置超参"可自定义设定超参数值。
     - 温度：温度采样，较高的值，如0.8会使输出更随机，而较低的值，如0.2会使其更加集中和确定性。取值范围0-1。
     
     - 多样性：即top_p，核心采样，模型会考虑具有top_p概率质量的标记结果。0.1 表示只有占前 10% 概率质量的标记被考虑。建议该参数和temperature只设置一个。取值范围0-1。
     
     - 重复惩罚：重复采样惩罚值，取值越大表示惩罚越大，因此可降低模型重复相同行为的可能性。取值范围-2.0-2.0。
     
     - 采样：即top_k，采样参数，每轮token生成时，保留k个概率最高的token作为候选。取值越大，生成文本的多样性越强。
      
   
   - 在"调试 \> 输入"中，可通过给变量赋值来查看效果。
     图17指令调测   
     ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601725889.png) 
    
8. 调试完成后，单击"立即创建"，创建该数据指令。成功创建的数据指令将在"管理合成指令 \> 自定义"页面中展示。
 
