深度解读大规模深度学习工具的当前趋势

本文作者Panos Labropoulos博士是 Bright Computing 的高级支持工程师,原文来自 NextPlatform

在过去的十年,企业已经开始使用机器学习(ML)收集和分析大量数据以获得竞争优势。现在有一些人试图走的更远 — 使用称为机器学习分支的深度学习(DL)技术。他们正在寻求探索隐藏在数据中更深奥的特性来为欺诈检测、需求预测、点击预测和其他数据密集型分析创建预测应用程序。

使用深度学习(DL)技术开发的计算机视觉、语音识别、自然语言处理和音频识别应用需要大规模的计算能力来处理大量数据。为了获得企业正在寻找的深度学习(DL)技术解决方法,需要在企业的层面上部署和管理底层的 IT 基础设施。为了让机构能够更快更容易地从大量复杂的数据中获得可行见解,新解决方案正在被研发。

机器学习包括开发算法,通过从示例输入构建模型以进行数据驱动的预测或决策。诸如谷歌(Google)、Facebook、亚马逊(Amazon)、百度(Baidu)、雅虎(Yahoo)、特斯拉汽车(Tesla Motors) 和 沃尔玛实验室(Walmart Labs)等领先的技术公司已经在使用机器学习工具改进图像识别、程序化广告、产品和内容推荐的分析应用程序。

有三种类型的机器学习:监督式机器学习无监督式机器学习强化学习

通过监督式机器学习,程序在预定义的一组标准上被「训练」。例如,你可以基于邻居、卧室数量和总平方英尺来给程序馈送先前房屋销售价格的的信息,然后要求它预测新的销售价格。一个好的房地产代理知道如何基于地域、邻居和类似因素来定价房子,但是使用标准技术来变成计算机做这件事情将是非常麻烦的。另一个例子是向计算机展示预定义的数据集(比如猫和狗的图像集合)以训练它正确地识别其他相似图片。

无监督式机器学习意味着程序被给于大量的数据并且必须找到所提供的数据间的非线性关系。这方面的一个例子可能是查看房地产数据并确定哪些因素导致城市某些地区的价格上涨。一个主要制造商正在使用这种无监督式机器学习来预测未来对于不同零件的需求。这样,在设备必须接地之前,零件就可用于安装。人类专家可能知道什么因素会影响零件的需求,但是机器学习提供了自主决策所需要的附加数据。

强化学习意味着计算机程序与其必须执行某个任务的动态环境进行交互。示例包括与社会媒体动态交互以收集关于某个问题公众情绪的数据。计算机可以从数据中获得信息并预测未来的实时贡献。

这些机器学习方法仅在问题可解并有可用数据时才起作用。例如,我们不能根据消费者是否有狗来使用机器学习方法估计飞机票的价格。如果数据不能帮助人类专家解决问题,它同样也不能帮助机器。

如例子所示,其中最顶行明显是孩子的图像。对于计算机来说,包含在自行车上的,在沙滩上的孩子,或者是侧向翻转的位图是完全不同的数据集。教计算机去区分它们是非常困难的一件事情。在某些情况下,这些图片的差异关乎生死。比如,最底部包含着道路交通的标志。自主驾驶的汽车因为被雪覆盖而不能辨认出道路标志是不可接受的。一个普通的驾驶员因为其八边形的形状可以辨认出它,那么计算机应该也可以做到。

机器学习不仅让企业从越来越庞大和多样化的数据集中发现模式和趋势,还能够让传统上由人类完成的分析自动化,从商业相关的互动中学习并且提供基于证据的回应。它同样提供了可能成功的建议行为的置信水平。它使企业提供新的差异化和个性化的产品和服务,以及提升现有产品和服务的影响力并且/或者降低其成本。然而,机器学习是一种非精确计算,因为其没有确定性的建模特征的方法。特征通常需要被建模为神经网络并且参数取决于输入数据集的质量。

