【FAQ】千帆大模型平台常见问题梳理 (模型微调篇)
大模型开发/互助问答
- SFT
- P-tuning
- RLHF
2023.08.2512619看过
Q: 模型训练或迭代通常有哪几种?
A: 通常有3种:Pre-trained(预训练)、Fineture(微调)、Post-traing (后训练)三种方法。
-
Pre-trained(预训练)就是谷歌百度等大厂,把模型喂了大量的各种语料训好了一个模型,模型已经拥有的基础的背景知识, 相当于模型从0到100。
-
Finetune(微调)就是在Pre-trained的模型后面加一些简单的类似全连接的神经网络,用业务数据在训练一下,学到行业内的知识, 相当于模型从100到110。
-
Post-training(后训练)就是预训练的二阶段,预训练是从零到1的搞了一个语言模型。Post-training是在预训练后的模型上,再来一波预训练,是语言模型的训练。后面的finetune是基于业务的微调。相当于模型从110到200. 所谓"注入"学习通常用这种方案。
Q: 在什么场合适合用SFT、RLHF和P-Tuning,及各自的实现过程,对数据的标注要求和格式分别是什么?
A:
-
如采用p-tuning, 则不同部门的应用在推理时都需要调用同一个大模型的能力。
-
SFT全量调参,P-tuning只调1%左右参数,是否分开部署取决于调参方式;
-
对于客户专有需求,两种调参方式的效果差不多,但P-tuning成本显著低,因此推荐客户用P-tuning方式。
-
SFT的场景泛化效果更好,若A部门应用用此方式构建,可能B部门的类似需求不需要单独训练模型便可直接应用。
-
如采用SFT, 则每次SFT会产出一个新的模型。
-
数据标注格式基本都是问答对, 细节可能会变动, 但问答结构不变. { 问, 答 }
总的来说:SFT属于全参数调优,需要的精标语料数据量较大, 至少在5000条以上,微调后的模型需要独立部署(必须托管)。Prompt tuning、LoRA适合调整部分模型参数,需要的精标语料数据量不大,通常几百条即可见效。
Q: 使用文心千帆进行微调重训,具体使用流程是什么?
A: 通常包含以下四个步骤: 上传数据集 -> 调整模型参数 -> 启动训练 -> 部署上线
Q: 千帆大模型平台Finetuning机制是怎样的?需要什么样的数据结构?
A: 可以使用私域数据或者行业数据对LLM大模型进行finetune(Post Pretrain),或者使用有监督的问答对的数据格式进行finetune(SFT)。
私域数据纯文本结构即可,有监督问答对形式可以是prompt, completions问题对的形式。
私域数据纯文本结构即可,有监督问答对形式可以是prompt, completions问题对的形式。
-
对于finetune参数更新上,有全量参数更新以及Delta tuning的区分。针对Delta tuning有可以分为prompt tuning,lora,指定参数更新等方式。目前主要选择prompt tuning以及lora。
-
Prompt tuning新增模型参数用来表征prompt embedding,固定LLM大模型参数,只更新prompt embedding。
-
Lora通过重参数化的形式,新增两层低秩矩阵与LLM大模型的FFN层并列,只更新低秩矩阵部分的权重。
-
Delta tuning也可看做是一种parameter-efficient的tuning方法。
Q: 千帆大模型平台提供哪些模型训练方法?应该如何选择?
A: 主要包括以下几种:p-tuning: 微调, 改变极少量参数
LoRA: 微调, 改变极少量参数
SFT: 改变全量参数, 但改变较少.
Post-pretrain: 改变全量参数, 深度变化.
数据量要求: P-tuning/LoRA < SFT << Post-pretrain。
这些方法之间的一些区别是:
P-Tuning和LoRA只调整一小部分参数,而监督式微调则调整所有参数。
P-Tuning修改了输入嵌入,而LoRA修改了每层的隐藏状态。
P-Tuning和LoRA保留了预训练的模型权重,而有监督微调则更新了全部参数。
与有监督的微调相比,P-Tuning和LoRA的内存要求更低,训练吞吐量更高。
LoRA没有额外的推理延迟,而P-Tuning和有监督微调可能有。
这些方法各自优缺点是:
P-Tuning和LoRA比有监督微调更有效率,成本也更低。它们还可以避免灾难性遗忘,并且可以很容易地与原始预训练模型一起部署。
在一些需要更多适应性的任务或领域,有监督微调可以达到比P-Tuning和LoRA更高的性能。它还可以利用现有的框架和工具对大语言模型进行微调。
P-Tuning可能难以处理困难的序列标记任务或需要复杂推理的任务。它还可能由于额外的输入标记而引入额外的推理延迟。
LoRA可能需要仔细调整等级分解矩阵以达到最佳性能。由于等级分解矩阵的原因,它还可能给模型结构带来额外的复杂性。
Q: Finetune的数据进行了标注,是否只是针对特定任务领域?同一条数据,针对不同任务是不是有不同的标注?跟大模型训练那样少量数据直接无监督训练或有什么效果?
A: 大模型微调的finetune模式需要的数据标注通常是针对特定任务领域的,因为不同任务之间可能存在差异,需要不同的标注方式。同一条数据在不同任务上的标注可能会有所不同,因为每个任务都有自己的特征和要求。
与大模型预训练相比,少量数据直接无监督训练的效果可能会受到限制。预训练通常使用大量未标注的数据进行无监督学习,以便在微调时能够更好地适应特定任务。而在少量数据的情况下,模型可能无法充分学习到数据的分布和特征,从而影响微调效果。
与大模型预训练相比,少量数据直接无监督训练的效果可能会受到限制。预训练通常使用大量未标注的数据进行无监督学习,以便在微调时能够更好地适应特定任务。而在少量数据的情况下,模型可能无法充分学习到数据的分布和特征,从而影响微调效果。
Q: 千帆大模型平台不同的调参方式,分别可以调整哪些参数?
A: 通用的参数一般有batch_size, learning_rate, epochs, max_length, weight decay。特别地,对于LoRA, lora_rank参数也可调
Q: 模型训练后效果怎么优化和调整?
A: 模型训练微调的效果与数据集大小、轮次、学习率等超参数的设置是有关联的,需要不停训练-->验证,直到效果达到预期即可停止训练。关于训练轮次,开始可以使用较小的轮次,逐渐增加轮次来观察模型变化的效果。
学习率一般不建议选过大,过大会导致训练不稳定,但是过小可能会导致收敛速度过慢,效果不明显。可以从小到大的规律,观察模型效果变化。
总而言之,模型训练微调和Prompt优化是一样的,都是一个经验积累和不断实验调优的过程。更大的数据集可以提供更多的样本和多样性,有助于模型学习更好的表示和泛化能力。
学习率一般不建议选过大,过大会导致训练不稳定,但是过小可能会导致收敛速度过慢,效果不明显。可以从小到大的规律,观察模型效果变化。
总而言之,模型训练微调和Prompt优化是一样的,都是一个经验积累和不断实验调优的过程。更大的数据集可以提供更多的样本和多样性,有助于模型学习更好的表示和泛化能力。
Q: 一个用户户可以生成几个SFT后的模型?
A: 当前为5个
评论