使用 dell emc isilon 实现深度学习...配备 nvidia tesla v100 gpu 的 dell emc poweredge...

32
Dell EMC 技术白皮书 使用 Dell EMC Isilon 实现深度学习 技术白皮书 作者:Claudio Fahey 摘要3 本文档说明了如何使用 Dell EMC Isilon F800 全闪存横向扩展 NAS 以及 配备 NVIDIA Tesla V100 GPU Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow 的行业标准图像 分类基准测试的结果。 2019 3 修订 日期 描述 2018 8 初始版本 2019 3 增加了有关 Isilon 分层和 RAPIDS 的信息

Upload: others

Post on 30-Dec-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

Dell EMC 技术白皮书

使用 Dell EMC Isilon 实现深度学习

技术白皮书

作者:Claudio Fahey

摘要3

本文档说明了如何使用 Dell EMC Isilon F800 全闪存横向扩展 NAS 以及

配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和

扩展深度学习训练工作负载。其中包括使用 TensorFlow 的行业标准图像

分类基准测试的结果。

2019 年 3 月

修订

日期 描述

2018 年 8 月 初始版本

2019 年 3 月 增加了有关 Isilon 分层和 RAPIDS 的信息

Page 2: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

2 使用 Dell EMC Isilon 实现深度学习

本出版物的内容按“原样”提供。Dell Inc. 对本出版物的内容不提供任何形式的陈述或担保,明确拒绝对有特定目的的适销性或适用性进行默示担保。

使用、复制和发行本出版物所描述的任何软件都要有相应的软件许可。

© 2018 年 7 月 — v1 Dell Inc. 或其子公司。保留所有权利。Dell、EMC、Dell EMC 和其他商标为 Dell Inc. 或其子公司的商标。Dell® / EMC® / Dell EMC®

等品牌商标将有可能同时出现在戴尔易安信相关企业级产品 (包括硬件和软件),和/或产品资料、戴尔易安信的官方网站。如果您有有关戴尔易安信产品相

关的任何疑问,欢迎联系您的指定客户经理。其他商标可能是其各自所有者的商标。

Dell 确认本文档在发布之日内容的准确性。该信息如有更改,恕不另行通知。

Page 3: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

3 使用 Dell EMC Isilon 实现深度学习

目录 修订 ..................................................................................................................................................................................... 1

目录 ..................................................................................................................................................................................... 3

执行摘要 .............................................................................................................................................................................. 4

1 简介 .............................................................................................................................................................................. 5

2 面向深度学习的 Isilon 存储........................................................................................................................................... 6

2.1 OneFS 高速缓存 ...................................................................................................................................... 7

2.2 文件读取 ................................................................................................................................................... 8

2.3 锁定与并发 ............................................................................................................................................... 8

2.4 存储分层 ................................................................................................................................................... 9

3 深度学习训练的性能和分析 ........................................................................................................................................ 10

3.1 硬件配置 ................................................................................................................................................. 10

3.2 基准测试结果 ......................................................................................................................................... 11

3.3 详细的性能分析 ...................................................................................................................................... 12

3.4 浮点精度(FP16 与 FP32) ................................................................................................................... 14

3.5 数据集预处理管道优化 ........................................................................................................................... 15

3.6 深度学习训练的存储特征 ........................................................................................................................ 15

3.7 基于性能的规模调整注意事项 ................................................................................................................ 16

4 使用 RAPIDS 的机器学习 ........................................................................................................................................... 17

5 结论 ............................................................................................................................................................................ 18

6 附录 1 — 硬件和软件 .................................................................................................................................................. 19

6.1 计算节点配置 ......................................................................................................................................... 20

6.2 GPU ....................................................................................................................................................... 20

6.3 网络 ........................................................................................................................................................ 21

6.4 Isilon ....................................................................................................................................................... 21

6.4.1 Isilon 配置 .............................................................................................................................................. 22

6.4.2 装载到 Isilon ........................................................................................................................................... 22

6.4.3 配置自动存储分层 .................................................................................................................................. 22

7 附录 2 — 基准测试设置和执行 ................................................................................................................................... 27

8 附录 3 — 监视 Isilon 性能 ........................................................................................................................................... 29

8.1 InsightIQ ................................................................................................................................................. 29

8.2 Isilon 统计 CLI ........................................................................................................................................ 29

9 附录 4 — 使用 iPerf 和 FIO 测试 Isilon 性能 .............................................................................................................. 30

9.1 iPerf ........................................................................................................................................................ 30

9.2 FIO ......................................................................................................................................................... 30

10 参考资料 ..................................................................................................................................................................... 32

Page 4: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

4 使用 Dell EMC Isilon 实现深度学习

执行摘要

深度学习技术使模型能够从现有数据中学习并做出相应的预测,从而在计算机视觉、自然语言处理 (NLP)、游

戏和自动驾驶等许多领域取得了巨大的成功。这一成功归功于多种因素,包括改进的算法、对大型数据集的访

问以及增强的计算能力。要实现企业规模的高效运行,深度学习神经网络训练的计算强度需要非常强大而且高

效的并行体系结构。系统组件的选择和设计,以及针对深度学习使用情形进行精心选择和调整,可以对应用深

度学习技术的业务结果产生不同的影响。Dell EMC Isilon F800 全闪存横向扩展 NAS 以及 Dell EMC C4140

PowerEdge 服务器和 NVIDIA Volta 图形处理单元 (GPU) 已被证明能够在行业标准深度学习基准测试中取得卓

越的性能结果。

目标受众

本文档主要面向有兴趣利用高级计算和横向扩展数据管理解决方案来简化和加速深度学习解决方案的组织。这

类组织内的解决方案架构师、系统管理员和其他感兴趣的读者构成了本文档的目标受众。

Page 5: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

5 使用 Dell EMC Isilon 实现深度学习

1 简介 深度学习是一个令人兴奋的机器学习领域,它采用模拟神经网络,让计算机能够对复杂的真实世界的模式进行

精确的模式识别。这类全新水平的创新几乎适用于每个垂直行业。一些早期的应用包括高级研究、精准医学、

高科技制造、高级驾驶辅助系统 (ADAS) 和自动驾驶等。对于更高的深度学习性能的需求推动着以下领域的发

展:高级深度学习软件框架,用于高密集度并行模型训练的图形处理单元 (GPU) 形式的大规模并行计算,以及

支持非结构化图像和视频数据集的并发处理和 PB 级规模的横向扩展文件系统。

本文档介绍了如何使用 Isilon F800 和 NVIDIA GPU 以及 PowerEdge C4140 服务器来设计用于加速和扩展深

度学习工作负载的人工智能解决方案。其中包括使用 TensorFlow 的多个行业标准图像分类基准测试的结果。

Page 6: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

6 使用 Dell EMC Isilon 实现深度学习

2 面向深度学习的 Isilon 存储 Dell EMC Isilon F800 代表了专为运行经充分验证并且可大规模扩展的 OneFS 操作系统而构建的第六代硬件。

每个 F800 机箱包含四个存储节点,具有 60 个高性能固态硬盘 (SSD) 和八 (8) 个 40 Gb 以太网网络连接。

