使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。

使用适用于 NLP 和 CV PyTorch 模型的 Amazon EC2 G5 实例,将每次推理的成本降低三倍,实现四倍的 ML 推理吞吐量

亚马逊弹性计算云 (Amazon EC2) G5实例 是云中第一个也是唯一一个采用 NVIDIA A10G Tensor Core GPU 的实例,您可以将其用于各种图形密集型和机器学习 (ML) 用例。 借助 G5 实例,机器学习客户可以获得高性能和经济高效的基础架构,以训练和部署用于自然语言处理 (NLP)、计算机视觉 (CV) 和推荐引擎用例的更大、更复杂的模型。

这篇博文的目的是展示 G5 实例对大规模 ML 推理工作负载的性能优势。 为此,我们通过比较 NLP 和 CV 模型与 G4dn 实例的性价比(以每百万推论计算)。 我们首先描述我们的基准测试方法,然后呈现跨批次大小和数据类型精度的吞吐量与延迟曲线。 与 G4dn 实例相比,我们发现 G5 实例为 NLP 和 CV 模型的全精度和混合精度模式提供始终如一的更低的每百万推理成本,同时实现更高的吞吐量和更低的延迟。

基准方法

为了在 G5 和 G4dn 之间开展性价比研究,我们需要测量吞吐量、延迟和每百万次推理的成本作为批量大小的函数。 我们还研究了全精度与混合精度的影响。 模型图和输入都在推理之前加载到 CUDA 中。

如下架构图所示,我们首先使用 CUDA 为底层 EC2 实例(G4dn、G5)创建各自的基础容器镜像。 为了构建基础容器镜像,我们从 AWS深度学习容器,它使用预先打包的 Docker 镜像在几分钟内部署深度学习环境。 这些图像包含所需的深度学习 PyTorch 库和工具。 您可以在这些图像之上添加自己的库和工具,以便对监控、合规性和数据处理进行更高程度的控制。

然后我们构建一个特定于模型的容器镜像,该镜像封装了模型配置、模型跟踪和相关代码以运行前向传递。 所有容器图像都加载到 亚马逊ECR 允许针对各种模型配置对这些模型进行水平缩放。 我们用 亚马逊简单存储服务 (Amazon S3) 作为通用数据存储,用于下载配置和上传基准测试结果以进行汇总。 您可以使用此架构重新创建和重现基准测试结果,并重新调整用途以跨 EC2 实例类型(CPU、GPU、Inf1)对各种模型类型(例如 Hugging Face 模型、PyTorch 模型、其他自定义模型)进行基准测试。

通过这个实验,我们的目标是研究延迟与吞吐量的关系。 该曲线对于应用程序设计以达到目标应用程序的成本最优基础架构非常重要。 为了实现这一点,我们通过对来自多个线程的查询进行排队,然后测量每个已完成请求的往返时间来模拟不同的负载。 吞吐量是根据每单位时钟时间完成的请求数来衡量的。 此外,您可以改变批量大小和其他变量,如序列长度和全精度与半精度,以全面扫描设计空间以获得指示性性能指标。 在我们的研究中,通过对批处理大小和来自多线程客户端的查询进行参数扫描,确定了吞吐量与延迟曲线。 可以对每个请求进行批处理,以确保充分利用加速器,尤其是对于可能无法充分利用计算节点的小请求。 您还可以采用此设置来确定客户端批量大小以获得最佳性能。

总之,我们可以将这个问题在数学上表示为:(吞吐量,延迟)=(批量大小,线程数,精度)的函数。

这意味着,考虑到详尽的空间,实验的数量可能很大。 幸运的是,每个实验都可以独立运行。 我们建议使用 AWS批处理 与线性测试方法相比,在不增加基准测试成本的情况下,在压缩时间内执行这种水平扩展的基准测试。 复制结果的代码在 GitHub存储库 为 AWS Re:Invent 2021 做准备。该存储库非常全面,可以在不同的加速器上执行基准测试。 您可以参考GPU方面的代码来构建容器(Dockerfile-gpu) 然后参考里面的代码 Container-Root 有关 BERT 和 ResNet50 的具体示例。

我们使用上述方法开发了两种模型类型的性能研究:Bert-base-uncased(110 亿参数,NLP)和 ResNet50(25.6 万参数,CV)。 下表总结了模型详细信息。

型号型号 型号 更多信息
NLP twmkn9/bert-base-uncased-squad2 110亿个参数序列长度= 128
CV 残差网络50 25.6亿个参数

