Clean up Deep CFR config schema

Remove legacy aliases, rename max_hours to max_minutes, collapse the
four checkpoint save flags into save_every + save_latest, and change
defaults to safer values (opponent_policy=self_play_league,
device=auto, eval_every=50, max_depth=null). Migrate all archived
yaml configs and tests to the new schema.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-07 16:09:19 +09:00
co-authored by Claude Opus 4.7
parent c2b88d7c9c
commit a177031963
21 changed files with 257 additions and 367 deletions
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_color_shared_512x3
iterations: null
seed: 42
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -30,10 +29,10 @@ network:
color_attention_heads: 4
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -49,7 +48,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -71,9 +70,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -89,9 +87,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_color_shared_512x3
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_color_shared_attention_512x3
iterations: null
seed: 42
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -30,10 +29,10 @@ network:
color_attention_heads: 8
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -49,7 +48,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -71,9 +70,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -89,9 +87,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_color_shared_attention_512x3
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_color_shared_attention_1000iter
iterations: null
seed: 42
max_iterations: 1000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -30,10 +29,10 @@ network:
color_attention_heads: 8
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -49,7 +48,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -71,9 +70,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 256
@@ -89,9 +87,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_color_shared_attention_exp_1000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_opponent_average_strategy_512x3_1000iter
iterations: null
seed: 79
max_iterations: 1000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_opponent_average_strategy_512x3_1000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_opponent_network_1024x4_1000iter
iterations: null
seed: 79
max_iterations: 1000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_opponent_network_1024x4_1000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_opponent_network_512x3_1000iter
iterations: null
seed: 79
max_iterations: 1000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_opponent_network_512x3_1000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_pure_selfplay_full_depth_slot_playability_512x3_2x_updates_10000iter
iterations: null
seed: 79
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_pure_selfplay_full_depth_slot_playability_512x3_2x_updates_10000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_selfplay_anchor_safe_512x3_2x_updates_10000iter
iterations: null
seed: 79
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_anchor_safe_512x3_2x_updates_10000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -2,7 +2,7 @@ run:
experiment_name: lost_cities_deep_cfr_selfplay_full_depth_slot_playability
seed: 79
max_iterations: null
max_hours: 4
max_minutes: 240
device: cuda
use_amp: false
@@ -39,7 +39,7 @@ traversal:
cutoff_rollout_max_steps: 300
progress_every_traversals: 10
num_workers: 8
traversal_worker_chunk_size: 8
worker_chunk_size: 8
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
outcome_sampling_value_clip: 500
@@ -87,7 +87,5 @@ evaluation:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_full_depth_slot_playability
save_every_iteration: false
save_iteration_interval: 10
save_latest_only: false
save_every: 10
progress_interval_seconds: 20.0
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_selfplay_full_depth_slot_playability_512x3_2x_updates_10000iter
iterations: null
seed: 79
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 512
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_full_depth_slot_playability_512x3_2x_updates_10000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_selfplay_full_depth_slot_playability_512x3_lcfr_10000iter
iterations: null
seed: 79
max_iterations: 10000
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -69,9 +68,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 256
@@ -87,9 +85,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_full_depth_slot_playability_512x3_lcfr_10000iter
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_selfplay_full_depth_slot_playability_512x3_unbounded
iterations: null
seed: 79
max_iterations: null
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -27,10 +26,10 @@ network:
activation: relu
traversal:
traversals_per_iteration: 2
traversals_per_player: 2
traversals_per_player: 70
max_depth: null
max_nodes: 10000
max_nodes_per_traversal: 10000
max_nodes_per_traversal: 1000
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
@@ -46,7 +45,7 @@ traversal:
store_strategy_on_opponent_nodes: false
num_workers: 8
worker_chunk_size: 4
traversal_worker_chunk_size: 8
worker_chunk_size: 8
progress_every_traversals: 10
endpoint_depth_bucket_width: 100
endpoint_depth_bucket_max: 1000
@@ -68,9 +67,8 @@ self_play:
recent_window: 5
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 32
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
advantage_batch_size: 1024
strategy_batch_size: 1024
advantage_updates_per_iteration: 256
@@ -86,9 +84,7 @@ memory:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_full_depth_slot_playability_512x3_unbounded
save_latest: true
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
exact_resume: false
@@ -1,9 +1,8 @@
run:
experiment_name: lost_cities_deep_cfr_selfplay_full_depth_slot_playability_unbounded
iterations: null
seed: 79
max_iterations: null
max_hours: null
max_minutes: null
device: cuda
use_amp: false
@@ -40,7 +39,7 @@ traversal:
cutoff_rollout_max_steps: 300
progress_every_traversals: 10
num_workers: 8
traversal_worker_chunk_size: 8
worker_chunk_size: 8
regret_matching_epsilon: 0.0001
outcome_sampling_epsilon: 0.2
outcome_sampling_value_clip: 500
@@ -88,7 +87,5 @@ evaluation:
checkpoint:
directory: runs/deep_cfr/deep_cfr_selfplay_full_depth_slot_playability_unbounded
save_every_iteration: false
save_iteration_interval: 100
save_latest_only: false
save_every: 100
progress_interval_seconds: 20.0
+9 -7
View File
@@ -1,5 +1,5 @@
run:
iterations: 1
max_iterations: 1
seed: 1
device: cpu
@@ -7,16 +7,17 @@ network:
hidden_size: 16
traversal:
traversals_per_iteration: 1
traversals_per_player: 1
max_depth: 2
max_nodes: 64
max_nodes_per_traversal: 64
num_workers: 0
worker_chunk_size: 1
optimization:
advantage_train_steps: 1
strategy_train_steps: 1
batch_size: 2
advantage_batch_size: 2
strategy_batch_size: 2
advantage_updates_per_iteration: 1
strategy_updates_per_iteration: 1
learning_rate: 0.001
memory:
@@ -25,7 +26,8 @@ memory:
checkpoint:
directory: runs/deep_cfr/smoke
save_every_iteration: false
save_every: 0
save_latest: false
evaluation:
eval_every: 0