news 2026/6/16 18:10:17

认知篇#15:ms-swift微调中gradient_accumulation_steps和warmup_ratio等参数的意义与设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
认知篇#15:ms-swift微调中gradient_accumulation_steps和warmup_ratio等参数的意义与设置

一、引言

MS-SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是由ModelScope(魔搭)社区推出的一个开源框架,专为大模型和多模态大模型提供全流程的轻量化微调、部署与评估解决方案。它集成了LoRA、QLoRA等高效的训练技术,支持对超过500种大模型和200多种多模态模型(如Qwen、DeepSeek、GLM系列)进行训练、量化与推理,并兼容从消费级显卡到专业服务器等多种硬件。通过命令行、Python API或图形界面,用户可以快速实现对模型的个性化微调,例如改变模型的“自我认知”,并将其高效部署。

二、微调参数说明

如上所述,ms-swift是一个给大模型进行微调(俗称训练)的平台,其内含了大量的微调方式,最常见的有sft和rlhf。今天要说明的是一些在官方说明文档中没有解释清楚的参数含义与设置(可能比较基础)。官方文档网址如下:

命令行参数 — swift 4.0.0.dev0 文档

NPROC_PER_NODE=8 \ CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \ swift sft \ --model Qwen/Qwen2.5-32B \ --tuner_type full \ --dataset 'liucong/Chinese-DeepSeek-R1-Distill-data-110k-SFT' \ --torch_dtype bfloat16 \ --max_steps 2000 \ --streaming true \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-5 \ --gradient_accumulation_steps 2 \ --packing true \ --eval_steps 200 \ --save_steps 200 \ --logging_steps 5 \ --max_length 8192 \ --warmup_ratio 0.05 \ --dataloader_num_workers 8 \ --dataset_num_proc 8 \ --save_total_limit 2 \ --save_only_model true \ --output_dir output/Qwen2.5-32B \ --deepspeed zero3 \ --use_liger_kernel true \ --attn_impl flash_attn

以上是一段官方给出的全参数SFT训练Qwen模型的配置config,我们基于此进行解释。

1、per_device_train_batch_size:

指的是每个device训练的批次大小,批次越大,每次训练的样本数就越多。所谓的device即一张卡,默认值1,即一卡一次一样本

per_device_eval_batch_size也是同理,eval表示评测;

2、gradient_accumulation_steps:

官方文档中:

gradient_accumulation_steps: 梯度累加。默认为None,即设置gradient_accumulation_steps使得total_batch_size>=16。total_batch_size等于per_device_train_batch_size * gradient_accumulation_steps * world_size

梯度累积步数(gradient_accumulation_steps)是一种在显存不足时,模拟更大批次训练的技术。

核心作用

  1. 节省显存:将一个大批次拆分成多个小步计算,累积梯度后再更新权重,降低单步显存需求。

  2. 稳定训练:间接增大有效批次大小,使梯度更新更稳定,有利于模型收敛。

核心公式有效批次大小 = 单步批次大小 × 梯度累积步数你需要先确定目标有效批次大小。

示例:目标批次为64,但显卡最多只能一次装16张图。可设置单步批次为16,梯度累积步数为4(16×4=64),每4步更新一次模型。

官方有在示例配置里提过一种设置方法:

--gradient_accumulation_steps $(expr 16 / $nproc_per_node) \

结果 = 16 ÷ nproc_per_node

nproc_per_node表示用于训练的GPU的卡数,因此当四卡训练的时候,这里就是4。

3、warmup_ratio:

默认为0,由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳定(振荡),选择Warmup预热学习率的方式,可以使得开始训练的几个epoches或者一些steps内学习率较小,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳

设置预热步数 (num_warmup_steps)
经验法则:

小规模数据(< 10k 样本): 预热步数占总步数的 10%~20%

中/大规模数据(> 10k 样本): 预热步数占总步数的 5%~10%

超大数据(> 1M 样本): 预热步数可设为 1%~2%

4、dataloader_num_workers:

根据官方文档:

dataloader_num_workers: 默认为None,若是windows平台,则设置为0,否则设置为1

官方示例中又是 --dataloader_num_workers 8 \

一般开始是将num_workers设置为等于计算机上的CPU数量,num_workers的经验设置值是自己电脑/服务器的CPU核心数

影响的是训练的速度。

