Приглашаются все функции

Приглашаем на все мероприятия

Картинка, созданная автором с использованием Dall-E

Оценка вызова функций и объяснений OpenAI

Благодаря Роджеру Янгу за его вклад в эту статью

Прослеживаемость в сторонних моделях большого языка (Large Language Models – LLMs) в основном осуществляется через оценку и бенчмаркинг, так как модели, такие как Claude от Anthropic, модели GPT от OpenAI и PaLM 2 от Google, являются собственностью компаний. В этом посте мы проводим тестирование моделей GPT от OpenAI с помощью вызова функций и объяснений, сравнивая их с различными показателями производительности. Мы специально интересуемся тем, как модели GPT и функции OpenAI выполняют правильную классификацию и выдачу галлюцинируемых и соответствующих ответов. Ниже приведены результаты оценки, демонстрирующие компромиссы между скоростью и производительностью различных систем применения LLM, а также обсуждение того, как эти результаты с объяснениями могут быть использованы для разметки данных, оценки с поддержкой LLM и проверки качества. Мы также предоставляем ниже экспериментальную структуру, чтобы практикующие могли вносить изменения и улучшать базовый шаблон классификации.

Вызов функций и объяснения OpenAI

С функцией вызова функций OpenAI вы можете описывать функции для различных моделей GPT, которые затем можно использовать для получения JSON-объекта, содержащего аргументы для вызова этих функций. Вызов функций в основном действует как инструмент или агент для записи ответа в заданном формате с целью надежного соединения возможностей модели GPT от OpenAI с внешними инструментами и API. Что касается объяснений, так как во многих случаях бывает сложно понять, почему LLM отвечает определенным образом, эти элементы призваны побуждать LLM обосновывать, правильный ли вывод. Затем вы можете присоединить метку вывода (‘соответствующий’ или ‘несоответствующий’) и объяснение от LLM. Ниже приведен пример ‘соответствующей’ оценки с объяснением для устранения ошибок в ответах LLM.

Картинка, созданная автором

В разделе “Результаты и компромиссы” ниже представлены таблицы сравнения для двух случаев использования: предсказание соответствия и предсказание галлюцинаций (это Таблица 1 и Таблица 2 соответственно). В каждой таблице сравниваются производительность моделей GPT-4 Turbo, GPT-4, GPT-3.5 и GPT-3.5 Turbo по различным метрикам классификации (точность, точность полноты, показатель F1) при определенных указаниях запуска и атрибутах LLM.

Четыре основные тестированные модели оцениваются по этим метрикам (помимо медианного времени обработки) для следующих случаев:

  • Без вызова функций и без объяснений
  • С вызовом функций и без объяснений
  • С вызовом функций и с объяснениями
  • Без вызова функций и с объяснениями

Тема запуска в LLM поэтому остается неизменной (т.е. стандартное заполнение предложений) для примеров без вызова функций и без объяснений. Образцы с вызовом функций и без объяснений требуют от LLM поместить свой ответ в JSON-объект, который принимает только перечисления в качестве ввода, и образцы с вызовом функций и с объяснениями требуют от LLM предоставить объяснение вместе с ответом в том же JSON-объекте (см. тетрадь Google Colab).

Оцениваемый набор данных и метрики оценки

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

  • Точность и полнота: насколько актуальна полученная информация?
  • Точность: насколько контекстуально точны ответы?
  • Задержка: сколько времени занимает системе предоставить ответ?
  • Отзывы пользователей: как влияют на опыт пользователя соответствие и время отклика результата?

Результаты и компромиссы

Вот результаты тестирования систем LLM для предсказания нерелевантной и актуальной информации:

Таблица 1 автора

Вот результаты тестирования систем LLM для галлюцинаций и фактических предсказаний:

Таблица 2 автора

Прежде чем приступить к анализу результатов, вы можете воспроизвести их сами в этой тетради Google Colab. Обратите внимание, что обычно вы не сможете воссоздать точные значения в этих таблицах из-за недетерминированной природы LLM, но для этой тетради мы добавили значение seed для выборки, поэтому оно будет одинаковым каждый раз. Кроме того, была добавлена стратифицированная выборка, чтобы бинарные категории были точно в соотношении 50/50. Обратите внимание, что запуск этой тетради с использованием ваших ключей OpenAI API требует определенных вычислительных ресурсов. Количество образцов по умолчанию установлено на 2, но вы можете изменить его на 100, если хотите воспроизвести результаты этого блога.

Время обработки VoAGI

Чтобы избежать неясностей, эти сравнения (используя 100 образцов) выполнялись в Google Colab с использованием стандартного аккаунта и ключа OpenAI API. Таким образом, хотя значения задержки вряд ли будут точными при работе на другой конфигурации, самые медленные и самые быстрые модели будут воспроизведены.

Кроме того, использование объяснений в ваших оценках может занять от 3 до 20 раз больше времени для компиляции (это не зависит от вызова функции).

Для модельной предсказательной способности по актуальности в целом

  • Задержка: GPT-3.5-instruct > GPT-3.5-turbo > GPT-4-turbo > GPT-4

Для модельной предсказательной способности по галлюцинациям

  • Задержка: GPT-3.5-instruct > GPT-3.5-turbo ~ GPT-4-turbo > GPT-4

