В этой статье представлено исчерпывающее руководство по созданию генеративного чат-бота с открытым доменом, использующего большую языковую модель (LLM), такую ​​как GPT-Neo, и построенного с помощью SageMaker на AWS. Руководство охватывает такие ключевые области, как обработка диалоговых сессий и высказываний, кодирование и токенизация данных разговоров, а также тонкая настройка LLM, таких как GPT, для создания естественных человеческих ответов. Вы также узнаете, как предварительно обрабатывать подсказки во время логического вывода, прежде чем вводить их в точно настроенную модель для ответа. Кроме того, это руководство научит вас, как улучшить генеративную модель с помощью кратковременной памяти для многооборотных разговоров. Он охватывает важные концепции, такие как ИИ для диалогов, диалоговые агенты и разницу между одноходовыми и многоходовыми диалогами. Кроме того, в нем подчеркивается важность специальных токенов во время обучения на основе подсказок и стратегий декодирования, таких как выборка ядра. Наконец, вы также узнаете, как эффективно собирать и масштабировать все эти компоненты с помощью SageMaker в облаке AWS. К концу этого руководства вы получите минимальные знания и набор навыков для создания генеративных чат-ботов, которые могут участвовать в содержательных беседах с вашими клиентами.

Примечание. Эта статья завершает серию из 4 частей, основанных на идеях и методах, представленных в моих предыдущих статьях об обучении BERT и GPT с нуля и использовании обучения с подкреплением с обратной связью человека для отдельных -включить QA бота. Синтезируя знания и методы, представленные в этих 4 статьях, вы можете создать эффективный конвейер чат-ботов, адаптированный к вашей конкретной области. Думайте об этом как о локализованной и настроенной версии ChatGPT для вашего конкретного домена и варианта использования.

Успех ChatGPT от OpenAI можно частично объяснить его диалоговым интерфейсом. Это не только сделало модели GPT-3.x более доступными и удобными для пользователя, но также помогло популяризировать модель и обеспечить ее беспрецедентное распространение. Кроме того, элемент чата позволяет ChatGPT учиться на взаимодействиях с пользователями, тем самым повышая точность и естественность обработки языка и, в конечном итоге, улучшая общее взаимодействие с пользователем для текущих и будущих итераций.

Разговорный ИИ можно условно разделить на две категории: ориентированные на достижение цели, агенты и чат-боты. Агенты, ориентированные на достижение цели, используют предопределенные рабочие процессы и в основном полагаются на традиционные системы, основанные на правилах, чтобы управлять ходом разговора, задавая конкретные вопросы. Эти системы часто используют механизмы поиска информации (IR) для доступа к базам знаний.

Ярким примером целеустремленных агентов являются виртуальные помощники, такие как Alexa, Siri и Cortana. Эти агенты универсальны и способны обрабатывать широкий спектр пользовательских запросов, включая запись на прием, заказ еды, проверку погоды и многое другое. Они предназначены для понимания естественного языка, часто при необходимости используя машинное обучение, и соответствующим образом реагируют на запросы или команды пользователя, что делает их важным инструментом для многих людей в их повседневной жизни.

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

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

Есть несколько примечательных примеров LLM, которые поддерживают создание диалогов в этой третьей категории, включая LaMDA и Meena от Google, а также ChatGPT от OpenAI. LaMDA, разработанный Google, может похвастаться 137 миллиардами параметров и был предварительно обучен на обширном корпусе данных публичных диалогов и веб-текстов, насчитывающих 1,56 триллиона слов. Точно так же Meena, которая имеет около 2,6 миллиардов параметров, основана на большом наборе данных общедоступных разговоров в социальных сетях, содержащих 40 миллиардов слов, которые были извлечены и отфильтрованы из данных социальных сетей. Обе эти модели могут обрабатывать непринужденные разговоры и поддерживать многократные диалоги и переключение контекста.

Точно так же ChatGPT от OpenAI — это модель генеративного диалога, основанная на исходной модели GPT-3 и содержащая примерно 175 миллиардов параметров. ChatGPT был обучен на большом массиве текстовых данных объемом 570 ГБ, включая веб-страницы, книги и другие источники. Его основная цель — генерировать связный и плавный текст в ответ на заданную подсказку, что делает его полезным для различных задач генерации естественного языка (NLG), таких как завершение текста, резюмирование и перевод. Стоит отметить, что ChatGPT был одной из первых успешно коммерциализированных языковых моделей.

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

