CCC Intelligent Solutions 如何使用 Amazon SageMaker 创建自定义方法来托管复杂的 AI 模型

CCC Intelligent Solutions 如何使用 Amazon SageMaker 创建自定义方法来托管复杂的 AI 模型

这篇文章由来自 CCC Intelligent Solutions 的 Christopher Diaz、Sam Kinard、Jaime Hidalgo 和 Daniel Suarez 共同撰写。

在这篇文章中,我们讨论如何 CCC智能解决方案 (CCC) 合并 亚马逊SageMaker 与其他 AWS 服务一起创建自定义解决方案,能够托管设想的复杂人工智能 (AI) 模型类型。 CCC 是领先的软件即服务 (SaaS) 平台,面向价值数万亿美元的财产和意外伤害保险经济,为保险公司、维修商、汽车制造商、零件供应商、贷方等提供运营支持。 CCC 云技术连接了 30,000 多家企业,将关键任务工作流、商务和客户体验数字化。 作为人工智能、物联网 (IoT)、客户体验以及网络和工作流管理领域值得信赖的领导者,CCC 提供创新,让人们的生活在最重要的时候向前发展。

挑战

CCC 每年处理超过 1 万亿美元的索赔交易。 随着公司不断发展以将 AI 集成到其现有和新产品目录中,这需要复杂的方法来训练和部署多模式机器学习 (ML) 集成模型来解决复杂的业务需求。 这些是一类模型,封装了 CCC 多年来磨练出来的专有算法和主题领域专业知识。 这些模型应该能够吸收新的细微数据层和客户规则,以创建单一的预测结果。 在这篇博文中,我们将了解 CCC 如何利用 Amazon SageMaker 托管和其他 AWS 服务将多个多模式模型部署或托管到集成推理管道中。

如下图所示,集成是两个或多个模型的集合,这些模型被编排为以线性或非线性方式运行以产生单个预测。 当线性堆叠时,可以直接调用集成的各个模型进行预测,然后合并以进行统一。 有时,集成模型也可以实现为串行推理管道。

对于我们的用例,集成管道是严格非线性的,如下图所示。 非线性集成管道在理论上是直接无环图 (DAG)。 对于我们的用例,此 DAG 管道既有并行运行的独立模型(服务 B、C),也有使用前面步骤的预测的其他模型(服务 D)。

CCC 以研究为导向的文化产生的一种做法是不断审查可用于为客户带来更多价值的技术。 当 CCC 面临这一整体挑战时,领导层启动了一项概念验证 (POC) 计划,以彻底评估 AWS 的产品,以具体发现 Amazon SageMaker 和其他 AWS 工具是否可以管理复杂、非线性环境中单个 AI 模型的托管合奏。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。

合奏解释: 在这种情况下,集成是一组 2 个或更多 AI 模型,它们协同工作以产生一个整体预测。

推动研究的问题

Amazon SageMaker 能否用于托管复杂的 AI 模型集合,这些模型协同工作以提供一个整体预测? 如果是这样,SageMaker 能否提供开箱即用的其他优势,例如更高的自动化程度、可靠性、监控、自动扩展和成本节约措施?

利用云提供商的技术进步寻找部署 CCC AI 模型的替代方法,将使 CCC 能够比竞争对手更快地将 AI 解决方案推向市场。 此外,在基于业务优先级找到成本和性能之间的平衡时,拥有多个部署架构可以提供灵活性。

根据我们的要求,我们最终确定了以下功能列表作为生产级部署架构的清单:

  • 支持复杂的合奏
  • 保证所有组件的正常运行时间
  • 已部署 AI 模型的可定制自动缩放
  • AI模型输入输出保存
  • 所有组件的使用指标和日志
  • 成本节约机制

由于 CCC 的大多数 AI 解决方案都依赖于计算机视觉模型,因此需要一种新的架构来支持分辨率不断提高的图像和视频文件。 强烈需要将此体系结构设计和实现为异步模型。

经过一系列的研究和初始基准测试工作,CCC 确定 SageMaker 非常适合满足他们的大部分生产要求,尤其是 SageMaker 为其大多数推理组件提供的保证正常运行时间。 Amazon SageMaker 异步推理终端节点在 Amazon S3 中保存输入/输出的默认功能简化了保存从复杂集合生成的数据的任务。 此外,由于每个 AI 模型都由自己的端点托管,因此在模型或端点级别管理自动扩展策略变得更加容易。 通过简化管理,潜在的成本节约优势是开发团队可以分配更多时间来微调扩展策略,以最大限度地减少计算资源的过度配置。

