File size: 3,118 Bytes
bc35a94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
76
77
78
79
80
81
PYTHON ?= python
MODEL ?= Qwen/Qwen2.5-Coder-7B-Instruct
GROUP_SIZE ?= 4
MAX_TURNS ?= 12
NUM_STEPS ?= 100
SCENARIOS ?= hpc_outage,hpc_munge,hpc_pid_stale,hpc_gpu_ecc,hpc_nfs_stale,hpc_ood_apache
ENV_URLS ?=
RUN_DIR ?= ./runs/hpc_grpo

.PHONY: help install bench gold eval demo train train-remote dry dry-remote serve clean reward-demo

help:
	@echo "Targets for EnterpriseHPC-v0"
	@echo "  make install       install runtime + dev deps (pip install -e '.[dev]')"
	@echo "  make install-train install runtime + dev + gpu training deps + unsloth"
	@echo "  make bench         reset-latency benchmark (200 iterations)"
	@echo "  make gold          prove every scenario is solvable (deterministic)"
	@echo "  make eval          run gold/random/bad policies + leaderboard.md"
	@echo "  make demo          gold trajectory run with transcripts printed"
	@echo "  make dry           local dry-run training rollout (no gpu)"
	@echo "  make dry-remote    dry-run against a hosted openenv space (set ENV_URLS=...)"
	@echo "  make train         full grpo training locally with qwen2.5-coder-7b"
	@echo "  make train-remote  full grpo training against ENV_URLS (hf spaces)"
	@echo "  make serve         run the openenv server on :8000"
	@echo "  make reward-demo   gpu-free curriculum reward curve png (no bwrap required)"
	@echo "  make clean         remove runs/ caches"

install:
	$(PYTHON) -m pip install --upgrade pip setuptools wheel
	$(PYTHON) -m pip install -e '.[dev]'

install-train:
	$(PYTHON) -m pip install -e '.[dev,train]'
	$(PYTHON) -m pip install --no-deps 'unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git'

bench:
	$(PYTHON) -m bench.bench_reset -n 200

gold:
	$(PYTHON) -m tools.verify_gold_trajectory -v

eval:
	$(PYTHON) -m eval.eval_suite --trials 3 --scenarios $(SCENARIOS) --output-dir ./runs/eval

demo: gold
	@echo "see docs/pitch.md for the 3-minute demo script"

dry:
	$(PYTHON) -m training.train_hpc_outage --dry-run \
	  --group-size $(GROUP_SIZE) --max-turns $(MAX_TURNS) \
	  --scenarios $(SCENARIOS) --output-dir $(RUN_DIR)

dry-remote:
	@test -n "$(ENV_URLS)" || (echo "set ENV_URLS=https://... to target a hosted space" && exit 1)
	$(PYTHON) -m training.hpc_openenv_gemma --dry-run \
	  --env-urls $(ENV_URLS) --group-size $(GROUP_SIZE) --max-turns $(MAX_TURNS) \
	  --scenarios $(SCENARIOS) --output-dir $(RUN_DIR)

train:
	$(PYTHON) -m training.train_hpc_outage \
	  --model $(MODEL) --group-size $(GROUP_SIZE) --max-turns $(MAX_TURNS) \
	  --num-train-steps $(NUM_STEPS) --scenarios $(SCENARIOS) \
	  --output-dir $(RUN_DIR)

train-remote:
	@test -n "$(ENV_URLS)" || (echo "set ENV_URLS=https://... to target a hosted space" && exit 1)
	$(PYTHON) -m training.hpc_openenv_gemma \
	  --env-urls $(ENV_URLS) --model $(MODEL) \
	  --group-size $(GROUP_SIZE) --max-turns $(MAX_TURNS) \
	  --num-train-steps $(NUM_STEPS) --scenarios $(SCENARIOS) \
	  --output-dir $(RUN_DIR)

serve:
	$(PYTHON) -m server.app --host 0.0.0.0 --port 8000

reward-demo:
	$(PYTHON) -m tools.reward_curve_demo --output-dir ./runs/reward_demo

clean:
	rm -rf runs __pycache__ **/__pycache__ .pytest_cache