Прочтите эту статью с примерами понимания документов с помощью больших языковых моделей с помощью Google Cloud в качестве службы Rest API.

Написано в сотрудничестве с D3Reo

Введение

В декабре 2022 года в составе группы искусственного интеллекта Accenture Google Business Group (AGBG) я работал над проектом, который включал в себя часть Понимание документов. Чтобы решить эту конкретную часть, мы попытались применить модель большого языка (LLM) из статьи, которую мы прочитали незадолго до этого. В этой статье рассказывается об этой теме и описываются применяемые подходы и их результаты. Мы увидели хороший потенциал для применения LLM, поскольку документы, с которыми нам приходилось иметь дело, сильно отличались от случая к случаю как по формату, так и по формулировке их содержания.

Нас особенно интересовало тестирование производительности этих моделей в режиме с низким уровнем данных или даже без них с использованием контекстного обучения. Нам также было любопытно, удалось ли тонкой настройке таких моделей достичь удовлетворительной точности, сравнимой с более старыми и более классическими алгоритмами NER.

Наконец, мы хотели попробовать развернуть LLM в Google Cloud в качестве сервиса Rest API, не полагаясь на проприетарные API для наших целей.

Оглавление

  1. "Введение"
  2. Конвейер понимания документов
  3. Модель IT5
  4. Обучение с нуля
  5. Обучение в несколько выстрелов
  6. "Тонкая настройка"
  7. Развертывание собственного LLM на Google Cloud Platform
  8. Выводы

Конвейер понимания документов

Вообще говоря, понимание документов относится к способности понимать содержание и значение документа или набора документов. Это включает в себя различные процессы, такие как классификация входных данных, определение ключевых понятий, распознавание взаимосвязей между различным содержимым и, наконец, извлечение желаемой информации. В последние десятилетия развитие методов машинного обучения (ML) и обработки естественного языка (NLP) позволило компьютерам учиться на больших объемах данных и делать прогнозы о содержании документа, позволяя нам решать несколько задач, таких как именованная сущность. распознавание (NER), анализ настроений, моделирование тем и классификация документов.

Конвейеры Document Understanding обычно сложны и включают множество различных шагов, но на более высоком уровне их можно разделить на следующие этапы:

  1. Предварительная обработка: в зависимости от выполняемой задачи документы должны быть приведены в такую ​​форму, чтобы их можно было передать в конвейер.
  2. Извлечение текста и аннотаций: если имеющиеся документы не являются чистыми или форматированными текстами, необходимо извлечь их текстовое содержимое вместе со словесными аннотациями, обычно с помощью оптического распознавания символов (OCR).
  3. Прогнозирование: это основной этап конвейера, на котором данные передаются в алгоритмы AI/ML для получения результатов, представляющих интерес для анализа документов.
  4. Постобработка: необработанные результаты предыдущего шага обычно приводятся в стандартизированную форму для повышения их качества и релевантности.

В этом блоге мы сосредоточимся на этапе прогнозирования и, в частности, объясним, как наш подход основан на использовании больших языковых моделей (LLM). Это модели машинного обучения, основанные на архитектуре преобразователей, которые приобрели популярность в последние годы благодаря своей эффективности в самых разных задачах, в том числе в области обработки естественного языка (NLP).

Модель IT5

T5 расшифровывается как «преобразователь преобразования текста в текст». Это архитектура нейронной сети на основе преобразователя, опубликованная Google AI в 2019 году. задачи обработки естественного языка (NLP), такие как классификация текста, ответы на вопросы, машинный перевод и обобщение. Он обучается в настройке «текст в текст», что означает, что его можно точно настроить для различных задач НЛП, просто преобразуя ввод и вывод в формат текста в текст.

T5 обучался на большом и разнообразном наборе данных под названием C4, что означает «Colossal Clean Crawled Corpus». Набор данных C4 представляет собой набор данных веб-масштаба, созданный путем сканирования и извлечения текстовых данных из Интернета, содержащий более 750 ГБ несжатых текстовых данных и состоящий из более чем 750 миллионов веб-страниц. Текстовые данные в C4 были предварительно обработаны и очищены от дубликатов, некачественных страниц и прочего шума.

