Jarvis' Blog 总有美丽的风景让人流连

机器学习实验管理 (ML Experiment Management)


随着深度学习的发展, 机器学习实验的超参数越来越多, 实验的准确复现仍然存在困难, 科研合作时实验的管理存在困难, 科研到生产的衔接导致了大量零碎的代码片段难以整合. 因此, 为了解决超参数的选择和对比, 实验的复现, 代码和实验的管理, 多人协作, 以及从科研到生产的版本控制等问题, 机器学习实验管理平台应运而生. 目前流行的管理平台有 TensorBoard, wandb.ai, allegro trains, mlflow, sacred 等等. 他们整体上功能类似, 但又各有千秋. 本文期望对流行的机器学习实验管理平台做一个详尽的对比, 并给出各自平台的亮点和不足, 从而为读者选择平台时提供一个参考.

我们下面讨论九个机器学习实验管理工具. (点击Logo进入项目主页)

编号 框架 年份 开源 公司 特性
1 2017 Github Google Inc. 跟踪实验指标, 可视化模型图, 嵌入, 语音展示, 图像展示, 其他插件
2 2014 Github IDSIA 配置、组织、记录和复制计算实验, 开销小, 鼓励实验的模块化和可配置性
3 2016 Github Neptune Labs Inc. 轻量级的实验管理工具
4 2018 - Mathpix Inc. 简单的API, 记录参数、图像、日志, 整合统计指标
5 2019 Github TensorHub Inc. 跟踪实验, 自动管线, 微调参数
6 2019 Github Allegro AI 端到端企业级平台, 可管理机器学习和深度学习产品的生命周期
7 2018 Github LF Proj. LLC. 兼容任意机器学习库、语言, 可多人协作, 可以拓展到Spark
8 2017 - Weights and Biases Inc. 跟踪、比较、可视化机器学习实验, 可协作, 企业支持
9 2017 - Comet ML Inc. 跟踪、比较、解释和优化实验和模型

0. Overview

下面的表格从整体上给出了九种框架主要功能的对比:

功能 TensorBoard Sacred Neptune LossWise Guild Allegro mlflow W & B Comet
标量
比较
资源信息
资源监控
源码
计算图
二进制
图像
数据分布
嵌入
音频
后端 MongoDB

Neptune*

前端 Omniboard

Neptune*

TensorBoard

前端评级 ✩✩ ✩✩ ✩✩✩ ✩✩✩ ✩✩✩✩ ✩✩ ✩✩✩✩✩ ✩✩✩✩✩
参数管理 ✩✩✩✩✩ ✩✩✩ ✩✩ ✩✩ ✩✩ ✩✩✩ ✩✩✩
云服务
云空间 100G ? 100G 100G
本地部署 ✔$
团队协作
插件
参数调优
商业支持 ✔$ ✔$
内部支持

的框架

Tensorflow

PyTorch

Keras

Tensorflow

PyTorch

Sacred

mlflow*

Keras Keras

Tensorflow

PyTorch

sklearn

MXNet

XGBoost

Keras

Tensorflow

PyTorch

sklearn

MXNet

Caffe2*

Keras

Tensorflow

PyTorch

sklearn

XGBoost*

Keras

Tensorflow

PyTorch

sklearn

XGBoost*

Keras

Tensorflow

PyTorch

sklearn

MXNet

Caffe2*

提示

内部支持的框架指的是库内部做了相应适配, 未写出的框架可以通过编码来向管理工具传输数据.

提示

上面的表格仅仅是我试用过后的发现的功能, 可能不全. 其中 TensorBoard 和 Sacred 是我使用较多的, 功能描述基本没有问题. 同时表格中的所有评价都是我短时间接触后的主观感受, 不代表实际使用的情况.

1. TensorBoard

Tensorboard 是谷歌在推出 Tensorflow 之后发布的一款用于展示实验过程中的标量(losses, metrics)、图像、数据分布、计算图等内容的可视化工具.

2. Sacred

Sacred是可帮助研究人员配置、组织、记录和复制实验的工具. 它旨在完成研究人员需要围绕实际实验进行的所有繁琐的日常工作. Sacred 有一下几个设计目的:

3. Neptune

4. Losswise

5. Guild

6. Allegro Trains

7. mlflow

8. Weights & Biases

Weights & Biases 帮助你记录机器学习项目的过程。利用我们的工具记录运行过程中的超参数和输出指标,然后将结果可视化并做比较,便捷地与同事分享结果。

9. Comet

我们发现有了个 Neptune (海王星), 所以我们叫 Comet (彗星). (不是, 我瞎说的. 实在是主页没有几句话简介.)