简介: 如何利用云上分布式 Python 加速数据科学。 如果你熟悉 numpy、pandas 或者 sklearn 这样的数据科学技术栈,同时又受限于平台的计算性能无法处理,本文介绍的 MaxCompute 可以让您利用并行和分布式技术来加速数据科学。也就是说只要会用 numpy、pandas 和 scikit-learn 之一,就会用 MaxCompute 分布式 Python 的能力。

本文作者 孟硕 阿里云智能 产品专家

一、Python 生态的重要性

Why Python

Python has grown to become the dominant language both in data analytics, and general programming。

根据技术问答网站stack overflow统计,Python、C#、Javascript、java、php、C++、SQL、R、statistics这些编程语言从2009年至2021年的趋势图如下图所示。可以看出Python的趋势是呈现上涨趋势,特别是在数据分析和数据科学领域,几乎是top one的编程语言。这是Python生态的发展趋势。当然,在数据分析数据科学机器学习这个领域,不只是有编程语言这一个因素。

统计来自 Stack Overflow Trends

数据科学技术栈

在数据科学领域编程语言只是一个方面,语言不止包含Python,也有数据分析人员用SQL,或者传统分析语言R,或者是函数式编程语言Scala。第二个方面需要有数据分析对应的库,比如NumPy、pandas等,或者是基于可视化的库会在里面。Python运行的集群还会有一些运维的技术栈在里面,比如可以运行在docker或者是kubernetes上。如果要做数据分析数据科学,前期需要对数据进行清洗,有一些ETL的过程。有一些清洗不只是一两步能完成的,需要用工作流去完成整体的ETL的过程。里面涉及到最流行的组件比如Spark,整个工作流调度Airflow,最终结果做一个呈现,就需要存储,一般用PostgreSQL数据库或者内存数据库redis,对外再连接一个BI工具,做最终结果的展示。还有比如机器学习的一些组件或者平台,TensorFlow、PyTorch等。如果是设计到Web开发,快速搭建起一个前端平台,还会用的比如Flask等。最后包括一个商业智能的软件,比如有BI工具tableau、Power BI,或者是数据科学领域经常用到的软件SaaS。

这就是整个数据科学技术栈比较完整的一个视图。我们从编程语言切入,发现如果要实现大规模数据的数据科学是需要方方面面的考量。

二、MaxCompute 分布式 Python 能力介绍

MaxCompute 分布式 Python 技术 - PyODPS

MaxCompute是一款SaaS模式的云数据仓库,基于MaxCompute是有兼容Python的能力。

PyODPS 是 MaxCompute 的 Python 版本的 SDK, 它提供了对 MaxCompute 对象的基本操作;并提供了 DataFrame 框架(二维表结构,可以进行增删改查操作),能在 MaxCompute 上进行数据分析。

PyODPS 提交的 SQL 以及 DataFrame作业都会转换成 MaxCompute SQL 分布式运行;如果第三方库,能以 UDF+SQL 的形式运行,也可以分布式运行。

如果需要 Python 把作业拆成子任务分布式来运行,比如大规模的向量计算原生 Python 没有分布式能力,这时候推荐用 MaxCompute Mars。是可以把Python任务拆分成子任务进行运行的框架。

Dome实践

请点击视频查看

自定义函数中使用三方包

假如不是单纯运行Python,需要借助一些Python第三方包,这个MaxCompute也是支持的。

流程如下:

Step1

确定使用到的第三方包

sklearn,scipy

Step2

找到对应报的所有依赖

sklearn,scipy,pytz,pandas,six,python-dateutil

Step3

下载对应的三方包(pypi)

python-dateutil-2.6.0.zip,

pytz-2017.2.zip, six-1.11.0.tar.gz,

pandas-0.20.2-cp27-cp27m-manylinux1_x86_64.zip,

scipy-0.19.0-cp27-cp27m-manylinux1_x86_64.zip,

scikit_learn-0.18.1-cp27-cp27m-manylinux1_x86_64.zip

Step4

上传资源变成MaxCompute的一个Resource对象。

这样我们去创建函数,再引用自定义函数,就能够使用到第三方包。

自定义函数代码

def test(x):from sklearn import datasets, svmfrom scipy import miscimport numpy as npiris = datasets.load_iris()clf = svm.LinearSVC()clf.fit(iris.data, iris.target)pred = clf.predict([[5.0, 3.6, 1.3, 0.25]])assert pred[0] == 0assert misc.face().shape is not Nonereturn x

MaxCompute 分布式 Python 技术 - Mars

项目名字 Mars

最早是 MatrixandArray;登陆火星

