PDF文库 - 千万精品文档,你想要的都能搜到,下载即用。

《首轮开源深度学习软件框架测试报告》.pdf

grave34 页 2.712 MB下载文档
《首轮开源深度学习软件框架测试报告》.pdf《首轮开源深度学习软件框架测试报告》.pdf《首轮开源深度学习软件框架测试报告》.pdf《首轮开源深度学习软件框架测试报告》.pdf《首轮开源深度学习软件框架测试报告》.pdf《首轮开源深度学习软件框架测试报告》.pdf
当前文档共34页 2.88
下载后继续阅读

《首轮开源深度学习软件框架测试报告》.pdf

首轮开源深度学习软件框架测试报告 中国人工智能产业发展联盟 开源开放推进组 人工智能是一种引发诸多领域产生颠覆性变革的前沿 技术,当前已经广泛赋能于各行各业。深度学习软件框架是 人工智能应用落地的重要抓手,是人工智能相关服务及产品 的核心。本次测试以产业界的实际需求为指引,重点关注各 开源深度学习软件框架在实际应用中的性能表现,旨在为企 业应用深度学习技术开展业务提供参考,同时为以深度学习 软件框架为技术核心的服务及产品选型测试提供依据。 一、测试背景介绍 (一) 深度学习软件框架发展概述 当前,人工智能基础性算法理论研究不断趋于成熟,各 大厂商纷纷投入到算法的工程实现并发力建设算法模型工 具,进一步将其封装为软件框架供开发者使用。当前,各主 流深度学习软件框架集成了算法的封装、数据的调用以及计 算资源的使用,已经成为了整个人工智能技术体系的核心, 起到承上启下的重要作用。 随着重要性的不断凸显,深度学习软件框架已经成为人 工智能产业竞争的焦点之一。目前业内的主流框架基本都是 1 通过开源的运营方式供开发者使用,同时扩大技术和产业生 态。以 TensorFlow 及 PyTorch 为引领的开源深度学习软件框 架分别在工业界和学术界占据了相对主导地位,MXNet、 PaddlePaddle 等主流开源框架由于其各自特性也在业务部署 中得到了充分的使用。2020 年以来,国内相继出现了旷视 MegEngine、清华大学 Jittor、华为 MindSpore、一流科技 OneFlow 等自研的开源深度学习软件框架。 总体来看,现阶段各开源深度学习软件框架在技术性能 与功能上各具特色,与底层芯片和上层应用仍处于多向选择、 优化和适配过程中,生态之间也相对独立,尚未形成垄断格 局,呈现出了一个百家争鸣的态势。 (二) 产业界对开源深度学习软件框架的选型需求 从目前产业界和学术界的实际使用情况来看,开源深度 学习软件框架在实际工程中的性能表现是对于用户来说最 为主要的选型考虑之一,尤其是在快速搭建和训练复杂深度 神经网络模型或处理面向海量数据的模型训练任务时,框架 是否能够具有更高的计算效率,更低的设备互联延迟,更有 效地利用 CPU 和 GPU 多个核心的分布式计算能力,从而提 升整体的任务处理效率。 然而,不同开源深度学习软件框架在设计和实现上存在 较大的区分,在相同软硬件环境下表现出来的性能也有所差 2 异。对于绝大部分用户来说,不会专注于框架的技术理论和 实现方式,导致在选择符合使用场景需求并具有较高性能的 框架时会遇到一定困难。因此,开展针对开源深度学习软件 框架性能的测试是很有必要的。 (三) 中国人工智能产业发展联盟已开展的工作 针对开源深度学习软件框架的选型需求,中国人工智能 产业发展联盟(以下简称“联盟”)开源开放推进组积极开 展了相关研究工作并取得了阶段性成果。 联盟在 2018 年 10 月发布了《深度学习技术选型白皮书》 , 该白皮书从深度学习训练框架、推断框架及技术生态工具集 三个维度,系统地梳理总结了基于开源的深度学习技术体系, 并结合企业自身业务开展的需求分析了技术选型因素,提出 了选型指标体系,就深度学习软件框架目前存在的问题及技 术发展趋势进行了研判。在此基础上,联盟继续深入开展了 相关研究和标准制定工作,于 2019 年起草了《深度学习软 件框架评估方法》,规定了深度学习软件框架的评估内容、 方法及要求,并已经完成该评估方法在 ITU-T SG16 Q5 的国 际标准立项,同时推进在国家人工智能标准化总体组的立项。 在上述工作基础上,联盟在 2019 年下半年启动了针对 开源深度学习软件框架的测试工作。自测试工作启动以来, 联盟开源开放推进组积极走访和调研国内具有深度学习软 3 件框架研发能力的企业,就框架测试的方案进行了多轮的探 讨和修订,并在 2019 年 11 月 14 日面向联盟成员单位召开 的研讨会上确定了最终的技术测试方案。2020 年 1 月 6 日, 联盟依托之江实验室搭建的具有先进算力资源的测试环境 正式启动了技术测试,并于 2020 年 5 月完成了测试工作。 后续联盟将在本次测试的成果基础上,继续深入开展相关研 究并推动标准制定和测试工作,持续发布相关成果。 本测试的参与人员及分工如下表所示: 表 1 参与人员与任务分工 序号 姓名 任务分工 1 孙明俊 审核 2 石霖 审核 3 刘硕 项目负责人 4 张哲煜 测试 5 张蔚敏 测试 二、测试方案介绍 本次测试的目的是为了得到各开源深度学习软件框架 对某个具体的深度学习训练任务处理速度的综合性评价,测 试方案框架如图 1 所示。 4 图 1 基准测试方案框架图 (一) 测试对象 参与本次测试的深度学习软件框架共有 4 个,分别是 TensorFlow、 PyTorch 、 MXNet 等 框 架的 开 源 版 本, 以及 OneFlow 在开源前的内部版本。 (二) 测试案例 本次测试针对以深度学习为核心的人工智能经典训练 任务,选取了包括计算机视觉(CV)、自然语言处理(NLP) 领域内公认的经典深度神经网络模型和数据集,具体如表 2 所示。 表 2 测试案例选择 应用场景 数据集 模型及相关参数配置 ResNet-50 CV ImageNet Learning rate: 0.128 Optimizer: sgd 5 VGG-16 CV ImageNet Learning rate: 0.128 Optimizer: sgd BERT-Base NLP Learning rate: 0.0001 Wikipedia Max sequence length: 128 Optimizer: Adam 针对以上各测试案例,本次测试均选用了一个能够满足 在各种并行规模下运行的官方或权威组织的参考实现,具体 如表 3 所示。 表 3 参考实现选择 ResNet-50 / VGG-16 BERT-Base NVIDIA 仓库: 官方仓库: https://github.com/tensorf https://github.com/NVIDI TensorFlow low/benchmarks/tree/mas A/DeepLearningExample ter/scripts/tf_cnn_bench s/tree/master/TensorFlow/ marks LanguageModeling/BERT *NVIDIA 仓库: 官方仓库: PyTorch https://github.com/pytorc h/examples/tree/master/i magenet https://github.com/NVIDI A/DeepLearningExample s/tree/master/PyTorch/Lan guageModeling/BERT 6 官方仓库: https://github.com/apache MXNet /incubator-mxnet/tree/ma ster/example/image-class ification OneFlow GluonNLP: https://github.com/dmlc/g luon-nlp/tree/v0.8.x/script s/bert 官方实现 *注:PyTorch 关于 BERT-Base 的参考实现在实际测试环境中未能运 行,因此不参与本次测试。 (三) 测试指标 深度学习软件框架在云端训练场景中运行深度神经网 络时,处理训练数据的吞吐能力和针对底层硬件架构的优化 加速能力是影响用户进行技术选型的关键要素。因此,本次 测试选择性能测试中常用的吞吐率和加速比作为各框架的 综合性能评价指标。 1. 吞吐率(Throughput) 吞吐率是对框架处理训练数据速度最直观的评价指标, 对于不同的应用或任务,吞吐率的具体定义不同。如对于图 像识别类任务,吞吐率定义为每秒处理的图片数。对于自然 语言处理类任务,吞吐率定义为每秒处理的句子数。具体来 讲,吞吐率的计算方式为:Throughput = 7 ܽ ‫ݐ‬ 肀肀 , 为 Mini-batch 的个数, 为完成 个 Mini-batch 训练所用的时 间。 2. 加速比(Speedup) 加速比是对框架分布式扩展能力最直观的评价指标,计 算方法是用多卡并行运行时的吞吐率除以单卡运行时的吞 吐率:Speedup = ee p= ee p= Se肀p= , Se肀p= 为单卡平均吞吐量, 为多卡平均吞吐量,n 为计算加速卡的数量。 (四) 测试环境 为了保证结果的客观性和公平性,本次测试提供了统一 的测试环境,下面具体说明。 1. 硬件环境 为规避测试环境对于各框架性能的影响和限制,本轮测 试依托由之江实验室搭建的具有先进算力资源的计算平台, 从而能够充分反映出各框架的性能表现。计算平台硬件规格 如下:  并行规模:共4个节点,每个节点4张GPU  GPU型号:NVIDIA Tesla V100 32GB  网 络 环 境 : InfiniBand-RDMA , 平 均 读 写 带 宽 11470MB/s 8  数据存储:本地SSD,每个节点1.7T 2. 软件环境 除了相同的硬件环境外,各框架应在相同的软件环境下 进行测试。软件环境的约束条件主要包括:OS、CUDA、CUDA Driver、cuDNN、NCCL等系统软件版本。由于各系统软件版 本支持的各框架版本不同,需要实现各系统软件版本和各框 架版本的统一和对齐。 经筛选,本轮测试的系统软件版本为:  OS:Ubuntu 16.04  CUDA:10.0  CUDA Driver:410.104  cuDNN:7.6  NCCL:2.4 对应上述系统软件的版本,参与本轮测试的各框架的版 本为:  TensorFlow 1.13.1  PyTorch:1.3.1  MXNet:1.5.1  OneFlow:开源前的内部版本 9 (五) 测试方法 1. 测试组别 为了客观、全面、公平地反映各框架在不同训练场景下 的性能表现,本轮测试设置了不同的测试组别以分别测试吞 吐率和加速比指标,具体测试组别选择如表 4 所示。 表 4 测试组别选择 Batch size 最小 batch size 相同 batch size 最大 batch size *数据类型 并行规模 1 机 1 卡(1n1c) 真实数据 1 机 4 卡(1n4c) 合成数据 2 机 8 卡(2n8c) 4 机 16 卡(4n16c) *注:仅在训练 ResNet-50 和 VGG-16 时进行数据类型的组别设置。 (1)Batch size 本次测试根据各框架在不同并行规模下运行测试案例 时单个 GPU 的 batch size 取值范围,将测试分为了三个组别, 分别是最小 batch size(取值为 1),相同 batch size(ResNet-50 / VGG-16 取值为 64,BERT-base 取值为 128) ,最大 batch size (当前测试平台所能支持的最大并行规模状态下,各框架能 够处理 batch size 取值的上限)。 (2)数据类型 对于 ResNet-50 和 VGG-16 来说,需要设置真实数据、 10 合成数据两个组别。对于 BERT-Base 来说,仅需要考虑真实 数据。 需要注意的是,PyTorch 不支持合成数据,因此不参与 合成数据组别的测试。 (3)并行规模 根据本次测试选用的硬件环境,设置了 1 机 1 卡(1n1c)、 1 机 4 卡(1n4c)、2 机 8 卡(2n8c) 、4 机 16 卡(4n16c)等 不同并行规模的测试组别。 2. 运行方式 为避免GPU长时间运行后温度升高可能会对性能测试 结果产生的影响,本次测试采取预热训练的方式:每次训练 任 务 共 计 120 个 mini-batch , 将 每 次 训 练 任 务 的 前 20 个 mini-batch作为预热训练,不计入测试结果,选取后100个 mini-batch的训练结果计算吞吐率和加速比指标,并测试3次 取平均值。 另外,本次测试通过Docker镜像提供统一的软件环境和 测试脚本,从而保证测试的可复现性。 三、测试结果分析 测试结果仅代表在当前测试环境和任务场景下各参测 开源深度学习软件框架版本的性能表现,下面具体说明。 11 (一) ResNet-50 1. Batch size = 1 (1)真实数据 图 2 Batch size = 1 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(真实数据) 12 图 3 Batch size = 1 时各框架在不同并行规模下运行 ResNet-50 的加速比(真实数据) 设置 batch size = 1 运行 ResNet-50 训练真实数据,随着 并行规模的不断增大, OneFlow 表现出相对更高的吞吐率, 各框架均未能表现出理想的加速能力,其中 PyTorch 表现出 相对更高的加速比。 (2)合成数据 图 4 Batch size = 1 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(合成数据) 13 图 5 Batch size = 1 时各框架在不同并行规模下运行 ResNet-50 的加速比(合成数据) 设置 batch size = 1 运行 ResNet-50 训练合成数据,各框 架的性能与训练真实数据时基本相同。 2. Batch size = 64 (1)真实数据 14 图 6 Batch size =64 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(真实数据) 图 7 Batch size = 64 时各框架在不同并行规模下运行 ResNet-50 的加速比(真实数据) 设 置 batch size = 64 运 行 ResNet-50 训 练 真 实 数 据 , PyTorch 在由单机扩展到多机后未能有效利用大规模分布式 的计算资源,吞吐率和加速比相对更低。除此以外,随着并 15 行规模的不断增大,其他各框架的性能表现相似,其中 OneFlow 表现出相对更高的吞吐率,MXNet 表现出相对更高 的加速比。 (2)合成数据 图 8 Batch size = 64 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(合成数据) 16 图 9 Batch size = 64 时各框架在不同并行规模下运行 ResNet-50 的加速比(合成数据) 设 置 batch size = 64 运 行 ResNet-50 训 练 合 成 数 据 , TensorFlow 的性能相比训练真实数据时有了大幅度的提升, 其他框架的性能与训练真实数据时基本相同。 3. Batch size = max (1)真实数据 17 图 10 Batch size = max 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(真实数据) 图 11 Batch size = max 时各框架在不同并行规模下运行 ResNet-50 的加速比(真实数据) 设置 batch size = max 运行 ResNet-50 训练真实数据, PyTorch 在由单机扩展到多机后未能有效利用大规模分布式 的计算资源,吞吐率和加速比相对更低。除此以外,随着并 18 行规模的不断增大,其他各框架的性能表现相似,其中 TensorFlow 在单机状态下表现出相对更高的吞吐率,并能够 运行相对其他框架更大的 batch size,OneFlow 在由单机扩展 到多机后表现出相对更高的吞吐率, OneFlow、MXNet 表 现出相对更高的加速比。 (2)合成数据 图 12 Batch size = max 时各框架在不同并行规模下运行 ResNet-50 的吞吐率(合成数据) 19 图 13 Batch size = max 时各框架在不同并行规模下运行 ResNet-50 的加速比(合成数据) 设置 batch size = max 运行 ResNet-50 训练合成数据,各 框架的性能与训练真实数据时基本相同。 (二) VGG-16 1. Batch size = 1 (1)真实数据 20 图 14 Batch size = 1 时各框架在不同并行规模下运行 VGG-16 的吞吐率(真实数据) 图 15 Batch size = 1 时各框架在不同并行规模下运行 VGG-16 的加速比(真实数据) 设置 batch size = 1 运行 VGG-16 训练真实数据,随着并 行规模的不断增大,各框架的性能表现均不稳定,未能表现 出相对正常的吞吐率和加速比。 21 (2)合成数据 图 16 Batch size = 1 时各框架在不同并行规模下运行 VGG-16 的吞吐率(合成数据) 图 17 Batch size = 1 时各框架在不同并行规模下运行 VGG-16 的加速比(合成数据) 设置 batch size = 1 运行 VGG-16 训练合成数据,各框架 的性能与训练真实数据时基本相同。 22 2. Batch size = 64 (1)真实数据 图 18 Batch size = 64 时各框架在不同并行规模下运行 VGG-16 的吞吐率(真实数据) 图 19 Batch size = 64 时各框架在不同并行规模下运行 VGG-16 的加速比(真实数据) 设 置 batch size = 64 运 行 VGG-16 训 练 真 实 数 据 , 23 MXNet 在 2 机 8 卡(2n8c)的并行规模下会出现超出 GPU 卡显存导致训练任务终止的错误情况,因此未能获得 MXNet 在该测试组别下的测试结果。PyTorch 在由单机扩展到多机 后未能有效利用大规模分布式的计算资源,吞吐率和加速比 相对更低。除此以外,随着并行规模的不断增大,其他各框 架的性能表现相似,其中 OneFlow 具有相对更高的吞吐率和 加速比。 (2)合成数据 图 20 Batch size = 64 时各框架在不同并行规模下运行 VGG-16 的吞吐率(合成数据) 24 图 21 Batch size = 64 时各框架在不同并行规模下运行 VGG-16 的加速比(合成数据) 设 置 batch size = 64 运 行 VGG-16 训 练 合 成 数 据 , TensorFlow 的性能相比训练真实数据时有了大幅度的提升, 并在由单机扩展到多机后表现出相对更高的吞吐率和加速 比。除此以外,其他各框架的性能与训练真实数据时基本相 同。 3. Batch size = max (1)真实数据 25 图 22 Batch size = max 时各框架在不同并行规模下运行 VGG-16 的吞吐率(真实数据) 图 23 Batch size = max 时各框架在不同并行规模下运行 VGG-16 的加速比(真实数据) 设 置 batch size = max 运 行 VGG-16 训 练 真 实 数 据 , MXNet 在 2 机 8 卡(2n8c)的并行规模下会出现超出 GPU 卡显存导致训练任务终止的错误情况,因此未能获得 MXNet 26 在该测试组别下的测试结果。PyTorch 在由单机扩展到多机 后未能有效利用大规模分布式的计算资源,吞吐率和加速比 相对更低。除此以外,随着并行规模的不断增大,其他各框 架的性能表现相似,其中 OneFlow 具有相对更高的吞吐率和 加速比,TensorFlow 能够运行相对其他框架更大的 batch size。 (2)合成数据 图 24 Batch size = max 时各框架在不同并行规模下运行 VGG-16 的吞吐率(合成数据) 27 图 25 Batch size = max 时各框架在不同并行规模下运行 VGG-16 的加速比(合成数据) 设 置 batch size = max 运 行 VGG-16 训 练 合 成 数 据 , TensorFlow 的性能相比训练真实数据时有了大幅度的提升, 吞吐率与 OneFlow 基本持平并表现出相对更高的加速比。除 此以外,MXNet 的性能与训练真实数据时基本相同。 28 (三) BERT-Base 1. Batch size = 1 图 26 batch size = 1 时各框架在不同并行规模下运行 BERT-Base 的吞吐率 图 27 batch size = 1 时各框架在不同并行规模下运行 BERT-Base 的加速比 29 设置 batch size = 1 运行 BERT-Base 进行训练,随着并行 规模的不断增大,OneFlow 表现出了相对更高的吞吐率,各 框架均未能表现出理想的加速能力, 其中 TensorFlow 表现出 了相对更高的加速比。 2. Batch size = 128 图 28 Batch size = 128 时各框架在不同并行规模下运行 BERT-Base 的吞吐率 30 图 29 Batch size = 128 时各框架在不同并行规模下运行 BERT-Base 的加速比 设置 batch size = 128 运行 BERT-Base 进行训练,随着并 行规模的不断增大,各框架的性能表现相似,其中 OneFlow 表现出相对更高的吞吐率,TensorFlow 表现出相对更高的加 速比。 31 3. Batch size = max 图 30 Batch size = max 时各框架在不同并行规模下运行 BERT-Base 的吞吐率 图 31 Batch size = max 时各框架在不同并行规模下运行 BERT-base 的加速比 设置 batch size = max 运行 BERT-Base 进行训练,随着并 行规模的不断增大,各框架的性能表现相似,其中 OneFlow 32 表现出相对更高的吞吐率,并能够运行相对其他框架更大的 batch size,TensorFlow 表现出相对更高的加速比。 (四)结论 综上分析,各开源深度学习软件框架在性能表现上特点 鲜明,都有其相对适合的应用场景和使用条件,尚未形成垄 断格局,尤其是在大规模分布式训练场景下的高效性方面仍 有提升空间和发展机会。具体来说,TensorFlow 在部分测试 条件下表现出的硬件利用率和横向扩展能力要低于 MXNet 和 OneFlow。PyTorch 在单机状态下与其它参测框架的性能 表现趋近,但是从单机扩展到多机多卡(2n8c、4n16c)时表 现出了较弱的并行性能。 四、未来工作计划 感谢在首轮开源深度学习软件框架测试中各相关单位 对联盟工作的积极响应和鼎力支持。在本次测试的经验和成 果基础上,联盟近期将从以下几个方面进一步开展相关工作: (1)完善测试指标,在开源的运营模式下,各深度学 习软件框架的生态建设、易用性、支持架构、稳定性等均是 在实际生产和应用中需要考虑的重要因素。 (2)丰富测试案例,不同技术领域和应用场景的实际 需求存在一定差异性,未来将增加贴近实际应用的任务场景 33 和测试案例。 (3)增加测试对象,囊括更多我国自主研发的深度学 习 软 件 框 架 为 评 测 对 象 , 包 括 百 度 PaddlePaddle 、 旷 视 MegEngine、清华大学 Jittor、华为 MindSpore 等。 (4)延伸测试范围,在框架评测的成果基础上,进一 步制定针对深度学习训练平台的性能评估规范,并开展相关 评估评测。 欢迎各界积极参与,如有测试需求可与联盟工作人员联 系: 刘硕,13426019405,liushuo1@caict.ac.cn; 张哲煜,18514502903,zhangzheyu@caict.ac.cn。 34

相关文章