Configuration API¶
JaxARC uses a comprehensive configuration system based on Hydra and Equinox.
Configuration in JaxARC is handled through the JaxArcConfig class, which
provides:
Type-safe configuration with Equinox modules
Hydra integration for YAML-based configs
Presets for common use cases
Runtime validation
Module Contents¶
Modular configuration package for JaxARC.
This package splits the previously monolithic envs.config module into focused configuration modules. Public API remains stable via re-exports.
- class jaxarc.configs.ActionConfig(**kwargs)[source]¶
Bases:
ModuleConfiguration for action space and validation.
This config contains all settings related to action handling, validation, and operation constraints, including dynamic action space control.
- classmethod from_hydra(cfg: DictConfig) ActionConfig[source]¶
Create action config from Hydra DictConfig.
- class jaxarc.configs.DatasetConfig(dataset_name: str = 'arc-agi-1', dataset_path: str = '', dataset_repo: str = '', parser_entry_point: str = 'jaxarc.parsers:ArcAgiParser', expected_subdirs: tuple[str, ...] = ('data',), max_grid_height: int = 30, max_grid_width: int = 30, min_grid_height: int = 3, min_grid_width: int = 3, max_colors: int = 10, background_color: int = -1, max_train_pairs: int = 10, max_test_pairs: int = 3, task_split: str = 'train', shuffle_tasks: bool = True)[source]¶
Bases:
ModuleDataset-specific settings and constraints.
This config contains all dataset-related settings including grid constraints, color limits, task sampling, and dataset identification.
- classmethod from_hydra(cfg: DictConfig) DatasetConfig[source]¶
Create dataset config from Hydra DictConfig.
- class jaxarc.configs.EnvironmentConfig(max_episode_steps: int = 100, debug_level: Literal['off', 'minimal', 'verbose'] = 'minimal', render_mode: Literal['rgb_array', 'ansi', 'svg'] = 'rgb_array')[source]¶
Bases:
ModuleCore environment behavior and runtime settings.
This config only contains settings that directly affect environment behavior, not dataset constraints, logging, visualization, or storage settings.
- classmethod from_hydra(cfg: DictConfig) EnvironmentConfig[source]¶
Create environment config from Hydra DictConfig.
- class jaxarc.configs.GridInitializationConfig(**kwargs)[source]¶
Bases:
ModuleConfiguration for grid initialization strategies.
This config controls how working grids are initialized in the environment. Supports four modes for research flexibility: - Demo mode: Copy from training examples - Permutation mode: Apply transformations to demo grids - Empty mode: Start with blank grids - Random mode: Generate random patterns
- classmethod from_hydra(cfg: DictConfig) GridInitializationConfig[source]¶
Create grid initialization config from Hydra DictConfig.
- class jaxarc.configs.JaxArcConfig(environment: EnvironmentConfig | None = None, dataset: DatasetConfig | None = None, action: ActionConfig | None = None, reward: RewardConfig | None = None, grid_initialization: GridInitializationConfig | None = None, visualization: VisualizationConfig | None = None, storage: StorageConfig | None = None, logging: LoggingConfig | None = None, wandb: WandbConfig | None = None)[source]¶
Bases:
ModuleUnified configuration for JaxARC using Equinox.
Main container that unifies all configuration aspects.
- action: ActionConfig¶
- dataset: DatasetConfig¶
- environment: EnvironmentConfig¶
- classmethod from_hydra(hydra_config: DictConfig) JaxArcConfig[source]¶
- grid_initialization: GridInitializationConfig¶
- logging: LoggingConfig¶
- reward: RewardConfig¶
- storage: StorageConfig¶
- visualization: VisualizationConfig¶
- wandb: WandbConfig¶
- class jaxarc.configs.LoggingConfig(log_operations: bool = False, log_rewards: bool = False, log_frequency: int = 10, batched_logging_enabled: bool = False, log_format: str = 'text', log_level: str = 'INFO', structured_logging: bool = False)[source]¶
Bases:
ModuleAll logging behavior and formats.
This config contains everything related to logging: what to log, how to format it, where to write it, and performance settings.
- classmethod from_hydra(cfg: DictConfig) LoggingConfig[source]¶
Create logging config from Hydra DictConfig.
- class jaxarc.configs.RewardConfig(step_penalty: float = -0.01, success_bonus: float = 10.0, similarity_weight: float = 1.0, unsolved_submission_penalty: float = 0.0)[source]¶
Bases:
ModuleConfiguration for reward calculation.
This config contains all settings related to reward computation, penalties, bonuses, and reward shaping with mode-aware enhancements.
- classmethod from_hydra(cfg: DictConfig) RewardConfig[source]¶
Create reward config from Hydra DictConfig.
- class jaxarc.configs.StorageConfig(base_output_dir: str = 'outputs', run_name: str | None = None, episodes_dir: str = 'episodes', debug_dir: str = 'debug', visualization_dir: str = 'visualizations', logs_dir: str = 'logs', max_episodes_per_run: int = 100, max_storage_gb: float = 5.0, cleanup_policy: str = 'size_based', create_run_subdirs: bool = True, clear_output_on_start: bool = True)[source]¶
Bases:
ModuleAll storage, output, and file management settings.
This config contains everything related to file storage, output directories, cleanup policies, and file organization. All output paths are managed here.
- classmethod from_hydra(cfg: DictConfig) StorageConfig[source]¶
Create storage config from Hydra DictConfig.
- class jaxarc.configs.VisualizationConfig(**kwargs)[source]¶
Bases:
ModuleAll visualization and rendering settings.
This config contains everything related to visual output, rendering, and visualization behavior. No logging or storage settings here.
- classmethod from_hydra(cfg: DictConfig) VisualizationConfig[source]¶
Create visualization config from Hydra DictConfig.
- class jaxarc.configs.WandbConfig(**kwargs)[source]¶
Bases:
ModuleWeights & Biases integration settings.
This config contains everything related to W&B logging and tracking. No local logging or storage settings here.
- classmethod from_hydra(cfg: DictConfig) WandbConfig[source]¶
Create wandb config from Hydra DictConfig.
Usage Examples¶
From Python¶
from jaxarc import JaxArcConfig, make
# Default configuration
config = JaxArcConfig()
env, env_params = make("Mini", config=config)
# Custom configuration
config = JaxArcConfig(
grid_size=32,
max_episode_steps=1000,
)
env, env_params = make("Mini", config=config)
From Hydra Config¶
from jaxarc.utils.core import get_config
# Load from YAML with overrides
hydra_config = get_config(
overrides=["dataset=mini_arc", "action=point", "grid_size=32"]
)
config = JaxArcConfig.from_hydra(hydra_config)
From YAML File¶
# config.yaml
dataset: mini_arc
action: point
grid_size: 32
max_episode_steps: 1000
from hydra import compose, initialize
from jaxarc import JaxArcConfig
with initialize(config_path=".", version_base=None):
cfg = compose(config_name="config")
config = JaxArcConfig.from_hydra(cfg)