为了让大语言模型的AI能力更贴近业务需求,本文详细介绍了在阿里云百炼创建自定义模型的最佳实践。即便不清楚大模型的技术细节,您也能按照本篇的操作指引创建一个有效的自定义模型,从而轻松地为业务场景添加大模型服务能力。
自定义模型概述
自定义大模型是指基于通用大语言模型,通过微调和训练,能更好地适应特定领域或任务的大语言模型。
为什么选择 自定义模型?
为什么选择 自定义模型?
- 提高特定领域的准确性:通用的大语言模型尽管强大,但在处理特定领域的任务时,可能会因为缺乏领域特定知识而表现不佳。自定义大语言模型通过领域特定的数据进行重新训练,可以显著提高在该领域的表现和准确性。
- 增强模型的适用性:自定义大语言模型可以根据特定应用场景的需求进行微调,使其更好地适应特定任务。例如,在客户服务中,自定义模型可以更好地理解和回应客户的特定问题,提高客户满意度。
- 节约开发时间和成本:利用现有的大语言模型进行定制化训练,比从头开发一个模型要节约大量时间和成本。您可以快速部署自定义模型,满足业务需求。
创建自定义模型的流程
创建自定义模型的流程
- 模型调优阶段:模型会“学习”大量训练数据的语言特征,从而理解并生成相似的自然语言。开始模型调优之前,您需要做一些训练数据准备工作,包括数据收集、数据清洗、数据集划分等操作。您需按照训练新模型向导的指引配置模型调优。根据配置的训练超参数(超参数是指在模型调优前需要提前设定的参数,包括学习率、迭代次数等),阿里云百炼将自动训练您选择的预置模型。一般情况下,训练过程是自动完成的,无需进一步操作。
- 模型部署阶段:您需要将自定义模型部署到独占实例上,然后调用或评测自定义模型。部署新模型向导将帮助您配置模型部署。根据配置的自定义模型规格和资源配置方式,阿里云百炼将计算预估价格。待您确认价格后,阿里云百炼会自动部署模型,一般无需干预。完成部署后,您便可以在代码或评测中配置自定义模型。
- 模型评测阶段:您可以评测已部署的自定义模型。您可以按照创建评测任务向导的指引配置模型评测。自定义模型不涉及评测模板设计环节。根据您选择的评测方式、数据和维度,阿里云百炼将自动完成评测,一般无需干预。
前提条件
前置知识
您可能需要了解机器学习、深度学习和自然语言处理的基础概念。如果不了解这些概念,您也可以遵循本实践文档的指引完成整个创建流程。
工具和资源
您需要开通阿里云百炼大模型服务平台,并确认账号余额充足,以免无法创建自定义模型。
计费信息
创建自定义模型时,可能涉及多种计费项,包括但不限于模型调优、模型部署和模型评测。计费规则请参考计费项。
训练数据准备
在开始训练前,您需要完成训练数据的准备工作。这些准备工作包括:从业务场景中收集具有代表性的业务数据,并转换为问答对的形式(数据收集);上传训练数据、评测数据、验证数据(数据上传);使用阿里云大模型服务平台百炼提供的数据清洗工具和数据增强工具,提升训练数据的质量。
1. 数据收集
1. 数据收集
- 来源多样化:从书籍摘录、学术论文、新闻报道和专业网站等多种来源收集数据,来确保模型的适用范围更广,可以处理不同类型的问题或理解多种表达方式。
- 质量控制:数据质量决定了模型质量。质量高、数量足的数据可以让模型学得更好,表现更优。
- 平衡性考量:确保问题类型、难度和答案的分布均匀,避免模型偏向某一特定类型的数据,导致训练偏差。
- 文本分割:合理分割长文本,确保每条训练样本聚焦于单一明确的主题,便于模型学习。
- 脱敏处理:移除个人身份信息、敏感词汇或不适宜内容,保证数据合规与安全。
- 用户聊天记录:比如网站上的在线客服聊天记录。
- FAQ文档:公司网站上的常见问题解答列表。
- 客户服务邮件:客户发送给客服团队的问题和相应的回复。
- 用户聊天记录:导出在线客服系统中的聊天记录,可以包括客户问题和客服回复。例如:
- FAQ文档:收集网站上列出的常见问题及其答案。例如:
- 客户服务邮件:导出邮件系统中跟客户的来往邮件。例如:
Prompt | Completion |
|---|---|
你们的退货政策是什么? | 我们的退货政策是购买30天内可以无条件退货。 |
如何更改我的密码? | 请点击“设置”,然后选择“更改密码”。 |
我的订单没有收到,怎么办? | 我们很抱歉,请提供您的订单号,我们会尽快处理。 |
2. 数据上传
2. 数据上传
操作步骤
操作步骤
- 前往数据管理页面。这里展示了所有上传的数据集,您可以在这里管理所有数据集,包括查看、导出、发布、删除等操作。
-
点击新增数据集,通过填写如下表单创建训练集和评测集:
- 数据集名称:用以标识数据集的名称,可按需创建。
- 数据集类型:包含训练集和评测集。每次新增数据集时,您只能选择一种类型的数据集。训练集由一轮或多轮的Prompt+Completion数据组成,而评测集仅包含Prompt数据。您需要分别创建这两种数据集。
- 存储位置:默认为平台OSS存储。
- 导入方式:默认为本地上传。
- 数据导入:您可以在这里上传训练数据,打开文件浏览器或直接拖拽数据到上传区域里。阿里云百炼支持批量上传,一次最多导入10个文件,还提供了各种数据格式的模板供参考。
- 确认无误,您可以点击确认完成数据上传的配置。
- 阿里云百炼将自动完成数据的上传过程,无需额外操作。上传完成后,请您务必点击发布,数据只有被发布后才能用于训练。
3. 数据清洗与数据增强 (可选)
3. 数据清洗与数据增强 (可选)
数据清洗 操作步骤
数据清洗 操作步骤
- 访问数据管理页面并选择数据流页签。
- 在数据流列表页签中点击创建数据流,创建并发布数据清洗数据流。
-
若已经准备好需要清洗的数据,您可以在任务列表页签点击从数据流列表创建任务,选择已发布的数据清洗数据流,通过填写以下表单项创建清洗任务:
- 任务名称:用以标识清洗任务的名称,可按需创建。
- 数据来源:默认为模型数据,您在此处选择准备清洗的数据集(版本),并管理现有的数据集。
- 任务模板预览:预览所选数据流的配置。如需修改配置,您可以点击去管理进行相应调整。
- 点击创建完成,清洗任务将自动开始,您可以在任务列表页签查看最新任务状态。清洗完成后,阿里云百炼将生成一个新版本数据,请您在使用数据时注意区分版本。
- 待清洗任务结束后,您可以在任务列表页签,单击数据清洗任务操作列的结果查看清洗的详细结果。
数据增强 操作步骤
数据增强 操作步骤
- 访问数据管理页面并选择数据流页签。
- 在数据流列表页签中点击创建数据流,创建并发布数据增强数据流。
-
若已经准备好需要增强的数据,您可以在任务列表页签点击从数据流列表创建任务,选择已发布的数据增强数据流,通过填写以下表单项创建增强任务:
- 任务名称:用以标识增强任务的名称,可按需创建。
- 数据来源:默认为模型数据,您在此处选择准备增强的数据集(版本),并管理现有的数据集。
- 任务模板预览:预览所选数据流的配置。如需修改配置,您可以点击去管理进行相应调整。
- 点击创建完成,增强任务将自动开始,您可以在任务列表页签查看最新任务状态。增强完成后,阿里云百炼将为您的数据生成一个新版本,请在使用数据时注意区分版本。
- 待增强任务结束后,您可以在任务列表页签,单击数据增强任务操作列的结果查看增强的详细结果。
- 逐步清洗: 分阶段进行数据清洗,每次只执行特定的一类清洗操作(如移除重复项、处理缺失值等)。这样可以更容易地检测和纠正错误,提高数据的整洁度和一致性。
- 验证清洗效果: 每个清洗步骤之后,检查数据的样本,以确保数据的完整性和真实性没有被破坏。
- 任务相关性: 在数据增强时,确保生成的增强数据与目标任务高度相关,避免引入不相关的变体,保持数据上下文和语义的一致性。
- 多样化策略: 使用多种数据增强策略(如同义词替换、随机抽样、翻译变换等),以最大限度地增加数据的多样性。这有助于提升模型的泛化能力。
- 平衡增强: 生成的增强数据应在类别、难度和结构上相对平衡,避免让模型接触过多的特定类型数据,导致过拟合。确保在数据增强过程中,不偏离数据的真实分布。
模型调优
完成训练数据的准备后,您便可以开始模型调优。模型调优,即使用训练数据集和验证数据集训练模型。
阿里云百炼提供Fine-tuning的训练方式,还提供多种参数的调整,可以根据业务需求调整参数,优化模型调优效果。以下是新建模型训练任务和关联模型训练任务的操作方法:
新建训练任务
新建训练任务
- 前往模型调优页面。这里展示了所有调优任务。
-
点击创建训练任务,阿里云百炼将会引导您配置训练参数:
-
选择模型训练方式:阿里云百炼支持SFT微调训练、DPO偏好训练和CPT继续预训练三种方式,以下是选择建议:
模型训练方式
特点
适用场景
SFT微调训练
有监督微调,增强模型指令跟随的能力,提供全参和高效训练方式
需要模型掌握特定领域的问答能力或按固定格式输出
DPO偏好训练
引入负反馈,降低幻觉,使得模型输出更符合人类偏好
对生成内容的质量、事实准确性要求较高
CPT继续训练
通过无标注数据进行无监督继续预训练,强化或新增模型特定能力
需要为专业领域构建模型,使其具备专家级的知识储备
- 选择模型:阿里云百炼支持基于预置模型或自定义模型的调优。 如果您是第一次训练模型,建议选择预置模型;如果您调整了训练策略,希望基于已训练的模型进行再次训练,则可选择自定义模型。 阿里云百炼提供了多种可调优的预置模型,各模型特性请参阅模型调用。
-
训练方式:阿里云百炼支持全参训练和高效训练两种方式,以下是选择建议:
高效训练能较好地平衡训练时长和训练效果,一般建议您选择高效训练。训练方式
优点
缺点
全参训练
最大灵活性:全参数训练可使模型适应新的数据和任务,具有最大的调整灵活性。
高性能:在理论上,全参数训练可以获得最高的性能,因为所有参数都经过调整以优化特定任务。
时间成本高:训练时间长,特别是在大型数据集上的训练。
过拟合风险:如果数据量不足或不平衡,全参数训练可能导致模型过拟合于特定训练数据。
高效训练
快速训练:比全参数训练更快,适合快速迭代和原型开发。
减小过拟合风险:微调部分参数可以降低过拟合风险。
性能可能受限:在某些任务上,性能可能略低于全参数训练。
适用范围有限:当任务的性质高度变化或与预训练任务显著不同,高效训练可能无法有效迁移已有的知识。
-
选择训练数据:选择参与训练的数据集,您在已上传的数据集列表中选择训练集。
如果清洗或增强了数据,您需要注意数据集的名称和版本,以免误选未经处理的数据。
-
选择验证数据:选择参与验证训练效果的数据集,您可以选择自动切分或从数据列表中选择验证集。
如果您没有准备验证数据集,建议选择自动切分,阿里云百炼将从选定的训练集中划分一部分数据作为验证集。反之,建议从数据列表中选择验证集。
如果您清洗或增强了数据,您需要注意数据集的名称和版本,以免误选未经处理的数据。
- 混合训练:为了避免基础模型能力的遗失并提高训练效果,阿里云百炼支持您将自备的训练数据与预置通用数据混合训练。您可以调整自备训练数据与预置通用数据的比例,如果所有类型的预置通用数据的比例设置为0,您将不使用预置数据。
- 超参配置:模型的超参配置决定一定程度的模型调优效果,您可按照自己的训练经验进行配置。如果您不了解超参数,阿里云百炼也提供一套基于实验所得的默认配置,您可以遵循默认配置。
- 开始训练:这一步将展示您的所有训练配置,阿里云百炼会自动计算预估的训练费用(稍后您也可以在训练任务列表中浏览预估费用明细,实际产生费用以生成账单为准)。待您确认配置和价格信息无误后即可开始训练。
-
选择模型训练方式:阿里云百炼支持SFT微调训练、DPO偏好训练和CPT继续预训练三种方式,以下是选择建议:
- 开始训练后,您可以在模型调优列表中查看模型的训练进度、预估费用和其他管理操作。有关训练费用的详细信息,请参考计费项。
-
优化学习率:
- 简单理解:学习率决定模型每次调整的步伐大小。开始训练时,建议从平台推荐的默认值开始(高效训练为 1e-4 量级,全参/CPT 训练为 1e-5 量级),再根据训练效果调整。
- 如何调整:如果验证集性能没有提升,可以尝试调整学习率,通常缩小10倍或增加10倍是一个好的做法。
-
选择合适的批次大小:
- 简单理解:批次大小是每次训练中用来更新模型的样本数。更大的批次大小可以提高训练效率。
- 推荐设置:常见的批次大小是8、16或32,默认选择16。
-
学习监控损失和准确率:
- 简单理解:损失(Loss)表示模型在训练数据上的误差,准确率(Accuracy)表示模型的性能。如果损失一直下降而准确率提升,说明训练进展顺利。
- 如何操作:您可以进入训练任务详情页,实时监控训练过程中的损失和准确率变化。验证集上的损失可以帮助您决定是否需要调整超参数。
-
简单的数据增强方式:
- 简单理解:数据增强可以增加数据的多样性,提高模型的泛化能力。例如,同义词替换、随机遮盖等。
- 如何操作:在数据预处理阶段,进行简单的同义词替换或其他文本增强。
管理训练任务
管理训练任务
指标 | 解释 |
|---|---|
Training Loss | Training Loss 代表针对训练数据学习的拟合程度,曲线一般呈现下降趋势。Loss越小,表示训练数据拟合程度越高。过小的Loss易导致数据过拟合,需要根据实际训练过程进行判断。 |
Validation Loss | Validation Loss代表针对验证集学习的拟合程度,曲线一般呈现先下降后上升趋势。Loss越小,表示验证数据拟合程度越高。优秀的模型效果往往出现Validation Loss的最小值节点,此时拟合程度最佳,训练效果最好。 |
Validation Token Accuracy | Validation Token Acc代表针对验证集学习的准确程度,曲线一般呈现上升趋势。训练过拟合后,该曲线会呈现下降趋势。优秀的模型效果往往出现在Validation Token Acc的最大值节点,此时预测准确率最高,训练效果最好。 |
模型部署
待您获得自定义模型后,您需要将该模型部署到计算资源上,方可调用该模型。
阿里云百炼提供了多种资源配置方式,您可以按需选择。如果需要评测模型的训练效果,您需要先部署自定义模型,再使用模型评测评估自定义模型的训练效果。
新建部署任务
新建部署任务
- 前往模型部署页面。您也可以在模型调优中等待模型训练结束后,直接点击模型部署。这里展示了所有模型部署任务。
-
点击部署新模型,您将跟随向导的指引完成部署配置:
- 选择模型:阿里云百炼提供了两类可部署的模型,此处请您选择之前训练的自定义模型。
- 选择计费方式:阿里云百炼提供了两类计费方式。预付费是按月购买计算资源的方式,不同版本的包月资源在部署模型的能力上有差别。后付费是按实际使用时长购买计算资源的方式,您可以按需购买一定数量的用以提供计算资源的实例数,也可以随后变更实例的数量。为完成后续的模型评测,对训练效果做进一步评估,此处推荐您选择后付费。
- 开始部署:这一步将展示您的所有部署配置和预估费用,待您确认所有信息后即可开始部署。
- 开始部署后,您可以在模型部署列表中查看模型的部署进度、预估费用和其他管理操作。有关部署费用的详细信息,请参考计费项。
- 简单定义:实例是运行模型和处理请求的独立计算单元,通常对应一台服务器、一块GPU,或在容器化环境中对应一个容器。
- 实例用途:实例用于将模型加载到内存中,接受用户请求,执行推理任务(如文本生成、分类等),并返回结果。
- 响应时间:增加实例数量能有效分担负载,降低每个实例处理请求的时间,提高整体响应速度。
- 并发处理:更多实例可以并行处理更多请求,提高系统的并发处理能力。
- 成本效益:增加实例数量能提高性能和用户体验,但成本可能增加,需要权衡。
管理部署任务
管理部署任务
模型评测
完成模型部署后,如需测试模型的效果,可在模型评测中进行评测。对于本篇介绍的自定义模型,阿里云百炼提供了基线评测方法。基线评测预置多种常用的能力评测集及评测脚本,可自动评测模型多种基本能力。
新建评测任务
新建评测任务
- 前往模型评测页面。这里展示了所有模型评测任务。
-
点击创建评测任务,您将遵循向导完成评测任务的配置:
- 评测方式:阿里云百炼提供了多种评测方式。对于自定义模型,请您选择基线评测。
- 选择模型:请在下拉框中选择已部署的目标评测模型。
- 选择评测数据:阿里云百炼预置了基线评测集(包括C-Eval/CMMLU等主流榜单评测集)对待测模型的各项基础通用能力进行自动评测。您可以任选评测数据,以此构建您的所有评测数据。
- 开始评测:这一步将展示您的所有评测配置和预估费用,待您确认所有信息后即可开始评测。
- 开始评测后,您可以在模型评测列表中查看模型的评测进度、预估费用和其他管理操作。有关评测费用的详细信息,请参考计费项。
管理评测任务
管理评测任务