机器学习版本控制
项目描述
Keepsake
机器学习版本控制。
Keepsake是一个Python库,可以将文件和元数据(如超参数)上传到Amazon S3或Google Cloud Storage。您可以使用命令行界面或笔记本检索数据。
- 跟踪实验:自动跟踪代码、超参数、训练数据、权重、指标、Python依赖项——一切。
- 回到过去:如果您需要复制结果或事后提交到Git,可以获取任何检查点的代码和权重。
- 版本化模型:模型权重存储在您自己的Amazon S3或Google Cloud存储桶中,因此很容易将它们输入生产系统。
工作原理
只需将两行代码添加到您的训练代码中
import torch
import keepsake
def train():
# Save training code and hyperparameters
experiment = keepsake.init(path=".", params={...})
model = Model()
for epoch in range(num_epochs):
# ...
torch.save(model, "model.pth")
# Save model weights and metrics
experiment.checkpoint(path="model.pth", metrics={...})
然后Keepsake将开始跟踪所有内容:代码、超参数、训练数据、权重、指标、Python依赖项等。
- 开源 & 社区共建:我们试图聚集ML社区,以便我们共同构建这项基础技术。
- 您控制您的数据:所有数据都存储在您自己的Amazon S3或Google Cloud存储上,作为普通文件。没有服务器要运行。
- 它与所有东西都兼容:Tensorflow、PyTorch、scikit-learn、XGBoost,您名之。它只是保存文件和字典——以您想要的方式导出。
功能
扔掉你的电子表格
您的实验都在一个地方,有过滤和排序功能。因为数据存储在S3上,您甚至可以查看在其他机器上运行的实验。
$ keepsake ls --filter "val_loss<0.2"
EXPERIMENT HOST STATUS BEST CHECKPOINT
e510303 10.52.2.23 stopped 49668cb (val_loss=0.1484)
9e97e07 10.52.7.11 running 41f0c60 (val_loss=0.1989)
在笔记本中分析
不喜欢命令行界面?没问题。您可以在笔记本中检索、分析和绘制您的结果。想象一下,它就像一个可编程的Tensorboard。
比较实验
它会比较一切,包括依赖关系的版本,以防最新的Tensorflow版本做了奇怪的事情。
$ keepsake diff 49668cb 41f0c60
Checkpoint: 49668cb 41f0c60
Experiment: e510303 9e97e07
Params
learning_rate: 0.001 0.002
Python Packages
tensorflow: 2.3.0 2.3.1
Metrics
train_loss: 0.4626 0.8155
train_accuracy: 0.7909 0.7254
val_loss: 0.1484 0.1989
val_accuracy: 0.9607 0.9411
事后提交到Git
如果您最终想将代码存储在Git上,没有必要边做边提交。Keepsake允许您回到任何调用过experiment.checkpoint()
的点,这样您就可以在找到可行方案后再提交到Git。
$ keepsake checkout f81069d
Copying code and weights to working directory...
# save the code to git
$ git commit -am "Use hinge loss"
在生产中加载模型
您可以使用Keepsake将您的模型输入到生产系统中。将它们与它们的训练方式、训练者以及它们的指标联系起来。
import keepsake
model = torch.load(keepsake.experiments.get("e45a203").best().open("model.pth"))
安装
pip install -U keepsake
开始使用
如果您更喜欢使用训练脚本和命令行界面,请查看我们的教程,了解Keepsake是如何工作的。
如果您更喜欢在笔记本中工作,请查看我们在Colab上的笔记本教程。
如果您喜欢先学习概念,请阅读我们关于Keepsake如何工作的指南。
参与进来
每个人都使用版本控制进行软件开发,但在机器学习中这却很少见。
为什么?我们花了一年时间与机器学习社区的人交谈,以下是我们的发现:
- Git与机器学习不太兼容。它无法处理大型文件,无法处理诸如指标这样的键/值元数据,也无法在训练脚本中自动提交。有一些解决方案,但它们感觉像是在做急救包。
- 它应该是开源的。有许多专有解决方案,但如此基础的东西需要由机器学习社区来构建。
- 它需要小巧、易于使用且可扩展。我们发现人们在与“AI平台”集成时遇到了困难。我们希望制作一个只做一件事就做得很好的工具,并且可以与其他工具结合使用,以产生您需要的系统。
我们认为机器学习社区需要一个优秀的版本控制系统。但是,版本控制系统很复杂,要使之成为现实,我们需要您的帮助。
您是否为构建自己的东西编写了一些shell脚本?您对使机器学习可重现的问题感兴趣吗?
以下是一些您可以帮助的方式
贡献与发展环境
项目详情
哈希值 for keepsake-0.4.2-py3-none-manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c6494b879a8b71db7b748eb4b2a41366cffd32b4beddf613b1f370314d103aef |
|
MD5 | 836919f756c770760ea6ebe752756c9e |
|
BLAKE2b-256 | 3cfbc30df2ce001bd0c7d4f67739c356bec8459cae73e31955ca8a4564937a8c |
哈希值 for keepsake-0.4.2-py3-none-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e2be6737ae5d6e8ee90149514e2b1f5f6defbf9a232c735c96c55d17738756f6 |
|
MD5 | 9b51098719f8501c1b6e129fd22bac98 |
|
BLAKE2b-256 | b62125bf2de452aecee12632bc4c5999965d5050280200b04986f5746a3c11ac |