Deep CFR 콘솔 트래킹 출력 정리
This commit is contained in:
@@ -87,9 +87,7 @@ def train_command(args: argparse.Namespace) -> None:
|
|||||||
)
|
)
|
||||||
if args.resume:
|
if args.resume:
|
||||||
trainer.load_checkpoint(args.resume)
|
trainer.load_checkpoint(args.resume)
|
||||||
metrics = trainer.train()
|
trainer.train()
|
||||||
for item in metrics:
|
|
||||||
print(json.dumps(item.to_dict(), sort_keys=True))
|
|
||||||
|
|
||||||
|
|
||||||
def eval_command(args: argparse.Namespace) -> None:
|
def eval_command(args: argparse.Namespace) -> None:
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|||||||
import json
|
import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from sys import stdout
|
||||||
from typing import Any, Protocol
|
from typing import Any, Protocol
|
||||||
|
|
||||||
|
|
||||||
@@ -49,6 +50,17 @@ class CompositeRunTracker:
|
|||||||
tracker.close()
|
tracker.close()
|
||||||
|
|
||||||
|
|
||||||
|
class ConsoleRunTracker:
|
||||||
|
def log_event(self, message: str) -> None:
|
||||||
|
print(f"{log_timestamp()} {message}", file=stdout, flush=True)
|
||||||
|
|
||||||
|
def log_metrics(self, metrics: dict[str, Any], *, step: int) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def close(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class FileRunTracker:
|
class FileRunTracker:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ from coolrl_lost_cities.games.classic.deep_cfr.encoding import input_dim
|
|||||||
from coolrl_lost_cities.games.classic.deep_cfr.evaluate import evaluate_strategy_network
|
from coolrl_lost_cities.games.classic.deep_cfr.evaluate import evaluate_strategy_network
|
||||||
from coolrl_lost_cities.games.classic.deep_cfr.memory import ReservoirMemory, TrainingSample
|
from coolrl_lost_cities.games.classic.deep_cfr.memory import ReservoirMemory, TrainingSample
|
||||||
from coolrl_lost_cities.games.classic.deep_cfr.networks import DeepCFRMLP
|
from coolrl_lost_cities.games.classic.deep_cfr.networks import DeepCFRMLP
|
||||||
from coolrl_lost_cities.games.classic.deep_cfr.tracking import FileRunTracker, RunTracker
|
from coolrl_lost_cities.games.classic.deep_cfr.tracking import (
|
||||||
|
CompositeRunTracker,
|
||||||
|
ConsoleRunTracker,
|
||||||
|
FileRunTracker,
|
||||||
|
RunTracker,
|
||||||
|
)
|
||||||
from coolrl_lost_cities.games.classic.deep_cfr.traverser import DeepCFRTraverser, TraversalStats
|
from coolrl_lost_cities.games.classic.deep_cfr.traverser import DeepCFRTraverser, TraversalStats
|
||||||
from coolrl_lost_cities.games.classic.deep_cfr.workers import (
|
from coolrl_lost_cities.games.classic.deep_cfr.workers import (
|
||||||
TraversalWorkerBatch,
|
TraversalWorkerBatch,
|
||||||
@@ -150,10 +155,15 @@ class DeepCFRTrainer:
|
|||||||
self.metrics_path = self.run_dir / "metrics.jsonl"
|
self.metrics_path = self.run_dir / "metrics.jsonl"
|
||||||
self.progress_path = self.run_dir / "runtime_progress.json"
|
self.progress_path = self.run_dir / "runtime_progress.json"
|
||||||
self.log_path = self.run_dir / "train.log"
|
self.log_path = self.run_dir / "train.log"
|
||||||
self.tracker = tracker or FileRunTracker(
|
self.tracker = tracker or CompositeRunTracker(
|
||||||
log_path=self.log_path,
|
[
|
||||||
metrics_path=self.metrics_path,
|
FileRunTracker(
|
||||||
progress_path=self.progress_path,
|
log_path=self.log_path,
|
||||||
|
metrics_path=self.metrics_path,
|
||||||
|
progress_path=self.progress_path,
|
||||||
|
),
|
||||||
|
ConsoleRunTracker(),
|
||||||
|
]
|
||||||
)
|
)
|
||||||
self.self_play_league_snapshots: list[list[dict]] = []
|
self.self_play_league_snapshots: list[list[dict]] = []
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user