热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式技术原理(六):分布式和人工智能

分布式和人工智能

2016 年 3 月,Google AlphaGo 与围棋世界冠军李世石进行围棋人机大战,以 4 比 1 的总分获胜。至此,人工智能技术被推向了高潮。现在,人工智能已经广泛渗入到了我们的生活中,比如手机拍照美化、人脸识别、平安城市、自然语言处理、语音识别等。顾名思义,人工智能就是机器模拟人的思维,像人那样智能呗。目前,对人工智能的定义大多可划分为四类,即机器“像人一样思考”“像人一样行动”“理性地思考”和“理性地行动”。这里的行动,指的是采取行动或制定行动的决策。

那人工智能是如何让机器像人那样智能呢?人并不是天生就会解决问题的,我们经常会听到一句经典的话“见多识广”,人遇到新的问题,是通过学习新知识,然后结合自己的经验去解决问题的。比如,人并不是生来就认识香蕉,而是通过后天的学习(包括学习香蕉的形状、颜色、口味等)来获取识别香蕉的经验,当下次再看到香蕉时,就知道这是香蕉了。

人工智能要模拟人的智能也类似,需要通过大量的数据进行学习和分析获得规律(即建立一个模型),然后利用该规律或模型对未知数据进行预测,以判断是否与建模数据具有相同特征。

从人工智能的定义可以看出,数据、模型(也叫作算法)、算力是人工智能的三大核心。可以说,在一定程度上数据决定了机器学习的上限,而模型为逼近这个上限提供方法,因此数据处理和模型训练是人工智能的关键技术,算力决定了数据处理和模型训练的实用性能,而分布式技术就是解决算力的不二妙招。接下来,我就对数据处理和模型训练进行具体分析,来帮助你了解人工智能中需要用到哪些分布式技术来解决算力问题。

数据处理

数据处理又称数据预处理,是指通过数据统计、数据集成、数据清理、数据规约、数据变换等方法,对数据缺失、数据噪声、数据冗余、多数据源等问题进行处理以得到高质量数据,为模型训练提供高质量输入,是人工智能不可缺少的环节。

其实,数据处理类似于我们的知识整理过程。一个精心打造的、体系化梳理过的专栏文章,可以帮助我们在学习一门课程时,少走弯路、避免踩雷、达到事半功倍的效果。同样地,一个精心处理过的数据集,对于人工智能的模型训练也能起到事半功倍的效果,一方面可以缩短机器学习的周期,另一方面也可以提高机器学习的质量。

数据统计(Data Statistics)。数据统计是数据预处理的第一步,其范围、规模、方式等会直接影响数据分析的结果。常见的统计特征有最大值、最小值、均值、中位数、方差、标准差等。

数据集成(Data Integration)。数据的收集有多种途径,比如文件数据、数据库数据、问卷数据等,而不同的数据源,其数据的存储方式、命名规则、单位等不尽相同,所以我们需要数据集成来将多个数据源的数据整合到一起,以保证数据结构、属性的一致性,并去除冗余数据,方便后续分析。

数据清理(Data Cleaning)。由于用户忘记或设备损坏,经常会造成部分数据缺失;由于仪器故障或用户填写错误,经常会出现数据错误(噪声数据)等。如果不对这些数据做任何处理,后面的模型训练过程将产生严重偏差。数据清理过程就是用来解决这个问题的,它可以通过平均值或众数等来填充丢失值或修改这些噪声值。

数据规约(Data Reduction)。由于机器学习中的数据量很大,因此会导致很多重复的特征,或者很多不重要的特征(比如 ID 号等)。数据规约的目的就是去除重复特征及不重要的特征,从而减少数据的维度或者数据量,降低问题复杂度,同时不影响后面训练的结果。数据规约的方法有主成分分析法 (Principal Component Analysis,PCA)、小波变换 (Wavelet Transform,WT) 等。

