Promote avg-strategy 1000iter to default.yaml; archive other configs

The avg-strategy 1000iter file (with the recent +traversals/+LR/+LCFR
changes) is the canonical "best-known" config. Renamed it to
default.yaml so users start from a single, obvious entry point and
override one field per ablation via --set. Other 12 configs moved to
configs/archive/ — kept for historical reproduction, not for active use.

- configs/deep_cfr/{default.yaml, smoke.yaml} are the only active configs
- experiment_name shortened to "deep-cfr-default" (was a long mouthful)
- AGENTS.md examples and Project Layout section rewritten around
  default.yaml; ablation example shows the override-one-field pattern
- Tests pointed at the archived slot-playability config for the legacy
  reproduction assertions

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-07 17:09:20 +09:00
co-authored by Claude Opus 4.7
parent a1215959a7
commit 618d5f8167
15 changed files with 22 additions and 14 deletions
+19 -11
View File
@@ -8,7 +8,13 @@ project environment and Cython extensions are built/loaded consistently.
- `src/coolrl_lost_cities/games/classic/game.pyx`: Cython Lost Cities engine.
- `src/coolrl_lost_cities/games/classic/deep_cfr/`: Deep CFR training,
traversal, evaluation, analysis, and CLI code.
- `configs/deep_cfr/`: Deep CFR YAML configs (kebab-case filenames).
- `configs/deep_cfr/`: active Deep CFR YAML configs (kebab-case filenames).
Currently holds two:
- `default.yaml`: the canonical "best-known" baseline. Start here, then
override fields via `--set` for experiments/ablations.
- `smoke.yaml`: 1-iter sanity check for the training loop.
- `configs/archive/`: retired/historical configs. Don't modify; reference
if you need to reproduce an old run.
- `runs/`: generated training runs. Gitignored, may be a symlink to larger
storage. Layout:
- `runs/archive/`: past runs. **Do not modify or delete.**
@@ -67,28 +73,28 @@ Real experiment (lands in `runs/`):
```bash
uv run lost-cities-deep-cfr train \
--config configs/deep_cfr/deep-cfr-selfplay-full-depth-slot-playability.yaml \
--config configs/deep_cfr/default.yaml \
--keep
# → runs/<YYYY-MM-DD_HHMMSS>_lost-cities-deep-cfr-selfplay-full-depth-slot-playability/
# → runs/<YYYY-MM-DD_HHMMSS>_deep-cfr-default/
```
Variant of the same config (override slug):
Variant / ablation (override one field; keep slug informative):
```bash
uv run lost-cities-deep-cfr train \
--config configs/deep_cfr/deep-cfr-color-shared-attention-512x3.yaml \
--config configs/deep_cfr/default.yaml \
--keep \
--set run.experiment_name=color-attn-v2
# → runs/<YYYY-MM-DD_HHMMSS>_color-attn-v2/
--set training_weighting.mode=none \
--set run.experiment_name=ablation-no-lcfr
# → runs/<YYYY-MM-DD_HHMMSS>_ablation-no-lcfr/
```
Short fixed-iteration run:
```bash
uv run lost-cities-deep-cfr train \
--config configs/deep_cfr/deep-cfr-selfplay-full-depth-slot-playability.yaml \
--config configs/deep_cfr/default.yaml \
--set run.max_iterations=100 \
--set run.max_minutes=null \
--set checkpoint.save_every=0
```
@@ -96,7 +102,7 @@ Resume (path required, no shortcut):
```bash
uv run lost-cities-deep-cfr train \
--config configs/deep_cfr/deep-cfr-selfplay-full-depth-slot-playability.yaml \
--config configs/deep_cfr/default.yaml \
--resume runs/<YYYY-MM-DD_HHMMSS>_<slug>/latest.pt
```
@@ -142,7 +148,9 @@ Start a long unbounded run:
tmux new-session -s coolrl-deepcfr-unbounded \
-c /home/coolguy/dev/coolrl-lost-cities \
'uv run lost-cities-deep-cfr train \
--config configs/deep_cfr/deep-cfr-selfplay-full-depth-slot-playability-unbounded.yaml \
--config configs/deep_cfr/default.yaml \
--set run.max_iterations=null \
--set run.max_minutes=null \
--keep'
```