在决定继续使用 SageMaker 作为架构的关键组件后,我们还意识到 SageMaker 可以成为更大架构的一部分,并辅以许多其他无服务器 AWS 托管服务。 需要这种选择来促进这种复杂架构的高阶编排和可观察性需求。

首先,为了消除有效负载大小限制并大大降低高流量场景中的超时风险,CCC 实现了一种架构,该架构使用异步运行预测 SageMaker 异步推理端点 结合其他 AWS 托管服务作为核心构建块。 此外,系统的用户界面遵循即发即弃设计模式。 换句话说,一旦用户将他们的输入上传到系统,就不需要再做任何事情了。 当预测可用时,他们将收到通知。 下图说明了我们的异步事件驱动架构的高级概述。 在接下来的部分中,让我们深入研究设计架构的执行流程。

分步解决方案

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。

客户端向 AWS API网关 端点。 请求的内容包含他们需要预测的 AI 服务的名称和所需的通知方法。

这个请求被传递给一个 LAMBDA 函数调用 新的预测, 其主要任务是:

  • 检查客户端请求的服务是否可用。
  • 为请求分配一个唯一的预测 ID。 用户可以使用此预测 ID 在整个过程中检查预测的状态。
  • 生成一个 Amazon S3 用户在下一步上传预测请求的输入内容时需要使用的预签名 URL。
  • 创建一个条目 Amazon DynamoDB 与收到的请求的信息。

然后,Lambda 函数将通过 API 网关端点返回响应,其中包含分配给请求的预测 ID 和 Amazon S3 预签名 URL 的消息。

客户端使用上一步中生成的预签名 URL 将预测输入内容安全地上传到 S3 存储桶。 输入内容取决于 AI 服务,可以由图像、表格数据或两者的组合组成。

S3 存储桶配置为在用户上传输入内容时触发事件。 此通知被发送到 Amazon SQS 队列并由名为 流程输入。 该 流程输入 Lambda 将从 DynamoDB 获取与该预测 ID 相关的信息,以获取要向其发出请求的服务的名称。

该服务可以是单个 AI 模型,在这种情况下 流程输入 Lambda 将向托管该模型的 SageMaker 端点发出请求(步骤 3-A),或者它可以是集成 AI 服务,在这种情况下 流程输入 Lambda 将向托管集成逻辑的步骤函数的状态机发出请求(步骤 3-B)。

在任一选项(单个 AI 模型或集成 AI 服务)中,当最终预测准备就绪时,它将存储在适当的 S3 存储桶中,调用者将通过步骤 1 中指定的方法收到通知(有关通知的更多详细信息,请参见步骤4).

步骤 3-A

如果预测 ID 与单个 AI 模型相关联,则 流程输入 Lambda 将向为模型提供服务的 SageMaker 端点发出请求。 在此系统中,支持两种类型的 SageMaker 端点:

  • 异步:本 流程输入 Lambda 向 SageMaker 异步端点发出请求。 即时响应包括 SageMaker 将保存预测输出的 S3 位置。 此请求是异步的,遵循即发即弃模式,不会阻塞 Lambda 函数的执行流程。
  • 同步:本 流程输入 Lambda 向 SageMaker 同步终端节点发出请求。 由于它是一个同步请求,Process Input 等待响应,一旦获得响应,它就会以 SageMaker 异步端点的类似方式将其存储在 S3 中。

在这两种情况下(同步或异步端点),预测都以等效方式处理,将输出存储在 S3 存储桶中。 当异步 SageMaker 终端节点完成预测时,将触发 Amazon SNS 事件。 对于 Lambda 函数中具有附加逻辑的同步终端节点,也会复制此行为。

步骤 3-B

如果预测 ID 与 AI 集成相关联,则 流程输入 Lambda 将向与该 AI Ensemble 关联的步骤函数发出请求。 如上所述,AI Ensemble 是一种基于一组 AI 模型的架构,这些模型协同工作以生成单个整体预测。 AI 集成的编排是通过阶跃函数完成的。

