Skip to main content

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

Credentials

Made with ❤️ by Roman Glushko (c)

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

morty-0.3.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

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

Hashes for morty-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d1aa187a21dfa82cc53664c0f5a89235dd9ec1a413c8490a12039786ccc89c1b
MD5 d224a73425042e4d340502c85e900301
BLAKE2b-256 d01f20c9729fab5989830150d88c793d25b627f6c08946d10bc6bf377b0958d5

See more details on using hashes here.

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

Hashes for morty-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b842c97bd29fa40b4c44a05efa6f4993ff7a1f4205a2bccc37d60d36850a3c45
MD5 a47d4e519f26317587d4c249f20eb535
BLAKE2b-256 bc1e575c8114cf5629afafe3e8bf27e22fdd522a3784747e41ed17eb3c55c2e5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page