Costruisci soluzioni IDP ben strutturate con una lente personalizzata – Parte 3 Affidabilità

Creare soluzioni IDP ben strutturate con una lente personalizzata - Parte 3 L'affidabilità

L’IDP Well-Architected Custom Lens è destinato a tutti i clienti AWS che utilizzano AWS per eseguire soluzioni di elaborazione di documenti intelligenti (IDP) e sono alla ricerca di orientamenti su come costruire una soluzione IDP sicura, efficiente e affidabile su AWS.

La creazione di una soluzione pronta per la produzione nel cloud comporta una serie di compromessi tra risorse, tempo, aspettative del cliente e risultati aziendali. Il AWS Well-Architected Framework ti aiuta a comprendere i benefici e i rischi delle decisioni che prendi durante la creazione di carichi di lavoro su AWS. Utilizzando il Framework, imparerai le migliori pratiche operative e architetturali per progettare e gestire carichi di lavoro affidabili, sicuri, efficienti, a costo contenuto e sostenibili nel cloud.

Un progetto IDP combina di solito il riconoscimento ottico dei caratteri (OCR) e l’elaborazione del linguaggio naturale (NLP) per leggere e comprendere un documento ed estrarre termini o parole specifici. L’IDP Well-Architected Custom Lens illustra i passaggi per eseguire una revisione Well-Architected AWS che consente di valutare e individuare i rischi tecnici dei tuoi carichi di lavoro IDP. Fornisce indicazioni per affrontare le sfide comuni che osserviamo nel settore, supportandoti nella progettazione dei tuoi carichi di lavoro IDP secondo le migliori pratiche.

Questo post si concentra sul pilastro Affidabilità della soluzione IDP. Partendo dall’introduzione del pilastro Affidabilità e dei principi di progettazione, approfondiamo poi il design e l’implementazione della soluzione con tre aree di focus: fondamenta, gestione dei cambiamenti e gestione dei guasti. Leggendo questo post, imparerai a conoscere il pilastro Affidabilità nel Well-Architected Framework con il caso di studio IDP.

Principi di progettazione

Il pilastro dell’affidabilità comprende la capacità di una soluzione IDP di elaborare correttamente e in modo coerente i documenti quando previsto e secondo le regole di business definite. Questo include la capacità di operare e testare l’intero flusso di lavoro IDP e il suo ciclo di vita completo.

Esistono alcuni principi che possono aiutarti a aumentare l’affidabilità. Tienili a mente mentre discutiamo delle migliori pratiche:

  • Ripristinare automaticamente in caso di guasto – Monitorando il flusso di lavoro IDP per gli indicatori chiave delle prestazioni (KPI), è possibile eseguire automazioni quando viene superata una soglia. Ciò consente di tenere traccia e essere notificati automaticamente in caso di guasto e di attivare processi di ripristino automatizzati che aggirano o riparano il guasto. Sulla base delle misure di KPI, è anche possibile prevedere i guasti e applicare azioni di correzione prima che si verifichino.
  • Testare le procedure di ripristino – Provare come il flusso di lavoro IDP fallisce e convalidare le procedure di ripristino. Utilizzare l’automazione per simulare diversi scenari o ricreare scenari che hanno portato a un guasto in precedenza.
  • Scala e regola la capacità del servizio – Monitora la domanda e l’utilizzo del flusso di lavoro IDP e regola automaticamente la capacità del servizio AWS per mantenere il livello ottimale per soddisfare la domanda, senza sovra- o sottoprovvisionamento. Controlla e tieni conto dei limiti del servizio, dei limiti e dei vincoli dei componenti del tuo IDP, come Amazon Textract e Amazon Comprehend.
  • Automatizzare i cambiamenti – Utilizzare l’automazione durante l’applicazione di cambiamenti all’infrastruttura del flusso di lavoro IDP. Gestisci i cambiamenti tramite l’automazione, che può poi essere tracciata e revisionata.

Aree di focus