OneFS 将多达 36 个机箱中的 144 个节点合并为一个高性能文件系统,旨在处理深度学习等密集度极高的 I/O

工作负载。随着性能和容量需求的增加,两者均可轻松且无中断地进行横向扩展,从而使应用程序和用户能够

持续工作。

Dell EMC Isilon F800 具有以下功能。

适用于 AI 的低延迟、高吞吐量和大规模并行 IO。

• 每个机箱多达 250,000 个文件 IOPS,每个群集高达九百万 IOPS

• 每个机箱高达 15 GB/秒的吞吐量,每个群集高达 540 GB/秒

• 每个机箱 96 TB 至 924 TB 的原始闪存容量;每个群集多达 33 PB(全闪存)

这可以缩短为 AI 平台(如 TensorFlow、SparkML、Caffe 或专有 AI 平台)上数十 TB 至数十 PB 的数据

集进行训练和测试分析模型所需的时间。

能够使用多协议访问对数据就地运行 AI。

• 多协议支持(如 SMB、NFS、HTTP 和本机 HDFS),可更大限度地提高操作灵活性

这样就无需将数据和结果迁移/复制到单独的 AI 堆栈。组织可通过将 F800 节点添加到现有的群集,对

Isilon 上已有的相同数据执行深度学习和运行其他 IT 应用程序。

开箱即用的企业级功能。

• 企业数据保护和恢复能力

• 强大的安全选项

这使组织能够以极低的成本和风险管理 AI 数据生命周期,同时保护数据并满足法规要求。

Page 7: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

7 使用 Dell EMC Isilon 实现深度学习

极大的规模

• 通过 SmartPools 在全闪存、混合和归档节点之间无缝地分层。

• 每个群集高达 33 PB 的容量,支持伴随业务发展不断扩展

• 最多可连接 36 个机箱(144 个节点),构成具有单一命名空间和单一连贯高速缓存的单一群集

• 高达 85% 的存储效率,可降低成本

组织可采用经济高效的方式实现大规模 AI,支持其处理具有高分辨率内容的多 PB 数据集,而无需重新设计体

系结构以及/或者不会导致性能下降。

深度学习工作负载需要性能、并发和扩展性,Isilon OneFS 的几项关键功能使其成为适合此类工作负载的出色

存储系统。下面将对这些功能进行详细介绍。

2.1 OneFS 高速缓存 OneFS 高速缓存基础架构设计的前提是将群集中各节点上的高速缓存聚集成一个可全局访问的内存池。这可让

所有节点的内存高速缓存面向群集中的每个节点都可用。远程内存通过内部互连来访问,其延迟性比访问硬盘

驱动器低得多。

OneFS 高速缓存子系统在群集中保持一致。这意味着如果相同的内容存在于多个节点的专用高速缓存中,那么

经缓存的这一数据将在所有实例中保持一致。

OneFS 使用多达三级读取高速缓存,外加一个受 NVRAM 支持的写入高速缓存或聚合器。这些高速缓存及其高

级别的交互关系如下图所示。

图 1:OneFS 高速缓存体系结构

利用此功能可实现快速的迭代分析,其中的数据将会在磁盘上交替读取和写入。

Page 8: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

8 使用 Dell EMC Isilon 实现深度学习

2.2 文件读取 对于标记为并发或流访问模式的文件,OneFS 可以基于 Isilon SmartRead 组件使用的探试程序,利用预取数

据的优势。SmartRead 可以从 L2 高速缓存创建数据管道,预取到统领节点上的本地 L1 高速缓存。这将极大

改进所有协议的顺序读取性能,同时意味着直接来自 RAM 的读取在毫秒内。对于高顺序情况,SmartRead 可

以非常积极地提取预取,允许以极高的数据率读取或写入单个文件。

SmartRead 的智能高速缓存可提供极高的读取性能,并具有高级并发访问权限。重要的是,节点 1 可以从节点

2 的高速缓存中(通过低延迟群集互连)快速获得文件数据,其速度要比访问自身的本地磁盘更快。

SmartRead 算法控制预取的进度(禁用随机存取情形的预取)以及数据在高速缓存中的滞留时间,同时优化高

速缓存数据的位置。

图 2:3 节点 Isilon 群集中的文件读取操作

2.3 锁定与并发 OneFS 具有一个完整的分布式锁定管理器,该管理器可以将锁定状态编列到存储群集内所有节点的数据上。锁

定管理器具有高可扩展性,允许多个锁定属性,从而支持文件系统锁定和群集一致协议级别锁定,如 SMB 共

享模式锁定或 NFS 咨询模式锁定。另外,OneFS 还支持委派锁定,如 CIFS oplock 锁定和 NFSv4 委派锁定。

群集内各节点都是一个锁定资源的协调器,一般按照高级散列算法向协调器分配可锁定资源。

有关 Isilon OneFS 的更多详细技术概述,请参阅 https://china.emc.com/collateral/hardware/white-

papers/h10719-isilon-onefs-technical-overview-wp.pdf 。

高效锁定对于支持深度学习工作负载所需的高效并行 IO 特征至关重要,而实现高达数百万的并发。

Page 9: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

9 使用 Dell EMC Isilon 实现深度学习

2.4 存储分层 Dell EMC Isilon SmartPools 软件支持多个级别的性能、保护和存储密度在同一个文件系统中共存,并能够解锁

在单个可扩展、无处不在的存储资源池中聚合和整合广泛应用程序的功能。这有助于通过单点管理提供精细的

性能优化、工作流隔离、更高的利用率和独立的可扩展性。

SmartPools 使您能够基于策略定义您的工作流内数据的价值,并随着时间推移自动将数据与性价比合适的层对

应起来。可以无缝地移动数据,而且借助于文件级粒度以及采用自动策略的控制措施、手动控制或应用程序编

程接口 (API),您可以调整性能和数据布局、存储层对应关系以及保护设置,而这一切对终端用户的影响极小。

存储分层具有极具说服力的价值主张,即根据数据的业务价值对其进行隔离,并为其匹配适当的存储类别以及

性能和保护级别。信息生命周期管理技术已经问世多年,但通常难以解决以下效率低下的问题:复杂的安装和

管理,涉及对文件系统的更改,需要使用存根文件,等等。

Dell EMC Isilon SmartPools 是下一代分层方法,可推动异构群集的管理。SmartPools 功能是 Isilon OneFS 横

向扩展文件系统的本机功能,可实现卓越的灵活性、粒度和易管理性。为实现此目的,SmartPools 利用了

OneFS 的许多组件和属性,包括数据布局和移动性、保护、性能、调度和影响管理。

典型的 Isilon 群集将存储多个具有不同性能、保护和价格要求的数据集。通常情况下,最近创建和访问的文件

应存储在一个热层中,而最近未访问的文件应存储在一个冷(或更冷)层中。由于 Isilon 支持基于文件访问时

间进行分层,因此可自动执行此操作。对于需要更多控制的存储管理员,可以定义复杂的规则,基于文件的路

径、大小或其他属性来设置存储层。

Isilon 上的所有文件始终可以立即访问(读取和写入),而不论其位于哪个存储层,甚至在各层之间移动时也是

