如何无缝地将人工智能扩展到分布式大数据

2020 年 8 月 05 日

如何无缝地将人工智能扩展到分布式大数据

本文最初发布于 LinkedIn Pulse,由 InfoQ 中文站翻译并分享。



6 月初,在今年的虚拟 CVPR 2020 上,我 在 半天的 教程课中 介绍 了如何构建面向大数据的深度学习应用程序。这是一个非常独特的体验,在本文中,我想分享本教程的一些重点内容。


关键问题:大数据上的人工智能


本教程的重点是 AI 从实验阶段进入生产应用这个过程中出现的一个关键问题,即 如何无缝地将人工智能扩展到分布式大数据 。如今,人工智能研究人员和数据科学家要将人工智能模型应用到存储在分布式大数据集群中的生产数据集上,都需要经历巨大的痛苦。


通常,传统的方法是配置两个独立的集群,一个用于大数据处理,另一个用于深度学习(例如 GPU 集群),中间部署“连接器”(或胶水代码)。遗憾的是,这种“连接器方法”不仅带来了大量的开销(例如,数据复制、额外的集群维护、碎片化的工作流等),而且还会因为跨异构组件而导致语义不匹配(下一节将对此进行详细介绍)。


为了应对这些挑战,我们开发了开源技术,直接在大数据平台上支持新的人工智能算法。如下图所示,这包括 BigDL(面向 Apache Spark 的分布式深度学习框架)和 Analytics Zoo(Apache Spark/Flink&Ray 上的分布式 Tensorflow、Keras 和 PyTorch)。



一个启发性示例:JD.com


在深入讲解 BigDL 和 Analytics Zoo 的技术细节之前,我在教程中分享了一个启发性的示例。京东是中国最大的网购网站之一;他们在 HBase 中存储了数以亿计的商品图片,并构建了一个端到端的对象特征提取应用程序来处理这些图片(用于图像相似性搜索、图片去重等)。虽然对象检测和特征提取是标准的计算机视觉算法,但如果扩展到生产环境中的数亿张图片,这将是一个相当复杂的数据分析流水线,如下面的幻灯片所示。



之前,京东的工程师在 5 节点的 GPU 集群上构建了解决方案,采用的是“连接器方法”:从 HBase 读取数据,跨集群对数据进行分区和处理,然后在 Caffe 上运行深度学习模型。这个过程非常复杂且容易出错(因为数据分区、负载平衡、容错等都需要手动管理)。此外,“连接器”还出现了语义不匹配的情况(在这里是 HBase+Caffe)——从 HBase 读取数据大约需要花费一半的时间(因为任务并行性与系统中 GPU 卡的数量相关,与 HBase 交互读取数据的速度太慢了)。


为了克服这些问题,京东的工程师使用 BigDL 实现了端到端的解决方案(包括数据加载、分区、预处理、DL 模型推断等),作为一个统一的管道,以分布式方式运行在单个 Spark 集群上。这不仅极大地提高了开发效率,而且速度比 GPU 解决方案提高了大约 3.83 倍。要了解这个应用程序的更多细节,可以参考 [1][2]


关键技术:BigDL 框架


在过去的几年里,我们一直在推动开源技术,力争无缝地将人工智能扩展到分布式大数据。2016 年,我们开源了 BigDL,一个面向 Apache Spark 的分布式深度学习框架。它被实现为 Spark 上的一个标准库,并提供了一个富有表现力的、“数据分析集成”深度学习编程模型。因此,用户可以将新的深度学习应用程序作为标准的 Spark 程序构建,无需进行任何更改,就可以在现有的大数据集群上运行,如下面的幻灯片所示。



与机器学习社区的一般常识(细粒度的数据访问和就地更新对于高效的分布式训练至关重要)相反,BigDL 直接在 Spark 的函数式计算模型(具有写时复制和粗粒度操作特性)上提供可扩展的分布式训练。它使用 Spark 中现有的原语(比如 shuffle、broadcast、内存缓存等)实现了一个高效的类 AllReduce 操作,与 Ring AllReduce 具有相似的性能特征。详情请参阅我们的 SoCC 2019 论文


关键技术:Analytics Zoo 平台


