Views
No views yet
ac1. Checkpoint saved
after training step 23 (0-indexed). Strict upstream eval parity:
1100s hard kill, verbatim prompts/entrypoints, group 64x8, T=1.0, kl 0.1.1{
2 "step": 23,
3 "progress/batch": 23,
4 "optim/lr": 4e-05,
5 "progress/done_frac": 0.48,
6 "puct/buffer_size": 376,
7 "puct/sampled_size": 8,
8 "puct/T": 11776,
9 "puct/scale_last": 0.4936516100901467,
10 "puct/buffer_value/mean": -1.5260231047831438,
11 "puct/buffer_value/std": 0.08529648666252461,
12 "puct/buffer_value/min": -2.000000000000008,
13 "puct/buffer_value/max": -1.5063483899098538,
14 "puct/buffer_timestep/mean": 10.74468085106383,
15 "puct/buffer_timestep/std": 6.786933895851247,
16 "puct/buffer_timestep/min": -1.0,
17 "puct/buffer_timestep/max": 22.0,
18 "puct/buffer_construction_len/mean": 1115.7739361702127,
19 "puct/buffer_construction_len/std": 688.7619091617698,
20 "puct/buffer_construction_len/min": 1000.0,
21 "puct/buffer_construction_len/max": 7397.0,
22 "puct/sampled_value/mean": -1.506360258293444,
23 "puct/sampled_value/std": 7.424426997578999e-10,
24 "puct/sampled_value/min": -1.5063602588569893,
25 "puct/sampled_value/max": -1.506360256815695,
26 "puct/sampled_timestep/mean": 22.0,
27 "puct/sampled_timestep/std": 0.0,
28 "puct/sampled_timestep/min": 22.0,
29 "puct/sampled_timestep/max": 22.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": 4541.51459479332,
35 "env/all/ac_tokens_per_turn": 8789.7734375,
36 "env/all/ob_tokens_per_turn": 2534.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": 4500364,
41 "env/all/total_ob_tokens": 1297472,
42 "env/all/time/sampling_mean": 308.3644870352,
43 "env/all/time/sampling_max": 407.9022943973541,
44 "env/all/time/env_step_mean": 2079.23434893135,
45 "env/all/time/env_step_max": 4145.427929401398,
46 "env/all/reward/mean": 0.6198610632529856,
47 "env/all/reward/max": 0.6638518171109108,
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.6198610632529856,
53 "env/all/correctness": 0.95703125,
54 "env/all/correctness/min": 0.0,
55 "env/all/correctness/max": 1.0,
56 "env/all/raw_score": 1.555808091071851,
57 "env/all/raw_score/min": 1.5063602562895604,
58 "env/all/raw_score/max": 2.941867636797526,
59 "env/all/initial_raw_score": -1.5063602582934439,
60 "env/all/initial_raw_score/min": -1.5063602588569893,
61 "env/all/initial_raw_score/max": -1.506360256815695,
62 "env/all/msg": "Success; raw_score=1.506360256313598",
63 "env/all/parsed_code": "```python\nimport time\nimport numpy as np\nfrom scipy.optimize import linprog\n\ndef propose_candidate(seed=42, budget_s=1000, **kwargs):\n \"\"\"\n Proposes a sequence of non-negative numbers to minimize the evaluation score \n using an enhanced evolutionary search with adaptive perturbations and structured blending.\n \"\"\"\n np.random.seed(seed)\n deadline = time.time() + budget_s - 10\n n = 1000\n\n # Initialize with the best sequence from prior knowledge or random\n best_sequence = None\n if 'height_sequence_1' in globals() and isinstance(height_sequence_1, (list, np.ndarray)):\n best_sequence = list(height_sequence_1)\n else:\n best_sequence = np.random.rand(n).tolist()\n sum_a = sum(best_sequence)\n best_sequence = [x / sum_a for x in best_sequence] if sum_a > 0 else [1.0 / n] * n\n\n curr_sequence = best_sequence.copy()\n best_score = evaluate_sequence(curr_sequence)\n no_improvement_counter = 0\n iteration_count = 0\n max_iterations = 200\n t_blend = 0.01 # Small initial blending\n perturb_rate = 0.1 # Moderate rate for perturbation\n temperature = 1.0\n cooling_rate = 0.998\n max_perturb_attempts = 5\n adapt_blend = True\n perturb_radius = 0.5 # Control the extent of perturbation\n perturb_freq = 10 # Frequency of perturbation attempts\n\n while time.time() < deadline and iteration_count < max_iterations:\n try:\n # Compute current convolution and max_b\n conv = np.convolve(curr_sequence, curr_sequence)\n M = np.max(conv)\n sum_a = np.sum(curr_sequence)\n if sum_a < 0.001:\n continue\n\n # Generate LP constraints\n A_ub = []\n for k in range(2 * n - 1):\n row = [0.0] * n\n for j in range(n):\n i = k - j\n if 0 <= i < n:\n row[j] += curr_sequence[i]\n A_ub.append(row)\n b_ub = [M] * (2 * n - 1)\n c = [-1.0] * n\n bounds = [(0, 1000.0) for _ in range(n)]\n\n # Solve the LP\n res = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=bounds, method='highs')\n if res.success:\n g_opt = res.x\n sum_g_opt = np.sum(g_opt)\n if sum_g_opt > 0:\n # Rescale to have sum sqrt(2n)\n scale = np.sqrt(2 * n) / sum_g_opt\n new_g = [x * scale for x in g_opt]\n # Evaluate current and proposed sequences\n curr_score = evaluate_sequence(curr_sequence)\n new_score = evaluate_sequence(new_g)\n if new_score < curr_score:\n t_blend = max(0.2, t_blend * 1.2)\n else:\n t_blend = max(0.01, t_blend * 0.9)\n\n # Blend with current sequence\n new_f = [ (1 - t_blend) * x + t_blend * y for x, y in zip(curr_sequence, new_g) ]\n curr_sequence = new_f\n\n # Evaluate the new sequence\n curr_score = evaluate_sequence(curr_sequence)\n if curr_score < best_score:\n best_score = curr_score\n best_sequence = curr_sequence[:]\n no_improvement_counter = 0\n print(f\"New best score: {best_score}\")\n else:\n no_improvement_counter += 1\n else:\n # No improvement, skip\n pass\n else:\n # Fallback to localized perturbation\n if iteration_count % perturb_freq == 0:\n for _ in range(max_perturb_attempts):\n # Find current max_b position\n conv = np.convolve(curr_sequence, curr_sequence)\n max_pos = np.argmax(conv)\n # Identify indices contributing to this max\n contrib_indices = []\n for i in range(n):\n j = max_pos - i\n if 0 <= j < n:\n contrib_indices.append(i)\n contrib_indices.append(j)\n contrib_indices = list(set(contrib_indices))\n if not contrib_indices:\n continue\n # Perturb the contributing indices\n for idx in contrib_indices:\n if np.random.rand() < 0.5:\n curr_sequence[idx] = max(0.0, curr_sequence[idx] - np.random.rand() * perturb_rate * temperature)\n else:\n curr_sequence[idx] = min(1000.0, curr_sequence[idx] + np.random.rand() * perturb_rate * temperature)\n # Cap values\n curr_sequence = [max(0.0, min(1000.0, x)) for x in curr_sequence]\n # Evaluate the perturbed sequence\n curr_score = evaluate_sequence(curr_sequence)\n if curr_score < best_score:\n best_score = curr_score\n best_sequence = curr_sequence[:]\n no_improvement_counter = 0\n print(f\"New best score: {best_score}\")\n break\n temperature *= cooling_rate\n\n iteration_count += 1\n time.sleep(0.01) # Prevent high CPU usage\n\n except Exception as e:\n print(f\"Error during optimization: {e}. Skipping update.\")\n continue\n\n # After iterations or time runs out, return the best sequence\n return [float(max(0.0, x)) for x in best_sequence]\n```",
64 "env/all/time/policy": 308.3644870352,
65 "env/all/time/policy/min": 134.86063647270203,
66 "env/all/time/policy/max": 407.9022943973541,
67 "env/all/time/env_step": 2079.23434893135,
68 "env/all/time/env_step/min": 0.014703989028930664,
69 "env/all/time/env_step/max": 4145.427929401398,
70 "env/all/time/reward_compute": 3.4598633646965027e-07,
71 "env/all/time/reward_compute/min": 2.0489096641540527e-07,
72 "env/all/time/reward_compute/max": 8.344650268554688e-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.004016119986772537,
77 "advantage/min": -1.0,
78 "advantage/max": 0.5,
79 "time/assemble_training_data": 9.859520435333252,
80 "time/kl_vs_base": 91.42471694946289,
81 "kl_policy_base": 0.0008018323569558561,
82 "time/train": 537.651867389679,
83 "time/save_checkpoint": 35.379666328430176,
84 "time/total": 5217.910901546478
85}[2026-07-09T06:24:18+00:00] job=1812628 node=node-12 ngpu=3 ntrain=1 replicas=2 flash_attn=no
[2026-07-09T08:30:32+00:00] job=1813127 node=node-22 ngpu=3 ntrain=1 replicas=2 flash_attn=yes
[2026-07-09T13:07:08+00:00] job=1813128 node=node-6 ngpu=6 ntrain=2 replicas=4 flash_attn=yes