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.pycreates and runs multipleExperimentGroups and plots their results usingExperimentAnalysis.test_landscaper.pyspecifies 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f061a0f20ece80d6950095ed3287e824f00c3dc3f2b47d48f152d96335d2c950
|
|
| MD5 |
a845bfe7dd239a83565271dd2981c2a6
|
|
| BLAKE2b-256 |
ba0411eac19f553b46b9bb9ea6898f7b4c63e0b742e9a2753d1cd7f215ce1410
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
899cef53d40089208a315b57c9b2383cc7889315e69774a3380c40614bda6649
|
|
| MD5 |
bd2e89c912066b0f6b9f7c8524ea46e9
|
|
| BLAKE2b-256 |
2be83bad94b041bb70a9f5a8ce6896cf6b1872b92d839da01827b268da0acbc3
|