#!/usr/bin/env bash # 层 2:white-box OPD 训练(远程 gpu-a800-060 专用;本地不跑训练)。 # # 用法(tmux 内执行,日志实时可查): # bash scripts/train_whitebox.sh sanity # 50 步冒烟:看首 prompt 自检 + KL loss + # # 生成 token 数;预期见 loss 毛刺(梯度爆炸实况) # bash scripts/train_whitebox.sh # 正式:1k 子集 1 epoch # # 前置检查清单: # 1. nvidia-smi 确认下方 GPUS 四张卡空闲(只许用 8 卡中的 4 张,严禁自动选卡)。 # ⚠️ 白盒显存比层 1 紧:student 训练全套 + teacher(4B) 推理副本 + **两份**全词表 # logits(student/teacher),§5 估算 B=4/T=2048 起步安全,但首跑必须盯 nvidia-smi; # 若 OOM,降 per_device_train_batch_size 到 2,仍不够再开 gradient_checkpointing # (改 DistillConfig,注意 checkpointing 与 generate 的 use_cache 交互)。 # 2. data/dapo-math-17k-unique.parquet 已在(层 2 无需 teacher 缓存,纯 prompt-only): # scp data/dapo-math-17k-unique.parquet <远程>:/data/zym/ars-opd-rebuild/data/ # 3. 代码最新:git -C /data/zym/ars-opd-rebuild pull # 4. 首跑会下载 teacher Qwen3-4B(GB 级)到 HF_HOME,确保 /data 有空间 set -euo pipefail cd "$(dirname "$0")/.." # 锚定仓库根 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 # 变长生成序列易碎片化,按需扩段 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 会直连 # cas-server.xethub.hf.co 并返 401(2026-07-19 teacher 4B 下载实撞)。禁用 Xet # 退回经典 HTTP/LFS 下载(镜像支持)。若仍不行:pip uninstall hf_xet export HF_HUB_DISABLE_XET=1 torchrun --nproc_per_node=4 --master_port=29572 scripts/train_whitebox.py "$MODE"