I principi di progettazione e le migliori pratiche del pilastro dell’affidabilità sono basati su informazioni raccolte dai nostri clienti e dalle nostre comunità di specialisti tecnici IDP. Utilizzali come orientamento e supporto per le tue decisioni di progettazione e allineali con i requisiti aziendali della tua soluzione IDP. L’applicazione delle lenti IDP Well-Architected ti aiuta a convalidare la resilienza e l’efficienza del tuo design di soluzione IDP e fornisce raccomandazioni per affrontare eventuali lacune che potresti identificare.

Le seguenti sono le aree delle migliori pratiche per l’affidabilità di una soluzione IDP nel cloud:

  • Fondamenta – I servizi AI di AWS come Amazon Textract e Amazon Comprehend forniscono un insieme di limiti soft e hard per diverse dimensioni di utilizzo. È importante esaminare questi limiti e assicurarsi che la soluzione IDP rispetti eventuali limiti soft, senza superare eventuali limiti hard.
  • Gestione dei cambiamenti – Tratta la tua soluzione IDP come infrastruttura come codice (IaC), permettendoti di automatizzare il monitoraggio e la gestione dei cambiamenti. Utilizza il controllo della versione tra componenti come infrastruttura e modelli personalizzati di Amazon Comprehend e traccia i cambiamenti fino al rilascio di un determinato momento.
  • Gestione dei guasti – Poiché un flusso di lavoro IDP è una soluzione basata sugli eventi, la tua applicazione deve essere resiliente nel gestire errori noti e sconosciuti. Una soluzione IDP ben progettata ha la capacità di prevenire i guasti e resistere ai guasti quando si verificano, utilizzando il logging e i meccanismi di riprova. È importante progettare la resilienza nell’architettura del flusso di lavoro IDP e pianificare il ripristino in caso di disastro.

Fondazioni

I servizi AI di AWS forniscono intelligenza preconfezionata, come l’estrazione e l’analisi automatica dei dati, utilizzando Amazon Textract, Amazon Comprehend e Amazon Aumented AI (Amazon A2I), per i tuoi flussi di lavoro IDP. Ci sono limiti di servizio (o quota) per questi servizi per evitare sovradimensionamenti e limitare i tassi di richiesta sulle operazioni API, proteggendo i servizi dagli abusi.

Quando pianifichi e progetti l’architettura della tua soluzione IDP, considera le seguenti best practice:

  • Essere consapevoli delle quote, dei limiti e dei vincoli immutabili dei servizi Amazon Textract e Amazon Comprehend – I formati di file accettati, la dimensione e il numero di pagine, le lingue, le rotazioni dei documenti e la dimensione dell’immagine sono alcuni esempi di questi limiti rigidi per Amazon Textract che non possono essere modificati.
    • I formati di file accettati includono JPEG, PNG, PDF e file TIFF. (Sono supportate le immagini codificate in JPEG 2000 all’interno dei PDF). È necessaria la preelaborazione del documento prima di utilizzare Amazon Textract se il formato del file non è supportato (ad esempio, Microsoft Word o Excel). In questo caso, è necessario convertire i formati di documenti non supportati in PDF o in formato immagine.
    • Amazon Comprehend ha quote diverse per i modelli predefiniti, i modelli personalizzati e i volani. Assicurati che il tuo caso d’uso sia in linea con le quote di Amazon Comprehend.
  • Modifica le quote dei servizi Amazon Textract e Amazon Comprehend per soddisfare le tue esigenze – Il calcolatore di quote del servizio Amazon Textract può aiutarti a stimare i valori delle quote che copriranno il tuo caso d’uso. Dovresti gestire le tue quote di servizio tra account o regioni se stai pianificando un ripristino di emergenza tra account o regioni per la tua soluzione. Quando richiedi un aumento delle quote di Amazon Textract, assicurati di seguire queste raccomandazioni:
    • Utilizza il calcolatore di quote del servizio Amazon Textract per stimare il valore ottimale delle quote.
    • Le modifiche alle richieste possono causare trafico di rete instabile, influenzando la velocità di trasmissione. Utilizza un’architettura serverless basata su code o un altro meccanismo per regolarizzare il traffico e ottenere il massimo dalle transazioni al secondo (TPS) allocate.
    • Implementa la logica di ritentativi per gestire chiamate soggette a limitazioni e connessioni interrotte.
    • Configura il backoff esponenziale e il jitter per migliorare la velocità di trasmissione.

Gestione del cambiamento

