编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;查看 2018年9月11日至13日在纽约Strata数据会议上的“模型生命周期管理”议题 。
尽管机器学习(ML)可以产生出色的结果,在实践中使用它仍然是很复杂的。 除了软件研发中的常见挑战外,机器学习开发人员还面临着新的挑战,包括实验管理(跟踪结果是由哪些参数,代码和数据导致的); 可重复性(稍后可以在相同的运行环境中执行相同的代码); 部署模型到生产环境; 以及数据治理(审计在整个机构中使用的模型和数据。)。 围绕ML生命周期的这些关于工作流的挑战,通常是在生产环境中使用机器学习并在机构内部对其扩展的最大障碍。
为了应对这些挑战,许多公司开始构建内部机器学习平台,这些平台可以自动化执行其中的一些步骤。 在典型的机器学习平台中,专门的工程团队构建了一套数据科学家可以调用的算法和管理工具。 例如,Uber和Facebook已经建立了Michelangelo和 FBLearner Flow来管理数据准备、模型训练和部署。 然而,就算是内部平台,也有其自身的限制性:典型的机器学习平台仅支持一小组具有有限定制化的(无论工程团队构建了什么),并且平台与每个公司的基础架构是绑定的。
在2018年的Spark + AI峰会上我在Databricks的团队介绍了MLflow,这是一个新的开源项目,能够构建一个开放的机器学习平台。 除了开源之外,MLflow也是“开放的”,在某种意义上,机构中或者开源社区中的任何人,都能够为MLFlow添加新功能(比如一个新的训练算法或者一个新的部署工具),这些功能可以自动地与MLFlow的其他部分协作。MLflow通过在软件研发中对模型进行跟踪、重现、管理和部署,提供了一种强大的方式在组织机构内部去简化和线性扩展机器学习的部署。 在这篇博文中,我将简要概述MLflow所应对的挑战,以及如何入门的初阶讲解。
机器学习工作流的挑战
在Databricks,我们与数百家在生产环境中使用机器学习的公司合作。 在这些公司中,我们一再听到围绕机器学习的相同的担忧担忧:
存在无数彼此独立的工具。 从数据准备到模型训练,数百种软件工具涵盖了机器学习生命周期的每个阶段。 更有甚者,与传统的软件开发不同,团队为每个阶段选择一个工具,在机器学习中,您通常希望尝试每个可用的工具(例如,算法)来查看它是否会改善结果。 因此,机器学习开发人员需要围绕数十个库进行使用和生产环境部署。
跟踪实验很难。 机器学习算法具有几十种可配置的参数,无论您是单独工作还是在团队中工作,都很难跟踪每个实验中的何种参数、代码和数据造就了某种模型。
实验结果难以重现。 如果没有详细的跟踪,团队使用相同的代码起到同样的效果这一点上往往会遇到困难。 无论您是将训练代码交付给工程师用于生产的数据科学家,还是为了调试一个错误回滚到过去的代码进行修正,重现机器学习工作流程的步骤都至关重要。 我们听过多个恐怖故事,比如生产环境的模型表现无法像训练模型那么好