This project uses YAML config files to manage training and inference parameters instead of command-line arguments.
- Create a config file based on
config.yaml:
cp config.yaml my_experiment.yaml-
Edit
my_experiment.yamlwith your desired parameters -
Run training:
python train.py --config my_experiment.yaml- Create a config file based on
config_inference.yaml:
cp config_inference.yaml my_inference.yaml-
Edit
my_inference.yaml(especially setckpt_pathto your model checkpoint) -
Run inference:
python inference.py --config my_inference.yamlConfig files are YAML format. Example:
# Dataset
dataset: "atlas"
protein: "1bx7"
pkl_path: "path/to/graphs.pkl"
# Model hyperparameters
latent_dim: 128
hidden_dim: 256
embedding_dim: 128
# Training
batch_size: 32
n_epochs: 500
lr: 1e-3
# ... more parametersYou can override any config parameter from the command line without editing the config file:
# Override single parameters
python train.py --config config.yaml --batch_size 64 --n_epochs 1000
# Override multiple parameters
python train.py --config config.yaml --latent_dim 256 --hidden_dim 512 --lr 5e-4The config system is implemented in utils/config.py with three main functions:
Loads a config file (YAML or JSON) and returns a dictionary.
from utils.config import load_config
config = load_config("config.yaml")Converts a config dictionary to argparse.Namespace for easy attribute access.
from utils.config import config_to_hparams
args = config_to_hparams(config)
print(args.batch_size) # Access as attributeSaves a config dictionary to a file (useful for recording training configs).
from utils.config import save_config
save_config(config, "saved_config.yaml")config.yaml: Default training config with typical hyperparametersconfig_inference.yaml: Default inference config
Create experiment-specific config files by copying and modifying these templates.
- Reproducibility: Easily save and share configs used for experiments
- Organization: Group related parameters by section
- Flexibility: Mix config file defaults with command-line overrides
- Version Control: Track config changes alongside code changes