数据变换(Data Conversion)。数据经过集成、清理与规约等步骤后,要将数据进行标准化、离散化、分层化,使得数据更加一致、更加容易被模型处理。数据变换方法主要有数据标准化、数据离散化和数据泛化三类。

可以看出,数据预处理虽然很复杂,但可以拆分成多个步骤进行。对于小样本数据处理时,单台机器的处理能力就足够了,所以采用单台机器进行处理即可。但是对于大规模数据来说,单台机器的处理能力已成为瓶颈,此时,不得不需要分布式数据处理了。

目前,业界已经有很多大数据处理软件,比如分布式计算框架 MapReduce、Spark,分布式存储框架 HDFS、HBASE 等,来进行分布式数据处理。

分布式模型训练

模型训练就是从已知数据中找到规律。具体来说就是,不断通过已有数据进行验证增强,最终给出最适合的模型参数,以此来预测给定的未知数据。

比如有一堆橘子和西瓜,可以通过模型训练得到:大的、绿色的判定为西瓜,小的、黄色的判定为橘子。那么当给出一个未知数据时,我们通过它的大小及颜色信息就可以判断该水果是橘子还是西瓜。这就是模型训练。其中,大小和颜色属于预测的两个特征,而它们的具体数值 (比如,大于 10 厘米等,颜色 RGB 的数值范围)就是模型参数。

随着大数据时代的到来,人工智能技术逐渐向大规模训练数据、大模型训练等方向发展。比如,百度的 Deep Speech 2 系统使用了 11940 小时的语音数据以及超过 200 万句表述来训练英语的语音识别模型;2011 年谷歌训练出拥有十亿个参数的超大神经网络模型。很明显,单台计算机的存储能力、计算能力已经不能满足了,因此分布式模型训练诞生了。

研究表明,在一台具有一个现代 GPU 的单台机器上完成一次基于 ImageNet 数据集的训练要耗费多达一周的时间。这还仅仅只是一次训练迭代的时间,如果是比较严格的生产级业务,至少需要数十次迭代,训练累计时间将会达到数十周。试想一下,如果一个业务仅仅是模型训练就花费数十周,那么等到真正上线,恐怕最佳时间窗口也已经过去了。

在多台机器上的分布式训练无疑能极大减少训练时间,近期的一项研究通过分布式技术,使用一个包含 2048 个 GPU 的集群将 ImageNet 的训练时间降低到了 4 分钟。TensorFlow 是由 Google 首创且在业内非常流行的开源机器学习框架,它的分布式版本利用了 GPU 加速服务器的虚拟化集群,将深度学习的训练时间从数周缩短到数小时。

总结来讲,分布式训练可以大大提升训练效率,大幅缩短训练时间,从而缩短业务面市周期,所以各大公司都在研究分布式训练,比如华为、IBM、阿里巴巴等。分布式模型训练是利用分布式集群,将多个计算机的存储能力、计算能力等进行统一管理和调度,从而实现模型训练。分布式模型训练的前提是有一个分布式集群,因此一个高效、可靠的分布式集群是基础。而这个分布式集群的架构、选主、调度、可靠性等关键技术,便奠定了分布式模型训练的基础。

数据分布式训练

数据分布式训练主要是针对大规模训练数据的场景。如下图所示,数据分布式训练是在每个节点(假设,一台服务器代表一个节点)上都存储或运行一个完整的模型训练程序的基础上,将大规模数据进行划分,然后将划分后的数据子集分配到多个节点上,每个节点根据自己接收到的数据进行训练。

分布式技术原理(六):分布式和人工智能

