File size: 2,877 Bytes
2bc1c6b
3e04895
9bd7482
3e04895
9bd7482
78bc8da
 
 
 
3e04895
9bd7482
78bc8da
 
 
 
 
 
9bd7482
 
78bc8da
3e04895
 
78bc8da
3e04895
9bd7482
78bc8da
3e04895
 
78bc8da
812d15a
 
78bc8da
3e04895
9bd7482
78bc8da
 
 
 
 
 
 
 
 
 
3e04895
2bc1c6b
 
 
3e04895
78bc8da
3e04895
 
78bc8da
3e04895
9bd7482
78bc8da
3e04895
 
78bc8da
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
.PHONY: setup smoke collect build-data distill train-s1 calibrate eval eval-v2 eval-25 eval-cpu fetch-games agent-local push-hf test clean

PY ?= python3.13

setup:            ## create venv and install deps (Python 3.12+ required)
	$(PY) -m venv .venv
	.venv/bin/pip install -U pip
	.venv/bin/pip install -r requirements.txt
	@echo ">> done. activate with: source .venv/bin/activate"

smoke:            ## FULL local bring-up on the built-in mock game (no GPU, no downloads)
	$(PY) data/collect_selfplay.py --config configs/collect.yaml
	$(PY) data/build_dataset.py --in data/traces --out data/dataset
	$(PY) train/distill_alignment.py --config configs/train.yaml
	$(PY) train/train_system1.py --config configs/train.yaml
	$(PY) train/calibrate_rlcd.py --config configs/train.yaml
	$(PY) train/evaluate_local.py --config configs/train.yaml --games mock-pushbox

collect:          ## self-play trace collection (mock game or public games)
	$(PY) data/collect_selfplay.py --config configs/collect.yaml

build-data:       ## traces -> decision-question training samples
	$(PY) data/build_dataset.py --in data/traces --out data/dataset

distill:          ## stage A: align student (image+text) states with the frozen teacher's vision tower
	$(PY) train/distill_alignment.py --config configs/train.yaml

train-s1:         ## stage B: train System-1 decision heads (choice CE, NanoJev recipe)
	$(PY) train/train_system1.py --config configs/train.yaml

calibrate:        ## stage C: RLCD calibration + temperature fitting (absorbed from Laya)
	$(PY) train/calibrate_rlcd.py --config configs/train.yaml

eval:             ## evaluate the hybrid agent (mock game by default)
	$(PY) train/evaluate_local.py --config configs/train.yaml --games mock-pushbox

eval-v2:          ## one-command eval of the released v2 checkpoint (auto backend; see ops/run_eval.py)
	$(PY) ops/run_eval.py --checkpoint hf:tchbcb/qwenjev@t4_assets_v2/checkpoints --games mock

eval-25:          ## evaluate on the 25 public games (needs arc-agi + environment_files, see train.md §4.1)
	$(PY) ops/run_eval.py --checkpoint hf:tchbcb/qwenjev@t4_assets_v2/checkpoints --games all25

eval-cpu:         ## CPU harness test (tiny backend, no checkpoint, 60 actions)
	$(PY) ops/run_eval.py --backend tiny --no-checkpoint --games mock --max-actions 60

fetch-games:      ## cache all 25 public games locally (anonymous arcade key, ~3MB, no Kaggle account)
	$(PY) ops/fetch_games.py

agent-local:      ## run the hybrid agent locally via the ARC-AGI-3-Agents runner
	$(PY) ../ARC-AGI-3-Agents/main.py --agent=qwenjevagent --game=ls20

push-hf:          ## push this repo to HuggingFace (HF_TOKEN from env or .secrets)
	$(PY) scripts/push_hf.py

test:             ## unit tests (CPU-only, no downloads)
	$(PY) -m pytest tests -q

clean:
	rm -rf __pycache__ .pytest_cache build data/traces data/dataset eval_report.json