June 8, 2020

你是如何管理机器学习实验的?-机器学习实验管理平台大盘点

你是如何管理机器学习实验的?-机器学习实验管理平台大盘点
  1. wandb.ai
  2. comet.ml
  3. neptune.ai
  4. allegro trains
  5. mlflow
  6. guild.ai
  7. sacred
  8. test-tube
  9. tensorboard

相信很多同学看到上面这个列表的第一印象是懵的。我们先看下机器学习实验管理平台 到底是做神马滴:

  • 一句话概括就是:类似程序员写代码需要 git 来做代码管理,机器学习的研究者们也需要一款类似 github 的 saas 工具来实现对相应的实验进行跟踪、不同参数效果直观比较、提升模型可解释性、团队协作调参共享模型等等,以下来自 comet.ml 对自己的说明: allowing data scientists and teams to track, compare, explain, and optimize experiments and models.

接下来我们逐个盘点下当前市面上做机器学习实验管理平台的玩家:

先看两个用的比较多但功能相对单薄的两个工具:

  1. 一个是Tensorboard,包括用于 Pytorch 的 TensorboardX(https://github.com/lanpa/tensorboardX) ,Tensorboard 本身被设计成插件化的方式,好处是轻量、轻耦合,可以按需要很快的自定义一个新的 tab,这种方式的缺点是缺少一个用户整体的视图,用户很难在宏观视角上对整个训练流程有一个比较清楚的认识。
  • 出的比较早,格式通用
  • 虽然是跟 Tnesorflow 出的,但并不仅限于 Tensorflow
  • 实验全流程记录
  • 报表和跟其他系统的兼容性比较好,因为出的早?...

2. 另一个是来自 Pytorch Lightning 的 test-tube, 后者可以算是 PL(Pytorch Lightning) 自己的一个 logger 优化工具,也放在这里一并比较了吧,有兴趣的同学可以去 PL(Pytorch Lightning: https://github.com/PyTorchLightning/pytorch-lightning) 查看细节。

接下来看下主要的 SAAS 玩家,当然,基本上每家都同时提供 self-host 方式可选择,毕竟 SAAS 号称主要是卖服务的。

  1. 首先当然是 comet.ml,主要的功能如下 :
  • 假设你手头同时有十几个、几十上百个实验要做,那么 comet 或者其他这些工具会必不可少
  • 团队协作,把几个可能的方向分给其他同学,实验过程、结果分享
  • comet 兼容目前主流的 tensorflow、pytorch、keras、chainer 等等框架
  • comet 支持你针对同一个实验里的不同超参数进行比较,找出关键点
  • comet 支持保存实验所用数据、上下文信息、代码等等
  • 各种类型的数据可视化
  • 懒,不想自己部署实验管理工具。当然这里你可以找下 IT 组的同学,看他们能否帮你搭建一套开源的类 comet 的系统。

2. 接下来是 neptune.ai, 这个就很有趣了,但从名字上看,comet 是彗星,neptune 是海王星,从 neptune 的官方 blog 上看起来也大有针对 comet 的意思... 停止八卦,下面看主要功能简介:

  • 首先 neptune.ai 的定位是一个“实验管理和协作工具”(Neptune is an experiment management and collaboration tool)。
  • 当然,也是 frame-agnostic 的。
  • neptune 支持实验数据、模型、代码等相关数据的存储、获取、共享操作
  • neptune 在团队协作上据说更有效率一些
  • neptune 支持通过 notebook、python script 等方式触发的训练过程记录,当然,默认其实也就只记录一下你的主要损失函数 loss 值和 epoch 这种,真要做到细致能指导自己实验思路的,还是得花心思在配置代码上面。
  • 最后,neptune 的 client 端 code 跟 wandb/comet 比写的是最简练的(个人喜好)。

3. 然后是 wandb.ai,wandb 就是 Weights & Biases, 谜底就在谜面上名字起的有点意思,功能也不错:

  • Reports 功能很有特点,基本上就是把你的实验整理成一个 blog 文档,你做的什么实验、怎么做的、选的那些参数为什么这么选,都可以有个记录,形成文档之后可以把相关的实验附上去,请团队的人或者其他感兴趣的人一起来探讨,隐隐有点社区的意思,赞!
  • 其他功能中规中矩,基本上 cover 了上面提到的几个基本功能
  • 用户和团队管理,数据和实验过程分享
  • UI 挺简洁,跟其他产品的兼容性也不错,毕竟是半开源,因为他的 server 端提供的也是 docker 镜像。

4. 最后是 guild.ai

  • 终端的 client 程序做的挺用心
  • 文档写的比较简洁
  • 其它基本跟上面三个一样,to run, track, and compare experiments.
  • 通用性更好一些据说,对模型实现语言、framework 中立
  • 方便重现效果
  • 对其他系统兼容性佳

以上是几个主要的 SAAS 玩家,下面说一下开源的几个选手:

  1. allegro trains ,其实产品名字叫 Trains 是 allegro.ai 出的,是这几个产品中唯一一个客户端、服务端都开源的产品,基于 Apache 2.0 协议开源,限制比较小,企业部署的话可以考虑一下
  • 服务端也开源,有兴趣自己折腾的企业可以优先考虑内网部署一下
  • web 端风格比较贴近前端主流风
  • 功能跟其他 saas 基本没什么大的出入
  • 这家的思路基本是反 saas,嗯,这点也挺有意思

2. sacred

  • 单机版,没有团队分享功能
  • 但好处是兼容了几个其他的 frontend,比如 neptune 就可以用作接受 sacred 发过来的数据。其他还有 Omniboard

3. mlflow,  Databrick 出品,没错就是 Spark 家那个,功能上跟其他项目比也没有他多的出入:

  • 实验跟踪和记录
  • 项目管理
  • 模型管理

以上这两个从产品上基本上都囊括在上面介绍的几个里面了,这里就不再深入展开,如有需要请自行去 github 上查看。