阶跃函数对包含集成的每个 AI 服务有一个阶跃。 每个步骤都将调用一个 Lambda 函数,该函数将使用先前步骤的先前 AI 服务调用的输出内容的不同组合来准备其相应的 AI 服务的输入。 然后它调用每个 AI 服务,在这种情况下,可以是单个 AI 模型或另一个 AI 集合。

相同的 Lambda 函数,称为 获取转换调用 用于处理 AI Ensemble 的中间预测的函数在整个步骤函数中使用,但每个步骤都有不同的输入参数。 此输入包括要调用的 AI 服务的名称。 它还包括为指定的 AI 服务构造输入的映射定义。 这是使用 Lambda 可以解码的自定义语法完成的,总而言之,它是一个 JSON 字典,其中的值应该替换为之前 AI 预测的内容。 Lambda 将从 Amazon S3 下载这些先前的预测。

在每一步中, 获取转换调用 Lambda 从 Amazon S3 读取构建指定 AI 服务的输入所需的先前输出。 然后它将调用 新预测 先前在步骤 1 中使用的 Lambda 代码,并在请求负载中提供服务名称、回调方法(“步骤函数”)和回调所需的令牌,然后将其保存在 DynamoDB 中作为新的预测记录。 Lambda 还将该阶段创建的输入存储在 S3 存储桶中。 根据该阶段是单个 AI 模型还是 AI 集成,Lambda 向 SageMaker 端点或管理作为父集成依赖项的 AI 集成的不同步骤函数发出请求。

发出请求后,step 函数会进入挂起状态,直到它收到指示它可以进入下一阶段的回调令牌。 发送回调令牌的操作由调用的 Lambda 函数执行 通知 (步骤 4 中有更多详细信息)中间预测准备就绪时。 对阶跃函数中定义的每个阶段重复此过程,直到最终预测准备就绪。

当预测准备就绪并存储在 S3 存储桶中时,将触发 SNS 通知。 可以根据流程以不同方式触发此事件:

  1. 当 SageMaker 异步终端节点完成预测时自动执行。
  2. 作为 step 函数的最后一步。
  3. By 流程输入 or 获取转换调用 同步 SageMaker 端点返回预测时的 Lambda。

对于 B 和 C,我们创建类似于 A 自动发送的 SNS 消息。

一个名为 notifications 的 Lambda 函数订阅了这个 SNS 主题。 通知 Lambda 将从 DynamoDB 获取与预测 ID 相关的信息,将状态值的条目更新为“已完成”或“错误”,并根据保存在数据库记录中的回调模式执行必要的操作。

如果此预测是 AI 集成的中间预测,如步骤 3-B 中所述,则与此预测关联的回调模式将是“阶跃函数”,并且数据库记录将具有与特定步骤关联的回调标记步函数。 通知 Lambda 将使用“SendTaskSuccess”或“SendTaskFailure”方法调用 AWS Step Functions API。 这将允许 step 函数继续下一步或退出。

如果预测是 step 函数的最终输出,回调方式是“Webhook”[或电子邮件、消息代理(Kafka)等],那么通知 Lambda 将以指定的方式通知客户端。 在任何时候,用户都可以请求他们预测的状态。 请求必须包含在步骤 1 中分配的预测 ID,并指向 API 网关中的正确 URL,以将请求路由到调用的 Lambda 函数 结果.

结果 Lambda 将向 DynamoDB 发出请求,获取请求的状态并将信息返回给用户。 如果预测的状态是 错误,然后有关失败的相关详细信息将包含在响应中。 如果预测状态是 成功, 将返回一个 S3 预签名 URL 供用户下载预测内容。

结果

初步的性能测试结果很有希望,支持 CCC 扩展这种新部署架构的实施。

值得注意的观察:

  • 测试揭示了在高流量场景中以高吞吐量和 0% 故障率处理批处理或并发请求的能力。
  • 消息队列在请求突然涌入期间在系统内提供稳定性,直到扩展触发器可以提供额外的计算资源。 当流量增加 3 倍时,平均请求延迟仅增加了 5%。
  • 由于各种系统组件之间的通信开销,稳定性的代价是延迟增加。 当用户流量高于基准阈值时,如果性能比成本更重要,则可以通过提供更多计算资源来部分缓解增加的延迟。
  • SageMaker 的异步推理端点允许将实例计数缩放为零,同时保持端点处于活动状态以接收请求。 此功能使部署能够在不产生计算成本的情况下继续运行,并在两种情况下需要时从零扩展:在较低测试环境中使用的服务部署和那些具有最小流量而不需要立即处理的服务部署。

