google/pyglove
Manipulating Python Programs
What it solves
PyGlove provides a way to treat Python objects as symbolic representations that can be easily manipulated, rebound, and searched. This simplifies the creation of meta-programs, particularly for complex machine learning workflows where hyperparameters or model architectures need to be optimized or evolved.
How it works
It introduces a symbolic object-oriented programming model to Python. By using the @pg.symbolize decorator, users can make Python classes symbolic. Once symbolic, objects can be "rebound" to different values or defined as search spaces (using primitives like pg.oneof) to allow for the automatic search of better program configurations.
Who it’s for
This library is designed for researchers and developers working in Automated Machine Learning (AutoML), evolutionary computing, and large-scale ML teams who need to share and evolve ML code efficiently.
Highlights
- Symbolic Object Model: Allows direct manipulation of Python objects after they are been created.
- Automatic Search API: Provides tools to drop search capabilities into existing Python programs.
- Search Algorithms: Includes a library of ready-to-use search algorithms and a framework for building new ones.
- Distributed Infrastructure: Interfaces with distributed backends like Open Source Vizier for large-scale search.
Related
- Project
- Project
- Project
- Project
- Project