新闻动态

  • 首页
  • 新闻动态
  • 构建良好架构的 IDP 解决方案与自定义视角 第三部分:可靠性 机器学习博客

构建良好架构的 IDP 解决方案与自定义视角 第三部分:可靠性 机器学习博客

2026-01-27 14:31:11

构建卓越的IDP解决方案:可靠性

由 Rui Cardoso Brijesh Pati Mia Chang Suyin Wang Tim Condello 和 Sherry Ding 于 2023 年 11 月 22 日发表于 Amazon SageMaker Amazon Textract AWS WellArchitected

关键要点

在本篇文章中,我们将着重探讨构建可靠的智能文档处理 (IDP) 解决方案的设计原则和最佳实践。我们将从可靠性支柱及设计原则入手,深入探讨解决方案的设计与实施,包括基础设施、变更管理和故障管理三大重点领域。

IDP 的成功实施不仅依托于自动化与设计的可靠性,更要注意优化和管理您的基础设施。通过这一系列的最佳实践,您可以有效识别风险并确保可靠性,提升 IDP 工作负载的整体稳健性。

IDP WellArchitected 自定义镜头针对所有使用 AWS 进行智能文档处理 (IDP) 解决方案的客户,提供了有关如何在 AWS 上构建安全、高效和可靠的 IDP 解决方案的指导。

在云中构建生产就绪的解决方案涉及资源、时间、客户期望与业务结果之间的一系列权衡。AWS WellArchitected Framework 帮助您理解在 AWS 上构建工作负载时所做决策的利弊和风险。借助该框架,您将学习到设计和运营可靠、安全、高效、经济和可持续的工作负载的最佳实践。

IDP 项目通常结合光学字符识别 (OCR) 和自然语言处理 (NLP),以读取和理解文档并提取特定术语或单词。IDP WellArchitected 自定义镜头概述了进行 AWS WellArchitected 评审的步骤,允许您评估并识别 IDP 工作负载的技术风险,为您提供应对常见挑战的指导。

设计原则

可靠性支柱涵盖了 IDP 解决方案在预期情况下根据定义的业务规则正确且一致地执行文档处理的能力。这不仅包含 IDP 工作流的操作和测试能力,还涵盖了其全部生命周期的管理。

以下是提高可靠性的一些原则。请在讨论最佳实践时将其牢记于心:

自动从故障中恢复 通过监测 IDP 工作流的关键性能指标 (KPI),当某个阈值被突破时可以启动自动化流程。这样能够跟踪并自动通知如果发生故障,触发自动恢复措施。根据 KPI 测量,还可以提前预测故障并在故障发生前采取补救措施。测试恢复流程 测试您的 IDP 工作流在故障时的表现,并验证恢复程序的有效性。使用自动化来模拟不同场景或重现之前导致故障的情景。扩展和调整服务容量 监控 IDP 工作流的需求和使用情况,并自动调整 AWS 服务容量,以维持满足需求的最优水平,避免过度或不足的配置。控制并了解 IDP 组件服务的服务配额、限制和约束,例如 Amazon Textract 和 Amazon Comprehend。自动化变更 在对 IDP 工作流基础设施进行变更时,使用自动化来管理变更,以便跟踪和审查。

重点领域

可靠性支柱的设计原则和最佳实践基于我们客户和 IDP 技术专家社区的见解。利用这些指导,支持您的设计决策,并使其符合您 IDP 解决方案的业务要求。应用 IDP WellArchitected 镜头,帮助您验证 IDP 解决方案设计的弹性和效率,并提供建议以解决您可能识别的任何差距。

以下是云中 IDP 解决方案可靠性的最佳实践领域:

构建良好架构的 IDP 解决方案与自定义视角  第三部分:可靠性 机器学习博客基础 AWS AI 服务,例如 Amazon Textract 和 Amazon Comprehend,提供了不同使用维度的一系列软限制和硬限制。重要的是要审查这些限制,并确保您的 IDP 解决方案遵从任何软限制,且不超过硬限制。变更管理 将您的 IDP 解决方案视为基础设施即代码 (IaC),使您能够自动化监控和变更管理。在基础设施和 Amazon Comprehend 自定义模型等组件之间使用版本控制,追踪变更到特定的发布时间点。故障管理 由于 IDP 工作流是事件驱动的解决方案,您的应用必须具备处理已知和未知错误的弹性。设计良好的 IDP 解决方案具备防止故障的能力,并能在故障发生时承受其影响,做到这一点需要使用日志记录和重试机制。必须在 IDP 工作流架构中设计出弹性,并规划灾难恢复方案。

基础

AWS AI 服务提供现成的智能功能,例如使用 Amazon Textract、Amazon Comprehend 和 Amazon Augmented AI (Amazon A2I) 的自动数据提取与分析,为您的 IDP 工作流提供支持。这些服务存在服务限制或配额,以避免过度配置,限制 API 操作的请求率,从而保护服务不被滥用。