为什么要做 Mars

  • 为大规模科学计算设计的:大数据引擎编程接口对科学计算不太友好,框架设计不是为科学计算模型考虑的
  • 传统科学计算基于单机,大规模科学计算需要用到超算

Tips科学计算:计算机梳理数据: Excel-> 数据库 (MySQL)->  Hadoop, Spark, MaxCompute 数据量有 了很大变化,计算模型没有变化,二维表,投影、切片、聚合、筛选和排序,基于关系代数,集合论;科学计算基础结构不是二维表:例如图片2维度,每个像素点不是一个数字(RGB+α 透明通道)

  • 传统 SQL 模型处理能力不足:线性代数,行列式的相乘,现有数据库效率低
  • 现状 R,Numpy 单机基于单机;  Python 生态的 Dask 大数据到科学计算的桥梁

案例

客户A MaxCompute 现有数据,需要针对这些 百亿数据 TB 级别的数据相乘;现有 MapReduce 模式性能低;用 Mars 就可以高效的解决;目前是唯一一个大规模科学计算引擎

加速数据科学的新方式

加速数据科学的方式如下图所示。

基于DASK或者是 MaxCompute Mars其实是 Scale up 和 Scale out 兼容的方式。在下图左下代表单机运行Python 的库做数据科学的一个方式。大规模超算的思路是Scale up,也就是线上垂直扩散,增加硬件能力,比如可以利用多核,当前每台电脑或服务器上不止一核,包括GPU、TPU、NPU等做深度学习的硬件。可以把Python移植到这些硬件上做一些加速。这里的技术包含比如Modin是做多核加速pandas。在右下,也有一些框架在做分布式Python,比如RAY是蚂蚁的一款框架服务,本质上Mars是可以运行在RAY上,相当于Python生态的一个调度,一个kubernetes。DASK也是在做分布式Python,包括Mars。当然,最佳的模式是 Scale up 和 Scale out 两种做一个组合。这样的好处是,可以做分布式,在单节点上也可以利用硬件能力。Mars当前只能在大规模集群上,单机配置在GPU集群。

分布 Python 的设计逻辑

Mars本质上设计思路是把数据科学库分布式化掉,比如Python,可以把Dataframe做一个拆分,包括Numpy,Scikit-Learn。

把大规模作业拆分成小作业来做分布式计算。本身框架就是拆成作业用的,首先客户端提交一个作业,Mars框架把作业拆分,做一个DAG图,最后汇总收集计算结果。

Mars 场景1 CPU和GPU混合计算

1、安全和金融领域,传统大数据平台挖掘周期长,资源紧张,等待周期长。

2、Mars DataFrame加速数据处理:大规模排序;统计;聚合分析。

3、Mars learn 加速无监督学习;Mars拉起分布式深度学习计算。

4、 使用 GPU 加速特定计算。

Mars 场景2 可解释性计算

1、广告归因&洞察特征的解释算法,本身计算量巨大,耗时长。

2、使用 Mars Remote 将计算用数十台服务器进行加速,提升百倍性能。

Mars场景3 大规模k-最邻近算法

1、Embedding 的流行使得用向量表述实体非常常见。

2、Mars 的NearestNeighbors算法兼容 scikit-learn。暴力算法在300万向量和300万向量计算top10相似计算(9万亿次向量比对)中,用20个worker两个小时计算完成,大数据平台基于SQL+UDF的方式无法完成计算。更小规模 Mars 相比大数据平台性能提升百倍。

3、Mars 支持分布式的方式加速Faiss、Proxima(阿里达摩院向量检索库),达到千万和亿级别规模。

三、最佳实践

Mars本身会集成一些Python第三方包,基本主流机器学习和深度学习的库都包含在里面。下方Demo讲一个使用Mars做智能推荐,用lightgbm做一个分类算法,比如有一些优惠判断是不是给某些用户做推送。

Mars 包括的第三方包:

Mars 三方库集成 — PyODPS 0.10.7 文档

第一张图上主要步骤是通过 AK、project 名字、Endpoint 信息连接到 MaxCompute。接下来创建一个4节点,每个节点8 core,32G 的集群,应用 extended 扩展包,并生成 100w 用户 64维度描述信息的训练数据。

利用 Lightgbm 2分类算法的模型训练:

将模型以 Create resource 方式传到 MaxCompute 作为 resource 对象,准备测试集数据

使用测试测试集数据验证模型,得出分类:

原文链接
本文为阿里云原创内容,未经允许不得转载。