Le modifiche al tuo flusso di lavoro IDP o al suo ambiente, come picchi di domanda o un file di documento corrotto, devono essere anticipate e gestite per garantire una maggiore affidabilità della soluzione. Alcune di queste modifiche sono coperte dalle best practice delle fondazioni descritte nella sezione precedente, ma da sole non sono sufficienti ad adattarsi ai cambiamenti. Vanno considerate anche le seguenti best practice:

  • Utilizza Amazon CloudWatch per monitorare i componenti del tuo flusso di lavoro IDP, come Amazon Textract e Amazon Comprehend. Raccogli metriche dal flusso di lavoro IDP, automatizza le risposte agli allarmi e invia notifiche secondo le necessità del tuo flusso di lavoro e degli obiettivi aziendali.
  • Implementa la soluzione del flusso di lavoro IDP e tutti i cambiamenti infrastrutturali con l’automazione utilizzando IaC, come l’AWS Cloud Development Kit (AWS CDK) e le costruzioni IDP AWS CDK predefinite. Questo elimina il potenziale di introdurre errori umani e ti consente di testare prima di apportare modifiche all’ambiente di produzione.
  • Se il tuo caso d’uso richiede un modello personalizzato di Amazon Comprehend, considera l’utilizzo di un volano per semplificare il processo di miglioramento del modello personalizzato nel tempo. Un volano orchestra le attività associate all’addestramento e alla valutazione di una nuova versione del modello personalizzato.
  • Se il tuo caso d’uso lo richiede, personalizza l’output della funzionalità di query predefinita di Amazon Textract addestrando e utilizzando un adattatore per il modello di base di Amazon Textract. Considera le seguenti best practice durante la creazione di query per i tuoi adattatori:
    • Le quote degli adattatori definiscono i limiti precedenti per l’addestramento degli adattatori. Considera questi limiti e fai richiesta di aumento della quota di servizio, se necessario:
      • Numero massimo di adattatori – Numero di adattatori consentiti (puoi avere più versioni di adattatori sotto un singolo adattatore).
      • Numero massimo di versioni di adattatori create al mese – Numero di versioni di adattatori riuscite che possono essere create per account AWS al mese.
      • Numero massimo di versioni di adattatori in corso – Numero di versioni di adattatori in corso (addestramento dell’adattatore) per account.
    • Assicurati di utilizzare un insieme di documenti rappresentativi del tuo caso d’uso (almeno cinque documenti di addestramento e cinque documenti di test).
    • Fornisci il maggior numero possibile di documenti per l’addestramento (fino a 2.500 pagine di documenti di addestramento e 1.000 per documenti di test).
    • Annota le query utilizzando una varietà di risposte. Ad esempio, se la risposta a una query è “Sì” o “No”, i campioni annotati dovrebbero avere occorrenze sia di “Sì” che di “No”.
    • Mantieni la coerenza nello stile di annotazione e durante l’annotazione dei campi con spazi.
    • Utilizza la query esatta utilizzata nell’addestramento per l’inferenza.
    • Dopo ogni ciclo di addestramento degli adattatori, esamina le metriche delle prestazioni per determinare se è necessario migliorare ulteriormente il tuo adattatore per raggiungere i tuoi obiettivi. Carica un nuovo set di documenti per l’addestramento o rivedi le annotazioni dei documenti con punteggi di accuratezza bassi prima di avviare un nuovo addestramento per creare una versione migliorata dell’adattatore.
    • Utilizza la funzionalità AutoUpdate per gli adattatori personalizzati. Questa funzione tenta il riallenamento automatico se il flag AutoUpdate è abilitato su un adattatore.

Gestione dei fallimenti

Nella progettazione di una soluzione IDP, un aspetto importante da considerare è la sua resilienza, ovvero come gestire gli errori noti e sconosciuti che possono verificarsi. La soluzione IDP dovrebbe avere le capacità di registrare gli errori e ripetere le operazioni fallite durante le diverse fasi del flusso di lavoro IDP. In questa sezione, discutiamo i dettagli su come progettare il flusso di lavoro IDP per gestire i fallimenti.

Prepara il tuo flusso di lavoro IDP per gestire e resistere ai fallimenti

