google/vizier

Python-based research interface for blackbox and hyperparameter optimization, based on the internal Google Vizier Service.

What it solves

OSS Vizier provides a reliable and flexible system for black-box optimization, specifically designed to handle hyperparameter tuning at scale. It allows users to find the best parameters for a given objective function without needing to know the internal workings of that function.

How it works

It operates as a distributed client-server system. Users define a search space (including float, integer, discrete, and categorical parameters) and a metric to maximize or minimize. The system then suggests parameters to evaluate, which the user's code evaluates and reports back to the service, creating an optimization loop.

Who it’s for

  • ML Engineers: To tune hyperparameters for machine learning models.
  • AI Researchers: To implement and benchmark new optimization algorithms using the Developer and Benchmarking APIs.
  • Developers: Those needing a distributed backend for large-scale evolutionary experimentation or program search.

Highlights

  • Distributed Architecture: A client-server model that supports multi-client settings.
  • Comprehensive API: Separate APIs for users, developers implementing algorithms, and researchers benchmarking algorithms.
  • Flexible Search Spaces: Supports a wide variety of parameter types including categorical and discrete values.
  • Integration: Advanced support for TensorFlow Probability, Flax, and PyGlove.
  • JAX-based Optimizer: Includes a state-of-the-art Bayesian Optimizer based on JAX.