雷锋网 AI 研习社按:机器学习开发有着远超传统软件开发的复杂性和挑战性,现在,Databricks 开源 MLflow 平台有望解决其中的四大痛点。
尝试过机器学习开发的同学们都知道,它的复杂性远超软件开发,且伴随着多种全新的挑战。在 Databricks,我们与上百家用到机器学习的公司共事,反复听到如下顾虑:
鉴于上述挑战,毫无疑问,为了使机器学习开发像传统软件开发一样,具有鲁棒性、可预测性以及广泛传播,它必须得到大幅进化。为此,许多组织都开始打造内部机器学习平台来管理机器学习生命周期。例如,Facebook,Google 和 Uber 已经打造 FBLearner Flow,TFX 和 Michelangelo 来管理数据准备、模型训练和部署。然而,即使是这些内部机器学习平台,也存在限制:只支持少量内置算法或者单个 ML 库,并且绑定的是自家公司的基础架构。用户不能轻松利用新的 ML 库,也很难将自己的研究分享到更广的社群。
在 Databricks,我们相信有更好的方式来管理机器学习生命周期,基于此我们推出全新的开源机器学习平台 MLflow。目前,alpha 版本已发布。Github 链接:
https://github.com/databricks/mlflow
MLflow 从现有 ML 平台中得到灵感,在设计上拥有以下两项开放理念:
MLflow 现在仍为 alpha 版,但是我们认为该版本在处理 ML 代码上已非常有用,我们也乐意收到大家的反馈。接下来是对 MLflow 以及相关组件的详细介绍。
MLflow alpha 版由以下 3 个组件构成:
MLflow Tracking 是一个 API,当你在运行机器学习代码打算后续可视化时,它是展示参数记录、代码版本、metric 和输出文件的 UI。只需几行简单的代码,你就能够追踪参数,metric 和 artifact:
你可以在任何环境(独立脚本、notebook 等)下使用 MLflow Tracking 将结果记录到本地文件或者服务器,之后再将多次操作进行对比。借助网页 UI,你可以查看和对比多次输出。团队也能使用这些工具来比较不同用户的实验结果。
MLflow Projects 提供打包可重用代码的标准格式。每个 project 只是一个代码目录或 Git 库,使用一个 descriptor 文件来说明其依赖关系以及如何运行代码。MLflow Project 由一个简单的 YAML 文件(MLproject)定义。
project 能借助 Conda 环境来说明其依赖关系。一个 project 可能存在多个调用程序的 entry 点(已经指定参数)。你可以使用 mlflow run 命令工具运行来自本地文件或 Git 库中的 project。
MLflow 将自动为 project 设置正确的环境并运行。另外,如果你在 project 中使用 Tracking API,MLflow 将会记住执行的 project 版本和参数。你能够轻松再运行相同的代码。
project 格式使得分享可重用的代码变得更加简单。配合 MLflow Tracking,MLflow Project 可以为你提供在复现、扩展和实验中极其好用的工具。
MLflow Model 是一种约定,它将机器学习模型打包成多种格式(称为 flavor)。MLflow 提供多种工具来帮助你部署不同 flavor。每个 MLflow Model 作为一个目录保存,包含 arbitrary 文件和一个 MLmodel descriptor 文件(该文件中列出了它适用的 flavor)。
在上面这个例子中,该模型可与支持 sklearn 和 python_function 模型 flavor 的工具一起使用。
MLflow 提供将常见模型部署到不同平台上的工具。例如,任何支持 python_function flavor 的模型都能部署到基于 Docker 的 REST 服务器或 Azure ML、AWS SageMaker 等云平台上。
按照 mlflow.org(https://www.mlflow.org/) 的使用说明,或前往 GitHub 查看已经发布的代码。期待大家的反馈。
MLflow 才刚刚起步,所以还有不少工作要做。除了 project 的更新,我们还计划介绍重要的全新组件(如 Monitoring)、库集成和我们已经发布的扩展功能(如对更多环境的支持等)。大家可关注我们的博客以获取更多信息。
via Databricks
雷锋网 AI 研习社编译。