此外,为了跨数据类型(全精度、半精度)进行基准测试,我们使用 torch.cuda.amp,它提供了处理混合精度的便捷方法,其中某些操作使用 torch.float32 (float) 数据类型和其他操作使用 torch.float16 (一半)。 例如,像线性层和卷积这样的算子使用 float16 会快得多,而其他像归约这样的算子通常需要 float32 的动态范围。 自动混合精度尝试将每个运算符与其适当的数据类型相匹配,以优化网络的运行时间和内存占用。

基准测试结果

为了公平比较,我们选择了 G4dn.4xlargeG5.4x大号 具有相似属性的实例,如下表所列。

图形处理器 GPU 内存 (GiB) 虚拟CPU 内存 (GiB) 实例存储 (GB) 网络性能 (Gbps) EBS 带宽 (Gbps) Linux 按需定价 (us-east-1)
G5.4x大号 1 24 16 64 1 个 600 NVMe 固态硬盘 高达25 8 $ 1.204 /小时
G4dn.4xlarge 1 16 16 64 1 个 225 NVMe 固态硬盘 高达25 4.75 $ 1.624 /小时

在以下部分中,我们将 BERT 和 RESNET50 模型的 ML 推理性能与特定批次大小(32、16、8、4、1)和数据类型精度(全精度和半精度)的网格扫描方法进行比较,以获得吞吐量与延迟曲线。 此外,我们研究了吞吐量与批量大小对全精度和半精度的影响。 最后,我们将每百万次推理的成本作为批量大小的函数来衡量。 这些实验的综合结果将在本文后面进行总结。

吞吐量与延迟

下图比较了全精度和半精度 NLP 和 CV 工作负载的 G4dn 和 G5 实例。 与 G4dn 实例相比,G5 实例的 BERT 基础模型的吞吐量大约高 2.5 倍(全精度)和大约 2 倍(半精度),而 ResNet2.5 模型的吞吐量大约高 50-5 倍。 总体而言,GXNUMX 是首选,从性能角度来看,这两种模型的批量大小都增加了完整精度和混合精度。

下图比较了 BERT 在全精度和半精度下的吞吐量和 P95 延迟。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。 使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。

下图比较了 ResNet95 在全精度和半精度下的吞吐量和 P50 延迟。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。 使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。

吞吐量和延迟与批量大小

下图显示了作为批量大小函数的吞吐量。 在小批量大小时,加速器无法发挥其最大容量,并且随着批量大小的增加,吞吐量会以延迟为代价增加。 吞吐量曲线逐渐接近最大值,该最大值是加速器性能的函数。 该曲线具有两个明显的特征:上升部分和平坦渐近部分。 对于给定的模型,性能加速器 (G5) 能够将上升部分拉伸到比 G4dn 更高的批量大小,并以更高的吞吐量渐近线。 此外,延迟和批量大小之间存在线性权衡。 因此,如果应用程序受延迟限制,我们可以使用 P95 延迟与批量大小来确定最佳批量大小。 但是,如果目标是在最低延迟下最大化吞吐量,最好选择与上升和渐近部分之间的“拐点”相对应的批量大小,因为批量大小的任何进一步增加都会导致相同的吞吐量更糟糕的延迟。 为了实现最佳性价比,以最低延迟为目标,实现更高的吞吐量,最好通过多个推理服务器水平扩展这一最优值,而不是仅仅增加批量大小。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。

成本与批量大小

在本节中,我们展示了推理成本(每百万推理成本)与批量大小的比较结果。 从下图中,我们可以清楚地观察到,G5 与 G4dn(全精度和半精度)的成本(以每百万美元推断)始终较低。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。 使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。

下表总结了 BERT 和 RESNET50 模型在两种精度模式下针对特定批量大小的吞吐量、延迟和成本(每百万次推理)比较。 尽管每个实例的成本更高,但对于所有批量大小,G5 在推理延迟、吞吐量和成本(每百万美元推理)的所有方面都始终优于 G4dn。 将不同的指标组合成成本(每百万次推理的成本),使用 G32 的 BERT 模型(5 批大小,全精度)比 G3.7dn 有利 4 倍,使用 ResNet50 模型(32 批大小,全精度)是 1.6比 G4dn 优惠几倍。

型号 批量大小 平台精度

生产能力

(批量大小 X 请求/秒)

延迟(ms)

美元/百万

推理(按需)

成本效益

(G5 超过 G4dn)

