Эта статья представляет Гориллу; Калифорнийский университет в Беркли и поддержка Microsoft API для больших языковых моделей.

Введение

LLM страдают от устаревшей информации, и им требуется переподготовка, чтобы быть в курсе последних изменений. С ограниченным контекстом и весами LLM не могут хранить данные для точных ответов. Таким образом, LLM дополняются использованием многочисленных инструментов и плагинов, которые используют внешние API для получения более качественных ответов.

Gorilla представляет самообучение по тонкой настройке и извлечению информации из большого набора API-интерфейсов, которое обеспечивает лучшие результаты, чем ведущие LLM, включая, помимо прочего, ChatGPT4 и Claude.

Набор данных

Авторы создали APIBench, исчерпывающий набор корпусов API, взятых из трех основных центров моделей.

  • TorchHub: 94 вызова API
  • TensorHub: 696 вызовов API.
  • HuggingFace: выбраны только 20 самых загружаемых моделей, всего 925 вызовов API.

Затем с помощью Self-Instruct авторы использовали GPT 4 для создания реалистичных подсказок, использующих API, и создали 10 различных пар инструкция-API для точной настройки LLM.

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

Gorilla — это доработанная модель LLaMA-7B в наборе данных APIBench. Авторы используют обучение в стиле чата, в котором используется каждый вызов API, аналогично реальному разговору между пользователем и чат-ботом. Затем модель LLaMA настраивается с ретривером и без него.

Вызов API с ограничениями

Рассмотрим следующую подсказку:

Вызвать модель классификации изображений, которая использует менее 10 миллионов параметров, но поддерживает точность ImageNet не менее 70 %.

LLM сталкиваются с проблемами при создании ответов на такие запросы, поскольку пользователь добавляет ограничения на вызов API и связанные с ним параметры.

Обучение ретриверам

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

«Используйте эту документацию API для справки: ‹retrieved_API_doc_JSON›»

Во время тонкой настройки Gorilla стремится проанализировать вторую половину, чтобы получить требуемую спецификацию API, чтобы ответить на первую часть вопроса.

Вывод

Gorilla можно использовать в двух разных режимах, подобных двум методам, упомянутым выше.

Пользователь предоставляет подсказку на естественном языке, и Gorilla анализирует ее двумя способами. Zero-shot передает тот же запрос без каких-либо дополнений к тонко настроенному LLM Gorilla, который возвращает ответ API. В режиме поиска Gorilla использует GPT-Index или BM25, чтобы сначала получить наиболее подходящую документацию по API, которая добавляется в приглашение пользователя. Сообщение Используйте эту документацию API для справки: объединяется с запросом пользователя перед отправкой в ​​Gorilla LLM.

Методология резюмируется следующим изображением:

Авторы использовали большой массив данных API для создания 16 450 подсказок и пар ответов, созданных с помощью самообучения. Они использовались для тонкой настройки Gorilla LLM. Во время вывода на изображении выделяются два метода вывода: нулевой выстрел и методы извлечения информации . При использовании нулевого выстрела подсказка передается в Gorilla LLM без какой-либо предварительной обработки. При использовании метода поиска информации подсказка на естественном языке отправляется средству извлечения, которое сравнивает подсказку пользователя с существующей базой данных API. Соответствующая документация по API возвращается и объединяется с запросом пользователя перед отправкой в ​​Gorilla LLM.

Полученные результаты

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

В статье обобщены результаты оценки Gorilla на собранном наборе данных с использованием различных методов поиска. Модель работает лучше, чем другие LLM, при запросах с конкретными API-подсказками. На графической иллюстрации показаны такие результаты:

Преимущества Gorilla LLM:

Уменьшение галлюцинаций

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

Улучшенная генерация кода

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

Применение

Код с открытым исходным кодом доступен на GitHub. Для вывода, к Gorilla можно получить доступ с помощью предоставленного блокнота Colab или с помощью интерфейса командной строки через код.

Сначала создайте новую среду и установите все зависимости.

conda create -n gorilla python=3.10
conda activate gorilla
pip install -r requirements.txt

Точные настройки дельта-весов для Gorilla доступны на HuggingFace. Оригинальные гири LLaMA доступны здесь. После загрузки весов примените веса к исходной модели LLaMA, используя следующий код:

python3 apply_delta.py 
 - base-model-path path/to/hf_llama/ 
 - target-model-path path/to/gorilla-7b-hf-v0 
 - delta-path path/to/models - gorilla-llm - gorilla-7b-hf-delta-v0

Затем модель можно запустить с помощью данной команды:

python3 serve/gorilla_cli.py - model-path path/to/gorilla-7b-{hf,th,tf}-v0

Заключение

Статья представила Gorilla LLM, модель LLaMA, специально настроенную для вызовов API. Он обеспечивает лучшие ответы, чем GPT-4, для всех трех собранных наборов данных и лучше подходит для адаптации к изменениям использования API во время выполнения.

Правильное использование Gorilla может повысить производительность LLM, используя широкий спектр инструментов и плагинов.