Views
No views yet
ac1. Checkpoint saved
after training step 12 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 12,
3 "progress/batch": 12,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.26,
6 "puct/buffer_size": 200,
7 "puct/sampled_size": 8,
8 "puct/T": 6144,
9 "puct/scale_last": 0.5734837763976226,
10 "puct/buffer_value/mean": -1.558129060268298,
11 "puct/buffer_value/std": 0.13405032239109563,
12 "puct/buffer_value/min": -2.0797874683482562,
13 "puct/buffer_value/max": -1.5063036919506336,
14 "puct/buffer_timestep/mean": 5.24,
15 "puct/buffer_timestep/std": 3.6141942393844855,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 11.0,
18 "puct/buffer_construction_len/mean": 1299.95,
19 "puct/buffer_construction_len/std": 1140.9812125972978,
20 "puct/buffer_construction_len/min": 1000.0,
21 "puct/buffer_construction_len/max": 7850.0,
22 "puct/sampled_value/mean": -1.5063036919506336,
23 "puct/sampled_value/std": 1.1102230246251565e-16,
24 "puct/sampled_value/min": -1.5063036919506338,
25 "puct/sampled_value/max": -1.5063036919506336,
26 "puct/sampled_timestep/mean": 11.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 11.0,
29 "puct/sampled_timestep/max": 11.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": 5295.804997205734,
35 "env/all/ac_tokens_per_turn": 8061.67578125,
36 "env/all/ob_tokens_per_turn": 2713.125,
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": 4127578,
41 "env/all/total_ob_tokens": 1389120,
42 "env/all/time/sampling_mean": 271.0107058212161,
43 "env/all/time/sampling_max": 356.67661237716675,
44 "env/all/time/env_step_mean": 2293.804868347943,
45 "env/all/time/env_step_max": 4953.623883008957,
46 "env/all/reward/mean": 0.48654001511433104,
47 "env/all/reward/max": 0.663879065966313,
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.48654001511433104,
53 "env/all/correctness": 0.802734375,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 2.161444723665384,
57 "env/all/raw_score/min": 1.5062984278705245,
58 "env/all/raw_score/max": 155.35450571865928,
59 "env/all/initial_raw_score": -1.506303691950634,
60 "env/all/initial_raw_score/min": -1.5063036919506338,
61 "env/all/initial_raw_score/max": -1.5063036919506336,
62 "env/all/msg": "Success; raw_score=1.5896414552545621",
63 "env/all/parsed_code": "```python\nimport time\nimport numpy as np\nimport cvxpy as cp\nimport copy\nimport random\nimport math\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 len(prev) > 0:\n best_sequence = list(np.asarray(prev, dtype=float))\n else:\n n = 1000\n # Start with uniform distribution and small perturbations\n base = 0.05 * np.ones(n)\n noise = 0.01 * np.random.normal(0, 0.1, n)\n best_sequence = [max(0.0, base[i] + noise[i]) for i in range(n)]\n \n current_sequence = best_sequence.copy()\n best_score = float('inf')\n\n def get_good_direction_to_move_into(sequence):\n \"\"\"Computes a better sequence using 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 # Normalize sequence to a larger scale for better exploration\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 # Use tighter tolerance for tight positions\n tolerance = 1e-4\n tight_positions = np.where(np.isclose(conv, max_b, atol=tolerance))[0]\n if len(tight_positions) < 10:\n # Fallback to positions 0 to 2n-1\n tight_positions = np.arange(2 * n - 1)\n if not tight_positions.size:\n tight_positions = np.arange(2 * n - 1)\n\n # Solve LP with ECOS solver if available\n g_fun = solve_convolution_lp(normalized_sequence, max_b, tight_positions)\n if g_fun is None:\n # Try adding more constraints for robustness\n tight_positions = np.arange(2 * n - 1)\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 # Adaptive line search with refined t values\n best_t = 0.005\n best_score = float('inf')\n # Try a range of t values with finer steps\n t_values = np.linspace(0.005, 0.2, 20)\n for t in t_values:\n new_sequence = [(1 - t) * x + t * y for x, y in zip(sequence, normalized_g)]\n try:\n curr_score = evaluate_sequence(new_sequence)\n if curr_score < best_score:\n best_t = t\n best_score = curr_score\n except:\n continue\n return [(1 - best_t) * x + best_t * y for x, y in zip(sequence, normalized_g)]\n\n def solve_convolution_lp(f_sequence, rhs, tight_positions):\n \"\"\"Solves LP with tight positions using cvxpy with ECOS solver.\"\"\"\n n = len(f_sequence)\n if n == 0:\n return None\n\n # Variables\n g = cp.Variable(n, nonneg=True)\n # Objective: maximize sum(g_j), equivalent to minimize -sum(g_j)\n objective = cp.Minimize(-cp.sum(g))\n\n # Constraints\n constraints = []\n for k in tight_positions:\n # Coefficients for the constraint: sum_{j=0}^{n-1} f[i] * g[j] <= rhs for appropriate i\n coeff = np.zeros(n)\n for j in range(n):\n i = k - j\n if 0 <= i < n:\n coeff[j] = f_sequence[i]\n constraints.append(cp.sum(coeff * g) <= rhs)\n\n # Solve the LP\n problem = cp.Problem(objective, constraints)\n try:\n problem.solve(solver=cp.ECOS, verbose=False)\n if problem.status == cp.OPTIMAL:\n return g.value\n except:\n return None\n return None\n\n def perturb_sequence(seq, perturbation_ratio=0.1):\n \"\"\"Perturb the sequence with multiple strategies to avoid local optima.\"\"\"\n n = len(seq)\n # Random swap perturbation\n if np.random.rand() < 0.5:\n i, j = np.random.choice(n, 2, replace=False)\n seq[i], seq[j] = seq[j], seq[i]\n # Add noise to a random subset of elements\n else:\n for i in range(n):\n if np.random.rand() < perturbation_ratio:\n delta = np.random.uniform(-0.05, 0.05)\n seq[i] = max(0.0, seq[i] + delta)\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 # Try multiple perturbations for escaping local optima\n for _ in range(3):\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```",
64 "env/all/time/policy": 271.0107058212161,
65 "env/all/time/policy/min": 89.47395038604736,
66 "env/all/time/policy/max": 356.67661237716675,
67 "env/all/time/env_step": 2293.804868347943,
68 "env/all/time/env_step/min": 0.008608341217041016,
69 "env/all/time/env_step/max": 4953.623883008957,
70 "env/all/time/reward_compute": 1.2014061212539673e-06,
71 "env/all/time/reward_compute/min": 2.1606683731079102e-07,
72 "env/all/time/reward_compute/max": 6.448477506637573e-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.01836436614394188,
77 "advantage/min": -1.0,
78 "advantage/max": 1.7457642555236816,
79 "time/assemble_training_data": 9.140820503234863,
80 "time/kl_vs_base": 90.00603795051575,
81 "kl_policy_base": 0.00084894202882424,
82 "time/train": 508.4957411289215,
83 "time/save_checkpoint": 18.332438945770264,
84 "time/total": 5924.286217689514
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