36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
|
|
@dataclass
|
|
class LoggingConfig:
|
|
track: bool = False
|
|
wandb_project_name: str = "default-project"
|
|
wandb_entity: Optional[str] = "SEL3-2026-Groep-4"
|
|
capture_video: bool = False
|
|
|
|
# Local Saving
|
|
save_model: bool = True # Final model
|
|
save_checkpoints: bool = True # Intermediate checkpoints
|
|
checkpoint_frequency: int = 100
|
|
|
|
# Remote Uploading (WandB Artifacts)
|
|
upload_final_model: bool = False
|
|
upload_checkpoints: bool = False
|
|
|
|
hf_entity: str = ""
|
|
|
|
def __post_init__(self):
|
|
if self.upload_final_model and not (self.track and self.save_model):
|
|
raise ValueError(
|
|
"Configuration Error: 'upload_final_model' is True, but it requires "
|
|
"both 'track' and 'save_model' to also be True."
|
|
)
|
|
if self.upload_checkpoints and not (self.track and self.save_checkpoints):
|
|
raise ValueError(
|
|
"Configuration Error: 'upload_checkpoints' is True, but it requires "
|
|
"both 'track' and 'save_checkpoints' to also be True."
|
|
)
|
|
|
|
# NOTE: Checkpoint evaluation settings live under the project's
|
|
# `evaluation` config group (see brittle_star_project.configs).
|