写点什么

Amazon Elastic Inference GPU 支持的深度学习推理加速

  • 2019-10-14
  • 本文字数:3495 字

    阅读完需:约 11 分钟

Amazon Elastic Inference  GPU 支持的深度学习推理加速

最近人工智能和深度学习的发展迅速,其中一个原因是图形处理单元 (GPU) 神奇的计算能力。大约十年前,研究人员学会了如何利用大规模硬件并行架构来进行机器学习和高性能计算:爱好探索的人将对 2009 年斯坦福大学发表的半年度报告 (PDF) 趋之若鹜。


今天,GPU 已经帮助开发人员和数据学家利用大规模的医学影像分析或自动驾驶数据集训练了复杂的模型。例如,Amazon EC2 P3 系列实例最高允许您同时使用八个 NVIDIA V100 GPU,最高可实现 1 PetaFLOP 的混合精确性能:但您是否相信在 10 年前这是有史以来速度最快的超级计算机的性能?


当然,模型的训练只是问题的一半:在推理上又如何,也就是将模型投入运行,用于为新的数据样本预测结果? 遗憾的是,开发人员往往在选择实例类型和大小上犯难。事实上,对于大型的模型,CPU 的推理延迟可能不满足在线应用的需要,而全能 GPU 的成本可能又不值当。此外,与原始推理速度相比,RAM 内存和 CPU 等资源可能对应用程序的总体性能更为重要。


例如,假设您渴求算力的应用程序要求采用一个 c5.9xlarge 实例(在 us-east-1 的成本为每小时 1.53 USD):使用 SSD 模型的单次推理调用需要接近 400 毫秒时间,这对于实时交互而言肯定太慢。如果将您的应用程序迁移到 p2.xlarge 实例(这是成本最低廉的通用型 GPU 实例,在 us-east-1 的成本为每小时 0.90 USD),可以将推理时间缩短至 180 毫秒:同样,这将影响应用程序的性能,因为 p2.xlarge 实例的 vCPU 数量和 RAM 内存容量更少。


好了,不能再妥协了。今天,我很高兴地宣布推出 Amazon Elastic Inference,这是一项新的服务,可让您为任何 Amazon EC2 实例附加恰当数量的 GPU 类推理加速功能。Amazon SageMaker 笔记本实例和终端节点也提供此功能,为内置算法和深度学习环境提供加速。


为应用程序选择最佳的 CPU 实例类型,然后挂载正确数量的 GPU 加速,从而兼得两者的最佳性能! 当然,您可以使用 EC2 Auto Scaling 来根据需要自动添加和删除加速实例。


推出 Amazon Elastic Inference


Amazon Elastic Inference 支持 TensorFlow、Apache MXNet 和 ONNX(通过 MXNet 执行)等常见的机器学习框架。对现有代码的更改需求极少,但您将需要使用 AWS 优化的解析版,它会自动检测挂载到实例的加速器,确保仅允许授权的访问,跨本地 CPU 资源和挂载的加速器分配计算资源。这些解析版可在 Amazon S3 上的 AWS Deep Learning AMI 使用,因此您可以在自己的映像或容器中构建它,并在您使用 Amazon SageMaker 时自动预置。


Amazon Elastic Inference 目前有三个型号,从而确保对多种推理模型的高效性,包括计算机视觉、自然语言处理和语音识别等。


  • eia1.medium:8 TeraFLOP 的混合精度性能。

  • eia1.large:16 TeraFLOP 的混合精度性能。

  • eia1.xlarge:32 TeraFLOP 的混合精度性能。

  • 这可让您根据应用程序选择最佳的性价比。例如,c5.large 实例搭配 eia1.medium 加速的成本为 0.22 USD/小时 (us-east-1)。这一组合仅比 p2.xlarge 实例慢 10-15%,而后者需要使用专用的 NVIDIA K80 GPU,成本高达 0.90 USD/小时 (us-east-1)。结果:您获得了同等的 GPU 性能,但成本减少了 75%,同时为您的应用程序选择了最契合的实例类型。


下面我们更深入一些,介绍 Amazon EC2 实例上的 Apache MXNet 和 TensorFlow 例子。