BigDL 提供了 Spark 原生框架让用户建立深度学习应用程序, Analytics Zoo则试图解决一个更普遍的问题:如何以分布式、可扩展的方式无缝地将任意人工智能模型(可以使用 TensroFlow、PyTorch、PyTorch、Keras、Caffe 等等)应用到存储在大数据集群上的生产数据。



如上面的幻灯片所示,Analytics Zoo 是在 DL 框架和分布式数据分析系统之上实现的一个更高层次的平台。特别是,它提供了一个“端到端 流水线 层”,可以无缝地将 TensorFlow、Keras、PyTorch、Spark 和 Ray 程序集成到一个集成 流水线 中,后者可以透明地扩展到大型(大数据或 K8s)集群,用于分布式训练和推理。


作为一个具体的例子,下面的幻灯片展示了 Analytics Zoo 用户如何在 Spark 程序中直接编写 TensorFlow 或 PyToch 代码;这样,程序就可以先使用 Spark 处理大数据(存储在 Hive、HBase、Kafka、Parquet 中),然后将内存中的 Spark RDD 或 Dataframes 直接提供给 TensorFlow/PyToch 模型用于分布式训练或推理。在底层,Analytics Zoo 会自动处理数据分区、模型复制、数据格式转换、分布式参数同步等,这使得 TensorFlow/PyToch 模型可以无缝地应用于分布式大数据。



总结


在本教程中,我还分享了更多关于如何使用 Analytics Zoo 构建可扩展大数据 AI 流水线 的细节,包括高级功能(比如 RayOnSpark、用于时序数据的 AutoML 等)和 实际的应 用案例(比如 Mastercard、Azure、CERN、SK Telecom 等)。感兴趣的读者,可以查阅以下资料:



查看英文原文:


Seamlessly Scaling AI for Distributed Big Data


2020 年 8 月 05 日 19:341183

评论

发布
暂无评论
发现更多内容

SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

冰河

分布式 微服务 高性能 SpringCloud Alibaba

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

架构师训练营第六周作业

Geek_4c1353

我服了,难倒无数程序员的源码面试,就这样被轻轻松松讲透彻

小Q

Java 学习 源码 架构 面试

二十四、深入Python多进程multiprocessing模块

刘润森

Python

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

分布式关系数据库

韩向民

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

基于阿里云容器的CI/CD落地实践

LorraineLiu

阿里云 k8s Helm jenkins CI/CD

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

架构师训练营第 1 期第 6 周作业

业哥

一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?

楼下小黑哥

支付宝 微信支付 支付系统 支付

数字货币钱包开发,去中心化钱包源码搭建

135深圳3055源中瑞8032

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

搜狗搜索或成为企鹅号流量入口:腾讯欲实现自己的流量闭环

石头IT视角

WebSocket-技术专题-服务器端消息推送

李浩宇/Alex

网易首席架构师2年心血只为趣谈网络协议,内容强不强你说了算

周老师

Java 编程 程序员 架构 面试

架构师训练营 week5 作业

陈皓07

算法训练营毕业总结——以此自勉

Airship

算法 算法和数据结构

云原生时代 容器持久化存储的最佳方式是什么?

京东智联云开发者

数据库 云存储

缓存架构不够好,系统容易瘫痪

架构师修行之路

缓存 微服务 架构设计

甲方日常 38

句子

工作 随笔杂谈 日常

合约一键智能跟单软件,跟单平台开发

135深圳3055源中瑞8032

币币交易所开发,区块链交易系统源码

135深圳3055源中瑞8032

数字货币交易所开发,去中心化交易所平台搭建

WX13823153201

数字货币交易所开发

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

USDT支付入金系统开发搭建,跨境USDT支付系统开发

135深圳3055源中瑞8032

「深度解析」告诉你如何选择容器存储

焱融科技

Kubernetes 云原生 焱融科技 容器存储 分布式文件存储

uni-app支持PC宽屏适配

崔红保

uni-app 前端框架

分布式文件存储QoS硬核黑科技,真香

焱融科技

高性能 存储 HPC 分布式文件存储 QoS

保证缓存与数据库的数据一致性不是很容易

架构师修行之路

缓存 一致性

如何无缝地将人工智能扩展到分布式大数据-InfoQ