设计您的 IDP 解决方案架构时,请考虑以下最佳实践:

注意 Amazon Textract 和 Amazon Comprehend 不可改变的服务配额、限制和约束 接受的文件格式、大小和页数、语言、文件旋转和图像大小等都是 Amazon Textract 的一些硬限制,无法更改。接受的文件格式包括 JPEG、PNG、PDF 和 TIFF 文件。支持 JPEG 2000 编码的 PDF 图片。如果文件格式不受支持例如 Microsoft Word 或 Excel,则在使用 Amazon Textract 前需要进行文档预处理。在这种情况下,您必须将不支持的文档格式转换为 PDF 或图像格式。Amazon Comprehend 对内置模型、自定义模型和飞轮有不同的配额。确保您的用例符合 Amazon Comprehend 的配额。根据需求调整 Amazon Textract 和 Amazon Comprehend 的服务配额 Amazon Textract 服务配额计算器可以帮助您估算覆盖用例的配额值。如果您计划在不同帐户或区域之间进行灾难恢复故障转移,您应管理各帐户或区域之间的服务配额。当请求增加 Amazon Textract 配额时,请确保遵循以下建议:使用 Amazon Textract 服务配额计算器来估算最优配额值。请求变化可能会造成网络流量的波动,影响吞吐量。使用队列无服务器架构或其他机制来平滑流量,以最大化分配的每秒交易数 (TPS)。实施重试逻辑来处理限制调用和断开连接。配置指数退避和抖动以提高吞吐量。

变更管理

您必须提前预见并适应 IDP 工作流或其环境的变更,例如需求激增或文档文件损坏,以实现解决方案的更高可靠性。前面的基础最佳实践涵盖了部分这些变更,但仅靠这些还不足以应对变更。还必须考虑以下最佳实践:

使用 Amazon CloudWatch 监控您的 IDP 工作流组件,如 Amazon Textract 和 Amazon Comprehend。收集 IDP 工作流的指标,自动化响应警报,并根据需要向您的工作流和业务目标发送通知。使用 IaC例如 AWS Cloud Development KitAWS CDK和预构建的 IDP AWS CDK 构件自动化部署您的 IDP 工作流解决方案及所有基础设施变更。这将消除人为错误的潜在引入,并使您能够在更改生产环境之前进行测试。如果您的用例需要 Amazon Comprehend 自定义模型,请考虑使用飞轮来简化随着时间推移改进自定义模型的过程。飞轮协调与训练和评估新自定义模型版本相关的任务。如果您的用例需要,定制 Amazon Textract 预训练查询功能的输出,通过训练和使用适配器以适应 Amazon Textract 基础模型。创建适配器查询时,请考虑以下最佳实践:适配器配额定义了适配器训练的前置限制。当需要时,请考虑这些限制并提出服务配额提高请求:适配器的最大数量 允许的适配器数量可以在单个适配器下拥有多个适配器版本。每月创建的最大适配器版本数量 每个 AWS 账户每月允许创建的成功适配器版本数。最大进行中的适配器版本数 每个账户的进行中适配器版本适配器训练数量。确保使用一组具有代表性的文档作为您的用例至少包含五个训练文档和五个测试文档。提供尽可能多的训练文档最多 2500 页的训练文档和 1000 页的测试文档。使用多样的回答注解查询。例如,当查询的答案为“是”或“否”时,注解样本中应包含“是”和“否”的实例。在注解时保持一致的注解风格,注解字段时要注意空格。使用在训练中使用的确切查询进行推理。在每轮适配器训练后,审查性能指标,以确定是否需要进一步改善适配器以达到目标。在开始新的训练以创建改进版本的适配器之前,上传新的文档集进行训练或审查注解较低准确度分数的文档。对于自定义适配器,使用 AutoUpdate 功能。当启用适配器的 AutoUpdate 标志时,该功能会尝试进行自动重训练。

故障管理

设计 IDP 解决方案时,一个重要的考虑因素是其弹性,处理可能发生的已知和未知错误的能力。该 IDP 解决方案应具备在 IDP 工作流的不同阶段记录错误和重试失败操作的能力。在这一部分中,我们将讨论如何设计您的 IDP 工作流以处理故障。

准备您的 IDP 工作流以管理和承受故障

“所有事物,无时无刻都在失败”,这是 AWS 首席技术官 Werner Vogels 的名言。您的 IDP 解决方案,像其他一切一样,最终会失败。问题是如何在不影响用户体验的情况下,承受故障。您的 IDP 架构设计必须意识到故障的发生,并采取措施避免影响可用性。这个过程必须是自动化的,而且不能对用户产生影响。请考虑以下最佳实践:

