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开发生态发展路径如下:image.png
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
重要
MaxCompute MaxFrame预计将于2023年12月正式对外邀测,您可单击申请链接提前进行申请。
随着MaxCompute MaxFrame的正式上线发布,将逐步替换PyODPS DataFrame及Mars接口,并在算子兼容性以及分布式能力上有明显提升,强烈建议新用户直接基于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开发场景。架构图如下所示:
image
MaxFrame核心功能如下:
MaxCompute Python生态统一入口
统一MaxCompute Python生态开发接口,通过一套Python Code完成数据分析、开发以及数据挖掘、建模全生命周期。
兼容及分布式化
完全兼容Pandas接口,且进行分布式化,性能比原生Pandas提升几十倍。
底层引擎自动路由
根据用户提交的作业使用场景自动提交至最优的底层引擎执行,无需再关注底层执行引擎的选择。