如此。分层不会改变文件的文件系统路径。通过 Isilon SmartPools 作业应用存储分层策略和移动文件,默认情

况下,该作业在每天 22:00 运行。

更多详细信息,请参阅采用 Dell EMC Isilon SmartPools 的存储分层 。

Page 10: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

10 使用 Dell EMC Isilon 实现深度学习

3 深度学习训练的性能和分析 在本节中,将使用 TensorFlow 来测量深度学习训练的性能。众所周知的 ILSVRC2012 数据集(通常被称为

ImageNet)被用于执行性能基准测试。此数据集包含 1,281,167 个训练图像,总容量为 144.8 GB1。所有图像

被分为 1000 个类别或类。深度学习研究人员通常使用此数据集进行基准测试和对比研究。

由于整个 ILSVRC2012 数据集只有 144.8 GB,并且可以轻松地放入系统内存,因此将该数据集的大小增加到

10 倍,以便正确地演练存储系统 (Isilon F800)。为此,我们对数据集中的每个 JPEG 图像应用了 10 倍随机数

据扩增技术。这是数据分析和深度学习领域用于增加数据集大小的标准做法。然后将扩增后的图像转换为一个

TensorFlow TFRecord 数据库。这一“10 倍”数据集共计包含了总容量为 1,448 GB 的 12,811,670 个 JPEG

图像,并分布在 1,024 个文件中。平均 JPEG 图像大小为 113 KB,平均 TFRecord 文件大小为 1.41 GB。

TFRecord 文件格式是一种协议缓冲区二进制格式,可将多个原始图像文件及其元数据组合为一个二进制文件。

它保持了 JPEG 格式提供的图像压缩,并且数据集的总大小保持不变。

本文档中使用的基准测试使用此数据来训练两个常用于图像分类的不同卷积神经网络 (CNN) 模型 — ResNet50

和 AlexNet。ResNet50 要精确得多,但需要更多的计算量。尽管这两种方法目前都不是非常先进的方法,但在

评估不同的硬件和软件平台时了解它们的性能会非常有用。

3.1 硬件配置 硬件由包含主节点、计算节点、Isilon 存储和网络的群集组成。主节点或机头节点角色可包括部署计算节点群集、

管理计算节点、用户登录和访问、提供编译环境,以及向计算节点提交作业。计算节点是工作主力,用于执行

所提交的作业。Bright Computing 软件 Bright Cluster Manager 用于部署和管理整个群集。

Error! Reference source not found. 显示了群集的简要概览,其中包括一个 PowerEdge 740 头节点、n 个

PowerEdge C4140 计算节点,每个节点具有 4 个 NVIDIA Tesla V100 GPU、1 个 Isilon F800 存储机箱和两个

网络。所有计算节点通过 InfiniBand 交换机相互连接。所有计算节点和头节点还连接到一个 1 Gb 以太网管理

交换机,Bright Cluster Manager 使用该交换机来管理群集。Isilon 存储解决方案通过双路连接到 FDR-40GigE

网关交换机,以便头节点和所有计算节点都能访问。

Horovod 是一种分布式 TensorFlow 框架,用于跨多个计算节点扩展训练。

请参阅附录 2 — 基准测试设置和执行,进一步了解配置详细信息。

1 所有单位前缀均使用 SI 标准(基数为 10),其中 1 GB 为 10 亿字节。

Page 11: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

11 使用 Dell EMC Isilon 实现深度学习

图 3:群集概览

3.2 基准测试结果 以下图表概括了基准测试的结果。

(a) Resnet50

ResNet- 50

12,000 10,000 8,000

6,000

4,000

2,000

0

4 GPU 8 GPU FP16

16 GPU FP32

1,445 2,769 2,941

5,502 5,590

11,126

图像

/秒

Page 12: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

12 使用 Dell EMC Isilon 实现深度学习

(b) AlexNet

图 4:训练吞吐量基准测试结果。

3.3 详细的性能分析 为了更好地了解存储子系统上的负载,在训练模型时,使用 Isilon InsightIQ 来分析 Isilon 性能。在图 5 中,只

有两个计算节点在执行训练(AlexNet,FP16,1.448 TB 数据集)。聚合读取吞吐量为 12 Gb/秒(1500 MB/

秒),Isilon 前端网络流量在两个 Isilon 节点之间平均分配。磁盘吞吐量一开始大约也是 12 Gb/秒(1500 MB/

秒),但在所有四个 Isilon 节点之间平均分配。此外,磁盘吞吐量会逐渐减少,因为来自 Isilon 高速缓存的数

据越来越多。对于这些基准测试,在每次运行之前会清除高速缓存,并且使用 1.448 TB 真实数据集,以保证无

法在 Isilon 的内存中缓存该数据集,确保在磁盘上产生有效负载。Isilon 群集配置了 4 个节点,每个节点具有

256 GB RAM。注意:1024 个文件以随机顺序读取(但在每个文件内则按顺序读取),因此,如果某些文件最

近被访问过,则可以从高速缓存中获得这些文件。

Page 13: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

13 使用 Dell EMC Isilon 实现深度学习

图 5:AlexNet 训练期间(2 个计算节点,FP16,1.448 TB 数据集)的 InsightIQ 指标

图 6 显示了使用 1.448 TB 数据集运行 Resnet50 FP16 训练时一个计算节点(具有 4 个 GPU)上的 CPU、内

存和 GPU 利用率,以及一个 Isilon 机箱(4 个节点)上的网络和磁盘吞吐量。在整个训练期间,训练速度稳定

在每秒 2941 个图像。

C4140 计算节点上的 CPU 利用率约占 40 个核心的 33%,这些核心用于文件I/O、TFRecords 解析、JPEG 解

码、扭曲和裁剪。

C4140 计算节点上 384 GiB 内存的利用率只有大约 19%。计算服务器上 Linux 缓冲区(页面高速缓存)的使用

量在其高速缓存 TFRecord 文件时持续增加,直至用尽所有 RAM。尽管在计算节点上无法高速缓存整个 1.448

TB 的数据集,但 1024 个文件将以随机顺序读取(但在每个文件内则按顺序读取),因此,如果某些文件最近

被访问过,则可以从高速缓存中获得这些文件。

网络和 Isilon 的速度足够快,可以将数据馈送到 GPU,以便其保持较高的利用率,并保持每秒 2,941 个图像的

训练速度。在四个 GPU 中,平均 GPU 利用率约为 95%。如此高的 GPU 利用率表明,系统的体系结构(CPU、

内存、网络、Isilon 等)经过精心设计,以避免任何 IO 瓶颈。

Page 14: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

14 使用 Dell EMC Isilon 实现深度学习

图 6:在使用 1.448 TB 数据集运行 Resnet50 时,一个计算节点上的 CPU 利用率、内存使用量和 GPU 利用

率,以及 Isilon 上的网络和磁盘吞吐量

3.4 浮点精度(FP16 与 FP32) NVIDIA V100 GPU 包含一种支持混合精度训练的新处理核心类型,称为 Tensor 核心。尽管许多高性能计算

(HPC) 应用程序需要采用 FP32(32 位浮点)或 FP64(64 位浮点)的高精度计算,但深度学习研究人员发现,

