exp(dagger-deploy): 采集支持 fb_gain+safety(训练分布=部署分布);新增 base_dag2 配置(同 base)
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"model": {"d": 192, "heads": 8, "ff": 768, "enc": 4, "dec": 4},
|
||||||
|
"train": {
|
||||||
|
"batch": 1024, "lr": 1e-3, "warmup": 1000, "steps": 24000, "wd": 0.01, "betas": [0.9, 0.95],
|
||||||
|
"amp": "bf16", "grad_clip": 1.0,
|
||||||
|
"w_mf": 1.0, "w_fk": 0.5, "w_smooth": 0.05, "w_value": 0.1, "w_sub": 0.1,
|
||||||
|
"p_neq": 0.5, "p_edge": 0.1, "p_neq_warm": 5000, "fk_tmax": 0.3, "fk_caps": 96,
|
||||||
|
"ema": 0.999, "aug_pre_drop": 0.15, "aug_pre_sigma": 0.1, "aug_dq_sigma": 0.3,
|
||||||
|
"ckpt_min": 10, "eval_every": 2000, "eval_tasks": 512, "log_every": 50, "patience_evals": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,6 +28,8 @@ def main():
|
|||||||
ap.add_argument('--parts', type=int, default=8); ap.add_argument('--out', required=True)
|
ap.add_argument('--parts', type=int, default=8); ap.add_argument('--out', required=True)
|
||||||
ap.add_argument('--bs', type=int, default=64)
|
ap.add_argument('--bs', type=int, default=64)
|
||||||
ap.add_argument('--device', default='cuda' if torch.cuda.is_available() else 'cpu')
|
ap.add_argument('--device', default='cuda' if torch.cuda.is_available() else 'cpu')
|
||||||
|
ap.add_argument('--fb_gain', type=float, default=0.0, help='部署分布采集:目标反馈增益(与 rollout 一致)')
|
||||||
|
ap.add_argument('--safety', type=int, default=0, help='部署分布采集:是否开安全层')
|
||||||
a = ap.parse_args()
|
a = ap.parse_args()
|
||||||
gap_min = float(os.environ.get('MIN_GAP_MM') or 3)
|
gap_min = float(os.environ.get('MIN_GAP_MM') or 3)
|
||||||
os.makedirs(a.out, exist_ok=True)
|
os.makedirs(a.out, exist_ok=True)
|
||||||
@@ -41,7 +43,7 @@ def main():
|
|||||||
for i in range(0, len(tasks), a.bs):
|
for i in range(0, len(tasks), a.bs):
|
||||||
tb = tasks[i:i + a.bs]
|
tb = tasks[i:i + a.bs]
|
||||||
with torch.no_grad():
|
with torch.no_grad():
|
||||||
_, per = rollout(model, kin, tb, a.device, K=8, safety=False, seed=a.seed * 100003 + i, return_traj=True)
|
_, per = rollout(model, kin, tb, a.device, K=8, safety=bool(a.safety), seed=a.seed * 100003 + i, return_traj=True, fb_gain=a.fb_gain)
|
||||||
tr = per['traj'].to(a.device) # [B,T,6]
|
tr = per['traj'].to(a.device) # [B,T,6]
|
||||||
B, Tn, _ = tr.shape
|
B, Tn, _ = tr.shape
|
||||||
_, T, R, _, _ = tasks_to_tensors(tb, a.device)
|
_, T, R, _, _ = tasks_to_tensors(tb, a.device)
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ for ((r=1; r<=R; r++)); do
|
|||||||
SAMPLES="$SAMPLES $SD"
|
SAMPLES="$SAMPLES $SD"
|
||||||
if [ -f $OUT/done ]; then echo "[dagger] 第 $r 轮已完成,跳过"; CK=$($PY -m ml.common.ckpt pick $OUT); continue; fi
|
if [ -f $OUT/done ]; then echo "[dagger] 第 $r 轮已完成,跳过"; CK=$($PY -m ml.common.ckpt pick $OUT); continue; fi
|
||||||
if [ -f $D/collect.json ]; then echo "[dagger] 第 $r 轮起点已采集,跳过"
|
if [ -f $D/collect.json ]; then echo "[dagger] 第 $r 轮起点已采集,跳过"
|
||||||
else echo "[dagger] 第 $r 轮:用 $CK 闭环采起点($N 题)"; $PY -m ml.dagger.collect --ckpt $CK --samples ml/data/samples --n $N --seed $r --parts $P --out $D; fi
|
else echo "[dagger] 第 $r 轮:用 $CK 闭环采起点($N 题)"; $PY -m ml.dagger.collect --ckpt $CK --samples ml/data/samples --n $N --seed $r --parts $P --out $D --fb_gain ${FB_GAIN:-0} --safety ${DAG_SAFETY:-0}; fi
|
||||||
cat $D/collect.json
|
cat $D/collect.json
|
||||||
pids=()
|
pids=()
|
||||||
for f in $D/tasks_*.jsonl; do
|
for f in $D/tasks_*.jsonl; do
|
||||||
|
|||||||
Reference in New Issue
Block a user