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