Home Машинное обучение Schneider Electric использует Retrival Augmented LLM в SageMaker для обеспечения обновлений в режиме реального времени в своих ERP-системах. | DeepTech

Schneider Electric использует Retrival Augmented LLM в SageMaker для обеспечения обновлений в режиме реального времени в своих ERP-системах. | DeepTech

0
Schneider Electric использует Retrival Augmented LLM в SageMaker для обеспечения обновлений в режиме реального времени в своих ERP-системах.
 | DeepTech

Этот пост был написан в соавторстве с Энтони Медейросом, менеджером по разработке решений и архитектуре для искусственного интеллекта в Северной Америке, и Блейком Санчи, менеджером по бизнес-аналитике из Schneider Electric. Среди других экспертов Schneider Electric — Джесси Миллер, Сомик Чоудхури, Шасват Бабхулгаонкар, Дэвид Уоткинс, Марк Карлсон и Барбара Слечковски.

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

Schneider Electric — лидер в области цифровой трансформации энергоменеджмента и промышленной автоматизации. Чтобы наилучшим образом удовлетворить потребности своих клиентов, Schneider Electric необходимо отслеживать связи между учетными записями связанных клиентов в своих ERP-системах. По мере роста клиентской базы ежедневно добавляются новые клиенты, и их командам по работе с клиентами приходится вручную сортировать этих новых клиентов и связывать их с соответствующей родительской организацией.

Решение о связывании основывается на самой последней информации, доступной публично в Интернете или средствах массовой информации, и на него могут повлиять недавние приобретения, новости рынка или реструктуризация подразделения. Примером связывания учетных записей может быть определение отношений между Amazon и ее дочерней компанией Whole Foods Market (источник).

Schneider Electric развертывает большие языковые модели из-за их возможностей отвечать на вопросы в различных областях знаний, но дата обучения модели ограничивает ее знания. Они решили эту проблему, используя модель большого языка с открытым исходным кодом Retriever-Augmented Generation, доступную на Amazon SageMaker JumpStart, для обработки больших объемов внешних знаний и демонстрации корпоративных или общедоступных связей между записями ERP.

В начале 2023 года, когда Schneider Electric решила автоматизировать часть процесса связывания своих учетных записей с помощью искусственного интеллекта (ИИ), компания стала партнером Лаборатории решений машинного обучения AWS (MLSL). Благодаря опыту MLSL в консультировании и реализации машинного обучения компания Schneider Electric смогла разработать архитектуру искусственного интеллекта, которая позволила бы сократить ручной труд при объединении рабочих процессов и обеспечить более быстрый доступ к данным для своих последующих аналитических групп.

Генеративный ИИ

Генеративный искусственный интеллект и модели большого языка (LLM) меняют способы решения бизнес-организациями традиционно сложных задач, связанных с обработкой и пониманием естественного языка. Некоторые из преимуществ, предлагаемых LLM, включают способность понимать большие части текста и отвечать на связанные вопросы, давая ответы, подобные человеческим. AWS позволяет клиентам легко экспериментировать и реализовывать рабочие нагрузки LLM, предоставляя множество опций через Amazon SageMaker JumpStart, Amazon Bedrock и Amazon Titan.

Приобретение внешних знаний

LLM известны своей способностью сжимать человеческие знания и продемонстрировали замечательные способности отвечать на вопросы в различных областях знаний, но их знания ограничены датой обучения модели. Мы устраняем эту проблему отсутствия информации, объединяя LLM с API поиска Google, чтобы создать мощный LLM с расширенным поиском (RAG), который решает проблемы Schneider Electric. RAG может обрабатывать большие объемы внешних знаний, полученных из поиска Google, и отображать корпоративные или общественные связи между записями ERP.

См. следующий пример:

Вопрос: Кто является материнской компанией One Medical?
Гугл запрос: «Единая медицинская материнская компания» → информация → LLM
Отвечать: One Medical, дочерняя компания Amazon…

Предыдущий пример (взятый из базы данных клиентов Schneider Electric) касается приобретения, которое произошло в феврале 2023 года и, следовательно, не может быть раскрыто только LLM из-за отсутствия знаний. Дополнение LLM поиском Google гарантирует получение самой актуальной информации.

Модель Флан-Т5

В этом проекте мы использовали модель Flan-T5-XXL от производителя. Флан-Т5 семейство моделей.

Модели Flan-T5 настраиваются с помощью инструкций и поэтому способны выполнять различные задачи НЛП с нулевым результатом. В нашей последующей задаче не было необходимости использовать огромный объем мировых знаний, а скорее нужно было хорошо отвечать на вопросы в контексте текстов, предоставленных в результатах поиска, и, следовательно, модель T5 с параметрами 11B работала хорошо.

JumpStart обеспечивает удобное развертывание этого семейства моделей с помощью Amazon SageMaker Studio и SageMaker SDK. Сюда входят Flan-T5 Small, Flan-T5 Base, Flan-T5 Large, Flan-T5 XL и Flan-T5 XXL. Кроме того, JumpStart предоставляет несколько версий Flan-T5 XXL с разными уровнями квантования. Мы развернули Flan-T5-XXL на конечной точке для вывода с помощью Amazon SageMaker Studio Jumpstart.

