gradlab 0.1.2__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gradlab-0.1.2 → gradlab-0.2.2}/.gitignore +4 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/METRICS.md +83 -21
- {gradlab-0.1.2 → gradlab-0.2.2}/PKG-INFO +40 -29
- {gradlab-0.1.2 → gradlab-0.2.2}/README.md +28 -17
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Breakout-Atari2600-v0/_goal.yaml +20 -2
- gradlab-0.2.2/experiments/goals/Breakout-Atari2600-v0/recipes/ppo-ball-state.yaml +62 -0
- gradlab-0.2.2/experiments/goals/Breakout-Atari2600-v0/recipes/ppo-fusion-256.yaml +5 -0
- gradlab-0.2.2/experiments/goals/Breakout-Atari2600-v0/recipes/ppo.yaml +26 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/_goal-family-common.yaml +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeathmatch-v1/recipes/gradoom-ppo.yaml +9 -5
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/_vizdoom-common.yaml +1 -1
- gradlab-0.2.2/experiments/goals/_workspaces.yaml +170 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/alepy__mspacman/_goal.yaml +1 -1
- gradlab-0.2.2/experiments/recipes/_presets/breakout-ball-state-ablation-ppo.yaml +53 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/pyproject.toml +23 -27
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/__init__.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/action_codecs.py +5 -5
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/action_contract.py +156 -40
- gradlab-0.2.2/src/gradlab/action_overrides.py +364 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/action_profiles.py +2 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/batch_runtime.py +37 -15
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/benchmark.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/benchmark_profiles.py +0 -3
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/callbacks.py +19 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/checkpoint_acceptance.py +2 -4
- gradlab-0.2.2/src/gradlab/coordinator_connection.py +255 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_cli.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_providers.py +35 -17
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env.py +28 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_identity.py +50 -5
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_metadata.py +4 -4
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_providers.py +128 -15
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_registry.py +11 -11
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/environment_fields.py +2 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/eval_metrics.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/experiment_cli.py +227 -30
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/gradoom_device_runtime.py +92 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/lifecycle_certification.py +16 -6
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/local_train.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/manual_evaluation.py +2 -4
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/metric_names.py +37 -1
- gradlab-0.2.2/src/gradlab/modal_app_lifecycle.py +203 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/operator_credentials.py +54 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_application.py +16 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_catalog.py +143 -11
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_debug.py +16 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_runtime.py +35 -5
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_session.py +66 -6
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_web.py +136 -30
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/playback_worker.py +7 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/player_publication.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_runtime.py +12 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/preprocessing.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/provider_config.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/publication.py +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/recipe_documents.py +28 -9
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/rom_assets.py +5 -5
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/rom_cli.py +3 -3
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/run_contracts.py +3 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/run_supervisor.py +32 -15
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/runtime_refs.py +123 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/state_archive.py +2 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/task_kernels.py +299 -19
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/ppo_engine.py +20 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/sb3_on_policy.py +3 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training_metrics.py +11 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/turbo_api.py +37 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/vizdoom_assets.py +9 -3
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_publisher.py +9 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_workspace_declarations.py +129 -8
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_workspaces.py +2 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/app.js +141 -159
- gradlab-0.2.2/src/gradlab/web_player/event-colors.js +38 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/index.html +0 -10
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/README.md +8 -8
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/attribution.js +1 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/catalog.js +26 -61
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/cnn.js +2 -2
- gradlab-0.2.2/src/gradlab/web_player/panels/diagnostic-availability.js +26 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/events.js +12 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/game.js +128 -33
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/manager.js +3 -3
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/observation.js +68 -29
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/reward-breakdown.js +4 -2
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/runtime.js +22 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/telemetry-panel.js +395 -105
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/telemetry.js +4 -4
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/workspace.js +58 -33
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/playback-settings.js +43 -5
- gradlab-0.2.2/src/gradlab/web_player/playback-transition.js +8 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/player-presentation.js +12 -1
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/sources/browser.js +767 -458
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/styles.css +673 -396
- gradlab-0.2.2/src/gradlab/web_player/synchronized-presentation.js +61 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/tabler-icons.svg +2 -0
- gradlab-0.1.2/experiments/goals/Breakout-Atari2600-v0/recipes/ppo.yaml +0 -5
- gradlab-0.1.2/experiments/goals/_workspaces.yaml +0 -86
- {gradlab-0.1.2 → gradlab-0.2.2}/LICENSE +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/THIRD_PARTY_NOTICES.md +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Acrobot-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Acrobot-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Blackjack-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Blackjack-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Breakout-Atari2600-v0/recipes/go-explore-20m.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Breakout-Atari2600-v0/recipes/ppo-128x64.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Breakout-Atari2600-v0/recipes/ppo-archive-curriculum.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Breakout-Atari2600-v0/recipes/ppo-stable-updates.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CartPole-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CartPole-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CliffWalking-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CliffWalking-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CliffWalkingSlippery-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/CliffWalkingSlippery-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/FrozenLake-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/FrozenLake-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/FrozenLake8x8-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/FrozenLake8x8-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/LunarLander-v3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/LunarLander-v3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/MountainCar-v0/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/MountainCar-v0/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/EndToEnd/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/EndToEnd/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/a2c.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/dstack-smoke.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/go-explore-20m.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/jerk.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/turbo-demo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-2/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-2/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-3/recipes/ppo-train-clear-100.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-4/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level1-4/recipes/ppo-l14-soft-update.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-2/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-2/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-4/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level2-4/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-2/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-2/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-4/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level3-4/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-2/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-2/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-4/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Level4-4/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Levels_1-1_1-2/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Levels_1-1_1-2/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/Levels_1-1_1-2/recipes/raw-advantage.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/_goal-common.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/_reports.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/_reward-shapes-common.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Taxi-v3/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/Taxi-v3/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomBasic-Plus-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomBasic-Plus-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomBasic-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomBasic-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeadlyCorridor-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeadlyCorridor-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeathmatch-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeathmatch-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendCenter-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendCenter-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendLine-Plus-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendLine-Plus-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendLine-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDefendLine-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGathering-Plus-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGathering-Plus-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGathering-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGathering-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGatheringSupreme-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomHealthGatheringSupreme-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomMyWayHome-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomMyWayHome-v1/recipes/ppo-cell-novelty.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomMyWayHome-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomPredictPosition-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomPredictPosition-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomTakeCover-v1/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomTakeCover-v1/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/_catalog.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/_gymnasium-classic-control-common.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/_gymnasium-discrete-common.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/alepy__mspacman/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/gradlab__bandit/_goal.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/gradlab__bandit/recipes/ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/atari-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/breakout-high-throughput-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/classic-control-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/gymnasium-discrete-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/mario-mixed-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/mario-single-on-policy.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/mario-single-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/vizdoom-basic-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/vizdoom-defend-line-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/experiments/recipes/_presets/vizdoom-health-gathering-ppo.yaml +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/action_distributions.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/action_program.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/actor_critic_policy.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/artifacts.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/bandit_env.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/boundary_schema.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/catalog_errors.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/catalog_jobs.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/cell_graph.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/checkpoint_contract.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/cli_args.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/cli_parser.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/clock.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/config_loader.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/config_validation.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/contract_inspection.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/contract_versions.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_contract.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_hub.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_media.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_minari.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_record.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dataset_store.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/device.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dotenv.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/dstack_backend.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/early_stop.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_cli.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/env_config.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/eval.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/eval_backend.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/eval_runner.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/evaluation_attempts.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/evaluation_fence.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/evaluation_projection.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/experiment_contracts.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/file_utils.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/go_explore.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/goal_catalog.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/goal_catalog_projection.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/goal_schema.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/goal_variants.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/gymnasium_vec_env.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/jerk.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/job_queue.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/jobs_cli.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/json_utils.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/local_paths.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/main.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/metric_store.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_app.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_eval_backend.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_eval_config.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_eval_protocol.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_eval_storage.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/modal_eval_worker.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/model_inputs.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/model_sources.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/operator_environment.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_attribution.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_capture.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_catalog_authority.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_cnn.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_processing.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/play_termination.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_bundle.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_execution.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_model_config.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_models.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_observation.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/policy_registry.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/ppo.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/provider_data/stable_retro/Breakout-Atari2600-v0/data.json +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/publication_credentials.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/publication_evidence.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/publication_jobs.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/r2_store.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/ranking.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/recipe_catalog.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/recipe_schema.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/recipe_variants.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/reward_programs.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/reward_transform.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/rom_runtime.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/routed_policy.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/run_authority.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/runtime_contract.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/sb3_models.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/schedules.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/seeds.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/supervision_fault_learner.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/supervisor_ledger.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/supervisor_runtime.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/task_advantage.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/templates/model_card_v3.md.j2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/templates/model_card_v4.md.j2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/train.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/train_config.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/__init__.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/go_explore.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/jerk.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/ppo.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/sb3.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/sb3_helpers.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training/sb3_vec_env.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training_backend.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training_lifecycle.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training_tui.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/training_tui.tcss +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/trusted_inputs.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/validation.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/video.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_leaders.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_reports.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/wandb_utils.py +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/documents/diff.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/documents/syntax.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/documents/viewer.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/episode-report.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/favicon.svg +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/fonts/ChivoVariable.woff2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/fonts/InterVariable-Italic.woff2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/fonts/InterVariable.woff2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/fonts/JetBrainsMonoVariable-Italic.woff2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/fonts/JetBrainsMonoVariable.woff2 +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/oauth_complete.html +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/oauth_complete.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/action-contract.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/controls.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/diagnostic-overlays.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/layout-sizing.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/raw.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/panels/shared.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/tabler-chevron-down.svg +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/vendor/gridstack/gridstack-all.js +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/web_player/vendor/gridstack/gridstack.min.css +0 -0
- {gradlab-0.1.2 → gradlab-0.2.2}/src/gradlab/youtube_publication.py +0 -0
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
# Metrics schema
|
|
1
|
+
# Metrics schema v20
|
|
2
2
|
|
|
3
3
|
This file is the source of truth for gradlab telemetry. The Python registry loads the table below
|
|
4
4
|
and requires every emitted metric to match an exact registry entry or a bounded template.
|
|
5
5
|
|
|
6
|
+
`Training Success` is a provisional Run classification produced by a Research Goal's declared
|
|
7
|
+
threshold over training-time metrics. It is a cheap proxy used to classify and compare Runs; it
|
|
8
|
+
does not establish that a Research Goal is solved. `Acceptance` is the separate determination from
|
|
9
|
+
an Evaluated Goal's stricter checkpoint evaluation on seeds different from the training seeds.
|
|
10
|
+
Only Acceptance can authorize Promotion, and neither metric delivery nor its W&B projection is the
|
|
11
|
+
authority for that decision.
|
|
12
|
+
|
|
6
13
|
## Surfaces and dimensions
|
|
7
14
|
|
|
8
15
|
- W&B is the authoritative scientific metric surface. One supervisor process inside the training
|
|
@@ -28,7 +35,7 @@ and requires every emitted metric to match an exact registry entry or a bounded
|
|
|
28
35
|
`checkpoint_eval_contract`; the catalog must validate that expected absence against the immutable
|
|
29
36
|
recipe and W&B run dimensions without suppressing otherwise compatible training-proxy history.
|
|
30
37
|
Full-evaluation columns remain unavailable until verified checkpoint-evaluation evidence exists.
|
|
31
|
-
- W&B config contains run-defining dimensions: `metrics_schema_version:
|
|
38
|
+
- W&B config contains run-defining dimensions: `metrics_schema_version: 20`,
|
|
32
39
|
`metrics_episode_window_size: 100`, `training_backend_id`,
|
|
33
40
|
`training_backend_config_hash`, `algorithm_id`, goal,
|
|
34
41
|
environment, starts, seed, frame skip, environment count, hyperparameters, eval protocol, and
|
|
@@ -36,9 +43,13 @@ and requires every emitted metric to match an exact registry entry or a bounded
|
|
|
36
43
|
`dstack_coordinator_id`, `dstack_project`, `dstack_task`, and `attempt_id`; these are immutable
|
|
37
44
|
run/attempt dimensions, not scientific metrics.
|
|
38
45
|
- `experiments/goals/_workspaces.yaml` is the presentation source for managed W&B project
|
|
39
|
-
workspace views. It selects registered metrics
|
|
40
|
-
scientific axes or semantics; every project
|
|
41
|
-
|
|
46
|
+
workspace views. It selects registered metrics and derives each panel title from its exact metric
|
|
47
|
+
selectors without emitting aliases or changing their scientific axes or semantics; every project
|
|
48
|
+
resolved from an active checked-in goal inherits its default profile unless the declaration
|
|
49
|
+
assigns a complete project-specific profile. Project overrides omit panels or individual metric
|
|
50
|
+
selectors that do not apply to that project's active goals and recipes rather than rendering
|
|
51
|
+
empty placeholders. A managed line panel contains one distinct measure; only mutually exclusive
|
|
52
|
+
algorithm-specific variants of that same measure share a panel.
|
|
42
53
|
- `goal_contract_sha256` is the semantic SHA-256 of the fully composed, rendered, validated goal
|
|
43
54
|
contract. Generated goal reports use it with `goal_slug` to keep current-contract leaderboards
|
|
44
55
|
comparable; noncurrent contracts are not queried or rendered.
|
|
@@ -64,10 +75,12 @@ and requires every emitted metric to match an exact registry entry or a bounded
|
|
|
64
75
|
or its bounded in-browser history, are not emitted metrics, and must not be interpreted as aliases
|
|
65
76
|
for similarly named W&B registry entries. `reward/provider` is the provider output before the
|
|
66
77
|
task program and gradlab-owned reward transform; `reward/shaped` is the final policy-facing reward
|
|
67
|
-
after task shaping, scaling, and clipping. Playback computes
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
78
|
+
after task shaping, scaling, and clipping. Playback computes return-to-go and `V(s) - G(s)` only
|
|
79
|
+
for a completed, stochastic, policy-driven trajectory whose policy environment, reward stream,
|
|
80
|
+
discount, action sampling, and boundary/bootstrap semantics match training. True terminations use
|
|
81
|
+
a zero terminal value; truncations use the checkpoint critic's value of the exact final policy
|
|
82
|
+
input and display that bootstrap explicitly. Otherwise those critic diagnostics are explicitly
|
|
83
|
+
unavailable rather than numerically compared.
|
|
71
84
|
|
|
72
85
|
The active checkpoint protocol is `acceptance`; complete accepted evidence additionally emits the
|
|
73
86
|
`full` metric family. Dimension IDs must be unique and match `[A-Za-z0-9_.-]+`; unsafe IDs are
|
|
@@ -103,7 +116,7 @@ Asynchronous evaluations may arrive after later training rows without changing t
|
|
|
103
116
|
X-axis. Each producer writes only its applicable scientific axis; durable delivery order uses
|
|
104
117
|
`orchestration/event/sequence`.
|
|
105
118
|
|
|
106
|
-
Current runs declare schema
|
|
119
|
+
Current runs declare schema v20, and the supervisor validates and emits only v20 names. GradLab
|
|
107
120
|
does not read, project, or preserve noncurrent W&B or R2 schemas.
|
|
108
121
|
|
|
109
122
|
All metrics whose path contains `rolling` use the run-configured
|
|
@@ -124,7 +137,16 @@ metric path. `cumulative` explicitly means all eligible observations seen so far
|
|
|
124
137
|
absent from the policy observation, visually similar early and late states are aliased for the
|
|
125
138
|
critic, which can amplify the terminal-horizon discrepancy. Learner explained variance uses its
|
|
126
139
|
rollout value targets and is not the same statistic as a single playback trajectory's
|
|
127
|
-
`V(s) - G(s)`.
|
|
140
|
+
`V(s) - G(s)`. A true termination closes the return with zero future value. A truncation does not:
|
|
141
|
+
the unobserved continuation prevents a fully realized Monte Carlo `G(s)`, but a
|
|
142
|
+
truncation-compatible N-step diagnostic can close the trace with the exact final policy input's
|
|
143
|
+
critic value: `Ĝ_t = r_t + γ r_{t+1} + … + γ^{T-t} V(s_T)`. That quantity is partly bootstrapped,
|
|
144
|
+
not a fully realized return or generally the learner's GAE lambda-return, and is valid for critic
|
|
145
|
+
comparison only when the final observation, preprocessing and conditioning, checkpoint critic,
|
|
146
|
+
discount, and truncation semantics match the training value contract. Playback labels this
|
|
147
|
+
bootstrap when it computes the diagnostic and withholds the comparison if the exact final-state
|
|
148
|
+
critic value is unavailable; treating truncation as termination by substituting a zero bootstrap
|
|
149
|
+
would fabricate a misleading residual.
|
|
128
150
|
- Mario recipes disable automatic checkpoint evaluation and stop when
|
|
129
151
|
`train/outcome/success/starts/all/rolling/rate/min` first reaches one. For a single start,
|
|
130
152
|
that means 100 consecutive genuine target-origin clears; for multiple starts, every configured
|
|
@@ -170,8 +192,11 @@ metric path. `cumulative` explicitly means all eligible observations seen so far
|
|
|
170
192
|
action-space-only minimum or maximum. The bounds remain a pure policy-space calculation used by
|
|
171
193
|
diagnostics and are not duplicated as W&B metrics.
|
|
172
194
|
- Actor-critic explained variance is `1 - Var(value_target - value_prediction) /
|
|
173
|
-
Var(value_target)`: one
|
|
174
|
-
|
|
195
|
+
Var(value_target)`: one means the residual variance is zero (perfect up to a constant prediction
|
|
196
|
+
offset), zero means the critic explains no more target variance than a constant baseline, and
|
|
197
|
+
negative values are worse than that baseline. Because variance centers the residuals, explained
|
|
198
|
+
variance alone does not detect constant value bias; pair it with residual bias or calibration
|
|
199
|
+
measures when absolute accuracy matters. A near-zero value is not by
|
|
175
200
|
itself evidence of exploding value loss. Pair it with value-prediction and advantage dispersion:
|
|
176
201
|
predictions with much less dispersion than the residual advantages indicate a mostly
|
|
177
202
|
state-insensitive baseline, while tiny target variance can make the ratio ill-conditioned.
|
|
@@ -198,6 +223,28 @@ metric path. `cumulative` explicitly means all eligible observations seen so far
|
|
|
198
223
|
evaluation performance. A threshold condition with `progress_baseline` additionally emits
|
|
199
224
|
`train/early_stop/{condition}/target/progress` as the current metric's clamped fraction from that
|
|
200
225
|
baseline to its threshold. Only goal-owned checkpoint evaluation may establish acceptance.
|
|
226
|
+
- `train/episode/length/origin/all/rolling/mean` counts policy transitions, so one step represents
|
|
227
|
+
four native frames in the current Breakout contract. It combines target- and archive-origin
|
|
228
|
+
episodes and is therefore not a clean survival comparison when archive curricula differ. Within
|
|
229
|
+
identical start, frame-skip, reset, and termination contracts, increasing length can indicate
|
|
230
|
+
better ball defense when target return or progress also improves and failure-reason rates do not;
|
|
231
|
+
it can instead reflect delayed serving, low-progress play, or the episode cap, while faster wall
|
|
232
|
+
completion can shorten a successful episode. Treat it as a diagnostic, not a monotonic success or
|
|
233
|
+
acceptance measure.
|
|
234
|
+
- Breakout declares `score` as reward-independent episode progress.
|
|
235
|
+
`train/progress/score/origin/target/rolling/mean` is the mean terminal provider-native Atari
|
|
236
|
+
score over the most recent target-origin episodes, including warm-up before the 100-episode
|
|
237
|
+
window is full. GradLab-owned life-loss and serve-stall penalties do not change it. Atari score
|
|
238
|
+
weights brick rows differently, so this metric is not a brick count; it remains an online
|
|
239
|
+
behavior-policy training proxy rather than frozen-checkpoint evaluation evidence.
|
|
240
|
+
- Breakout also declares `bricks_destroyed` and `bricks_destroyed_normalized` as
|
|
241
|
+
reward-independent episode progress. Their `train/progress/{progress}/origin/target/rolling/mean`
|
|
242
|
+
metrics average the terminal cumulative values over the most recent 100 target-origin episodes,
|
|
243
|
+
while `train/progress/{progress}/origin/target/rolling/max` reports the maximum over that same
|
|
244
|
+
window. The normalized value is the `0.0..1.0` two-wall completion fraction. Both statistics
|
|
245
|
+
include warm-up before the window is full and are online behavior-policy training proxies rather
|
|
246
|
+
than frozen-checkpoint evaluation evidence. Breakout ranks runs first by the rolling maximum
|
|
247
|
+
terminal `bricks_destroyed` count, then by the earliest training step.
|
|
201
248
|
- Training episode reduction aggregates return, length, outcome, success, the explicitly supported
|
|
202
249
|
target-origin cell-novelty statistic, and goal-declared numeric episode progress fields.
|
|
203
250
|
Progress field names refer to task-semantic signals and must be populated independently of the
|
|
@@ -217,11 +264,19 @@ metric path. `cumulative` explicitly means all eligible observations seen so far
|
|
|
217
264
|
between-rollout time includes optimizer updates, callbacks, and logging, so it is deliberately
|
|
218
265
|
not named optimization time. The corresponding rates are
|
|
219
266
|
`train/throughput/loop/rate` and `train/throughput/provider/step/rate`.
|
|
220
|
-
- Reward components are emitted only when
|
|
267
|
+
- Reward components are emitted only when configured. Each component mean includes every policy
|
|
268
|
+
transition in the rollout, including zero-valued transitions; nonzero rate separately reports
|
|
269
|
+
the fraction on which the component contributed. Each component also has an absolute share;
|
|
221
270
|
raw reward appears only when it differs from shaped reward. Mario's `progress` component includes
|
|
222
271
|
both its base new-progress reward and any configured additional new-progress reward above
|
|
223
|
-
`progress_reward_boost_start_x`.
|
|
224
|
-
|
|
272
|
+
`progress_reward_boost_start_x`. An identity task's `event` component is the sum of its declared
|
|
273
|
+
signed `event_rewards` for events firing on that transition. Its per-event reward metrics split
|
|
274
|
+
that sum by declared event. An identity `equals` event contributes on every policy transition
|
|
275
|
+
whose post-transition signal matches; `previous_equals` contributes when the signal at the start
|
|
276
|
+
of the transition matches, using the reset signal on the first transition when available;
|
|
277
|
+
`equals_for` contributes only when the consecutive-match counter first reaches its threshold.
|
|
278
|
+
ViZDoom Deathmatch's optional `sample-factory-v0` shape
|
|
279
|
+
exposes `kill`, `death`, `hit`, `damage`, `health`, `armor`, `weapon`, `ammo`, and `weapon_hold`
|
|
225
280
|
components; their sum is the pre-transform task reward and excludes the replaced provider reward.
|
|
226
281
|
- The player's protocol-v8 Reward analysis ledger is local playback telemetry, not a W&B metric.
|
|
227
282
|
It shows raw component values, multiplies each impact by the unit-interval reward scale,
|
|
@@ -254,9 +309,11 @@ metric path. `cumulative` explicitly means all eligible observations seen so far
|
|
|
254
309
|
- Episode-return means are neither a best-episode metric nor the score of a currently visible lane:
|
|
255
310
|
they reduce the configured recent episode window across all applicable vector lanes. W&B chart
|
|
256
311
|
smoothing, when enabled, is applied on top of that already-rolling value. Under the root Breakout
|
|
257
|
-
contract (`reward_mode: native`, unclipped), shaped episode return is the sum of Atari
|
|
258
|
-
|
|
259
|
-
|
|
312
|
+
goal contract (`reward_mode: native`, unclipped), shaped episode return is the sum of Atari
|
|
313
|
+
row-score deltas unless a recipe declares additional shaping. The checked-in Breakout `ppo`
|
|
314
|
+
recipe subtracts five through its `event` reward component whenever `lives` decreases, so its
|
|
315
|
+
shaped episode return is native score minus five per life lost. Individual 400-plus games can
|
|
316
|
+
coexist with a much lower mean when other lanes finish with lower scores.
|
|
260
317
|
- Episode returns, success rates, failure reasons, policy entropy, and optimizer diagnostics
|
|
261
318
|
describe performance or mechanism; no one of them should be treated as a generic stall-stop
|
|
262
319
|
signal. A configured plateau condition may watch any registered numeric training metric, with
|
|
@@ -353,10 +410,13 @@ unevaluated for future explicit user action. dstack process exit alone is never
|
|
|
353
410
|
|---|---|---|---|---|---|---|
|
|
354
411
|
| `train/episode/return/shaped/origin/target/rolling/mean` | Recent target return mean | Mean shaped return over the most recent genuine target-origin episodes, including warm-up before the configured window is full. | return | rollout | history | last |
|
|
355
412
|
| `train/episode/return/shaped/origin/target/rolling/max` | Recent target return max | Maximum shaped return over the same recent target-origin episodes as the rolling mean. | return | rollout | history | last |
|
|
356
|
-
| `train/episode/length/origin/all/rolling/mean` | Recent episode length mean | Mean
|
|
413
|
+
| `train/episode/length/origin/all/rolling/mean` | Recent episode length mean | Mean policy-transition count over the most recent genuine completed episodes across target and archive origins. | steps | rollout | history | last |
|
|
357
414
|
| `train/exploration/cell/unique/origin/target/rolling/mean` | Recent target unique cells mean | Mean episodic unique-cell count over recent target-origin episodes when cell-novelty shaping is active; the reset cell is included. | cells | rollout | history | last |
|
|
358
415
|
| `train/progress/{progress}/origin/target/rolling/mean` | Recent target {progress} mean | Mean of a goal-declared finite numeric progress field over recent genuine target-origin episodes. | value | rollout | history | last |
|
|
416
|
+
| `train/progress/{progress}/origin/target/rolling/max` | Recent target {progress} max | Maximum of a goal-declared finite numeric progress field over recent genuine target-origin episodes. | value | rollout | history | last |
|
|
359
417
|
| `train/episode/completed/count` | Completed episodes | Cumulative genuine completed training episodes across origins. | episodes | rollout | history | last |
|
|
418
|
+
| `train/outcome/failure/reason/{reason}/count` | Failure {reason} count | Cumulative unsuccessful completed episodes containing the reason; reason presence is counted at most once per episode. | episodes | rollout | history | last |
|
|
419
|
+
| `train/outcome/failure/reason/{reason}/rolling/count` | Recent failure {reason} count | Unsuccessful completed episodes containing the reason among the most recent 100 genuine completed episodes, including warm-up before the window is full; reason presence is counted at most once per episode. | episodes | rollout | history | last |
|
|
360
420
|
| `train/outcome/failure/reason/{reason}/rolling/rate` | Recent failure {reason} rate | Recent unsuccessful completed episodes containing the reason divided by all recent completed episodes; reason presence is boolean per episode. | fraction | rollout | history | last |
|
|
361
421
|
| `train/outcome/success/start/{start}/episode/count` | Successful target episodes from {start} | Cumulative successful genuine target-origin episodes from one start. | episodes | rollout | history | last |
|
|
362
422
|
| `train/outcome/success/start/{start}/rolling/rate` | Recent success rate from {start} | Success fraction over recent genuine target-origin attempts from one start. | fraction | rollout | history | last |
|
|
@@ -371,9 +431,11 @@ unevaluated for future explicit user action. dstack process exit alone is never
|
|
|
371
431
|
| `train/reward/shaped/nonzero/rate` | Shaped nonzero reward rate | Fraction of learner-facing per-step rewards that are nonzero after scaling and clipping. | fraction | rollout | history | last |
|
|
372
432
|
| `train/reward/raw/mean` | Raw reward mean | Mean completed task reward immediately before gradlab-owned scaling and clipping, emitted when distinct from shaped reward. | scalar | rollout | history | last |
|
|
373
433
|
| `train/reward/raw/std` | Raw reward std | Standard deviation of completed task reward immediately before gradlab-owned scaling and clipping, emitted when distinct from shaped reward. | scalar | rollout | history | last |
|
|
374
|
-
| `train/reward/component/{component}/mean` | Reward {component} mean | Mean
|
|
434
|
+
| `train/reward/component/{component}/mean` | Reward {component} mean | Mean configured reward-component contribution over every policy transition in the rollout, including zero-valued transitions, in pre-transform task-reward units. | scalar | rollout | history | last |
|
|
375
435
|
| `train/reward/component/{component}/nonzero/rate` | Reward {component} activity rate | Fraction of active reward-component values that are nonzero. | fraction | rollout | history | last |
|
|
376
436
|
| `train/reward/component/{component}/share` | Reward {component} share | Absolute contribution share computed from components in pre-transform task-reward units. | fraction | rollout | history | last |
|
|
437
|
+
| `train/reward/event/{event}/mean` | Reward event {event} mean | Mean contribution from one declared event reward in pre-transform task-reward units. | scalar | rollout | history | last |
|
|
438
|
+
| `train/reward/event/{event}/nonzero/rate` | Reward event {event} activity rate | Fraction of policy transitions on which one declared event reward contributes a nonzero value. | fraction | rollout | history | last |
|
|
377
439
|
| `train/algorithm/ppo/update/approx_kl` | PPO approximate KL | Approximate KL divergence for the PPO update. | scalar | rollout | history | last |
|
|
378
440
|
| `train/algorithm/ppo/update/clip_fraction` | PPO clip fraction | Fraction of sampled policy ratios outside PPO's clipping interval. | fraction | rollout | history | last |
|
|
379
441
|
| `train/algorithm/jerk/retained/count` | JERK retained sequences | Distinct action sequences retained by JERK search. | sequences | rollout | history | last |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: gradlab
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Generic reinforcement-learning lab for training and evaluating game agents
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -9,12 +9,18 @@ Requires-Dist: aiohttp<4,>=3.14.3
|
|
|
9
9
|
Requires-Dist: ale-py<0.13,>=0.12
|
|
10
10
|
Requires-Dist: boto3<2,>=1.34
|
|
11
11
|
Requires-Dist: box2d-py==2.3.5
|
|
12
|
-
Requires-Dist: breakout-turbo-env==0.5.5; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
13
|
-
Requires-Dist: breakout-turbo-env==0.5.5; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
14
12
|
Requires-Dist: captum<1,>=0.9
|
|
15
13
|
Requires-Dist: certifi>=2026.5.20
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
14
|
+
Requires-Dist: env-breakoutatari2600-turbo-native==0.5.11; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
15
|
+
Requires-Dist: env-breakoutatari2600-turbo-native==0.5.11; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
16
|
+
Requires-Dist: env-gradoom-turbo-torch==0.2.1; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
17
|
+
Requires-Dist: env-gradoom-turbo-torch==0.2.1; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
18
|
+
Requires-Dist: env-stableretro-turbo==1.0.1.post48; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
19
|
+
Requires-Dist: env-stableretro-turbo==1.0.1.post48; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
20
|
+
Requires-Dist: env-supermariobrosnes-turbo-emu==0.7.3; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
21
|
+
Requires-Dist: env-supermariobrosnes-turbo-emu==0.7.3; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
22
|
+
Requires-Dist: env-vizdoom-turbo==1.3.0.post30; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
23
|
+
Requires-Dist: env-vizdoom-turbo==1.3.0.post30; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
18
24
|
Requires-Dist: gymnasium<1.3,>=1.2
|
|
19
25
|
Requires-Dist: huggingface-hub<2,>=1.0
|
|
20
26
|
Requires-Dist: jinja2<4,>=3.1
|
|
@@ -28,17 +34,11 @@ Requires-Dist: pygame-ce<3,>=2.5
|
|
|
28
34
|
Requires-Dist: pyyaml<7,>=6
|
|
29
35
|
Requires-Dist: rich<16,>=15
|
|
30
36
|
Requires-Dist: stable-baselines3<3,>=2.3
|
|
31
|
-
Requires-Dist: stable-retro-turbo==1.0.1.post43; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
32
|
-
Requires-Dist: stable-retro-turbo==1.0.1.post43; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
33
|
-
Requires-Dist: supermariobrosnes-turbo==0.6.6; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
34
|
-
Requires-Dist: supermariobrosnes-turbo==0.6.6; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
35
37
|
Requires-Dist: tensorboard<3,>=2.16
|
|
36
38
|
Requires-Dist: textual<9,>=8.2.8
|
|
37
39
|
Requires-Dist: torch==2.13.0; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
38
40
|
Requires-Dist: torch==2.13.0; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
39
41
|
Requires-Dist: tqdm<5,>=4.67
|
|
40
|
-
Requires-Dist: vizdoom-turbo==1.3.0.post26; sys_platform == 'darwin' and platform_machine == 'arm64'
|
|
41
|
-
Requires-Dist: vizdoom-turbo==1.3.0.post26; sys_platform == 'linux' and platform_machine == 'x86_64'
|
|
42
42
|
Requires-Dist: wandb-workspaces<0.5,>=0.4
|
|
43
43
|
Requires-Dist: wandb<0.23,>=0.18
|
|
44
44
|
Provides-Extra: dataset
|
|
@@ -64,7 +64,7 @@ with portable policies and evidence-backed results.
|
|
|
64
64
|
Try the bundled ROM-free smoke recipe without cloning, credentials, or a ROM:
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
uvx gradlab@0.
|
|
67
|
+
uvx gradlab@0.2.2 train gradlab__bandit/ppo
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
The run writes a directly playable policy below `~/.config/gradlab/runs/`.
|
|
@@ -110,8 +110,9 @@ gradlab train Blackjack-v1/ppo
|
|
|
110
110
|
|
|
111
111
|
Use `gymnasium:<environment-id>` for the qualified environment ID. These goals
|
|
112
112
|
use isolated spawned lanes, explicit masked resets, native rewards, and RGB
|
|
113
|
-
rendering through the same training,
|
|
114
|
-
workflows as other GradLab providers.
|
|
113
|
+
rendering through the same training, checkpoint-publication, and playback
|
|
114
|
+
workflows as other GradLab providers. They can establish Training Success but
|
|
115
|
+
cannot establish Acceptance, Promotion, or Release. Native categorical observations remain
|
|
115
116
|
categorical; Blackjack uses the fixed `MultiDiscrete([32, 11, 2])` encoding
|
|
116
117
|
`(player sum, dealer card, usable ace)`.
|
|
117
118
|
|
|
@@ -165,20 +166,28 @@ install -m 600 ops/operator.example.toml ~/.config/gradlab/operator.toml
|
|
|
165
166
|
gradlab experiment operator-preflight --json
|
|
166
167
|
```
|
|
167
168
|
|
|
168
|
-
Then launch a checked-in
|
|
169
|
-
description:
|
|
169
|
+
Then launch a checked-in recipe using its resolved goal and bounded defaults:
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
172
|
gradlab experiment launch \
|
|
173
|
-
--goal-file experiments/goals/SuperMarioBros-Nes-v0/Level1-1/_goal.yaml \
|
|
174
173
|
--recipe-file experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/ppo.yaml \
|
|
175
|
-
--
|
|
176
|
-
--run-description "Mario Level1-1 PPO seed 123" \
|
|
177
|
-
--compute local \
|
|
178
|
-
--max-duration 48h \
|
|
179
|
-
--json
|
|
174
|
+
--follow
|
|
180
175
|
```
|
|
181
176
|
|
|
177
|
+
The recipe path identifies its owning goal. The launch seed defaults to `12`,
|
|
178
|
+
the description defaults to `<goal> <recipe> seed <seed>`, compute defaults to
|
|
179
|
+
the configured local fleet, and maximum duration defaults to 48 hours.
|
|
180
|
+
`--follow` keeps the command attached after submission, streams authoritative
|
|
181
|
+
run-state changes, and exits when training and its terminal drain are complete.
|
|
182
|
+
Interrupting the client stops the stream without canceling the remote run. Omit
|
|
183
|
+
the flag to retain asynchronous submission. Add `--json` for typed JSON Lines
|
|
184
|
+
events (`launch`, `status`, and `terminal`).
|
|
185
|
+
|
|
186
|
+
When the selected coordinator declares `ssh_tunnel` metadata in private
|
|
187
|
+
`operator.toml`, this same command reuses an existing local endpoint or opens a
|
|
188
|
+
temporary SSH tunnel automatically. The tunnel remains attached for the full
|
|
189
|
+
command and is closed on exit only when GradLab created it.
|
|
190
|
+
|
|
182
191
|
Local compute requires an enrolled fleet in
|
|
183
192
|
`~/.config/gradlab/instances.md`. Paid cloud compute is always bounded and
|
|
184
193
|
explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
@@ -189,9 +198,9 @@ explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
|
189
198
|
- GradLab requires Python 3.14 and uses `uv` with a committed lockfile and a
|
|
190
199
|
seven-day dependency age gate. Supported binary targets are macOS arm64 and
|
|
191
200
|
Linux x86_64.
|
|
192
|
-
- Local `gradlab train`
|
|
193
|
-
They
|
|
194
|
-
|
|
201
|
+
- Local `gradlab train` Runs disable W&B and acceptance evaluation by default.
|
|
202
|
+
They can establish Training Success but cannot establish Acceptance or
|
|
203
|
+
Promotion.
|
|
195
204
|
- `gradlab.ppo` is the opt-in tensor-native PPO backend. It accepts the
|
|
196
205
|
`sb3.ppo` configuration surface plus `precision` (`fp32`, `amp-fp16`, or
|
|
197
206
|
`amp-bf16`) and an `execution_profile`. `sb3-parity` preserves SB3's eager,
|
|
@@ -210,9 +219,11 @@ explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
|
210
219
|
- dstack task success is not scientific success. A queued run succeeds only
|
|
211
220
|
when its terminal receipt proves checkpoint publication, evaluation drain,
|
|
212
221
|
promotion state, and metric delivery.
|
|
213
|
-
- [SPECS.md](SPECS.md) defines product requirements,
|
|
214
|
-
|
|
215
|
-
|
|
222
|
+
- [SPECS.md](SPECS.md) defines project-wide product requirements,
|
|
223
|
+
[docs/specs/](docs/specs/README.md) defines scoped product requirements,
|
|
224
|
+
[METRICS.md](METRICS.md) defines metric semantics, and
|
|
225
|
+
[experiments/README.md](experiments/README.md) explains the checked-in
|
|
226
|
+
research contracts.
|
|
216
227
|
|
|
217
228
|
## Architecture
|
|
218
229
|
|
|
@@ -12,7 +12,7 @@ with portable policies and evidence-backed results.
|
|
|
12
12
|
Try the bundled ROM-free smoke recipe without cloning, credentials, or a ROM:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
uvx gradlab@0.
|
|
15
|
+
uvx gradlab@0.2.2 train gradlab__bandit/ppo
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
The run writes a directly playable policy below `~/.config/gradlab/runs/`.
|
|
@@ -58,8 +58,9 @@ gradlab train Blackjack-v1/ppo
|
|
|
58
58
|
|
|
59
59
|
Use `gymnasium:<environment-id>` for the qualified environment ID. These goals
|
|
60
60
|
use isolated spawned lanes, explicit masked resets, native rewards, and RGB
|
|
61
|
-
rendering through the same training,
|
|
62
|
-
workflows as other GradLab providers.
|
|
61
|
+
rendering through the same training, checkpoint-publication, and playback
|
|
62
|
+
workflows as other GradLab providers. They can establish Training Success but
|
|
63
|
+
cannot establish Acceptance, Promotion, or Release. Native categorical observations remain
|
|
63
64
|
categorical; Blackjack uses the fixed `MultiDiscrete([32, 11, 2])` encoding
|
|
64
65
|
`(player sum, dealer card, usable ace)`.
|
|
65
66
|
|
|
@@ -113,20 +114,28 @@ install -m 600 ops/operator.example.toml ~/.config/gradlab/operator.toml
|
|
|
113
114
|
gradlab experiment operator-preflight --json
|
|
114
115
|
```
|
|
115
116
|
|
|
116
|
-
Then launch a checked-in
|
|
117
|
-
description:
|
|
117
|
+
Then launch a checked-in recipe using its resolved goal and bounded defaults:
|
|
118
118
|
|
|
119
119
|
```bash
|
|
120
120
|
gradlab experiment launch \
|
|
121
|
-
--goal-file experiments/goals/SuperMarioBros-Nes-v0/Level1-1/_goal.yaml \
|
|
122
121
|
--recipe-file experiments/goals/SuperMarioBros-Nes-v0/Level1-1/recipes/ppo.yaml \
|
|
123
|
-
--
|
|
124
|
-
--run-description "Mario Level1-1 PPO seed 123" \
|
|
125
|
-
--compute local \
|
|
126
|
-
--max-duration 48h \
|
|
127
|
-
--json
|
|
122
|
+
--follow
|
|
128
123
|
```
|
|
129
124
|
|
|
125
|
+
The recipe path identifies its owning goal. The launch seed defaults to `12`,
|
|
126
|
+
the description defaults to `<goal> <recipe> seed <seed>`, compute defaults to
|
|
127
|
+
the configured local fleet, and maximum duration defaults to 48 hours.
|
|
128
|
+
`--follow` keeps the command attached after submission, streams authoritative
|
|
129
|
+
run-state changes, and exits when training and its terminal drain are complete.
|
|
130
|
+
Interrupting the client stops the stream without canceling the remote run. Omit
|
|
131
|
+
the flag to retain asynchronous submission. Add `--json` for typed JSON Lines
|
|
132
|
+
events (`launch`, `status`, and `terminal`).
|
|
133
|
+
|
|
134
|
+
When the selected coordinator declares `ssh_tunnel` metadata in private
|
|
135
|
+
`operator.toml`, this same command reuses an existing local endpoint or opens a
|
|
136
|
+
temporary SSH tunnel automatically. The tunnel remains attached for the full
|
|
137
|
+
command and is closed on exit only when GradLab created it.
|
|
138
|
+
|
|
130
139
|
Local compute requires an enrolled fleet in
|
|
131
140
|
`~/.config/gradlab/instances.md`. Paid cloud compute is always bounded and
|
|
132
141
|
explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
@@ -137,9 +146,9 @@ explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
|
137
146
|
- GradLab requires Python 3.14 and uses `uv` with a committed lockfile and a
|
|
138
147
|
seven-day dependency age gate. Supported binary targets are macOS arm64 and
|
|
139
148
|
Linux x86_64.
|
|
140
|
-
- Local `gradlab train`
|
|
141
|
-
They
|
|
142
|
-
|
|
149
|
+
- Local `gradlab train` Runs disable W&B and acceptance evaluation by default.
|
|
150
|
+
They can establish Training Success but cannot establish Acceptance or
|
|
151
|
+
Promotion.
|
|
143
152
|
- `gradlab.ppo` is the opt-in tensor-native PPO backend. It accepts the
|
|
144
153
|
`sb3.ppo` configuration surface plus `precision` (`fp32`, `amp-fp16`, or
|
|
145
154
|
`amp-bf16`) and an `execution_profile`. `sb3-parity` preserves SB3's eager,
|
|
@@ -158,9 +167,11 @@ explicitly authorized. See [COMPUTE.md](COMPUTE.md) and the
|
|
|
158
167
|
- dstack task success is not scientific success. A queued run succeeds only
|
|
159
168
|
when its terminal receipt proves checkpoint publication, evaluation drain,
|
|
160
169
|
promotion state, and metric delivery.
|
|
161
|
-
- [SPECS.md](SPECS.md) defines product requirements,
|
|
162
|
-
|
|
163
|
-
|
|
170
|
+
- [SPECS.md](SPECS.md) defines project-wide product requirements,
|
|
171
|
+
[docs/specs/](docs/specs/README.md) defines scoped product requirements,
|
|
172
|
+
[METRICS.md](METRICS.md) defines metric semantics, and
|
|
173
|
+
[experiments/README.md](experiments/README.md) explains the checked-in
|
|
174
|
+
research contracts.
|
|
164
175
|
|
|
165
176
|
## Architecture
|
|
166
177
|
|
|
@@ -9,14 +9,18 @@ tags:
|
|
|
9
9
|
title: Atari 2600 Breakout wall completion
|
|
10
10
|
objective:
|
|
11
11
|
rank:
|
|
12
|
-
- max(train/
|
|
12
|
+
- max(train/progress/bricks_destroyed/origin/target/rolling/max)
|
|
13
13
|
- min(train/global_step)
|
|
14
14
|
train:
|
|
15
15
|
checkpoint_freq: 500000
|
|
16
|
+
episode_progress_fields:
|
|
17
|
+
- score
|
|
18
|
+
- bricks_destroyed
|
|
19
|
+
- bricks_destroyed_normalized
|
|
16
20
|
environment:
|
|
17
21
|
# Breakout Turbo is the default ROM-free implementation. The complete contract is
|
|
18
22
|
# intentionally accepted by Stable Retro Turbo so only env_provider needs to change.
|
|
19
|
-
env_provider: &breakout_provider
|
|
23
|
+
env_provider: &breakout_provider env-breakoutatari2600-turbo-native
|
|
20
24
|
env_config:
|
|
21
25
|
<<: &breakout_env_config
|
|
22
26
|
game: Breakout-Atari2600-v0
|
|
@@ -56,6 +60,16 @@ train:
|
|
|
56
60
|
action:
|
|
57
61
|
# GradLab normalizes both providers to 0=NOOP, 1=FIRE, 2=RIGHT, 3=LEFT.
|
|
58
62
|
set: native
|
|
63
|
+
conditional_overrides:
|
|
64
|
+
- id: auto_serve
|
|
65
|
+
when:
|
|
66
|
+
signal: ball_y
|
|
67
|
+
operation: equals
|
|
68
|
+
value: 0
|
|
69
|
+
replace_with:
|
|
70
|
+
# Stable Retro names the Atari controller trigger BUTTON; in Breakout
|
|
71
|
+
# this is the FIRE action that launches the waiting ball.
|
|
72
|
+
semantic_id: button
|
|
59
73
|
signals:
|
|
60
74
|
ball_y: ball_y
|
|
61
75
|
walls_cleared: walls_cleared
|
|
@@ -66,6 +80,8 @@ train:
|
|
|
66
80
|
ball_vy: ball_vy
|
|
67
81
|
# The live-state curriculum groups reachable Breakout states by score stage.
|
|
68
82
|
score: score
|
|
83
|
+
bricks_destroyed: bricks_destroyed
|
|
84
|
+
bricks_destroyed_normalized: bricks_destroyed_normalized
|
|
69
85
|
events:
|
|
70
86
|
serve_stall:
|
|
71
87
|
signal: ball_y
|
|
@@ -82,3 +98,5 @@ train:
|
|
|
82
98
|
reward_mode: native
|
|
83
99
|
reward_scale: 1.0
|
|
84
100
|
reward_clip: false
|
|
101
|
+
event_rewards:
|
|
102
|
+
serve_stall: -5.0
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
- ../../../recipes/_presets/breakout-ball-state-ablation-ppo@_global_
|
|
3
|
+
- _self_
|
|
4
|
+
recipe_id: ppo-ball-state
|
|
5
|
+
description: Native Breakout PPO with centered ball position, velocity, and paddle position fused after the visual encoder.
|
|
6
|
+
train:
|
|
7
|
+
environment:
|
|
8
|
+
task:
|
|
9
|
+
model_inputs:
|
|
10
|
+
schema_version: 1
|
|
11
|
+
context:
|
|
12
|
+
ball_x:
|
|
13
|
+
signal: policy_ball_x
|
|
14
|
+
update: transition
|
|
15
|
+
encoding:
|
|
16
|
+
kind: continuous
|
|
17
|
+
scale: 2.0
|
|
18
|
+
offset: -1.0
|
|
19
|
+
# Provider ratios deliberately preserve off-viewport values.
|
|
20
|
+
low: null
|
|
21
|
+
high: null
|
|
22
|
+
clip: false
|
|
23
|
+
ball_y:
|
|
24
|
+
signal: policy_ball_y
|
|
25
|
+
update: transition
|
|
26
|
+
encoding:
|
|
27
|
+
kind: continuous
|
|
28
|
+
scale: 2.0
|
|
29
|
+
offset: -1.0
|
|
30
|
+
low: null
|
|
31
|
+
high: null
|
|
32
|
+
clip: false
|
|
33
|
+
ball_vx:
|
|
34
|
+
signal: policy_ball_vx
|
|
35
|
+
update: transition
|
|
36
|
+
encoding:
|
|
37
|
+
kind: continuous
|
|
38
|
+
scale: 1.0
|
|
39
|
+
offset: 0.0
|
|
40
|
+
low: null
|
|
41
|
+
high: null
|
|
42
|
+
clip: false
|
|
43
|
+
ball_vy:
|
|
44
|
+
signal: policy_ball_vy
|
|
45
|
+
update: transition
|
|
46
|
+
encoding:
|
|
47
|
+
kind: continuous
|
|
48
|
+
scale: 1.0
|
|
49
|
+
offset: 0.0
|
|
50
|
+
low: null
|
|
51
|
+
high: null
|
|
52
|
+
clip: false
|
|
53
|
+
paddle_x:
|
|
54
|
+
signal: policy_paddle_x
|
|
55
|
+
update: transition
|
|
56
|
+
encoding:
|
|
57
|
+
kind: continuous
|
|
58
|
+
scale: 2.0
|
|
59
|
+
offset: -1.0
|
|
60
|
+
low: null
|
|
61
|
+
high: null
|
|
62
|
+
clip: false
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
- ../../../recipes/_presets/breakout-high-throughput-ppo@_global_
|
|
3
|
+
- _self_
|
|
4
|
+
recipe_id: ppo
|
|
5
|
+
description: High-throughput three-action PPO for {{ goal_id }} with learning-rate and entropy decay plus five-point life-loss and serve-stall penalties.
|
|
6
|
+
train:
|
|
7
|
+
environment:
|
|
8
|
+
env_config:
|
|
9
|
+
env_args:
|
|
10
|
+
# Both Breakout providers compile this table to the same three-action
|
|
11
|
+
# semantic contract: BUTTON/FIRE, RIGHT, LEFT. NOOP remains available
|
|
12
|
+
# only to the reset randomizer, outside the policy action space.
|
|
13
|
+
use_restricted_actions:
|
|
14
|
+
- [BUTTON]
|
|
15
|
+
- [RIGHT]
|
|
16
|
+
- [LEFT]
|
|
17
|
+
task:
|
|
18
|
+
signals:
|
|
19
|
+
lives: lives
|
|
20
|
+
events:
|
|
21
|
+
life_loss:
|
|
22
|
+
signal: lives
|
|
23
|
+
operation: decrease
|
|
24
|
+
reward:
|
|
25
|
+
event_rewards:
|
|
26
|
+
life_loss: -5.0
|
{gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/SuperMarioBros-Nes-v0/_goal-family-common.yaml
RENAMED
|
@@ -32,7 +32,7 @@ train:
|
|
|
32
32
|
action: stop
|
|
33
33
|
environment:
|
|
34
34
|
# SuperMarioBros-NES Turbo supplies SuperMarioBrosNesTurboVecEnv.
|
|
35
|
-
env_provider: &mario_env_provider supermariobrosnes-turbo
|
|
35
|
+
env_provider: &mario_env_provider env-supermariobrosnes-turbo-emu
|
|
36
36
|
env_config:
|
|
37
37
|
<<: &mario_env_config
|
|
38
38
|
# Stable Retro-compatible game id passed to SuperMarioBrosNesTurboVecEnv.
|
{gradlab-0.1.2 → gradlab-0.2.2}/experiments/goals/VizdoomDeathmatch-v1/recipes/gradoom-ppo.yaml
RENAMED
|
@@ -5,14 +5,18 @@ recipe_id: gradoom-ppo
|
|
|
5
5
|
description: GPU-resident GraDOOM Deathmatch PPO trained on one RTX 4090 and evaluated zero-shot in reference ViZDoom.
|
|
6
6
|
reward_shape: native-v1
|
|
7
7
|
train:
|
|
8
|
-
timesteps:
|
|
8
|
+
timesteps: 50000000
|
|
9
|
+
checkpoint_eval_backend: none
|
|
9
10
|
environment:
|
|
10
|
-
# Training uses GraDOOM; the goal-owned checkpoint evaluator remains vizdoom-turbo.
|
|
11
|
-
env_provider: gradoom
|
|
11
|
+
# Training uses GraDOOM; the goal-owned checkpoint evaluator remains env-vizdoom-turbo.
|
|
12
|
+
env_provider: env-gradoom-turbo-torch
|
|
12
13
|
env_config:
|
|
14
|
+
# GPU-resident GraDOOM scales to thousands of lanes; 2048 won the 128..4096
|
|
15
|
+
# time-to-rolling-kills sweep on beast-3 (~9.5k steps/s, best kills curve).
|
|
16
|
+
n_envs: 2048
|
|
13
17
|
env_args:
|
|
14
|
-
# GraDOOM is single-stream GPU execution;
|
|
15
|
-
num_threads:
|
|
18
|
+
# GraDOOM is single-stream GPU execution; the API expects None for device-backed execution.
|
|
19
|
+
num_threads: null
|
|
16
20
|
# Keep the supported eager engine until the production CUDA graph passes its release gate.
|
|
17
21
|
compile_engine: false
|
|
18
22
|
preprocessing:
|
|
@@ -75,7 +75,7 @@ train:
|
|
|
75
75
|
# Define the provider, environment, preprocessing, and task contract used for training.
|
|
76
76
|
environment:
|
|
77
77
|
# Select the environment provider and anchor it for evaluation reuse.
|
|
78
|
-
env_provider: &vizdoom_provider vizdoom-turbo
|
|
78
|
+
env_provider: &vizdoom_provider env-vizdoom-turbo
|
|
79
79
|
# Define provider-independent and provider-specific environment settings.
|
|
80
80
|
env_config:
|
|
81
81
|
# Anchor the complete base environment mapping for evaluation reuse.
|