在大数据时代,面对越来越复杂的任务,数据和深度学习模型的规模也变得日益庞大,用来训练图像分类器的带标签图像数据量动辄高达数百万甚至上千万。此时,如果不做任何剪枝处理,深度学习模型的参数数量可能会达到上百亿甚至几千亿。将分布式技术和深度学习相结合的分布式深度学习框架,能够实现深度学习模型的分布式高效训练,成为突破深度学习在数据和模型规模应用瓶颈的必然趋势。
BigDL是Intel开发的用于大数据处理和分析的分布式深度学习框架,是一个运行在Spark上的标准独立库。BigDL借助现有的Spark集群运行深度学习计算,并简化存储在Hadoop中大数据的加载,为用户提供了一个在现有Hadoop/Spark集群之上无缝运行其它深度学习框架应用程序的分布式平台;用户可以通过BigDL,在现有的大数据平台上构建新的端到端的大数据分析及人工智能应用。如图6-6所示,BigDL实现了深度学习和Spark生态系统的集成,一个BigDL程序可以与Spark组成部分(如SQL、Spark Streaming、ML Pipeline等)实现直接交互。
图6-6 Apache Spark中的BigDL[19]
BigDL的优势主要体现在如下几方面:(www.xing528.com)
(1)可扩展性:BigDL构建在Spark集群之上,可以充分发挥Spark集群强大的可扩展能力,数据规模增加时,扩展集群中的节点数即可实现大规模数据的高效并行计算。
(2)性能提升策略:与使用GPU加速训练过程的其它机器学习框架不同,BigDL在执行计算任务时采用了Intel数学内核库(math kernel library,MKL),如图6-7所示。Intel MKL由一系列由计算优化过的小程序(从快速傅里叶变换到矩阵乘法)组成,常用于深度学习模型训练;此外,BigDL针对每个Spark任务使用多线程编程。Intel MKL和多线程编程使得运行在BigDL上的程序具有极高的性能。
图6-7 BigDL运行于Spark集群之上[19]
此外,BigDL的运行环境可以是单机、集群或者云,既可以直接运行在已有Spark集群上,也可以和其它的Spark的工作负载集成,还可以运行在其它大数据分析平台和公有云上。总之,BigDL为深度学习提供了丰富的支持,并且具有良好的扩展性。自从BigDL开源以来,已被应用于解决包括目标检测、序列生成、推荐系统、反欺诈等在内的多种计算机视觉和机器学习任务。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。