性能最高提升50%,ECS倚天实例深度学习推理性能实测

简介: 本次实测涵盖图像分类识别、图像目标检测、自然语言处理以及搜索推荐等四种常见的深度学习推理场景

近几年,深度学习在视觉、自然语言处理、搜索广告推荐等工业界的各个领域广泛落地。深度学习模型参数量的指数级上升、以及新的业务对复杂模型的需求,都要求云厂商的弹性计算能够降低算力成本、提高计算效率,尤其是深度学习的推理,将会成为优化的重点。在此因素影响下,阿里云平头哥团队推出了全球首个 5nm 制程的 ARM Server 芯片倚天710。该芯片基于 ARM Neoverse N2 架构,支持最新的 ARMv9 指令集,其中包括 i8mm,bf16等扩展指令集,能在科学/AI计算领域获得性能优势。


在本文中,我们聚焦于采用倚天710芯片的 ECS倚天实例g8y,对深度学习推理任务的性能进行了测试和比较。

01 Workloads

本次分析,我们选择了四种常见的深度学习推理场景,涵盖图像分类识别图像目标检测自然语言处理以及搜索推荐领域。所使用的代表性模型如下:

Area

Task

Model

Vision

Image Classification

Resnet50-v1.5 and VGG19

Vision

Object Detection

SSD-Resnet34

Language

Natural Language Processing

BERT-Large

Recommendation

Click-Through Rate Prediction

DIN


02 Platforms

实例类型

我们在阿里云两种实例类型上进行测试,分别是ECS g8y(倚天710) 和 ECS g7(Ice Lake),实例均为 8-vCPU。

Deep Learning Framework

在所有平台,我们使用 TensorFlow v2.10.0 和 PyTorch 1.12.1。


在 Arm 设备上,TensorFlow 支持两种后端,我们使用 OneDNN 后端。OneDNN 是一个开源的跨平台深度学习库,并且能够集成 Arm Compute Library(Arm设备的机器学习计算库)。在 Arm 设备上使用该后端能够取得更高的性能。


OneDNN 在 PyTorch 上的支持仍然是实验版本,因此在 PyTorch 框架上使用默认的 OpenBLAS 后端。

BFloat16

BFloat16 (BF16) 是一种浮点数表示形式,其指数位与单精度浮点数(IEEE FP32)保持一致,但是小数位只有 7 位,因此 BF16 的表示范围与 FP32 几乎一致,但是精度较低。BF16 非常适合深度学习,因为通常精度下降并不会显著降低模型的预测精度,但是16位的数据格式却能够节省空间、加速计算。


03 TensorFlow Performance Comparison

g8y 借助新的 BF16 指令,大幅提升了深度学习模型的推理性能,在多个场景下跑出了比 g7 更优秀的数据。此外,倚天 710 作为自研芯片,相比 g7 最大有 30% 的价格优势。


下面四幅图分别是 Resnet50,SSD,BERT 和 DIN 模型下的对比结果,其中,Resnet,SSD 和 BERT 都来自 MLPerf Inference Benchmark 项目,DIN 是 alibaba 提出的点击率预测模型。蓝色柱状条是直接性能对比,橙色柱状条是考虑了单位价格的性能对比,例如在 Resnet50 上,g8y 的性能是 g7 的 1.43倍,单位价格的性能是 g7 的 2.05 倍。

Figure 1: Resnet50 在 g8y 和 g7 上的推理性能对比图


说明:此处设置 Batch Size = 32,测试图像尺寸为 224 * 224



Figure 2: SSD 性能对比图


说明此处 Batch Size = 1,测试图像尺寸为1200 * 1200

Figure 3: BERT 性能对比图


Figure 4: DIN 性能对比图


04 PyTorch Performance Comparison

Arm 上的 OneDNN 后端的 PyTorch 版本仍然是实验性质,因此本次实验采用默认的 OpenBLAS 后端。OpenBLAS 是一个开源的线性代数库,我们为其添加了针对 Arm Neoverse N2 的 BFloat16 矩阵乘法计算的优化实现。

OpenBLAS BFloat16 矩阵乘法优化