. . . G5 G4DN G5 G4DN G5 G4DN
Bert-base-uncased 32 723 154 44 208 $0.6 $2.2 3.7X
混合 870 410 37 79 $0.5 $0.8 1.6X
16 651 158 25 102 $0.7 $2.1 3.0X
混合 762 376 21 43 $0.6 $0.9 1.5X
8 642 142 13 57 $0.7 $2.3 3.3X
混合 681 350 12 23 $0.7 $1.0 1.4X
. 1 160 116 6 9 $2.8 $2.9 1.0X
混合 137 102 7 10 $3.3 $3.3 1.0X
残差网络50 32 941 397 34 82 $0.5 $0.8 1.6X
混合 1533 851 21 38 $0.3 $0.4 1.3X
16 888 384 18 42 $0.5 $0.9 1.8X
混合 1474 819 11 20 $0.3 $0.4 1.3X
8 805 340 10 24 $0.6 $1.0 1.7X
混合 1419 772 6 10 $0.3 $0.4 1.3X
. 1 202 164 5 6 $2.2 $2 0.9X
混合 196 180 5 6 $2.3 $1.9 0.8X

其他推理基准

除了前面部分中的 BERT 基础和 ResNet50 结果之外,我们还为 PyTorch 中其他常用的大型 NLP 和 CV 模型提供了额外的基准测试结果。 G5 相对于 G4dn 的性能优势已针对各种精度的 BERT Large 模型和各种尺寸的 Yolo-v5 模型进行了展示。 有关复制基准的代码,请参阅 张量核的 NVIDIA 深度学习示例. 这些结果显示了在跨越不同模型类型的广泛推理任务中使用 G5 优于 G4dn 的好处。

型号 平台精度 批量大小 序列长度 吞吐量(发送/秒) 吞吐量:G4dn G4dn 加速
BERT-大 FP16 1 128 93.5 40.31 2.3
BERT-大 FP16 4 128 264.2 87.4 3.0
BERT-大 FP16 8 128 392.1 107.5 3.6
BERT-大 FP32 1 128 68.4 22.67 3.0
BERT-大 4 128 118.5 32.21 3.7
BERT-大 8 128 132.4 34.67 3.8
型号 GFLOPS 参数数量 预处理(毫秒) 推理(毫秒) 推理(非最大抑制)(NMS/图像)
YOLOv5s 16.5 7.2M 0.2 3.6 4.5
YOLOv5m 49.1 21M 0.2 6.5 4.5
YOLOv5l 109.3 46M 0.2 9.1 3.5
YOLOv5x 205.9 86M 0.2 14.4 1.3

结论

在这篇文章中,我们展示了对于大型 NLP 和 CV PyTorch 模型的推理,与 G2dn 实例相比,EC5 G4 实例是更好的选择。 尽管 G5 实例的按需小时成本高于 G4dn 实例,但其更高的性能可以实现 NLP 和 CV 模型在任意精度下的 2-5 倍吞吐量,这使得每百万次推理的成本比 G1.5dn 实例高 3.5-4 倍G5dn 实例。 即使对于延迟受限的应用程序,对于 NLP 和 CV 模型,G2.5 也比 G5dn 好 4-XNUMX 倍。

总之,从性能和每次推理成本的角度来看,AWS G5 实例是满足您推理需求的绝佳选择。 CUDA 框架的普遍性以及 AWS 上 G5 实例池的规模和深度为您提供了大规模执行推理的独特能力。


关于作者

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。安库尔·斯里瓦斯塔瓦(Ankur Srivastava) 是 ML 框架团队的高级解决方案架构师。 他专注于帮助客户在 AWS 上进行大规模的自我管理分布式训练和推理。 他的经验包括工业预测性维护、数字双胞胎、概率设计优化,并完成了莱斯大学机械工程的博士学位和麻省理工学院的博士后研究。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。桑达尔·兰加纳坦 是 Amazon EC2 团队的 ML 框架业务开发主管。 他专注于跨 AWS 服务(例如 Amazon EKS、Amazon ECS、Elastic Fabric Adapter、AWS Batch 和 Amazon SageMaker)的大规模 ML 工作负载。 他的经验包括在 NetApp、Micron Technology、Qualcomm 和 Mentor Graphics 担任产品管理和产品开发方面的领导角色。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。马哈德万巴拉苏布拉马尼亚姆 是自主计算的首席解决方案架构师,在物理注入深度学习、为工业系统大规模构建和部署数字双胞胎领域拥有近 20 年的经验。 Mahadevan 在麻省理工学院获得机械工程博士学位,并拥有超过 25 项专利和出版物。

使用适用于 NLP 和 CV PyTorch 模型 PlatoBlockchain 数据智能的 Amazon EC2 G5 实例,以将每次推理成本降低三倍的方式实现四倍的 ML 推理吞吐量。 垂直搜索。 人工智能。 阿姆拉格布 是 AWS 的 EC2 加速平台的首席解决方案架构师,致力于帮助客户大规模运行计算工作负载。 在业余时间,他喜欢旅行并寻找将技术融入日常生活的新方法。

时间戳记:

更多来自 AWS机器学习