「直播回顾」Mars应用与最佳实践

简介: 本文首先对Mars的概念、功能、优势进行了介绍,随后,对Mars几个典型的应用场景进行介绍,并通过两个Demo展示了在使用Mars后数据科学性能的提升,最后总结了Mars的最佳实践,让使用Mars更高效便捷。

本文主要从以下几个方面展开:

  • Mars简介
  • 典型场景
  • Demo
  • 最佳实践

一、Mars简介

Mars是统一的数据科学平台,它用来加速传统的Python数据科学技术栈,在单机中也可以用多核加速,或用分布式来加速。Mars可以部署在单机的分布式集群,或者Kubernetes和Hadoop Yarn上。

Mars整个框架构建在单机的并行和分布式的这两个调度的基础之上,它的数据科学基础包括三个核心部分,Tensor、DataFrame和Remote。而构建在这个基础之上的,是Mars Learn模块,它可以兼容Scikit-learn API,能简单地进行更大数据规模的分布式处理。此外,Mars还支持深度学习和机器学习的框架,比如能轻松运行TensorFlow、PyTorch等,而且可视化也可以在Mars上完成。除此之外,Mars还支持了丰富的数据源。

image.png

从传统Python技术栈到Mars也非常简单,比如在NumPy和Pandas里要变成Mars,只需要替换import,然后后面变为延迟执行即可。

image.png

普通的Python函数,在调用的时候变成mr.spawn来延迟这个过程,最后通过execute来并发执行,不用担心Mars是运行在单机上还是分布式运行。

image.png

而Mars上的TensorFlow大部分也一样,区别在于main函数部分的变化。最后,我们需要通过run_tensorflow_script的方式把脚本运行到Mars中。

image.png

二、典型场景

场景1. CPU和GPU混合计算

在安全和金融领域可以用Mars做CPU和GPU的混合计算,加速现有的工作流。

在这个领域,因为传统大数据平台挖掘周期长,资源紧张,需要很久来执行任务,不能达到客户需求。所以能用Mars DataFrame来加速数据处理,它可以做大规模数据排序,并帮助用户做高阶统计和聚合分析。

另外在安全领域有很多无监督学习的算法,Mars learn能加速无监督学习,同时拉起分布式深度学习计算加速现有的深度学习训练。之后,对于某些计算任务也可以利用GPU来加速。

image.png

场景2. 可解释性计算

在广告领域,在广告归因和洞察特征的解释算法中,因为本身计算量大,所以耗时很长。这种情况下,单机加速是比较困难的,基于传统大数据平台的分布式也不太灵活,但是通过Mars remote,可以很轻松地把计算分布到几十台机器上来加速,达到百倍的性能提升。

image.png

场景3. 大规模K-最邻近算法

Mars非常广泛地应用在K-最邻近算法中,因为Embedding越来越流行,它让向量表述实体非常常见。另外,Mars的NearestNeighbors算法兼容scikit-learn,它里面有暴力算法,而用户也需要暴力算法来进行大规模计算,可以通过多个worker来完成,从而让性能提升百倍。最后,Mars支持分布式的方式加速Faiss和Proxima,达到千万级别和上亿级别的规模。

image.png

三、Demo

Demo1. 分析豆瓣电影数据

我们从这个Demo看一下Mars如何加速pandas数据处理及其可视化。

image.png

开始演示之前我们需要安装Mars。这里已经创建了Jupyter,然后 pip install pymars。

image.png

安装之后,我们可以到IPython进行验证,可以看到下面的结果没有问题,接下来我们就可以进入到Jupyter notebook里。

image.png

我们开始demo。这个数据可以在GitHub地址下载,然后我们用pandas来分析电影的数据,使用ipython memory usage来查看内存使用。

image.png

我们的数据主要用到4个CSV文件,分别是movies、ratings、users和comments。

image.png

接下来根据上映日期统计有多少电影发布。这里先处理一下数据,让发行日期只取到年份,去掉日期,并对年份做聚合。

image.png

数据出来后,可以用pandas bokeh把图绘制出来,并通过交互式的方式查看。

image.png

接下来看电影评分的统计。首先把有评分的电影筛选出来,然后把豆瓣评分的数值数量从大到小进行排序。可以看到,最多的评分是6.8分。

