Cоздание надежных IDP решений с помощью кастомной линзы – Часть 3 Надежность

Надежное создание IDP решений с применением индивидуальных линз - Часть 3 Обеспечение надёжности

«IDP Well-Architected Custom Lens» предназначен для всех клиентов AWS, которые используют AWS для запуска решений по обработке интеллектуальных документов (IDP) и ищут руководство по созданию безопасного, эффективного и надежного решения по IDP на платформе AWS.

Создание проекта, готового к внедрению в облаке, повлекло за собой ряд компромиссов между ресурсами, временем, ожиданиями клиента и бизнес-результатами. Рамка AWS Well-Architected Framework поможет вам понять преимущества и риски принимаемых решений при создании рабочих нагрузок на AWS. Используя эту рамку, вы узнаете о лучших операционных и архитектурных практиках проектирования и эксплуатации надежных, безопасных, эффективных, экономически эффективных и устойчивых рабочих нагрузок в облаке.

Проект IDP обычно объединяет технологии оптического распознавания символов (OCR) и обработки естественного языка (NLP) для чтения и понимания документа и извлечения определенных терминов или слов. IDP Well-Architected Custom Lens описывает шаги для выполнения обзора AWS Well-Architected, позволяющие оценить и идентифицировать технические риски ваших рабочих нагрузок по IDP. Он предоставляет руководство по решению общих проблем, с которыми мы сталкиваемся в данной области, помогая вам проектировать ваши рабочие нагрузки по IDP согласно передовым практикам.

В этой статье рассматривается основа надежности решения IDP. Вначале мы рассмотрим основные принципы надежности и принципы проектирования, а затем подробно изучим проектирование решения и его реализацию по трем ключевым аспектам: фундаменты, управление изменениями и управление сбоями. Читая эту статью, вы узнаете о столпе надежности в рамках Well-Architected Framework на примере IDP.

Принципы проектирования

Столп надежности включает в себя способность решения IDP правильно и последовательно обрабатывать документы в соответствии с определенными бизнес-правилами. Это включает способность работать и тестировать полный рабочий процесс IDP и его жизненный цикл.

Есть несколько принципов, которые могут помочь вам повысить надежность. Их нужно иметь в виду при обсуждении передовых практик:

  • Автоматическое восстановление после сбоя – Мониторинг рабочего процесса IDP для ключевых показателей производительности позволяет запускать автоматизацию при превышении порогового значения. Это позволяет отслеживать и автоматически получать уведомления о сбоях и запускать процессы автоматического восстановления, которые обходят сбоя или восстанавливают его. Исходя из показателей KPI, также можно предвидеть сбои и применять меры решения проблем до их возникновения.
  • Тестирование процедур восстановления – Тестируйте, как ваш рабочий процесс IDP выходит из строя, и проверяйте процедуры восстановления. Используйте автоматизацию для симуляции различных сценариев или воссоздания сценариев, которые приводили к сбою ранее.
  • Масштабирование и настройка мощности службы – Мониторинг спроса и использования рабочего процесса IDP и автоматическое настройка мощности служб AWS позволяют поддерживать оптимальный уровень для удовлетворения спроса без пере- или недообеспечения. Контролируйте и поймите квоты, ограничения и ограничения служб компонентов IDP, таких как Amazon Textract и Amazon Comprehend.
  • Автоматизация изменений – Используйте автоматизацию при внесении изменений в инфраструктуру вашего рабочего процесса IDP. Управляйте изменениями с помощью автоматизации, которая может быть отслеживаема и рассмотрена.

Главные аспекты

Принципы проектирования и передовые практики столпа надежности основаны на опыте наших клиентов и наших специалистов по IDP. Используйте их как руководство и поддержку для ваших проектных решений и согласуйте их с бизнес-требованиями вашего IDP-решения. Применение IDP Well-Architected Lens поможет вам подтвердить устойчивость и эффективность вашего проекта IDP и предоставит рекомендации по устранению выявленных проблем.

Ниже представлены основные области передовых практик для надежности решения IDP в облаке:

  • Основы – Сервисы искусственного интеллекта AWS, такие как Amazon Textract и Amazon Comprehend, устанавливают набор мягких и жестких ограничений для разных аспектов использования. Важно проверить эти ограничения и обеспечить выполнение мягких ограничений вашего решения IDP, не превышая жесткие ограничения.
  • Управление изменениями – Рассматривайте ваше IDP-решение как инфраструктуру в виде кода (IaC), что позволяет автоматизировать мониторинг и управление изменениями. Используйте систему контроля версий для компонентов, таких как инфраструктура и пользовательские модели Amazon Comprehend, и отслеживайте изменения до точки выпуска во времени.
  • Управление сбоями – Поскольку рабочий процесс IDP является событийно-ориентированным решением, ваше приложение должно быть устойчивым к обработке известных и неизвестных ошибок. Хорошо спроектированное решение IDP обладает способностью предотвращать сбои и противостоять сбоям при их возникновении с помощью ведения журнала и механизмов повторной попытки. Важно внедрить устойчивость в архитектуру вашего рабочего процесса IDP и предусмотреть план восстановления после катастрофы.

