小白友好!ms-swift命令行参数详解(附常用模板)
你是不是也遇到过这些情况:
- 想用ms-swift微调一个模型,但看到几十个参数就头皮发麻?
- 复制粘贴别人命令后报错,却不知道哪个参数写错了、少写了、写反了?
- 看文档里一堆
--train_type lora、--lora_rank 8、--target_modules all-linear,完全分不清谁管什么、谁必须配、谁可以省略?
别担心——这篇文章就是为你写的。不讲原理、不堆术语、不列全表,只聚焦最常遇到的23个核心参数,用大白话讲清:
它到底控制什么?
不写会怎样?
写错会报什么错?
小白怎么选最安全的值?
配套给出5类高频场景的「抄作业模板」,改改就能跑通
全文无门槛,哪怕你刚装完CUDA、连pip install都手抖,也能照着一步步走通。
1. 先搞懂:ms-swift命令行的3个核心动作
ms-swift所有命令都围绕三件事展开:训练(sft/pt/rlhf)→ 推理(infer)→ 部署(deploy/eval/export)。参数也按这三类组织,我们先划清边界:
| 动作 | 常用子命令 | 典型用途 | 小白注意点 |
|---|---|---|---|
| 训练 | swift sftswift ptswift rlhf | 微调指令、预训练、强化学习对齐 | 参数最多、最易出错,本文重点覆盖 |
| 推理 | swift inferswift app | 本地测试、Web界面交互、批量生成 | 参数精简,重在“快跑通” |
| 部署评测 | swift evalswift deployswift export | 模型打分、服务化上线、量化导出 | 多数参数可默认,优先保证--model和--infer_backend正确 |
关键提醒:所有命令都以
swift [子命令]开头,比如swift sft是微调,swift infer是推理。别漏掉swift,否则系统会报command not found。
2. 训练参数详解:sft/pt/rlhf 通用核心参数(12个)
这部分参数在微调(sft)、预训练(pt)、强化学习(rlhf)中高度复用,掌握它们,80%训练命令都能看懂。
2.1 模型与数据:你的起点和燃料
--model(必填!)
- 它管什么:告诉ms-swift“你要训哪个模型”
- 怎么填:填Hugging Face或ModelScope上的模型ID,比如
Qwen/Qwen2.5-7B-Instruct或AI-ModelScope/qwen2-7b-instruct - 小白避坑:
- ❌ 别填本地路径(如
/home/user/model/),除非你明确加了--model_path - ❌ 别漏掉斜杠,
Qwen/Qwen2.5-7B-Instruct≠QwenQwen2.5-7B-Instruct - 不确定模型ID?去 ModelScope模型库 搜名字,复制“模型ID”字段
- ❌ 别填本地路径(如
--dataset(必填!)
- 它管什么:指定训练用的数据集
- 怎么填:支持单个或多个,用空格隔开;可加
#数字控制采样量--dataset 'AI-ModelScope/alpaca-gpt4-data-zh' 'swift/self-cognition#500' - 小白避坑:
- ❌ 单引号必须加!尤其含空格或
#时,否则shell会报错 - ❌
#500表示只取前500条,不是“第500条”,别写成#0500 - 新手推荐从
swift/self-cognition(自我认知)开始,数据干净、收敛快
- ❌ 单引号必须加!尤其含空格或
--train_type(必填!)
- 它管什么:决定你是“全参数训”还是“轻量微调”
- 怎么选:
full:全参数训练(需A100/H100,显存≥40GB,新手慎用)lora:主流选择!LoRA微调,7B模型单卡3090(24GB)就能跑qlora:QLoRA,显存再砍一半,适合24GB以下显卡
- 小白口诀:
“有卡选
lora,卡紧选qlora,没卡别碰full”
2.2 计算资源:让训练不崩的关键设置
--per_device_train_batch_size(必填!)
- 它管什么:每张GPU上一次喂多少条数据
- 怎么选:
- 3090/4090(24GB):填
1或2 - A100(40GB):可填
4 - 显存爆了?立刻减小这个值!
- 3090/4090(24GB):填
- 小白提示:它和
--gradient_accumulation_steps(见下)一起控制“实际batch size”,不用死记公式,先填1保稳。
--gradient_accumulation_steps(推荐填!)
- 它管什么:模拟更大的batch size,让小显存也能训大模型
- 怎么填:填整数,比如
16 - 小白理解:
实际batch size =
per_device_train_batch_size × gradient_accumulation_steps × GPU数量
你填per_device=1,grad_acc=16, 单卡 → 实际batch=16 - 安全值:新手从
8或16开始,显存不够就往上加。
--torch_dtype(推荐填!)
- 它管什么:指定计算精度,直接影响显存和速度
- 怎么选:
bfloat16:推荐!速度快、显存省、效果稳(A100/V100/RTX3090+必备)float16:兼容性更好,老卡可用float32:别用!慢且费显存,仅调试用
- 小白口诀:
“新卡用
bfloat16,老卡用float16,绝不碰float32”
2.3 LoRA专项:微调必配的3个参数
如果你选了--train_type lora,这三个参数必须成套出现,缺一不可。
--lora_rank(必填!)
- 它管什么:LoRA矩阵的“宽度”,越大越强、越费显存
- 怎么选:
- 7B模型:
8(安全)、16(进阶) - 13B模型:
8(保稳)、16(推荐)
- 7B模型:
- 小白经验:
8能解决90%任务,想更强再试16,别一上来就64。
--lora_alpha(必填!)
- 它管什么:LoRA更新的“力度”,一般设为
rank×2 - 怎么填:
--lora_rank 8→--lora_alpha 16;--lora_rank 16→--lora_alpha 32 - 小白口诀:
“alpha = rank × 2,照着抄,准没错”
--target_modules(必填!)
- 它管什么:指定LoRA插在哪几层,决定“训什么”
- 怎么填:
all-linear:自动找所有线性层(最省心,新手首选)q_proj,v_proj,k_proj,o_proj:手动指定(进阶用,需查模型结构)
- 小白警告:
❌ 别写
all或all-layers,ms-swift不认!
记住all-linear,四字真言,保你通关
2.4 训练流程:控制节奏的3个参数
--num_train_epochs(推荐填!)
- 它管什么:训几轮完整数据
- 怎么选:
- 指令微调(sft):
1~3足够(数据多时1轮就够) - 预训练(pt):
10~100+(数据流式加载,看--max_steps)
- 指令微调(sft):
- 小白建议:先设
1,跑通再调高。
--max_steps(可选,但推荐!)
- 它管什么:训多少步就停,比
epochs更精准 - 怎么用:和
--num_train_epochs二选一,同时填会冲突! - 小白口诀:
“小数据用
epochs,大数据流用max_steps”
--learning_rate(必填!)
- 它管什么:模型“学习有多猛”,太大训飞、太小训不动
- 怎么选:
- LoRA微调:
1e-4(0.0001)是黄金值 - 全参数训:
2e-5~5e-5(0.00002~0.00005)
- LoRA微调:
- 小白铁律:
LoRA就填
1e-4,别改!改了大概率训废。
3. 推理参数详解:infer 最简实用参数(5个)
训完模型,下一步就是试试效果。swift infer参数极少,但几个关键点必须对。
3.1 模型加载:两种方式,选对不报错
--model(可选,但常需)
- 什么时候用:训完直接推理原模型(没加LoRA)
swift infer --model Qwen/Qwen2.5-7B-Instruct
--adapters(可选,但LoRA必用)
- 什么时候用:推理你训好的LoRA权重(最常见!)
- 怎么填:填
sft命令里--output_dir下的具体checkpoint文件夹,比如:--adapters output/vx-xxx/checkpoint-100 - 小白避坑:
- ❌ 别填
output/总目录,要填到checkpoint-xxx这一级 - 不确定路径?进
output/文件夹,ls -lt看最新生成的文件夹名
- ❌ 别填
小技巧:如果
--adapters路径下有args.json,ms-swift会自动读取训练时的--model、--system等参数,你不用重复写!
3.2 推理体验:让回答更像人
--temperature(推荐填!)
- 它管什么:控制回答“随机性”,越小越稳定、越大越发散
- 怎么选:
- 写代码/答事实:
0(最严谨) - 创意写作/聊天:
0.7~0.9(有灵感但不胡说)
- 写代码/答事实:
- 小白口诀:
“求稳填
0,求活填0.7,绝不填1.5(会疯)”
--max_new_tokens(必填!)
- 它管什么:最多生成多少个字(token),防无限输出
- 怎么选:
- 简单问答:
512 - 长文生成:
1024~2048
- 简单问答:
- 小白警告:不填会卡死!默认可能无限生成。
--stream(推荐开!)
- 它管什么:开启“边想边说”,像ChatGPT一样逐字输出
- 怎么填:
--stream true(开)或--stream false(关) - 小白体验:
开
true:看着字一个个蹦出来,心里有底
❌ 关false:等10秒突然刷出一大段,容易误判卡死
4. 部署与评测参数:eval/deploy 必知参数(6个)
训好、推好,最后一步:让模型真正能用起来。
4.1 评测(eval):给模型打分
--eval_dataset(必填!)
- 它管什么:用哪个标准题库考模型
- 怎么填:填评测集名字,比如
gsm8k(数学题)、mmlu(综合知识)、ceval(中文考试) - 小白捷径:
去官方评测集列表 Ctrl+F搜关键词,比如搜“数学”看到
gsm8k,直接抄。
--infer_backend(必填!)
- 它管什么:用什么引擎跑推理,决定速度和显存
- 怎么选:
pt:PyTorch原生,兼容最好,新手首选vllm:最快!但需A100/V100/RTX4090+,显存≥24GBlmdeploy:国产优化,华为昇腾/NPU用户选它
- 小白口诀:
“没卡用
pt,有卡用vllm,国产卡用lmdeploy”
--eval_limit(推荐填!)
- 它管什么:只考前N道题,避免等1小时出结果
- 怎么填:
--eval_limit 100(考100题),新手从50起步 - 小白价值:1分钟出分,快速验证模型是否训对。
4.2 部署(deploy):一键变API
--infer_backend(同eval,必填!)
- 同上,部署也得选引擎,逻辑一致。
--host&--port(推荐填!)
- 它管什么:指定API服务跑在哪个IP和端口
- 怎么填:
--host 0.0.0.0 --port 8000 - 小白说明:
0.0.0.0= 所有设备都能访问(局域网内)8000= 常用端口,别用80(需root)或443(HTTPS)
部署成功后,浏览器打开
http://你的IP:8000就能看到WebUI界面!
5. 5类高频场景:小白可直接抄的命令模板
别再从零拼参数!下面5个模板覆盖90%新手需求,复制→替换模型/数据→回车运行。
5.1 模板1:单卡3090微调Qwen2.5-7B(最稳妥入门)
CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --dataset 'swift/self-cognition#500' \ --train_type lora \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 16 \ --torch_dtype bfloat16 \ --lora_rank 8 \ --lora_alpha 16 \ --target_modules all-linear \ --learning_rate 1e-4 \ --num_train_epochs 1 \ --max_length 2048 \ --output_dir output_qwen25_7b_lora \ --logging_steps 5 \ --save_steps 50 \ --eval_steps 50适配:3090/4090(24GB)
效果:1小时内训完,自我认知能力明显提升
5.2 模板2:单卡3090推理你训好的LoRA模型
CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output_qwen25_7b_lora/vx-xxx/checkpoint-50 \ --stream true \ --temperature 0 \ --max_new_tokens 1024 \ --infer_backend pt替换
checkpoint-50为你实际生成的文件夹名
运行后输入who are you?,看它是否记得自己是Qwen2.5
5.3 模板3:用vLLM加速推理(A100/4090用户)
CUDA_VISIBLE_DEVICES=0 \ swift infer \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output_qwen25_7b_lora/vx-xxx/checkpoint-50 \ --merge_lora true \ --infer_backend vllm \ --vllm_max_model_len 8192 \ --stream true \ --temperature 0.7 \ --max_new_tokens 2048
--merge_lora true:把LoRA权重合并进原模型,vLLM才能用
比pt快3~5倍,显存占用更低
5.4 模板4:快速评测模型数学能力(gsm8k)
CUDA_VISIBLE_DEVICES=0 \ swift eval \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output_qwen25_7b_lora/vx-xxx/checkpoint-50 \ --infer_backend pt \ --eval_dataset gsm8k \ --eval_limit 50 \ --eval_output_dir eval_results50道小学奥数题,2分钟出准确率(accuracy)
结果存于eval_results/,打开CSV看详细得分
5.5 模板5:部署成Web服务(局域网可用)
CUDA_VISIBLE_DEVICES=0 \ swift deploy \ --model Qwen/Qwen2.5-7B-Instruct \ --adapters output_qwen25_7b_lora/vx-xxx/checkpoint-50 \ --infer_backend vllm \ --host 0.0.0.0 \ --port 8000 \ --vllm_max_model_len 8192运行后,手机/电脑浏览器打开
http://服务器IP:8000
输入问题,实时获得回答,像用ChatGPT一样
6. 常见报错速查表:5分钟定位问题
参数填错?别翻日志大海捞针,对照这张表,秒级修复。
| 报错信息(关键词) | 可能原因 | 速查步骤 | 修复方案 |
|---|---|---|---|
CUDA out of memory | 显存不足 | 查--per_device_train_batch_size和--gradient_accumulation_steps | ↓ batch_size(如1→1),↑ grad_acc(如16→32) |
KeyError: 'q_proj' | --target_modules写错 | 查模型是否支持q_proj(Qwen用all-linear) | 改成--target_modules all-linear |
No module named 'vllm' | vLLM未安装 | 运行pip list | grep vllm | pip install vllm -U(A100/4090)或pip install lmdeploy -U(国产卡) |
FileNotFoundError: ... args.json | --adapters路径不对 | 进output/目录,ls看真实文件夹名 | 改成完整路径,如output/vx-20240501/checkpoint-100 |
ValueError: max_length must be > 0 | --max_length缺失或为0 | 检查sft命令是否漏了--max_length 2048 | 补上--max_length 2048(Qwen系列推荐值) |
终极技巧:遇到报错,先复制报错第一行,去ms-swift GitHub Issues 搜索,90%问题已有答案。
7. 总结:小白上手三步走
回顾一下,你不需要记住全部参数,只要抓住这三条主线:
7.1 训练:三件套保命
- 模型+数据+类型:
--model+--dataset+--train_type lora(必须同时存在) - 显存守门员:
--per_device_train_batch_size 1+--gradient_accumulation_steps 16(3090黄金组合) - LoRA三剑客:
--lora_rank 8+--lora_alpha 16+--target_modules all-linear(缺一不可)
7.2 推理:两要素通关
- 加载方式:训完LoRA,一定用
--adapters [checkpoint路径],别用--model - 体验开关:
--stream true(看输出) +--temperature 0(求稳) +--max_new_tokens 1024(防卡死)
7.3 部署评测:一配置见效
- 评测:
--eval_dataset gsm8k(数学)或mmlu(综合) +--infer_backend pt(兼容) - 部署:
--host 0.0.0.0 --port 8000(局域网可访问) +--infer_backend vllm(有卡必选)
现在,你已经比90%刚接触ms-swift的人更清楚参数怎么用了。下一步?
打开终端,复制模板1,把Qwen/Qwen2.5-7B-Instruct换成你想训的模型,回车!
5分钟后,你会看到第一行Step 1/...的日志——那一刻,你就正式踏入大模型微调的大门了。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。