当前位置:网站首页>免费易用 ,腾讯Arm云实例评测 - AI推理加速
免费易用 ,腾讯Arm云实例评测 - AI推理加速
2022-06-22 10:13:00 【DavidZ】
腾讯CVM标准型SR1是腾讯云推出的首款搭载ARM架构处理器的新一代CVM标准型计算实例规格。SR1基于全核一致主频3.0GHz的Ampere Altra处理器,实例核数从1核到64核,并支持1: 2、1: 4等多种处理器与内存配比,相对x86架构实例为用户提供卓越的性价比。
Ampere为基于Ampere Altra处理器的SR1实例提供了优化过的AI框架(Ampere AI),并通过腾讯镜像市场提供免费的镜像给客户使用。本文将介绍如何在腾讯云上创建SR1实例,并基于TensorFlow对计算机视觉分类性能进行评测。
用CPU做推理
现下AI推理应用的算力来源主要有三种方式,即CPU+AI专用芯片,CPU+GPU和单纯的CPU推理。根据Statista和麦肯锡之前发布的AI硬件洞察报告,基于CPU的推理目前仍占50%以上。相比其他两种模式,采用CPU推理的主要原因有几点:
- 更加灵活便利,软件主导,对应用方来说对专用硬件的依赖性低。
- 涉及操作系统、驱动程序、运行时组件库等的复杂性较低。
- CPU 上 AI 模型算法(例如稀疏性、量化等)的持续优化创新可以提供接近 GPU 的高吞吐量 。
- 更容易实现横向扩展并与其他软件堆栈进行集成 。
更重要的是在CPU上搭建推理应用可以方便的将AI集成到业务逻辑模块,融入微服务云原生体系。
本文将介绍如何在腾讯云上创建SR1云实例,采用Ampere优化后的AI软件栈,以TensorFlow为例对计算机视觉分类性能进行评测。
创建SR1实例
我们将创建一个16vCPU的SR1实例SR1.4XLARGE32来进行评测,该实例配置16个Ampere Altra物理核和32GB内存。
首先登录腾讯云的控制台,在“实例”类别下选择“新建”,将进入实例创建页面。由于SR1目前只在广州六区有售,所以需要选择“广州”->“广州六区”->”标准型SR1”。
然后将看到不同规格的SR1实例,这里我们选择SR1.4XLARGE32规格的实例。
镜像选择“镜像市场”-> “从镜像市场选择”,然后搜索“Ampere”,选取“Ampere Optimized TensorFlow - Ubuntu 20.04”镜像即可免费使用Ampere针对SR1优化过的TensorFlow 2.7以及各种示例程序。
设置好其它的实例配置,就可以确认配置信息并开通实例了。
启动并连接到实例
实例创建完就可以启动并登录了。实例的IP地址可以从控制台获取,取决于创建时设置的登录方式,可以使用密码或密钥的方式登录实例。
ssh [email protected]<public ip address of the instances>登录后将看到下面的Ampere AI的欢迎界面。
可以看到,这个镜像除了集成了Ampere 优化的Tensorflow,也包含aio-example的测试代码,该代码也可以从github上获取。
运行TensorFlow AIO 示例
TensorFlow是一个端到端开源机器学习平台,它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。
我们创建实例时从镜像市场选择的镜像已经包含了针对Ampere Altra CPU优化过的Tensorflow 2.7。为了运行aio-example提供的示例程序,我们需要先下载模型。aio-examples提供了包括图像分类和对象检测的不同模型,有32位的,也有16位和8位的模型。
$ cd aio-examples
$ ./download_models.sh取决于网络状况,下载所有的模型将需要几分钟。
我们将用TensorFlow resnet_50_v15 分类模型来进行测试和评估。ResNet50是最常用的图像分类模型之一。
由于Ampere Altra CPU是单核单线程,SR1里每一个vCPU都对应一个Altra物理核,所以在用SR1.4XLARGE32测试时,我们指定AIO_NUM_THREADS为16。我们首先测试FP32的双精度模型。
cd classification/resnet_50_v15
export AIO_NUM_THREADS=16
python3 run.py -m resnet_50_v15_tf_fp32.pb -p fp32可以看到,使用16个核心,resnet_50_v15可以每秒处理65.36张图像(65.36 ips), 延时为15ms。
下面我们再测试基于FP16的模型。
cd classification/resnet_50_v15
export AIO_NUM_THREADS=16
python3 run.py -m resnet_50_v15_tf_fp16.pb -p fp16我们看到FP16的模型提供了高达115.59 ips的吞吐能力,这是因为Ampere Altra处理器对FP16提供了原生支持。相比FP32模型, FP16模型可以在几乎不影响模型的精度的前提下提供接近2倍的图像处理能力。
与其他实例的性能对比
这里的aio-example同样可以运行在基于Intel CPU和AMD CPU的腾讯CVM实例上。我们同样创建16vCPU的实例S6.4XLARGE32 和SA3.4XLARGE32。 其中S6.4XLARGE32是基于Intel Xeon Ice Lake 处理器的16vCPU实例,SA3.4XLARGE32是基于AMD EPYC Milan 处理器的16vCPU实例。与SR1.4XLARGE32不同的是,这里的16vCPU是16个线程,而非物理核,实际的物理核为8。
我们在S6.4XLARGE32上运行intel-tensorflow, 这是Intel优化过的TensorFlow以充分发挥AVX-512指令集的性能。
AMD也提供了针对AMD CPU优化的ZenDNN,但在腾讯CVM里测试的结果并不比native的Tensorflow更好,所以以下SA3.4XLARGE32的数据采用的是native TensorFlow。
“resnet_50_v15”模型在3个平台上的性能表现如下表。
实例类型 | vCPU数量 | 价格(¥/小时) | 模型 | ips | ips/price | latency(ms) |
|---|---|---|---|---|---|---|
S6.4xLARGE32 | 16 | 2.51 | fp32 | 47 | 18.73 | 21 |
SA3.4xLARGE32 | 16 | 1.88 | fp32 | 44 | 23.29 | 23 |
SR1.4xLARGE32 | 16 | 2.04 | fp32 | 65 | 32.04 | 15 |
SR1.4xLARGE32 | 16 | 2.04 | fp16 | 116 | 56.66 | 9 |
我们可以看到,每秒处理的图像数量(ips),SR1.4xLARGE32分别比同规格的S6和SA3实例高出40%和50%;如果再考虑单个实例的价格差异,以相同的价格,SR1.4xLARGE32可以获得比同规格的S6和SA3高出70%和40%的性能。
于此同时,SR1实例还提供了对FP16的支持,可以获得更高的吞吐能力,以及更低的延时特性。
Jupiter Notebook的可视化示例
aio-example 也提供了Jupiter Notebook脚本,方式编辑,调试和实现可视化。
下面将以对象检测模型SSD Inception v2为例。首先在CVM里启动Jupiter Notebook。
在另外一台有浏览器的机器上,执行以下命令,输入实例的密码,开启ssh 隧道;然后打开浏览器,输入上面最后一行的地址,就可以看到AIO的Jupiter Notebook了。
ssh -N -L 8080:localhost:8080 [email protected]<public ip address of the instances>进入“object_detection”,点击“examples.ipynb”,将会看到Object Detection Examples的页面。
点击”Cell” -> “Run All”运行。
查看运行结果。
也可以通过同样的方法运行aio-examples里面其它的示例。
结论
采用Ampere Altra处理器的腾讯SR1实例,充分发挥了单核单线程的性能优势,同时Ampere AI优化软件栈将SR1在AI推理应用中,相对x86架构的性价比优势提升到了70%。
除了腾讯云市场的免费镜像,用户也可以从Ampere解决方案网站获取即用型 Docker 映像,包括代码和文档,在接受最终用户许可协议后的进行下载。Docker 映像包含一个标准的 ML 框架(TensorFlow,PyTorch, ONNX等),预装了优化的软件,可以在腾讯CVM SR1无需更改即可运行推理脚本。镜像中也提供了图像分类和对象检测等示例模型。
Ampere Computing免费试用计划为开发者开放了SR1实例的申请通道,有兴趣的同学可以通过该计划免费试用SR1实例。
文内资源链接参考
https://solutions.amperecomputing.com/solutions/ampere-ai
https://github.com/AmpereComputingAI/aio-examples
https://github.com/AmpereComputingAI/ampere_model_library
边栏推荐
猜你喜欢