image.png

同样,通过pandas bokeh把它画成柱状图,评分差不多呈现正态分布。

image.png

接下来做一个标签词云,看电影哪个标签词最多,这里从movies取出tags,用斜杠分割,然后max words是50。

image.png

接下来我们再对电影的Top K进行分析。首先按电影ID进行聚合,求出评价的平均值和个数。然后我们对评价个数进行过滤,从高到低,算出top20的电影。

image.png

然后做评论数据分析。因为评论是中文的,所以需要做一个分词,然后对每一句话做切分,在统计的时候进行排序。这里可以加一个进度条,在处理数据的时候方便看到进程。这个过程大概花了20分钟,所以在单机上跑大任务的时候对机器的压力还是比较大。

image.png

这是最终的词云图。

image.png

接下来我们用Mars做同样的分析任务。首先是对Mars环境进行部署,然后这里有5个worker,每个worker是8个CPU和32G内存。还是一样,我们打开内存的监控,做一些import,这里把import Pandas替换成import mars.dataframe,然后Numpy是import mars.tensor。

image.png

随后我们在SDK里来创建to mars dataframe,这一步几乎没有用到内存,最终得到的结果也和之前一样。

image.png

我们用同样的方式来分析上映日期的电影个数和电影评分。得益于Mars跟Pandas的高度兼容,我们也能用Pandas bokeh来呈现结果。

image.png

电影评论的分析也一样,但是在显示的时候,Mars只会拉取头几条和最后几条,所以客户端几乎没有内存使用。而且整个running过程只用了45秒,与之前的20分钟相比提升了几十倍性能。

image.png

接下来我们用Mars做一个地区的统计,让它有一个动态的效果。首先我们看一下刚刚计算过的已经released的电影dataframe,然后取1980-2019这几年的电影,而regions部分可能有多个,所以用斜杠分割开,最后执行排出top10地域电影。

image.png

然后我们通过bar chart race来生成动态效果。

image.png

Demo2. 豆瓣电影推荐

第二个demo我们会基于刚才豆瓣电影的数据来做一个推荐。我们首先会用TensorFlow Mars来进行训练,接着用Mars分布式KNN算法来加速召回计算。

我们先使用单机的技术栈,这个数据已经分成了训练和测试集,所以我们先to pandas把它下载到本地,接着来对用户和电影做一个label encode,把它变成一个数字,而不是字符串的值。随后我们对数据进行处理,先按照时间排序,然后按照用户进行分组,生成分组聚合的结果。

image.png

接下来开始训练,我们需要用TensorFlow训练出代表user的embedding。之前说过embedding,可以对任一实体用向量描述,所以得到embedding之后,我们在给用户推荐电影时就可以查找在这个向量空间里面跟这个用户比较接近的电影embedding。

image.png

训练后我们可以保存向量,这里的搜索规模是60万乘7万,单机花费了22分钟,但如果达到千万乘千万级别,搜索耗时要超过800小时,这是不可接受的。

image.png

接下来我们看如何用Mars来实现这一过程。首先创建一个Mars集群,这里有8个worker。然后和上面一样,对数据进行预处理,做label encode,按时间排序,按user分组生成分组聚合。

image.png

这里唯一的区别是Mars会自动推断DataFrame的结果,如果推断失败就需要用户自己提供dtypes和output type。

image.png

然后是执行和训练。这里TensorFlow可以写Python文件,不用写到notebook里。

image.png

接着我们用Mars的run tensorflow script来跑这个脚本,然后指定worker是8。可以看到,执行的时间缩小到了23分钟。同时,我们也拿到了最终的embedding,用Mars做embedding只需1分25秒,比刚刚的时间提升个十倍左右。1400万乘1400万也可以稳定在1小时左右,与单机800个小时相比提升是非常巨大的。

image.png

四、最佳实践

首先尽量不要使用to pandas和to numpy,因为这会把Mars的分布式数据变成单机的数据,失去了Mars本身的优势,除非这个操作不能用Mars实现;其次,Mars tensor、DataFrame和learn由于本身受限于API的原因需要自己写一些函数,所以可以考虑用Mars remote来加速,把操作抽象成函数;第三,Pandas的加速技巧在Mars DataFrame依然适用,比如可以使用更高效的数据类型,可以优先使用内建操作,使用apply取代循环。

