构建模型蒸馏数据集
获取源数据
通常来说,为了保证模型的通用能力,在微调的时候需要同步配置一定比例的通用指令数据。
本案例使用的开源通用中文指令微调数据集如下:
- COIG-CQIA
COIG-CQIA是一个开源的高质量指令微调数据集,旨在为中文NLP社区提供高质量且符合人类交互行为的指令微调数据。COIG-CQIA以中文互联网获取到的问答及文章作为原始数据,经过深度清洗、重构及人工审核构建而成。主要包括社交媒体&论坛、通用百科、通用NLP任务、考试&试题、人类价值观、中国传统文化、金融&经管领域、医疗领域、法律领域的指令数据。
数据集下载链接为:https://huggingface.co/datasets/open-thoughts/OpenThoughts3-1.2M/tree/main。用户可直接根据文件名进行下载,如图1。
本案例使用的开源金融中文指令微调数据集如下:
- IndustryInstruction_Finance-Economics
IndustryInstruction_Finance-Economics为IndustryInstruction数据集的子集,IndustryInstruction数据集为行业指令数据集,包含多个领域的数据,IndustryInstruction_Finance-Economics为金融领域的行业指令数据。其中共包含12.2万条数据,中文数据占比32.9%。
数据集下载链接为:https://huggingface.co/datasets/BAAI/IndustryInstruction_Finance-Economics/tree/main。用户可直接根据文件名进行下载,如图2。

