机器学习平台的最大的驱动力应该是面向数据科学家的基于 Python 的开源技术生态系统的蓬勃发展,比如 scikit-learn、XGBoost 和 Tensorflow/PyTorch 等等。也是因为有了这些算法库的存在,让大部分人都可以使用算法去完成自己的想法,而不需要知道艰深的数学知识,也不需要知道算法的具体实现。
作为一个企业,一个合格的机器学习解决方案不能仅仅局限于使用 IDE 运行几个算法库得出结果,而是一个包括代码、运行环境、模型和数据的完整流程,四者缺一不可。
随着机器学习平台的演进,对代码、运行环境、模型和数据这四个方面也有着不同的侧重:
这三类机器学习平台并没有绝对的优劣,对于企业而言,也不一定一开始就要选择第三代机器学习平台,凡事都要有一个演进的过程。如果说草创阶段,大可以选择第一代机器学习平台,先让机器学习应用于业务,产生业务价值;然后再引入第二代机器学习平台让机器学习模型能快速且自动化的应用于业务。
现在的机器学习平台的基础是在二十世纪初期形成的,而这一切都因为 Python 开源库生态系统。Python 开源库生态系统让机器学习的开发变得无比简单。
NumPy (2006)、pandas (2008) 和 scikit-learn (2007)让 Python 中的数据转换和建模比以前容易得多,并且结合 matplotlib (2003) 和 IPython (2001) 等工具,数据科学家们可以快速地启动本地开发环境,并且可以随时使用多种工具。
许多早期的数据行业的从业者来自学术界,他们以前习惯于使用像 Mathematica 和 Maple 等面向 Notebooks 的工具,因此,2011 年 IPython Notebooks 的发布(后来在 2015 年更名为 Jupyter Notebooks)受到了非常多人的追捧。
由于 Pypa(也就是它维护着 virtualenv 和 pip 等工具),Python 包和环境管理也变得更加容易。几年后,数据科学家收获了 XGBoost(2014)、TensorFlow(2015)和 PyTorch(2016)等更强大的建模工具。
对于 Notebooks 的使用无论是现在还是未来,都将会占据着数据科学家的大部分时间。
尽管如此,Notebooks 依然有着不少缺陷,比如
不是没有企业或个人试图去解决这些问题,比如 JupyterHub 等,但是 Notebooks 本身的特点局限了它的发展,它专注于机器学习流程里的代码和运行环境,而没有考虑模型和数据。这导致了即使是定制系统,也不能解决问题。
正是没有把模型和数据考虑进开发流程导致了:
尽管第一代的机器学习平台在开发中得到了大量的使用,但时间证明它们对于生产环境来说,依然是一个糟糕的平台。
正是因为第一代机器学习平台有着种种缺陷,于是有人开始讨论“数据科学工作流程”或机器学习开发生命周期 (MLDLC)。这里的重点是开发一个类似于软件开发生命周期的框架,并通过使用它让机器学习团队像软件开发团队一样的去完成从机器学习模型开发到部署生产的一系列流程。
对于整个机器学习开发生命周期而言,Notebook 完成了特征工程和模型训练这一部分内容,剩余的内容交给了用于模型训练的 AutoML 工具和实验跟踪器、用于模型部署和监控的 MLOps 工具、用于模型洞察的可解释 AI 工具 (XAI) 以及用于端到端自动化的数据处理工具。至于特征存储,则是近几年才开始出现的,比如 Databricks 公司的 Feature Store。类似于下面这样
所有的这些工具都解决了机器学习开发生命周期中的一个特定的问题,而且它们都专注于模型本身,而不是代码。这代表了对机器学习平台的思考发生了相当大的转变。与其期望数据科学家通过写代码从头开始解决所有问题,也许更合理的方法是简单地为他们提供工具,帮助他们自动化工作流程的各个部分并提高他们的工作效率。许多数据科学家意识到他们的团队主要使用“现成的”算法(而不是从头开发算法),所以整个算法开发就可以类似拼图的方式去完成。
这并不是说每个人都欢迎这些工具。尤其是 AutoML,可能会因为某些数据科学家不相信该过程的结果(因此引入了 XAI),或者可能因它的存在而感到受到威胁而遭到强烈反对(工具最后都是服务于人的,使用好工具会大大提升自己的开发效率)。
从表面上看,所有这些基于模型的方案看起来都很棒。但是依然存在着下面这些问题:
目前的第二代机器学习平台在很多企业开始使用,并且由一些专门做企业 AI 的开发商完成第二代机器学习平台的搭建。
第三代机器学习平台是基于一个简单的理论,也就是:
什么是机器学习模型?也就是输入数据到模型中,并输出预测结果,并对输出结果进行评估。
在这里面,我们可以注意到,机器学习平台需要以数据为中心进行开发和衍生。
第三代机器学习平台是建立在第一代和第二代基础之上的,正是因为它们在生产环境中遇到了不少麻烦,才让人们重新思考是否还能再进行完善或者是彻底重构。第三代机器学习平台是因为 AI 算法已经足够成熟了,只需要像平台提供一些训练数据就可以让平台完成一次机器学习模型的训练和部署到生产环境。在整个过程中,不需要任何代码编写,也不需要引入大量的复杂工具。
基于上面的讨论,我们可以认为第三代机器学习平台应该包含:
当然因为时代的限制,这些东西依然在探索中。比如有苹果公司的 Overton 和 Trinity、优步的Ludwig,Andrew Ng 和 特斯拉的 Andrej Karpathy 也开始在演讲中倡导以数据为中心规划机器学习模型。感兴趣的读者可以读下:https://queue.acm.org/detail.cfm?id=3479315 这篇文章。
希望未来有一天能看到第三代机器学习平台的真正落地实践。