MaxFrame是由阿里云自研的分布式科学计算框架,是对历史相关产品功能(PyODPS、Mars)的重大升级,在MaxCompute之上提供一套完全兼容Pandas接口的API,让用户用更为熟悉、更符合Python社群习惯的方式使用MaxCompute。本文为您介绍MaxCompute提供的Python开发生态的背景信息及发展路径。
背景信息
Python作为目前机器学习、AI模型开发的主流编程语言,提供了如NumPy、SciPy、Scikit-Learn、Matplotlib等丰富的科学计算、可视化库,用于数据科学和数据分析。同时支持TensorFlow、PyTorch、XGBoost、LightGBM等丰富的训练框架。
NumPy:用于N维数组对象运算。
Pandas:是一个包含数据帧的数据分析库。
Matplotlib:用于创建图形和图形的2D绘图库。
Scikit-Learn:用于数据分析和数据挖掘任务的算法。
为满足用户基于MaxCompute进行大规模数据处理、分析、挖掘及模型训练的需求,MaxCompute提供了一套Python开发生态,让用户通过统一的Python编程接口一站式、高效地完成数据处理、加工及挖掘工作。
发展路径
MaxCompute提供的Python开发生态发展路径如下:
PyODPS
PyODPS于2015年正式发布,作为MaxCompute的Python SDK,支持通过Python接口对MaxCompute数据进行相关操作。经过多个版本的迭代发展,目前PyODPS已支持DataFrame框架,同时提供类似Pandas的语法,内置聚合、排序、去重等数据操作算子。
Pyodps的核心功能如下:
对MaxCompute对象的基本操作(2015年):
PyODPS提供了对MaxCompute对象,例如表、资源、函数的访问。
支持通过
run_sql
或execute_sql
的方式提交SQ。支持
run_xflow
或execute_xflow
的方式来执行PAI命令运行机器学习任务。支持通过
open_write
、open_reader
或原生Tunnel API的方式来上传下载数据。
支持DataFrame API,提供类似Pandas的接口,能充分利用MaxCompute的计算能力进行DataFrame计算(2016~2022年):
PyODPS DataFrame可以让用户使用Python来进行数据操作,因此用户可以很容易利用Python的语言特性。
PyODPS DataFrame提供了很多pandas-like的接口,但扩展了它的语法,比如增加了MapReduce API来扩展以适应大数据环境。
内置聚合、排序、去重、采样、可视化绘图等常用函数。
Mars
在Python生态中,有NumPy、Pandas、Scikit-Learn等丰富的科学计算库,提供了便捷的数据分析、挖掘算子,但这些库也大都受限于单机资源。Mars则是一个基于张量的统一分布式计算框架,实现了Numpy大约70%的接口,并进行了分布式化,不仅大幅减少了分布式科学计算代码的编写难度,同时在性能上也有大幅提升。
Mars核心功能如下:
兼容及分布式化(2019年1月正式开源):支持将Numpy、Pandas、Scikit-Learn以及Python Function进行分布式化,兼容大部分接口。
MaxFrame
Mars及PyODPS有不同使用场景,如熟悉Pandas、需要并行和分布式化Numpy、Scilit-Learn的用户更适合使用Mars;而熟悉DataFrame,且对稳定性、数据量(TB以上)要求比较高的用户则适合使用PyODSP,但架构的复杂也给用户带来了使用的困扰和操作的复杂度。
MaxFrame是由阿里云自研的分布式科学计算框架,是对PyODPS及Mars的重大升级,在MaxCompute之上提供一套完全兼容Pandas接口的API(比Mars的接口兼容度更高),让用户可以用自己更为熟悉、更符合Python社群习惯的方式使用MaxCompute,同时MaxFrame会将用户提交的作业根据其使用场景自动提交至最优的底层引擎执行(例如SQL Engine、Single Python Engine、Mars Engine),用户无需再关注底层执行引擎的选择,从而高效地完成数据开发分析以及AI训练推理全过程,拉通Data+AI开发场景。架构图如下所示:
MaxFrame核心功能如下:
更熟悉的开发习惯
MaxFrame兼容Python开发生态,提供MaxCompute Python生态统一开发接口,可通过一份Python代码实现完整的Data+AI开发流程。
MaxFrame可直接引用Numpy、SciPy、Pandas、Matplotlib等第三方库进行科学计算、数据分析、可视化等操作,降低用户操作成本。
更高的处理性能
MaxFrame可直连MaxCompute数据,运行时无需将数据拉取至本地计算,消除了不必要的本地数据传输,提高执行效率。
MaxFrame可直接使用MaxCompute海量弹性计算资源,并支持自动分布式、并行处理,大幅缩短数据处理的时间。
更便捷的开发体验
MaxFrame已与MaxCompute Notebook、DataWorks集成,无需配置环境即可直接使用;同时MaxFrame也支持在用户本地环境安装使用。
MaxFrame支持直接引用MaxCompute内置镜像及用户自定义镜像,降低开发环境准备时间,避免环境版本冲突。
更完善的算子支持
MaxFrame完全兼容Pandas接口且自动进行分布式处理,在保证强大数据处理能力的同时,大幅提高数据处理规模及计算效率。