基于 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 的使用方法。
相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
108 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
77 5
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
106 0
|
4月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
158 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
3月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
82 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
5月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
68 0
|
5月前
|
缓存 开发者 测试技术
跨平台应用开发必备秘籍:运用 Uno Platform 打造高性能与优雅设计兼备的多平台应用,全面解析从代码共享到最佳实践的每一个细节
【8月更文挑战第31天】Uno Platform 是一种强大的工具,允许开发者使用 C# 和 XAML 构建跨平台应用。本文探讨了 Uno Platform 中实现跨平台应用的最佳实践,包括代码共享、平台特定功能、性能优化及测试等方面。通过共享代码、采用 MVVM 模式、使用条件编译指令以及优化性能,开发者可以高效构建高质量应用。Uno Platform 支持多种测试方法,确保应用在各平台上的稳定性和可靠性。这使得 Uno Platform 成为个人项目和企业应用的理想选择。
87 0
|
5月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
93 0
|
5月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
117 0
|
21天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
221 55