Многооборотные беседы для LLM: понимание контекста и согласованности

В последние годы LLM становятся все более популярными благодаря своей способности решать широкий спектр задач NLU/NLG. Одним из значительных преимуществ LLM является их способность обрабатывать нюансы языка, такие как идиомы, сарказм и юмор, и давать более содержательные ответы, особенно при использовании в контексте чат-ботов или виртуальных помощников.

Разговор с несколькими оборотами является сложной задачей для LLM, потому что он требует, чтобы модель поддерживала контекст и согласованность между несколькими высказываниями. В отличие от однооборотного разговора, который мы рассмотрели в предыдущей статье, где модель может сосредоточиться на понимании смысла одного предложения, многооборотный разговор требует, чтобы модель отслеживала всю историю разговора и текущее состояние разговор. Тем не менее, многосторонний разговор имеет решающее значение для успеха чат-ботов, таких как ChatGPT. В реальных сценариях люди часто участвуют в продолжительных беседах, и чат-бот, который может поддерживать контекст и согласованность в течение нескольких ходов, с большей вероятностью обеспечит удовлетворительный пользовательский интерфейс. Многосторонний разговор также позволяет чат-боту лучше понимать потребности пользователя и давать более персонализированные и полезные ответы.

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

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

В моделях генеративного диалога обычно используется подход скользящего контекстного окна для управления кратковременной памятью, когда контекст разговора постоянно обновляется с каждым новым вводом в ходе разговора. По мере обработки каждого нового ввода (высказывания) самый старый ввод удаляется из памяти, позволяя чат-боту сосредоточиться на самом последнем контексте. Этот подход со скользящим окном позволяет чат-боту поддерживать соответствующий контекст на протяжении всего разговора, что необходимо для получения точных и подходящих ответов. OpenAI обучил ChatGPT участвовать в многооборотных беседах, используя технику под названием «генерация диалогового ответа». Подход включает в себя точную настройку предварительно обученной модели GPT-3.x для прогнозирования следующего высказывания в разговоре с учетом истории разговора.

Эта статья призвана помочь вам в процессе создания генеративного чат-бота с использованием большой языковой модели (LLM), такой как GPT-Neo. Чат-бот будет настроен с помощью наборов данных сеанса диалога, чтобы он мог генерировать ответы, подобные человеческим, в стиле многооборотной беседы. До этой статьи мы изучали, как предварительно обучать LLM с нуля (статья BERT | статья GPT) на предметно-ориентированных данных и использовать их для любой задачи NLU по нашему выбору. Мы также подробно рассмотрели шаги, связанные с созданием однооборотного бота, отвечающего на вопросы, адаптированного к конкретному домену, в нашей самой последней статье под названием ChatGPT Decoded. Основываясь на этих предыдущих статьях, мы сейчас продемонстрируем, как создать многооборотный чат-бот, который может с нуля генерировать ответы, подобные человеческим. Это руководство покажет вам, как легко адаптировать этот подход к их предметной области, таким образом, служащее продолжением наших предыдущих статей.

I. Набор данных

Перед обучением чат-бота нам нужно собрать некоторые данные для обучения модели. Для этой цели мы будем использовать три открытых набора данных: набор данных PersonaChat от Facebook AI, набор данных Empathetic Dialogues от Hugging Face Hub и Daily Dialogs набор данных из Hugging Face. Набор данных PersonaChat содержит около 8 784 примеров и представляет собой набор данных для болтовни, в котором парные турки получают назначенные персонажи и общаются друг с другом, чтобы узнать друг друга. Набор данных Empathetic Dialogues основан на статье На пути к эмпатическим моделям общения в открытой области: новый эталон и набор данных и доступен на Hugging Face. Он содержит в общей сложности около 99 646 разговоров. Точно так же набор данных Ежедневные диалоги, также доступный на Hugging Face, содержит в общей сложности примерно 12 118 разговоров.

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

II. Токенизация

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

Наш начальный шаг включает в себя объединение нескольких наборов данных в один файл CSV, который мы назовем dialogues.csv, где каждая строка представляет полный сеанс диалога. Повороты внутри каждого диалога разделены разделителем <> . Для токенизации наших данных мы используем токенизатор по умолчанию GPT-Neo, который также является моделью, которую мы намерены доработать. GPT-Neo — это причинно-следственная языковая модель (CLM) на основе преобразователя, которая использует репликацию EleutherAI архитектуры GPT-3. Мы выбираем 125-мегапиксельную версию GPT-Neo, которая была обучена на наборе данных Pile, состоящем из колоссальных 300 миллиардов токенов за 572 300 шагов, с использованием кросс-энтропийной потери в качестве замаскированной авторегрессионной языковой модели.

