活动连接:SPARK中文峰会7月4日(二)|Ray On Spark
演讲嘉宾简介:邱鑫,英特尔高级软件工程师,BigDL和Analytics Zoo核心贡献者。算法
如下内容根据演讲视频以及PPT整理而成。微信
点击连接观看精彩回放:网络
https://developer.aliyun.com/live/43188
app
本次分享主要围绕如下四个方面:
1、Overview of Analytics Zoo & BigDL
2、Getting Started
3、End-to-End Pipelines
4、ML Workflow框架
1、Overview of Analytics Zoo & BigDL
BigDL
BigDL是2016底开源项目,是基于Spark的分布式深度学习框架。当时考虑到Spark在深度学习的支持方面比较弱,因此但愿为大数据用户提供更多先进的深度学习算法。开发完BigDL以后发现它对深度学习出身的开发者并不友好,由于你们须要学习Spark相关知识,还须要学习Scala。所以开发了Analytics Zoo,在Analytics Zoo中直接提供了TensorFlow,PyTorch,Keras,BigDL,Ray的支持。机器学习
当时作BigDL的初衷是由于不少大数据用户但愿使用深度学习的算法,如京东有大量图像存储在HBase上,须要对图像作预处理,将处理后数据放到模型中继续工做,还须要将特征提取结果存放在HDFS上,作图像类似性检索等应用。京东使用的是Caffe,与大数据集群不一样的是,两个集群网络带宽有限,且图像常常更新,用户每次从GPU集群拉取到大数据集群网络开销都很是大。当英特尔将整个预测的pipeline搬到Spark集群上时,HBase和Spark能够结合在一块儿,提供零拷贝的处理策略,这种策略使得京东预测速度提高了3.83倍。分布式
BigDL能够直接跑Spark集群上面,不须要对集群作修改,集成了不少英特尔特有的技术,对模型训练进行加速。你们若是对BigDL有兴趣可参考SoCC上发表的一篇工做。工具
Analytics Zoo
Analytics Zoo是统一的数据分析AI平台,支持笔记本、云、Hadoop Cluster、K8s Cluster等平台、此外,Analytics Zoo提供了端到端的pipeline,你们能够将AI模型应用到分布式大数据场景中。Analytics Zoo还提供了端到端的ML workflow和内置的模型和算法。具体而言,在底层的使用环境中,支持深度学习框架,如TensorFlow、PyTorch、OpenVINO等,还支持分布式框架,如Spark、Flink、Ray等,还可使用Python库,如Numpy、Pandas、sklearn等。在端到端的pipeline中用户可使用原生的TensorFlow和PyTorch,用户只须要很简单的修改就能够将原有的TensorFlow和PyTorch代码移植到Spark上来作分布式训练。Analytics Zoo还提供了RayOnSpark,ML Pipeplines,Automatic Cluster Serving,支持流式Serving。在内置算法中,提供了推荐算法,时序算法,视觉以及天然语言处理等。oop
通常你们在开发大数据AI应用时,须要通过三步。首先在laptop上面使用一些样本数据实现模型的原型。而后将代码移植到集群上面,使用历史数据作测试。再将代码移到生产环境中,处理分布式数据。从用户角度而言,但愿代码尽量在第一步完成,后面两步再也不修改,便可部署到本身的Hadoop或K8S集群上。学习
2、Getting Started
用户首先须要安装Analytics Zoo,能够经过Google Colab或者Aliyun EMR,亦或是在笔记本上Pull Analytics Zoo Docker Image,pip install 等方式安装。
Aliyun EMR指的是Aliyun E-MapReduce, 用户能够选择Analytics Zoo 0.8.1版本或TensorFlow 1.15.0做为可选服务。
3、End-to-End Pipelines
下图中代码部分是Analytics Zoo代码,train_rdd使用了Hadoop API,dataset是从train_rdd导出的TFDataset。开始构建TensorFlow模型,将其放到TFOptimizer中,再定义MaxEpoch。
例1:Image Segmentation using TFPark
下面展现了Image Segmentation 的一个例子。注意在第一步,须要带上sc=init_nncontext(),表示初始化运行环境,帮助用户初始化analytic-zoo的环境变量以及Spark context。
再将数据下载到指定目录中,加载数据。还能够可视化数据,展现原生图片和Mask后的图片。定义参数,如img_shape,batch_size,epoch等。使用Scipy作数据预处理,获得处理好的特征数据,将数据放到TFDataset中,定义U-Net模型,使用Keras function API,定义loss,使用net.compile()方法,调用summary可查看目前的结构,使用keras_model.fit()方法训练模型,最后再可视化预测结果。比对原始图片,实际Mask图片以及预测图片以下:
例2:Face Generation Using Distributed PyTorch on Analytics Zoo
下面介绍使用PyTorch的Face Generation 的一个例子,先从PyTorch Hub中下载的PAGN模型,再使用noise方法得到随机数据,将noise放在model中生成结果,以下图:
Analytics Zoo的初始化有三种方法,包括sc=init_nncontext(),第二种是使用init_spark_on _yarn() 方法,第三种是使用 init_spark_on_local()方法。
例子3:Image Similarity using NNFrame
若是想要将Analytics Zoo使用在现有的Spark MLPipeline里面的话,可使用NNEstimater。
下面介绍Image similarity的例子。客户主要作房产交易,它们的一种业务场景是为用户推荐房子。最开始仍是须要sc=init_nncontext() 初始化环境,使用NNImageReader将图片读取到Spark中,定义模型,加载模型,再使用NNEstimater集成Analytics Zoo。
Image similarity可视化结果以下图:
在Production Deployment时,首先要训练模型,再提取图片特征数据集,最后是作预测。下图中左边是正在观看的House的样子,右边是推荐的较为类似的House。
4、ML Workflow
在作Cluster Serving时能够经过InputQueue方式将数据存放到pipeline中,再经过OutputQueue方式输出数据。用户能够更方便的构建出Serving工程。
使用AutoML能够作时序数据预测,相信对作医学的同窗仍是颇有用的,如观察某个病人的健康特征随着时间变化的状况。
机器学习/深度学习 人工智能 分布式计算 算法 大数据 PyTorch TensorFlow 算法框架/工具 Spark Python
获取更多 Spark+AI SUMMIT 精彩演讲视频回放和ppt,请向本公众号后台发送"0704中文峰会"
阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,按期推送精彩案例,技术专家直播,问答区近万人Spark技术同窗在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
对开源大数据和感兴趣的同窗能够加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
Apache Spark技术交流社区公众号,微信扫一扫关注
本文分享自微信公众号 - Apache Spark技术交流社区(E-MapReduce_Spark)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。