每个节点会根据自己拥有的数据子集训练出一个子模型,并按照一定的规则与其他节点通信,比如交互子模型参数或参数更新等信息,以保证最终可以有效整合来自各个节点的训练结果以得到全局的机器学习模型。比如,每个节点训练一个子模型得到自己的参数,最终的模型为多个节点的参数取平均值;可以看出,数据分布式有如下两个重要信息:

 数据需拆分存储到不同的节点进行训练,因此涉及了数据的拆分方法、数据的分布式存储和管理,其中数据拆分方法主要有两类,对训练样本进行划分和对每个样本的维度进行划分,这是非常基础的方法。目前,市面上大部分的书籍均有介绍,如果你感兴趣的话可以自行学习。

 节点之间需要通信交互信息。分布式通信是实现任何分布式技术的底座,没有分布式通信技术,分布式模型训练犹如纸上谈兵。

 备注:数据的分布式存储和管理,是数据分布式的基础,我会在“第五站:分布式数据存储”中与你详细讲述;而关于分布式通信的相关技术,我会在“第四站:分布式通信技术”与你介绍。

模型分布式训练

了解了数据分布式训练,我们再来看一下模型分布式训练。它针对的主要是大模型训练场景,在分布式领域中也被称为任务并行或任务分布式。

如下图所示,模型分布式训练是指将大模型进行拆分,然后将拆分后的子模型分配到不同的节点上进行训练。与数据分布式训练不同的是,首先每个节点上只存储和运行部分模型训练程序,而不是完整的模型训练程序;其次,各个子模型之间存在较强的依赖关系,比如节点 1 的输出是节点 2 和节点 3 子模型的输入,因此节点之间需要进行中间计算结果的通信。

分布式技术原理(六):分布式和人工智能

可以看出,模型分布式训练包含如下两个关键信息:

 大模型拆分为多个小模型,其本质是将大任务拆分为多个子任务,这其实就是分而治之策略。而子任务之间的拆分,需要运用包括流水线、MapReduce 等在内的多种分布式计算模式。

 不同节点上的子任务之间,需要通过通信交互中间计算结果,涉及分布式通信技术。

 备注:任务拆分和流水线等分布式计算模式是模型分布式训练不可缺少的技术,我会在“第三站:分布式计算技术”与你详细介绍;而关于分布式通信的相关技术,你可以移步“第四站:分布式通信技术”中进行了解。

混合模型训练

混合模型训练,主要是针对大规模训练数据和大模型训练共存的场景。

所谓混合模型训练,就是将数据分布式训练和模型分布式训练结合起来。如下图所示,假设有一个多 GPU 集群系统,首先对模型进行拆分,将子模型分配到单节点上不同的 GPU,然后对数据进行划分,每个节点负责训练一部分数据,最后进行模型参数同步得到全局参数和全局模型。

分布式技术原理(六):分布式和人工智能

从混合模型训练的流程可以看出: 单节点或多节点实现模型并行或模型分布式训练,涉及模型拆分、并行与分布式计算模式等; 多节点之间实现了数据分布式训练,涉及数据的拆分方法和数据的分布式存储和管理等技术; 单节点之间的模型分布式训练,需要单节点上多进程之间通信;多节点之间的分布式训练需要跨节点跨进程通信。

分布式技术原理(六):分布式和人工智能


推荐阅读
  • 推荐 :以数据驱动的方式讲故事
    直觉vs数据首先,你有思考过一个问题吗?当你的直觉与你所掌握的数据矛盾的时候,你是听从于直觉还是相信你所掌握的数据呢?201 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • AI行业的下一个风口是医疗?创业者们这样说
    ▼点击上方蓝字关注网易智能为你解读AI领域大公司大事件,新观点新应用编者按:4月10日,鲸准AI产业价值峰会在北京举行。本次大会除了邀请A ... [详细]
  • 当写稿机器人真有了观点和感情,我们是该高兴还是恐惧?
    目前,写稿机器人多是撰写以数据为主的稿件,当它们能够为文章注入观点之时,这些观点真的是其所“想”吗?最近,《南 ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • NLP如何进阶?你应该先掌握四大基本任务!
    “语言理解是人工智能领域皇冠上的明珠。”——比尔盖茨自然语言处理是一门综合性的学问,它远远不止机器学习算法。相比图像或语音,文本的变化更加复杂ÿ ... [详细]
author-avatar
程璇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有