google/gin-config

Gin provides a lightweight configuration framework for Python

What it solves

Gin eliminates the need for complex configuration objects (like protocol buffers) and tedious parameter-plumbing code. It allows developers to manage project settings and experiment parameters externally, keeping the core Python code clean while maintaining high flexibility.

How it works

Gin uses a decorator, @gin.configurable, to register functions and classes. Once registered, their parameters can be set or overridden via simple external ".gin" configuration files or command-line arguments. You can pass literal values, reference other configurable functions, or use "scopes" to apply different settings to the same function in different parts of your program.

Who it’s for

It is specifically designed for developers working on machine learning experiments—such as those using TensorFlow or PyTorch—where projects often involve many parameters nested in complex, hierarchical structures.

Highlights

  • Simple syntax for binding parameters to functions and classes.
  • Supports hierarchical configuration by wiring modular components together via references.
  • Scoping allows the same function to be configured differently depending on its usage context.
  • Automatically logs configured parameter values and integrates with tools like TensorBoard.
  • Minimal code changes required: just add a decorator and a single parsing function call.

Related

  • Project
  • Project
  • Project
  • Project