前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >免费易用 ,腾讯Arm云实例评测 - AI推理加速

免费易用 ,腾讯Arm云实例评测 - AI推理加速

原创
作者头像
DavidZ
修改2022-06-23 10:18:05
修改2022-06-23 10:18:05
5.3K1
举报
文章被收录于专栏:云实例评测

腾讯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实例

我们将创建一个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地址可以从控制台获取,取决于创建时设置的登录方式,可以使用密码或密钥的方式登录实例。

代码语言:javascript
复制
ssh ubuntu@<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位的模型。

代码语言:javascript
复制
$ cd aio-examples
$ ./download_models.sh

取决于网络状况,下载所有的模型将需要几分钟。

我们将用TensorFlow resnet_50_v15 分类模型来进行测试和评估。ResNet50是最常用的图像分类模型之一。

由于Ampere Altra CPU是单核单线程,SR1里每一个vCPU都对应一个Altra物理核,所以在用SR1.4XLARGE32测试时,我们指定AIO_NUM_THREADS为16。我们首先测试FP32的双精度模型。

代码语言:javascript
复制
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的模型。

代码语言:javascript
复制
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的支持,可以获得更高的吞吐能力,以及更低的延时特性。

Jupyter Notebook的可视化示例

aio-example 也提供了Jupyter Notebook脚本,方式编辑,调试和实现可视化。

下面将以对象检测模型SSD Inception v2为例。首先在CVM里启动Jupyter Notebook。

在另外一台有浏览器的机器上,执行以下命令,输入实例的密码,开启ssh 隧道;然后打开浏览器,输入上面最后一行的地址,就可以看到AIO的Jupyter Notebook了。

代码语言:javascript
复制
ssh -N -L 8080:localhost:8080 ubuntu@<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

https://cloud.tencent.com/document/product/213/55669

https://developer.amd.com/zendnn/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用CPU做推理
  • 创建SR1实例
  • 启动并连接到实例
  • 运行TensorFlow AIO 示例
  • 与其他实例的性能对比
  • Jupyter Notebook的可视化示例
  • 结论
  • 文内资源链接参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档