Хотя были введены некоторые многоязычные варианты модели T5, их производительность оказалась неоптимальной для языков, отличных от английского, по сравнению со специальными одноязычными вариантами; по этой причине модель IT5 была представлена ​​Дж. Сарти и М. Ниссимом в своей статье 2022 года. IT5 — это версия модели T5, которая была предварительно обучена на текстовых данных только на итальянском языке, то есть Итальянский веб-корпус, а затем доработал несколько последующих задач на итальянском языке.

Модель IT5, как и многие другие LLM, бывает разных размеров, которые зависят от количества весов моделей:

Мы сформулировали проблему извлечения сущностей как задачу ответа на вопрос (QA), которая представляет собой задачу получения желаемого результата путем ввода в модель входных данных, отформатированных как вопрос. В нашем случае мы использовали IT5-вопрос-ответ (здесь ссылка на страницу Hugging Face базовой модели), версию IT5, предварительно обученную для выполнения QA в качестве открытая генерирующая задача; это означает, что подсказка модели должна содержать входные данные и вопрос, а ответ генерируется последовательно (см. здесь для других типов задач контроля качества).

На практике подсказки были выбраны в следующем формате (Доманда означает Вопрос на итальянском языке):

<text>. Domanda: <question>?

как указано в вышеупомянутой статье Сарти и Ниссима.

Вообще говоря, есть несколько способов извлечения информации из текста с помощью LLM. В наших экспериментах мы пробовали подходы Zero-Shot, Few-Shot и Fine-Tuning, как подробно описано в следующих параграфах.

Обучение с нуля

Традиционно классификация Zero-Shot относится к практике обучения классификатора на наборе меток, а затем оценки модели на некоторых других метках, которые он никогда не видел во время обучения. В последние годы, с появлением LLM, Zero-Shot Learning в более широком смысле означает, что модель выполняет задачу без какой-либо специальной подготовки. Например, языковая модель, обученная решению общей задачи языкового моделирования (например, предсказанию следующего слова в предложении), может выполнять другие задачи, такие как классификация текста или распознавание именованных объектов. Zero-Shot Learning особенно полезен, когда доступно ограниченное количество размеченных данных или когда стоимость получения размеченных данных чрезмерно высока. Используя возможности нулевого выстрела LLM, можно выполнять эти задачи без необходимости в обширных обучающих данных для конкретных задач.

При экспериментировании с определенным LLM естественно сначала взглянуть на производительность модели на имеющихся данных, делая прогнозы с помощью подхода Zero-Shot, и это именно то, что мы сделали с IT5. на нашем наборе тестовых документов. В качестве справки мы приводим здесь результаты точности извлечения трех сущностей.

Небольшое обучение

Естественным продолжением Zero-Shot Learning является так называемое Few-Shot Learning или In-Context Learning. В этом случае также нет фактического обучения, поскольку нет обновления весов модели, но, в отличие от Zero-Shot, в Few-Shot Learning мы позволяем модели видеть некоторые примеры пар ввода-вывода в начале подсказки. , до фактического ввода. Таким образом, модель получает некоторый контекст, чтобы определить ожидаемый результат. Структура контекста может сильно различаться в зависимости от задачи, и ее оптимизация для текущей проблемы является частью области быстрой разработки.

В настройках QA типичная подсказка Few-Shot может быть следующего типа:

<sample_document_text>. <question_1>: <expected_answer_1>
<sample_document_text>. <question_2>: <expected_answer_2>
 …
<sample_document_text>. <question_n>: <expected_answer_n>
<true_document_text>. <Question>:

где ‹sample_document_textуказывает прототип фактического текста.

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

Тонкая настройка

В машинном обучении тонкая настройка – это метод переноса обучения, при котором предварительно обученная модель обучается на новых данных, а ее веса или их часть обновляется соответственно.