Amazon Elastic Inference 的设置


下面是将此服务用于 Amazon EC2 实例的简要步骤。


1.为实例创建一个安全组,仅允许入站 SSH 流量。


2.为实例创建一个 IAM 角色,允许它连接到 Amazon Elastic Inference 服务。


3.在将要运行实例的 VPC 中为 Amazon Elastic Inference 创建一个 VPC 终端节点,附加一个仅允许来自实例的入站 HTTPS 流量的安全组。请注意每个 VPC 中只能执行一次此操作,终端节点的费用将包含在加速器的成本中。



创建加速实例


现在终端节点已经可用,让我们使用 AWS CLI 来启动一个带 AWS Deep Learning AMI 的 c5.large 实例。


aws ec2 run-instances --image-id $AMI_ID \--key-name $KEYPAIR_NAME --security-group-ids $SG_ID \--subnet-id $SUBNET_ID --instance-type c5.large \--elastic-inference-accelerator Type=eia1.large
复制代码


一切搞定! 您不需要学习任何新的 API 即可使用 Amazon Elastic Inference:只需输入描述加速器类型的任何额外参数即可。几分钟后,实例将会启动,我们可以连接到该实例。


Apache MXNet 加速


在此经典示例中,我们将在 Amazon Elastic Inference 加速器上加载一个经过预训练的大型卷积神经网络(如果您不熟悉经过预训练的模型,请参阅我的上一篇博文)。具体而言,我们将使用借助 ImageNet 数据集训练的 ResNet-152 网络。


然后我们将借助 the Amazon Elastic Inference 加速器对一个图像进行分类。


import mxnet as mximport numpy as npfrom collections import namedtupleBatch = namedtuple('Batch', ['data'])
# Download model (ResNet-152 trained on ImageNet) and ImageNet categoriespath='http://data.mxnet.io/models/imagenet/'[mx.test_utils.download(path+'resnet/152-layers/resnet-152-0000.params'), mx.test_utils.download(path+'resnet/152-layers/resnet-152-symbol.json'), mx.test_utils.download(path+'synset.txt')]
# Set compute context to Elastic Inference Accelerator# ctx = mx.gpu(0) # This is how we'd predict on a GPUctx = mx.eia() # This is how we predict on an EI accelerator
# Load pre-trained modelsym, arg_params, aux_params = mx.model.load_checkpoint('resnet-152', 0)mod = mx.mod.Module(symbol=sym, context=ctx, label_names=None)mod.bind(for_training=False, data_shapes=[('data', (1,3,224,224))], label_shapes=mod._label_shapes)mod.set_params(arg_params, aux_params, allow_missing=True)
# Load ImageNet category labelswith open('synset.txt', 'r') as f: labels = [l.rstrip() for l in f]
# Download and load test imagefname = mx.test_utils.download('https://github.com/dmlc/web-data/blob/master/mxnet/doc/tutorials/python/predict_image/dog.jpg?raw=true')img = mx.image.imread(fname)
# Convert and reshape image to (batch=1, channels=3, width, height)img = mx.image.imresize(img, 224, 224) # Resize to training settingsimg = img.transpose((2, 0, 1)) # Channels img = img.expand_dims(axis=0) # Batch size# img = img.as_in_context(ctx) # Not needed: data is loaded automatically to the EIA
# Predict the imagemod.forward(Batch([img]))prob = mod.get_outputs()[0].asnumpy()
# Print the top 3 classesprob = np.squeeze(prob)a = np.argsort(prob)[::-1]for i in a[0:3]: print('probability=%f, class=%s' %(prob[i], labels[i]))
复制代码


您可以看出,只有少量的差异:


  • 我将计算上下文设置为 mx.eia()。无需编号,因为一个 Amazon EC2 实例只能挂载一个 Amazon Elastic Inference 加速器。

  • 我没有并没有像使用 GPU 时那样,明确将图像加载到 Amazon Elastic Inference 加速器上。这将自动完成。

  • 运行此示例会生成如下结果。



probability=0.979113, class=n02110958 pug, pug-dogprobability=0.003781, class=n02108422 bull mastiffprobability=0.003718, class=n02112706 Brabancon griffon
复制代码


