更新时间:2024-09-04
背景信息
二次预训练任务是指在已经完成一次预训练的模型基础上,再次使用大规模的数据集进行预训练的过程。
在这个过程中,模型会继续学习新的数据中的语言模式、语义关系和通用知识。与第一次预训练类似,二次预训练通常也是无监督学习,模型通过对大量文本的预测和重构来更新和优化自身的参数。
以下是一些可能需要二次预训练的场景:
- 特定行业应用:如医疗、法律、金融等领域,其数据具有独特的特点和术语,与通用预训练模型所接触的数据有较大差异。
- 多语言处理:当需要处理特定语言组合或罕见语言的任务时,对模型进行针对这些语言的二次预训练。
- 新的任务类型:如果面临全新的、与原始预训练任务差异较大的任务,例如从文本分类转向知识图谱构建。
- 数据更新:当数据随着时间发生了显著变化,例如语言的用法、语义的演变等,通过二次预训练来使模型跟上这些变化。
例如,一个在通用领域预训练的语言模型,要应用于专业的医学文献分析,就可以进行二次预训练,让模型学习医学领域的知识和语言模式,从而提高在该领域的处理能力;以及随着时间的推移,网络用语和流行词汇不断更新,对于需要处理最新文本的模型,进行二次预训练以适应这些语言变化。
前提条件
- 完成算力池的创建;
- 完成平台存储的配置;
- 上传支持训练的模型;
- 上传对应预训练/微调数据集,以及需要使用的配比数据集。
完成上述步骤后,才可以启动模型训练任务。
约束与限制
- 当前仅支持训练平台支持的模型;
- 当前最大支持训练实例数是500;
- 当前最大支持的训练checkpoint的数量是5000;
- 更新训练镜像不会影响到旧训练任务;
- 压缩或加密过的模型不支持训练;
- 需要是平台支持的显卡类型才可以进行训练;
- 仅支持使用带有训练标签的算力池。
操作步骤
步骤1 、使用浏览器,用SCP的管理员或SCP租户登录SCP控制台
管理员场景登录地址:https:// SCP的访问地址:4430。例如https://192.168.200.100:4430/
租户场景登录地址:https:// SCP的访问地址。例如https://192.168.200.100
步骤2 、 在导航栏左上角单击 ,选择人工智能模块,选择“AI算力平台 ”,进
入AICP控制台页面
步骤3 、单击左侧导航栏的“模型训练”,进入模型训练管理页面
步骤4 、在模型训练页面,单击“创建训练任务”,进入训练任务创建页面
步骤5 、在页面右上角,勾选【预训练】即为二次预训练
步骤6 、在训练创建页面,进行训练的模型、数据集及算力选择
参数 |
解释 |
推荐样例 |
选择基础模型 |
|
NA |
选择数据集-我的数据集 |
预训练或者微调训练使用的垂域训练数据集/主数据集,支持数据集多选,支持选择数据集的某个版本 |
NA |
选择数据集-配比数据集 |
仅用单一领域数据进行模型训练,模型很容易出现灾难性遗忘现象,其他领域的能力出现下降。在领域训练过程中加入通用数据进行混合训练,在增强用户垂类场景能力的同时,保持其原本的通用能力。 模型灾难性遗忘是指在机器学习和深度学习中,当模型持续学习新的任务或数据时,出现对之前已经学习到的知识和技能严重遗忘或性能显著下降的现象。 这种遗忘可能导致模型在处理旧任务时的表现急剧变差。例如,一个已经训练好能够准确分析语句情感的分类模型,当继续用新的数据进行训练后,可能会突然无法准确识别原来语句的情感。 |
自动 |
步骤7 选择好基础的模型、数据集和算力池后,如对训练任务有更细的要求,可设置任务的学习率、迭代次数等。单击【更多参数配置】,可展开进行设置
参数 |
解释 |
推荐样例 |
训练方式 |
• 全量更新 在训练过程中对大模型的全部参数进行更新,相比 LoRA,全量更新的效果更优。 • LoRA 在保留自注意力模块中原始权重矩阵的基础上,对权重矩阵进行低秩分解,训练过程中只更新低秩部分的参数。 |
请按实际需求和算力资源选择全量/LoRA |
资源配置 |
• 单实例算力 承载任务所需的资源单位,以单节的资源规格进行拆分 • 实例数 实例数对应训练任务承载的POD数,用于当某个训练任务需要多个节点的GPU资源并行分析时,以实例数来自定义需要多少节点参与。 当一个节点的资源能应对时建议选择单实例,通过扩大单实例规格来满足,因为GPU卡跨实例通信相比单实例内通信时延会增长 • 调度策略 • 自动调度 训练任务自动调度到算力池中执行,调度规则由节点亲和性决定 • 手动指定 手动选择执行的裸金属节点,可以选择多个节点 |
请按实际需求和算力资源进行配置 |
迭代次数 |
epoch,控制训练过程中的迭代轮数。 可根据实际需求和计算资源的限制,通过设置合适的迭代次数来平衡训练效果和时间成本。 如果资源有限或对训练速度有要求,可以减少迭代次数;若追求更高的精度和性能,则可以增加迭代次数。 通过尝试不同的迭代次数,可以找到在特定任务和数据集上使模型性能最优的设置。 过少的迭代次数可能导致模型欠拟合,无法充分学习数据;过多的迭代次数则可能导致过拟合,使模型对训练数据过度拟合而在新数据上表现不佳。自定义迭代次数有助于找到一个恰当的平衡点。 |
3-5 可以先从少量的epoch入手,观测loss收敛情况再决定是否需要调整迭代次数。 |
批处理大小 |
batchsize,表示在每次训练迭代中单卡使用的样本数。 较大的批处理大小可以充分利用硬件的并行计算能力,提高计算效率,但会占用更多内存; 较小的批处理大小则内存需求较低,但计算效率可能相对较低。通过自定义,可以根据硬件资源和任务需求来找到最佳平衡。 通常,较大的批处理大小能提供更稳定的梯度估计,有助于模型更稳定地收敛。但过小的批处理大小可能引入较大的方差,导致训练不稳定。自定义批处理大小可以根据数据特点和模型架构来调整收敛速度和稳定性 |
8-32 通常,较大的批处理大小能提供更稳定的梯度估计,有助于模型更稳定地收敛。但过小的批处理大小可能引入较大的方差,导致训练不稳定。 自定义批处理大小可以根据数据特点和模型架构来调整收敛速度和稳定性。 举例来说,如果硬件内存有限,可能需要选择较小的批处理大小,如 2 或 4;而在拥有强大 GPU 且数据量巨大的情况下,可以将批处理大小设置为 64 甚至更大,以加快训练速度。 |
学习率 |
learning_rate,在梯度下降的过程中更新权重时的超参数,过高会导致模型难以收敛,过低则会导致模型收敛速度过慢,平台已给出默认推荐值,可根据经验调整。 通过自定义学习率,可以根据任务的特点和数据的性质,找到既能保证一定收敛速度又能避免不稳定的合适值。 通过自定义学习率,可以根据任务的特点和数据的性质,找到既能保证一定收敛速度又能避免不稳定的合适值。 在训练早期,可以使用较大的学习率来快速探索参数空间;随着训练的进行,逐渐减小学习率,进行更精细的调整,以接近最优解 |
全量 2e-5 LoRA 1e-4 对于较为简单的模型和小规模数据集: 初始学习率可以在 0.1 到 0.01 之间尝试。 对于复杂的深度学习模型和大规模数据集: 初始学习率常见的范围是 0.001 到 0.0001。 在实际应用中,通常会通过试验不同的学习率来找到最适合特定任务和模型的取值。常见的做法是使用一个较小的范围,如 [0.0001, 0.001, 0.01] 进行试验,观察模型的训练损失和性能指标,从而确定最优的学习率。 |
自定义系统 prompt |
自定义的系统提示词,自定义系统 prompt 为用户提供了一种灵活且有力的方式,来塑造和优化 AI 模型的输出,以满足各种多样化和个性化的需求。 通过精心设计的 prompt,可以引导模型生成符合特定需求、主题或风格的内容。比如,如果希望模型生成一篇科技评论文章,那么自定义的 prompt 可以是对某个科技产品的介绍和一些关键问题的提出。 |
例如在一个智能客服的应用中,自定义 prompt 可以包含常见问题的类型、回答的格式要求以及对客户语气的模拟,从而使模型生成的回答更贴合客服场景的需求。 |
checkpoint 保存频率 |
训练时按此频率保存 checkpoint。单个训练任务的总 steps =(epoch * 数据量)/(并行总卡数 * 批处理大小)。 自定义 checkpoint 保存频率可以根据具体的训练需求、资源状况和任务特点,灵活地管理训练过程中的数据保存,以提高训练效率和模型质量。 |
2000 如果训练环境不太稳定,可能会将保存频率设置得较高,比如每 200个step保存一次;而如果存储空间有限且训练相对稳定,可能会设置为每 5000 个迭代保存一次。 |
checkpoint 保存策略 |
最大保留的checkpoint数量。 全部保存策略的优点在于: 提供了完整的训练历史记录,可以追溯到训练过程中的任何一个点。这对于深入分析模型的训练轨迹、进行详细的实验对比以及应对可能出现的复杂问题非常有用。 保持最近 N 个策略的优势在于: 节省存储空间,避免大量旧的 checkpoint 占用过多资源。 通常在实际应用中,较近的 checkpoint 更有可能被用于恢复训练或进行后续的优化调整,因为它们代表了模型更接近最终状态的性能。 例如,如果您正在进行一个长期的、大规模的训练任务,存储空间较为紧张,但您只关心最近几次训练的结果以便快速调整和恢复训练,那么选择保持最近 5 个或 10 个 checkpoint 可能就足够了。但如果这是一个关键的研究项目,需要对每一个阶段的模型都进行深入研究,那么全部保存会更合适 |
如果您的计算资源充足,尤其是存储空间不是问题,并且您可能需要对训练过程进行非常详细的回溯和分析,那么全部保存可能是更好的选择。 然而,如果存储空间有限,或者您主要关注模型的近期表现和较新的训练状态,那么保持最近 N 个的策略更为合适。 |