基于 Spark 和 TensorFlow 的机器学习实践

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 大数据以及计算能力的提升,使得AI技术有了突飞猛进的发展。在大数据和AI技术的热潮下,在2019杭州云栖大会机器学习技术专场,阿里云高级技术专家吴威和阿里云技术专家江宇向大家分享了EMR E-Learning平台和平台上新开发的核心特性TensorFlow on Spark。

本场视频链接:https://developer.aliyun.com/live/1547?spm=a2c6h.12873581.0.0.71671566iIzpz5&groupCode=apachespark

本场PPT资料:https://www.slidestalk.com/AliSpark/201960935


EMR E-Learning平台

EMR E-Learning平台基于的是大数据和AI技术,通过算法基于历史数据来构建机器学习模型,从而进行训练与预测。目前机器学习被广泛应用到很多领域,如人脸识别、自然语言处理、推荐系统、计算机视觉等。近年来,大数据以及计算能力的提升,使得AI技术有了突飞猛进的发展。
image.png
机器学习中重要的三要素是算法、数据和算力。而EMR本身是一个大数据平台,平台之上拥有多种数据,比如传统的数据仓库数据、图像数据;EMR有很强的调度能力,可以很好地吊调度GPU和CPU资源;其结合机器学习算法,就可以成为一个比较好的AI平台。
image.png
典型的AI开发流程如下图所示:首先是数据收集,手机、路由器或者日志数据进入大数据框架Data Lake;然后是数据处理,收集到的数据需要通过传统的大数据ETL或特征工程进行处理;其次是模型训练,经过特征工程或ETL处理后的数据会进行模型的训练;最后对训练模型进行评估和部署;模型预测的结果会再输入到大数据平台进行处理分析,整个过程循环往复。
image.png
下图展示了AI开发的流程,左侧是单机或者集群,主要进行AI训练和评估,包含数据存储;右侧是大数据存储,主要进行大数据处理,如特征工程等,同时可以利用左侧传输的机器学习模型进行预测。
AI开发的现状主要有以下两点:
• 两套集群运维复杂:从图中可以看出,AI开发涉及的两套集群是分离的,需要单独维护,运维成本复杂,容易出错。
• 训练效率较低:左右两侧集群需要大量数据传输和模型传输,带来较高的端到端训练的延迟。
image.png
EMR作为统一的大数据平台,包含了很多特性。最底层基础设施层,其支持GPU和CPU机器;数据存储层包括HDFS和阿里云OSS;数据接入层包括Kafka和Flume;资源调度层计算引擎包括 YARN、K8S和Zookeeper;计算引擎最核心的是E-learning平台,基于目前比较火的开源系统Spark,这里的Spark用的是jindo Spark,是EMR团队基于Spark改造和优化而推出的适用于AI场景下的版本,除此之外,还有PAI TensorFlow on Spark;最后是计算分析层,提供了数据分析、特征工程、AI训练以及Notebook的功能,方便用户来使用。image.png
EMR平台的特性主要有以下几点:
• 统一的资源管理与调度:支持CPU、Mem和GPU的细粒度的资源调度和分配,支持YARN和K8S的资源调度框架;
• 多种框架支持:包括TensorFlow、MXNet和Caffe等;
• Spark通用的数据处理框架:提供Data Source API来方便各类数据源的读取,MLlib pipeline广泛用于特征工程;
• Spark+深度学习框架:Spark和深度学习框架的集成支持,包括高效的Spark和TensorFlow之间的数据传输,Spark资源调度模型支持分布式深度学习训练;
• 资源监控与报警:EMR APM系统提供完善的应用程序和集群监控多种报警方式;
• 易用性:Jupyter notebook以及Python多环境部署支持,端到端机器学习训练流程等。
image.png
EMR E-Learning集成了PAI TensorFlow,其支持对深度学习的优化和对大规模稀疏场景的优化。image.png
TensorFlow on Spark
经过市场调研发现,大多数的客户在深度学习之前的数据ETL和特征工程阶段使用的都是开源计算框架Spark,之后的阶段广泛使用的是TensorFlow,因此就有了将TensorFlow和Spark有机结合的目标。TensorFlow on Spark主要包含了下图中的六个具体设计目标。
image.png
TensorFlow on Spark从最底层来讲实际上是PySpark应用框架级别的封装。框架中实现的主要功能包括:首先调度用户特征工程任务,然后再调度深度学习TensorFlow任务,除此之外还需要将特征工程的数据高效快速地传输给底层的PAI TensorFlow Runtime进行深度学习和机器学习的训练。由于Spark目前不支资源的异构调度,假如客户运行的是分布式TensorFlow, 就需要同时运行两个任务(Ps任务和Worker任务),根据客户需求的资源来产生不同的Spark executor,Ps任务和Worker任务通过Zookeeper来进行服务注册。框架启动后会将用户写的特征工程任务调度到executor中执行,执行后框架会将数据传输给底层的PAI TensorFlow Runtime进行训练,训练结束后会将数据保存到Data Lake中,方便后期的模型发布。image.png
在机器学习和深度学习中,数据交互是可以提升效率的点,因此在数据交互部分,TensorFlow on Spark做了一系列优化。具体来讲采用了Apache Arrow进行高速数据传输,将训练数据直接喂给API TensorFlow Runtime,从而加速整个训练流程。image.png
TensorFlow on Spark的容错机制如下图所示:最底层依赖TensorFlow的Checkpoints机制,用户需要定时的将训练模型Chenpoint到Data Lake中。当重新启动一个TensorFlow的时候,会读取最近的Checkpoint进行训练。容错机制会根据模式不同有不同的处理方式,针对分布式任务,会启动Ps和Worker任务,两个任务直接存在daemon进程,监控对应任务运行情况;对于MPI任务,通过Spark Barrier Execution机制进行容错,如果一个task失败,会标记失败并重启所有task,重新配置所有环境变量;TF任务负责读取最近的Checkpoint。image.png
TensorFlow on Spark的功能和易用性主要体现在以下几点:
• 部署环境多样:支持指定conda,打包python运行时virtual env 支持指定docker
• TensorFlow 架构支持:支持分布式TensorFlow原生PS架构和分布式Horovod MPI架构
• TensorFlow API支持:支持分布式TensorFlow Estimator高阶API和分布式TensorFlow Session 低阶API
• 快速支持各种框架接入:可以根据客户需求加入新的AI框架,如MXNet
image.png
EMR客户有很多来自于互联网公司,广告和推送的业务场景比较常见,下图是一个比较典型的广告推送业务场景。整个流程是EMR客户通过Kafka将日志数据实时推送到Data Lake中,TensorFlow on Spark负责的是上半部分流程,其中可以通过Spark的工具如SparkSQL、MLlib等对实时数据和离线数据进行ETL和特征工程,数据训练好之后可以通过TensorFlow 框架高效地喂给PAI TensorFlow Runtime进行大规模训练和优化,然后将模型存储到Data Lake中。image.png
在API层面,TensorFlow on Spark提供了一个基类,该基类中包含了三个方法需要用户去实现:pre_train、shutdown和train。pre_train是用户需要做的数据读取、ETL和特征工程等任务,返回的是Spark的DataFrame对象;shutdown方法实现用户长连接资源的释放;train方法是用户之前在TensorFlow中实现的代码,如模型、优化器、优化算子的选择。最后通过pl_submit命令来提交TensorFlow on Spark的任务。image.png
下图是推荐系统FM的样例,FM是一个比较常见的推荐算法,具体场景是给电影评分,根据客户对之前电影评分、电影类型和发布时间为用户推荐潜在的电影。左侧是一个特征工程,用户可以使用Spark data source API读取电影和评分信息,原生支持Spark所有操作,如join、ETL处理等;右侧是TensorFlow,进行模型、优化器的选择。目前整个系统的代码已经开源到Github。image.png
最后总结一下,EMR E-Learning 平台将大数据处理、深度学习、机器学习、数据湖、GPUs功能特性紧密的结合,提供一站式大数据与机器学习平台;TensorFlow on Spark 提供了高效的数据交互流程以及完备的机器学习训练流程,将Spark与TensorFlow结合,借助 PAI TensorFlow,助力用户加速训练;目前E-Learning平台在公有云服务不同的客户,成功案例,CPU集群规模超过1000,GPU集群规模超过100。image.png


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区数个Spark技术同学每日在线答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
二维码.JPG

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
13天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
44 0
|
2月前
|
缓存 开发者 测试技术
跨平台应用开发必备秘籍:运用 Uno Platform 打造高性能与优雅设计兼备的多平台应用,全面解析从代码共享到最佳实践的每一个细节
【8月更文挑战第31天】Uno Platform 是一种强大的工具,允许开发者使用 C# 和 XAML 构建跨平台应用。本文探讨了 Uno Platform 中实现跨平台应用的最佳实践,包括代码共享、平台特定功能、性能优化及测试等方面。通过共享代码、采用 MVVM 模式、使用条件编译指令以及优化性能,开发者可以高效构建高质量应用。Uno Platform 支持多种测试方法,确保应用在各平台上的稳定性和可靠性。这使得 Uno Platform 成为个人项目和企业应用的理想选择。
37 0
|
2月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
57 0
|
2月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
47 0
|
2月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
39 0
|
2月前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
32 0
|
2月前
|
自然语言处理 C# 开发者
Uno Platform多语言开发秘籍大公开:轻松驾驭全球用户,一键切换语言,让你的应用成为跨文化交流的桥梁!
【8月更文挑战第31天】Uno Platform 是一个强大的开源框架,允许使用 C# 和 XAML 构建跨平台的原生移动、Web 和桌面应用程序。本文详细介绍如何通过 Uno Platform 创建多语言应用,包括准备工作、设置多语言资源、XAML 中引用资源、C# 中加载资源以及处理语言更改。通过简单的步骤和示例代码,帮助开发者轻松实现应用的国际化。
30 0
|
2月前
|
机器学习/深度学习 TensorFlow 数据处理
分布式训练在TensorFlow中的全面应用指南:掌握多机多卡配置与实践技巧,让大规模数据集训练变得轻而易举,大幅提升模型训练效率与性能
【8月更文挑战第31天】本文详细介绍了如何在Tensorflow中实现多机多卡的分布式训练,涵盖环境配置、模型定义、数据处理及训练执行等关键环节。通过具体示例代码,展示了使用`MultiWorkerMirroredStrategy`进行分布式训练的过程,帮助读者更好地应对大规模数据集与复杂模型带来的挑战,提升训练效率。
30 0
|
5月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
210 14
下一篇
无影云桌面