Views
No views yet
ac1. Checkpoint saved
after training step 29 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 29,
3 "progress/batch": 29,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.6,
6 "puct/buffer_size": 472,
7 "puct/sampled_size": 8,
8 "puct/T": 14848,
9 "puct/scale_last": 0.5741309407896964,
10 "puct/buffer_value/mean": -1.528003790367223,
11 "puct/buffer_value/std": 0.09100291410164164,
12 "puct/buffer_value/min": -2.0797874683482562,
13 "puct/buffer_value/max": -1.5056565275585598,
14 "puct/buffer_timestep/mean": 13.745762711864407,
15 "puct/buffer_timestep/std": 8.518361464823458,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 28.0,
18 "puct/buffer_construction_len/mean": 1127.0974576271187,
19 "puct/buffer_construction_len/std": 757.3608412717424,
20 "puct/buffer_construction_len/min": 1000.0,
21 "puct/buffer_construction_len/max": 7850.0,
22 "puct/sampled_value/mean": -1.5056565439991896,
23 "puct/sampled_value/std": 4.3487023338502174e-08,
24 "puct/sampled_value/min": -1.5056566590550375,
25 "puct/sampled_value/max": -1.5056565275585598,
26 "puct/sampled_timestep/mean": 28.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 28.0,
29 "puct/sampled_timestep/max": 28.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": 5420.898124456406,
35 "env/all/ac_tokens_per_turn": 8382.103515625,
36 "env/all/ob_tokens_per_turn": 3244.5,
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": 4291637,
41 "env/all/total_ob_tokens": 1661184,
42 "env/all/time/sampling_mean": 299.45566918188706,
43 "env/all/time/sampling_max": 499.0323896408081,
44 "env/all/time/env_step_mean": 2741.306211305782,
45 "env/all/time/env_step_max": 5044.4618763923645,
46 "env/all/reward/mean": 0.5533858886794587,
47 "env/all/reward/max": 0.6641626009285125,
48 "env/all/reward/min": 0.0,
49 "env/all/format": 0.998046875,
50 "env/all/format/min": 0.0,
51 "env/all/format/max": 1.0,
52 "env/all/reward": 0.5533858886794587,
53 "env/all/correctness": 0.8515625,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 1.590406881404983,
57 "env/all/raw_score/min": 1.5056553801137766,
58 "env/all/raw_score/max": 22.245512341801327,
59 "env/all/initial_raw_score": -1.5056565439991898,
60 "env/all/initial_raw_score/min": -1.5056566590550375,
61 "env/all/initial_raw_score/max": -1.5056565275585598,
62 "env/all/msg": "RuntimeError: Program execution failed: IndexError: list index out of range",
63 "env/all/parsed_code": "```python\nimport time\nimport numpy as np\nimport cvxpy as cp\nimport copy\nimport random\n\ndef propose_candidate(seed=42, budget_s=1000, **kwargs):\n \"\"\"\n Optimizes a sequence of non-negative coefficients to minimize the evaluation function.\n This approach uses an accelerated genetic algorithm combined with enhanced LP refinement and adaptive threshold strategies.\n \"\"\"\n np.random.seed(seed)\n deadline = time.time() + budget_s - 10\n \n prev_sequence = globals().get(\"height_sequence_1\", None)\n if prev_sequence is not None and isinstance(prev_sequence, (list, np.ndarray)) and len(prev_sequence) > 0:\n best_sequence = list(np.asarray(prev_sequence, dtype=float))\n else:\n # Generate an initial diverse sequence optimized for convolution structure\n n = 1000\n base = np.random.uniform(0.01, 0.1, size=n) * np.exp(-np.linspace(0, 2, n))\n sum_base = np.sum(base)\n scale_factor = 0.5 / max(0.01, sum_base)\n best_sequence = [max(0.0, x * scale_factor) for x in base]\n \n current_sequence = best_sequence.copy()\n best_score = float('inf')\n best_sequence_copy = best_sequence.copy()\n \n def perturb_sequence(seq, scale_factor=0.1):\n \"\"\"Perturbs elements using both targeted adjustment and random mutation.\"\"\"\n n = len(seq)\n if n == 0:\n return None\n conv = np.convolve(seq, seq)\n top_indices = np.argsort(conv)[-120:] # Target high-impact positions\n indices = np.random.choice(top_indices, size=min(100, len(top_indices)), replace=False)\n for idx in indices:\n # Directional adjustment to lower convolution\n new_val = max(seq[idx] - np.random.normal(0, scale_factor * 0.5), 0.0)\n seq = [new_val if i == idx else seq[i] for i in range(len(seq))]\n return seq\n \n def solve_convolution_lp(f_sequence, tight_positions):\n \"\"\"Solves a bounded LP with more efficient parameters and ECOS solver.\"\"\"\n n = len(f_sequence)\n if n == 0:\n return None\n g = cp.Variable(n, nonneg=True)\n objective = cp.Minimize(-cp.sum(g))\n constraints = []\n for k in tight_positions:\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) <= 1.0)\n problem = cp.Problem(objective, constraints)\n try:\n problem.solve(solver=cp.ECOS, verbose=False, eps=1e-6)\n return g.value if problem.status == cp.OPTIMAL else None\n except:\n return None\n \n def get_good_direction_to_move_into(sequence):\n \"\"\"Uses tighter constraints and refined LP solution for better refinement.\"\"\"\n n = len(sequence)\n sum_sequence = np.sum(sequence)\n if sum_sequence <= 0.0:\n return None\n conv = np.convolve(sequence, sequence)\n max_b_val = np.max(conv)\n tight_positions = np.where(conv >= max_b_val * 0.9)[0] # Tighter threshold\n if not tight_positions.size:\n tight_positions = np.arange(2 * n - 1)\n g_fun = solve_convolution_lp(sequence, tight_positions)\n if g_fun is None:\n return None\n sum_g = np.sum(g_fun)\n if sum_g <= 0.0:\n return None\n # Bisection search for optimal t\n def objective(t):\n new_seq = [ (1 - t) * x + t * y for x, y in zip(sequence, g_fun) ]\n return evaluate_sequence(new_seq)\n low, high = 0.0, 1.0\n for _ in range(30):\n t_mid = (low + high) / 2\n f_low = objective(low)\n f_high = objective(high)\n if f_low < f_high:\n high = t_mid\n else:\n low = t_mid\n best_t = (low + high) / 2\n new_seq = [ (1 - best_t) * x + best_t * y for x, y in zip(sequence, g_fun) ]\n return new_seq\n \n # Genetic Algorithm for exploration\n population_size = 20\n population = [best_sequence.copy() for _ in range(population_size)]\n for gen in range(50): # Generations\n if time.time() >= deadline:\n break\n # Evaluate fitness\n fitness = [evaluate_sequence(seq) for seq in population]\n # Select top individuals\n top_indices = np.argsort(fitness)[:population_size // 2]\n top_population = [population[i] for i in top_indices]\n # Mutate and crossover to generate new population\n new_population = []\n for _ in range(population_size):\n if np.random.rand() < 0.1: # Occasionally generate entirely new candidate\n new_seq = np.random.uniform(0.01, 0.1, size=1000).tolist()\n new_seq = [max(0.0, x * 0.5) for x in new_seq]\n else:\n parent1, parent2 = random.sample(top_population, 2)\n child = [0.5 * parent1[i] + 0.5 * parent2[i] for i in range(len(parent1))]\n # Add small random perturbation\n child = [max(0.0, x + np.random.normal(0, 0.05)) for x in child]\n new_population.append(child)\n population = new_population\n \n # Select the best from population\n for seq in population:\n curr_score = evaluate_sequence(seq)\n if curr_score < best_score:\n best_score = curr_score\n best_sequence = seq.copy()\n \n # Refine with LP approach\n while time.time() < deadline:\n # Try LP-based refinement\n h_function = get_good_direction_to_move_into(current_sequence)\n if h_function is not None:\n current_sequence = h_function\n else:\n # Perturb with scale adjustment\n current_sequence = perturb_sequence(current_sequence, scale_factor=0.15)\n \n # Occasionally apply random walk for exploration\n if np.random.rand() < 0.02:\n current_sequence = perturb_sequence(current_sequence, scale_factor=0.3)\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": 299.45566918188706,
65 "env/all/time/policy/min": 109.08896231651306,
66 "env/all/time/policy/max": 499.0323896408081,
67 "env/all/time/env_step": 2741.306211305782,
68 "env/all/time/env_step/min": 0.5619428157806396,
69 "env/all/time/env_step/max": 5044.4618763923645,
70 "env/all/time/reward_compute": 3.674067556858063e-07,
71 "env/all/time/reward_compute/min": 1.862645149230957e-07,
72 "env/all/time/reward_compute/max": 7.189810276031494e-07,
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.008823323994874954,
77 "advantage/min": -1.0,
78 "advantage/max": 1.4730818271636963,
79 "time/assemble_training_data": 5.664378881454468,
80 "time/kl_vs_base": 94.65294623374939,
81 "kl_policy_base": 0.001043341588228941,
82 "time/train": 556.4193971157074,
83 "time/save_checkpoint": 18.305423736572266,
84 "time/total": 6098.061592340469
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