Stockroom

https://img.shields.io/pypi/v/stockroom.svg https://travis-ci.com/tensorwerk/stockroom.svg?branch=master Documentation Status Codecov LGTM Grade

Stockroom is a platform to version models, data, parameters, metrics etc. alongside git versioned source code. It is licensed as a Free software under Apache Software License 2.0

Introduction

Stockroom is built on top of hangar & hence is high performing. It abstracts away few hangar APIs by making assumptions and operating implicitly. One good example for such implicit decision-making is the “checkout management”. Stockroom, as a package, is not self-contained and whenever possible, off load the heavy lifting to hangar’s well written APIs. However, the tutorials and documentations are self-contained to make sure users doesn’t have to run through different places to start working on stockroom.

Why

One important motivation behind the initial design of stockroom is to avoid users learning another tool for versioning. We try to make the APIs as minimal and familiar as possible while relying on other popular tools such as git & hangar. Stockroom let “git” does checkout and rely on “git” to move between branches/commits. This allows stockroom to present a very simple and intuitive API collection to the user while avoiding the need of user learning another set of commands otherwise they’d need. In a nutshell, Stockroom exists for three reasons

  • Work hand-in-hand with git
  • Make it possible to version model, data, hyper-parameters metrics etc.
  • Making versioning easy for software 2.0 stack

Example

from stockroom import StockRoom
import numpy as np

stock = StockRoom()
weights = stock.model['resnet50']
model = make_model(weights)
for e in range(epochs):
    for i in range(limit):
        x, y = stock.data['dataset', i]
        out = model(x)
        update_weights(out, y)
        if loss < previous_loss:
            stock.model['resnet50'] = get_weights(model)
            stock.commit('adding a better model)