#!/usr/bin/env bash # 层 1:SFT 基线训练(远程 gpu-a800-060 专用;本地不跑训练)。 # # 用法(tmux 内执行,日志实时可查): # bash scripts/train_sft.sh sanity # 50 步冒烟:看首样本自检 + loss 是否从 ~2-3 下降 # bash scripts/train_sft.sh # 正式:1k 子集 1 epoch # # 前置检查清单: # 1. nvidia-smi 确认下方 GPUS 四张卡空闲(只许用 8 卡中的 4 张,严禁自动选卡) # 2. data/ 下已有两个文件(gitignore 不随 git 走,本地 scp 上来): # scp data/dapo-math-17k-unique.parquet data/teacher_completions_dapo1k_minimax-m3.jsonl \ # <远程>:/data/zym/ars-opd-rebuild/data/ # 3. 代码是最新:git -C /data/zym/ars-opd-rebuild pull set -euo pipefail cd "$(dirname "$0")/.." # 锚定仓库根:py 内 data/... 相对路径以此为基准 GPUS=0,1,2,3 # ⚠️ 改这里前先 nvidia-smi MODE=${1:-full} export CUDA_VISIBLE_DEVICES=$GPUS export PYTHONUNBUFFERED=1 # 禁止日志缓存(CLAUDE.md §5) export PYTORCH_ALLOC_CONF=expandable_segments:True # 变长序列 batch 易碎片化,按需扩段 export HF_ENDPOINT=${HF_ENDPOINT:-https://hf-mirror.com} export HF_HOME=${HF_HOME:-/data/zym/hf_cache} # 模型缓存落 /data,根分区已满 # hf-mirror 不代理 HF Xet CAS(大权重走 Xet 会 401,见 train_whitebox.sh 详注) export HF_HUB_DISABLE_XET=1 torchrun --nproc_per_node=4 --master_port=29571 scripts/train_sft.py "$MODE"