Фундаменты

Сервисы искусственного интеллекта AWS предоставляют готовый интеллект, такой как автоматизированное извлечение и анализ данных с использованием Amazon Textract, Amazon Comprehend и Amazon Augmented AI (Amazon A2I) для рабочих процессов вашего IDP. Для этих сервисов существуют ограничения (или квоты), чтобы избежать чрезмерного увеличения мощности и ограничить скорость запросов на операции API, защищая сервисы от злоупотребления.

При планировании и проектировании архитектуры вашего IDP решения учитывайте следующие bewst практики:

  • Ознакомьтесь с неизменными ограничениями, квотами и ограничениями сервисов Amazon Textract и Amazon Comprehend – Примерами таких жестких ограничений для Amazon Textract, которые невозможно изменить, являются принимаемые форматы файлов, размер и количество страниц, языки, поворот документа и размер изображения.
    • Принимаемые форматы файлов включают JPEG, PNG, PDF и TIFF файлы. (Поддерживаются изображения, закодированные в формате JPEG 2000 внутри PDF). Перед использованием Amazon Textract требуется предварительная обработка документа, если формат файла не поддерживается (например, Microsoft Word или Excel). В этом случае вы должны преобразовать не поддерживаемые форматы документов в формат PDF или изображений.
    • Amazon Comprehend имеет разные квоты для встроенных моделей, пользовательских моделей и “флайхвил”. Убедитесь, что ваш случай использования согласуется с квотами Amazon Comprehend.
  • Настройте квоты сервисов Amazon Textract и Amazon Comprehend, чтобы удовлетворить ваши потребности – Калькулятор квот сервиса Amazon Textract может помочь вам оценить значения квот, которые будут покрывать ваш случай использования. Вы должны управлять квотами сервиса по всем учетным записям и регионам, если планируете аварийное восстановление с переключением между аккаунтами или регионами для вашего решения. При запросе увеличения квот Amazon Textract убедитесь, что следуете этим рекомендациям:
    • Используйте калькулятор квот сервиса Amazon Textract для определения оптимального значения квоты.
    • Изменения в запросах могут вызвать резкий рост сетевого трафика, что повлияет на пропускную способность. Используйте такую архитектуру безсерверной обработки или другой механизм для сглаживания трафика и получения максимальной отдачи от выделенных транзакций в секунду (TPS).
    • Реализуйте логику повторного вызова для обработки ограниченных вызовов и потерянных соединений.
    • Настройте экспоненциальную задержку и дрожание, чтобы улучшить пропускную способность.

Управление изменениями