Перед токенизацией мы определяем среднюю длину диалога, которая, как мы обнаружили, составляет 252. Мы устанавливаем два ограничения для фильтрации диалогов, требуя, чтобы каждый диалог был не более чем в четыре раза длиннее средней длины и содержал как минимум два хода. Ограничения настраиваются в зависимости от набора данных и выбранной модели. Ограничение длины диалога гарантирует, что выбранные нами диалоги не будут слишком длинными для максимального предела токена, поддерживаемого архитектурой GPT-Neo, который составляет 2048.

Перед токенизацией мы также добавляем в токенизатор специальные идентификаторы токенов, включая начало предложения bos_id, конец предложения eos_id, speaker_1_id, speaker_2_id и _6. Эти меры помогают нам точно подготовить данные для токенизации. После фильтрации у нас остается примерно 20 000 многооборотных разговоров, чтобы начать фактический процесс токенизации.

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

На приведенных ниже рисунках показан процесс добавления специальных токенов как к высказываниям, так и к оборотам и их объединения в три тензорных компонента, которые соответствуют ожиданиям LLM на этапе обучения. Результирующие компоненты тензора — input_ids, token_type_ids и labels, которые имеют основополагающее значение для процесса обучения.

Следующий фрагмент кода демонстрирует процесс токенизации сеансов диалога:

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

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

labelscomponent представляет собой золотой ответ, который модель должна генерировать на каждом этапе, соответствующем вводу человека. Во время тонкой настройки это можно создать, замаскировав все позиции, кроме частей ответа, представленных специальным токеном для динамика 2. Однако во время вывода метки недоступны, поскольку модель генерирует ответ без цели для прогнозирования.

При точной настройке моделей GPT для диалоговых наборов данных максимальная длина входных последовательностей ограничена фиксированным числом токенов, по умолчанию максимальное значение составляет 2048 для модели GPT-Neo. Поскольку входные данные создаются путем объединения всех высказываний в истории диалога, в некоторых случаях может быть невозможно включить всю историю, в зависимости от длины каждого высказывания. Чтобы решить эту проблему, чрезмерные высказывания, превышающие максимальную длину, исключаются после включения как можно большего числа оборотов в пределах предварительно определенного максимального числа оборотов.

Чтобы гарантировать, что входные данные в пакете имеют одинаковую длину, определена функция сопоставления для заполнения входных данных во время пакетной загрузки с использованием функции torch.nn.utils.rnn.pad_sequencePyTorch с указанным токеном заполнения. Такой подход снижает ненужное использование памяти, поскольку заполнение создается динамически для каждого пакета.

Для предварительной обработки данных и токенизации мы использовали экземпляр Notebook SageMaker Studio типа экземпляра ml.g5.4x.large. Этот тип экземпляра предоставляет 16 виртуальных ЦП, 64 ГиБ памяти и один Графический процессор NVIDIA A10G с тензорными ядрами, что делает его подходящим для рабочих нагрузок машинного обучения общего назначения, требующих умеренных ресурсов ЦП и памяти. Мы не использовали несколько графических процессоров или несколько узлов с несколькими графическими процессорами для нашего варианта использования.

Если набор данных больше с большим количеством сеансов диалогов и высказываний, может потребоваться вертикальное масштабирование экземпляра Studio Notebook, чтобы увеличить мощность графического процессора. Однако, если для очень большого набора данных разговоров требуется горизонтальное масштабирование, можно использовать контейнеры глубокого обучения HuggingFace с обработкой SageMaker. Пример этого можно найти в блокноте, связанном со статьей Train Your Own GPT from Scratch.

III. Обучение

После того как мы токенизировали все диалоговые сеансы и сохранили их в виде набора данных, следующим шагом будет использование LLM, в данном случае GPT-Neo, и его тонкая настройка для понимания шаблонов диалоговых высказываний. Для нашего варианта использования мы начали примерно с 20 000 сеансов диалога. После фазы токенизации эти сеансы развертываются и токенизируются до 103 524 ходов.