Путь к Flan-T5 SageMaker JumpStart

Поиск расширенного LLM с LangChain

Лангчейн — это популярная и быстрорастущая среда, позволяющая разрабатывать приложения на базе LLM. В его основе лежит концепция цепи, которые представляют собой комбинации различных компонентов, предназначенных для улучшения функциональности LLM для конкретной задачи. Например, это позволяет нам настраивать подсказки и интегрировать LLM с различными инструментами, такими как внешние поисковые системы или источники данных. В нашем случае мы использовали Google Серпер компонент для поиска в Интернете и развернул модель Flan-T5-XXL, доступную в Amazon SageMaker Studio Jumpstart. LangChain выполняет общую оркестрацию и позволяет передавать страницы результатов поиска в экземпляр Flan-T5-XXL.

Генерация с расширенным поиском (RAG) состоит из двух этапов:

  1. Retrieval соответствующих фрагментов текста из внешних источников
  2. Увеличение фрагментов с контекстом в подсказке, переданной LLM.

В случае использования Schneider Electric RAG действует следующим образом:

  1. Данное название компании объединяется с вопросом типа «Кто является материнской компанией X», где X — данная компания) и передается в запрос Google с использованием Serper AI.
  2. Извлеченная информация объединяется с подсказкой и оригинальным вопросом и передается LLM для ответа.

Следующая диаграмма иллюстрирует этот процесс.

Рабочий процесс RAG

Используйте следующий код для создания конечной точки:

# Spin FLAN-T5-XXL Sagemaker Endpoint
llm = SagemakerEndpoint(...)

Инструмент мгновенного поиска:

search = GoogleSerperAPIWrapper()
search_tool = Tool(
	name="Search",
	func=search.run,
	description="useful for when you need to ask with search",
	verbose=False)

В следующем коде мы объединяем компоненты поиска и дополнения:

my_template = """
Answer the following question using the information. \n
Question : {question}? \n
Information : {search_result} \n
Answer: """
prompt_template = PromptTemplate(
	input_variables=("question", 'search_result'),
	template=my_template)
question_chain = LLMChain(
	llm=llm,
	prompt=prompt_template,
	output_key="answer")

def search_and_reply_company(company):
	# Retrieval
	search_result = search_tool.run(f"{company} parent company")
	# Augmentation
	output = question_chain({
		"question":f"Who is the parent company of {company}?",
		"search_result": search_result})
	return output("answer")

search_and_reply_company("Whole Foods Market")
"Amazon"

Оперативное проектирование

Сочетание контекста и вопроса называется подсказкой. Мы заметили, что общий запрос, который мы использовали (варианты запроса материнской компании), хорошо работал для большинства государственных секторов (доменов), но не распространялся на образование или здравоохранение, поскольку понятие материнской компании там не имеет смысла. Для образования мы использовали «X», а для здравоохранения — «Y».

Чтобы включить этот выбор подсказки для конкретного домена, нам также пришлось определить домен, к которому принадлежит данная учетная запись. Для этого мы также использовали RAG, в котором вопрос с несколькими вариантами ответов «Каков домен {account}?» в качестве первого шага и на основе ответа, который мы запросили у родительской учетной записи, используя соответствующее приглашение в качестве второго шага. См. следующий код:

my_template_options = """
Answer the following question using the information. \n
Question :  {question}? \n
Information : {search_result} \n
Options :\n {options} \n
Answer:
"""

prompt_template_options = PromptTemplate(
input_variables=("question", 'search_result', 'options'),
template=my_template_options)
question_chain = LLMChain(
	llm=llm,
	prompt=prompt_template_options,
	output_key="answer")
	
my_options = """
- healthcare
- education
- oil and gas
- banking
- pharma
- other domain """

def search_and_reply_domain(company):
search_result = search_tool.run(f"{company} ")
output = question_chain({
	"question":f"What is the domain of {company}?",
	"search_result": search_result,
	"options":my_options})
return output("answer")

search_and_reply_domain("Exxon Mobil")
"oil and gas"

Подсказки для конкретных секторов повысили общую производительность с 55% до 71% точности. В целом, усилия и время, затраченные на разработку эффективных подсказки по-видимому, значительно улучшают качество ответа LLM.

РЭГ с табличными данными (SEC-10k)

Отчеты SEC 10K являются еще одним надежным источником информации о дочерних компаниях и подразделениях, ежегодно подаваемых публичными компаниями. Эти документы доступны непосредственно в SEC. ЭДГАР или через CorpWatch API.

Мы предполагаем, что информация представлена ​​в табличном виде. Ниже приведен псевдо csv набор данных, имитирующий исходный формат набора данных SEC-10K. Возможно объединение нескольких csv источники данных в комбинированный фрейм данных pandas:

# A pseudo dataset similar by schema to the CorpWatch API dataset
df.head()

index	relation_id		source_cw_id	target_cw_id	parent		subsidiary
  1		90				22569           37				AMAZON		WHOLE FOODS MARKET