Изменения в вашем рабочем процессе IDP или его окружении, такие как резкий рост спроса или поврежденный файл документа, необходимо предвидеть и учесть для достижения большей надежности решения. Некоторые из этих изменений описаны в рекомендациях по фундаментам, описанным в предыдущем разделе, но эти рекомендации недостаточны для адаптации к изменениям. Также следует учитывать следующие bewst практики:

  • Используйте Amazon CloudWatch для мониторинга компонентов вашего рабочего процесса IDP, таких как Amazon Textract и Amazon Comprehend. Собирайте метрики с рабочего процесса IDP, автоматизируйте реагирование на тревоги и отправляйте уведомления, как требуется для ваших целей рабочего процесса и бизнеса.
  • Развертывайте вашу систему IDP и все изменения инфраструктуры с использованием автоматизации, используя IaC, такие как AWS Cloud Development Kit (AWS CDK) и заранее созданные конструкции IDP AWS CDK. Это исключает возможность введения человеческой ошибки и позволяет вам протестировать перед изменением вашей производственной среды.
  • Если ваш случай использования требует пользовательской модели Amazon Comprehend, рассмотрите возможность использования “флайхвил” для упрощения процесса улучшения пользовательской модели со временем. Флайхвил оркестрирует задачи, связанные с тренировкой и оценкой новой версии пользовательской модели.
  • Если ваш случай использования этого требует, настройте вывод предварительно обученной функции запросов Amazon Textract путем обучения и использования адаптера для базовой модели Amazon Textract. Учитывайте следующие bewst практики при создании запросов для ваших адаптеров:
    • Квоты адаптера определяют предельные значения для обучения адаптера. Учитывайте эти ограничения и подайте запрос на увеличение квоты сервиса, если это необходимо:
      • Максимальное количество адаптеров – количество разрешенных адаптеров (вы можете иметь несколько версий адаптера в одном адаптере).
      • Максимальное количество создаваемых версий адаптера в месяц – количество успешно созданных версий адаптера, которые могут быть созданы в AWS аккаунте в месяц.
      • Максимальное количество версий адаптера в работе – количество версий адаптера в работе (обучение адаптера) на один аккаунт.
    • Убедитесь, что вы используете набор документов, характерных для вашего случая использования (минимум пять тренировочных документов и пять тестовых документов).
    • Предоставьте как можно больше документов для обучения (до 2500 страниц тренировочных документов и 1000 страниц для тестовых документов).
    • Аннотируйте запросы с использованием разных ответов. Например, если ответ на запрос “Да” или “Нет”, в аннотированных образцах должны быть примеры обоих вариантов ответа.
    • Соблюдайте однородность в стиле аннотирования и при аннотировании полей с пробелами.
    • Используйте точные запросы, использованные при обучении для вывода.
    • После каждого раунда обучения адаптера проанализируйте показатели эффективности, чтобы определить, нужно ли вам дальнейшее улучшение адаптера для достижения ваших целей. Загрузите новый набор документов для обучения или просмотрите аннотации документа с низкими оценками точности перед началом нового обучения для создания улучшенной версии адаптера.
    • Используйте функцию AutoUpdate для пользовательских адаптеров. Эта функция пытается выполнить автоматическое повторное обучение при включении флага AutoUpdate на адаптере.

Управление отказами

При разработке решения IDP важным аспектом является его устойчивость, то есть способность обрабатывать известные и неизвестные ошибки, которые могут возникнуть. Решение IDP должно обладать возможностями для регистрации ошибок и повтора неудачных операций на различных этапах рабочего процесса IDP. В данном разделе мы рассмотрим подробности по проектированию вашего рабочего процесса IDP для управления отказами.

Подготовка вашего рабочего процесса IDP к управлению и преодолению отказов

«Все отказывает, всегда» – известная цитата от технического директора AWS Вернера Фогеля. Ваше решение IDP, как и все остальное, в конечном итоге может потерпеть неудачу. Вопрос в том, как оно может выдержать неудачи без влияния на пользователей вашего решения IDP. Ваша архитектура IDP должна быть осведомлена об отказах в момент их возникновения и предпринимать меры для предотвращения нарушения доступности. Это должно происходить автоматически и без влияния на пользователей. Рассмотрим следующие bewt-practices:

  • Используйте Amazon Simple Storage Service (Amazon S3) в качестве масштабируемого хранилища данных для обработки документов рабочего процесса IDP. Amazon S3 обеспечивает высокую надежность инфраструктуры хранения данных, спроектированной для хранения данных, критически важных для выполнения задач.
  • Создайте резервные копии всех данных вашего рабочего процесса IDP в соответствии с требованиями вашего бизнеса. Реализуйте стратегию восстановления или воспроизведения данных в случае их потери. Согласуйте эту стратегию с определенной целью восстановления (RPO) и временем восстановления (RTO), соответствующей требованиям вашего бизнеса.
  • При необходимости спланируйте и реализуйте стратегию аварийного переключения на резервный канал вашего решения IDP между учетными записями AWS и регионами.
  • Используйте функцию OutputConfig Amazon Textract и функцию OutputDataConfig Amazon Comprehend для сохранения результатов асинхронной обработки от Amazon Textract или Amazon Comprehend в назначенном ведре S3. Это позволяет продолжать рабочий процесс с этой точки, а не повторять вызов Amazon Textract или Amazon Comprehend. В следующем коде показано, как запустить асинхронную задачу API Amazon Textract для анализа документа и сохранения зашифрованного вывода в назначенном ведре S3. Дополнительную информацию смотри в документации клиента 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'    …)

Проектирование вашего рабочего процесса IDP для предотвращения отказов

Надежность рабочей нагрузки начинается с принятия решений на этапе проектирования. Архитектурные решения будут влиять на поведение вашей рабочей нагрузки и ее устойчивость. Для повышения надежности вашего решения IDP следуйте следующим рекомендациям.

