更新时间:2024-09-04
背景信息
全参微调在机器学习和深度学习中具有重要意义,主要体现在以下几个方面:
- 个性化定制:能够根据特定的任务和数据集对模型进行全面定制。使模型能够更好地捕捉特定数据中的细微模式和特征,从而提高模型在该任务上的性能和准确性。
- 适应新数据分布:当新的数据集与预训练数据的分布存在差异时,全参微调可以让模型的参数全面适应新的数据分布,从而提高模型对新数据的拟合能力和泛化能力。
- 挖掘潜在能力:充分挖掘模型的潜在能力。预训练模型可能只是学习到了通用的特征,但通过全参微调,可以激发模型针对特定任务的更深入、更精准的学习能力。
- 解决特定问题:对于一些具有特殊要求或复杂问题的任务,如高精度的图像识别、复杂的自然语言处理任务等,全参微调能够使模型更加专注于解决这些特定的问题,提高解决问题的能力。
- 提高竞争力:在竞争激烈的领域,通过全参微调可以使模型在性能上取得微小但关键的提升,从而在同类模型中脱颖而出。
- 例如,在一个医疗病历诊断任务中,通过全参微调,可以让模型更好地理解和识别医疗病历中的细微病变特征,提高诊断的准确性。
总之,全参微调是一种有效的手段,可以使模型更好地适应特定的任务和数据,从而实现更优的性能和应用效果。
操作步骤
步骤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 个的策略更为合适。 |