基于MaxCompute分布式Python能力的大规模数据科学分析相关推荐

  1. python价格趋势软件_最简洁的Python时间序列可视化:数据科学分析价格趋势,预测价格,探索价格...

    时间序列数据在数据科学领域无处不在,在量化金融领域也十分常见,可以用于分析价格趋势,预测价格,探索价格行为等. 学会对时间序列数据进行可视化,能够帮助我们更加直观地探索时间序列数据,寻找其潜在的规律. ...

  2. 基于Python的微博大数据舆情分析,舆论情感分析可视化系统

    运行效果图 基于Python的微博大数据舆情分析,舆论情感分析可视化系统 系统介绍 微博舆情分析系统,项目后端分爬虫模块.数据分析模块.数据存储模块.业务逻辑模块组成. 先后进行了数据获取和筛选存储, ...

  3. 【计算机专业毕设之基于python的nba爬虫数据可视化分析系统】

    [计算机专业毕设之基于python的nba爬虫数据可视化分析系统-哔哩哔哩https://b23.tv/BijZd9L 爬虫+Django+数据分析可视化

  4. 为了提前预测比赛结果,于是我用Python获取比赛球员数据进行分析,结果...

    为了提前预测比赛结果,于是我用Python获取比赛球员数据进行分析,结果... 前因后果 准备工作 实现步骤 代码展示 部分效果展示 最后 前因后果 最近不是世界杯嘛,但是太忙了实在没时间看,于是为了 ...

  5. 使用 conda 和 Jupyter 在 R 中实现数据科学分析

    前两篇文章我们介绍了 Jupyter Notebook 的一些基础用法,今天我们来介绍一下如何使用 conda 和 Jupyter 在 R 中开始一个数据科学项目. 在开始之前我们先要明确一个概念:K ...

  6. Python基于Django城市PM2.5空气质量数据可视化分析

    开发软件:Pycharm + Python3.7 + Django + Echarts + Mysql 实现目标:利用已经收集各个城市包括北京.上海.广州.成都.沈阳的PM2.5空气数据,利用pyth ...

  7. 基于Python的南京二手房数据可视化分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  8. 基于Python的二手车爬虫数据可视化分析设计

    程序开发软件:Pycharm  数据库:mysql 现在介绍的是一个用Python开发的爬取二手车网站数据及其分析的程序.爬取的时候采用selenium驱动google浏览器进行数据的抓取,抓取的网页 ...

  9. Spark DataFrame----一个用于大规模数据科学的API

    DataFrame,作为2014–2015年Spark最大的API改动,能够使得大数据更为简单,从而拥有更广泛的受众群体. 文章翻译自Introducing DataFrames in Spark f ...

最新文章

  1. zqgame《每日一言》
  2. Paxos 实现日志复制同步(Multi-Paxos)
  3. 区县政府网站群建设新思路
  4. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_3_字符输出流_Writer类FileWriter类...
  5. 微信小程序图标变形、微信小程序放大镜图标、图片设置为圆形——微信小程序(1)
  6. 联想教育应用使用说明(7.6版本)——第4章 网络控制工具的使用
  7. ssh大学生银行助学贷款系统的设计与实现源码
  8. mysql循环插入语句_sql循环插入的语句写法
  9. 手机PIN码解锁过程
  10. 数学建模十大算法01-蒙特卡洛算法(Monte Carlo)
  11. 电商运营流程图模板分享
  12. R语言 指定列缺失值定值填充
  13. 用计算机制作思维导图,想用电脑做好思维导图你得先了知道这些事
  14. APK 本地化/修改利器 —— 《android-apktool》
  15. thingsboard物联网平台编译安装一步到位
  16. anthony1314的小笔记
  17. 抖音快手B站等平台视频检测机制和规避方法
  18. 前端初学学习进程XII
  19. html5自适应网站模板
  20. NGC朱威宇:不管牛市熊市,都需要定力和坚持原则

热门文章

  1. treeview控件怎么折叠_拍摄的视频闪烁怎么办?一招就能搞定,电脑手机都适用...
  2. python做数据和大数据区别_不懂Python,不懂大数据的人,和咸鱼有什么区别?
  3. mysql57数据库命令_MySQL 5.7 mysql command line client 使用命令详解
  4. layui option 动态添加_layui select动态添加option的实例
  5. 什么笔记本电脑好用_苹果笔记本好用吗?苹果笔记本怎么样?
  6. vscode中如何创新建php文件,vscode如何创建代码模板
  7. linux读整个文件内容,Linux查看整个文件
  8. strace命令_在软件部署中使用 strace 进行调试
  9. Java 数据库进度条_java进度条
  10. python 跳过计算错误_在python中计算分数时如何跳过被0除的错误?