← ClaudeAtlas

ms-swift-traininglisted

当需要用 ms-swift 进行 LLM 训练或编写/审阅训练脚本时使用,覆盖 SFT、DPO、GRPO,尤其是 9B 级 full training 的 bf16、DeepSpeed zero3、save_only_model、数据 JSONL 校验、max length 过滤、显存排错、训练前 dry-run、训练后 checkpoint 检查、rjob GPU 资源脚本和避免破坏共享 conda 环境。
black-yt/skills · ★ 2 · AI & Automation · score 63
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