性能最高提升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 方面的竞争力。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 人工智能 缓存
阿里云服务器五代至九代实例规格详解及性能提升对比,场景适配与选择指南参考
目前阿里云服务器的实例规格经过多次升级之后,最新一代已经升级到第九代实例,当下主售的云服务器实例规格也以八代和九代云服务器为主,对于初次接触阿里云服务器实例规格的用户来说,可能并不是很清楚阿里云服务器五代、六代、七代、八代、九代实例有哪些,他们之间有何区别,下面小编为大家介绍下阿里云五代到九代云服务器实例规格分别有哪些以及每一代云服务器在性能方面具体有哪些提升,以供大家参考和了解。
379 15
|
3月前
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
3月前
|
弹性计算 运维 安全
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
在阿里云当下的活动中,38元/年的轻量应用服务器与99元/年的云服务器ECS成为众多新用户的关注焦点。但是有部分用户并不是很清楚二者之间的区别,因此就不知道应该如何选择。接下来,笔者将为您详细剖析ECS云服务器与轻量应用服务器的差异,以供您参考和选择。
474 4
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
|
3月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
940 5
|
3月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
340 10

相关产品

  • 云服务器 ECS