深度学习作为机器学习的一个分支,是一种模拟人脑的动态系统,尤其是神经元如何在大脑中相互作用,以及大脑中的不同层是如何协作的。与机器学习不同,在深度学习中,特征被建模为一个深度学习神经网络与一些内部/隐藏层,其捕获数据的微妙信息并且分配其物理意义。深度学习能够将数字图像分割称为更易于分析的片段;这意味着可以提取高级信息并对其编码以供计算机使用。

例如,对于人类,脸部有眼睛。对于计算机,脸部有着明暗的像素,构成了一些类型的抽象的线条。深度学习模型的每一层都会让计算机识别同一对象的另一级别的抽象。使用较早的动物类比,深度学习会使用户区分那些躺着地上的猫与那些跳跃的猫的图片。

深度学习在过去几年中取得了较大进步。例如,下图展示了作为 ImageNet 大规模视觉识别挑战(ILSCRC)的一部分的图像识别研究的准确率,该技术评估了大规模的物体检测和图像分类的算法。这项研究为了使研究员可以比较更广范围的物体的检测进步,并评估计算机视觉的大规模图像索引检测和注释的进展。

图中蓝色部分显示了在 2010 和 2011 年的可用的传统计算机视觉方法,紫色显示了最近使用的深度学习技术。红色显示了人的准确率,这是通过要求个体和小组来描述和分类图像测量的。小组中的人被允许考虑所示的图像并得出共同的答案。一个人立即注意到一个稳妥的改进方法。在 2015 年,使用深度学习技术的计算机已经变得和人一样高效。

百度研究的深度语音项目(Deep Speech project)最近使用单一、深度循环神经网络在英语和普通话的语音识别中实现了人类水平的准确性。这个结果表明深度学习在计算机视觉之外的领域也是可用的。

另一个有趣的例子是 Google DeepMind在 AlphaGo (一个被开发的围棋计算机程序)中使用了深度学习技术。AlphaGo 的算法基于先前通过广泛训练的人工神经网络(从人类和计算机游戏)「学习」到的知识来采取其移动。在 2015 年,它成为了第一个在全尺寸的棋盘上无障碍地打败专业人类围棋选手的计算机围棋程序。

人们对深度学习技术愈发感兴趣的最后一个例子是 DeepMind 和 Blizzard 之间的合作,他们正在开发星际争霸 II (StarCraft II)。使用世界上最受欢迎的电脑游戏,该项目正被开发为一个研究社区并对世界上的人工智能和机器学习的研究者们开放。

机器学习带来的巨大计算挑战

机器学习和深度学习技术的这些示例令人印象深刻,但是它们却带来了繁重的计算任务。对于深度学习的训练通常需要几十个五十亿的浮点运算(FLOPs),这在小集群上需要转换为几周或者几个月的时间。在迅速变换的环境中,许多,即使不是大多数,组织不能等待如此长的时间来提取智能。

深度学习软件模块如果使用开源存储库可以花费企业几天的时间来下载和安装。找到给定深度学习模块或库的所有依赖项会花费更长的时间。由于这些工具仍然是新的,许多这些依赖项仍然需要用户确保特定库的特定版本可用。一旦寻找到,用户可能需要耗时地对所有库和依赖项进行手动安装。在某些情况下,它们必须满足 60 多个依赖项。许多库并不能从标准企业
   Linux 发行版的开源存储库安装,这意味着用户需要寻找并手动安装它们,以保证它们使用可以一起工作的版本。

用户没有从具有出色标称性能特征但缺乏优化库的新硬件中获益,因为这将花费几个月或者几年的时间来创建这些库。特别地,深度学习需要有效的 C 到 BLAS、FFTs、卷积、 malloc 和 memcopy 的接口。英伟达(NVIDIA )提供了这些需要的到 cuBLAS 和 cuFFT 的接口,但这样的优化库从其他密集的硬件平台丢失了。通常,需要几年的时间才能在新的架构上优化这些库。

对于那些寻找可用机器学习软件包概述的人,Knowm 公司的过剩的机器学习工具提供了超过 40 个机器学习软件包和库的详细比较

