TBU
Project description
Morty
Morty is a lightweight experiment and configuration manager for small ML/DL projects and Kaggling.
Main Features:
- Configuration Management. Morty includes a config loading system based on the python files that makes you configure a wide variety of moving parts quickly and without overheads.
- Experiment Management. Morty provides a flexible, simple and local experiment management system that tracks a lots of context about your project state to make it possible to reproduce experiments.
Installation
pip install morty
# or
poetry add morty
Example of Usage
Trains a Keras model on MNIST:
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
from morty.config import config, ConfigManager
from morty import ExperimentManager, Experiment
from morty.trainers import TensorflowTrainingTracker
@config(path="configs", name="basic_config")
def train(configs: ConfigManager) -> None:
experiment: Experiment = ExperimentManager(configs=config).create()
# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# Scale images to the [0, 1] range
x_train = x_train.astype("float32") / 255
x_test = x_test.astype("float32") / 255
# Make sure images have shape (28, 28, 1)
x_train = np.expand_dims(x_train, -1)
x_test = np.expand_dims(x_test, -1)
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, configs.num_classes)
y_test = keras.utils.to_categorical(y_test, configs.num_classes)
model = keras.Sequential(
[
keras.Input(shape=configs.image_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(configs.num_classes, activation="softmax"),
]
)
model.compile(
loss="categorical_crossentropy",
optimizer="adam",
metrics=("accuracy",),
)
model.summary()
training_history = model.fit(
x_train, y_train,
epochs=configs.epochs,
batch_size=configs.batch_size,
validation_split=configs.val_dataset_fraction,
callbacks=(
TensorflowTrainingTracker(experiment),
)
)
experiment.log_artifact("training_history.pkl", training_history)
test_loss, test_accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test loss: {test_loss}")
print(f"Test accuracy: {test_accuracy}")
if __name__ == "__main__":
train()
Citation
If Morty helped you to streamline your research, be sure to mention it via the following BibTeX entry:
@Misc{Glushko2021Morty,
author = {Roman Glushko},
title = {Morty - a lightweight experiment and configuration tracking library for small ML/DL projects and Kaggling},
howpublished = {Github},
year = {2021},
url = {https://github.com/roma-glushko/morty}
}
Acknowledgment
- https://github.com/aimhubio/aim
- https://devblog.pytorchlightning.ai/introducing-lightningcli-v2-supercharge-your-training-c070d43c7dd6
- https://github.com/neptune-ai/neptune-client
- https://github.com/wandb/client/tree/master/wandb
- https://github.com/allegroai/clearml
- https://keepsake.ai/
- https://guild.ai/why-guild/
- https://metaflow.org/
- https://github.com/IDSIA/sacred
Credentials
Made with ❤️ by Roman Glushko (c)
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
morty-0.3.0.tar.gz
(29.3 kB
view details)
Built Distribution
morty-0.3.0-py3-none-any.whl
(21.7 kB
view details)
File details
Details for the file morty-0.3.0.tar.gz
.
File metadata
- Download URL: morty-0.3.0.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.4 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1aa187a21dfa82cc53664c0f5a89235dd9ec1a413c8490a12039786ccc89c1b |
|
MD5 | d224a73425042e4d340502c85e900301 |
|
BLAKE2b-256 | d01f20c9729fab5989830150d88c793d25b627f6c08946d10bc6bf377b0958d5 |
File details
Details for the file morty-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: morty-0.3.0-py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.4 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b842c97bd29fa40b4c44a05efa6f4993ff7a1f4205a2bccc37d60d36850a3c45 |
|
MD5 | a47d4e519f26317587d4c249f20eb535 |
|
BLAKE2b-256 | bc1e575c8114cf5629afafe3e8bf27e22fdd522a3784747e41ed17eb3c55c2e5 |