Stockroom¶
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)