为深度学习搭建一个框架

新的工具和框架正在出现,这使得深度学习更加容易。组织必须选择在软硬件、网络、工具和库方面的正确的组合以有效地开发和运行应用程序。

业务的第一个流程是简化深度学习环境的部署、管理、操作和扩展。企业必须首先启用分析师和开发人员。深度学习工具并不能独立工作。为了更有效率,公司需要向开发人员和分析师提供正确的工具和支持软硬件的框架的集合,而不必将其转变为 IT 管理人员。

虽然人工智能和机器学习已经伴随了我们几十年,深度学习仍然是一个新的领域,并在不断变化。公司需要灵活地采用新的工具和做法,并以轻快的方式快速响应市场的需求。

现代深度学习环境

为了响应这些需求,Bright Computing 开发了它的 Bright for Deep Learning 解决方案,在 Bright Cluster Manager 7.3 版本可用。新的方法提供了机器学习框架的选择,以简化包括 Caffe、Torch、TensorFlow、Theano 和 CNTK在内的深度学习项目。它包括几个最受欢迎的机器学习库,以帮助访问数据集,数据集包括 MLPython、cuDNN (NVIDIA CUDA Deep Neural Network library )、DIGITS (Deep Learning GPU Training System) 和 CaffeOnSpark(在大数据集群上的开源的分布式深度学习解决方案)。

为深度学习处理大量数据需要大量的计算能力。随着专为深度学习设计的新工具变得可用,开发人员正在使用它们并利用加速器(比如 NVIDIA GPUs)在高级高性能(HPC)的集群上搭建他们的应用。

GPUs 使得机器学习中所需的计算密集型程序的计算速度比仅适用 CPU 的解决方案快得多。The Bright for Deep Learning 解决方案提供了 GPU 加速版本的通用机器学习库以便更轻松地布置和管理硬件以及相关软件、APIs 和机器学习库。这意味着研究员和开发者只需要专注于他们的工作——而不是管理工具。

这也意味着用户不必担心查找、配置和部署运行这些深度学习库和框架所需的所有依赖项,包括超过 400 MB 的支持机器学习软件包的 Python 模块,以及 英伟达(NVIDIA)硬件驱动、CUDA(平行计算平台 API)驱动程序、CUB(CUDA 构建块)和 NCCL (标准集体通信程序库)。在未来会增加更多,比如 CNTK、Bidmach、Keras、MXNet 和其他。

如果用户需要更多的容量,他们可以使用深度学习功能将支持 GPU 的实例扩展到使用 Bright 的云爆发功能的云中。他们还可以轻松地集成深度学习应用程序,或者在私有 OpenStack 云中运行它们。用户甚至可以通过使用 CaffeOnSpark 运行深度学习应用程序来利用现代集群提供的性能。

企业将最先进的 HPC 集群与深度学习相结合

各种企业已经使用该解决方案将最先进的 HPC 集群和深度学习相结合。例如,斯坦福大学正在致力于计算机视觉、自然语言处理和信用卡诈骗检测研究。乔治梅森大学正在对科学模拟数据进行分析。

Illumina 开发了用于生命科学研究、翻译和消费者基因组学以及分子诊断的测序和阵列技术,其正在进行基因预测研究以鉴定可以编码某些功能的基因组部分。三星正在致力于将 Caffe 深度学习网络应用于医疗保健应用的计算机视觉工作。RICOH 正在研究图像识别的深度学习技术,纽约大学(NYU)多媒体中心正在测试 HPC 集群的深度学习任务。

深度学习与传统的 HPC 工作负载一致(如大型密集线性代数问题)。然而,目前最快的深度学习集群和最快的超级计算机之间存在巨大的差距。虽然仍然有许多挑战,但是有很大的机会来进一步推进深度学习的性能并可以使用更大的数据集。

入门深度学习HPC机器学习工程
1
翻译的乱七八糟的,不知所云,没点真实内容。