LLM, также известные как базовые модели, предварительно обучаются на больших объемах данных в масштабе в режиме самоконтроля,на общих задачах, таких как предсказание следующего слова в предложении ( GPT-подобные модели)или восстановление замаскированных слов в предложении (BERT или T5). Именно эти общие предтренировочные задачи позволяют формировать модели поведения с нулевым и малым количеством выстрелов.

Помимо использования контекстного обучения, которое выполняет вывод без какого-либо обучения на новых данных, то есть без обновления параметров (или весов) моделей, другой подход заключается в точной настройке LLM для выполнения последующих задач с использованием нового корпуса обучения. данные.

В этом конкретном случае использования, в отличие от подхода с несколькими выстрелами, точная настройка модели IT5 в нашем наборе данных привела к очень удовлетворительным результатам, с увеличением показателей более чем на 70 % для фиксированного размера модели и рассматриваемого объекта. Результаты были конкурентоспособны с классическими подходами NER.

Развертывание собственного LLM на Google Cloud Platform

Еще в декабре 2022 года Google еще не запустила свою текущую студию GenerativeAI на Google Cloud Platform [ссылка], поэтому мы не могли пытаться использовать ее мощную модель текстовой основы, PaLM 2. Запатентованные модели, подобные этой, огромны, с более чем 500 миллиардами параметры, и имеют невероятную точность уже в сценарии с нулевым и малым количеством выстрелов. Тем не менее, даже сегодня кто-то может предпочесть перенести свой собственный LLM в Google Cloud, будь то для повторного использования чего-то, разработанного в другом месте (например, с другими облачными провайдерами или локально), или для некоторой экономии на затратах на вывод.

Развертывание модели машинного обучения (ML) означает предоставление ее в качестве службы, которая принимает входящие запросы, содержащие любые новые входные данные, и совместно использует соответствующие выходные данные.

Для этого модель обычно отправляется в виде набора конечных точек API для отдыха в инфраструктуру, которая может обслуживать HTTP-запросы.

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

  • Vertex AI: поскольку модель не написана в чистом TensorFlow, поскольку она использует несколько классов и абстракций, предоставляемых библиотеками из HuggingFace, она должна быть контейнеризирована с помощью Docker, загружена в реестр моделей Vertex AI и доступна для настраиваемая конечная точка Vertex AI.
  • Cloud Run: модель помещается в контейнер с помощью Docker, помещается в Container/Artifact Registry и развертывается как служба Cloud Run.

Оба способа обеспечивают высокий уровень настройки, при этом Vertex AI задает формат запросов и ответов только от своих конечных точек. Однако, поскольку компьютеры конечных точек Vertex не могут масштабироваться до нуля при простое в течение определенного периода времени, первое решение может привести к более высоким затратам в случае разреженного трафика. По этой причине, проанализировав затраты на основе ожидаемого трафика для нашего потока документов, мы решили полностью настроить Cloud Run.

Выводы

Таким образом, большие языковые модели представляют собой значительный прогресс в области задач понимания документов. Они демонстрируют уровни производительности, сравнимые с традиционными алгоритмами, а иногда и превосходящие их, особенно при работе с ограниченными объемами данных. Этот прорыв произвел революцию в области обработки естественного языка, позволив разработчикам полностью раскрыть потенциал своих данных. Используя огромные возможности Google Cloud, разработчики и специалисты по данным теперь могут использовать беспрецедентную эффективность и выразительность, предлагаемые этими обширными базовыми моделями. Это позволяет им создавать передовые приложения в области понимания естественного языка. Google Cloud упрощает процессы разработки и развертывания, предлагая удобное и экономичное решение. Благодаря расширенным функциональным возможностям, таким как расширенное семантическое понимание, точное извлечение текста и эффективная дистилляция знаний, создание новых инновационных приложений требует лишь немалого творчества — и, очевидно, наличия надежных источников данных, как всегда.

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