结论

正如在 POC 过程中观察到的那样,由 CCC 和 AWS 共同创建的创新设计为使用 Amazon SageMaker 和其他 AWS 托管服务来有效无缝地托管复杂的多模式 AI 集成和编排推理管道提供了坚实的基础。 通过利用 Amazon SageMaker 的开箱即用功能(如异步推理),CCC 有更多机会专注于专业的关键业务任务。 本着 CCC 研究驱动型文化的精神,随着 CCC 与 AWS 一起引领前进的道路,这种新颖的架构将继续发展,为客户释放强大的新人工智能解决方案。

有关如何创建、调用和监控异步推理端点的详细步骤,请参阅 文件,其中还包含一个 样本笔记本 帮助您入门。 有关定价信息,请访问 Amazon SageMaker定价.

有关使用计算机视觉和自然语言处理 (NLP) 等非结构化数据进行异步推理的示例,请参阅 使用 Amazon SageMaker 异步终端节点对大型视频运行计算机视觉推理 和 使用 Hugging Face 和 Amazon SageMaker 异步推理终端节点改进高价值研究


作者简介

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。克里斯托弗·迪亚兹(Christopher Diaz) 是 CCC Intelligent Solutions 的首席研发工程师。 作为研发团队的一员,他参与了各种项目,包括 ETL 工具、后端 Web 开发、与研究人员合作在分布式系统上训练 AI 模型,以及促进研究和运营团队之间新 AI 服务的交付。 他最近的重点是研究云工具解决方案,以增强公司 AI 模型开发生命周期的各个方面。 在业余时间,他喜欢在他的家乡芝加哥尝试新餐厅,并收集尽可能多的乐高积木套装。 Christopher 在东北伊利诺伊大学获得了计算机科学学士学位。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。艾美奖获奖者 山姆·金纳德 是 CCC Intelligent Solutions 的软件工程高级经理。 他居住在得克萨斯州奥斯汀,与 AI Runtime Team 争论不休,该团队负责以高可用性和大规模方式为 CCC 的 AI 产品提供服务。 在业余时间,Sam 喜欢被剥夺睡眠,因为他有两个可爱的孩子。 Sam 拥有德克萨斯大学奥斯汀分校的计算机科学学士学位和数学学士学位。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。海梅·伊达尔戈 是 CCC Intelligent Solutions 的高级系统工程师。 在加入 AI 研究团队之前,他领导了公司向微服务架构的全球迁移,设计、构建和自动化 AWS 中的基础设施,以支持云产品和服务的部署。 目前,他构建并支持为 AI 培训构建的本地数据中心集群,并为公司未来的 AI 研究和部署设计和构建云解决方案。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。丹尼尔·苏亚雷斯 是 CCC Intelligent Solutions 的数据科学工程师。 作为 AI 工程团队的成员,他致力于 AI 模型在指标的生产、评估和监控以及 ML 操作的其他方面的自动化和准备工作。 Daniel 在伊利诺伊理工学院获得计算机科学硕士学位,在马德里理工大学获得电信工程硕士和学士学位。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。阿伦普拉萨特·香卡(Arunprasath Shankar) 是 AWS 的高级 AI/ML 专家解决方案架构师,帮助全球客户在云中有效且高效地扩展其 AI 解决方案。 业余时间,阿伦喜欢看科幻电影和听古典音乐。

CCC 智能解决方案如何使用 Amazon SageMaker PlatoBlockchain 数据智能创建自定义方法来托管复杂的 AI 模型。 垂直搜索。 人工智能。贾斯汀·麦克沃特 是 AWS 的解决方案架构师经理。 他与一支由出色的解决方案架构师组成的团队合作,帮助客户在采用 AWS 平台的同时获得积极的体验。 不工作时,贾斯汀喜欢和他的两个儿子一起玩电子游戏、打冰球和开着他的吉普车越野。

时间戳记:

更多来自 AWS机器学习