隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

介绍 Amazon SageMaker 无服务器推理基准测试工具包

Amazon SageMaker 无服务器推理 是一个专门构建的推理选项,可让您轻松部署和扩展机器学习 (ML) 模型。它提供按使用付费的模型,对于端点调用不频繁且不可预测的服务来说是理想的选择。与由长期运行的实例支持的实时托管端点不同,无服务器端点的计算资源是按需配置的,从而无需选择实例类型或管理扩展策略。

以下高级架构说明了无服务器端点的工作原理。客户端调用由 AWS 托管基础设施支持的端点。

然而,无服务器端点很容易发生秒级的冷启动,因此更适合间歇性或不可预测的工作负载。

为了帮助确定无服务器端点从成本和性能的角度来看是否是正确的部署选项,我们开发了 SageMaker 无服务器推理基准测试工具包,它测试不同的端点配置,并将最佳配置与可比较的实时托管实例进行比较。

在这篇文章中,我们介绍该工具包并概述其配置和输出。

解决方案概述

您可以从以下位置下载该工具包并进行安装 GitHub回购。入门很简单:只需安装库,创建一个 SageMaker 模型,并提供模型的名称以及 JSON 行格式的文件,其中包含一组示例调用参数,包括负载正文和内容类型。提供了一个便利函数,用于将示例调用参数列表转换为 JSON 行文件或二进制负载(例如图像、视频或音频)的 pickle 文件。

安装工具包

首先使用 pip 将基准测试库安装到您的 Python 环境中:

pip install sm-serverless-benchmarking

您可以从运行以下代码 亚马逊SageMaker Studio 实例 SageMaker笔记本实例,或任何带有 程序化访问 AWS 和适当的 AWS身份和访问管理 (IAM) 权限。必要的 IAM 权限记录在 GitHub回购。有关 IAM 的其他指南和示例策略,请参阅 Amazon SageMaker如何与IAM配合使用。此代码在模型上使用一组默认参数运行基准测试,该模型需要包含两个示例记录的 CSV 输入。提供一组代表性示例来分析端点在不同输入负载下的执行情况是一个很好的做法。

from sm_serverless_benchmarking import benchmark
from sm_serverless_benchmarking.utils import convert_invoke_args_to_jsonl
model_name = ""
example_invoke_args = [
        {'Body': '1,2,3,4,5', "ContentType": "text/csv"},
        {'Body': '6,7,8,9,10', "ContentType": "text/csv"}
        ]
example_args_file = convert_invoke_args_to_jsonl(example_invoke_args,
output_path=".")
r = benchmark.run_serverless_benchmarks(model_name, example_args_file)

此外,您可以将基准测试作为 SageMaker 处理作业运行,这对于具有大量调用的长期运行基准测试来说可能是更可靠的选择。请看下面的代码:

from sm_serverless_benchmarking.sagemaker_runner import run_as_sagemaker_job
run_as_sagemaker_job(
                    role="",
                    model_name="",
                    invoke_args_examples_file="",
                    )

请注意,这将导致在基准测试期间运行 ml.m5.large SageMaker Processing 实例产生额外成本。

这两种方法都接受许多要配置的参数,例如要进行基准测试的内存配置列表以及每个配置将被调用的次数。在大多数情况下,默认选项应该足以作为起点,但请参阅 GitHub回购 有关每个参数的完整列表和说明。

基准测试配置

在深入研究基准测试的作用及其产生的输出之前,了解配置无服务器端点时的一些关键概念非常重要。

这里有 两个关键配置选项: MemorySizeInMBMaxConcurrency. MemorySizeInMB 配置分配给实例的内存量,可以是 1024 MB、2048 MB、3072 MB、4096 MB、5120 MB 或 6144 MB。 vCPU 的数量也与分配的内存量成比例。这 MaxConcurrency 参数调整端点能够服务的并发请求数。与一个 MaxConcurrency 1,无服务器端点一次只能处理一个请求。

总结一下, MemorySizeInMB 参数提供了一种垂直可扩展性的机制,允许您调整内存和计算资源以服务于更大的模型,而 MaxConcurrency 提供水平可扩展性的机制,允许您的端点处理更多并发请求。

操作端点的成本很大程度上取决于内存大小,并且增加最大并发数没有相关成本。但是,每个区域帐户对所有端点的最大并发数有限制。参考 SageMaker 端点和配额 了解最新限制。

基准测试输出

鉴于此,对无服务器端点进行基准测试的目标是确定最具成本效益和最可靠的内存大小设置,以及可以处理预期流量模式的最小最大并发数。

默认情况下,该工具运行两个基准测试。第一个是稳定性基准测试,它为每个指定的内存配置部署一个端点,并使用提供的示例有效负载调用每个端点。此基准测试的目标是确定最有效且最稳定的 MemorySizeInMB 设置。该基准测试捕获调用延迟并计算每个端点的预期每次调用成本。然后,它将成本与类似的实时托管实例进行比较。

基准测试完成后,该工具会在指定的范围内生成多个输出 result_save_path 具有以下目录结构的目录:

├── benchmarking_report
├── concurrency_benchmark_raw_results
├── concurrency_benchmark_summary_results
├── cost_analysis_summary_results
├── stability_benchmark_raw_results
├── stability_benchmark_summary_results

benchmarking_report 目录包含一份综合报告,其中包含我们在本文中概述的所有摘要输出。其他目录包含可用于其他分析的原始输出和中间输出。请参阅 GitHub回购 有关每个输出工件的更详细描述。

让我们检查一下为计算机视觉 MobileNetV2 TensorFlow 模型提供服务的端点的一些实际基准测试输出。如果您想重现此示例,请参阅 示例笔记本 GitHub 存储库中的目录。

