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 2019, Bering Limited
Release files for lab-ml 0.82
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lab-ml-0.82.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lab_ml-0.82-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.4 kB
Release files / lab-ml-0.82.tar.gz
| Download URL | lab-ml-0.82.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6481b16a4f8b295aecf664ea5e129208da73508cebb640c8a484be319443da13
|
|
BLAKE2b-256 checksum How to use checksums |
a3b0c240969939c1e7d7a8871a24fd3f321c39ab25a1d444c63e9b1055f35044
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5
|
Release files / lab_ml-0.82-py3-none-any.whl
| Download URL | lab_ml-0.82-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19dff5a8db4d04d7610976d04d93a51752b7cd2b46d177f35f6cbab927b56dba
|
|
BLAKE2b-256 checksum How to use checksums |
7df966e41506742c25f9b33f21273bacf6ffe14742ea3b2464895c123c8d3be8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5
|