Views
No views yet
ac1. Checkpoint saved
after training step 1 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 1,
3 "progress/batch": 1,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.04,
6 "puct/buffer_size": 24,
7 "puct/sampled_size": 8,
8 "puct/T": 512,
9 "puct/scale_last": 0.4736757010345858,
10 "puct/buffer_value/mean": -1.8328211685766622,
11 "puct/buffer_value/std": 0.18180659680923772,
12 "puct/buffer_value/min": -2.000000000000007,
13 "puct/buffer_value/max": -1.5245847789399152,
14 "puct/buffer_timestep/mean": -0.3333333333333333,
15 "puct/buffer_timestep/std": 0.4714045207910317,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 0.0,
18 "puct/buffer_construction_len/mean": 3417.9166666666665,
19 "puct/buffer_construction_len/std": 2395.3524604371323,
20 "puct/buffer_construction_len/min": 1000.0,
21 "puct/buffer_construction_len/max": 7850.0,
22 "puct/sampled_value/mean": -1.5994576058425545,
23 "puct/sampled_value/std": 0.06387249929322542,
24 "puct/sampled_value/min": -1.7396072180055766,
25 "puct/sampled_value/max": -1.5245847789399152,
26 "puct/sampled_timestep/mean": 0.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 0.0,
29 "puct/sampled_timestep/max": 0.0,
30 "puct/sampled_construction_len/mean": 1097.5,
31 "puct/sampled_construction_len/std": 152.78661590597522,
32 "puct/sampled_construction_len/min": 1000.0,
33 "puct/sampled_construction_len/max": 1360.0,
34 "time/sampling": 5312.9502284526825,
35 "env/all/ac_tokens_per_turn": 7900.046875,
36 "env/all/ob_tokens_per_turn": 2383.875,
37 "env/all/turns_per_episode": 1.0,
38 "env/all/total_episodes": 512,
39 "env/all/total_turns": 512,
40 "env/all/total_ac_tokens": 4044824,
41 "env/all/total_ob_tokens": 1220544,
42 "env/all/time/sampling_mean": 449.80367426527664,
43 "env/all/time/sampling_max": 616.3831102848053,
44 "env/all/time/env_step_mean": 2246.9546205699444,
45 "env/all/time/env_step_max": 4704.827773809433,
46 "env/all/reward/mean": 0.46749500152951345,
47 "env/all/reward/max": 0.662840213185418,
48 "env/all/reward/min": 0.0,
49 "env/all/format": 1.0,
50 "env/all/format/min": 1.0,
51 "env/all/format/max": 1.0,
52 "env/all/reward": 0.46749500152951345,
53 "env/all/correctness": 0.798828125,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 2.5751175260513217,
57 "env/all/raw_score/min": 1.5086592114951622,
58 "env/all/raw_score/max": 329.88746250361726,
59 "env/all/initial_raw_score": -1.5994576058425545,
60 "env/all/initial_raw_score/min": -1.7396072180055766,
61 "env/all/initial_raw_score/max": -1.5245847789399152,
62 "env/all/msg": "Success; raw_score=1.5178904779747535",
63 "env/all/parsed_code": "```python\n# EVOLVE-BLOCK-START\n\"\"\"Adaptive line search + perturbation-based local search with enhanced directional exploration for minimizing C1.\"\"\"\nimport time\nimport numpy as np\nfrom scipy import optimize\n\nlinprog = optimize.linprog\n\ndef get_good_direction_to_move_into(sequence):\n \"\"\"Returns a better direction using LP to find g with larger sum while keeping conv bounded.\"\"\"\n n = len(sequence)\n if n == 0:\n return None\n\n sum_sequence = np.sum(sequence)\n if sum_sequence <= 0.0:\n return None\n\n # Use the original sequence without scaling to retain control over sum and convolution behavior\n rhs = np.max(np.convolve(sequence, sequence))\n g_fun = solve_convolution_lp(sequence, rhs)\n if g_fun is None:\n return None\n\n sum_g = np.sum(g_fun)\n if sum_g <= 0.0:\n return None\n\n # Perform ternary search over t in [0, 1] to find optimal blend\n current_sequence = sequence\n g = g_fun\n best_t = 0.5\n left, right = 0.0, 1.0\n for _ in range(100): # 100 iterations for precision\n mid1 = left + (right - left)/3\n mid2 = right - (right - left)/3\n try:\n score1 = evaluate_sequence([(1 - mid1)*x + mid1*y for x, y in zip(current_sequence, g)])\n score2 = evaluate_sequence([(1 - mid2)*x + mid2*y for x, y in zip(current_sequence, g)])\n except:\n score1 = float('inf')\n score2 = float('inf')\n\n if score1 < score2:\n right = mid2\n else:\n left = mid1\n best_t = (left + right)/2\n new_sequence = [(1 - best_t)*x + best_t*y for x, y in zip(sequence, g)]\n return new_sequence\n\n\ndef solve_convolution_lp(f_sequence, rhs):\n \"\"\"Solves the LP: maximize sum(b) s.t. conv(f, b) <= rhs, b >= 0.\"\"\"\n n = len(f_sequence)\n if n == 0:\n return None\n\n c = -np.ones(n)\n a_ub = []\n b_ub = []\n for k in range(2 * n - 1):\n row = np.zeros(n)\n for i in range(n):\n j = k - i\n if 0 <= j < n:\n row[j] = f_sequence[i]\n a_ub.append(row)\n b_ub.append(rhs)\n a_ub_nonneg = -np.eye(n)\n b_ub_nonneg = np.zeros(n)\n a_ub = np.vstack([a_ub, a_ub_nonneg])\n b_ub = np.hstack([b_ub, b_ub_nonneg])\n result = linprog(\n c,\n A_ub=a_ub,\n b_ub=b_ub,\n bounds=[(0, 1000.0) for _ in range(n)],\n method='highs',\n options={\"time_limit\": 30.0, \"disp\": False}\n )\n if result.success:\n return result.x\n return None\n\n\ndef propose_candidate(seed=42, budget_s=1000, **kwargs):\n np.random.seed(seed)\n deadline = time.time() + budget_s - 10\n\n prev = globals().get(\"GLOBAL_BEST_CONSTRUCTION\")\n if prev is not None and isinstance(prev, (list, tuple, np.ndarray)) and len(prev) > 0:\n best_sequence = list(np.asarray(prev, dtype=float))\n else:\n # Start from a sequence with balanced values\n best_sequence = [np.random.uniform(0.1, 1.0) for _ in range(1000)]\n\n curr_sequence = best_sequence.copy()\n best_score = evaluate_sequence(best_sequence)\n\n # Attempt to use height_sequence_1 if available\n try:\n import sys\n sys.path.append('./') # Adjust if height_sequence_1 is in a different directory\n from height_sequence_1 import height_sequence_1\n best_sequence = list(height_sequence_1)\n curr_sequence = best_sequence.copy()\n best_score = evaluate_sequence(best_sequence)\n print(\"Initialized using height_sequence_1\")\n except:\n pass\n\n while time.time() < deadline:\n h_function = get_good_direction_to_move_into(curr_sequence)\n if h_function is None:\n # Diverse perturbation: multiple elements\n perturbations = np.random.normal(0, 0.1, size=len(curr_sequence))\n new_sequence = np.clip(curr_sequence + perturbations, 0.0001, 1000)\n curr_sequence = new_sequence\n else:\n curr_sequence = h_function\n\n try:\n curr_score = evaluate_sequence(curr_sequence)\n if curr_score < best_score:\n best_score = curr_score\n best_sequence = curr_sequence.copy()\n print(f\"New best score: {best_score}\")\n except:\n pass\n\n return [float(max(0.0, x)) for x in best_sequence]\n# EVOLVE-BLOCK-END\n```",
64 "env/all/time/policy": 449.80367426527664,
65 "env/all/time/policy/min": 188.4455590248108,
66 "env/all/time/policy/max": 616.3831102848053,
67 "env/all/time/env_step": 2246.9546205699444,
68 "env/all/time/env_step/min": 0.004917144775390625,
69 "env/all/time/env_step/max": 4704.827773809433,
70 "env/all/time/reward_compute": 4.3120235204696655e-07,
71 "env/all/time/reward_compute/min": 2.3096799850463867e-07,
72 "env/all/time/reward_compute/max": 1.0281801223754883e-06,
73 "env/all/by_group/frac_mixed": 1.0,
74 "env/all/by_group/frac_all_good": 0.0,
75 "env/all/by_group/frac_all_bad": 0.0,
76 "advantage/mean": 0.021997081115841866,
77 "advantage/min": -1.0,
78 "advantage/max": 5.037008762359619,
79 "time/assemble_training_data": 4.990358591079712,
80 "time/kl_vs_base": 126.09358143806458,
81 "kl_policy_base": 0.0005742748035117984,
82 "time/train": 955.212381362915,
83 "time/save_checkpoint": 13.72459077835083,
84 "time/total": 6414.61412525177
85}[2026-07-09T06:24:18+00:00] job=1812630 node=node-14 ngpu=3 ntrain=1 replicas=2 flash_attn=no
[2026-07-09T09:14:17+00:00] job=1813129 node=node-28 ngpu=3 ntrain=1 replicas=2 flash_attn=yes
[2026-07-09T13:46:36+00:00] job=1813130 node=node-22 ngpu=6 ntrain=2 replicas=4 flash_attn=yes