Basaran est une alternative open source à l'API de complétion de texte OpenAI. Il fournit une API de streaming compatible pour vos modèles de génération de texte basés sur Hugging Face Transformers.
La communauté open source sera éventuellement témoin du moment de diffusion stable pour les grands modèles de langage (LLM), et Basaran vous permet de remplacer le service OpenAI par le dernier modèle open source pour alimenter votre application sans modifier une seule ligne de code.
Les principales caractéristiques de Basaran sont :
Remplacez user/repo
par votre modèle sélectionné et XYZ
par la dernière version, puis exécutez :
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
Et vous êtes prêt à partir !
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Les images Docker sont disponibles sur les packages Docker Hub et GitHub.
Pour l'accélération GPU, vous devez également installer le pilote NVIDIA et le NVIDIA Container Runtime. L'image de Basaran est déjà livrée avec des bibliothèques associées telles que CUDA et cuDNN, il n'est donc pas nécessaire de les installer manuellement.
L'image de Basaran peut être utilisée de trois manières :
MODEL="user/repo"
, le modèle correspondant peut être téléchargé depuis Hugging Face Hub lors du premier démarrage.MODEL
vers le chemin correspondant.Pour les cas d'utilisation ci-dessus, vous pouvez trouver des exemples de fichiers Dockerfiles et de fichiers docker-compose dans le répertoire de déploiements.
Basaran est testé sur Python 3.8+ et PyTorch 1.13+. Vous devez créer un environnement virtuel avec la version de Python que vous souhaitez utiliser et l'activer avant de continuer.
pip
: pip install basaran
pip install accelerate bitsandbytes
user/repo
par le modèle sélectionné et exécutez Basaran : MODEL=user/repo PORT=80 python -m basaran
Pour une liste complète des variables d'environnement, consultez __init__.py
.
Si vous souhaitez accéder aux dernières fonctionnalités ou les pirater vous-même, vous pouvez choisir de l'exécuter à partir des sources en utilisant git
.
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
par le modèle sélectionné et exécutez Basaran : MODEL=user/repo PORT=80 python -m basaran
Les formats de requête et de réponse HTTP de Basaran sont cohérents avec l'API OpenAI.
Prenons l'exemple de la complétion de texte :
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
}
}
Si votre application utilise les bibliothèques clientes fournies par OpenAI, il vous suffit de modifier la variable d'environnement OPENAI_API_BASE
pour qu'elle corresponde au point de terminaison de Basaran :
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
Le répertoire d'exemples contient des exemples d'utilisation de la bibliothèque OpenAI Python.
Basaran est également disponible sous forme de bibliothèque sur PyPI. Il peut être utilisé directement en Python sans avoir besoin de démarrer un serveur API distinct.
pip
: pip install basaran
load_model
pour charger un modèle : from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
Le répertoire d'exemples contient des exemples d'utilisation de Basaran comme bibliothèque.
Le format de l'API de Basaran est cohérent avec celui d'OpenAI, avec des différences de compatibilité principalement en termes de prise en charge des paramètres et de champs de réponse. Les sections suivantes fournissent des informations détaillées sur la compatibilité de chaque point de terminaison.
Chaque processus Basaran ne sert qu'un seul modèle, le résultat ne contiendra donc que ce modèle.
Bien que Basaran ne prenne pas en charge le paramètre model
, la bibliothèque client OpenAI exige qu'il soit présent. Par conséquent, vous pouvez saisir n’importe quel nom de modèle aléatoire.
Paramètre | Basaran | OpenAI | Valeur par défaut | Valeur maximale |
---|---|---|---|---|
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 | ○ | ● | - | - |
Fournir une API de chat unifiée est actuellement difficile car chaque modèle a un format différent pour l'historique des discussions.
Par conséquent, il est recommandé de préformater l'historique des discussions en fonction des exigences du modèle spécifique et de l'utiliser comme invite pour l'API d'achèvement.
**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]
问:你是谁?
答:
Consultez les problèmes ouverts pour une liste complète des fonctionnalités proposées.
Ce projet est open source. Si vous avez des idées ou des questions, n'hésitez pas à nous contacter en créant un problème !
Les contributions sont grandement appréciées, veuillez vous référer à CONTRIBUTING.md pour plus d'informations.
Basaran est disponible sous la licence MIT.
© 2023 Hyperonyme