新智元引荐
来历:AI前哨策划 | 蔡芳芳
作者 | Maglish修改 | Linda
修改整理:元子
【新智元导读】现如今,互联网服务正阅历着根本性的改变,并逐步转向智能核算年代。现代互联网服务供给商遍及选用人工智能来增强其服务。在这种布景下,研讨人员提出了许多立异的人工智能算法、体系和架构,因而基准(benchmark)和点评基准的重要性也随之上升。但是,现代互联网服务选用依据微服务的体系结构,由多种模块组成。这些模块的多样性和履行途径的杂乱性、数据中心基础设施的巨大规划和杂乱层次结构、数据集和作业负载的保密问题对规划基准提出了巨大应战。
这篇论文中,百度、阿里、腾讯等几家尖端互联网服务供给商联合我国的 17 个互联网企业一起推出了第一个具有职业标准的互联网服务 AI 基准——AIBench。AIBench 供给了一个高度可扩展、可装备、灵敏的基准测验结构。作者从三个最重要的互联网服务范畴(查找引擎、交际网络和电子商务)中确认了 16 个较为杰出的人工智能问题范畴。
在 AIBench 结构的基础上,作者运用实在国际的数据集和作业负载,规划并完结了第一个端到端的互联网服务 AI 基准。在 CPU 和 GPU 集群上,作者对端到端运用程序基准进行了开始点评。与 AI 相关的组件明显地改变了互联网服务的要害途径和作业负载特性,证明了端到端 AI 运用程序基准的正确性和必要性。这篇论文是现在为止最全面的 AI 基准作业。咱们将在 AI 前哨第 92 篇论文导读中具体解读这项 AI 基准作业。
AIBench 网页:
http://ponent benchmarks),并进一步了解什么是最密布的 核算单元(微基准,micro benchmarks),在此基础上,咱们能够构建一个简练而全面的人工智能基准结构。
最终,从体系结构的视点来看,在前期阶段将一个完好的人工智能运用程序移植到一个新的体系结构是很困难的,乃至是不可能的。而在后期,只是运用微基准或组件基准则不足以对不同模块进行深入剖析,或在实际运用场景中确认瓶颈问题。现在最先进的 AI 基准只供给了很少的微基准或组件基准,均无法掩盖职业规划的互联网服务的悉数事例。因而,构建一个由悉数的微基准或组件基准,以及端到端运用基准组成的互联网服务 AI 基准,关于弥合这一巨大缺口具有重要意义。
论文奉献:
提出并完结了一个高度可扩展、可装备、灵敏的人工智能基准结构。
与 17 个职业合作伙伴一起确认了 16 个杰出的人工智能问题范畴,并相应地针对这些范畴施行了 16 个组件基准。
规划并施行了第一个职业规划的端到端互联网服务人工智能基准,其间包含一个底层电子商务查找模型。
在 CPU 和 GPU 集群上,完结端到端的互联网服务 AI 基准,并对功能、运转功率和履行时刻进行了深入剖析,为进一步优化供给了辅导。
表 1:AI 基准比照
2. AIBench 结构
2.1 结构结构
AIBench 结构供给了一个通用的、灵敏且可装备的 AI 基准结构,如图 1 所示。它供给了松懈耦合的模块,这些模块能够经过装备和扩展组成端到端的运用程序,包含数据输入、人工智能问题范畴、在线推理、离线练习和布置东西模块。
图 1:AIBench 结构
数据输入模块 担任将数据输入其他模块。该模块不只从威望的公共网站搜集了具有代表性的实在数据集,并且在匿名化后从职业合作伙伴处搜集了数据集。在该数据形式的基础上,进一步供给了一系列数据生成器,以支撑大规划的数据生成,如用户或产品信息。该结构集成了各种开源数据存储体系,并支撑大规划数据的生成和布置。
为了完结结构的多样性和代表性,作者首要确认在最重要的互联网服务范畴发挥重要作用的 杰出 AI 问题范畴。然后给出了以这些 AI 问题范畴为组件基准的人工智能算法的具体完结。此外,在这些组件基准测验中剖析最密布的核算单元,并将它们作为一组微基准来完结。
结构还供给了 离线练习 和 在线推理 模块,以构建端到端的运用程序基准。首要,离线练习模块从 AI 问题范畴模块中选择一个或多个组件基准,经过指定所需的基准 ID、输入数据和履行参数(如批巨细)。然后离线练习模块对模型进行练习,并将练习后的模型供给给在线推理模块。在线推理模块将练习好的模型加载到服务体系中,例如 TensorFlow 服务。经过与要害途径中的其他非 AI 相关模块协作,一个端到端的运用程序基准就构建完结了。
为了能够在大型集群上轻松布置,该结构还供给了 布置东西,其间包含两个别离运用 Ansible 和 Kubernetes 的主动布置模板。其间,Ansible 模板支撑在物理机或虚拟机上的可扩展布置,而 Kubernetes 模板则用于在容器集群上布置。
2.2 杰出 AI 问题范畴
为了掩盖互联网服务中广泛的首要人工智能问题范畴,作者深入剖析了查找引擎、交际网络和电子商务三大首要互联网服务的中心场景,如表 2 所示。总共确认了 16 个具有代表性的人工智能问题范畴:
表 2:互联网服务中的杰出 AI 问题范畴
分类: 从输入数据中提取不同的主题类,这是一个有监督的学习问题,经过界说一组方针类别并练习模型进行辨认。它是互联网服务或其它运用范畴的典型使命,广泛运用于类别猜测、废物邮件检测等多种场景中。
图画生成: 供给一个无监督的学习问题来模仿数据的散布并生成图画。此使命的典型场景包含图画分辨率增强,可用于生成高分辨率图画。
文本到文本翻译: 将文本从一种言语翻译到另一种言语,这是核算言语学最重要的范畴,能够用来智能翻译查找和对话。
图画到文本: 主动生成图画的描绘。它能够用来生成图画标题和辨认图画中的光学字符。
图画到图画: 将图画从一个表明转换为另一个表明。它能够用来组成不同年纪的人脸图画,模仿虚拟化装。面部老化能够协助查找不同年纪阶段的面部图画。
语音辨认:将语音输入辨认和翻译为文本。该使命首要运用于语音查找和语音对话翻译。
人脸嵌入表明: 将人脸图画在内嵌空间中转化为一个向量。该使命的典型场景是人脸类似度剖析和人脸辨认。
三维人脸辨认: 从不同视点从多幅图画中辨认出三维人脸信息。首要研讨三维图画,有利于完结人脸类似度和人脸认证场景。
方针检测: 检测图画中的方针。典型的场景是笔直查找,如依据内容的图画检索和视频方针检测。
引荐: 供给主张。此使命广泛用于广告引荐、社区引荐或产品引荐。视频猜测:经过猜测从前帧的改换来猜测未来的视频帧。典型的运用场景是视频紧缩和视频编码,用于高效的视频存储和传输。
图画紧缩: 紧缩图画并削减冗余。从数据存储开支和数据传输功率的视点来看,这项使命关于互联网服务是非常重要的。
三维物体重建: 猜测和重建三维物体。典型的运用场景有地图查找、光场烘托和虚拟实际。
文本总结: 为文本生成摘要,关于查找成果预览、标题生成和要害字发现非常重要。
空间改换: 履行空间改换。典型运用场景是空间不变性图画检索,这样即便图画被大幅拉伸,也能够检索图画。
学习排序: 学习查找内容的特点,对查找成果的得分进行排序,这是查找服务的要害。
2.3 微基准和组件基准
针对上面总结的杰出人工智能问题,作者给出了人工智能算法的具体完结。表 3 和表 4 列出了 AIBench 中的组件基准和微基准。总的来说,AIBench 包含 16 个用于 AI 问题的组件基准和 12 个从典型 AI 算法中提取核算单元的微基准。
表 3:AIBench 组件基准
表 4:AIBench 微基准
2.4 数据模型
为了满意不同运用的数据集的多样性,作者搜集了 15 个具有代表性的数据集,包含 ImageNet、CIFAR、LSUN、WMT English-German、CityScapes、Librispeech、Microsoft Coco、LFW、VGFace2、Robot Pushing、MovieLens、ShapeNet、Gigaword、MNIST、Gowalla 以及来自职业合作伙伴的 3D 人脸辨认数据集。
2.5 点评方针
AIBench 专心于准确性、功能和能源消耗等职业要点重视的方针。在线推理的衡量包含查询呼应推迟、尾部推迟和功能方面的吞吐量、推理精度和推理能耗。离线练习的衡量包含每秒处理的样本、练习特定 epoch 的时刻、练习到达方针精度的时刻和练习到达方针精度的能量消耗。
规划和完结运用基准
在 AIBench 结构的基础上,作者完结了第一个端到端的 AI 运用基准,对实际的电子商务查找使命进行完好的用例建模。
3.1 规划和完结
端到端运用基准由四个模块组成:线上服务器、离线剖析器、查询生成器和数据存储,如图 2 所示。
图 2:AIBench 完结
在线服务器(online server) 接纳查询恳求,然后结合 AI 推理进行个性化查找和引荐。
离线剖析器(Offline analyzer) 选择恰当的 AI 算法完结,并进行练习以生成学习模型。此外,离线剖析器还担任构建数据索引以加快数据拜访。
查询生成器(Query generator) 模仿并发用户,并依据特定的装备将查询恳求发送到线上服务器。作者完结了依据 JMeter 的查询生成器。
数据存储模块(Data storage module) 存储各种数据,包含结构化、非结构化和半结构化数据,以及各种数据源,包含表格、文本、图画、音频和视频。
3.1.1 在线服务器
在线服务器结合传统的机器学习和深度学习技能供给个性化的查找和引荐。在线服务器由四个子模块组成,包含查找方案器、引荐器、查找器和排序器。
查找方案器(Search Planer) 是在线服务器的进口。它担任接纳来自查询生成器的查询恳求,并将恳求发送到其他在线组件并接纳回来成果。作者运用 Spring Boot 结构来完结查找方案器。
引荐器(Recommender) 依据从用户数据库中获取的用户信息,对查询项进行剖析,并供给个性化引荐。作者运用 Flask Web 结构和 Nginx 构建类别猜测引荐器,并选用 TensorFlow 完结在线引荐。
查找器(Searcher) 布置在三个不同的集群上。按点击率和购买率,产品能够按人气凹凸分为三类。不同盛行度产品的索引存储在不同的集群中。关于每个类别,查找器都选用不同的布置战略。高人气的集群包含更多的节点和备份,确保了查找功率。而受欢迎程度较低的集群布置的节点和备份数量最少。作者运用 Elasticsearch 来树立和办理三个查找集群。
排序器(Ranker) 运用引荐器回来的权重作为初始权重,经过一个个性化的 L2R 神经网络对产品得分进行排序。排序器也运用 Elasticsearch 完结产品排序。
在线服务流程如下:
(1)查询生成器模仿并发用户,向查找方案器发送查询恳求;
(2)查找方案器接纳查询恳求并将查询项发送给引荐者;
(3)引荐器对查询进行剖析,并将类别猜测成果和个性化特点权重回来给查找方案器;
(4)查找方案器向查找器发送初始查询项和猜测的分类成果;
(5)查找器查找反向索引并将产品 ID 回来给查找方案器;
(6)查找方案器向排序器发送产品 id 和个性化特点权重;
(7)排序器依据初始权重对产品进行排序,并将排序得分回来给查找方案器;
(8)查找方案器依据产品标识发送产品数据库拜访恳求,获取产品信息;
(9)查找方案器将查找到的产品信息回来给查询生成器。
3.1.2 离线剖析器
离线剖析器担任练习模型和树立索引,以进步在线服务功能。它由人工智能练习器、作业调度程序和索引器三部分组成。
人工智能练习器(AI trainer) 运用数据库中存储的相关数据练习模型。
作业调度程序(Job scheduler) 供给了两种练习机制:批处理和流式处理。在实际场景中,一些模型需求常常更新。例如,当咱们查找一个项目并点击第一页中显现的一个产品时,运用程序将当即依据咱们刚刚单击的产品练习新模型,并在第二页中显现新的引荐。该基准完结考虑了这种状况,并选用流式办法每隔几秒钟更新一次模型。关于批处理,练习器将每隔几个小时更新一次模型。
索引器(Indexer) 用于为产品信息构建索引。
3.2 其他职业运用程序的可扩展性
以医学人工智能场景为例,作者介绍了怎么运用 AIBench 结构构建临床确诊运用的端到端基准。人工智能相关的临床确诊要害途径包含以下过程。
1)依据病史数据离线练习一系列确诊模型,如检测模型、分类模型、引荐模型等;
2)检测患者体检数据中的反常信息,如 CT 图画的肿瘤检测;
3)分类猜测潜在疾病;
4)引荐最佳医治方案。
为了构建端到端的临床确诊运用基准,AIBench 结构灵敏地供给了与 AI 相关的离线模块和在线模块。在离线模块中,选择方针检测、分类和引荐的组件基准作为练习模型。在在线模块中,将这些模型作为服务进行加载以在线推理。
4 试验设置
4.1 节点装备
作者布置了一个 16 节点的 CPU 和 GPU 集群。关于 CPU 集群,一切节点都连接到一个 1GB 的以太网网络。每个节点装备两个 Xeon E5645 处理器和 32 GB 内存。每个处理器包含六个内核。每个节点的操作体系版别均为 Linux CentOS 6.9,Linux 内核版别为 3.11.10。
软件版别别离是 JDK1.8.0、Python3.6.8 和 GCC 5.4。GPU 节点装备了四个 Nvidia Titan XP。每个 Titan XP 具有 3840 个 Nvidia Cuda 内核和 12GB 内存。表 5 列出了每个节点的具体硬件装备。
表 5:硬件设置细节
4.2 基准布置
在线服务器设置: 在线服务器布置在 16 节点 CPU 集群上,包含 1 个查询生成器节点、1 个查找方案器节点、2 个引荐器节点、9 个查找器节点、1 个排序器节点和 2 个数据存储节点。表 6 列出了具体的模块设置信息和触及的软件信息。
表 6:在线服务器设置
离线练习器设置: 离线练习器布置在 GPU 上。CUDA 和 Nvidia 驱动程序版别别离为 10.0 和 410.78,运用 1.1.0 版别 PyTorch 完结。
4.3 功能数据搜集
作者运用 Network Time Protocol 在一切集群节点上完结时钟同步,并取得在线服务器的推迟和尾推迟衡量。运用剖析东西 Perf,经过硬件功能监督计数器(PMC)搜集 CPU 微体系结构数据。关于 GPU 评测,作者运用 Nvidia 评测东西包 nvprof 来盯梢 GPU 的运转功能。
5 点评
作者对端到端人工智能运用程序基准,包含在线服务器和离线剖析器中包含的 10 个人工智能组件基准进行了测评。
5.1 在线服务器点评
作者点评了 16 节点 CPU 集群上的在线服务器功能。产品数据库包含 10 万个具有 32 个特点字段的产品。查询生成器用 30 秒的预热时刻模仿 1000 个用户。用户在每个考虑时刻距离内接连发送查询恳求,遵从泊松散布。当 20000 个查询恳求完结时,搜集功能数据。
图 3:在线服务器推迟
推迟是衡量服务质量的重要方针。图 3 给出了在线服务器的推迟。如图 3(a)所示,当时基准完结的整个履行途径的总推迟的均匀值、第 90 百分位和 99 百分位对应别离为 161.13 毫秒、392 毫秒和 956 毫秒。作者进一步深入剖析了每个模块的推迟(图 3b),引荐器占有了最大的推迟:均匀推迟 75.7 毫秒, 90 百分位推迟 209.4 毫秒,99 百分位推迟 557.7 毫秒。比较之下,查找器和引荐的推迟都在 4 毫秒之内。
此外,图 3(c)给出了引荐器在查询解析、用户数据库拜访、类别猜测和 TensorFlow 服务方面的推迟分化。作者发现数据库拜访和 TensorFlow 服务推迟是影响服务功能的前两个要素。杂乱的数据结构和频频的废物搜集对数据拜访速度有很大的影响。而 TensorFlow 服务则需求运用引荐模型进行前向推理,然后发生较大的推迟。为了衡量 AI 组件对服务功能的影响,找出瓶颈,作者从以下几个方面进行了评论。
人工智能相关组件对服务功能的权重。 人工智能组件明显改变了要害途径。在点评中,在 AI 相关和非 AI 相关组件上花费的时刻均匀为 34.29 和 49.07 毫秒,第 90 百分位推迟为 74.8 和 135.7 毫秒,第 99 百分位推迟为 152.2 和 466.5 毫秒。这表明,一个工业规划的人工智能运用基准套装是现代互联网服务必不可少的。
AI 的局限性。 在线推理模块需求对练习后的模型进行加载,并进行前向核算得到成果。但是,神经网络模型的深度或巨细可能在很大程度上影响推理时刻。当模型的巨细从 184mb 添加到 253mb,TensorFlow 服务的推迟急剧添加,均匀推迟从 30.78 毫秒添加到 125.71 毫秒,第 99 百分位推迟从 149.12 毫秒添加到 5335.12 毫秒。因而,互联网服务架构师必须在服务质量和神经网络模型的深度或巨细之间进行权衡。
微结构行为的差异:
非 AI 相关组件与 AI 相关组件之间的差异。 作者运用 perf 对 AI 相关和非 AI 相关组件的缓存行为进行了采样。作者发现,与非 AI 相关的组件比较,AI 相关的组件会遭受更多的缓存缺失(cache miss)。TensorFlow 服务每千条指令有 61 个 L2 缓存缺失,而非 AI 相关组件的均匀数量仅为 37。
从小型神经网络模型到大型神经网络模型的改变。 作者比较了两种神经网络模型,一种是较小的 184mb,另一种是较大的 253mb。关于更大的模型,每千条指令的 L3 缓存缺失率会急剧添加,从 1.38 添加到 8.9,这会导致很多内存后端暂停以从内存中获取数据。因而,第 99 百分位的推迟添加了 30 倍以上。
5.2 离线练习点评
在本末节中,首要剖析了 GPU 的履行功率,并点评了 Titan XP 上端到端 AI 运用程序基准的离线剖析器中运用的十个组件基准。
作者经过函数级运转时刻分化和履行暂停剖析全面剖析了 GPU 的运转功率。图 4 显现了每个组件基准的 SM 功率,从 29%(学习排序)到 95%(引荐)不等。
图 4:SM 功率
为了研讨影响功能的要素,作者首要进行运转时刻分化剖析,将基准分化为热门内核或函数,然后依据不同的暂停百分比来核算 GPU 的履行功率。
5.2.1 运转时刻分化
作者运用 nvprof 对运转时刻进行盯梢,找出占运转时刻 80% 以上的热门函数。作者将占用很多运转时刻的函数选择出来,并依据它们的核算逻辑将它们分为几类内核。经过核算,将十个组件基准中最耗时的函数分为六类内核:卷积、通用矩阵乘法(gemm)、批规一化、relu 激活函数、元素操作和梯度核算。每个内核都包含一组处理类似问题的函数。例如,gemm 内核包含单精度或双精度浮点通用矩阵乘法等。图 5 显现了上述六个内核的运转时刻分化,即每个内核中一切相关函数的均匀值。
图5:10个组件基准的运转时刻分化
此外,关于每个内核,作者总结了在十个组件基准中占用很多运转时刻的典型函数,如表 7 所示。
表7:每个内核的热门函数
从图 5 中咱们发现,学习排序花费了太多时刻进行卷积,相应的函数调用是 maxwell_scudnn_128x32_stridedB_splitK_interior_nn,SM 功率为 18.5%,这便是学习排序基准的 SM 功率最低的原因。作者以为,这六个内核及其相应的函数不只是 CUDA 库优化的优化方向,也是微结构优化的优化方向。
5.2.2 GPU 履行功率剖析
针对以上六个最耗时的内核,作者点评了这些内核的八种暂停,包含指令获取暂停(Inst_fetch)、履行依靠暂停(Exe_depend)、内存依靠暂停(Mem_dependent)、纹路暂停(Texture)、同步暂停(Sync)、常量内存依靠暂停(Const_mem_depend)、管线忙暂停(Pipi_busy)、内存约束暂停(Mem_throttle)。
图6:每个内核的暂停分化
图 6 显现了每个内核的八种暂停的分化。作者发现前两个 GPU 履行暂停是内存依靠暂停和履行依靠暂停。内存依靠联系暂停可能是因为高速缓存缺失,因而加载 / 存储资源不可用。优化战略包含优化数据对齐、数据局部性和数据拜访形式。因为指令级并行度较低,可能会呈现履行依靠暂停,因而运用 ILP 能够在必定程度上缓解部分履行依靠暂停。
作者还确认了表 7 中函数级的暂停,以便为函数调用供给潜在的优化辅导。例如,“卷积”类中 maxwell_scudnn_128x32_stridedB_splitK_interior_nn 函数的内存依靠暂停百分比到达 61%,而“GEMM”类中 maxwell_sgemm_128x64_nn 函数的内存依靠暂停百分比为 18%,阐明需求不同的优化战略才干完结最大的功能改善。
定论
这篇论文介绍了 17 家我国企业联合推出的第一个职业标准互联网服务人工智能基准套装。作者提出并完结了一个高度可扩展、可装备和灵敏的人工智能基准结构,并从三个最重要的互联网服务范畴:查找引擎、交际网络和电子商务中提取出 16 个杰出的人工智能问题范畴。
在 AIBench 结构的基础上,规划并完结了第一个端到端的互联网服务 AI 基准套装,并给出了一个底层的电子商务查找模型。在 CPU 和 GPU 集群上,作者对端到端运用程序基准进行了开始点评。与 AI 相关的组件明显地改变了互联网服务的要害途径和作业负载特性,证明了端到端 AI 运用程序基准的正确性和必要性。
论文原文:
https://arxiv.org/abs/1908.08998