image.png

以上就是今天的课程,欢迎大家继续关注后续内容。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
8月前
|
存储 Devops Serverless
一分钟部署在线游戏,Serverless应用引擎SAE评测火热征集中
部署在线游戏,体验极简 Web 应用托管,更有超多奖品等你来拿!
46589 16
一分钟部署在线游戏,Serverless应用引擎SAE评测火热征集中
|
7月前
|
运维 分布式计算 监控
生物信息分析工作流上云技术分享2:Nextflow技术解析与实践
这次我们来深入了解一下NextFlow的软件架构、使用方法,以及与后端计算资源的对接方案。通过实际案例,帮助读者了解NextFlow的强大功能和灵活性。
|
11月前
|
消息中间件 存储 编解码
带你读《云原生架构白皮书2022新版》——网易云音乐曲库研发负责人谈音视频算法的 Serverless 探索之路
带你读《云原生架构白皮书2022新版》——网易云音乐曲库研发负责人谈音视频算法的 Serverless 探索之路
371 1
|
11月前
|
缓存 运维 监控
《阿里云云原生 Serverless 案例集》——典型案例——互娱-网易云音乐
《阿里云云原生 Serverless 案例集》——典型案例——互娱-网易云音乐
167 0
|
11月前
|
架构师 Serverless 云计算
重磅推荐|《Serverless 技术解析与落地》开放下载!
本书由阿里云 Serverless 团队精心打磨,汇集众多一线 Serverless 技术专家经验,从技能角度出发为读者详细拓展 Serverless 知识体系、洞悉当下 Serverless 领域热点知识,掌握 Serverless 架构在各领域的应用、实战案例。从技术理论到方法指导,帮助你打开思路、降低学习成本、精进技术、实现从入门到上手 Serverless 的丝滑进阶。
|
缓存 运维 监控
serverless 案例 | 互娱 网易云音乐
serverless 案例 | 互娱 网易云音乐
127 0
serverless 案例 | 互娱 网易云音乐
|
弹性计算 运维 容灾
云上自动化运维CloudOps系列沙龙演讲合集电子书下载 | 附带直播回放&资料下载
云上自动化运维CloudOps系列沙龙一共3期,所有资料更新已完结,讲师演讲合集电子书也可以下载了,欢迎收藏并推荐给其他人。
云上自动化运维CloudOps系列沙龙演讲合集电子书下载 | 附带直播回放&资料下载
|
消息中间件 存储 编解码
网易云音乐音视频算法的 Serverless 探索之路
网易云音乐最初的音视频技术大多都应用在曲库的数据处理上,基于音视频算法服务化的经验,云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理平台。本文将分享我们如何通过 Serverless 技术去优化我们整个音视频处理平台。
网易云音乐音视频算法的 Serverless 探索之路
|
存储 SQL 人工智能
《玩转 Tablestore 入门与实战》重磅来袭! 架构、原理及场景全方面解读
表格存储 Tablestore 是阿里云自研的面向海量结构化和半结构化数据的 Serverless 多模型数据存储,采用与 Google Bigtable 类似的宽表模型,天然的分布式架构,能支撑高吞吐的数据写入以及 PB 级数据存储。 表格存储 Tablestore于 2009 年阿里云成立之初即立项研发,基于底层飞天平台从零开始构建,在 2014 年正式商业化面向公有云提供服务。历经 10 年多的打磨,目前已在阿里巴巴集团、阿里云公共云以及专有云内得到广泛应用,涵盖电商、金融风控、物联网、人工智能、大数据、社交媒体等不同业务领域,支撑钉钉、优酷、手淘、IoT、计算平台等多个内部核心 BU
17110 0
《玩转 Tablestore 入门与实战》重磅来袭! 架构、原理及场景全方面解读
|
Serverless 双11 云计算
免费下载《Serverless 入门与实战》,附赠10个 Serverless经典案例
Serverless 架构将引领云计算的下一个十年已成为共识,作为基础研发底座, 越来越多企业开始接受 Serverless,并将其应用于业务实践中,《Serverless 入门与实战》将带你走进云计算时代。
41214 0
免费下载《Serverless 入门与实战》,附赠10个 Serverless经典案例