Во-первых, проектируйте архитектуру в соответствии с рабочим процессом IDP. Хотя этапы рабочего процесса IDP могут различаться и зависеть от случая использования и бизнес-требований, этапы захвата данных, классификации документов, извлечения текста, обогащения контента, проверки и валидации и потребления обычно являются частями рабочего процесса IDP. Эти хорошо определенные этапы могут использоваться для разделения функциональностей и их изоляции в случае отказа.

Вы можете использовать Amazon Simple Queue Service (Amazon SQS) для отделения этапов рабочего процесса IDP. Механизм отделения помогает изолировать поведение компонентов архитектуры от других компонентов, которые зависят от них, что повышает устойчивость и гибкость.

Во-вторых, контролируйте и ограничьте повторные вызовы. Сервисы AWS, такие как Amazon Textract, могут выдавать ошибку, если превышено максимально разрешенное количество транзакций в секунду (TPS), что может привести к ограничению вашего приложения или разрыву соединения.

Вы должны управлять ограничением и разрывами соединений путем автоматического повторного выполнения операций (как синхронных, так и асинхронных). Однако вы также должны указать ограниченное количество повторов, после которых операция неудачна и генерирует исключение. Если вы совершаете слишком много вызовов к Amazon Textract в короткий промежуток времени, он ограничивает ваши вызовы и возвращает ошибку ProvisionedThroughputExceededException в ответе на операцию.

Кроме того, используйте экспоненциальную задержку и случайность для повторных попыток с целью улучшения пропускной способности. Например, при использовании Amazon Textract укажите количество попыток повтора, включив параметр config при создании клиента Amazon Textract. Мы рекомендуем установить количество повторов равным пяти. В следующем примере кода мы используем параметр config, чтобы автоматически повторить операцию с использованием адаптивного режима и максимум пяти повторов:

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                }                })        ...

Воспользуйтесь возможностями AWS SDK, такими как AWS SDK для Python (Boto3), для помощи при повторных вызовах клиента к службам AWS, таким как Amazon Textract и Amazon Comprehend. Доступны три режима повтора:

  • Режим совместимости – Повторяет вызовы при ограниченном числе ошибок и исключений, с экспоненциальной задержкой фактора 2.
  • Стандартный режим – Стандартизирует логику повторов и поведение, соответствующее другим AWS SDK, и расширяет функциональность повторов по сравнению с режимом совместимости. Любая попытка повтора будет включать экспоненциальную задержку фактора 2 с максимальным временем задержки 20 секунд.
  • Адаптивный режим – Включает все возможности стандартного режима и представляет собой возможность ограничения скорости на стороне клиента с помощью контейнера токенов и переменных скорости, которые динамически обновляются после каждой попытки повтора. Он предлагает гибкость в повторах на стороне клиента, которая адаптируется к состоянию ошибки или исключения в ответе от службы AWS. При каждой новой попытке повтора адаптивный режим изменяет переменные скорости на основе ошибки, исключения или кода состояния HTTP, представленного в ответе от службы AWS. Затем эти переменные скорости используются для расчета новой скорости вызова клиента. Каждое исключение, ошибка или неуспешный HTTP-ответ от службы AWS обновляет переменные скорости во время повторов до наступления успеха, исчерпания контейнера токенов или достижения заданного значения максимального количества попыток. Примеры исключений, ошибок или неуспешных HTTP-ответов:
# Временные ошибки/исключенияRequestTimeoutRequestTimeoutExceptionPriorRequestNotCompleteConnectionErrorHTTPClientError# Ограничение пропускной способности/ошибки исключенияThrottlingThrottlingExceptionThrottledExceptionRequestThrottledExceptionTooManyRequestsExceptionProvisionedThroughputExceededExceptionTransactionInProgressExceptionRequestLimitExceededBandwidthLimitExceededLimitExceededExceptionRequestThrottledSlowDownEC2ThrottledException# Повторные попытки с использованием недопустимых кодов ошибок, ошибок. А именно, следующие коды состояния HTTP: 500, 502, 503, 504.

Заключение

В этой статье мы рассмотрели принципы проектирования, основные области, основы и bewst практики по обеспечению надежности вашего решения IDP.

Чтобы узнать больше о пользовательской линзе IDP Well-Architected, изучите следующие статьи в этой серии:

AWS придерживается принципов Well-Architected Lens для IDP в качестве динамического инструмента. По мере развития решений IDP и связанных AI-услуг AWS, а также появления новых сервисов AWS, мы будем обновлять Well-Architected Lens для IDP в соответствии с изменениями.

Если вы хотите узнать больше о Well-Architected Framework AWS, обратитесь к AWS Well-Architected.

Если вам требуется дополнительное экспертное руководство, свяжитесь с вашей командой аккаунта AWS, чтобы привлечь специалиста по решениям IDP.