Basaran — это альтернатива API завершения текста OpenAI с открытым исходным кодом. Он предоставляет совместимый потоковый API для ваших моделей генерации текста на основе Hugging Face Transformers.
Сообщество открытого исходного кода в конечном итоге станет свидетелем момента стабильного распространения больших языковых моделей (LLM), и Basaran позволяет вам заменить сервис OpenAI новейшей моделью с открытым исходным кодом для поддержки вашего приложения без изменения ни одной строки кода.
Ключевыми особенностями Басарана являются:
Замените user/repo
на выбранную вами модель и XYZ
на последнюю версию, затем запустите:
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
И ты готов идти!
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Образы Docker доступны в пакетах Docker Hub и GitHub.
Для ускорения графического процессора вам также необходимо установить драйвер NVIDIA и среду выполнения контейнера NVIDIA. Образ Басарана уже поставляется с соответствующими библиотеками, такими как CUDA и cuDNN, поэтому нет необходимости устанавливать их вручную.
Изображение Басарана можно использовать тремя способами:
MODEL="user/repo"
, соответствующую модель можно загрузить из Hugging Face Hub при первом запуске.MODEL
соответствующий путь.Для приведенных выше случаев использования вы можете найти примеры файлов Dockerfile и файлов docker-compose в каталоге развертываний.
Basaran протестирован на Python 3.8+ и PyTorch 1.13+. Вам следует создать виртуальную среду с той версией Python, которую вы хотите использовать, и активировать ее, прежде чем продолжить.
pip
: pip install basaran
pip install accelerate bitsandbytes
user/repo
на выбранную модель и запустите Basaran: MODEL=user/repo PORT=80 python -m basaran
Полный список переменных среды см. в __init__.py
.
Если вы хотите получить доступ к новейшим функциям или взломать их самостоятельно, вы можете запустить из исходного кода с помощью git
.
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
на выбранную модель и запустите Basaran: MODEL=user/repo PORT=80 python -m basaran
Форматы HTTP-запросов и ответов Basaran соответствуют API OpenAI.
Возьмем завершение текста в качестве примера:
curl http://127.0.0.1/v1/completions
-H ' Content-Type: application/json '
-d ' { "prompt": "once upon a time,", "echo": true } '
{
"id" : " cmpl-e08c701b4ba032c09ef080e1 " ,
"object" : " text_completion " ,
"created" : 1678003509 ,
"model" : " bigscience/bloomz-560m " ,
"choices" : [
{
"text" : " once upon a time, the human being faces a complicated situation and he needs to find a new life. " ,
"index" : 0 ,
"logprobs" : null ,
"finish_reason" : " length "
}
],
"usage" : {
"prompt_tokens" : 5 ,
"completion_tokens" : 21 ,
"total_tokens" : 26
}
}
Если ваше приложение использует клиентские библиотеки, предоставленные OpenAI, вам нужно всего лишь изменить переменную среды OPENAI_API_BASE
, чтобы она соответствовала конечной точке Basaran:
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
Каталог примеров содержит примеры использования библиотеки OpenAI Python.
Basaran также доступен в виде библиотеки на PyPI. Его можно использовать непосредственно в Python без необходимости запуска отдельного сервера API.
pip
: pip install basaran
load_model
для загрузки модели: from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
Каталог примеров содержит примеры использования Basaran в качестве библиотеки.
Формат API Basaran соответствует формату OpenAI, с различиями в совместимости, главным образом, с точки зрения поддержки параметров и полей ответа. В следующих разделах представлена подробная информация о совместимости каждой конечной точки.
Каждый процесс Basaran обслуживает только одну модель, поэтому результат будет содержать только эту модель.
Хотя Basaran не поддерживает параметр model
, клиентская библиотека OpenAI требует его присутствия. Поэтому вы можете ввести любое случайное имя модели.
Параметр | Басаран | ОпенАИ | Значение по умолчанию | Максимальное значение |
---|---|---|---|---|
model | ○ | ● | - | - |
prompt | ● | ● | "" | COMPLETION_MAX_PROMPT |
suffix | ○ | ● | - | - |
min_tokens | ● | ○ | 0 | COMPLETION_MAX_TOKENS |
max_tokens | ● | ● | 16 | COMPLETION_MAX_TOKENS |
temperature | ● | ● | 1.0 | - |
top_p | ● | ● | 1.0 | - |
n | ● | ● | 1 | COMPLETION_MAX_N |
stream | ● | ● | false | - |
logprobs | ● | ● | 0 | COMPLETION_MAX_LOGPROBS |
echo | ● | ● | false | - |
stop | ○ | ● | - | - |
presence_penalty | ○ | ● | - | - |
frequency_penalty | ○ | ● | - | - |
best_of | ○ | ● | - | - |
logit_bias | ○ | ● | - | - |
user | ○ | ● | - | - |
Предоставить единый API чата в настоящее время сложно, поскольку каждая модель имеет свой формат истории чата.
Поэтому рекомендуется предварительно отформатировать историю чата с учетом требований конкретной модели и использовать ее в качестве подсказки для API завершения.
**Summarize a long document into a single sentence and ...**
<human>: Last year, the travel industry saw a big ...
<bot>: If you're traveling this spring break, ...
<human>: But ...
<bot>:
[Round 0]
问:你好
答:你好!有什么我可以帮助你的吗?
[Round 1]
问:你是谁?
答:
Полный список предлагаемых функций см. в открытых вопросах.
Этот проект с открытым исходным кодом. Если у вас есть какие-либо идеи или вопросы, пожалуйста, не стесняйтесь обращаться к нам, создав проблему!
Мы будем очень признательны за ваш вклад. Дополнительную информацию можно найти на сайте CONTRIBUTING.md.
Basaran доступен по лицензии MIT.
© 2023 Гипероним