Эта статья представляет Гориллу; Калифорнийский университет в Беркли и поддержка 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, используя широкий спектр инструментов и плагинов.