Datmo Open Source

Easily manage tasks and track model versions with our open source CLI and
Python SDK. All from within your existing workflow.

$  pip install Datmo

The most seamless way to track and run AI models.

Click to see how it works below!

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import Datmo


config = { "solver": "newton-cg" }
iris_dataset = datasets.load_iris()
X, y = iris_dataset.data, iris_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LogisticRegression(**config).fit(X_train, y_train)

train_acc = model.score(X_train, y_train)
test_acc = model.score(X_test, y_test)

print(train_acc)
print(test_acc)
stats = { "train_accuracy": train_acc, "test_accuracy": test_acc }
Datmo.snapshot.create(config=config, stats=stats)

INFO: Successfully saved requirements file in /Users/andrew_ng/my_first_model/iris_sklearn_flow/requirements.txt
Sending build context to Docker daemon 5.12kB
Step 1/10 : FROM python:3
---> 6bf7a4fa2d45
Step 2/10 : RUN pip install --upgrade pip
---> Using cache
---> 031abe1bdd9c
Step 3/10 : RUN pip install scipy
---> Using cache
---> 4c451e008b5a
Step 4/10 : COPY requirements.txt /tmp/requirements.txt
---> Using cache
---> 90747e45844f
Step 5/10 : RUN pip install --no-cache-dir -r /tmp/requirements.txt
---> Using cache
---> 5d30b46c3fc0
Step 6/10 : VOLUME ["/task", "/data"]
---> Using cache
---> f87334b2866e
Step 7/10 : ENV DATMO_TASK_DIR=/task
---> Using cache
---> ba7530ca74b4
Step 8/10 : ENV DATMO_DATA_DIR=/data
---> Using cache
---> c2e745f119cf
Step 9/10 : RUN mkdir -p /task/ /home/ /data/
---> Using cache
---> 9c53f1603806
Step 10/10 : WORKDIR /home/
---> Using cache
---> 74651d8a1010
Successfully built 74651d8a1010
Successfully tagged fbd0c341a52d95732d138475ea0314ffea67c6e8:latest

model: logistic regression
training accuracy: 0.9464285714285714
test accuracy: 0.9473684210526315

+----------+------------------+-------------------------+-------------------------------------------+--------------+-------+
| id | created at | config | stats | message | label |
+----------+------------------+------+------------------+-------------------------------------------+--------------+-------+
| f07e087e | 2018-05-02 20:16 | {'solver': 'newton-cg'} | {'train_acc': 0.9464, 'test_acc': 0.8947} | 1st snapshot | Best |
| 92b94ca8 | 2018-05-02 22:13 | {'solver': 'liblinear'} | {'train_acc': 0.9286, 'test_acc': 0.8738} | new solver | None |
+----------+------------------+-------------------------+-------------------------------------------+--------------+-------+

INFO: Successfully saved requirements file in /Users/andrew_ng/my_first_model/iris_sklearn_flow/requirements.txt
Sending build context to Docker daemon 5.12kB
Step 1/10 : FROM python:3
---> 6bf7a4fa2d45
Step 2/10 : RUN pip install --upgrade pip
---> Using cache
---> 031abe1bdd9c
Step 3/10 : RUN pip install scipy
---> Using cache
---> 4c451e008b5a
Step 4/10 : COPY requirements.txt /tmp/requirements.txt
---> Using cache
---> 90747e45844f
Step 5/10 : RUN pip install --no-cache-dir -r /tmp/requirements.txt
---> Using cache
---> 5d30b46c3fc0
Step 6/10 : VOLUME ["/task", "/data"]
---> Using cache
---> f87334b2866e
Step 7/10 : ENV DATMO_TASK_DIR=/task
---> Using cache
---> ba7530ca74b4
Step 8/10 : ENV DATMO_DATA_DIR=/data
---> Using cache
---> c2e745f119cf
Step 9/10 : RUN mkdir -p /task/ /home/ /data/
---> Using cache
---> 9c53f1603806
Step 10/10 : WORKDIR /home/
---> Using cache
---> 74651d8a1010
Successfully built 74651d8a1010
Successfully tagged fbd0c341a52d95732d138475ea0314ffea67c6e8:latest

model loaded from: 'log_regression_model.dat'
Prediction Response: "{'Species': 'Iris-virginicia'}"

Augment your existing model workflow with order and reproducibility.

model tracking for reproducibility
Model Tracking

Create Snapshots to track the inputs and results of a training or inference task.

model tracking enables versions you can share
Environment Handling

Never worry about changes to your system environment with reproducible containerized tasks.

view your tracked model versions with a unified GUI
Simple CLI and SDK

Power up your existing model code with inline tracking using our Python package.

Log experiments using Datmo without messing with your existing code

Create snapshots during runtime directly with our optional Python SDK



Normal Script With Datmo

$ Datmo init
# train.py 

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split




iris_dataset = datasets.load_iris()
X, y = iris_dataset.data, iris_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LogisticRegression(solver="newton-cg").fit(X_train, y_train)

train_acc = model.score(X_train, y_train)
test_acc = model.score(X_test, y_test)

print(train_acc)
print(test_acc)


# train.py 

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import Datmo # extra line


config = { "solver": "newton-cg" } # extra line
iris_dataset = datasets.load_iris()
X, y = iris_dataset.data, iris_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LogisticRegression(**config).fit(X_train, y_train)

train_acc = model.score(X_train, y_train)
test_acc = model.score(X_test, y_test)

print(train_acc)
print(test_acc)
stats = { "train_accuracy": train_acc, "test_accuracy": test_acc } # extra line
Datmo.snapshot.create(message="first snapshot", config=config, stats=stats) # extra line
$ python train.py
$ python train.py

Datmo Open Source works alongside your favorite tools

graph showing time to deployment for serverless, cpu, and gpu


artificial intelligence model tracking is possible with snapshots, the commits for artificial intelligence


Datmo snapshot act like commits for AI

Datmo snapshots record changes to your Datmo model. With snapshots, Datmo enables you to reproduce experiments and results.



artificial intelligence models are tracked with snapshots


Datmo models behave like repos for AI

Once initiailized, a Datmo model tracks tasks, environments, data, and code. Never lose track of your work again.

Interested in contributing?

Got an idea? Submit a Pull Request or open an Issue! We'd love for you to join us in our vision to democratize artificial intelligence through the building of robust, open tools.

Contributor Guide Active Issues