使用 FP16(16 位浮点)同样可以实现与 FP32 相同的推理

Page 15: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

15 使用 Dell EMC Isilon 实现深度学习

准确性。在本文档中,包括 FP16 和 FP32 表示形式的混合精度训练被称为“FP16”训练。

在使用 FP16 精度执行训练测试的实验中,批处理大小增加了一倍,因为 FP16 占用的浮点内存仅为 FP32 的

一半。使用 FP16 将批处理大小加倍可以确保 GPU 内存在两种类型的测试中都得到同等的利用。

尽管 FP16 可加快训练速度,但它需要在神经网络模型实施中进行额外的工作,以匹配 FP32 所达到的准确性。

这是因为某些神经网络要求其渐变值移位至 FP16 的可表示范围中,而且可能会进行一些扩展和规范化,才能

在训练过程中使用 FP16。有关更多详细信息,请参阅 NVIDIA 混合精度训练 。

3.5 数据集预处理管道优化 经 测 试 的 神 经 网 络 的 训 练 性 能 受 基 准 测 试 中 各 种 标 记 的 影 响 。 研 究 发 现 , 可 通 过 将 标 记

datasets_num_private_threads 的默认值更改为 4 来提高 Resnet50 的训练性能。此设置允许多个线程并发执

行图像预处理,包括 TFRecord 解析、JPEG 解码、扭曲和裁剪。Resnet50 的基准版本与此调整版本之间的性

能比较如图 7Error! Reference source not found. 所示。AlexNet 没有明显的性能提升。使用一个计算节点

(4 个 GPU)时,性能从每秒 2,657 个图像提高到每秒 2,941 个图像。使用两个计算节点(8 个 GPU)时,

性能从每秒 4,560 个图像提高到每秒 5,590 个图像。

图 7:Resnet50 基准版本和调整版本 (datasets_num_private_threads=4) 之间的性能比较。

3.6 深度学习训练的存储特征 训练基准测试的存储 I/O 特征相对简单。从存储子系统的角度来看,打开一个 1.41 GB 的 TFRecord 文件,并

从开始到结束按顺序执行完全读取。并发读取多个 TFRecord 文件。打开文件的顺序实际上是随机的。根据使

用 Linux lsof(列出打开的文件)命令测量的结果,一个四 GPU 的计算节点可并发读取 120 个文件(每个

GPU 30 个文件)。四个这样的计算节点将会并发读取 480 个文件。

如果每秒图像数吞吐量是已知的,则可以通过将平均图像大小乘以 113 KB 来轻松计算所需的存储吞吐量。例

如,1000 个图像/秒 * 113 KB/图像 = 113 MB/秒。当然,这并不包括在计算节点或 Isilon 节点上进行高速缓存,

这会降低所需的磁盘吞吐量。

4 GPU 8 GPU 基准 调整

1,000

0

2,941 2,657 3,000 2,000

4,560 4,000

5,590

6,000 5,000

ResNet-50

图像

/秒

Page 16: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

16 使用 Dell EMC Isilon 实现深度学习

在设计深度学习基础架构时,应该考虑的另一个方面是 TFRecord 文件的生成。虽然这不是 TensorFlow CNN

基准测试结果的一部分,但它是一项 I/O 高度密集型操作,必须在训练开始之前执行。为了生成 TFRecord 文

件,将列出包含单独 JPEG 图像的目录,文件名按照随机顺序排列,然后由多个进程在写入 TFRecord 文件的

同时读取这些 JPEG 文件。这样可以在使用 MPI 或其他并行计算框架的多个计算节点之间实现有效的并行化。

3.7 基于性能的规模调整注意事项 根据对计算、内存、磁盘和 IO 特征的需求(通常按数量级),深度学习工作负载存在明显的差异。只有事先知

道这些资源需求,才能提供关于 GPU 数量和 Isilon 节点配置的规模调整指导。即便如此,对于通用图像分类基

准测试而言,获得一些关于每个 Isilon 节点的 GPU 计数比率的数据点通常都是有益的。

下表显示了一些此类数据点:

需要的存储性能 基准测试 每个 V100 GPU 所需的存储吞吐量(MB/秒/GPU)

每个 Isilon F800 节点的 V100 GPU

低 ResNet50,fp32 40 60

MEDIUM ResNet50,fp16 80 30

高 AlexNet 200 13

表 1:基于基准测试工作负载的规模调整注意事项。

在以上示例中,使用 16 个 GPU 和浮点精度 FP16 的 ResNet50 需要一个可读取 16 * 80 = 1280 MB/秒的存储

系统。另一个示例中,在 120 个 GPU 上使用 FP16 的 ResNet50 需要 4 个 Isilon F800 节点(1 个机箱)。

上述数据点是使用附录 1 中指定的用于训练模型(而不是执行推理)的硬件配置生成的,并且没有考虑节点故

障、驱动器故障、网络故障、管理作业或 Isilon 支持的任何其他并发工作负载。每个 Isilon 节点的实际 GPU 数

量比率因以上数据点而异,具体取决于以下几个因素:

• 根据计算、内存、磁盘和 IO 特征要求,硬件配置可能不同于附录 1 中指定的内容。

• 深度学习算法各不相同,并且不一定与以上所列基准测试具有相同的基础架构需求。

• 数据集的特性和大小与此白皮书中所述的用于生成上述数据点的数据集不同。

• 推理工作负载的计算和 IO 需求与训练工作负载差别很大。

• 考虑节点/驱动器/网络故障、管理作业或其他同时访问 Isilon 的工作负载。

了解特定工作负载的每个 GPU 所需的 IO 吞吐量以及总存储容量需求,有助于在 Isilon 节点计数和配置方面提供

更好的指导。建议联系 Isilon 客户和 SME 团队,针对特定的深度学习工作负载、吞吐量和存储要求提供此指导。

Page 17: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

17 使用 Dell EMC Isilon 实现深度学习

4 使用 RAPIDS 的机器学习 RAPIDS 软件库套件可以加速一些机器学习算法和分析管道。与 TensorFlow 一样,它也使用 NVIDIA GPU 进

行加速。RAPIDS 需要 CUDA 9.2 或 10.0,因此您必须确保主机上的 NVIDIA 驱动程序支持这一点。

下面显示了使用 mortgage 演示运行一项简单的 RAPIDS 基准测试的步骤。

mkdir -p /mnt/isilon/data/mortgage cd /mnt/isilon/data/mortgage # Use below for a quick test with 1 year of data. wget http://rapidsai-data.s3-website.us-east-2.amazonaws.com/notebook-mortgage- data/mortgage_2000.tgz tar -xzvf mortgage_2000.tgz # Use below for the full benchmark with 17 years of data. wget http://rapidsai-data.s3-website.us-east-2.amazonaws.com/notebook-mortgage- data/mortgage_2000-2016.tgz tar -xzvf mortgage_2000-2016.tgz docker run --runtime=nvidia \ -it \ -p 8888:8888 \ -p 8787:8787 \ -p 8786:8786 \ -v /mnt:/mnt \ --name rapidsai \ nvcr.io/nvidia/rapidsai/rapidsai:0.5-cuda10.0-runtime-ubuntu18.04-gcc7-py3.7 jupyter@12b8e8800eef:/rapids/notebooks$ source activate rapids (rapids) jupyter@12b8e8800eef:/rapids/notebooks$ bash utils/start-jupyter.sh

