支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【大模型微调】5.调参经验总结与显存占用因素探究

发布日期:2025-06-21 17:33:43 浏览次数: 1526
作者:我有一计

微信搜一搜,关注“我有一计”

推荐语

大模型微调实战指南:从参数设置到显存优化,两大权威经验助你高效炼丹。

核心内容:
1. 北航ACT实验室的调参四步法:学习率、训练轮数、批处理大小与LoRA参数优化
2. LLaMA-Factory核心开发者的完整微调脚本解析与关键参数说明
3. 显存占用核心影响因素与参数组合的平衡策略

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

引言

本文承接本系列第二篇文章,继续探究各参数应该如何进行设置,以及其对模型显存的影响。

调参参考经验总结

训练模型的过程通常被戏称为“炼丹”。参数组合和结果息息相关,但没有标准最优参数组合。

因此,在自行钻研之前,有必要先看看别人是怎么做的。

1. 北航 ACT 实验室的调参经验

北航 ACT 实验室做了一份教程[1],参数经验概括如下:

  • 1.调大学习率
    默认的学习率是5e-5,其调大一倍,改成1e-4,调大学习率让模型每轮迭代学习速度提升

  • 2.调大训练轮数
    默认的训练轮数是3轮,其调成8轮,让模型更加充分训练

  • 3.调节批处理大小
    默认的批处理大小为2,该文章指出:一般保持批处理大小×梯度累积×显卡数量等于 32 即可

  • 4.调大LoRA参数
    默认的LoRA秩为8,缩放系数为16,其将LoRA秩调为16,缩放系数调为32

2. 核心开发者的调参经验

LLaMA-Factory 的核心开发者马勇强在知乎上写了一篇入门文档[2],其在微调时的参数选择脚本如下:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \
    --stage sft \
    --do_train \
    --model_name_or_path /media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct \
    --dataset alpaca_gpt4_zh,identity,adgen_local \
    --dataset_dir ./data \
    --template llama3 \
    --finetuning_type lora \
    --output_dir ./saves/LLaMA3-8B/lora/sft \
    --overwrite_cache \
    --overwrite_output_dir \
    --cutoff_len 1024 \
    --preprocessing_num_workers 16 \
    --per_device_train_batch_size 2 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --logging_steps 50 \
    --warmup_steps 20 \
    --save_steps 100 \
    --eval_steps 50 \
    --evaluation_strategy steps \
    --load_best_model_at_end \
    --learning_rate 5e-5 \
    --num_train_epochs 5.0 \
    --max_samples 1000 \
    --val_size 0.1 \
    --plot_loss \
    --fp16

对应修改点如下:

  • 1.截断长度下调
    截断长度从2048下调到1024

  • 2.预热步数上调
    预热步数从0上调到20

  • 3.训练轮数上调
    训练轮数从3上调到5

  • 4.最大样本数下调
    最大样本数从100000下调到1000

  • 5.验证集比例上调
    验证集比例从0上调到0.1(10%)

  • 6.计算类型修改
    计算类型从 bf16 改为 fp16

3. 其它博主的调参经验

easy-dataset 的作者 ConardLi 的文章[3]也分享了调参经验,总结归纳如下:

  • 1.大 batch_size 需搭配大学习率,小 batch_size 需搭配小学习率,对于小数据集的微调,batchsize可直接从1开始。

  • 2.截断长度应适当调大,调成4096,否则很多数据会不完整。

  • 3.LoRA秩从8开始即可,最低不要 < 8,小数据集不要调的过大。

训练模型显存占用组成