“Tutto fallisce, sempre,” è una famosa citazione del CTO di AWS Werner Vogels. La tua soluzione IDP, come tutto il resto, alla fine fallirà. La domanda è come può resistere ai fallimenti senza influenzare gli utenti della soluzione IDP. Il design dell’architettura IDP deve essere consapevole dei fallimenti che si verificano e intraprendere azioni per evitare impatti sulla disponibilità. Ciò deve essere fatto automaticamente e senza impatti per l’utente. Considera le seguenti best practice:

  • Utilizza Amazon Simple Storage Service (Amazon S3) come il tuo repository di dati scalabile per i documenti di flusso di lavoro IDP da elaborare. Amazon S3 fornisce un’infrastruttura di archiviazione altamente affidabile progettata per l’archiviazione dei dati critici per le missioni.
  • Esegui il backup di tutti i dati del tuo flusso di lavoro IDP in base alle esigenze della tua attività. Implementa una strategia per recuperare o riprodurre i dati in caso di perdita. Allinea questa strategia con un obiettivo di punto di ripristino (RPO) e un obiettivo di tempo di ripristino (RTO) definiti che soddisfino le esigenze della tua attività.
  • Se necessario, pianifica e implementa una strategia di ripristino di emergenza per il tuo IDP in più account e regioni AWS.
  • Utilizza la funzionalità OutputConfig di Amazon Textract e la funzionalità OutputDataConfig di Amazon Comprehend per archiviare i risultati dell’elaborazione asincrona da parte di Amazon Textract o Amazon Comprehend in un bucket S3 designato. Ciò consente al flusso di lavoro di continuare da quel punto anziché ripetere l’invocazione di Amazon Textract o Amazon Comprehend. Il codice seguente mostra come avviare un lavoro API asincrono di Amazon Textract per analizzare un documento e archiviare l’output dell’inferenza crittografato in un bucket S3 definito. Per ulteriori informazioni, consulta la documentazione del client di Amazon Textract.
import boto3client = boto3.client('textract')response = client.start_document_analysis(    DocumentLocation={        'S3Object': {            'Bucket': 'string',            'Name': 'string',            'Version': 'string'        }    },    FeatureTypes=[        'TABLES'|'FORMS'|'QUERIES'|'SIGNATURES'|'LAYOUT',    ],    …    OutputConfig={        'S3Bucket': 'string',        'S3Prefix': 'string'    },    KMSKeyId='string'    …)

Progetta il tuo flusso di lavoro IDP per evitare i fallimenti

La affidabilità di un carico di lavoro inizia con le decisioni di progettazione iniziali. Le scelte architetturali influenzeranno il comportamento del tuo carico di lavoro e la sua resilienza. Per migliorare l’affidabilità della tua soluzione IDP, segui queste best practice.

Innanzitutto, progetta la tua architettura seguendo il flusso di lavoro IDP. Anche se le fasi in un flusso di lavoro IDP possono variare e essere influenzate dal caso d’uso e dai requisiti aziendali, le fasi di acquisizione dati, classificazione documenti, estrazione testo, arricchimento contenuti, revisione e convalida e consumo sono tipicamente parti del flusso di lavoro IDP. Queste fasi ben definite possono essere utilizzate per separare le funzionalità e isolare in caso di fallimento.

Puoi utilizzare Amazon Simple Queue Service (Amazon SQS) per decouplare le fasi del flusso di lavoro IDP. Un modello di decoupling aiuta ad isolare il comportamento dei componenti dell’architettura dagli altri componenti che dipendono da essi, aumentando resilienza e agilità.

In secondo luogo, controlla e limita le chiamate di ripetizione. I servizi AWS come Amazon Textract possono fallire se il numero massimo di TPS assegnato viene superato, causando il rallentamento della tua applicazione o la caduta della connessione.

Dovresti gestire il rallentamento e la caduta delle connessioni ripetendo automaticamente l’operazione (sia operazioni sincrone che asincrone). Tuttavia, dovresti anche specificare un numero limitato di ritentativi, dopo i quali l’operazione fallisce e genera un’eccezione. Se effettui troppe chiamate a Amazon Textract in breve tempo, il servizio rallenta le tue chiamate e invia un ProvisionedThroughputExceededException nella risposta dell’operazione.