Затем мы разделяем набор данных на обучающую и проверочную части, каждая из которых состоит из 93 171 и 10 353 поворотов соответственно. Мы точно настраиваем модель примерно на 5 эпох, используя экземпляр SageMaker Studio с одним узлом «p3dn.24xlarge». Этот тип экземпляра предоставляет 8 графических процессоров NVIDIA V100 с тензорными ядрами, каждый с 32 ГБ памяти. Мы также устанавливаем размер пакета поезда и проверки равным 4.

Процесс обучения занимает менее 2,5 часов. На приведенных ниже диаграммах показаны потери при обучении и проверке, а также использование 8 графических процессоров.

Фрагмент кода для процесса обучения показан ниже, где мы сначала загружаем модель, а затем повторно создаем токенизатор, используя те же специальные токены, которые использовались на этапе токенизации. Затем мы создаем тренер, чтобы начать процесс тонкой настройки.

Если вы хотите распределённо настроить большой набор данных с многочисленными сеансами диалога, вам следует рассмотреть возможность использования распределённого обучения SageMaker. Этот сервис предоставляет различные стратегии распределенного обучения, включая параллелизм данных, параллелизм моделей и параллелизм тензоров. Используя эти стратегии, вы можете распределить рабочую нагрузку обучения между несколькими вычислительными ресурсами, что приведет к сокращению времени обучения, повышению точности и масштабируемости. Вы можете получить доступ к доработанной модели на хабе HuggingFace здесь.

IV. Вывод

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

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

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

Приведенный ниже код определяет функцию chat(), которая использует настроенную модель GPT, созданную на предыдущем шаге, для генерации ответов на вводимые пользователем данные. Для этого функция сначала инициализирует историю запросов и входит в цикл, который продолжается до тех пор, пока пользователь не введет команду RESET. В цикле функция принимает пользовательский ввод, добавляет идентификатор говорящего в начало запроса и кодирует его с помощью ранее воссозданного токенизатора. Затем ввод добавляется в историю запросов, которая усекается, если превышает максимальное количество оборотов. Поскольку модель не была точно настроена на большом количестве данных, параметру MAX_TURNS присвоено значение 4, но его можно увеличить, если для обучения запоминанию более длинной цепочки высказываний используется больше данных.

Функция также настраивает входной тензор для модели, добавляя идентификаторы начала и конца последовательности и преобразовывая его в тензор PyTorch. Он также создает тензор идентификаторов типов токенов на основе говорящего каждого хода в истории запросов. Затем он передает входной тензор и конфигурацию генерации в модель для генерации ответа без компонента метки, поскольку он доступен только на этапе обучения.

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

Давайте подробнее рассмотрим параметры конфигурации, используемые в процессе генерации модели. Мы будем исключать input_ids и token_type_ids, так как это входные тензоры для модели.

  • pad_token_id: Этот параметр используется для обозначения конца сгенерированной последовательности. В данном случае установлено значение eos_id, что означает «конец последовательности». Когда модель сгенерирует токен с этим идентификатором, она перестанет генерировать другие токены.
  • do_sample: Этот параметр используется для указания, следует ли использовать выборку во время генерации текста. Выборка включает в себя случайный выбор следующего слова из прогнозируемого моделью распределения вероятностей на каждом шаге, а не всегда выбор наиболее вероятного слова. Установив do_sample=True, мы позволяем модели генерировать более разнообразный и креативный результат.
  • top_p: Этот параметр управляет разнообразием генерируемого вывода при использовании выборки. Он устанавливает порог для кумулятивной вероятности включения наиболее вероятных токенов в набор токенов, доступных для выборки. Увеличение значения top_p приводит к более широкому спектру возможных выборок токенов, что приводит к более разнообразному результату. Этот метод также известен как ядерная выборка. Это можно включить, установив значение top_p между 0 и 1. Для нашего чат-бота мы устанавливаем для этого параметра максимальное значение 1.
  • max_length: Этот параметр устанавливает максимальную длину генерируемой последовательности. Когда длина сгенерированной последовательности достигает этого значения, процесс генерации останавливается, даже если модель не сгенерировала eos_token_id. Установка более короткого значения max_length может привести к более короткому и целенаправленному выводу, а более длинное max_length может привести к более подробному выводу. Для нашего эксперимента мы установили его на 128.