873		1467			22569			781				AMAZON		TWITCH
899		1505			22569			821				AMAZON		ZAPPOS
900		1506			22569			821				AMAZON		ONE MEDICAL
901		1507			22569			821				AMAZON		WOOT!

LangChain предоставляет пандам уровень абстракции посредством create_pandas_dataframe_agent. Есть два ключевых преимущества использования LangChain/LLM для этой задачи:

  1. После запуска он позволяет следующему потребителю взаимодействовать с набором данных на естественном языке, а не на коде.
  2. Он более устойчив к орфографическим ошибкам и различным способам именования учетных записей.

Мы вращаем конечную точку, как указано выше, и создаем агента:

# Create pandas dataframe agent
agent = create_pandas_dataframe_agent(llm, df, varbose=True)

В следующем коде мы запрашиваем отношения «родитель/дочерний объект», и агент переводит запрос на язык pandas:

# Example 1
query = "Who is the parent of WHOLE FOODS MARKET?"
agent.run(query)

#### output
> Entering new AgentExecutor chain...
Thought: I need to find the row with WHOLE FOODS MARKET in the subsidiary column
Action: python_repl_ast
Action Input: df(df('subsidiary') == 'WHOLE FOODS MARKET')
Observation:
source_cw_id	target_cw_id	parent		subsidiary
22569			37				AMAZON		WHOLE FOODS MARKET
Thought: I now know the final answer
Final Answer: AMAZON
> Finished chain.
# Example 2
query = "Who are the subsidiaries of Amazon?"
agent.run(query)
#### output
> Entering new AgentExecutor chain...
Thought: I need to find the row with source_cw_id of 22569
Action: python_repl_ast
Action Input: df(df('source_cw_id') == 22569)
...
Thought: I now know the final answer
Final Answer: The subsidiaries of Amazon are Whole Foods Market, Twitch, Zappos, One Medical, Woot!...> Finished chain.
'The subsidiaries of Amazon are Whole Foods Market, Twitch, Zappos, One Medical, Woot!.'

Заключение

В этом посте мы подробно описали, как мы использовали строительные блоки LangChain для расширения LLM возможностями поиска, чтобы выявить связи между учетными записями клиентов Schneider Electric. Мы расширили первоначальный конвейер до двухэтапного процесса с идентификацией домена перед использованием запроса для конкретного домена для большей точности.

В дополнение к запросу Google Search для дальнейшего дополнения LLM достоверной информацией можно использовать наборы данных, подробно описывающие корпоративные структуры, такие как документы SEC 10K. Команда Schneider Electric также сможет расширять и разрабатывать свои собственные подсказки, имитирующие способ классификации некоторых счетов государственного сектора, что еще больше повысит точность конвейера. Эти возможности позволят Schneider Electric поддерживать актуальные и точные организационные структуры своих клиентов, а также откроют возможность проводить аналитику на основе этих данных.


Об авторах

Энтони Медейрос является менеджером по разработке решений и архитектуре в Schneider Electric. Он специализируется на реализации ценных инициатив AI/ML для многих бизнес-подразделений в Северной Америке. Имея 17-летний опыт работы в Schneider Electric, он привнесет в команду богатые отраслевые знания и технические знания.

Блейк Санчи — менеджер по бизнес-аналитике в Schneider Electric, возглавляет аналитическую группу, занимающуюся поддержкой организации продаж посредством анализа данных.

Джошуа ЛевиДжошуа Леви является старшим менеджером по прикладным наукам в лаборатории Amazon Machine Learning Solutions, где он помогает клиентам проектировать и создавать решения AI/ML для решения ключевых бизнес-задач.

Коста Белз — старший научный сотрудник AWS MLSL, специализирующийся на генеративном искусственном интеллекте и обработке документов. Он увлечен созданием приложений с использованием графиков знаний и НЛП. У него около 10 лет опыта в создании решений для обработки данных и искусственного интеллекта, которые принесут пользу клиентам и предприятиям.

Од Женевей — научный сотрудник в инкубаторе Amazon GenAI, где она помогает клиентам решать ключевые бизнес-задачи с помощью машинного обучения и искусственного интеллекта. Ранее она была исследователем в области теоретического машинного обучения и с удовольствием применяет свои знания для предоставления клиентам самых современных решений.

Доктор Сираджус Салекин — научный сотрудник лаборатории решений машинного обучения AWS. Он помогает клиентам AWS ускорить свой бизнес путем создания решений AI/ML. Его исследовательские интересы — мультимодальное машинное обучение, генеративный искусственный интеллект и приложения машинного обучения в здравоохранении.

Цзычен Ван, доктор философии, старший научный сотрудник AWS. Имея несколько лет исследовательского опыта в разработке ОД и статистических методов с использованием биологических и медицинских данных, он работает с клиентами из разных отраслей над решением их проблем ОД.

Антон Гридин — главный архитектор решений, поддерживающий глобальные промышленные счета, в Нью-Йорке. Он имеет более чем 15-летний опыт создания безопасных приложений и руководства инженерными группами.

LEAVE A REPLY

Please enter your comment!
Please enter your name here