feat(config): add YAML configuration system
- Add default_ppo.yaml template for training configurations - Create configs/README.md with usage documentation - Enable per-researcher configuration without code changes - Support YAML config files with CLI parameter overrides - Document how to set personal WandB credentials safely This allows researchers to maintain personal configs without committing credentials to the repository.
This commit is contained in:
parent
4151d2307e
commit
f31436bccd
2 changed files with 96 additions and 0 deletions
48
configs/README.md
Normal file
48
configs/README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Configuration Files
|
||||||
|
|
||||||
|
This directory contains configuration files for training experiments.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Configuration files use YAML format and allow you to specify all training parameters in one place.
|
||||||
|
|
||||||
|
### Quick Start
|
||||||
|
|
||||||
|
Copy the default configuration template:
|
||||||
|
```bash
|
||||||
|
cp configs/default_ppo.yaml configs/my_experiment.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
Edit `my_experiment.yaml` to customize your experiment settings, particularly:
|
||||||
|
- `wandb_entity`: Your WandB username or team name
|
||||||
|
- `track`: Set to `true` to enable WandB logging
|
||||||
|
- Training hyperparameters as needed
|
||||||
|
|
||||||
|
Run training with your config:
|
||||||
|
```bash
|
||||||
|
python src/train.py --config configs/my_experiment.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Override Parameters
|
||||||
|
|
||||||
|
You can override any parameter from the command line:
|
||||||
|
```bash
|
||||||
|
python src/train.py --config configs/my_experiment.yaml --learning-rate 0.001 --num-envs 32
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration for Different Users
|
||||||
|
|
||||||
|
Each researcher should create their own config file with their WandB settings:
|
||||||
|
```yaml
|
||||||
|
# configs/researcher_name.yaml
|
||||||
|
exp_name: "researcher_name_experiment"
|
||||||
|
track: true
|
||||||
|
wandb_project_name: "PPO-Modularity"
|
||||||
|
wandb_entity: "your-wandb-username" # Change this!
|
||||||
|
```
|
||||||
|
|
||||||
|
This approach allows everyone to use the codebase without modifying source files.
|
||||||
|
|
||||||
|
## Available Configurations
|
||||||
|
|
||||||
|
- `default_ppo.yaml` - Default PPO training configuration template
|
||||||
48
configs/default_ppo.yaml
Normal file
48
configs/default_ppo.yaml
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
# PPO Training Configuration Template
|
||||||
|
#
|
||||||
|
# This file provides an example configuration for PPO training.
|
||||||
|
# Copy this file and modify it for your specific experiments.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# python src/train.py --config-path configs/my_config.yaml
|
||||||
|
# Or override specific parameters:
|
||||||
|
# python src/train.py --learning-rate 0.001 --num-envs 32
|
||||||
|
|
||||||
|
# Experiment settings
|
||||||
|
exp_name: "brittle_star_ppo"
|
||||||
|
seed: 1
|
||||||
|
|
||||||
|
# Tracking settings
|
||||||
|
track: false # Set to true to enable WandB logging
|
||||||
|
wandb_project_name: "PPO-Modularity"
|
||||||
|
wandb_entity: null # Set to your WandB username or team name
|
||||||
|
|
||||||
|
# Model saving
|
||||||
|
save_model: true
|
||||||
|
checkpoint_frequency: 100 # Save checkpoint every N iterations (0 = no checkpoints)
|
||||||
|
|
||||||
|
# Environment settings
|
||||||
|
num_envs: 16
|
||||||
|
|
||||||
|
# Training hyperparameters
|
||||||
|
total_timesteps: 10000000
|
||||||
|
learning_rate: 0.00025
|
||||||
|
num_steps: 128
|
||||||
|
anneal_lr: true
|
||||||
|
|
||||||
|
# PPO specific
|
||||||
|
gamma: 0.99
|
||||||
|
gae_lambda: 0.95
|
||||||
|
num_minibatches: 4
|
||||||
|
update_epochs: 4
|
||||||
|
norm_adv: true
|
||||||
|
clip_coef: 0.1
|
||||||
|
clip_vloss: true
|
||||||
|
ent_coef: 0.01
|
||||||
|
vf_coef: 0.5
|
||||||
|
max_grad_norm: 0.5
|
||||||
|
target_kl: null
|
||||||
|
|
||||||
|
# Hardware
|
||||||
|
cuda: true
|
||||||
|
torch_deterministic: true
|
||||||
Reference in a new issue