Machine Learning Lab
A lightweight command line interface for the management of arbitrary machine learning tasks.
Documentation is available at: https://bering-ml-lab.readthedocs.io/en/latest/
NOTE: Lab is in active development - expect a bumpy ride!
Installation
The latest stable version can be installed directly from PyPi:
pip install lab-ml
Development version can be installed from github.
git clone https://github.com/beringresearch/lab
cd lab
pip install --editable .
Concepts
Lab employs three concepts: reproducible environment, logging, and model persistence. A typical machine learning workflow can be turned into a Lab Experiment by adding a single decorator.
Creating a new Lab Project
lab init --name [NAME]
Lab will look for a requirements.txt file in the working directory to generate a portable virtual environment for ML experiments.
Setting up a Lab Experiment
Here's a simple script that trains an SVM classifier on the iris data set:
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score
C = 1.0
gamma = 0.7
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.24, random_state=42)
clf = svm.SVC(C, 'rbf', gamma=gamma, probability=True)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average = 'macro')
It's trivial to create a Lab Experiment using a simple decorator:
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score
from lab.experiment import Experiment ## New Line
e = Experiment() ## New Line
@e.start_run ## New Line
def train():
C = 1.0
gamma = 0.7
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.24, random_state=42)
clf = svm.SVC(C, 'rbf', gamma=gamma, probability=True)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average = 'macro')
e.log_metric('accuracy_score', accuracy) ## New Line
e.log_metric('precision_score', precision) ## New Line
e.log_parameter('C', C) ## New Line
e.log_parameter('gamma', gamma) ## New Line
e.log_model('svm', clf) ## New Line
Running an Experiment
Lab Experiments can be run as:
lab run <PATH/TO/TRAIN.py>
Comparing models
Lab assumes that all Experiments associated with a Project log consistent performance metrics. We can quickly assess performance of each experiment by running:
lab ls
Experiment Source Date accuracy_score precision_score
------------ ------------------ ---------- ---------------- -----------------
49ffb76e train_mnist_mlp.py 2019-01-15 0.97: ██████████ 0.97: ██████████
261a34e4 train_mnist_cnn.py 2019-01-15 0.98: ██████████ 0.98: ██████████
Pushing models to a centralised repository
Lab experiments can be pushed to a centralised filesystem through integration with minio. Lab assumes that you have setup minio on a private cloud.
Lab can be configured once to interface with a remote minio instance:
lab config minio --tag my-minio --endpoint [URL:PORT] --accesskey [STRING] --secretkey [STRING]
To push a local lab experiment to minio:
lab push --tag my-minio --bucket [BUCKETNAME] .
Copyright 2020, Bering Limited
Metadata
Release files for lab-ml 0.83
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| lab-ml-0.83.tar.gz | 14.2 kB | Without provenance | Details |
Release files / lab-ml-0.83.tar.gz
| Download URL | lab-ml-0.83.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
25e9d8ea418cb259bc06868b07bc36bcc69b0cf055ccea044a86e73c006000a5
|
|
BLAKE2b-256 checksum How to use checksums |
8dace15674fa503557e83fbfd791c42792e1728b9e6be3e3d8ea1dfc288c7c47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5
|
Security for lab-ml 0.83
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.