FittedSieve.Config(
        experiment_name='exp013',
        base_dir=None,
        members=[
        │   VerifierFit.Config(
        │       model=DenoisingVerifier.Config(
        │           channels_hidden=128,
        │           num_layers=4,
        │           heads=4,
        │           attention_mask=None,
        │           position_index=priml.baselines.sudoku.verifier.row_column_positions,
        │           vocab_size=11,
        │           denoise_fraction=0.25
        │       ),
        │       loss=DenoisingLoss.Config(
        │           cell_weight=0.5,
        │           negative_weight=1.0,
        │           denoise_weight=1.0
        │       ),
        │       dataset=VerifierData.Config(
        │           base_dir=None,
        │           working_dir=PosixPath('/opt/scratch/datasets/sudoku-extreme'),
        │           harvest_dir=PosixPath('/opt/scratch/runs/harvest/harvest'),
        │           batch_size=512,
        │           steps_per_epoch=250,
        │           real_fraction=0.3,
        │           positive_fraction=0.3,
        │           swap_fraction=0.15,
        │           contradiction_fraction=0.0,
        │           hamming_choices=(1, 1, 1, 2, 2, 3, 4, 8, 16),
        │           swap_choices=(1, 1, 2, 3),
        │           train_group_end=700,
        │           device='cuda',
        │           seed=0
        │       ),
        │       experiment_name='exp013_verifier_s0',
        │       base_dir=None,
        │       run_dir='/runs/{experiment_name}',
        │       seed=0,
        │       max_steps=16_000,
        │       learning_rate=0.0003,
        │       learning_rate_min=3e-05,
        │       weight_decay=0.01,
        │       gradient_clip_norm=1.0,
        │       dtype_autocast=torch.bfloat16,
        │       device='cuda'
        │   ),
        │   VerifierFit.Config(
        │       model=DenoisingVerifier.Config(
        │           channels_hidden=128,
        │           num_layers=4,
        │           heads=4,
        │           attention_mask=None,
        │           position_index=priml.baselines.sudoku.verifier.row_column_positions,
        │           vocab_size=11,
        │           denoise_fraction=0.25
        │       ),
        │       loss=DenoisingLoss.Config(
        │           cell_weight=0.5,
        │           negative_weight=1.0,
        │           denoise_weight=1.0
        │       ),
        │       dataset=VerifierData.Config(
        │           base_dir=None,
        │           working_dir=PosixPath('/opt/scratch/datasets/sudoku-extreme'),
        │           harvest_dir=PosixPath('/opt/scratch/runs/harvest/harvest'),
        │           batch_size=512,
        │           steps_per_epoch=250,
        │           real_fraction=0.3,
        │           positive_fraction=0.3,
        │           swap_fraction=0.15,
        │           contradiction_fraction=0.0,
        │           hamming_choices=(1, 1, 1, 2, 2, 3, 4, 8, 16),
        │           swap_choices=(1, 1, 2, 3),
        │           train_group_end=700,
        │           device='cuda',
        │           seed=0
        │       ),
        │       experiment_name='exp013_verifier_s1',
        │       base_dir=None,
        │       run_dir='/runs/{experiment_name}',
        │       seed=1,
        │       max_steps=16_000,
        │       learning_rate=0.0003,
        │       learning_rate_min=3e-05,
        │       weight_decay=0.01,
        │       gradient_clip_norm=1.0,
        │       dtype_autocast=torch.bfloat16,
        │       device='cuda'
        │   ),
        │   VerifierFit.Config(
        │       model=DenoisingVerifier.Config(
        │           channels_hidden=128,
        │           num_layers=4,
        │           heads=4,
        │           attention_mask=None,
        │           position_index=priml.baselines.sudoku.verifier.row_column_positions,
        │           vocab_size=11,
        │           denoise_fraction=0.25
        │       ),
        │       loss=DenoisingLoss.Config(
        │           cell_weight=0.5,
        │           negative_weight=1.0,
        │           denoise_weight=1.0
        │       ),
        │       dataset=VerifierData.Config(
        │           base_dir=None,
        │           working_dir=PosixPath('/opt/scratch/datasets/sudoku-extreme'),
        │           harvest_dir=PosixPath('/opt/scratch/runs/harvest/harvest'),
        │           batch_size=512,
        │           steps_per_epoch=250,
        │           real_fraction=0.3,
        │           positive_fraction=0.3,
        │           swap_fraction=0.15,
        │           contradiction_fraction=0.0,
        │           hamming_choices=(1, 1, 1, 2, 2, 3, 4, 8, 16),
        │           swap_choices=(1, 1, 2, 3),
        │           train_group_end=700,
        │           device='cuda',
        │           seed=0
        │       ),
        │       experiment_name='exp013_verifier_s2',
        │       base_dir=None,
        │       run_dir='/runs/{experiment_name}',
        │       seed=2,
        │       max_steps=16_000,
        │       learning_rate=0.0003,
        │       learning_rate_min=3e-05,
        │       weight_decay=0.01,
        │       gradient_clip_norm=1.0,
        │       dtype_autocast=torch.bfloat16,
        │       device='cuda'
        │   )
        ],
        sieve=StaircaseSieveEval.Config(
        │   runtime=SingleProcess.Config(
        │       device='cuda',
        │       deterministic=False,
        │       float32_matmul_precision=None
        │   ),
        │   experiment_name='exp013',
        │   doc='',
        │   base_dir=None,
        │   checkpoint_path='/runs/sudoku/exp006/checkpoints/step_00019500.pt',
        │   verifier_checkpoints=(
        │       '/runs/exp013_verifier_s0/checkpoints/step_00016000.pt',
        │       '/runs/exp013_verifier_s1/checkpoints/step_00016000.pt',
        │       '/runs/exp013_verifier_s2/checkpoints/step_00016000.pt'
        │   ),
        │   model=LatentRecursion.Config(
        │   │   vocab_size=11,
        │   │   puzzle_grid_shape=(81,),
        │   │   channels_in=512,
        │   │   num_layers=2,
        │   │   num_heads=8,
        │   │   slow_cycles=6,
        │   │   fast_cycles=9,
        │   │   q_head_outputs=2,
        │   │   num_puzzle_identifiers=1,
        │   │   puzzle_emb_len=16,
        │   │   puzzle_emb_ndim=512,
        │   │   puzzle_emb_batch_size=384,
        │   │   puzzle_emb_init_std=0.0,
        │   │   pos2d_grid_shape=(9, 9),
        │   │   pos2d_box_shape=(3, 3),
        │   │   pos2d_init_std=1.0,
        │   │   feedback_init_std=0.0,
        │   │   compile=True,
        │   │   dtype=torch.bfloat16,
        │   │   block=TransformerBlock.Config(
        │   │   │   channels_in=512,
        │   │   │   channels_out=512,
        │   │   │   attn=Attention.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       num_heads=8,
        │   │   │       channels_head=64,
        │   │   │       num_heads_kv=8,
        │   │   │       bias=False,
        │   │   │       dropout=0.0,
        │   │   │       causal=False,
        │   │   │       rope=None,
        │   │   │       rotate=None,
        │   │   │       norm_qk=RMSNorm.Config(
        │   │   │           channels_in=64,
        │   │   │           channels_out=64,
        │   │   │           eps=1e-06,
        │   │   │           elementwise_affine=False,
        │   │   │           device=None,
        │   │   │           dtype=None
        │   │   │       ),
        │   │   │       share_qk_norm=True,
        │   │   │       norm_out=None,
        │   │   │       split_qkv_projection=False,
        │   │   │       proj_qkv=None,
        │   │   │       proj_out=None,
        │   │   │       init_weight=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       depth_index=(),
        │   │   │       attn_kernel=SdpaFused.Config()
        │   │   │   ),
        │   │   │   ffn=SwiGLU.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       channels_hidden=1_536,
        │   │   │       expansion=2.6666666666666665,
        │   │   │       round_to=256,
        │   │   │       gate=True,
        │   │   │       bias=False,
        │   │   │       split_gate_projection=False,
        │   │   │       norm=RMSNorm.Config(
        │   │   │           channels_in=1_536,
        │   │   │           channels_out=1_536,
        │   │   │           eps=1e-06,
        │   │   │           elementwise_affine=False,
        │   │   │           device=None,
        │   │   │           dtype=None
        │   │   │       ),
        │   │   │       act=priml.model.swiglu.silu,
        │   │   │       depth_index=(),
        │   │   │       init_weight=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       init_weight_out=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       up_proj=None,
        │   │   │       middle=None,
        │   │   │       down_proj=None,
        │   │   │       shard='colwise'
        │   │   │   ),
        │   │   │   norm1=RMSNorm.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=False,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   norm2=RMSNorm.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=False,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   prenorm=False,
        │   │   │   checkpoint=False,
        │   │   │   depth_index=()
        │   │   )
        │   ),
        │   dataset=PuzzleDataset.Config(
        │       spec=SudokuSpec(grid_shape=(9, 9), box_shape=(3, 3), vocab_size=11),
        │       base_dir=None,
        │       working_dir=PosixPath('/opt/scratch/datasets/sudoku-extreme'),
        │       batch_size=192,
        │       eval_batch_size=None,
        │       device='cuda',
        │       augment=False,
        │       augment_digits_only=False,
        │       augment_seed=None,
        │       seed=None,
        │       num_instances=None,
        │       eval_num_instances=None,
        │       eval_instance_indices=(),
        │       max_samples=None
        │   ),
        │   search=HpsSearch.Config(
        │       max_act_steps=32,
        │       search_depth=3,
        │       search_candidates=5,
        │       search_cell_attempts=2,
        │       search_budget=512,
        │       search_max_rows=2_048,
        │       acceptance_threshold=7.875,
        │       root_acceptance_threshold=None,
        │       continue_threshold=0.0,
        │       early_exit_at_q8=False,
        │       acceptance_checkpoints=(24, 28, 32),
        │       require_prediction_stability=False,
        │       dtype_autocast=torch.bfloat16
        │   ),
        │   views=(
        │       View(name='canonical', digit_permutation=(1, 2, 3, 4, 5, 6, 7, 8, 9), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8)),
        │       View(name='shift1', digit_permutation=(2, 3, 4, 5, 6, 7, 8, 9, 1), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8)),
        │       View(name='shift4', digit_permutation=(5, 6, 7, 8, 9, 1, 2, 3, 4), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8)),
        │       View(name='reversal', digit_permutation=(9, 8, 7, 6, 5, 4, 3, 2, 1), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8)),
        │       View(name='anti_transpose', digit_permutation=(1, 2, 3, 4, 5, 6, 7, 8, 9), transpose=True, row_permutation=(8, 7, 6, 5, 4, 3, 2, 1, 0), col_permutation=(8, 7, 6, 5, 4, 3, 2, 1, 0)),
        │       View(name='stack_rot_digit_shift2', digit_permutation=(3, 4, 5, 6, 7, 8, 9, 1, 2), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(6, 7, 8, 0, 1, 2, 3, 4, 5)),
        │       View(name='full_mix', digit_permutation=(7, 3, 9, 1, 8, 2, 4, 6, 5), transpose=True, row_permutation=(4, 5, 3, 8, 6, 7, 1, 2, 0), col_permutation=(5, 3, 4, 0, 1, 2, 7, 8, 6)),
        │       View(name='dg_shift1_rot180', digit_permutation=(2, 3, 4, 5, 6, 7, 8, 9, 1), transpose=False, row_permutation=(8, 7, 6, 5, 4, 3, 2, 1, 0), col_permutation=(8, 7, 6, 5, 4, 3, 2, 1, 0)),
        │       View(name='dg_shift3_pure', digit_permutation=(4, 5, 6, 7, 8, 9, 1, 2, 3), transpose=False, row_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8), col_permutation=(0, 1, 2, 3, 4, 5, 6, 7, 8))
        │   ),
        │   det_halt_threshold=2.0,
        │   tail_search=(7, 4, 3, 8_400),
        │   acceptor=VerifierAcceptor.Config(
        │       model=DenoisingVerifier.Config(
        │           channels_hidden=128,
        │           num_layers=4,
        │           heads=4,
        │           attention_mask=None,
        │           position_index=priml.baselines.sudoku.verifier.row_column_positions,
        │           vocab_size=11,
        │           denoise_fraction=0.25
        │       ),
        │       base_dir=None,
        │       checkpoint_paths=(
        │           '/runs/exp013_verifier_s0/checkpoints/step_00016000.pt',
        │           '/runs/exp013_verifier_s1/checkpoints/step_00016000.pt',
        │           '/runs/exp013_verifier_s2/checkpoints/step_00016000.pt'
        │       ),
        │       threshold=0.0,
        │       max_rows=8_192,
        │       device='cuda'
        │   ),
        │   evaluation_count=422_786,
        │   max_round_eval_seconds=43200.0,
        │   emulate_precision_casts=True,
        │   metrics_path='/runs/{experiment_name}/dumps/sieve_metrics.json',
        │   dump_path='/runs/{experiment_name}/dumps/sieve_dump.npz',
        │   hypothesis_model=HypothesisRecursion.Config(
        │   │   vocab_size=11,
        │   │   puzzle_grid_shape=(81,),
        │   │   channels_in=512,
        │   │   num_layers=2,
        │   │   num_heads=8,
        │   │   slow_cycles=6,
        │   │   fast_cycles=9,
        │   │   q_head_outputs=2,
        │   │   num_puzzle_identifiers=1,
        │   │   puzzle_emb_len=16,
        │   │   puzzle_emb_ndim=512,
        │   │   puzzle_emb_batch_size=1_152,
        │   │   puzzle_emb_init_std=0.0,
        │   │   pos2d_grid_shape=(9, 9),
        │   │   pos2d_box_shape=(3, 3),
        │   │   pos2d_init_std=1.0,
        │   │   feedback_init_std=0.0,
        │   │   compile=True,
        │   │   dtype=torch.bfloat16,
        │   │   block=TransformerBlock.Config(
        │   │   │   channels_in=512,
        │   │   │   channels_out=512,
        │   │   │   attn=Attention.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       num_heads=8,
        │   │   │       channels_head=64,
        │   │   │       num_heads_kv=8,
        │   │   │       bias=False,
        │   │   │       dropout=0.0,
        │   │   │       causal=False,
        │   │   │       rope=None,
        │   │   │       rotate=None,
        │   │   │       norm_qk=RMSNorm.Config(
        │   │   │           channels_in=64,
        │   │   │           channels_out=64,
        │   │   │           eps=1e-06,
        │   │   │           elementwise_affine=False,
        │   │   │           device=None,
        │   │   │           dtype=None
        │   │   │       ),
        │   │   │       share_qk_norm=True,
        │   │   │       norm_out=None,
        │   │   │       split_qkv_projection=False,
        │   │   │       proj_qkv=None,
        │   │   │       proj_out=None,
        │   │   │       init_weight=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       depth_index=(),
        │   │   │       attn_kernel=SdpaFused.Config()
        │   │   │   ),
        │   │   │   ffn=SwiGLU.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       channels_hidden=1_536,
        │   │   │       expansion=2.6666666666666665,
        │   │   │       round_to=256,
        │   │   │       gate=True,
        │   │   │       bias=False,
        │   │   │       split_gate_projection=False,
        │   │   │       norm=RMSNorm.Config(
        │   │   │           channels_in=1_536,
        │   │   │           channels_out=1_536,
        │   │   │           eps=1e-06,
        │   │   │           elementwise_affine=False,
        │   │   │           device=None,
        │   │   │           dtype=None
        │   │   │       ),
        │   │   │       act=priml.model.swiglu.silu,
        │   │   │       depth_index=(),
        │   │   │       init_weight=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       init_weight_out=priml.baselines.sudoku.latent_recursion.truncated_normal_corrected,
        │   │   │       up_proj=None,
        │   │   │       middle=None,
        │   │   │       down_proj=None,
        │   │   │       shard='colwise'
        │   │   │   ),
        │   │   │   norm1=RMSNorm.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=False,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   norm2=RMSNorm.Config(
        │   │   │       channels_in=512,
        │   │   │       channels_out=512,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=False,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   prenorm=False,
        │   │   │   checkpoint=False,
        │   │   │   depth_index=()
        │   │   ),
        │   │   num_hypotheses=3,
        │   │   hypothesis_seed=44
        │   ),
        │   hypothesis_checkpoint_path='/runs/sudoku/exp010/checkpoints/step_00010000.pt',
        │   qsel_hypotheses=5,
        │   qsel_seed=8_902
        )
    )