针对催收意图识别这一场景,数据集主要通过收集真实的客服和用户的对话数据来进行构建,其中的隐私信息已经过处理。
数据预处理
- 数据量级要求:
本场景构建了500条场景数据,同时使用了1500条开源通用指令数据和1500条开源金融指令数据。
本案例中针对场景数据训练三个轮次,共计1500条数据,为此配置了等比例的通用指令数据和金融指令数据。
- 数据格式样例:
每种数据集要放到一个JSONL格式的文件中,每一行文本为一个JSON字符串,至少包含两个JSON键,分别表示问题和回答,对应的键为context和target,同时可使用system字段设置自定义人设,为可选项。数据样例如下:
{"context": "## 对话记录\\n<A说:您好,您的账单已经逾期,请问您今天可以处理吗?\\nB说:今天不太方便,我想问一下可以更改还款日吗?\\nA说:我们建议您尽快处理,以免影响信用记录。\\nB最后说:我知道,但如果能改还款日就好了。>\\n\\n## 背景如下:\\n假如你是一位专业的信用卡催收业务专家,请仔细阅读并理解上述A和B的对话记录,A是催收员,B是客户,并根据要求完成以下任务,任务之间是独立的:\\n\\n## 任务如下:\\n任务1:请仔细分析客户的最后一句话,结合客户的语气,措辞细节以及透露出来的还款意愿和资金状况分析,精确理解B的意图,从给定\"意图列表\"中选择一个最符合B说话意思的词语,禁止过度推理,如果没有符合B最后说话意思的话语,请输出“都不符合”。给定\"意图列表\":[询问更改还款日,询问是否有罚息,询问最低还款额,都不符合]。\\n\\n## 要求:\\n1,禁止过度推理,所有结果必须在B最后说的话中找依据。\\n2,严格按照输出格式返回答案,不要生成分析过程等其他内容。\\n\\n## 输出格式:意图:xx", "target": "意图:询问更改还款日"}
导入微调数据至平台
在准备好数据集之后,需要将三个数据集分别倒入至平台,导入微调数据至平台的步骤如下:
- 登录ModelArts Studio平台,单击进入操作空间。
- 在左侧导航栏中选择“数据工程 > 数据获取 > 导入任务”,单击界面右上角“创建导入任务”。
- 在“创建导入任务”页面,选择“数据集类型”为“文本 > 单轮问答”,选择“文件格式”为“jsonl”,选择“导入来源”为“OBS”。
- 在“存储位置”弹窗,选取数据所在的存储位置,单击“确定”。
- 填写“数据集名称”和“描述”。
- 单击页面右下角“立即创建”,回退至“数据导入”页面,在该页面可以查看数据集的任务状态,若状态为“运行成功”,则数据导入成功。
加工微调数据集
将数据导入至平台后,需要对三个数据集加工,进行数据蒸馏,以获取带有思考过程的推理数据。
创建加工任务的步骤如下:
- 登录ModelArts Studio平台,在“我的空间”模块,单击进入所需空间。
- 在左侧导航栏中选择“数据工程 > 数据加工 > 加工任务”,单击界面右上角“创建加工任务”。
- 在“创建加工任务”页面,选择需要加工的文本类数据集,单击“下一步”。
- 进入“加工步骤编排”页面,选择“数据蒸馏”算子,然后选择“模型”,本案例中选择的模型是“预置服务 > DeepSeek-R1-32K”。
- 加工步骤编排完成后,单击右下角“下一步”进入“任务配置界面”。
- 单击页面右下角“启动加工”,回退至“加工任务”页面,在该页面可以查看数据集加工任务的状态,若状态为“数据集生成成功”,则数据加工成功。
蒸馏数据样例:
基于数据预处理中给出的样例数据,经过数据蒸馏后,得到的蒸馏数据样例如下:
{"context":"## 对话记录\\n<A说:您好,您的账单已经逾期,请问您今天可以处理吗?\\nB说:今天不太方便,我想问一下可以更改还款日吗?\\nA说:我们建议您尽快处理,以免影响信用记录。\\nB最后说:我知道,但如果能改还款日就好了。>\\n\\n## 背景如下:\\n假如你是一位专业的信用卡催收业务专家,请仔细阅读并理解上述A和B的对话记录,A是催收员,B是客户,并根据要求完成以下任务,任务之间是独立的:\\n\\n## 任务如下:\\n任务1:请仔细分析客户的最后一句话,结合客户的语气,措辞细节以及透露出来的还款意愿和资金状况分析,精确理解B的意图,从给定\"意图列表\"中选择一个最符合B说话意思的词语,禁止过度推理,如果没有符合B最后说话意思的话语,请输出“都不符合”。给定\"意图列表\":[询问更改还款日,询问是否有罚息,询问最低还款额,都不符合]。\\n\\n## 要求:\\n1,禁止过度推理,所有结果必须在B最后说的话中找依据。\\n2,严格按照输出格式返回答案,不要生成分析过程等其他内容。\\n\\n## 输出格式:意图:xx","target":"<think>\n\n首先,我需要分析客户的最后一句话:\"我知道,但如果能改还款日就好了。\"\n\n这句话是B说的,在对话中,B表达了对更改还款日的希望。\n\n现在,任务1是:仔细分析客户的最后一句话,结合客户的语气、措辞细节以及透露出来的还款意愿和资金状况,精确理解B的意图。然后,从给定的\"意图列表\"中选择一个最符合B说话意思的词语。意图列表是:[询问更改还款日, 询问是否有罚息, 询问最低还款额, 都不符合]。\n\n要求是禁止过度推理。结果必须在B最后说的话中找依据。意思是,我只能基于B的这句话来分析,不能添加额外的想象或推理。\n\n输出格式是:\"意图:xx\",其中xx是选中的词语。\n\n分析B的最后一句话:\n\n- \"我知道\":这可能表示B理解催收员A的建议(尽快处理),表明B意识到了逾期的影响,但还没有立即还款的意愿。\n\n- \"但如果能改还款日就好了\":这直接表达了对更改还款日的兴趣。措辞\"如果...就好了\"暗示这是一种愿望或请求,而不是直接的询问。但在上下文中,它表明B想改变还款日。\n\n在意图列表中,有一个选项是\"询问更改还款日\"。B不是直接询问,而是表达希望更改还款日。这可以被视为隐含地询问是否有这个可能性,因为在前面的对话中,B说:\"我想问一下可以更改还款日吗?\" 然后A建议尽快处理,B回复了这个。\n\n回顾对话记录:\n\n- A说:您的账单已经逾期,请问您今天可以处理吗?\n\n- B说:今天不太方便,我想问一下可以更改还款日吗?\n\n- A说:我们建议您尽快处理,以免影响信用记录。\n\n- B最后说:我知道,但如果能改还款日就好了。\n\n所以,B第一次明确询问了是否可以更改还款日。然后,当A建议尽快处理时,B再次表达了更改还款日的愿望。\n\n基于B的最后一句:\"但如果能改还款日就好了\",这强化了B对更改还款日的关注。因此,意图应该是\"询问更改还款日\",因为它直接相关。\n\n语气和措辞细节:\n\n- \"我知道\":显示认知,但不积极行动。\n\n- \"但如果能改还款日就好了\":用\"就好了\"表示愿望,暗示资金状况可能现在不方便,但将来可能可以。\n\n还款意愿:B承认知道风险(\"我知道\"),但表示今天不方便还款(从之前的话),所以还款意愿有,但资金状况可能受限。\n\n资金状况:B说\"今天不太方便\",说明现在没钱或不便处理,因此希望更改还款日以适应。\n\n但任务强调:禁止过度推理。所有结果必须在B最后说的话中找依据。所以,我只基于最后一句:\"我知道,但如果能改还款日就好了。\"\n\n在这个句子中,B没有直接询问问题,而是表达了一个愿望。然而,在意图列表中,\"询问更改还款日\"可能最匹配,因为B在之前的对话中已经询问过,现在又提出来了。\n\n意图列表中的词是\"询问更改还款日\",意思是asking about changing the payment date。B的最后一句不是直接的询问,但它是关于更改还款日的愿望。\n\n其他选项:\n\n- 询问是否有罚息:B没有提到罚息。\n\n- 询问最低还款额:B没有提到最小还款。\n\n- 都不符合:如果这不匹配,就用这个。\n\n在B的最后一句中,焦点是\"改还款日\",所以\"询问更改还款日\"应该是最符合的,即使不是直接的询问句子。\n\n在催收上下文中,表达愿望\"如果能改还款日就好了\"可以视为间接询问是否可以更改。\n\n此外,B早先说:\"我想问一下可以更改还款日吗?\",这直接是询问。然后B重申了这个愿望。\n\n所以,总体上,意图是询问更改还款日。\n\n输出格式是\"意图:xx\",所以对于任务1,我应该输出\"意图:询问更改还款日\"。\n\n确保没有过度推理:不要添加外部知识。只基于B的话。\n\n在B的最后一句中,没有提到其他事情,只提到更改还款日。所以,符合\"询问更改还款日\"。\n\n最终选择:\"询问更改还款日\"。\n\n<\/think>\n\n意图:询问更改还款日"}
场景数据集生成
在本案例中,金融场景、金融领域和通用领域的数据比例为1:1:1,因此需要将此前蒸馏得到的500条场景数据复制三份,可通过生成三份一样的数据集来进行实现。
数据集生成的操作步骤如下:
- 登录ModelArts Studio平台,在“我的空间”模块,单击进入所需空间。
- 在左侧导航栏中选择“数据工程 > 数据加工 > 加工任务”,点击此前加工任务条目右侧的“生成”按钮。
- 输入对应的数据集信息,点击“确认”,即可生成对应的数据集。
上述过程执行三次即可得到三份场景数据,之后通过数据配比进行融合即可。
微调数据集配比
目前您一共得到了5个数据集,分别为3个相同的金融场景指令数据集,1个金融领域指令数据集,1个通用领域指令数据集。然后需要执行数据配比任务来将所有数据进行融合,生成最终的训练数据集。
- 登录ModelArts Studio平台,进入所需空间。
- 在左侧导航栏中选择“数据工程 > 数据加工 > 配比任务”,单击界面右上角“创建配比任务”。
- 文本类型选择“单轮问答”,然后选择需要配比的数据集,本案例中为此前生成的三份场景数据和此前蒸馏得到的金融领域数据以及通用领域数据,之后单击“下一步”。
- 输入每个数据集配置的条数比例,单击“下一步”。
- 填写“资源配置”、“数据集名称”和“描述”,以及“扩展信息”。
- 单击页面右下角“确定”,回退至“配比任务”页面,在该页面可以查看数据集配比任务的状态,若状态为“数据集生成成功”,则数据配比成功。
发布微调数据集
为了将数据用于后续模型训练等操作,需要将数据集进行发布。发布该数据集的步骤如下
- 登录ModelArts Studio大模型开发平台,在“我的空间”模块,单击进入所需空间。
- 在左侧导航栏中选择“数据工程 > 数据发布 > 发布任务”,单击界面右上角“创建发布任务”。
- 在“创建发布任务”页面,选择数据集模态,如“文本 > 单轮问答”类型的数据集。
- 选择数据配比步骤中得到的数据集,单击“下一步”。
- 在“基本配置”中选择数据用途、数据集可见性、使用场景和格式配置,“格式配置”选择发布格式为“盘古格式-思维链”。
- 填写数据集名称、描述,设置扩展信息后,单击“确认”,发布数据集。