综合报告中的第一个输出是一个汇总表,其中提供了每个延迟的最小、平均、中等和最大延迟指标。 MemorySizeInMB 内存大小配置成功。如下表所示,平均调用延迟(invocation_latency_mean)随着内存配置增加到 3072 MB,继续改进,但此后停止改进。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

除了高级描述性统计数据之外,还提供了一个图表,显示从客户端观察到的每种内存配置的延迟分布。同样,我们可以观察到 1024 MB 配置的性能不如其他选项,但 2048 及以上配置的性能没有显着差异。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

亚马逊CloudWatch 还提供了与每个端点配置相关的指标。这里的一个关键指标是 ModelSetupTime,它测量在冷状态下调用端点时加载模型所花费的时间。当端点在热状态下启动时,该指标可能并不总是出现在报告中。 A cold_start_delay 参数可用于指定在已部署端点上启动基准测试之前休眠的秒数。将此参数设置为更高的数字(例如 600 秒)应该会增加冷状态调用的可能性,并提高捕获此指标的机会。此外,这个指标更有可能通过并发调用基准来捕获,我们将在本节后面讨论。

下表显示了 CloudWatch 为每个内存配置捕获的指标。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

下图显示了不同内存配置的性能和成本权衡。其中一行显示调用端点 1 万次的估计成本,另一行显示平均响应延迟。这些指标可以帮助您决定哪种端点配置最具成本效益。在此示例中,我们看到平均延迟在 2048 MB 之后趋于平稳,而成本继续增加,这表明对于该模型,2048 的内存大小配置将是最佳的。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

成本和稳定性基准测试的最终输出是建议的内存配置,以及一个将无服务器端点与类似 SageMaker 托管实例的运行成本进行比较的表格。根据收集的数据,该工具确定 2048 MB 配置是该模型的最佳配置。尽管 3072 配置提供了大约 10 毫秒的延迟,但成本却增加了 30%,从每 4.55 万个请求 5.95 美元增加到 1 美元。此外,输出显示,当每月调用请求少于 88.72 万个时,无服务器端点相对于同类实时托管实例可节省高达 1%,并且在 8.5 万个请求后与实时端点实现收支平衡。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

第二种类型的基准测试是可选的,测试各种 MaxConcurency 不同流量模式下的设置。该基准测试通常使用最佳运行 MemorySizeInMB 来自稳定性基准的配置。该基准测试的两个关键参数是 MaxConcurency 要测试的设置以及客户端乘数列表,这决定了端点测试所使用的模拟并发客户端的数量。

例如,通过设置 concurrency_benchmark_max_conc parameter 到 [4, 8] 和 concurrency_num_clients_multiplier 到 [1, 1.5, 2],启动两个端点:一个带有 MaxConcurency 4 个和另一个 8 个。然后用 (MaxConcurency x 乘数)模拟并发客户端的数量,对于并发度为 4 的端点来说,这会转换为具有 4、6 和 8 个并发客户端的负载测试基准。

该基准测试的第一个输出是一个表格,显示与每个相关的延迟指标、限制异常和每秒事务数指标 (TPS) MaxConcurrency 配置不同数量的并发客户端。这些指标有助于确定适当的 MaxConcurrency 设置来处理预期的流量负载。在下表中,我们可以看到配置最大并发数为 8 的端点能够处理最多 16 个并发客户端,在平均每秒 2,500 个事务的 24 次调用中仅出现两次限制异常。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

下一组输出为每个输出提供了一个图表 MaxConcurrency 设置显示不同负载下的延迟分布。在此示例中,我们可以看到带有 MaxConcurrency 设置为 4 能够成功处理最多 8 个并发客户端的所有请求,并且调用延迟的增加最小。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

最终输出提供了一个表,其中包含每个的 CloudWatch 指标 MaxConcurrency 配置。与上一个显示每个内存配置的延迟分布的表不同,它可能并不总是显示冷启动 ModelSetupTime 指标,由于调用请求数量较多且 MaxConcurrency.

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。

结论

在这篇文章中,我们介绍了 SageMaker 无服务器推理基准测试工具包,并概述了其配置和输出。该工具可以通过使用实际流量模式对不同配置进行负载测试,帮助您就无服务器推理做出更明智的决策。使用您自己的模型尝试基准测试工具包,亲自了解通过部署无服务器端点可以获得的性能和成本节省。请参阅 GitHub回购 如需其他文档和示例笔记本。

额外的资源


关于作者

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。西蒙·扎马林 是一位AI / ML解决方案架构师,其主要重点是帮助客户从其数据资产中提取价值。 在业余时间,Simon喜欢与家人共度时光,阅读科幻小说,并从事各种DIY房屋项目。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。达瓦尔·帕特尔 是 AWS 的首席机器学习架构师。 他曾与从大型企业到中型初创公司的组织合作,解决与分布式计算和人工智能相关的问题。 他专注于深度学习,包括 NLP 和计算机视觉领域。 他帮助客户在 SageMaker 上实现高性能模型推理。

隆重推出 Amazon SageMaker 无服务器推理基准测试工具包 PlatoBlockchain 数据智能。 垂直搜索。 人工智能。里沙布·雷·乔杜里 是 Amazon SageMaker 的高级产品经理,专注于机器学习推理。他热衷于为 AWS 上的机器学习客户创新和构建新体验,以帮助扩展他们的工作负载。业余时间,他喜欢旅行和烹饪。你可以在以下位置找到他 LinkedIn.

时间戳记:

更多来自 AWS机器学习