腾讯云云服务器CVM - 在 CVM 上通过 AVX512 加速人工智能应用
文档简介:
操作场景:
腾讯云第六代实例 S6 和第五代实例 S5、M5、C4、IT5、D3 全面采用第二代智能英特尔®至强®可扩展处理器 Cascade Lake。提供了更多的指令集和特性,可用于加速人工智能的应用,同时集成的大量硬件增强技术,其中 AVX-512(高级矢量扩展)能够为 AI 推理过程提供强劲的并行计算能力,使用户获得更好的深度学习效果。
操作场景
腾讯云第六代实例 S6 和第五代实例 S5、M5、C4、IT5、D3 全面采用第二代智能英特尔®至强®可扩展处理器 Cascade Lake。提供了更多的指令集和特性,可用于加速人工智能的应用,同时集成的大量硬件增强技术,其中 AVX-512(高级矢量扩展)能够为 AI 推理过程提供强劲的并行计算能力,使用户获得更好的深度学习效果。
本文以 S5、M5 实例为例,介绍如何在 CVM 上通过 AVX512 加速人工智能应用。
选型推荐
云服务器的多种实例规格可用于多种应用开发,其中 标准型 S6、标准型 S5 及 内存型 M5 适用于机器学习或深度学习。这些实例配备了第二代 Intel®Xeon®处理器,适配 Intel® DL boost 学习能力。推荐配置如下表:
平台类型
|
实例规格
|
深度学习训练平台
|
84vCPU 的标准型 S5 实例或 48vCPU 的内存型 M5 实例。
|
深度学习推理平台
|
8/16/24/32/48vCPU 的标准型 S5 实例或内存型 M5 实例。
|
机器学习训练或推理平台
|
48vCPU 的标准型 S5 实例或 24vCPU 的内存型 M5 实例。
|
具备优势
使用 Intel®Xeon® 可扩展处理器运行机器学习或深度学习工作负载时,具备以下优势:
适合处理大内存型工作负载、医学成像、GAN、地震分析、基因测序等场景中使用的 3D-CNN 拓扑。
支持使用简单的 numactl 命令进行灵活的核心控制,也适用小批量的实时推理。
强大的生态系统支持,可直接在大型集群上进行分布式训练,避免额外添加大容量存储和昂贵的缓存机制来进行规模化架构的训练。
可在同一个集群中支持多种工作负载(例如 HPC、BigData、AI 等),获取更优的 TCO。
通过 SIMD 加速,满足众多实际深度学习应用程序的计算要求。
同一套基础架构可直接用于训练及推理。
操作步骤
创建实例
创建云服务器实例,详情请参见 通过购买页创建实例。其中,实例规格需根据 选型推荐 及实际业务场景进行选择。如下图所示:


说明
更多实例规格参数介绍,请参见 实例规格。
登录实例
登录云服务器实例,详情请参见 使用标准方式登录 Linux 实例(推荐)。
部署示例
您可根据实际业务场景,参考以下示例部署人工智能平台,进行机器学习或深度学习任务:
示例1:使用 Intel®优化深度学习框架 TensorFlow*
在第二代智能英特尔®至强®可扩展处理器 Cascade Lake 上 PyTorch 和 IPEX 会自动启用针对 AVX-512 指令集进行的优化,以尽可能提高运算性能。
TensorFlow* 是用于大规模机器学习及深度学习的热门框架之一。您可参考该示例,提升实例的训练及推理性能。更多框架部署相关信息,请参见 Intel® Optimization for TensorFlow* Installation Guide。操作步骤如下:
部署 TensorFlow* 框架
1. 在云服务器中,安装 Python。本文以 Python 3.7 为例。
2. 执行以下命令,安装 Intel® 优化的 TensorFlow* 版本 intel-tensorflow。
说明
建议使用2.4.0及以上版本,以获得最新的功能与优化。
pip install intel-tensorflow
设置运行时优化参数
选择运行时参数优化方式。通常会使用以下两种运行接口,从而采取不同的优化设置。您可结合实际需求选择,更多参数优化配置说明请参见 General Best Practices for Intel® Optimization for TensorFlow。
Batch inference:设置 BatchSize >1,并测量每秒可以处理的输入张量总数。通常情况下,Batch Inference 方式可以通过使用同一个 CPU socket 上的所有物理核心来实现最佳性能。
On-line Inference(也称为实时推断):设置 BS = 1,并测量处理单个输入张量(即一批大小为1)所需时间的度量。在实时推理方案中,可以通过多实例并发运行来获取最佳的吞吐。
操作步骤如下:
1. 执行以下命令,获取系统的物理核个数。
lscpu | grep "Core(s) per socket" | cut -d':' -f2 | xargs
2. 设置优化参数,可选择以下任一方式:
设置环境运行参数。在环境变量文件中,添加以下配置:
export OMP_NUM_THREADS= # <physicalcores>export KMP_AFFINITY="granularity=fine,verbose,compact,1,0"export KMP_BLOCKTIME=1export KMP_SETTINGS=1export TF_NUM_INTRAOP_THREADS= # <physicalcores>export TF_NUM_INTEROP_THREADS=1export TF_ENABLE_MKL_NATIVE_FORMAT=0
在代码中增加环境变量设置。在运行的 Python 代码中,加入以下环境变量配置:
import osos.environ["KMP_BLOCKTIME"] = "1"os.environ["KMP_SETTINGS"] = "1"os.environ["KMP_AFFINITY"]= "granularity=fine,verbose,compact,1,0"if FLAGS.num_intra_threads > 0:os.environ["OMP_NUM_THREADS"]= # <physical cores>os.environ["TF_ENABLE_MKL_NATIVE_FORMAT"] = "0"config = tf.ConfigProto()config.intra_op_parallelism_threads = # <physical cores>config.inter_op_parallelism_threads = 1tf.Session(config=config)
运行 TensorFlow* 深度学习模型的推理
可参考 Image Recognition with ResNet50, ResNet101 and InceptionV3 运行其他机器学习/深度学习模型推理。本文以 benchmark 为例,介绍如何运行 ResNet50 的 inference benchmark。详情请参见 ResNet50 (v1.5)。
运行 TensorFlow* 深度学习模型的训练
本文介绍如何运行 ResNet50 的 training benchmark,详情请参见 FP32 Training Instructions。
TensorFlow 性能展示
性能数据可参见 Improving TensorFlow* Inference Performance on Intel® Xeon® Processors,根据实际模式、物理配置的不同,性能数据会有一定差别。以下性能数据仅供参考:
延时性能:
通过测试,在 batch size 为1时选取适用于图像分类、目标检测的一些模型进行测试,会发现使用 AVX512 优化的版本相对于非优化版本所提供的推理性能有一些明显提升。例如在延迟上,优化后的 ResNet 50的延时降低为原来的45%。
吞吐量性能:
通过设置增加 batch size 来测试吞吐性能,选取适用于图像分类、目标检测的一些模型进行测试,发现在吞吐的性能数据上也有明显提升,优化后 ResNet 50的性能提升为原来的1.98倍。
示例2:部署深度学习框架 PyTorch*
示例3:使用 Intel®AI 低精度优化工具加速
示例4:使用 Intel® Distribution of OpenVINO™ Toolkit 进行推理加速