写点什么

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:59857
用户头像

发布了 1843 篇内容, 共 110.0 次阅读, 收获喜欢 77 次。

关注

评论

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

不就是接根网线的事么?

小齐写代码

网络技术

2023值得关注的125家AIGC企业闪亮发布!

创业邦

驶向高效运营,StarRocks 助力蔚来汽车数据分析再升级

StarRocks

数据库 大数据 数据仓库 数据湖

Axure RP 9 for Mac(交互式产品原型设计工具) v9.0.0.3682中文激活版

mac

Axure RP 9 苹果mac Windows软件 产品原型设计软件

软件开发常说的CI/CD是什么

越长大越悲伤

CI/CD

Go 切片

小万哥

Go 程序员 后端 开发 Google

从《孤注一掷》出发,聊聊 SSL 证书的重要性

火山引擎边缘云

https HTTP SSL证书 HTTPS协议

元载万物·智启新界,2023创业邦AIGC技术应用大会在深圳举行

创业邦

大模型知识助手,成功切入万亿级企业服务赛道

中关村科金

大模型 知识库

没有苹果开发者账号能否创建ios证书-最新

没有苹果开发者账号能否创建ios证书-最新

雪奈椰子

可不能忽视的五个 HTTP 请求要点

Liam

程序员 前端 后端 HTTP API

重新定义生产力与创造力的新力量

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

简化测试流程,提供卓越服务:TestComplete+Salesforce满足不断发展的企业的需求

龙智—DevSecOps解决方案

AutoCAD 2023 for Mac(cad2023) v2023.2.1注册激活中文版

mac

2023 cad 苹果mac Windows软件 AutoCAD2023

DxO PureRAW for Mac(RAW照片处理器)v3.5.0中文激活版

mac

照片处理工具 苹果mac Windows软件 DxO PureRAW

ARTS-WEEK3-23.8.28~23.9.2

EchoZhou

自动驾驶点云标注:挑战与解决方案

来自四九城儿

今年有什么新内容?《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

了解搜索引擎《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

技术思维和管理思维

老张

技术思维 管理思维

低代码概念——初步认识低代码

互联网工科生

低代码 企业级应用程序开发 JNPF

低代码未来会颠覆开发行业吗?

高端章鱼哥

软件开发 低代码 JNPF

Semi D2C 设计稿转代码的演进之路

SemiDesign

figma Semi Design D2C Design to Code

云原生架构:在云环境中构建弹性应用

树上有只程序猿

微服务 云原生 容器化

Python 案例实训教学,支持“教师-学生”双视角切换|ModelWhale 版本更新

ModelWhale

Python 人工智能 数据分析 超算 云课堂

搜索引擎基础《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

从降本增效到价值创造,大模型如何重塑智能语音产品

中关村科金

大模型 智能语音

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