跳转到主要内容

机器学习版本控制

项目描述

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脚本?您对使机器学习可重现的问题感兴趣吗?

以下是一些您可以帮助的方式

贡献与发展环境

查看我们的贡献指南。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

此版本中没有可用的源分布文件。有关如何生成分布存档的教程,请参阅生成分布存档

构建分布

keepsake-0.4.2-py3-none-manylinux1_x86_64.whl (16.8 MB 查看哈希值)

上传于 Python 3

keepsake-0.4.2-py3-none-macosx_10_9_x86_64.whl (16.7 MB 查看哈希值)

上传于 Python 3 macOS 10.9+ x86-64

由以下支持