5、ddp_find_unused_parameters:

默认为None。

find_unused_parameters是PyTorch DDP策略中的一个重要参数。当模型在前向传播过程中某些参数未被使用时,设置此参数为True可以让DDP正确处理这些情况。这在以下场景中特别有用:

  1. 动态计算图模型中,某些参数可能在某些迭代步骤中不被使用
  2. 条件分支导致部分参数在某些情况下被跳过
  3. 复杂的模型结构导致参数使用不规律

可以设置为True。

6、deepspeed:

DeepSpeed的核心是ZeRO(Zero Redundancy Optimizer),简单来说,它是一种显存优化的数据并行(data parallelism, DP)方案。

官方文档中:

deepspeed: 默认为None。可以设置为'zero0', 'zero1', 'zero2', 'zero3', 'zero2_offload', 'zero3_offload'来使用ms-swift内置的deepspeed配置文件。你也可以传入自定义deepspeed配置文件的路径

可实现用少数GPU训练大模型,对训练的效果没有影响。

三、结论

MS-SWIFT是一个开源的大模型微调框架,支持500+大模型和200+多模态模型的高效训练与部署。本文重点解析了其微调参数配置:1)批次大小设置(per_device_train_batch_size);2)梯度累积(gradient_accumulation_steps)用于显存优化;3)学习率预热(warmup_ratio)提升训练稳定性;4)数据加载并行(dataloader_num_workers)加速训练;5)DeepSpeed配置实现大模型训练优化。这些参数设置对模型训练效果和效率具有重要影响。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 15:37:16

ReTerraForged地形生成革新:Minecraft世界构建完全指南

ReTerraForged地形生成革新&#xff1a;Minecraft世界构建完全指南 【免费下载链接】ReTerraForged a 1.19 port of https://github.com/TerraForged/TerraForged 项目地址: https://gitcode.com/gh_mirrors/re/ReTerraForged 你是否曾厌倦了Minecraft中千篇一律的地形生…

作者头像 李华
网站建设 2026/6/10 18:40:43

AMD Ryzen处理器性能优化指南:用SMUDebugTool解决三大核心问题

AMD Ryzen处理器性能优化指南&#xff1a;用SMUDebugTool解决三大核心问题 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…

作者头像 李华
网站建设 2026/6/10 16:33:36

GLM-4.7-Flash惊艳生成:技术白皮书撰写、API文档自动生成实例

GLM-4.7-Flash惊艳生成&#xff1a;技术白皮书撰写、API文档自动生成实例 1. 为什么这款模型值得你立刻上手 你有没有遇到过这些场景&#xff1a; 技术团队刚完成一个新模块开发&#xff0c;却卡在“写白皮书”这一步——要梳理架构、描述接口、说明约束&#xff0c;三天写了…

作者头像 李华
网站建设 2026/6/12 12:44:10

GLM-4.7-Flash镜像免配置:预加载59GB模型+vLLM一键启动教程

GLM-4.7-Flash镜像免配置&#xff1a;预加载59GB模型vLLM一键启动教程 你是不是也经历过这些时刻&#xff1f; 下载完一个大模型&#xff0c;光是解压就卡在30%&#xff1b; 配vLLM环境时被CUDA版本、flash-attn编译、tensor-parallel参数绕得晕头转向&#xff1b; 好不容易跑…

作者头像 李华
网站建设 2026/6/10 18:47:06

Z-Image-Base知识蒸馏复现:从Turbo反向学习方法

Z-Image-Base知识蒸馏复现&#xff1a;从Turbo反向学习方法 1. 为什么关注Z-Image-Base&#xff1f;它不是“次级版本”&#xff0c;而是蒸馏的源头 很多人第一次看到Z-Image的三个变体时&#xff0c;会下意识把Z-Image-Turbo当作“主力”&#xff0c;Z-Image-Base当成“基础…

作者头像 李华
网站建设 2026/5/22 4:53:49

AI写作助手:MT5中文语义改写快速入门

AI写作助手&#xff1a;MT5中文语义改写快速入门 你是否遇到过这些场景&#xff1a; 写完一段文案&#xff0c;总觉得表达不够精炼&#xff1b; 提交的申报材料被反馈“表述重复、缺乏变化”&#xff1b; 训练一个中文分类模型&#xff0c;却发现标注数据太少、泛化能力弱&…

作者头像 李华