Netflix开源内部Python数据科学开发框架Metaflow

Netflix发布内部专为数据科学家设计,以人为本的数据科学应用开发框架Metaflow,除了可让用户灵活地进行模型开发之外,也与AWS服务良好集成,可快速访问在S3上的数据,而数据科学家除了可自行开发算法之外,也能结合使用AWS上的机器学习服务。

Metaflow框架已经在Netflix内部应用两年,被拿来开发了数百个数据科学项目,案例包括应用于自然语言处理以及操作搜索等。

Metaflow来自机器学习基础设施团队,对内部数据科学家进行调查的结果。他们发现过去所提供的工具,已经足够让数据科学家创建出各种应用,但比起底层的架构,数据科学家更在意建模方法的自由度,包括模型的运行、特征工程以及模型的开发,在许多情况下,数据科学家希望可以在生产中操作模型,以快速地进行调试或是迭代。

机器学习基础设施团队归纳数据科学家的需求,开发语言Python是他们的基本配备,是数据科学的通用语言,而且他们也希望以Python来表达逻辑想法,像在Jupyter Notebook编写程序代码的方式,另外,数据科学家也不在意对象的阶层、封装问题,或是与目标无关的API工作。

为此,机器学习基础设施团队开发了Metaflow,并将Metaflow设计成简单的Python函数库,数据科学家可以将工作流程表达为有向无环图(Directed Acyclic Graph,DAG)。(下图)机器学习开发流程的范例,该流程会训练两个版本的模型,并选用得分最高者。

Netflix提到,Metaflow充满以人为本的细节,虽然Apache Airflow或Luigi等工具,也可以执行由任意Python程序代码所构成的DAG,但是在Metaflow中,数据和模型是以普通的Python实例变量存储,而且即便是在分布式运算平台上执行也没问题。另外,在其他框架,将对象加载以及存储交由用户控制,也就是说,用户需要决定保留与舍弃的内容,Metaflow则消除了这些决定的负担。

而Metaflow本身就为云计算设计,能够弹性的使用云计算运算以及存储资源,由于Netflix长期为AWS的大用户,因此Metaflow与AWS服务良好集成,包括可为Amazon S3中的所有程序代码和数据自动产生快照,提供版本控制和实验关注的解决方案。

Metaflow还捆绑了一个高性能S3客户端,可快速地将数据加载到数据科学工作流中,快速进行开发迭代。而且除了数据科学家自己编写的功能之外,也可以使用AWS机器学习服务Sagemaker,以取用各​​种模型的高性能实例,或是应用分布式训练。

Metaflow良好地支持本地端开发,让数据科学家像是撰写Python脚本一样,快速地在本地端计算机开发并进行测试。Netflix提到,通常最终数据科学工作流程开发结果,最终会写入到表格中,由其他仪表板取用,部分时候将最终模型部署成微服务,以进行即时的预测,甚至也会把该数据科学工作流程链结其他流程,成为大流程的一部分,而Metaflow可支持各式的生产部署。