打开浏览器,访问 http://host:8888/ 。

打开记事本 mortgage/E2E.ipynb。

将 acq_data_path 更改为“/mnt/isilon/data/mortgage/acq”。以相同的方式更改其他路径。

对于快速测试,将 end_year 更改为 2000,并将 part_count 更改为 1。对于基准测试,则将这些值保留默认值

2016 和 16。

在菜单中,单击“Kernel”->“Restart Kernel”和“Run All Cells”。记录以下单元所用的时间:

• ETL(单元 17)

• 加载到 GPU(单元 21)

• 训练(单元 22)

Page 18: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

18 使用 Dell EMC Isilon 实现深度学习

5 结论 本文档讨论了使 Isilon 成为面向深度学习解决方案的强大永久存储的关键特性。我们将 Dell EMC C4140 服务

器与嵌入式 NVIDIA Volta GPU 和全闪存 Isilon 存储结合在一起,为深度学习提供了一个典型的硬件体系结构。

我们根据处理的图像速率和 IO 至磁盘的吞吐量特征,运行了多个图像分类基准测试并报告了系统性能。我们还

监视并报告了 CPU、GPU 利用率和内存统计信息,证明服务器、GPU 和内存资源在 IO 未完全饱和的情况下

得到了充分利用。

深度学习算法有一组包含各种计算、内存、IO 和磁盘容量特征的需求组合。即便如此,本白皮书中展示的体系

结构和性能数据点仍可用作根据不同的资源需求组合构建量身定制的深度学习解决方案的起点。更重要的是,

此体系结构的所有组件都可以进行线性扩展和扩充,以提供可管理数十 PB 数据的深度学习解决方案。

这里展示的解决方案提供了多个性能数据点,并且证明了 Isilon 在处理大规模深度学习工作负载时的有效性,

与此同时,在 Isilon 上保留用于深度学习的数据还有一些其他运营优势:

• 能够使用多协议访问对数据就地运行 AI。

• 开箱即用的企业级功能。

• 无缝地分层到更高密度的节点,以实现经济高效的扩展

总而言之,基于 Isilon 的深度学习解决方案提供了容量、性能和高并发度,可消除 AI 的 I/O 存储瓶颈。这为大

规模企业级深度学习解决方案奠定了坚实的基础,可提供未来无忧的横向扩展体系结构来满足您当前的 AI 需求

和未来的扩展需求。

Page 19: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

19 使用 Dell EMC Isilon 实现深度学习

6 附录 1 — 硬件和软件 用于执行基准测试的系统被捆绑在一起,作为 Dell EMC AI 就绪型解决方案。本节将详细介绍此系统。

硬件 — 头节点

群集头节点 PowerEdge R740xd

CPU 2 个 Intel Xeon 6148,2.4 GHz

内存 384 GB DDR4,2667 MT/秒

硬件 — 计算节点

计算群集节点 PowerEdge C4140

计算节点数量 4

CPU 2 个 Intel Xeon 6148,2.4 GHz

内存 384 GB DDR4,2667 MT/秒

磁盘 2 个 M.2,240 GB,RAID 1

GPU V100-SXM2

软件和固件

操作系统 Red Hat Enterprise Linux 7.4

Linux 内核 3.10.0-693.el7.x86_64

BIOS 1.1.6

CUDA 编译器和 GPU 驱动程序 CUDA 9.1.85 (390.46)

Python 2.7.5

深度学习数据集

用于训练的数据集 ILSVRC2012 训练据集,1,281,167 个图像

深度学习库和框架

CUDNN 7.0

NCCL 2.1.15

Horovod 0.12.1

TensorFlow 1.8

表 2:测试平台中的硬件和软件

Page 20: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

20 使用 Dell EMC Isilon 实现深度学习

6.1 计算节点配置 如果没有驱动迭代训练过程的计算能力,深度学习方法不会成功。因此,深度学习解决方案的一个关键组件是

能够支持计算密集型工作负载的高性能节点。深度学习中的卓越神经网络模型有 100 多层,需要计算能够跨很

多个计算节点有序扩展,以获取任何及时的结果。Dell EMC PowerEdge C4140 是一款加速器经过优化的高密

度 1U 机架服务器,用作此解决方案中的计算节点。PowerEdge C4140 可支持四个 NVIDIA Volta SMX2 GPU,

包括 V100-SXM2 以及 V100-PCIe 型号。图 8 显示了计算节点的 CPU-GPU 和 GPU-CPU 连接拓扑。

图 8:计算节点的拓扑

6.2 GPU NVIDIA Tesla V100 是可用于加快深度学习速度的全新数据中心 GPU。此全新 GPU 体系结构 Tesla V100

GPU 由 NVIDIA Volta™ 提供支持,数据科学家、研究员和工程师可利用它来化解曾经很难的挑战。Tesla

V100 具有 640 个 Tensor 核心,是率先突破深度学习性能中 100 万亿次浮点运算 (TFLOPS) 的 GPU。

表 3:V100-SXM2 规格

描述 值

CUDA 核心 5120

GPU 最大时钟速率 (MHz) 1530

Tensor 核心 640

内存带宽 (GB/s) 900

NVLink 带宽 (GB/s)(单向) 300

深度学习 (Tensor OPS) 120

TDP(瓦) 300

NVLink PCIe x16 Gen 3

UPI

GPU2 GPU3

GPU1 GPU0

PCIe 交换机

CPU1 CPU0

Page 21: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

21 使用 Dell EMC Isilon 实现深度学习

对于 V100-SXM2 型号,所有 GPU 通过 NVIDIA NVLink 相连。V100-SXM2 GPU 在双向通信时每 GPU 提供

六个 NVLink。每个 NVLink 的单向带宽为 25 GB/s,节点内的所有四个 GPU 可以同时通信,因此理论峰值双

向带宽为 6 * 25 * 4 = 600 GB/s。

6.3 网络 该解决方案由三个网络结构组成。头节点和所有计算节点均通过 1 Gb 以太网结构连接。此连接主要供 Bright

Cluster Manager 用于部署、维护和监视解决方案。

第二个结构连接通过 100 Gb/秒 EDR InfiniBand 连接头节点和所有计算节点。EDR InfiniBand 交换机是具有

36 个端口的 Mellanox SB7800。此结构供应用程序用于 IPC,以及从 Isilon 提供 NFS。

解决方案中的第三个交换机在 Error! Reference source not found. 中被称为网关交换机,并将 Isilon F800 连

接到头节点和计算节点。Isilon 的外部接口是 40 Gb 以太网。因此,需要一个可用作 40 GbE 以太网和

InfiniBand 网络之间的网关的交换机,用于连接到头节点和计算节点。Mellanox SX6036 可用于此用途。该网

关将连接到 InfiniBand EDR 交换机和 Isilon。

6.4 Isilon 本文档中的基准测试使用了以下 Isilon 硬件。

表 4:测试的 Isilon F800 规格

