Наша команда по машинному обучению строит и совершенствует наши алгоритмы обработки документов уже более 2 лет. Вы можете много прочитать об этом процессе в некоторых из наших предыдущих блогов:
- Использование нейронных сетей для распознавания счетов
- Обучение модели машинного обучения на анонимных документах
- Использование триплетного обучения для улучшения нашей модели распознавания счетов
Однако ключ в том, чтобы сделать это быстро, надежно и масштабируемо, особенно когда это используется в коммерческом контексте. Мы хотим продолжать предлагать ту же скорость и качество обслуживания в пиковые периоды, и наши услуги должны иметь возможность быстро масштабироваться, когда новые клиенты подписываются на наш API или платформу распознавания.
Для масштабируемого развертывания наших модулей машинного обучения мы решили использовать лямбда-функции AWS. Эти функции могут быть связаны друг с другом для поддержки пользовательских потоков документов с комбинациями алгоритмов классификации и обнаружения.
Масштабирование с использованием AWS Lambda и Stepfunctions
AWS Lambda — это сервис облачных вычислений, который позволяет запускать код без управления ресурсами или серверами. Когда рабочая нагрузка высока, для масштабирования приложения запускается больше лямбда-функций. Лямбда-функции лучше всего подходят для коротких рабочих нагрузок, управляемых событиями, поэтому мы разделили наши сервисы ИИ на модули. Это дает нам определенные преимущества:
- Каждая лямбда-функция может быть обновлена отдельно, что позволяет легко выпускать в производство только некоторые из наших обновленных модулей.
- Лямбда-функции могут быть объединены в цепочку с помощью пошаговых функций. Это означает, что мы можем повторно использовать наши модули для создания потоков документов (цепочек функций), соответствующих потребностям наших клиентов.
- Каждая лямбда-функция может масштабироваться независимо от других. Модули машинного обучения, которые используются несколько раз в секунду, масштабируются отдельно от других модулей в зависимости от потребностей. Это снижает затраты.
Создание пользовательских потоков документов с помощью модулей
Благодаря модульному характеру AWS Step Functions мы можем легко создавать собственные потоки распознавания для наших клиентов. Мы управляем этими потоками, используя 1 модуль итератора. Этот модуль считывает файл конфигурации для конкретного клиента и отправляет правильное событие следующему модулю ML. Таким образом, модуль итератора можно вызывать несколько раз в течение одного потока, что позволяет одной пошаговой функции AWS поддерживать бесконечное количество возможных комбинаций модулей.
Пример оформления бухгалтерских документов
В качестве примера мы можем рассмотреть базовый поток для бухгалтерских документов. Учитывая, что мы ожидаем, что входящие документы будут счетами-фактурами или отсканированными квитанциями, мы можем использовать модель классификации для отправки каждого типа в соответствующий модуль обнаружения.
В приведенном ниже обзоре мы показываем, что оба эти типа могут быть обработаны с использованием только одной ступенчатой функции. В зависимости от класса документа мы можем обнаружить разные поля в документе. Слева вы можете увидеть логический поток, состоящий из шага классификации, за которым следует соответствующий модуль обнаружения. Справа вы можете видеть, как наша функция-итератор имитирует этот поток, запуская правильный модуль на каждом временном шаге.
В IxorThink, практике машинного обучения Ixor, мы постоянно пытаемся улучшить наши методы для создания самых современных решений. Как компания-разработчик программного обеспечения, мы можем предоставлять стабильные продукты от проверки концепции до развертывания. Свяжитесь с нами для получения дополнительной информации.