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

2022-06-23 10:18:05 浏览数 (1)

腾讯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/

0 人点赞