M2 芯片解析:似乎是一个增强版的 A15?

软件项目管理 8.3.敏捷项目质量活动

2022-06-09 work record --yarn/npm-error-eperm: operation not permitted, UV_ cwd

Analysis of thinkphp5.0.24 deserialization vulnerability

php 数据库 mysql提问

IPO配置指南

Vs2022 connecting to SQLSERVER database tutorial

Should the theme of the IDE be bright or dark? Here comes the ultimate answer!

Force buckle 1108 IP address invalidation

字节三面:到底知不知道什么是Eureka?
随机推荐
The ruby code in logstash converts the @timestamp timestamp format
What kind of experience is middle-aged unemployment
Encryption market plummeted, Seth triggered a new round of concern
[popular science] to understand supervised learning, unsupervised learning and reinforcement learning
命令行下获取公网IP地址汇总
APM设置变桨距四旋翼控制模式
Pareto's law at work: focus on results, not outputs
VS2022连接sqlserver数据库教程
【深度学习】TensorFlow,危!抛弃者正是谷歌自己
6-40 constructing ordered sparse polynomial chained storage
Attack and defense world web practice area beginner level
字节二面:Redis主节点的Key已过期,但从节点依然读到过期数据是为什么?怎么解决?
Software project management 8.3 Agile project quality activities
libevent的使用
一口气读懂 IT发展史
软件工程 大题
Introduction to right raising method and principle (interview)
Basic knowledge of AI Internet of things | community essay solicitation
MySQL中from_unixtime和unix_timestamp处理数据库时间戳转换问题-案例
Ctfshow Web Learning Records