#!/bin/bash # x6c = x6 continued on 30k replayed x6 items + goal-contrast twins (x3); then suite C x2. Runs after the v6 experiment. cd /home/ckl/projects/S/laya && source env.sh O=finetune/out; P=.venv/bin/python until grep -q "V6_DONE\|training interrupted" $O/v6.log; do sleep 60; done export LAYA_FMT=v5 LAYA_MAXLEN=1024 LAYA_HEAD=768 MAX_TARGETS=40 FINAL_P=0.2 NOUL=1 PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True COMPILE=0 CKPT=1 mkdir -p $O/items_ctr $O/items_x6c LAYA_BASE=$PWD/$O/laya-browser-x6 $P finetune/build_items.py $O/pages.jsonl /dev/null $O/items_ctr/ $O/contrast_cases.jsonl 2>&1 | grep -v Warn | tail -2 $P - <<'PY' import torch, random a = torch.load("finetune/out/items_x6/train_items.pt", weights_only=False); b = torch.load("finetune/out/items_ctr/train_items.pt", weights_only=False) random.Random(7).shuffle(a); items = a[:30000] + b * 3; random.Random(0).shuffle(items) torch.save(items, "finetune/out/items_x6c/train_items.pt"); print("x6c items: 30000 replay +", len(b), "x3 contrast =", len(items)) PY echo "== train x6c" LAYA_BASE=$PWD/$O/laya-browser-x6 $P finetune/train.py $O/items_x6c/train_items.pt $O/laya-browser-x6c 1 2>&1 | grep --line-buffered -E "=== epoch|saved|Error|Traceback" [ -f $O/laya-browser-x6c/model.safetensors ] || { echo "training interrupted"; exit 0; } cp $O/laya-browser-x6/rl_agent_config.json /tmp/x6cfg.json; $P - <<'PY' import json; a=json.load(open("finetune/out/laya-browser-x6c/rl_agent_config.json")); b=json.load(open("/tmp/x6cfg.json")) a["temperature"]=b.get("temperature", a["temperature"]); json.dump(a, open("finetune/out/laya-browser-x6c/rl_agent_config.json","w"), indent=2) PY REPEATS=2 finetune/isolated.sh bash finetune/run_suiteC.sh $PWD/$O/laya-browser-x6c $PWD/$O/laya-browser-x6 2>&1 | grep -E "^==" echo CTR_DONE