矩阵乘法和深度学习存在非常紧密的关系,例如深度学习中常见的 Fully Connected Layer,Convolutional Layer等,最终是被转换成矩阵乘法实现的。因此,加速矩阵乘法最终能加速模型的计算。


OpenBLAS 是一个广泛使用的计算库,默认作为 Numpy,PyTorch 等库的后端,我们在调研中发现该库不支持倚天 710 的 bf16 指令扩展,在和社区交流后,我们决定利用倚天 710 支持的 BFMMLA 等向量指令实现支持 bf16 数据格式的矩阵乘法,实现后性能的到大幅提升,性能对比如图 5 所示。该实现目前已经贡献给开源社区,OpenBLAS 的最新版本 0.3.21 也已经合入。


Figure5: OpenBLAS 矩阵乘法性能对比


说明参与运算的矩阵的行数和列数均为 1000。

PyTorch CNN Performance

OpenBLAS 作为 PyTorch 的默认后端,在矩阵乘法上的优化可以体现在 PyTorch 实现的深度学习模型中,我们以卷积计算占比较高的模型 VGG19 为例,该模型推理时,所有的卷积算子会被转换为矩阵乘法,并调用 OpenBLAS 完成计算。下图是 VGG 19 的性能对比:

Figure 6: VGG19性能对比图


05 结论

本文的分析显示,在阿里云倚天实例g8y上,多个深度学习模型的推理性能高于同规格 g7,这主要得益于 Arm Neoverse N2 的新指令以及不断更新的软件支持(OneDNN、ACL 和 OpenBLAS)。在这个过程中,阿里云编译器团队贡献了一部分软件优化,后续我们将继续关注该领域的软硬件优化,提高 Arm 系列实例在 ML/AI 方面的竞争力。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
弹性计算 监控 负载均衡
|
1天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器c7/c8a/c8y/c8i/g7/g8a/g8y/g8i/r7/r8a/r8y/r8i实例区别及选择参考
在阿里云目前的活动中,除了特价的轻量应用服务器和经济型e及通用算力型u1实例之外,属于计算型实例的实例有计算型c7/c8a/c8y/c8i,属于通用型实例的有通用型g7/g8a/g8y/g8i,属于内存型实例的有内存型r7/r8a/r8y/r8i。本文将详细介绍阿里云服务器中的c7、c8a、c8y、c8i、g7、g8a、g8y、g8i、r7、r8a、r8y、r8i等实例规格的性能、适用场景及选择参考,帮助用户更好地选择合适的云服务器实例。
|
4天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、c8a、c8y、c8i实例性能、适用场景区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于计算型实例规格的云服务器有计算型c7、计算型c8a、计算型c8y和计算型c8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:2,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍计算型c7、c8a、c8y、c8i实例的性能、适用场景的区别以及选择参考。
|
3天前
|
存储 人工智能 安全
阿里云服务器通用型g7、g8a、g8y、g8i实例区别及选择指南
目前在阿里云的活动中,属于通用型实例规格的云服务器有通用型g7、通用型g8a、通用型g8y和通用型g8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:4,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍通用型g7、g8a、g8y、g8i实例的性能、适用场景的区别以及选择参考。
|
10天前
|
存储 安全 网络协议
阿里云服务器通用型g7、通用型g8y、通用型g8i实例性能和适用场景对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,在选择云服务器实例规格时,对于需要平衡计算、存储和网络性能的应用场景来说,通用型g7、通用型g8y和通用型g8i实例是许多用户的热门选择。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比。让大家了解一下他们之间的不同,以供参考选择。
|
19天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
18天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
6天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
33 3
|
12天前
|
存储 弹性计算 编解码
通过阿里云的活动租赁云服务器时如何选择实例规格?选择指南参考
新手用户通过阿里云的活动租赁云服务器的时候实例规格应该怎么选?目前在阿里云的活动中,可选的云服务器类型除了轻量应用服务器之外,云服务器的主要实例规格有经济型e、通用算力型u1和计算型c7与c8y、通用型g7与g8y、内存型r7与r8y等实例,但是对于新手来说,由于是初次购买,实例规格往往不知道怎么选择了。本文为大家展示阿里云目前活动中各云服务器实例规格性能、适用场景以及选择指南参考。
|
16天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。

相关产品

  • 云服务器 ECS