Views
No views yet
ac1. Checkpoint saved
after training step 9 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 9,
3 "progress/batch": 9,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.2,
6 "puct/buffer_size": 152,
7 "puct/sampled_size": 8,
8 "puct/T": 4608,
9 "puct/scale_last": 0.4919567880238671,
10 "puct/buffer_value/mean": -1.5621475409584935,
11 "puct/buffer_value/std": 0.13788949733507785,
12 "puct/buffer_value/min": -2.000000000000007,
13 "puct/buffer_value/max": -1.5063036919506338,
14 "puct/buffer_timestep/mean": 3.736842105263158,
15 "puct/buffer_timestep/std": 2.7499685216027645,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 8.0,
18 "puct/buffer_construction_len/mean": 1394.671052631579,
19 "puct/buffer_construction_len/std": 1294.4347210488395,
20 "puct/buffer_construction_len/min": 1000.0,
21 "puct/buffer_construction_len/max": 7850.0,
22 "puct/sampled_value/mean": -1.506304225052656,
23 "puct/sampled_value/std": 5.331020216658988e-07,
24 "puct/sampled_value/min": -1.5063047581546853,
25 "puct/sampled_value/max": -1.5063036919506338,
26 "puct/sampled_timestep/mean": 8.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 8.0,
29 "puct/sampled_timestep/max": 8.0,
30 "puct/sampled_construction_len/mean": 1000.0,
31 "puct/sampled_construction_len/std": 0.0,
32 "puct/sampled_construction_len/min": 1000.0,
33 "puct/sampled_construction_len/max": 1000.0,
34 "time/sampling": 5282.220097541809,
35 "env/all/ac_tokens_per_turn": 7746.01171875,
36 "env/all/ob_tokens_per_turn": 2829.75,
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": 3965958,
41 "env/all/total_ob_tokens": 1448832,
42 "env/all/time/sampling_mean": 256.6839302079752,
43 "env/all/time/sampling_max": 333.8063895702362,
44 "env/all/time/env_step_mean": 2418.478661981877,
45 "env/all/time/env_step_max": 4959.249914646149,
46 "env/all/reward/mean": 0.5207811705284506,
47 "env/all/reward/max": 0.6638767459078935,
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.5207811705284506,
53 "env/all/correctness": 0.8125,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 1.5882030501940025,
57 "env/all/raw_score/min": 1.5063036919506336,
58 "env/all/raw_score/max": 4.9804478362403914,
59 "env/all/initial_raw_score": -1.5063042250526562,
60 "env/all/initial_raw_score/min": -1.5063047581546853,
61 "env/all/initial_raw_score/max": -1.5063036919506338,
62 "env/all/msg": "Success; raw_score=1.5063036919506338",
63 "env/all/parsed_code": "```python\n# EVOLVE-BLOCK-START\n\"\"\"Enhanced Multi-Strategy Optimization with Adaptive Perturbation and Constraint Expansion for C1 Autoconvolution Minimization\"\"\"\nimport time\nimport numpy as np\nfrom scipy.optimize import linprog\nimport copy\nimport random\nimport cvxpy as cp\n\ndef propose_candidate(seed=42, budget_s=1000, **kwargs):\n np.random.seed(seed)\n deadline = time.time() + budget_s - 10\n\n # Start from known best construction if it exists\n prev = globals().get(\"height_sequence_1\", None)\n if prev is not None and np.isscalar(prev):\n prev = []\n for _ in range(1000):\n prev.append(prev)\n if prev is not None and len(prev) > 0:\n best_sequence = list(np.asarray(prev, dtype=float))\n else:\n n = 1000\n # Start with a sequence that has a few high values and some variations\n base = np.zeros(n)\n base[:50] = 0.02\n base[50:100] = 0.01\n base[100:] = 0.005\n gauss = np.random.normal(0, 0.01, n)\n best_sequence = [max(0.0, base[i] + gauss[i]) for i in range(n)]\n \n current_sequence = best_sequence.copy()\n best_score = evaluate_sequence(current_sequence)\n\n def get_good_direction_to_move_into(sequence):\n \"\"\"Computes a better sequence using advanced LP with adaptive constraints and optimized step size.\"\"\"\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 normalized_sequence = [x * np.sqrt(2 * n) / sum_sequence for x in sequence]\n conv = np.convolve(normalized_sequence, normalized_sequence)\n max_b = np.max(conv)\n\n # Choose top K positions where convolution is tight\n top_k = max(1, int(len(conv) * 0.1))\n tight_positions = np.argsort(conv)[-top_k:]\n\n # Solve LP with reduced constraints using CVXPY\n g_fun = solve_convolution_lp(normalized_sequence, max_b, tight_positions)\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 normalized_g = [x * np.sqrt(2 * n) / sum_g for x in g_fun]\n\n # Binary search for optimal t to minimize the evaluation\n def objective(t):\n new_sequence = [(1 - t) * x + t * y for x, y in zip(sequence, normalized_g)]\n return evaluate_sequence(new_sequence)\n\n # Try range [0.0, 0.5] for t\n left, right = 0.0, 0.5\n for _ in range(50):\n mid = (left + right) / 2\n val_mid = objective(mid)\n val_left = objective(left)\n val_right = objective(right)\n\n if val_mid < val_left:\n right = mid\n else:\n left = mid\n\n best_t = (left + right) / 2\n new_sequence = [(1 - best_t) * x + best_t * y for x, y in zip(sequence, normalized_g)]\n return new_sequence\n\n def solve_convolution_lp(f_sequence, rhs, tight_positions):\n \"\"\"Solves LP with subset of tight positions using CVXPY for better performance.\"\"\"\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\n # Add tight constraints\n for k in tight_positions:\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\n # Add non-negativity constraints\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\n x = cp.Variable(n)\n constraints = [a_ub @ x <= b_ub]\n objective = cp.Minimize(c @ x)\n problem = cp.Problem(objective, constraints)\n try:\n result = problem.solve(solver=cp.GLPK)\n if result is not None and problem.status == cp.OPTIMAL:\n return x.value\n except:\n pass\n return None\n\n def perturb_sequence(seq):\n \"\"\"Perturb a random subset of elements to break local optima.\"\"\"\n n = len(seq)\n if n == 0:\n return seq\n # Randomly select 5 elements to perturb\n indices = np.random.choice(n, size=5, replace=False)\n for idx in indices:\n # Small random change with adaptive variance\n new_val = max(0.0, seq[idx] + np.random.normal(0, 0.01))\n seq = [new_val if i == idx else seq[i] for i in range(n)]\n return seq\n\n while time.time() < deadline:\n h_function = get_good_direction_to_move_into(current_sequence)\n if h_function is None:\n current_sequence = perturb_sequence(current_sequence)\n else:\n current_sequence = h_function\n\n try:\n curr_score = evaluate_sequence(current_sequence)\n if curr_score < best_score:\n best_score = curr_score\n best_sequence = current_sequence.copy()\n print(f\"New best: {best_score}\")\n except Exception:\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": 256.6839302079752,
65 "env/all/time/policy/min": 71.28720760345459,
66 "env/all/time/policy/max": 333.8063895702362,
67 "env/all/time/env_step": 2418.478661981877,
68 "env/all/time/env_step/min": 0.009191751480102539,
69 "env/all/time/env_step/max": 4959.249914646149,
70 "env/all/time/reward_compute": 4.5588240027427673e-07,
71 "env/all/time/reward_compute/min": 2.5704503059387207e-07,
72 "env/all/time/reward_compute/max": 1.2218952178955078e-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.008521709591150284,
77 "advantage/min": -1.0,
78 "advantage/max": 1.4083149433135986,
79 "time/assemble_training_data": 8.754514932632446,
80 "time/kl_vs_base": 88.7410044670105,
81 "kl_policy_base": 0.0008150297217071056,
82 "time/train": 496.31434631347656,
83 "time/save_checkpoint": 15.648322105407715,
84 "time/total": 5893.353670597076
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