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接口且自動進行分布式處理,在保證強大數據處理能力的同時,大幅提高數據處理規模及計算效率。