Все с нетерпением ждут AI-революции, которая существенным образом изменит большинство бизнес-процессов, избавит человечество от рутины и повысит производительность труда. Пока она не свершилась, возникает вопрос: стоит ли интегрировать эти технологии в свой бизнес или лучше подождать. В данной статье рассказывается, как использовать внешние AI (LLM) модели в Loginom, что позволяет максимально быстро и удобно оценить эффект от их внедрения.
В последние годы технологии LLM (Large Language Model) активно захватили информационное пространство под вывеской «Искусственный интеллект» (Artificial Intelligence — AI). Сам факт того, что можно весьма полезно беседовать с AI-моделью как с человеком, обладающим экспертными знаниями, поражает воображение и наводит на мысль о возможном делегировании задач системам, построенным с использованием таких моделей.
Новые технологии, как правило, отпугивают рисками, связанными с их новизной и непроработанностью, сложностью и дороговизной. Возникает желание немного подождать, поискать успешные кейсы в своей области. Вместе с тем мысль о том, что можно опоздать и проиграть конкурентную борьбу, не дает покоя.
LLM представляет собой нейросетевую модель, просто очень большую (large). Нейронные сети известны с середины прошлого века и повсеместно применяются в различных системах обработки данных. Например, Loginom содержит штатные компоненты «Нейросеть (классификация)» и «Нейросеть (регрессия)» для решения соответствующих задач.
Чтобы нейронная сеть решала требуемую задачу, ее нужно обучить, что, как правило, связано с подготовкой размеченного (обучающего) набора данных. В процессе обучения сеть сохраняет в себе информацию, содержащуюся в наборе данных, что позволяет применять ее для решения конкретной задачи. Поэтому эффективность таких моделей существенным образом зависит от качества обучающего датасета.
Эпоха LLM началась в 2017 году после выхода статьи «Attention Is All You Need», описавшей нейросетевую архитектуру «Трансформер», и последующей публикации моделей семейств BERT (Bidirectional Encoder Representations from Transformers) и GPT (Generative Pre-trained Transformer). Новая архитектура позволила эффективно обучать модели на гигантских объемах данных, что, в свою очередь, привело к резкому росту размеров таких моделей.
Большие нейросетевые модели, обладая существенным объемом информации, стали универсальными, способными решать множество различных задач, в отличие от их предшественников, которые обучались для решения строго одной конкретной задачи.
Подход к обучению LLM также изменился — обычно выделяют две стадии: предобучение (pretraining) и дообучение (posttraining). На этапе предобучения через модель прогоняют максимально доступный объем информации — счет идет на терабайты данных — в попытке сформировать у нее целостную картину мира. Предобучение LLM требует колоссальных затрат: оно выполняется в течение нескольких месяцев на вычислительных кластерах, содержащих десятки и сотни тысяч наиболее производительных графических процессоров.
После этапа предобучения AI-модель обладает существенным объемом информации, но не способна эффективно взаимодействовать с пользователями, отвечая на их вопросы. Для исправления этой проблемы предназначен этап дообучения, на котором LLM учится отвечать на вопросы на различных языках и в различной стилистике, формировать цепочки размышлений для поиска решения сложных проблем, вызывать внешние сервисы для получения дополнительной информации и т.п.
В отличие от классических нейросетевых моделей, которые перед использованием следует обучать с нуля на своих данных, использование LLM подразумевает работу с уже готовыми, предварительно обученными моделями. Обученные LLM условно подразделяют на:
Сосредоточимся на использовании закрытых моделей в сценариях Loginom. Эти модели обладают следующими особенностями:
Помимо закрытых моделей, доступ к которым предоставляют их разработчики, на рынке существуют предложение сторонних хостинг-компаний, которые предлагают доступ через API к открытым моделям, размещенным на их серверах. Использование таких моделей во многом подобно работе с закрытыми аналогами.
Информационные системы, которые решают реальные бизнес-задачи, являются сложными и требуют организации взаимодействия различных подсистем, модулей и компонентов. В таких системах LLM могут использоваться для решения отдельных подзадач в рамках создаваемых компонентов или подсистем.
Непосредственное взаимодействие с AI-моделью — лишь один из этапов обработки. Предварительно необходимо подготовить запрос на основе реальных данных, проконтролировать ответ модели, при необходимости повторить запрос или выстроить последовательный диалог с LLM для реализации сложных методов, таких как цепочки размышлений (chain-of-thoughts).
Аналитическая платформа Loginom — удобный инструмент как для создания отдельных компонентов (сценариев), взаимодействующих с AI-моделями, так и для построения полных информационных систем, решающих задачи иерархической обработки данных.
Необходимые для решения задачи данные недоступны для AI-модели напрямую и должны быть извлечены из различных источников (файлов, баз данных и т.п.). Объем исходных данных может быть весьма велик, что не позволит включить их в запрос полностью. Кроме того, большие запросы обходятся дорого и часто лишь снижают качество ответа LLM.
Порой гораздо эффективнее использовать классические методы. Это касается, например любых вычислений. Поэтому крайне важно отобрать релевантные данные и подготовить оптимальный по качеству и по объему запрос. Эти задачи решаются на этапах предварительной обработки и формирования запроса к LLM.
Обратившись к модели и получив ответ, необходимо его проконтролировать, выявить возможные ошибки, преобразовать в нужный формат, который ожидается на выходе разрабатываемого сценария.
Таким образом, взаимодействие c LLM требует наличия множества компонентов обвязки, для создания которых можно использовать Loginom.
В качестве примера рассмотрим задачу стандартизации нормативно-справочной информации (НСИ) на примере нормализации описания товарно-материальных ценностей (ТМЦ):
С этой задачей может столкнуться любое достаточно крупное предприятие, в работе которого используются независимо возникшие (по историческим причинам) базы и источники данных. Решение задачи нормализации НСИ обычно является начальным этапом большинства более крупных задач, связанных с повышением качества данных: дедупликации, формирования «золотой» записи, поиска товарных аналогов и т.п. Игнорирование проблем, связанных с низким качеством используемых данных, приводит к существенному снижению эффективности бизнес-процессов. Например, на складе может появиться переизбыток ТМЦ из-за наличия дублей в используемых данных.
Рассматриваемая задача является классической задачей NER (Named-entity recognition — распознавания именованных сущностей) с добавлением дополнительной логики по стандартизации данных (распознано — материал: деревянный, необходимо сохранить — материал: дерево). Обычно подобные задачи решают одним из трех способов:
Применение LLM позволяет существенным образом сократить трудозатраты на решение задачи, поскольку:
Недостаток применения AI-моделей состоит прежде всего в гораздо более высоких аппаратных требованиях: на решение задачи будет потрачено значительно больше вычислений и энергии.
Для решения поставленной задачи можно воспользоваться закрытой LLM от ПАО СберБанк — GigaChat. Документация по GigaChat API доступна на сайте разработчиков СБЕР. После регистрации своего проекта будет бесплатно доступно стартовое количество токенов (разное для разных моделей), которого хватит для оценки возможностей предлагаемых моделей по решению вашей задачи.
GigaChat API требует направления запроса к модели в виде массива сообщений messages. Каждое сообщение должно состоять из двух элементов, определяющих роль и содержание сообщения, например:
{
"role": "system",
"content": "Ты профессиональный переводчик на английский язык. Переведи точно сообщение пользователя."
}
Для параметра роль доступны следующие значения: «system», «user», «assistant», «function». Таким образом, запрос к модели формируется в виде диалога, начинающегося с системного запроса (роль — «system») и продолжающегося чередованием сообщений от остальных участников: пользователя — user, модели — assistant, дополнительных сервисов — function.
В простейшем случае массив messages должен содержать единственное сообщение от пользователя с вопросом, однако формирование диалога позволяет увеличить качество ответа LLM за счет:
Следует отметить, что API для доступа к различным LLM мало чем отличаются друг от друга, поэтому переключить сценарий Loginom на использование иной модели не составит большого труда.
В статье представлен демонстрационный сценарий. Работа происходит в аналитической платформе Loginom (скачать бесплатную версию Loginom Community). Для успешного усвоения материала желательно скачать сценарий и выполнить все шаги.
Ниже представлен верхний уровень сценария Loginom, решающего поставленную задачу. Для корректной работы сценария в системе должна быть определена переменная окружения GIGA_CHAT_PERS, хранящая полученный «Ключ авторизации» (Authorization key).
Компонент «ТМЦ для обработки» загружает подлежащие обработке записи ТМЦ в формате Идентификатор/Описание из Excel-файла. В реальной системе данные могут поступать из БД в виде запросов к веб-сервису, файлов различных форматов, интеграционных подсистем и т.п. Такой функционал может быть также реализован в Loginom.
Описание ТМЦ будет добавлено в массив сообщений как запрос пользователя, однако предварительно нужно сформировать системный запрос и набор примеров. Для этого используются компоненты группы «Подготовка запросов». На вход поступают два набора данных:
В продуктивных системах сценарии предварительной подготовки могут быть сколь угодно сложными, например, динамически формировать особые примеры для каждого запроса или давать предварительную оценку значения атрибута. Такие подготовительные действия, как правило, положительно влияют на общее качество решения.
Работа с LLM реализуется подмоделью «Определение атрибутов». Помимо входного набора обрабатываемых данных, подаваемого на табличный порт, на входном порту переменных должны быть определены следующие:
Подмодель в циклическом режиме для каждой строки входящего набора формирует и выполняет запрос к LLM, обрабатывает ее ответ. Более подробно остановимся на компоненте «Запрос к модели», который реализует основную логику взаимодействия с LLM.
Подмодель «Токен авторизации» реализует механизм получения токена доступа GigaChat API. Для корректной работы необходимо до запуска Loginom создать переменную окружения GIGA_CHAT_PERS, в которую сохранить полученный «Ключ авторизации» (Authorization key) — подробно эта процедура описана в документации GigaChat API. На выход подмодели передается переменная access_token, значение которой используется для дальнейших обращений к LLM. Токен доступа выдается на 30 минут, после чего требует обновления (перезапуска подмодели).
Компонент «Формирование запроса» собирает запрос согласно требованиям GigaChat API, а компонент «REST-запрос» направляет его к модели. Ответ LLM разбирается и преобразуется к нужному виду компонентами «JSON парсер» и «Ключ: значение».
Демонстрационный сценарий для каждой записи ТМЦ определяет требуемые значения атрибутов для класса «Автошина». При этом на вход могут быть поданы произвольные записи в произвольном количестве (размер входной выборки ограничивается только размером доступной оперативной памяти). В случае отсутствия в описании ТМЦ информации для определения значения атрибута, на выходе сценария он будет содержать пустую строку.
Среди недостатков сценария, объясняющихся его демонстрационной простотой, следует упомянуть недостаточную стандартизацию получаемого результата. Например, в качестве разделителя значения атрибута «обозначение размера» на выходе может использоваться символ «-» вместо «/». Этот недостаток может быть частично устранен с помощью перехода к более крупной модели или введения дополнительной логики обработки ответа LLM в сценарий.
Основным преимуществом демонстрируемого решения является легкая адаптация для произвольных классов ТМЦ, что позволяет достаточно быстро построить систему стандартизации НСИ на базе Loginom, закрывающую требования конкретного заказчика.
Другие материалы по теме:
ModelOps в Loginom: управление моделями и экспериментами
Как избежать проклятий: правильная организация сценариев в Loginom