赞
踩
encoder-only/decoder-only/encoder-decoder
硕士校招生进入大模型领域工作,选预训练还是SFT? - 知乎
首先看看这个知乎的问题,大部分回答说建议SFT,大概意思是开源大模型出现的越来越多愿意做预训练的公司比较少,并且应届生做预训练大概率是与数据处理相关
----from初创公司NLP(好像进入大模型的领域,还是有研究NLP算法经历的比较多呢)
在大模型的监督式微调(Supervised Fine-Tuning,简称SFT)中,最重要的几个方面包括:
●高质量的训练数据:对于SFT来说, 拥有高质量、代表性强的训练数据是至关重要的。这些数据应该能够覆盖模型将要处理的各种情况,以便模型能够学习到有效的特征和模式。
●任务相关的微调:微调应该针对特定的任务进行,这意味着微调的数据集应该与实际应用场景紧密相关。这样可以确保模型在特定任务上的性能得到显著提升。
●避免过拟合:在微调大型模型时,过拟合是常见的问题。为了防止过拟合,可以采用正则化技术、数据增强或使用早停(early stopping)策略。
●资源和计算效率:大模型的微调通常需要大量的计算资源,需要优化微调过程以提高资源和计算效率,涉及到批处理大小(batch size)的选择、学习率等。
●模型的泛化能力:微调后的模型应保持良好的泛化能力,这意味着它不仅在训练数据上表现良
好,也能在新的、未见过的数据上做出准确的预测。
ps:针对模型的泛化能力,曾见过有论文中的做法是在新的未见过的数据上再次训练
分次SFT (逐步微调)可能会带来以下影响:
●逐步改进:分次微调允许模型逐步学习,每一步都在前一步的基础上进行改进。这种方法可以帮助模型更好地适应复杂的任务,逐步解决可能出现的问题。(有点儿类似于CoT思维链的思想)
●灵活性和控制:分次微调提供了更多的灵活性,允许研究人员根据中间结果调整策略。例如,如果在第一次微调后性能没有显著提升,可以分析原因并调整后续微调的策略。
●风险降低:与一次性微调整个模型相比,分次微调可以降低失败的风险。如果在某个阶段出现问
题,可以更容易地诊断和修复,而不会影响整个模型。
●资源管理:分次微调可以根据可用资源进行计划和调度,使得资源利用更加高效。例如,可以先
对模型的一部分进行微调,然后在资源允许的情况下再进行其他部分的微调。
●细粒度的优化:分次微调允许对模型的不同部分进行细粒度的优化。这对于那些模型结构复杂、
任务需求多样化的情况特别有用。
----from新能源汽车 NLP算法
●全参数微调:使用特定任务的标注数据集对预训练模型的所有参数进行微调。这通常在模型需要对特定任务进行深度定制时使用,但由于需要大量的标注数据和计算资源,在资源有限的情况下可能不切实际。
●迁移学习:在迁移学习中,通常会固定预训练模型的一部分参数,只对模型的最后几层进行微调。这种方法可以利用预训练模型在大规模数据集上学到的通用知识,同时通过微调来适应特定任务。
●层次微调: 与迁移学习类似,层次微调也是只更新模型的一部分参数,但是它更加灵活,可以选择性地微调模型的某些层。这种方法可以根据任务的复杂性和数据集的大小来调整微调的深度。
●多任务学习:模型会在多个相关任务上同时进行训练,目的是让模型学会在不同任务之间共享知识。这种方法可以提高模型的泛化能力,并可能提高在特定任务上的性能。
●知识蒸馏:知识蒸馏是一种模型压缩技术,其中一个大型的、复杂的教师模型的知识被转移到一个小型的、更高效的学生模型中。在SFT中,可以使用知识蒸馏来微调一个小型模型,使其性能接近于大型模型。
●强化学习微调(RLHF) : RLHF微调方法,它结合了强化学习和人类反馈。在这种
方法中,模型通过与人类交互来学习任务特定的知
识,而不是依赖于大量的标注数据。
构建指令微调数据集的步骤:
实战项目推荐:对ChatGLM3/Llama2微调一个同时具有NLU和问答能力的对话机器人https://github.com/agiclass/fine-tuning-lab/tree/v3
DeepSpeed是一个由微软开发的深度学习优化库,旨在提高大模型训练的效率和速度。
在DeepSpeed中,Zero优化器是一系列用于提高训练效率的技术,主要包括Zero-1、Zero-2 和Zero-3,通过优化内存使用来允许训练更大的模型。
●Zero-1: Zero-1 是ZeRO优化的第一个阶段。 优化器状态(例如Adam优化器的权重和一阶、二阶矩估计)被分区到不同的进程中,使得每个进程只更新自己的分区。
●Zero-2: Zero-2是ZeRO优化的第二个阶段。在这个阶段,用于更新模型权重的梯度也被分区,使得每个进程只保留与其优化器状态分区相对应的梯度。Zero-2进一步增加了可以使用数据并行训练的模型大小。
●Zero-3: Zero-3是ZeRO优化的第三个阶段。在这个阶段,模型参数被分区到不同的进程中。Zero-3会在前向和后向传递过程中自动收集和分区这些参数。Zero-3还引入了Infinity Offload Engine,可以将模型状态( 包括权重、梯度和优化器状态)加载到CPU和NVMe内存中,从而实现更大规模的内存节省。
总结:Zero-1优化器状态被分区;Zero-2梯度被分区;Zero-3模型参数被分区
实战:DeepSpeed/examples at master · microsoft/DeepSpeed · GitHub
●ZeRO-Offload: 这是ZeRO优化器的一个扩展,它允许将优化器状态卸载到CPU或GPU之外的存储设备,如硬盘或网络存储,从而减少GPU内存占用并允许训练更大的模型。
●Pipeline Parallelism: DeepSpeed支持流水线并行化,将模型的不同层分布到不同的GPU上,以便同时进行前向和反向传播计算,从而提高训练效率。
●DeepSpeed稀疏性优化:包括对稀疏性的支持,可以减少模型中不必要的计算和存储,提高训练和推理的效率。
●多任务学习支持: 允许同时训练模型以执行多个相关任务,这可以提高模型的泛化能力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。