1.本地部署后的llamafactory前端效果

2.大模型训练所需显存大小计算


例如训练精度16位,Qwen 24B模型所需的显存大小计算:
M = (24∗ 4) / (32 / 16) ∗ 1.2 = 57.6 GB
3.训练参数解释
1.训练方式
(1) SFT(Supervised Fine-Tuning),监督式微调:
监督式微调,在源数据集上预训练一个神经网络模型,即源模型。再创建一个新的神经网络模型,即目标模型,目标模型复制了源模型上除输出层外的所有模型设计及参数,监督式微调包括以下几个步骤:
预训练: 在一个大规模数据集上训练一个深度学习模型,如使用自监督学习或者无监督学习算法进行预训练;
微调: 使用目标任务训练集对预训练模型进行微调。通常只有预训练模型中的一部分层被微调,如只微调模型的最后几层或者某些中间层。在微调过程中,通过反向传播算法对模型优化,使模型在目标任务上表现更好;
评估: 使用目标任务的测试集对微调后的模型进行评估,得到模型在目标任务上的性能指标。
(2)SFT优缺点:
优点:能利用预训练模型的参数和结构,避免从头训练模型,加速模型的训练过程,且能提高模型在目标任务上的表现;
缺点:需大量标注数据用于目标任务的微调,若标注数据不足,可能会导致微调后的模型表现不佳。其次,预训练模型的参数和结构对微调后的模型性能有很大影响,因此需选择合适的预训练模型。
2.微调方法及参数
(1) LoRA(Low-Rank Adaptation of Large Language Models),低阶自适应法:
冻结预训练好的模型权重参数,在冻结原模型参数的情况下,往模型新增额外的网络层,只训练这些新增的网络层参数。由于新增参数量较少,这样不仅微调成本显著下降,还能获得和全模型参数参与微调类似的效果。
模型的参数量越来越大,比如 GPT3参数量高达 1750 亿,因此微调所有模型参数不可行。LoRA 微调方法由微软提出,通过只微调新增参数的方式,大大减少了下游任务的训练参数数量。对于大型 Transformer,使用 LoRA 可减少高达 2/3 的显存(VRAM)使用量。
(2) Freeze,参数冻结法:
只对原始模型部分参数冻结,仅训练部分参数,Freeze 微调方法仅微调 Transformer 后几层全连接层参数,冻结其它所有参数。大量减少了大模型微调参数,是一种参数高效的微调方法,只需微调高层特征,加快模型收敛,节约微调时间,最大程度保留大模型预训练学习到的语言的 “共性”,可解释性较强。
3.微调参数
(1)学习率:控制模型学习速度的参数,学习率高时,模型学习速度快,但可能导致学习过程不稳定,学习率低时,模型学习速度慢,训练时间长,效率低。
- 1e-1(0.1):相对较大的学习率,用于初期快速探索。
- 1e-2(0.01):中等大小的学习率,常用于许多标准模型的初始学习率。
- 1e-3(0.001):较小的学习率,适用于接近优化目标时的细致调整。
- 1e-4(0.0001):更小的学习率,用于当模型接近收敛时的微调。
- 5e-5(0.00005):非常小的学习率,常见于预训练模型的微调阶段,例如在自然语言处理中微调BERT模型
(2)最大梯度范数:也称为梯度裁剪,用于防止梯度爆炸,通常在 0.1 到 10 之间,太小会限制模型学习,太大无法有效防止梯度爆炸。
(3)计算类型:若硬件支持 bf16,且希望最大化内存效率和计算速度,可选择 bf16 或 purebf16。若硬件支持 fp16,希望加速训练过程且能接受较低的数值精度,可以选择 fp16。
如果不确定硬件支持哪些类型,或需要高精度计算,可以选择 fp32。
BF16 (BFloat16):BF16是16位的,在表示数的方式上和FP16不同,它用更多的位来表示数的大小(指数部分),这让它在处理大范围数值时更加稳定。可以把它想象成一个专为机器学习优化的“半精度”秤,尤其是在使用特殊的硬件加速器时;
FP16 (Half Precision,半精度):使用16位的浮点数来保存和计算数据。想象一下,如果有一个非常精细的秤,但现在只用这个秤的一半精度来称重,这就是FP16。它不如32位精度精确,但计算速度更快,占用的内存也更少;
FP32 (Single Precision,单精度):使用32位浮点数进行计算的方式,可以想象为一个标准的、全功能的精细秤。它在深度学习中非常常见,因为它提供了足够的精确度,适合大多数任务。
Pure BF16:在表示数的方式上和FP16不同,特别是它用更多的位来表示数的大小(指数部分),这让它在处理大范围数值时更加稳定。你可以把它想象成一个专为机器学习优化的“半精度”秤,尤其是在使用特殊的硬件加速器时。
(4)截断长度:指在处理输入时,模型能接受的最大标记(token)数量,若输入序列超过这个长度,多余的部分将被截断,确保输入长度不会超出模型的处理能力。对于文本分类任务,通常截断到 128 或 256 个标记就足够了,而对于更复杂的任务,如文本生成或翻译,可能需要更长的长度。
(5)批处理大小:指在每次迭代中输入到模型中的样本数量,批处理大大会占用更多的内存(显存)。
(6)梯度累计:用于在受限的 GPU 内存情况下,模拟更大的批处理大小。
(7)学习率调节器:各种优化算法中最关键的参数之一,直接影响网络的训练速度和收敛情况。用来调整学习率,能够在训练过程中根据预先定义的节奏来调整学习率。在训练初期,我们希望使用较大的学习率,使模型能快速地收敛到一个合理的解,在训练后期,我们希望使用较小的学习率,使模型能够更精细地优化解。
(8)日志间隔:每训练多少步就记录一次日志。
(9)预热步数:模型训练初期用于逐渐增加学习率的步骤数。
(10)NEFTune (Noise Embedding Finetuning)噪声参数:噪声嵌入精调,在微调过程的词向量中引入一些均匀分布的噪声,可明显地提升模型的表现。
(11)推理引擎:
huggingface:基于Hugging Face平台提供推理API,该引擎为推理组件提供动力,支持各种机器学习模型的部署和运行,主要作用有模型部署,功能扩展,灵活性等;
vllm:利用向量化计算加速大模型推理过程,传统深度学习在推理过程中,往往采用逐个样本的处理方式,这在处理大模型时效率较低,而vllm框架通过一次处理多个样本,充分利用了计算资源,实现了高效的推理性能。vllm的吞吐量(单位时间内处理数据的数量,bps)比huggingface高了24倍,性能有明显的提升。
文章来源于互联网:LLaMA-Factory大模型训练框架相关参数解释
相关推荐: 【AI绘画】Midjourney后置指令–seed、–tile、–q、–chaos、–w、–no详解
博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 💯前言 我们在之前的文章【AI绘画】Midjourney后置指令–ar、–iw 、 –s 、–r、–stop详解中讲解了–ar、–iw 、 –s 、–r、–stop后置指令,…
5bei.cn大模型教程网