性能如何? 借助我们的 c5.large 实例,此预测花费的 CPU 时间约为 0.23 秒,而在其 eia1.large 加速器上花费的时间仅 0.031 秒。在配备全能 NVIDIA V100 GPU 的 p3.2xlarge 实例上花费的时间约为 0.015 秒。如果改用 eia1.medium 加速器,则预测会花费 0.046 秒,与 p2.xlarge(0.042 秒)一样快,但成本降低了 75%!


TensorFlow 加速


您可以使用 TensorFlow Serving 来进行加速预测:它是一种模型服务器,通过 REST API 和 gRPC 来加载保存的模型并提供更性能的预测。


Amazon Elastic Inference 包含了 TensorFlow Serving 的加速版本,使用方法如下。


$ ei_tensorflow_model_server --model_name=resnet --model_base_path=$MODEL_PATH --port=9000$ python resnet_client.py --server=localhost:9000
复制代码


现已推出


我希望这篇博文提供了丰富的有用信息。Amazon Elastic Inference 现已在美国东部(弗吉尼亚北部和俄亥俄)、美国西部(俄勒冈)、欧洲(爱尔兰)和太地区(首尔和东京)区域推出。您可以立即开始使用它来构建应用程序!


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-elastic-inference-gpu-powered-deep-learning-inference-acceleration/


2019-10-14 13:59900
用户头像

发布了 1855 篇内容, 共 121.8 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

鞍钢集团∣共和国钢铁工业长子的财务转型之路

用友BIP

财务数智化

后端开发需要安装哪些软件/插件?

小齐写代码

Affinity Photo 2 for Mac(专业修图软件) 2.2.0永久激活版

mac

修图软件 苹果mac Windows软件 Affinity Photo

功能强大的 PostgreSQL 没有 MySQL 流行的 10 个原因

NineData

MySQL postgresql 架构 品牌

当敏捷开发遇上固定交付……

敏捷开发

项目管理 敏捷开发 Scrum Master 固定交付

别再纠结线程池池大小、线程数量了,哪有什么固定公式 | 京东云技术团队

京东科技开发者

cpu 线程池 企业号9月PK榜

VUE模块化开发是如何实现的?

FN0

Vue

逻辑漏洞挖掘之XSS漏洞原理分析及实战演练 | 京东物流技术团队

京东科技开发者

信息安全 漏洞分析 xss攻击 逻辑漏洞 企业号9月PK榜

M3E/OpenAi+vearch内容查重实践 | 京东云技术团队

京东科技开发者

数据库 openai 企业号9月PK榜 内容查重 vearch

权威认证!用友再获全球企业级应用软件市场10强

用友BIP

企业级应用软件

HarmonyOS自定义页面请求与前端页面调试

HarmonyOS开发者

HarmonyOS

万字深度 | 上篇:GPT 时代人类智力活动新地图

豆哥

意识 思维模式 认知领域 智力活动

2023-09-20:用go语言,保证一定是n*n的正方形,实现从里到外转圈打印的功能 如果n是奇数,中心点唯一,比如 a b c d e f g h i e是中心点,依次打印 : e f i h g

福大大架构师每日一题

福大大架构师每日一题

什么是IoT数字孪生?

3D建模设计

IoT 数字孪生

探析ElasticSearch Kibana在测试工作中的实践应用 | 京东物流技术团队

京东科技开发者

测试 Kibana ES 企业号9月PK榜

苹果电脑效率提升:Alfred 5 for Mac直装版 附Alfred5汉化包 支持M1

南屿

Alfred 5 Mac Alfred 5破解版 Mac效率办公软件

直击火山引擎V-Tech峰会!仅需简单登录,即可极速体验数据引擎ByteHouse

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号9月PK榜

赋能企业:释放加密货币代币开发的潜力

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

GLTF编辑器如何快速重置模型原点

3D建模设计

编辑器 GLTF 模型原点

GLTF编辑器如何合并相同材质的Mesh

3D建模设计

编辑器 GLTF 模型材质合批

覆盖8大领域,云投集团财务数智化管理平台全面上线!

用友BIP

财务数智化

Amazon Elastic Inference  GPU 支持的深度学习推理加速_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章