项目 描述

型号 Isilon F800-4U-Single-256GB-1x1GE-2x40GE SFP+-48TB SSD

节点数量 4

机箱数量 1

每个机箱的处理器 4 个英特尔志强处理器 E5-2697A v4

每个机箱的原始容量 192 TB(60 个 3.2 TB SSD)

每个机箱的吞吐量 高达 15 GB/s

前端网络 每个节点 2 个 40GbE (QSFP+)

基础架构网络 每个节点 2 个 InfiniBand QDR

存储类型 SSD

可能的机箱数量 36

OneFS 版本 8.1.0.2

注意:用于验证此解决方案的 Isilon 群集在后端(基础架构)网络中使用了 InfiniBand。但是,建议全新的

Isilon 部署将 40 GbE 用于后端网络,即便是深度学习工作负载也是如此。

Page 22: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

22 使用 Dell EMC Isilon 实现深度学习

6.4.1 Isilon 配置 Isilon 的默认和最小配置足以满足本文档中测试的深度学习工作负载的卓越性能需求。

在最小配置中,将只有一个包含四个 Isilon F800 节点的 Isilon 机箱。每个 Isilon 节点应至少有一个连接到前端

交换机的 40 Gb 以太网端口。大多数情况下,这将提供 F800 能够提供的带宽量。但是,为了预防出现交换机

故障,还应连接第二个 40 Gb 以太网端口。 6.4.2 装载到 Isilon

在 NFS 客户端建立到 Isilon 群集的装载时,建议的最佳实践是装载到一个 Isilon 群集将解析为其 IP 地址之一

的 DNS 名称。这些 IP 地址会自动分配和重新分配给各个 Isilon 节点,以处理负载平衡和节点故障。此装载方

法易于管理,因为装载主机对于所有节点都是相同的(例如 isilon.example.com)。但是,当只有几个高吞吐

量的客户端时,其中一个 Isilon 节点的客户端连接数可能远多于其他节点,导致失去平衡并降低性能。为防止

出现此问题,可以将每个客户端装载到不同的固定 IP 地址,以强制实现良好的平衡。例如,将计算节点 1 连接

到 Isilon 节点 1,计算节点 2 连接到 Isilon 节点 2,等等。请注意,尽管特定的客户端节点只能连接到一个

Isilon 节点,但 I/O 请求通常会涉及 Isilon 群集所有节点中的磁盘和高速缓存。

如果 Isilon 群集中包含归档类 Isilon 节点,建议不要将 NFS 客户端连接到这些节点,因为它们的 CPU 速度较

慢,会降低客户端性能。即使已知会将数据集存储在归档类节点上,仍建议通过 CPU 速度更快且具有更多

RAM 的 F800 全闪存节点来访问它们。通常情况下,不需要为归档类节点分配前端 IP 地址,因为它们的所有

I/O 都将通过后端网络。 6.4.3 配置自动存储分层

本节介绍一种为典型的 DL 工作负载配置存储分层的方法。应根据预期的工作负载更改各种参数。

1. 使用两种或更多节点类型构建 Isilon 群集。例如,将 F800 全闪存节点用于热层,H500 混合节点用于

冷层。

2. 获取并安装 Isilon SmartPools 许可证。

3. 启用精度为 1 天的 Isilon 访问时间跟踪。在 Web 管理界面中,单击“File System”->“File System

Settings”。或者,在 Isilon CLI 中输入以下内容: isilon-1# sysctl efs.bam.atime_enabled=1 isilon-1# sysctl efs.bam.atime_grace_period=86400000

Page 23: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

23 使用 Dell EMC Isilon 实现深度学习

4. 创建一个名为 hot-tier 的层,其中包括 F800 节点池。创建一个名为 cold-tier 的层,其中包括 H500 节

点池。

Page 24: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

24 使用 Dell EMC Isilon 实现深度学习

5. 编辑默认文件池策略,将存储目标更改为 hot-tier。这将确保所有文件都放置在 F800 节点上,除非应

用了其他覆盖存储目标的文件池策略。

Page 25: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

25 使用 Dell EMC Isilon 实现深度学习

6. 创建一项新的文件池策略,将所有 30 天内未访问的文件移至 H500(冷)层。

7. 配置现已完成。要测试此配置,请执行以下剩余步骤。

8. 启动 Isilon SmartPools 作业并等待其完成。这将应用上述文件池策略,并将所有文件移至 F800 节点

(假设所有文件都在过去 30 天内被访问过)。 isilon-1# isi job jobs start SmartPools isilon-1# isi status

9. 使用 isi get 命令确认文件存储在热层中。请注意,inode 节点列表每个元素中的第一个数字(下面的 1、

2 和 3)是包含该文件的数据块的 Isilon 节点编号。例如: isilon-1# isi get -D /ifs/data/imagenet-scratch/tfrecords/train-00000-of- 01024 * IFS inode: [ 1,0,1606656:512, 2,2,1372672:512, 3,0,1338880:512 ] * Disk pools: policy hot-tier(5) -> data target f800_48tb- ssd_256gb:2(2), metadata target f800_48tb-ssd_256gb:2(2)

10. 使用 ls 命令查看访问时间。 isilon-1# ls -lu /ifs/data/imagenet-scratch/tfrecords/train-00000-of-01024 -rwx------ 1 1000 1000 762460160 Jan 16 19:32 train-00000-of-01024

11. 您可以使用 touch 命令手动更新文件的访问时间,而不是等待 30 天。 isilon-1# touch -a -d '2018-01-01T00:00:00' /ifs/data/imagenet- scratch/tfrecords/* isilon-1# ls -lu /ifs/data/imagenet-scratch/tfrecords/train-00000-of-01024 -rwx------ 1 1000 1000 762460160 Jan 1 2018 train-00000-of-01024

Page 26: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

26 使用 Dell EMC Isilon 实现深度学习

12. 启动 Isilon SmartPools 作业并等待其完成。这将应用上述文件池策略,并将这些文件移至 H500 节点。

记录移动的字节数和持续时间。 isilon-1# isi job jobs start SmartPools

isilon-1# isi status

13. 使用 isi get 命令确认文件存储在冷层中。 isilon-1# isi get -D /ifs/data/imagenet-scratch/tfrecords/train-00000-of- 01024 * IFS inode: [ 4,0,1061376:512, 5,1,1145344:512, 6,3,914944:512 ] * Disk pools: policy cold-tier(9) -> data target h500_60tb_3.2tb- ssd_128gb:15(15), metadata target h500_60tb_3.2tb-ssd_128gb:15(15)

14. 按照前一节中所述运行训练基准测试。确保至少运行 4 个 epoch,以便访问所有 TFRecord。监视

Isilon 群集,确保仅在 H500 节点上发生磁盘活动。请注意,由于文件将被读取,因此会将访问时间更

新为当前时间。在下一次运行 SmartPools 作业时,这些文件将被移回 F800 层。默认情况下,

SmartPool 作业的每日运行时间为 22:00。

15. 启动 Isilon SmartPools 作业并等待其完成。这将应用上述文件池策略,并将这些文件移至 F800 节点。 isilon-1# isi job jobs start SmartPools isilon-1# isi status

