ms-swift 3.x和2.x中参数不一致的暗坑

虽然ms-swift 3.x发布也有一段时间 官方文档也对使用上参数的变动做了一些说明

ReleaseNote 3.0 --- swift 3.2.0.dev0 文档

但是这个说明基本上都是说 某些参数的命名 发生了变化

对于一些 参数命名没变但默认值/使用方式 的变化 暂时还没给出说明/统计文档

我这边基于工作中遇到的一些坑,整理了部分,希望大家在使用的时候留意。

注意,在这个文档里官方已给出的参数差异我在这不做赘述分析,只展示我个人发现的一些暗坑,时间关系没有做精准校对,如果发现写错or官方更新文档 还请评论区提醒我

一、MLLM中sft full时默认可训练参数的变化

在swift2.x版本中,对MLLM进行SFT full训练的时候,默认是全参数训练的,见

但是在3.x中很坑的一点是默认只训练LLM,冻结vision encoder和adapter。。。

所以在swift 3.x用full sft训练MLLM的时候,切记把freeze_vit和freeze_aligner参数设置为False

二、梯度累加gradient_accumulation_steps

这个参数影响了total_batch_size或者说模型训练花的steps

在2.x中,默认为一个公式计算方法,以8卡为例,这个数值默认为2,也就是说total_batch_size会翻倍

然而在3.x中,默认为1

所以就会导致如果非16卡训练,2.x中和3.x中即使对齐了batch_size,最终的训练step也会有出入。

三、推理的时候--model和--adapters的区别

官方总文档里应该是有写这俩参数的区分,但是因为踩过坑,我在这里再注明一下

当全参数(sft full)训练的时候,推理infer的时候用--model xxx/path

当lora训练的时候,推理用--adapters xxx/path

相关推荐
Acrelhuang6 分钟前
直击新能源电能质量痛点:安科瑞 APView500 在线监测装置应用方案
大数据·运维·开发语言·人工智能·物联网
无限进步_13 分钟前
C++从入门到类和对象完全指南
开发语言·c++·windows·git·后端·github·visual studio
lalala_lulu16 分钟前
Lambda表达式是什么
开发语言·python
她说..16 分钟前
Java AOP完全指南:从原理到实战(全套知识点+场景总结)
java·开发语言·spring·java-ee·springboot
Sammyyyyy16 分钟前
Rust性能调优:从劝退到真香
开发语言·后端·rust·servbay
Zfox_22 分钟前
【Go】异常处理、泛型和文件操作
开发语言·后端·golang
zhangyanfei0124 分钟前
谈谈 Golang 中的线程协程是如何管理栈内存的
开发语言·后端·golang
浪客川29 分钟前
高效日志分离器:一键筛选关键信息
开发语言·windows·c#
星竹晨L31 分钟前
C++红黑树:理论与实践相结合的平衡艺术
开发语言·数据结构·c++
itwangyang52032 分钟前
在 GitHub 上生成和配置个人访问令牌(PAT),并将其用于 R 环境中的凭证管理和包安装。
开发语言·r语言·github