Inoltre, utilizzare il backoff esponenziale e il jitter per i ripetuti per migliorare il throughput. Ad esempio, utilizzando Amazon Textract, specificare il numero di ripetizioni includendo il parametro config quando si crea il client Amazon Textract. Consigliamo un conteggio di ripetizioni di cinque. Nell’esempio di codice seguente, utilizziamo il parametro config per ripetere automaticamente un’operazione utilizzando la modalità adattiva e un massimo di cinque ripetizioni:

import boto3from botocore.client import Configdocuments = ['doc-img-1.png','doc-img-2.png', 'doc-img-3.png',             'doc-img-4.png', 'doc-img-5.png']config = Config(    retries = {        'max_attempts': 5,        'mode': 'adaptive'        })client = boto3.client('textract', config=config)for documentName in documents:    response = client.detect_document_text(        DocumentLocation = {            'S3Object': {                'Bucket': 'string',                'Name': documentName                }                })        ...

Sfrutta le SDK di AWS, come l’SDK di AWS per Python (Boto3), per assistere nella ripetizione delle chiamate al client ai servizi AWS come Amazon Textract e Amazon Comprehend. Ci sono tre modalità di ripetizione disponibili:

  • Modalità legacy – Ripete le chiamate per un numero limitato di errori ed eccezioni e include un backoff esponenziale con un fattore di base pari a 2.
  • Modalità standard – Standardizza la logica di ripetizione e il comportamento coerentemente con altre SDK di AWS e estende la funzionalità delle ripetizioni rispetto a quella della modalità legacy. Ogni tentativo di ripetizione includerà un backoff esponenziale con un fattore di base pari a 2 per un massimo di 20 secondi.
  • Modalità adattiva – Include tutte le caratteristiche della modalità standard e introduce un limite di velocità lato client attraverso l’uso di un token bucket e variabili di limite di velocità che vengono aggiornate dinamicamente con ogni tentativo di ripetizione. Offre flessibilità nelle ripetizioni lato client che si adattano allo stato di errore o eccezione risposta da un servizio AWS. Con ogni nuovo tentativo di ripetizione, la modalità adattiva modifica le variabili di limite di velocità in base all’errore, all’eccezione o al codice di stato HTTP presente nella risposta del servizio AWS. Queste variabili di limite di velocità vengono quindi utilizzate per calcolare una nuova velocità di chiamata per il client. Ogni eccezione, errore o risposta HTTP non riuscita da un servizio AWS aggiorna le variabili di limite di velocità durante le ripetizioni fino a quando non si raggiunge un successo, il token bucket è esaurito o viene raggiunto il valore massimo di tentativi configurato. Esempi di eccezioni, errori o risposte HTTP non riuscite:
# Errori/eccezioni transitoriRequestTimeoutRequestTimeoutExceptionPriorRequestNotCompleteConnectionErrorHTTPClientError# Errori e eccezioni di throttle/limite lato servizioThrottlingThrottlingExceptionThrottledExceptionRequestThrottledExceptionTooManyRequestsExceptionProvisionedThroughputExceededExceptionTransactionInProgressExceptionRequestLimitExceededBandwidthLimitExceededLimitExceededExceptionRequestThrottledSlowDownEC2ThrottledException# Tentativi di ripetizione per codici di errore transitori non descrittivi. In particolare, questi codici di stato HTTP: 500, 502, 503, 504.

Conclusioni

In questo post, abbiamo condiviso principi di progettazione, aree di focus, fondamenti e migliori pratiche per l’affidabilità nella soluzione IDP.

Per saperne di più sulla lente personalizzata Well-Architected IDP, esplora i seguenti post di questa serie:

AWS si impegna a mantenere la lente IDP Well-Architected come uno strumento in continua evoluzione. Con l’evolversi delle soluzioni IDP e dei servizi AI correlati di AWS, aggiorneremo di conseguenza la lente IDP Well-Architected.

Se desideri saperne di più sul Framework Well-Architected di AWS, consulta AWS Well-Architected.

Se hai bisogno di ulteriori consulenze specializzate, contatta il tuo team di account AWS per impegnare un Solutions Architect specializzato in IDP.