File size: 2,214 Bytes
d91766b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
#SBATCH -J bd-base-sweep
#SBATCH -o /home/l/liyj/shiying/hku_diffusion_dllm/runs/basecode/%x_%j.out
#SBATCH -e /home/l/liyj/shiying/hku_diffusion_dllm/runs/basecode/%x_%j.err
#SBATCH -N 1
#SBATCH --partition=normal
#SBATCH --cpus-per-task=2
#SBATCH --mem=4G
#SBATCH -t 00:20:00
#SBATCH --open-mode=append

set -euo pipefail

PROJECT=/home/l/liyj/shiying/hku_diffusion_dllm
cd "$PROJECT"

RUN_DIR="$PROJECT/runs/basecode"
mkdir -p "$RUN_DIR"

OUT_JSONL="$RUN_DIR/sweep_${SLURM_JOB_ID}.jsonl"
LATEST="$RUN_DIR/latest_sweep.jsonl"

echo "[info] started_at=$(date -Iseconds)"
echo "[info] node=$(hostname)"
echo "[info] output=$OUT_JSONL"

run_one() {
  local method="$1"
  local steps="$2"
  local block_size="$3"
  local num_blocks="$4"
  local remask_ratio="$5"
  local use_cache="$6"
  local tmp
  tmp="$(mktemp "$RUN_DIR/tmp_${method}_${steps}_${block_size}_${num_blocks}_XXXX.json")"
  local args=(python3 -m basecode.blockdiff.cli --method "$method" --steps "$steps" --block-size "$block_size" --num-blocks "$num_blocks" --remask-ratio "$remask_ratio" --output "$tmp")
  if [ "$use_cache" = "true" ]; then
    args+=(--use-cache)
  fi
  "${args[@]}" >/dev/null
  python3 - "$tmp" "$OUT_JSONL" "$method" "$steps" "$block_size" "$num_blocks" "$remask_ratio" "$use_cache" <<'PY'
import json
import sys
from pathlib import Path

tmp, out, method, steps, block_size, num_blocks, remask_ratio, use_cache = sys.argv[1:]
payload = json.loads(Path(tmp).read_text())
payload["sweep"] = {
    "method": method,
    "steps": int(steps),
    "block_size": int(block_size),
    "num_blocks": int(num_blocks),
    "remask_ratio": float(remask_ratio),
    "use_cache": use_cache == "true",
}
with open(out, "a", encoding="utf-8") as f:
    f.write(json.dumps(payload, ensure_ascii=False) + "\n")
Path(tmp).unlink(missing_ok=True)
PY
}

for block_size in 8 16 32; do
  run_one confidence 6 "$block_size" 1 0.5 false
  run_one dmax 4 "$block_size" 1 0.25 false
  run_one speculative 6 "$block_size" 1 0.5 true
done

for num_blocks in 2 4 8; do
  run_one multiblock 8 16 "$num_blocks" 0.5 true
done

ln -sfn "$(basename "$OUT_JSONL")" "$LATEST"
echo "[info] latest=$LATEST"
echo "[info] finished_at=$(date -Iseconds)"