使用 Amazon Simple Storage Service (Amazon S3) 作为可扩展的数据存储,用于处理 IDP 工作流文档。Amazon S3 提供一个高耐用性的存储基础设施,专为关键任务和主要数据存储设计。根据您的业务需求备份所有 IDP 工作流数据。实现一个恢复或重建数据的策略,确保在数据丢失的情况下能进行恢复。将此策略与符合您业务需求的恢复点目标 (RPO) 和恢复时间目标 (RTO) 对齐。如有必要,计划和实施跨 AWS 帐户和区域的 IDP 解决方案灾难恢复故障转移策略。使用 Amazon Textract 的 OutputConfig 功能与 Amazon Comprehend 的 OutputDataConfig 功能,将来自 Amazon Textract 或 Amazon Comprehend 的异步处理结果存储到指定的 S3 存储桶中。这样,工作流可以在该点继续,而不是重复调用 Amazon Textract 或 Amazon Comprehend。以下代码展示了如何启动一个 Amazon Textract 异步 API 作业以分析一个文档,并将加密推理输出存储在定义的 S3 存储桶中。有关更多信息,请参阅 Amazon Textract 客户端文档。

pythonimport boto3client = boto3client(textract)

response = clientstartdocumentanalysis( DocumentLocation={ S3Object { Bucket string Name string Version string } } FeatureTypes=[ TABLESFORMSQUERIESSIGNATURESLAYOUT ] OutputConfig={ S3Bucket string S3Prefix string } KMSKeyId=string )

设计您的 IDP 工作流以防止故障

工作负载的可靠性始于前期设计决策。架构选择将影响您工作负载的行为和其弹性。为了提高 IDP 解决方案的可靠性,请遵循以下最佳实践。

首先,遵循 IDP 工作流设计您的架构。尽管 IDP 工作流中的阶段可能存在差异,并受到用例和业务需求的影响,但数据捕获、文档分类、文本提取、内容丰富、审查与验证及消费阶段通常是 IDP 工作流的一部分。这些明确的阶段可以用来分离功能,并在发生故障时进行隔离。

您可以使用 Amazon Simple Queue Service (Amazon SQS) 来解耦 IDP 工作流阶段。解耦模式有助于隔离架构组件的行为与依赖于它的其他组件,从而增加弹性和灵活性。

其次,控制和限制重试调用。如果超出了分配的每秒交易数 (TPS) 最大限制,像 Amazon Textract 这样的 AWS 服务可能会失败,从而导致服务限制您的应用程序或断开连接。

您应该通过自动重试操作包括同步和异步操作来管理节流和断开连接。但是,同样重要的是,您还应指定有限的重试次数,超出后操作将失败并抛出异常。如果您在短时间内对 Amazon Textract 发起过多调用,它将限制您的调用,并在操作响应中发送 ProvisionedThroughputExceededExceptionerror。

此外,使用 指数退避和抖动 对重试进行优化,以提高吞吐量。例如,在使用 Amazon Textract 时,通过在创建 Amazon Textract 客户端时包含 config 参数来指定重试次数。我们建议重试次数设置为五次。在下面的示例代码中,我们使用 config 参数自动重试操作,采用适应模式并最多重试五次:

pythonimport boto3from botocoreclient import Config

documents = [docimg1pngdocimg2png docimg3png docimg4png docimg5png]

config = Config( retries = { maxattempts 5 mode adaptive })

稳定好用的机场推荐

client = boto3client(textract config=config)

for documentName in documents response = clientdetectdocumenttext( DocumentLocation = { S3Object { Bucket string Name documentName } })

借助 AWS SDK如 AWS SDK for Python (Boto3),可以自动重试对 Amazon Textract 和 Amazon Comprehend 等 AWS 服务的客户端调用。共有三种 重试模式

传统模式 对有限数量的错误和异常进行重试,并包括指数退避,基数为 2。标准模式 对重试逻辑和行为进行标准化,与其他 AWS SDK 保持一致,并扩展其在传统模式中的重试功能。任何重试尝试将包括指数退避,基数为 2,最大退避时间为 20 秒。适应模式 包含标准模式的所有功能,并通过使用令牌桶和速率限制变量在客户端引入速率限制。它根据 AWS 服务返回的错误、异常或 HTTP 状态码动态更新这些速率限制变量,为客户端提供具有灵活性的重试能力。每次新的重试尝试,适应模式根据错误或异常状态更新速率限制变量,以计算新的调用速率。所有来自 AWS 服务的异常、错误或非成功的 HTTP 响应在重试期间都更新这些速率限制变量,直到达到成功、令牌桶耗尽或者配置的最大尝试值。

结论

在本篇文章中,我们分享了构建 IDP 解决方案所需的设计原则、重点领域、基础以及可靠性的最佳实践。

如需了解更多关于 IDP WellArchitected 自定义镜头的信息,可参考本系列的其他文章:

构建卓越的 IDP 解决方案:运营卓越[构建卓越的 ID