文章[3]还指出,训练模型时,模型的显存主要由以下几部分组成:

  • 基础模型权重
    基础模型权重主要和计算精度有关,以 bf16 精度为例,7B的模型所需显存就是14GB。但实际上无法之间这样去推算,因为使用 bf16 后,系统会进行混合精度训练,实际精度是 bf16 + fp32。

  • 激活值
    激活值的计算方法为:显存占用 = 批量大小 × 序列长度 × 隐藏层维度 × 模型层数 × 单个元素字节数 估算方法:以 Qwen2.5-7B-Instruct 为基准,单次处理的 Token 量每增加 1K,显存约增加 2.5G。

    单次处理的 token 与批次大小和截断长度相关,批次大小翻倍,单次处理的 token 也翻倍,截断长度变长,如果单次数据集输入数据可能会增加。

  • LoRA 适配器
    LoRA 适配器的计算方法为:显存占用 = LoRA 层数 × 秩(Rank)×(输入维度 + 输出维度)× 2B

    LoRA 插入的层数,插入前后的维度很难一次性统计和估计出来,因此这部分只能采用估计的方式。

  • 框架开销
    框架开销包括深度学习框架 PyTorch本身的显存占用。

  • 多卡分布开销
    多卡联合分布式训练时,需要一部分显存用于通信开销,这部分后面会进行试验。

总结一下,训练模型和推理模型差别很大,影响显存占用的因素更多,因此无法直接去准确衡量,还是需要实验进行测试。

实验

下面来进行实验,使用DeepSeek-R1-7B作为基础模型,以秩为 8 的 LoRA 作为微调方法,进行“消融实验”。

1. 多卡开销有多大?

首先验证一下,使用多卡运行相比单卡运行,需要增加多少显存。

用单卡运行,显存占用16.64GB。

CUDA_VISIBLE_DEVICES=0 llamafactory-cli webui

再用八卡运行,开启DeepSpeed stage 3,显存占用76.88GB。

该实验说明,多卡运行看上去并不是简单的做一些通信开销,而可能存在把模型复制多份的情况,具体策略和控制参数有待研究。

2. LoRA数值影响多大?

下面以上面八卡运行的显存占用情况作为基准,将LoRA的秩调到16,显存占用80.39GB。

说明调大 LoRA 数值后,显存占用约有4GB左右提升。

3. 批处理大小影响多大?

下面将批处理大小从 2 调整成 16,显存占用约181.97GB。

说明批处理大小影响很大,基本上是成倍效果的提升。

4. 计算精度影响多大?

下面将计算精度从bf16调到fp32,显存占用约183.06GB。

说明计算精度也会对显存占用产生巨大影响,混合精度机制已经省了巨量显存。

5. 量化影响多大?

下面使用 QLoRA 设置 lora量化等级为4,显存占用约48.83GB。

QLoRA确实也能剩下很多显存。

6. liger_kernel可以节省显存吗?

默认的加速方式采用的是flashattn2。

下面换成 liger_kernel进行测试,显存占用约80.62GB,并没有减少显存占用,反而略微增加。

7. 多模态模型和纯语言模型显存占用差别有多大?

如果微调多模态模型,视觉编码器和多模态投影编码默认是冻结的,只微调语言模型。

因此,是否同参数量下多模态语言和纯语言模型显存占用差不多呢?

总结一下之前做的实验(实验时batch size取1),结果如下:

总结表
总结表

结果是不确定,相同参数量下,模型架构不同,影响仍然很大。

参考资料

[1] Easy Dataset × LLaMA Factory: 让大模型高效学习领域知识:https://buaa-act.feishu.cn/wiki/KY9xwTGs1iqHrRkjXBwcZP9WnL9

[2] LLaMA-Factory QuickStart:https://zhuanlan.zhihu.com/p/695287607

[3]微调模型的各种参数怎么设置?微调的显存消耗如何估算和优化?:https://mp.weixin.qq.com/s/AbyWaTaPOp9sr5mz5SOVwg

往期内容推荐

大模型微调相关:

1.【大模型微调】1.LLaMA-Factory简介和基本使用流程

2.【大模型微调】2.微调方法详解与模型显存占用实测
3.【大模型微调】3.通过Easy Dataset构建自己的微调数据集
4.【大模型微调】4.模型评估标准及操作流程

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询