A framework for reproducible machine learning
Project description
SnapperML
SnapperML is a framework for experiment tracking and machine learning operationalization that combines existent and well-supported technologies. These technologies include Docker, Mlflow, Ray, among others.
The framework provides an opinionated workflow to design and execute experiments either on a local environment or the cloud. ml-experiment includes:
- An automatic tracking system
- First-class support for distributed training and hyperparameter optimization
- Command Line Interface (CLI) for packaging and running projects inside containers.
SnapperML UI
To run snapper UI execute:
make UI
Open localhost:4000 and upload your firsts experiments!
To stop snapper UI just execute:
make stop_UI
How to install?
The project has some core dependencies:
- mlflow
- optuna>=1.1.0
- ray>=0.8.2
- docker>=4.1.0
The python package can be install using pip:
pip install snapper-ml
Or from this repo:
pip install -e .
Deploy
To run snapper first you need to deploy mlflow and optuna. Execute:
make docker
Once the deploy finished you can execute snapper-ml
in the CLI. For an ilustrative example, check the example section.
Architecture
The framework main core is divided into four modules that interact with the user through a Command-Line Interface (CLI) and a Python library. The objective of the library is to minimize the code changes required to instrument scripts to be executed by the Job Runner and to provide the abstractions to interact with the Tracking and Hyperparameter Optimization engines. On the other hand, the CLI is in charge of executing scripts either in a local environment or a remote environment.
Documentation
The documentation is available here
Example
# train_svm.py
from snapper_ml import job
@job
def main(C, kernel, gamma='scale'):
np.random.seed(1234)
X_train, X_val, y_train, y_val = load_data()
model = SVC(C=C, gamma=gamma, kernel=kernel)
model.fit(X_train, y_train)
accuracy = model.score(X_val, y_val)
return {'val_accuracy': accuracy}
if __name__ == '__main__':
main()
# train_svm.yaml
name: "SVM"
kind: "group"
num_trials: 12
sampler: TPE
param_space:
C: loguniform(0.01, 1000)
gamma: choice(['scale', 'auto'])
metric:
name: val_accuracy
direction: maximize
ray_config:
num_cpus: 4
run:
- train_svm.py
snapper-ml --config_file=train_svm.yaml
There are more examples in the examples folder.
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
Hashes for snapper_ml-0.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a06b633bdb6787b01b89176d0cda4290d6473dccc723a8939e8d66523c89312 |
|
MD5 | 84f122e61e50a0c24825bda0fded1b88 |
|
BLAKE2b-256 | 4cdb1aea8bf0e5245bd0f8df4007f020a724b4e12b5240fd9f4b46e0c0fcd77f |