Модели GPT с вызовом функции, как правило, имеют немного большую задержку по сравнению с LLM без вызова функции, но принимайте это с некоторой осторожностью, потому что есть несколько оговорок. Во-первых, время отклика извлекается из заголовков HTTP, возвращаемых OpenAI, поэтому, в зависимости от вашего аккаунта и способа выполнения этих запросов, значения задержки могут отличаться, так как они были рассчитаны внутренне OpenAI. Компромиссы вызова функции также зависят от вашей задачи. Например, без вызова функции вам нужно точно указать, как вы хотите, чтобы ваш вывод был структурирован, предоставив примеры и подробное описание. Однако, если вашей целью является извлечение структурированных данных, тогда будет наиболее просто работать непосредственно с API вызова функций OpenAI.

В целом LLM с вызовом функции выполняются на уровне LLM, которые не используют вызов функции, а вместо этого используют обычное завершение подсказки. Решение о том, использовать ли API вызова функции OpenAI вместо инженерии подсказок, должно зависеть от вашей задачи и сложности вывода.

Сравнение производительности моделей GPT

Для модельной предсказательной способности по актуальности в целом:

  • Производительность: GPT-4 ~ GPT-4-turbo ~ GPT-3.5-turbo >>> GPT-3.5-instruct

Для оценки предсказательных способностей модели по галлюцинациям:

  • Производительность: GPT-4 ~ GPT-4-turbo > GPT-3.5-turbo > GPT-3.5-instruct

Интересно, что в обоих случаях использование объяснений не всегда улучшает производительность. Подробнее об этом ниже.

Метрики оценки

Если вы решаете, какой LLM использовать для предсказания актуальности, вам следует использовать либо GPT-4, GPT-4-turbo, либо GPT-3.5-turbo.

GPT-4-turbo точно определяет, когда вывод является актуальным, но жертвует полнотой, фактически полнота не лучше, чем случайное угадывание, даже при использовании объяснений.

GPT-3.5-turbo страдает от той же компромиссной ситуации, при этом имеет более низкую задержку и точность. Из этих результатов следует, что GPT-4 имеет наивысшие значения F1 (гармоническое среднее точности и полноты) и общую лучшую производительность, при этом время работы сравнимо со временем работы GPT4-turbo.

GPT-3.5-instruct предсказывает все как актуальное и поэтому не является пригодным LLM для предсказания актуальности. Интересно, что при использовании объяснений производительность предсказания значительно улучшается, хотя она все равно уступает другим LLM. Кроме того, GPT-3.5-instruct не может использовать API вызова функций OpenAI и, скорее всего, будет устаревать в начале 2024 года.

Если вы решаете, какой LLM использовать для предсказания галлюцинаций, вам следует использовать либо GPT-4, GPT-4-turbo, либо GPT-3.5-turbo.

Результаты показывают, что GPT-4 правильно идентифицирует галлюцинации и фактические выводы чаще (~3% больше времени) по метрикам точности, точности, полноты и F1, чем GPT-4-turbo.

Хотя GPT-4 и GPT-4-turbo немного превосходят GPT-3.5-turbo (необходимо использовать большее количество примеров, прежде чем делать выводы о том, что небольшой разрыв не является шумом), возможно, стоит поработать с GPT-3.5-turbo, если вы планируете использовать объяснения.

Объяснения для предсказания галлюцинаций и фактических результатов возвращаются более чем в три раза быстрее для GPT-3.5-turbo, чем для GPT-4 и GPT-4-turbo, однако полнота страдает как для GPT-3.5-моделей, так и для полноты моделей GPT-4 при правильном предсказании галлюцинаций.

Обсуждение и Выводы

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

Изображение автора | Оценка двух различных шаблонов призыва на одну фундаментальную модель. Мы тестируем один и тот же набор данных с помощью двух шаблонов и наблюдаем, как соотносятся их метрики, такие как точность и полнота.

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

Потенциальные перспективы будущей работы: Объяснение маркировки данных

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

Ниже приведен один из примеров набора данных wiki для определения соответствия. Обратите внимание, что столбец ‘D’ содержит истинную метку, предоставленную набором данных, столбец ‘E’ содержит прогнозируемую метку без вызова функции и объяснения, а столбец ‘F’ содержит прогнозируемую метку, созданную (без вызова функции) с помощью объяснения, расположенного в столбце ‘G’. Столбец ‘E’ и столбцы ‘F’ и ‘G’ представляют собой ответы от двух разных вызовов LLM. Столбцы F и G были сгенерированы одновременно из одного вызова, как показано на рисунке 1 ниже.

Рисунок 1 (автор): Снимок экрана скрипта (код предоставлен в colab). Здесь метка и объяснение возвращаются вместе, но мы просим сначала предоставить объяснение (см. приглашение).

В таблице ниже приведен пример, когда истинная метка равна ‘соответствующая’, прогнозируемая метка LLM без вызова функции также равна ‘соответствующая’, но затем метка меняется на ‘несоответствующая’, когда у LLM запрашивается предоставить сначала объяснение. Как и в нескольких аналогичных примерах, LLM представляет обоснованный аргумент в пользу маркировки полученного ответа на вопрос пользователя как ‘несоответствующий’. Хотя многие из нас часто думают о Римской империи, мы можем согласиться, что многоабзацный ответ на вопрос “как долго длилась Римская империя?” является недостаточно лаконичным и соответствующим для получения положительной обратной связи от конечного пользователя. Существует множество возможностей для LLM-помощника в оценке, включая сокращение затрат и времени для компаний, которым необходимы данных с метками. Это, а также передача ссылок (документов, использованных для прогнозирования) LLM, являются значительными прорывами в сфере наблюдаемости LLM.

Пример от автора

Заключение

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

Есть вопросы? Пожалуйста, свяжитесь с нами!