亚马逊SageMaker 多模型端点 (MME) 是 SageMaker 推理的完全托管功能,允许您在单个端点上部署数千个模型。此前,MME 预先确定静态地将 CPU 计算能力分配给模型,而不管模型流量负载如何,使用 多模型服务器 (MMS) 作为其模型服务器。在这篇文章中,我们讨论了一种解决方案,其中 MME 可以根据模型的流量模式动态调整分配给每个模型的计算能力。该解决方案使您能够更高效地使用MME的底层计算并节省成本。
MME 根据端点的传入流量动态加载和卸载模型。当使用MMS作为模型服务器时,MME为每个模型分配固定数量的模型工作者。欲了解更多信息,请参阅 Amazon SageMaker 中的模型托管模式,第 3 部分:使用 Amazon SageMaker 多模型终端节点运行和优化多模型推理.
但是,当您的流量模式发生变化时,这可能会导致一些问题。假设您有一个或几个模型接收大量流量。您可以配置 MMS 为这些模型分配大量工作人员,但这会分配给 MME 后面的所有模型,因为它是静态配置。这导致大量工作人员使用硬件计算——甚至是闲置模型。如果您为工作人员数量设置较小的值,则可能会出现相反的问题。流行的模型在模型服务器级别没有足够的工作人员来为这些模型的端点后面正确分配足够的硬件。主要问题是,如果您无法在模型服务器级别动态扩展工作线程以分配必要的计算量,则很难保持流量模式不可知。
我们在这篇文章中讨论的解决方案使用 DJL服务 作为模型服务器,它可以帮助缓解我们讨论的一些问题,并实现每个模型的扩展,并使 MME 能够与流量模式无关。
移动管理实体架构
SageMaker MME 使您能够在可能包含一个或多个实例的单个推理端点后面部署多个模型。每个实例都设计为加载和服务多个模型,最多可达其内存和 CPU/GPU 容量。借助此架构,软件即服务 (SaaS) 业务可以打破托管多个模型的线性增长成本,并实现与应用程序堆栈中其他地方应用的多租户模型一致的基础设施重用。下图说明了这种架构。
SageMaker MME 动态加载模型 亚马逊简单存储服务 (Amazon S3) 调用时,而不是在首次创建终端节点时下载所有模型。因此,对模型的初始调用可能会比以低延迟完成的后续推理出现更高的推理延迟。如果模型在调用时已加载到容器上,则将跳过下载步骤,并且模型会以低延迟返回推理。例如,假设您有一个每天仅使用几次的模型。它会根据需要自动加载,而频繁访问的模型则保留在内存中并以始终如一的低延迟进行调用。
每个MME背后都是模型托管实例,如下图所示。这些实例根据模型的流量模式在内存中加载和移出多个模型。
SageMaker 继续将模型的推理请求路由到已加载模型的实例,以便从缓存的模型副本提供请求(请参见下图,该图显示了第一个预测请求与缓存的预测的请求路径)请求路径)。但是,如果模型收到许多调用请求,并且 MME 有其他实例,SageMaker 会将一些请求路由到另一个实例以适应增加的情况。要利用 SageMaker 中的自动模型扩展,请确保您拥有 实例自动缩放设置 提供额外的实例容量。 使用自定义参数或每分钟调用次数(推荐)设置您的终端节点级扩展策略,以向终端节点队列添加更多实例。
模型服务器概述
模型服务器是一个软件组件,为部署和服务机器学习 (ML) 模型提供运行时环境。它充当经过训练的模型和想要使用这些模型进行预测的客户端应用程序之间的接口。
模型服务器的主要目的是允许将 ML 模型轻松集成并高效部署到生产系统中。模型服务器不是将模型直接嵌入到应用程序或特定框架中,而是提供一个集中式平台,可以在其中部署、管理和服务多个模型。
模型服务器通常提供以下功能:
- 模型加载 – 服务器将经过训练的 ML 模型加载到内存中,使它们准备好提供预测。
- 推理API – 服务器公开一个 API,允许客户端应用程序发送输入数据并从已部署的模型接收预测。
- 缩放 – 模型服务器旨在处理来自多个客户端的并发请求。它们提供并行处理和有效管理资源的机制,以确保高吞吐量和低延迟。
- 与后端引擎集成 – 模型服务器与 DeepSpeed 和 FasterTransformer 等后端框架集成,以对大型模型进行分区并运行高度优化的推理。
DJL架构
DJL服务 是一个开源、高性能、通用模型服务器。 DJL Serving 构建于 Djl,一个用 Java 编程语言编写的深度学习库。它可以采用深度学习模型、多个模型或工作流程,并通过 HTTP 端点提供它们。 DJL Serving 支持从多个框架部署模型,例如 PyTorch、TensorFlow、Apache MXNet、ONNX、TensorRT、Hugging Face Transformers、DeepSpeed、FasterTransformer 等。
DJL Serving 提供了许多功能,可让您以高性能部署模型:
- 使用方便 – DJL Serving 可以开箱即用地为大多数模型提供服务。只需带来模型工件,DJL Serving 就可以托管它们。
- 多设备和加速器支持 – DJL Serving 支持在 CPU、GPU 和 AWS 推理.
- 性能 – DJL Serving 在单个 JVM 中运行多线程推理以提高吞吐量。
- 动态批处理 – DJL Serving 支持动态批处理以提高吞吐量。
- 自动缩放 – DJL Serving 将根据流量负载自动调整工作人员规模。
- 多引擎支持 – DJL Serving 可以同时托管使用不同框架(例如 PyTorch 和 TensorFlow)的模型。
- 集成和工作流程模型 – DJL Serving 支持部署由多个模型组成的复杂工作流程,并在 CPU 上运行部分工作流程,在 GPU 上运行部分工作流程。工作流中的模型可以使用不同的框架。
特别是,DJL Serving 的自动缩放功能可以轻松确保模型针对传入流量进行适当缩放。默认情况下,DJL Serving 根据可用硬件(CPU 核心、GPU 设备)确定模型可支持的最大工作线程数。您可以为每个模型设置下限和上限,以确保始终能够提供最低流量级别,并且单个模型不会消耗所有可用资源。
DJL 服务使用 网状 前端位于后端工作线程池之上。前端使用单个 Netty 设置和多个 HttpRequestHandlers。不同的请求处理程序将提供支持 推理API, 管理接口,或可从各种插件获得的其他 API。
后端基于 工作负载管理器 (WLM)模块。 WLM 负责每个模型的多个工作线程以及批处理和请求路由到它们。当服务多个模型时,WLM 首先检查每个模型的推理请求队列大小。如果队列大小大于模型批量大小的两倍,WLM 会增加分配给该模型的工作线程数量。
解决方案概述
使用 MME 实现 DJL 与默认 MMS 设置不同。对于使用 MME 进行 DJL 服务,我们将以下文件压缩为 SageMaker Inference 期望的 model.tar.gz 格式:
- 模型.joblib – 对于此实现,我们直接将模型元数据推送到 tarball 中。在这种情况下,我们正在与
.joblib
文件,因此我们在 tarball 中提供该文件以供推理脚本读取。如果工件太大,您还可以将其推送到 Amazon S3 并指向您为 DJL 定义的服务配置中的工件。 - 服务.properties – 在这里您可以配置任何与服务器相关的模型 环境变量。 DJL 的强大之处在于您可以配置
minWorkers
和maxWorkers
对于每个模型 tarball。这允许每个模型在模型服务器级别上扩展和缩小。例如,如果单个模型正在接收 MME 的大部分流量,则模型服务器将动态扩展工作线程。在此示例中,我们不配置这些变量,而是让 DJL 根据我们的流量模式确定必要的工作人员数量。 - 模型.py – 这是您想要实现的任何自定义预处理或后处理的推理脚本。 model.py 期望您的逻辑默认封装在句柄方法中。
- 要求.txt(可选) – 默认情况下,DJL 随 PyTorch 一起安装,但您需要的任何其他依赖项都可以推送到此处。
在此示例中,我们通过 SKLearn 模型示例展示了 DJL 与 MME 的强大功能。我们使用该模型运行训练作业,然后创建该模型工件的 1,000 个副本来支持我们的 MME。然后,我们展示 DJL 如何动态扩展以处理 MME 可能收到的任何类型的流量模式。这可以包括在所有模型上均匀分配流量,甚至在一些接收大部分流量的流行模型上进行均匀分配。您可以在下面找到所有代码 GitHub回购.
先决条件
在此示例中,我们使用带有 conda_python3 内核和 ml.c5.xlarge 实例的 SageMaker 笔记本实例。要执行负载测试,您可以使用 亚马逊弹性计算云 (Amazon EC2) 实例或更大的 SageMaker 笔记本实例。在此示例中,我们扩展到每秒超过一千个事务 (TPS),因此我们建议在较重的 EC2 实例(例如 ml.c5.18xlarge)上进行测试,以便您有更多的计算资源可供使用。
创建模型工件
我们首先需要创建我们在本示例中使用的模型工件和数据。对于这种情况,我们使用 NumPy 生成一些人工数据,并使用 SKLearn 线性回归模型进行训练,代码片段如下:
运行前面的代码后,您应该有一个 model.joblib
在您的本地环境中创建的文件。
拉取 DJL Docker 镜像
Docker 镜像 djl-inference:0.23.0-cpu-full-v1.0 是本示例中使用的 DJL 服务容器。您可以根据您所在的区域调整以下 URL:
inference_image_uri = "474422712127.dkr.ecr.us-east-1.amazonaws.com/djl-serving-cpu:latest"
或者,您还可以使用此映像作为基础映像并对其进行扩展以在其上构建您自己的 Docker 映像 Amazon Elastic Container注册 (Amazon ECR) 以及您需要的任何其他依赖项。
创建模型文件
首先,我们创建一个名为 serving.properties
。这指示 DJLServing 使用 Python 引擎。我们还定义了 max_idle_time
一个工人的时间为 600 秒。这确保我们需要更长的时间来减少每个模型的工作人员数量。我们不调整 minWorkers
和 maxWorkers
我们可以定义它,并让 DJL 根据每个模型接收的流量动态计算所需的工作人员数量。 serving.properties 如下所示。要查看配置选项的完整列表,请参阅 引擎配置.
接下来,我们创建 model.py 文件,它定义模型加载和推理逻辑。对于 MME,每个 model.py 文件都特定于一个模型。模型存储在模型存储下的自己的路径中(通常是 /opt/ml/model/
)。加载模型时,会加载到自己目录下的模型存储路径下。此演示中的完整 model.py 示例可以在 GitHub回购.
我们创建一个 model.tar.gz
包含我们模型的文件(model.joblib
), model.py
及 serving.properties
:
出于演示目的,我们制作了 1,000 份相同的副本 model.tar.gz
文件来表示要托管的大量模型。在生产中,您需要创建一个 model.tar.gz
每个模型的文件。
最后,我们将这些模型上传到 Amazon S3。
创建 SageMaker 模型
我们现在创建一个 SageMaker 模型。我们使用之前定义的 ECR 图像和上一步中的模型工件来创建 SageMaker 模型。在模型设置中,我们将Mode配置为MultiModel。这告诉 DJLServing 我们正在创建一个 MME。
创建 SageMaker 端点
在此演示中,我们使用 20 ml.c5d.18xlarge 实例来扩展到数千范围内的 TPS。如有必要,请确保提高您的实例类型的限制,以实现您的目标 TPS。
负载测试
在撰写本文时,SageMaker 内部负载测试工具 Amazon SageMaker 推理推荐器 本身不支持 MME 测试。因此,我们使用开源的Python工具 刺槐。 Locust 设置起来很简单,并且可以跟踪 TPS 和端到端延迟等指标。如需全面了解如何使用 SageMaker 进行设置,请参阅 负载测试 Amazon SageMaker 实时推理终端节点的最佳实践.
在此用例中,我们想要使用 MME 模拟三种不同的流量模式,因此我们有以下三个与每种模式相符的 Python 脚本。我们的目标是证明,无论我们的流量模式是什么,我们都可以实现相同的目标 TPS 并适当扩展。
我们可以在 Locust 脚本中指定权重,以在模型的不同部分分配流量。例如,对于我们的单一热模型,我们实现了两种方法,如下所示:
然后,我们可以为每个方法分配一定的权重,即某个方法收到特定百分比的流量时:
对于 20 ml.c5d.18xlarge 实例,我们在 亚马逊CloudWatch 安慰。这些值在所有三种流量模式中保持相当一致。要更好地了解 SageMaker 实时推理和 MME 的 CloudWatch 指标,请参阅 SageMaker 端点调用指标.
您可以在以下位置找到其余的 Locust 脚本 locust-utils 目录 在 GitHub 存储库中。
总结
在这篇文章中,我们讨论了 MME 如何根据模型的流量模式动态调整分配给每个模型的计算能力。这项新推出的功能已在所有提供 SageMaker 的 AWS 区域推出。请注意,在发布时,仅支持 CPU 实例。要了解更多信息,请参阅 支持的算法、框架和实例.
作者简介
拉姆·维吉拉茹 是 SageMaker 服务团队的 ML 架构师。 他专注于帮助客户在 Amazon SageMaker 上构建和优化他们的 AI/ML 解决方案。 在业余时间,他喜欢旅行和写作。
李庆伟 是Amazon Web Services的机器学习专家。 他获得了博士学位。 在他打破了顾问的研究补助金帐户并未能兑现他所承诺的诺贝尔奖之后,他便在运筹学获得博士学位。 目前,他帮助金融服务和保险行业的客户在AWS上构建机器学习解决方案。 在业余时间,他喜欢阅读和教学。
詹姆斯吴 是 AWS 的高级 AI/ML 专家解决方案架构师。 帮助客户设计和构建 AI/ML 解决方案。 James 的工作涵盖了广泛的 ML 用例,主要兴趣在于计算机视觉、深度学习和在整个企业中扩展 ML。 在加入 AWS 之前,James 担任了 10 多年的架构师、开发人员和技术领导者,其中包括 6 年的工程经验和 4 年的营销和广告行业经验。
索拉布·特里坎德 是 Amazon SageMaker Inference 的高级产品经理。 他热衷于与客户合作,并以机器学习民主化的目标为动力。 他专注于与部署复杂的 ML 应用程序、多租户 ML 模型、成本优化以及使深度学习模型的部署更易于访问相关的核心挑战。 在业余时间,Saurabh 喜欢徒步旅行、学习创新技术、关注 TechCrunch 以及与家人共度时光。
徐登 是 SageMaker 团队的软件工程师经理。他专注于帮助客户在 Amazon SageMaker 上构建和优化他们的 AI/ML 推理体验。业余时间,他喜欢旅行和滑雪。
悉达多文卡特桑 是 AWS 深度学习的软件工程师。 他目前专注于构建大型模型推理的解决方案。 在加入 AWS 之前,他曾在 Amazon Grocery 组织工作,为全球客户构建新的支付功能。 工作之余,他喜欢滑雪、户外活动和观看体育赛事。
罗希·纳拉马迪 是 AWS 的一名软件开发工程师。 他致力于优化 GPU 上的深度学习工作负载,构建高性能 ML 推理和服务解决方案。 在此之前,他致力于为 Amazon F3 业务构建基于 AWS 的微服务。 工作之余,他喜欢玩耍和观看体育比赛。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/run-ml-inference-on-unplanned-and-spiky-traffic-using-amazon-sagemaker-multi-model-endpoints/
- :是
- :在哪里
- $UP
- 000
- 1
- 10
- 100
- 116
- 118
- 12
- 16
- 17
- 20
- 23
- 31
- 600
- 7
- 9
- a
- 关于
- 加速器
- 访问
- 无障碍
- 容纳
- 账号管理
- 横过
- 行为
- 加
- 额外
- 优点
- 广告
- 后
- AI / ML
- 算法
- 对齐
- 所有类型
- 分配
- 分配
- 让
- 允许
- 沿
- 已经
- 还
- 时刻
- Amazon
- Amazon EC2
- 亚马逊SageMaker
- 亚马逊网络服务
- 量
- an
- 和
- 公告
- 另一个
- 任何
- 阿帕奇
- API
- APIs
- 应用领域
- 应用领域
- 应用的
- 适当
- 架构
- 保健
- 围绕
- 人造的
- AS
- 分配
- 承担
- At
- 汽车
- 自动化
- 自动
- 可使用
- AWS
- 背部
- 后端
- 基地
- 基于
- 配料
- BE
- 因为
- 背后
- 更好
- 之间
- 身体
- 促进
- 界限
- 盒子
- 午休
- 带来
- 布罗克
- 建立
- 建筑物
- 建
- 商业
- 但是
- by
- 被称为
- CAN
- 能力
- 容量
- 关心
- 案件
- 例
- 细胞
- 集中
- 一定
- 挑战
- 支票
- 程
- 客户
- 客户
- 码
- 购买的订单均
- 完成
- 完成
- 复杂
- 元件
- 包含
- 计算
- 一台
- 计算机视觉
- 计算
- 计算能力
- 并发
- 配置
- 一贯
- 始终如一
- 安慰
- 消耗
- 包含
- 容器
- 上下文
- 继续
- 核心
- 价格
- 成本
- 盖
- 创建信息图
- 创建
- 创造
- 目前
- 习俗
- 合作伙伴
- data
- 天
- 深
- 深入学习
- 默认
- 定义
- 定义
- 定义
- 交付
- 需求
- 演示
- 民主化
- 依赖
- 根据
- 描绘
- 部署
- 部署
- 部署
- 部署
- 设计
- 设计
- 确定
- 确定
- 开发商
- 研发支持
- 设备
- 设备
- 图表
- 不同
- 难
- 直接
- 目录
- 讨论
- 讨论
- 分配
- 码头工人
- 不会
- 别
- 向下
- 下载
- 下载
- 动态
- 动态
- 每
- 此前
- 高效
- 有效
- 毫不费力
- 或
- 别处
- 嵌入
- enable
- 使
- 封装
- 端至端
- 端点
- 发动机
- 工程师
- 工程师
- 更多
- 确保
- 企业
- 环境
- 错误
- 甚至
- 例子
- 例外
- 期待
- 预计
- 体验
- 延长
- 面部彩妆
- 失败
- 相当
- 家庭
- 专栏
- 特征
- 少数
- 文件
- 档
- 金融
- 金融服务
- 找到最适合您的地方
- (名字)
- 固定
- 舰队
- 重点
- 以下
- 如下
- 针对
- 格式
- 骨架
- 框架
- 频繁
- 止
- 前端
- ,
- 充分
- 功能
- 生成
- 得到
- 得到
- GitHub上
- 目标
- GPU
- 图形处理器
- 授予
- 更大的
- 处理
- 发生
- 硬件
- 有
- he
- 帮助
- 帮助
- 帮助
- 相关信息
- 高
- 更高
- 高度
- 他的
- 主持人
- 托管
- 托管
- 热卖
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 空闲
- if
- 说明
- 图片
- 实施
- 履行
- 进口
- in
- 包括
- 包括
- 包含
- 来电
- 增加
- 增加
- 行业
- 行业中的应用:
- 信息
- 基础设施
- 初始
- 创新
- 创新技术
- 输入
- 安装
- 例
- 代替
- 保险
- 积分
- 集成
- 兴趣
- 接口
- 成
- 调用
- 问题
- 问题
- IT
- 它的
- 詹姆斯
- 爪哇岛
- 工作
- 加盟
- JPG
- 只是
- 语言
- 大
- 大
- 潜伏
- 最新
- 推出
- 铅
- 领导者
- 信息
- 学习用品
- 学习
- 让
- Level
- 自学资料库
- 喜欢
- 喜欢
- 极限
- 线性
- 清单
- 加载
- 装载
- 负载
- 本地
- 逻辑
- 不再
- 爱
- 低
- 降低
- 机
- 机器学习
- 主要
- 多数
- 使
- 制作
- 制作
- 管理
- 经理
- 管理的
- 许多
- 营销
- 市场营销与广告
- 最多
- 可能..
- 机制
- 内存
- 元数据
- 方法
- 方法
- 指标
- 微服务
- 可能
- 最低限度
- 分钟
- 减轻
- ML
- 时尚
- 模型
- 模型
- 模块
- 更多
- 最先进的
- 动机
- 多
- 姓名
- 本地
- 必要
- 需求
- 打印车票
- 全新
- 新
- 诺贝尔奖
- 不包含
- 注意
- 笔记本
- 现在
- 数
- 麻木
- of
- 提供
- 优惠精选
- on
- 一
- 仅由
- 打开
- 开放源码
- 运营
- 相反
- 优化
- 优化
- 优化
- 追求项目的积极优化
- 附加选项
- or
- 其他名称
- 我们的
- 输出
- 户外活动
- 产量
- 学校以外
- 超过
- 己
- 并行
- 参数
- 部分
- 特别
- 部分
- 多情
- 径
- 路径
- 模式
- 模式
- 付款
- 为
- 百分比
- 演出
- 性能
- 管
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 插件
- 点
- 政策
- 矿池
- 热门
- 帖子
- 功率
- 做法
- 前
- 预测
- 预测
- 以前
- 先前
- 小学
- 先
- 奖金
- 市场问题
- 过程
- 处理
- 产品
- 产品经理
- 生产
- 代码编程
- 许诺
- 正确
- 证明
- 提供
- 提供
- 规定
- 目的
- 目的
- 推
- 蟒蛇
- pytorch
- 随机
- 范围
- 阅读
- 阅读
- 准备
- 实时的
- 接收
- 收到
- 接收
- 接收
- 建议
- 参考
- 而不管
- 地区
- 地区
- 有关
- 留
- 更换
- 知识库
- 代表
- 请求
- 要求
- 岗位要求
- 研究
- 资源
- 响应
- REST的
- 导致
- 回报
- 重用
- 路线
- 路线
- 路由
- 运行
- 运行
- 运行
- SaaS的
- sagemaker
- SageMaker 推理
- 同
- 样品
- 保存
- 对工资盗窃
- 鳞片
- 缩放
- 秤
- 缩放
- 脚本
- 脚本
- 其次
- 秒
- 看到
- 看到
- 自
- 提交
- 前辈
- 服务
- 已服务
- 服务器
- 服务器
- 服务
- 特色服务
- 服务
- 集
- 套数
- 格局
- 几个
- 应该
- 展示
- 如图
- 作品
- 简易
- 模拟
- 同时
- 单
- 单数
- 尺寸
- 小
- 片段
- So
- 软件
- 软件作为一种服务
- 软件开发
- 软件工程师
- 方案,
- 解决方案
- 一些
- 来源
- 专家
- 具体的
- 花费
- 分裂
- 运动
- 堆
- 静止
- 步
- 存储
- 商店
- 存储
- 简单的
- 随后
- 这样
- 建议
- SUPPORT
- 支持
- 支持
- 肯定
- 产品
- 采取
- 需要
- 服用
- 目标
- 瞄准
- 教诲
- 团队
- TechCrunch
- 技术
- 专业技术
- 告诉
- tensorflow
- 测试
- 测试
- 比
- 这
- 其
- 他们
- 然后
- 那里。
- 因此
- 博曼
- 他们
- Free Introduction
- 那些
- 千
- 数千
- 三
- 通过
- 吞吐量
- 次
- 时
- 至
- 也有
- 工具
- 最佳
- 向
- TPS
- 跟踪时
- 交通
- 培训
- 熟练
- 产品培训
- 交易
- 变形金刚
- 旅游
- 尝试
- 二
- 类型
- 一般
- 下
- 相关
- 理解
- 理解
- 普遍
- 网址
- 使用
- 用例
- 用过的
- 使用
- 运用
- 平时
- 利用
- 折扣值
- 价值观
- 变量
- 各个
- 愿景
- vs
- 想
- 是
- 观看
- we
- 卷筒纸
- Web服务
- 重量
- 什么是
- ,尤其是
- 而
- 这
- 宽
- 大范围
- 将
- 中
- 工作
- 工作
- 工人
- 工人
- 工作流程
- 工作流程
- 加工
- 合作
- 将
- 写作
- 书面
- X
- 年
- 完全
- 您一站式解决方案
- 和风网