16. 使用 isi get 命令确认文件存储在热层中。 isilon-1# isi get -D /ifs/data/imagenet-scratch/tfrecords/train-00000-of- 01024 * IFS inode: [ 1,0,1606656:512, 2,2,1372672:512, 3,0,1338880:512 ] * Disk pools: policy hot-tier(5) -> data target f800_48tb- ssd_256gb:2(2), metadata target f800_48tb-ssd_256gb:2(2)

Page 27: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

27 使用 Dell EMC Isilon 实现深度学习

7 附录 2 — 基准测试设置和执行 有 关 下 载 数 据 集 和 构 建 TFRecord 文 件 的 程 序 , 请 参 阅

https://github.com/tensorflow/models/tree/master/research/inception#getting-started 。所用基准测试的存储库

为 https://github.com/alsrgv/benchmarks ,其中包含使用 Horovod 分发 TensorFlow 训练时的优化及必要的修

复。所用提交的哈希值为 3b90c14,日期为 2018 年 5 月 31 日。使用了 scripts/tf_cnn_benchmarks 中的 CNN

基准测试脚本。

在运行任何基准测试之前,使用命令“sync; echo 3 > /proc/sys/vm/drop_caches”清除了计算节点

上的高速缓存。此外,使用“isi_for_array isi_flush”清除了所有 Isilon 节点上的所有高速缓存。

由于我们使用 Horovod 将训练分发到多个节点上的多个 GPU,因此使用了 mpirun 命令来运行训练基准测试。

有关详细信息,请参阅

https://github.com/uber/horovod/blob/8318a898a2f03fb22664ca8f5353361974f8a693/docs/benchmarks.md 。

以下是一个运行训练基准测试的命令示例。

mpirun --allow-run-as-root --mca btl_openib_want_cuda_gdr 1 -np 16 \ python3.6 tf_cnn_benchmarks.py \ --model=resnet50 --datasets_num_private_threads=4 --distortions=False \ --variable_update=horovod --batch_size=256 --num_batches=2000 \ --data_dir=/mnt/isilon/tensorflow_10x --data_name=imagenet \ --train_dir=/mnt/Isilon/train_dir --init_learning_rate=.04 \ --use_fp16=True --use_tf_layers=False --print_training_accuracy

以下是上述命令的输出。请注意,为简便起见省略了许多行。显示的最后一行是以每秒图像数表示的训练吞吐量。

TensorFlow: 1.8 Model: resnet50 Dataset: imagenet Mode: training SingleSess: False Batch size: 4096 global 256.0 per device Num batches: 2000 Num epochs: 0.64 Devices: ['horovod/gpu:0', 'horovod/gpu:1', 'horovod/gpu:2', 'horovod/gpu:3', 'horovod/gpu:4', 'horovod/gpu:5', 'horovod/gpu:6', 'horovod/gpu:7', 'horovod/gpu:8', 'horovod/gpu:9', 'horovod/gpu:10', 'horovod/gpu:11', 'horovod/gpu:12', 'horovod/gpu:13', 'horovod/gpu:14', 'horovod/gpu:15'] Data format: NCHW Layout optimizer: False Optimizer: sgd Variables: horovod ========== Generating model 2018-07-13 15:23:43.871841: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1356] Found device 0 with properties: name: Tesla V100-SXM2-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.53 pciBusID: 0000:1e:00.0 totalMemory: 15.78GiB freeMemory: 15.34GiB 2018-07-13 15:23:44.430647: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 14849 MB memory) -> physical GPU (device: 0, name: Tesla V100-SXM2-16GB, pci bus id: 0000:1a:00.0, compute capability: 7.0)

Page 28: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

28 使用 Dell EMC Isilon 实现深度学习

Step Img/sec total_loss top_1_accuracy top_5_accuracy 1 2018-07-13 15:24:09 images/sec: 680.1 +/- 0.0 (jitter = 0.0) 9.788 0.000 0.004 1 2018-07-13 15:24:09 images/sec: 680.3 +/- 0.0 (jitter = 0.0) 9.003 0.000 0.004 1 2018-07-13 15:24:09 images/sec: 679.8 +/- 0.0 (jitter = 0.0) 8.518 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 680.0 +/- 0.0 (jitter = 0.0) 8.386 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.7 +/- 0.0 (jitter = 0.0) 8.585 0.000 0.008 1 2018-07-13 15:24:09 images/sec: 680.1 +/- 0.0 (jitter = 0.0) 9.207 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.7 +/- 0.0 (jitter = 0.0) 8.530 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.6 +/- 0.0 (jitter = 0.0) 8.213 0.000 0.008 1 2018-07-13 15:24:09 images/sec: 679.8 +/- 0.0 (jitter = 0.0) 8.494 0.000 0.004 1 2018-07-13 15:24:09 images/sec: 679.5 +/- 0.0 (jitter = 0.0) 12.650 0.008 0.008 1 2018-07-13 15:24:09 images/sec: 679.8 +/- 0.0 (jitter = 0.0) 8.375 0.000 0.008 1 2018-07-13 15:24:09 images/sec: 679.6 +/- 0.0 (jitter = 0.0) 9.301 0.008 0.016 1 2018-07-13 15:24:09 images/sec: 679.6 +/- 0.0 (jitter = 0.0) 8.332 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.6 +/- 0.0 (jitter = 0.0) 8.275 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.6 +/- 0.0 (jitter = 0.0) 8.658 0.000 0.000 1 2018-07-13 15:24:09 images/sec: 679.9 +/- 0.0 (jitter = 0.0) 8.506 0.000 0.008 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.9) 8.147 0.000 0.004 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.4) 8.227 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.8 (jitter = 3.4) 8.294 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 4.0) 8.398 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.6) 8.351 0.000 0.008 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.4) 8.270 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.8) 8.273 0.000 0.012 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.7) 8.142 0.000 0.004 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.3) 8.361 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.9) 8.293 0.000 0.004 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.3) 8.165 0.000 0.004 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.9) 9.824 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.4) 8.171 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.7) 8.413 0.004 0.008 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.9) 8.116 0.000 0.000 10 2018-07-13 15:24:12 images/sec: 693.3 +/- 1.9 (jitter = 3.4) 8.146 0.000 0.004 2000 2018-07-13 15:36:25 images/sec: 695.3 +/- 0.1 (jitter = 6.0) 4.880 0.223 0.410 total images/sec: 11123.80

Page 29: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

29 使用 Dell EMC Isilon 实现深度学习

8 附录 3 — 监视 Isilon 性能 8.1 InsightIQ

要监视和分析 Isilon 存储的性能和文件系统,可以使用工具 InsightIQ。InsightIQ 允许用户使用基于 Web 的

InsightIQ 应用程序中的报告来监视和分析 Isilon 存储群集的活动。用户可以自定义这些报告,以提供关于群集

硬件、软件和协议操作的信息。InsightIQ 将数据转换为可视化信息,以突出显示性能异常,并帮助用户诊断瓶

颈和优化工作流。有关 InsightIQ 的更多详细信息,请参阅《Isilon InsightIQ 用户指南》 。

