2026/3/19 4:40:23
网站建设
项目流程
网站多语言模块,安龙网站建设,登录我的企业邮箱,v9双语版网站怎么做一、引言
MS-SWIFT#xff08;Scalable lightWeight Infrastructure for Fine-Tuning#xff09;是由ModelScope#xff08;魔搭#xff09;社区推出的一个开源框架#xff0c;专为大模型和多模态大模型提供全流程的轻量化微调、部署与评估解决方案。它集成了LoRA、QLoRA…一、引言MS-SWIFTScalable 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_NODE8 \ CUDA_VISIBLE_DEVICES0,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_size16。total_batch_size等于per_device_train_batch_size * gradient_accumulation_steps * world_size梯度累积步数gradient_accumulation_steps是一种在显存不足时模拟更大批次训练的技术。核心作用节省显存将一个大批次拆分成多个小步计算累积梯度后再更新权重降低单步显存需求。稳定训练间接增大有效批次大小使梯度更新更稳定有利于模型收敛。核心公式有效批次大小 单步批次大小 × 梯度累积步数。你需要先确定目标有效批次大小。示例目标批次为64但显卡最多只能一次装16张图。可设置单步批次为16梯度累积步数为416×464每4步更新一次模型。官方有在示例配置里提过一种设置方法--gradient_accumulation_steps $(expr 16 / $nproc_per_node) \结果 16 ÷ nproc_per_nodenproc_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正确处理这些情况。这在以下场景中特别有用动态计算图模型中某些参数可能在某些迭代步骤中不被使用条件分支导致部分参数在某些情况下被跳过复杂的模型结构导致参数使用不规律可以设置为True。6、deepspeedDeepSpeed的核心是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_size2梯度累积gradient_accumulation_steps用于显存优化3学习率预热warmup_ratio提升训练稳定性4数据加载并行dataloader_num_workers加速训练5DeepSpeed配置实现大模型训练优化。这些参数设置对模型训练效果和效率具有重要影响。