ms-swift-traininglisted
Install: claude install-skill black-yt/skills
# ms-swift Training
## 核心原则
- 9B 级 full training 默认使用 `bf16 + DeepSpeed zero3 + save_only_model`。
- 不要把 LoRA 参数混进 full training;full training 不写 LoRA rank/alpha/target modules。
- 输出目录不要放在代码仓库里;放到 base checkpoint 同级或专用的大容量模型目录。
- 训练数据先做 JSONL 格式校验、字段校验和 max length 过滤,再启动训练。
- 失败、skip、OOM 或 dry-run 不应标记数据已消费;只有训练成功后才归档或标记 consumed。
- 不要修改共享 conda 环境,不要升级 `torch`、`vllm`、`transformers`、`ms-swift`。如必须补包,先询问;确需安装单包时优先 `pip install --no-deps <pkg>`。
- 版本参数以当前环境的 `swift sft --help`、`swift rlhf --help` 和项目已跑通脚本为准。旧版本不支持 `--train_type full` 时再确认是否应使用 `--tuner_type full`,不要盲目同时写两个。
## 训练类型选择
- **SFT**:普通 chat messages 训练,例如 solver trace、judge trace、direct LLM stage trace。
- **DPO**:preference pairs 训练,例如 chosen/rejected challenger behavior。DPO 显存压力大于 SFT。
- **GRPO**:带 reward/rollout 的强化学习式训练,资源压力来自 rollout、生成长度、reward 计算和并发采样。先 smoke test。
SFT 和 DPO 不要共用完全相同超参。默认参考:
| 训练 | learning rate | grad acc | max length | 备注 |
| --- | ---: | ---: | ---: | --- |
| SFT | `1e-5` | `16` | `8192-10240` | 9B full 也用 zero3 |
| DPO | `5e-7` | `8` | `4096` 起步 | 9B full DPO 必须 zero3 |
| GRPO | `5e-7` 起步 | `8` 起步 | 先短 | 重点控 generation 和 reward 成本 |
## 通用环境模板
训练脚本开头:
```bash
#!/usr/bin/env bash
set -eo pipefail
export NPROC_PER_NODE="${NPROC_PER_NODE:-2}"
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0,1}"
export PYTORCH_CUDA_ALLOC_CONF="${PYTORCH_CUDA_ALLOC_CONF:-expandable_segments:True}"
export CUDA_HOME="${CUDA_HOME:-/abs/path/to/cuda}"
export PATH="$CUDA_HOME/bin:$PATH"
export LD_LIBRA