Ниже приведены несколько примеров коротких разговоров с чат-ботом, которого мы обучили, используя всего 20 000 разговоров. Мы устанавливаем максимальное количество витков для запоминания на 4 и конфигурации генерации, как указано выше. Несмотря на ограниченные данные для обучения, чат-бот смог дать связные ответы и в определенной степени запомнить предыдущие ходы. Однако для улучшения качества и возможностей памяти чат-бота требуется кормить его большим количеством разговоров и увеличивать вычислительные ресурсы для более длительного обучения. Объем необходимых ресурсов можно экстраполировать на основе ранее совместно используемой вычислительной инфраструктуры.

Код вывода для этого проекта можно найти в сопроводительном репозитории здесь. На этапе вывода мы использовали экземпляр ноутбука g4dn.4xlarge SageMaker Studio в Интернете, который представляет собой экземпляр графического процессора с 16 виртуальными ЦП, 16 ГБ памяти и одним графическим процессором NVIDIA T4 Tensor Core. В производственной среде предприятия вы можете использовать хостинг SageMaker для развертывания обученной модели для логического вывода. Вы можете использовать один и тот же тип экземпляра, например экземпляр g4dn.4xlarge или более крупные экземпляры с большим количеством графических процессоров, для размещения модели. Это позволяет легко масштабировать модель для обработки больших рабочих нагрузок для увеличения задержки и пропускной способности, а также предоставляет такие функции, как автоматическое масштабирование и высокая доступность. Используя хостинг SageMaker, вы можете быть уверены, что ваша модель легкодоступна и отвечает потребностям вашего приложения. Вы можете получить доступ к доработанной модели на хабе HuggingFace здесь.

Заключительные замечания

Подводя итог, в этой статье мы рассмотрели использование LLM, таких как GPT-Neo, для точной настройки данных разговоров, в результате чего появился чат-бот с открытым доменом, который может участвовать в человеческом общении. Мы также научились включать предыдущие ходы в историю диалога во время логического вывода, чтобы научить модель распознавать окно контекста в течение ограниченного короткого периода времени. Однако этот подход имеет определенные ограничения.

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

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

Еще одним ограничением текущих моделей разговорного ИИ является отсутствие у них знаний и способностей генерации, основанных на здравом смысле. Хотя эта тема не была подробно исследована в этой статье, она остается одной из наиболее активно изучаемых областей в области генерации естественного языка. Существуют различные методологии для внедрения знаний в существующие модели, такие как включение баз знаний и графиков, использование внешних инструментов, таких как Википедия или базы данных, для поиска знаний в пользовательской области. Долговременную память и доступ к фактическим знаниям можно в значительной степени решить, выполняя вызовы API к проиндексированным базам знаний либо в виде запросов на основе ключевых слов на естественном языке, либо с помощью индексированных вложений с семантическим поиском и извлечением.

По сути, LLM произвели революцию в области НЛП и широко используются во многих приложениях. Их способность запоминать, обобщать и генерировать сложные языковые структуры позволяет им выполнять различные задачи, такие как понимание языка и генерация текста, с беспрецедентной точностью. Этот прогресс в NLP улучшил возможности взаимодействия человека с компьютером с увеличением пропускной способности.

AWS предлагает ряд готовых моделей генеративного ИИ, включая семейство GPT, а также модели от таких партнеров, как AI21 Labs, Co:here, Stability AI и HuggingFace для мультимодальных вариантов использования. Все эти модели доступны через SageMaker JumpStart, который служит центром моделей для SageMaker. Кроме того, JumpStart предоставляет доступ к современным моделям, разработанным собственными силами Amazon, например к семейству моделей AlexaTM. Все эти модели могут быть легко интегрированы в корпоративные приложения и легко доступны для использования.

Спасибо, что нашли время, чтобы прочитать и принять участие в этой статье. Ваша поддержка в виде подписки на меня и аплодисментов статье очень ценна и ценна. Если у вас есть какие-либо вопросы или сомнения относительно содержания этой статьи или общих блокнотов, не стесняйтесь обращаться ко мне по электронной почте [email protected] или shankar [email protected]. Вы также можете связаться со мной по https://www.linkedin.com/in/arunprasath-shankar/

Я приветствую любые ваши отзывы или предложения. Если вы увлечены машинным обучением в масштабе, НЛП/НЛУ и заинтересованы в сотрудничестве, я буду рад связаться с вами. Кроме того, если вы являетесь частным лицом или частью стартапа или предприятия, которое хочет получить представление об Amazon Sagemaker и его приложениях в NLP/ML, я буду рад помочь вам. Не стесняйтесь обращаться ко мне.

Рекомендации