Views
No views yet
erdos. Checkpoint saved
after training step 31 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 31,
3 "progress/batch": 31,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.64,
6 "puct/buffer_size": 504,
7 "puct/sampled_size": 8,
8 "puct/T": 15872,
9 "puct/scale_last": 0.2790747696859714,
10 "puct/buffer_value/mean": -0.3843900437511413,
11 "puct/buffer_value/std": 0.02076598020939107,
12 "puct/buffer_value/min": -0.66,
13 "puct/buffer_value/max": -0.38092523031402864,
14 "puct/buffer_timestep/mean": 14.746031746031745,
15 "puct/buffer_timestep/std": 9.095556658040623,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 30.0,
18 "puct/buffer_construction_len/mean": 93.56349206349206,
19 "puct/buffer_construction_len/std": 34.611906390662284,
20 "puct/buffer_construction_len/min": 40.0,
21 "puct/buffer_construction_len/max": 200.0,
22 "puct/sampled_value/mean": -0.38092526037463503,
23 "puct/sampled_value/std": 1.2462714414557716e-08,
24 "puct/sampled_value/min": -0.3809252672064069,
25 "puct/sampled_value/max": -0.38092523031402864,
26 "puct/sampled_timestep/mean": 30.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 30.0,
29 "puct/sampled_timestep/max": 30.0,
30 "puct/sampled_construction_len/mean": 100.0,
31 "puct/sampled_construction_len/std": 0.0,
32 "puct/sampled_construction_len/min": 100.0,
33 "puct/sampled_construction_len/max": 100.0,
34 "time/sampling": 1792.9150867462158,
35 "env/all/ac_tokens_per_turn": 9474.15234375,
36 "env/all/ob_tokens_per_turn": 1705.25,
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": 4850766,
41 "env/all/total_ob_tokens": 873088,
42 "env/all/time/sampling_mean": 539.7877607801929,
43 "env/all/time/sampling_max": 805.6325883865356,
44 "env/all/time/env_step_mean": 33.93014501966536,
45 "env/all/time/env_step_max": 1100.1250638961792,
46 "env/all/reward/mean": 0.7791660029913168,
47 "env/all/reward/max": 2.6251870527647303,
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.7791660029913168,
53 "env/all/correctness": 0.314453125,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 0.40989304764028417,
57 "env/all/raw_score/min": 0.3809252269071547,
58 "env/all/raw_score/max": 0.7577686620440903,
59 "env/all/initial_raw_score": -0.3809252603746349,
60 "env/all/initial_raw_score/min": -0.3809252672064069,
61 "env/all/initial_raw_score/max": -0.38092523031402864,
62 "env/all/msg": "After normalization, h(x) is not in [0, 1]. Range: [0.0, 4.575276840685507]",
63 "env/all/parsed_code": "```python\nimport numpy as np\nfrom scipy.optimize import minimize\nfrom scipy.signal import correlate\n\ndef run(seed=42, budget_s=1000, **kwargs):\n n_points = 100 # Smaller n_points is preferred for speed\n dx = 2.0 / n_points\n np.random.seed(seed)\n\n desired_sum = n_points / 2\n\n # Enhanced GA parameters\n population_size = 200\n generations = 750\n elite_ratio = 0.2\n mutation_rate = 0.3\n mutation_range = 0.03\n mutation_decay = 0.0\n tournament_size = 4\n\n # Initialize elite with provided initial_h_values\n initial_h = np.array(initial_h_values, dtype=np.float64)\n initial_h = np.clip(initial_h, 0.0, 1.0)\n sum_h = np.sum(initial_h)\n delta = desired_sum - sum_h\n if abs(delta) > 1e-6:\n initial_h[-1] += delta\n initial_h = np.clip(initial_h, 0.0, 1.0)\n population = [initial_h.copy()]\n\n # Add diverse random individuals\n for _ in range(population_size - 1):\n h = np.random.uniform(0.0, 1.0, n_points)\n sum_h = np.sum(h)\n delta = desired_sum - sum_h\n h[-1] += delta\n h = np.clip(h, 0.0, 1.0)\n population.append(h.copy())\n\n def evaluate_erdos(h):\n corr = correlate(h, 1 - h, mode='full')\n return np.max(corr) * dx\n\n best_c5 = float('inf')\n best_h = None\n\n for gen in range(generations):\n # Evaluate fitness\n fitness = [evaluate_erdos(h) for h in population]\n best_idx = np.argmin(fitness)\n\n if fitness[best_idx] < best_c5:\n best_c5 = fitness[best_idx]\n best_h = population[best_idx].copy()\n\n # Select elites\n elite_count = int(elite_ratio * population_size)\n elite_indices = np.argsort(fitness)[:elite_count]\n elites = [population[i].copy() for i in elite_indices]\n\n # Generate new population with tournament selection and mutation\n new_population = elites.copy()\n while len(new_population) < population_size:\n # Tournament selection of two parents\n idx1, idx2 = np.random.choice(range(population_size), size=2, replace=False)\n parent1, parent2 = population[idx1], population[idx2]\n child = (parent1 + parent2) / 2\n\n # Mutation\n if np.random.rand() < mutation_rate:\n i = np.random.randint(n_points)\n delta = np.random.uniform(-mutation_range, mutation_range)\n child[i] += delta\n child = np.clip(child, 0.0, 1.0)\n\n # Correct sum after mutation\n current_sum = np.sum(child)\n delta_sum = current_sum - desired_sum\n if delta_sum != 0:\n j = np.random.randint(n_points)\n child[j] += delta_sum\n child[j] = np.clip(child[j], 0.0, 1.0)\n\n new_population.append(child.copy())\n\n population = new_population\n\n # Final local optimization using SLSQP\n if best_h is not None:\n h_array = np.array(best_h, dtype=np.float64)\n corr = correlate(h_array, 1 - h_array, mode='full')\n max_c5 = np.max(corr) * dx\n\n def objective(h):\n h_array = np.array(h, dtype=np.float64)\n corr = correlate(h_array, 1 - h_array, mode='full')\n return np.max(corr) * dx\n\n bounds = [(0.0, 1.0) for _ in range(n_points)]\n constraint_func = lambda h: np.sum(h) - desired_sum\n\n res = minimize(\n fun=objective,\n x0=best_h,\n method='SLSQP',\n bounds=bounds,\n constraints=[{'type': 'eq', 'fun': constraint_func}],\n options={\n 'ftol': 1e-8,\n 'maxiter': 200,\n 'disp': False\n }\n )\n\n if res.success:\n new_c5 = evaluate_erdos(res.x)\n if new_c5 < best_c5:\n best_c5 = new_c5\n best_h = res.x\n # Additional local optimizations from the best individuals\n for _ in range(20):\n h = population[np.random.choice(range(population_size))].copy()\n res = minimize(\n fun=objective,\n x0=h[:n_points],\n method='SLSQP',\n bounds=bounds,\n constraints=[{'type': 'eq', 'fun': constraint_func}],\n options={\n 'ftol': 1e-8,\n 'maxiter': 100,\n 'disp': False\n }\n )\n if res.success:\n new_c5 = evaluate_erdos(res.x)\n if new_c5 < best_c5:\n best_c5 = new_c5\n best_h = res.x\n\n return (best_h, best_c5, n_points)\n```",
64 "env/all/time/policy": 539.7877607801929,
65 "env/all/time/policy/min": 226.3488097190857,
66 "env/all/time/policy/max": 805.6325883865356,
67 "env/all/time/env_step": 33.93014501966536,
68 "env/all/time/env_step/min": 0.005331277847290039,
69 "env/all/time/env_step/max": 1100.1250638961792,
70 "env/all/time/reward_compute": 3.0873343348503113e-07,
71 "env/all/time/reward_compute/min": 1.6763806343078613e-07,
72 "env/all/time/reward_compute/max": 6.556510925292969e-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.027732383459806442,
77 "advantage/min": -0.976599931716919,
78 "advantage/max": 5.272433280944824,
79 "time/assemble_training_data": 8.068613052368164,
80 "time/kl_vs_base": 135.28280878067017,
81 "kl_policy_base": 0.00086096121231094,
82 "time/train": 1049.1576943397522,
83 "time/save_checkpoint": 17.601157188415527,
84 "time/total": 3004.394446849823
85}[2026-07-09T06:24:18+00:00] job=1812626 node=node-31 ngpu=3 ntrain=1 replicas=2 flash_attn=no
[2026-07-09T08:02:36+00:00] job=1813125 node=node-12 ngpu=3 ntrain=1 replicas=2 flash_attn=yes
[2026-07-09T09:32:13+00:00] job=1813126 node=node-3 ngpu=6 ntrain=2 replicas=4 flash_attn=yes
[2026-07-09T10:04:31+00:00] job=1813623 node=node-31 ngpu=3 ntrain=1 replicas=2 flash_attn=yes