京东是中国领先的零售商和云服务提供商。其产品图像目录中有大量的信息,如果对这些信息加以分析,则可以构成视觉搜索或价格比较应用的基础。当京东尝试使用 GPU分析其庞大的商品图像数据库时,发现很难管理,并且在存储设备和数据集群之间复制数据十分耗时。通过与英特尔密切合作,京东在基于英特尔® 至强® 处理器的图像存储服务器上部署了 BigDL 深度学习库,性能提升高达 3.83 倍1。这使京东能够更加敏捷地使用产品图像来作为新服务的基础。
挑战
• 从京东的完整产品目录中提取图像特征,目录中涵盖电脑、玩具和服饰等多种类别,产品数量多达数亿件
• 为图像分析创建高性能的基础设施,该基础设施需要可扩展以应对不断增长的数据库
• 构建易于开发且可用于创建新图像分析应用的云分析平台
解决方案
• 京东在基于英特尔® 至强® 处理器 E5 家族的数据存储服务器上,使用了 BigDL 来部署现有 Caffe* 模型
• 该基础设施通过添加新的标准英特尔® 至强® 处理器服务器,能够实现高效的横向扩展
• 采用了 Apache Hadoop* 和 Spark* 框架来处理资源管理工作,因此未来能够更轻松地开发新应用,同时保持高效性能
结果
• 与基于 GPU 的备选解决方案相比,性能提升高达 3.83 倍1
• 京东构建了一个创新平台,既可用于轻松创建新的应用,也可供内部使用并用于新的公有云服务
• 与运行独立的 GPU 集群相比,京东在重复使用现有的硬件资源进行分析后,降低了解决方案的总体拥有成本
促进有效的图像分析
对于京东而言,云技术是其业务的基础。除了作为中国领先的零售商,并提供其他方使用的在线销售平台之外,京东还提供公有云产品。在某些情况下,企业的零售业务会推动创新,而之后可将这些创新提供给公有云客户。京东的零售网站拥有一个庞大的在售产品目录,产品图像多达数亿张。这些图像均存储在 Hadoop 框架的分布式大数据存储库 (京东自研) 中。而京东希望能够匹配不同产品图像中的特征。例如,这项功能可用于支持视觉搜索特征,客户可以拍摄他们所喜爱商品的照片,京东会根据照片为客户找到他们可购买的类似商品。另外,还可使用该功能将京东的产品与其他网站上的产品进行匹配,这样京东就能以极具竞争力的价格销售产品。京东的团队曾尝试使用图形处理单元(GPU)创建特征匹配应用,但却发现难以充分扩展 GPU 来处理数据库。京东尝试使用了多GPU 服务器和 GPU 集群。在集群环境中,京东遇到了常见的内存不足错误,以及因 GPU 内存不足而导致的程序崩溃。事实证明,在集群中,以 GPU 卡为单位的资源管理和分配工作非常复杂,容易出现错误。在多 GPU 服务器情况下,京东的开发人员不得不手动管理数据分区、任务均衡和容错。此外,还存在诸多依赖性(如 CUDA*),使生产部署变得十分困难。
在 GPU 中执行图像处理时,还会出现延迟,这是由于将数据从分布式大数据存储库复制到 GPU 进行分析,然后再将结果复制回来需要花费时间而导致的。这部分流程所耗费的时间占特征提取总时间的一半。图像预处理也具有很大的挑战性,因为目前还没有软件框架可支持资源管理、数据处理和容错。因此,京东需要一个能够以可扩展和可持续的方式,为图像数据库的特征提取流水线提供支持的基础设施。
使用 BigDL 实现可扩展的深度学习
京东使用了 BigDL(一款面向 Apache Spark* 的分布式深度学习库),在使用基于英特尔® 至强® 处理器 E5-2650 v4 的服务器的 CPU 上运行特征提取工作负载。凭借 BigDL,京东可以使用 Scala 或 Python* 创建基于可扩展 Spark 集群的深度学习应用。它可以横向扩展至数百或数千台服务器。为提升性能,BigDL 使用英特尔® 数学核心函数库(英特尔® MKL)和并行计算技术来利用英特尔® 至强® 处理器功能。
通过 BigDL,京东能够加载之前已使用 GPU 资源训练好的 Caffe*模型,然后在现有 CPU 图像存储架构上重新部署这个模型。在京东的应用中,Single Shot MultiBox Detector(SSD)模型用于检测图像中的目标,而 DeepBit 模型则用于从目标中提取特征。
图 1. 京东的特征提取工作流程,使用 BigDL 管理用于目标检测的 SSD 模型以及用于特征提取的 DeepBit 模型。
工作流程如下所示(参见图 1):
1. 从 H B a s e 中读取数亿张图片,构建成弹性分布式数据集(RDD)。
2. 使用 BigDL 预处理这些图像,准备供 SSD 模型使用(包括调整大小、规范化和批量处理)。BigDL 提供基于 OpenCV 的图像预处理库,支持常见转换和扩充。
3. 加载 Single Shot MultiBox Detector(SSD)模型,以便在Spark 上进行大规模的分布式目标检测。这会为检测到的目标生成对应的坐标和置信度分数。
4. 根据分数最高的目标的坐标,裁剪原始图片。
5. 预处理目标图像,准备供 DeepBit 模型使用(包括调整大小和批量处理)。
6. 使用 BigDL 加载 DeepBit 模型,以便在 Spark 上对目标图像进行分布式特征提取。这将以矢量浮点的形式生成对应的特征。
7. 将所提取的对象特征的 RDD 存储在 Hadoop 分布式文件系统*(HDFS*)中。通过使用带有 1,200 个逻辑内核的高度并行架构,从数据库中读取图像数据的流程大幅加快,让整体性能提高了 3.83 倍1。该解决方案以京东现有的 CPU 资源为基础。使用的是英特尔® 至强® 处理器 E5-2650 v4(以 2.20GHz 运行)。每个服务器拥有24 个物理内核,启用了英特尔® 超线程技术(英特尔® HT),并且已配置为支持 50 个使用集群管理技术 Apache Hadoop YetAnother Resource Negotiator*(YARN*)的逻辑内核。在使用24 台服务器的情况下,解决方案的逻辑内核总数达到了 1,200个,提供了高度并行的工作流程。
通过使用 BigDL,京东能够在基于英特尔® 至强® 处理器的现有服务器上重用之前已使用 GPU 训练好的模型。与运行单独的 GPU集群进行特征提取相比,这降低了成本,因为它无需额外的 GPU卡,并且 GPU 服务器的配置与 CPU 服务器的配置相同。此外,CPU 集群会通宵处理 BigDL 工作负载,并可在白天处理其他任务,从而提高了利用率。凭借高度并行的数据加载,京东显著缩短了特征提取时间,并且在使用 Spark 框架来管理资源、容错和任务均衡后,京东也从中获益。
随着性能的提高,以及能够通过添加更多标准服务器来轻松横向扩展解决方案,京东目前可以在图像分析过程中处理更大的数据集。
解决方案的技术组件
• BigDL。BigDL 是一个面向 Apache Spark* 的分布式深度学习库,它使得开发人员能够使用 Scala 或 Python编写适用于 Spark 集群的深度学习应用。它是一个开源框架,支持多个组织在同一 Hadoop 或 Spark 数据存储集群上分析数据
• 英特尔® 至强® 处理器 E5 家族。英特尔® 至强® 处理器E5 家族专为构建下一代数据中心而设计,可为数据中心或云中的多样化工作负载提供多功能性
• 英特尔® 数学核心函数库(英特尔®MKL)。英特尔® MKL能够以最小的工作量,对未来的英特尔® 处理器系列优化代码。它包含经过高度优化、线程化和矢量化的数学函数,可以最大程度地提高各个处理器家族的性能
• Apache Spark*。Apache Spark 是一个用于处理大规模数据的快速引擎,可以使用 Java、Scala、Python 或R 语言编写
• Apache Hadoop*。Apache Hadoop 软件库是一个框架,它允许跨计算集群,对大型数据集进行分布式处理。它包含 Hadoop 分布式文件系统(HDFS)模块,而京东使用该模块存储从图像中提取的特征数据。Hadoop YARN 提供了一个框架,可用于在 CPU 上进行作业调度和集群资源管理
• 英特尔® 以太网服务器适配器 I350 和英特尔® 以太网融合网络适配器 X710。为满足网络方面的要求,京东使用英特尔® 适配器来满足敏捷数据中心的严苛需求
与英特尔紧密协作
新的特征提取功能是在与英特尔研发工程师的协作过程中开发出来的。京东和英特尔有着长期的合作关系,过去几年一直致力于开发大数据和数据分析应用。英特尔的中国研发团队协助多家云服务提供商采用开源解决方案(如 BigDL),并且能够带来诸多部署方面的工作经验。
京东高级软件工程师(算法)Zhenhua Wang 说,“我们在如何基于大数据集群构建大规模深度学习应用方面遇到了挑战。而英特尔在 BigDL 技术方面与我们完美契合,并且协助我们实施了这项技术。英特尔团队给我们带来了丰富的专业知识和经验,帮助我们加快了服务上市速度,并推动我们不断创新。”
创新平台
京东构建了一个平台,可使用它基于图像匹配和特征提取来创建新服务,同时还可在京东开发其他深度学习和人工智能应用时用作模板。借助 BigDL 框架,京东能够在通用硬件上使用 Caffe*、Torch* 和 TensorFlow* 等框架中的预训练模型,从而以更快的速度测试和推出新服务,且无需投入专用硬件。京东将继续面向内部应用和基于云的服务,在各种深度学习应用(包括分布式模型训练)中运用 BigDL。在公有云产品方面,京东已经推出了基于 BigDL 的文本分类模型,支持按主题对文章进行分类。京东将继续在这些方面及其他新技术计划方面与英特尔密切合作。
京东简介
京东隶属于京东集团,于 2004 年进入电子商务领域。截至2017 年 3 月,京东拥有超过 120,000 名正式员工,是中国最大的手机、数字技术和计算机零售商在线市场之一。公司的产品目录涵盖多个类别,包括家居用品、电脑、玩具、男装、女装、鞋类、图书、礼物、运动装备和汽车配件。2014 年 5 月,京东成功在美国纳斯达克上市。www.jd.com
了解更多
• 英特尔® 至强® 处理器 E5 家族
• BigDL:基于 Apache Spark* 的分布式深度学习
• 英特尔® 数学核心函数库(英特尔® MKL)
• 解析京东大数据下高效图像特征提取方案
经验总结
其他云服务提供商可以从京东的经验中学习以下方面:
• 通过在同一数据存储集群上执行深度学习分析,可以消除将数据复制到独立分析集群所需的时间。在京东的案例中,这占据了整个分析工作负载运行时间的一半
• BigDL 提供了一个框架,可用于在 Caffe* 等框架中加载已使用 GPU 训练好的模型,并在基于 CPU 的 Spark*中使用这些模型。BigDL 还可与第三方预训练模型一起使用,从而加快服务上市时间
• 通过创建图像特征提取功能,京东目前能够开发和部署创新型应用,令自身的公有云产品(如文本分类)或电子商务业务(如图像搜索)更具竞争优势
寻找适合贵公司的解决方案。请联系您的英特尔代表或访问 intel.cn/CSP