Skip to main content

A hyperparameter search simulation platform for distributed testing of scheduling algorithms.

Project description

PHOSS

PHOSS is an open source Python hyperparameter search simulation platform for distributed testing of scheduling algorithms.

Installing from PyPI

To install PHOSS, run

$ pip install phoss

Usage

To use PHOSS, just declare an ExperimentGroup with the arguments you want and call ExperimentGroup.run(). This method returns a results object, which can then be passed in as part of a list to the ExperimentAnalysis.plot_results() method.

We have included two example usage scripts that use PHOSS:

  • test_experiments.py creates and runs multiple ExperimentGroups and plots their results using ExperimentAnalysis.
  • test_landscaper.py specifies a normal loss decay landscape and plots the landscape generated by our simulator.

Architecture Overview

In this section, we provide an overview of the core modules of PHOSS.

Loss Landscaping

Landscaper handles the logic of generating a synthetic loss landscape based on a user-specified distribution and workload configuration. These parameters can be specified a JSON file that is passed into the Landscaper constructor.

We have provided a couple of sample configuration files in phoss/simulator_configs.

Experiment Runner

ExperimentRunner defines and runs a single experiment, which is performing a hyperparameter search with a given scheduler and environment configurations. It calls the RayRunner class which in turn calls Ray Tune to perform distributed hyperparameter tuning.

PHOSS exposes the ExperimentRunner.call_simulator() method, which accepts a list of configuration parameters. This method returns the results of the specified experiment as a Checkpoint object and writes it to a JSON file too.

Experiment Group

We define an experiment group to be 1 or more experiments varying only in their random seed values. This class contains methods and the high-level logic for conducting experiments across the entire group and combining their results.

At every epoch, PHOSS runs each individual experiment with ExperimentRunner and averages over their results. PHOSS calculates the mean and cumulative best arm regrets along with the average moving loss at each epoch.

All user-defined configurations for an ExperimentGroup are passed in as constructor arguments. To run all experiments, call the ExperimentGroup.run() method on the created object. ExperimentGroup.run() returns an ExperimentGroupResults object.

Experiment Analysis

ExperimentAnalysis provides a set of methods that visualize the graphs of different experiment groups within the same plot, completing the end-to-end flow of providing users with an easy way to compare multiple different schedulers across multiple different configurations.

ExperimentAnalysis.plot_results() accepts a list of ExperimentGroupResults as input.

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phoss-1.0.0.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phoss-1.0.0-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file phoss-1.0.0.tar.gz.

File metadata

  • Download URL: phoss-1.0.0.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for phoss-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f061a0f20ece80d6950095ed3287e824f00c3dc3f2b47d48f152d96335d2c950
MD5 a845bfe7dd239a83565271dd2981c2a6
BLAKE2b-256 ba0411eac19f553b46b9bb9ea6898f7b4c63e0b742e9a2753d1cd7f215ce1410

See more details on using hashes here.

File details

Details for the file phoss-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: phoss-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for phoss-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 899cef53d40089208a315b57c9b2383cc7889315e69774a3380c40614bda6649
MD5 bd2e89c912066b0f6b9f7c8524ea46e9
BLAKE2b-256 2be83bad94b041bb70a9f5a8ce6896cf6b1872b92d839da01827b268da0acbc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page