8.2 Isilon 统计 CLI 当 InsightIQ 不可用时,要快速调查 Isilon 群集的性能,可通过 Isilon CLI 获取丰富的统计信息,这些统计信息

可使用到任意 Isilon 节点的 SSH 进行访问。

下面的第一条命令显示了最高层次的统计信息。请注意,单位为字节/秒,因此在下面的示例中,节点 1 正在以

2.9 GB/秒 (NetOut) 的速度向客户端发送数据。

isilon-1# isi statistics system --nodes all --format top Node CPU SMB FTP HTTP NFS HDFS Total NetIn NetOut DiskIn DiskOut All 72.7% 0.0 0.0 0.0 10.0G 0.0 10.0G 304.4M 10.4G 315.4M 10.8G 1 79.2% 0.0 0.0 0.0 2.9G 0.0 2.9G 295.0M 2.9G 70.5M 2.3G 2 80.6% 0.0 0.0 0.0 2.7G 0.0 2.7G 3.2M 2.7G 95.5M 2.8G 3 71.9% 0.0 0.0 0.0 2.4G 0.0 2.4G 3.4M 2.6G 75.5M 2.8G 4 59.2% 0.0 0.0 0.0 2.0G 0.0 2.0G 2.9M 2.1G 73.9M 2.9G

以下命令显示了与 NFS 相关的更多详细信息。所有统计信息都在所有节点上聚合。

isilon-1 # isi statistics pstat --format top __________________________NFS3 Operations Per Second_____________________________ access 2.33/s commit 0.00/s create 0.75/s fsinfo 0.00/s getattr 2.09/s link 0.00/s lookup 0.99/s mkdir 0.00/s mknod 0.00/s noop 0.00/s null 0.00/s pathconf 0.00/s read 18865.24/s readdir 0.00/s readdirplus 0.00/s readlink 0.00/s remove 0.00/s rename 0.75/s rmdir 0.00/s setattr 0.00/s statfs 0.00/s symlink 0.00/s write 0.75/s Total 18872.91/s ___CPU Utilization___ _____OneFS Stats_____ user 1.4% In 73.81 KB/s system 72.5% Out 8.96 GB/s idle 26.1% Total 8.96 GB/s ____Network Input____ ___Network Output____ ______Disk I/O_______ MB/s 12.64 MB/s 9868.11 Disk 272334.03 iops Pkt/s 150368.20 Pkt/s 6787182.27 Read 11.73 GB/s Errors/s 0.00 Errors/s 0.00 Write 99.63 MB/s

Page 30: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

30 使用 Dell EMC Isilon 实现深度学习

9 附录 4 — 使用 iPerf 和 FIO 测试 Isilon 性能 iPerf 是一种用于在 IP 网络上主动测量最大可实现带宽的工具。它可用于验证从 Isilon 节点到计算节点 NIC 的

IP 网络路径吞吐量。它可以轻松地通过脚本方式并发运行,以允许所有节点发送或接收流量。

FIO 是 Linux 的磁盘基准测试工具。它可用于轻松、快速地生成与本文档中所用的 TensorFlow 基准测试几乎

完全相同的存储工作负载。

本节演示如何使用 iPerf 和 FIO。

首先,请在您的头节点(或第一个计算节点)上为每个客户端创建一个包含一个主机名称(或 IP 地址)的主机

文件。例如:

server1.example.com server2.example.com

9.1 iPerf 在所有计算节点上安装 iPerf。请注意,iPerf 已安装在所有 Isilon 节点上。所有版本都应匹配。

cat hosts | xargs -i -P 0 ssh root@{} yum -y install \ iperf-2.0.4-1.el7.rf.x86_64.rpm cat hosts | xargs -i -P 0 ssh root@{} pkill -9 iperf cat hosts | xargs -i ssh root@{} "iperf --server --daemon > /dev/null 2>&1 &" client_opts="-t 300 --len 65536 --parallel 2" ssh [email protected] iperf -c server1.example.com ${client_opts} & ssh [email protected] iperf -c server2.example.com ${client_opts} & wait

要查看聚合带宽,请在任意 Isilon 节点上运行以下命令。

isi statistics system --format top --nodes all

9.2 FIO 以下过程显示了如何使用 FIO 对来自多个客户端的 NFS I/O 进行并发的基准测试。装载到 Isilon。每个客户端

都将装载到不同的 Isilon IP 地址。

cat hosts | xargs -i -P 0 ssh root@{} mkdir -p /mnt/isilon cat hosts | xargs -i -P 0 ssh root@{} umount /mnt/isilon ssh [email protected] mount -t nfs 10.1.1.1:/ifs \ -o rsize=524288,wsize=524288 /mnt/isilon ssh [email protected] mount -t nfs 10.1.1.2:/ifs \ -o rsize=524288,wsize=524288 /mnt/isilon

安装 FIO 服务器。

cat hosts | xargs -i -P 0 ssh root@{} yum -y install epel-release cat hosts | xargs -i -P 0 ssh root@{} yum -y install fio cat hosts | xargs -i ssh root@{} fio –version

Page 31: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

31 使用 Dell EMC Isilon 实现深度学习

启动 FIO 服务器。

cat hosts | xargs -i ssh root@{} pkill fio cat hosts | xargs -i ssh root@{} fio --server --daemonize=/tmp/fio.pid

创建如下所示的名为 fio1.job 的 FIO 作业文件。将 numjobs 设置为每个主机的 GPU 数量。此作业文件执行与

TensorFlow CNN 基准测试类似的 I/O。它会为每个 GPU 创建 30 个文件,然后以并发方式顺序读取。

[global] name=job1 directory=/mnt/isilon/tmp/fio time_based=1 runtime=600 ramp_time=60 ioengine=libaio numjobs=8 create_serialize=0 iodepth=32 kb_base=1000 [job1] rw=read nrfiles=30 size=64GiB bs=1024KiB direct=1 sync=0 rate_iops=83

运行 FIO 作业。

mkdir -p /mnt/isilon/tmp/fio fio --client=hosts fio1.job

Page 32: 使用 Dell EMC Isilon 实现深度学习...配备 NVIDIA Tesla V100 GPU 的 Dell EMC PowerEdge C4140 来加速和 扩展深度学习训练工作负载。其中包括使用 TensorFlow

32 使用 Dell EMC Isilon 实现深度学习

10 参考资料

名称 链接

Isilon OneFS 最佳实践 https://china.emc.com/collateral/white-papers/h16857-wp-onefs-best-practices.pdf

Isilon OneFS 技术概述 https://china.emc.com/collateral/hardware/white-papers/h10719-isilon-onefs-technical-overview-wp.pdf

Isilon InsightIQ https://china.emc.com/collateral/TechnicalDocument/docu65870.pdf

采用 Dell EMC Isilon SmartPools 的存储分层

https://www.dellemc.com/resources/zh-cn/asset/white-papers/products/storage/h8321-wp-smartpools-storage-tiering.pdf

TensorFlow https://github.com/tensorflow/tensorflow

Horovod https://github.com/uber/horovod

NVIDIA 混合精度训练 https://docs.NVIDIA.com/deeplearning/sdk/mixed-precision-training/index.html

RAPIDS https://rapids.ai/