Basaran ist eine Open-Source-Alternative zur OpenAI-Textvervollständigungs-API. Es bietet eine kompatible Streaming-API für Ihre Hugging Face Transformers-basierten Textgenerierungsmodelle.
Die Open-Source-Community wird irgendwann den Moment der stabilen Verbreitung großer Sprachmodelle (LLMs) erleben, und Basaran ermöglicht es Ihnen, den OpenAI-Dienst durch das neueste Open-Source-Modell zu ersetzen, um Ihre Anwendung zu betreiben, ohne eine einzige Codezeile zu ändern.
Die Hauptmerkmale von Basaran sind:
Ersetzen Sie user/repo
durch Ihr ausgewähltes Modell und XYZ
durch die neueste Version und führen Sie dann Folgendes aus:
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
Und schon kann es losgehen!
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Docker-Images sind auf Docker Hub- und GitHub-Paketen verfügbar.
Für die GPU-Beschleunigung müssen Sie außerdem den NVIDIA-Treiber und NVIDIA Container Runtime installieren. Das Image von Basaran enthält bereits zugehörige Bibliotheken wie CUDA und cuDNN, sodass keine manuelle Installation erforderlich ist.
Basarans Bild kann auf drei Arten verwendet werden:
MODEL="user/repo"
kann das entsprechende Modell beim ersten Start von Hugging Face Hub heruntergeladen werden.MODEL
auf den entsprechenden Pfad.Für die oben genannten Anwendungsfälle finden Sie Beispiel-Dockerfiles und Docker-Compose-Dateien im Bereitstellungsverzeichnis.
Basaran wurde auf Python 3.8+ und PyTorch 1.13+ getestet. Sie sollten eine virtuelle Umgebung mit der Python-Version erstellen, die Sie verwenden möchten, und diese aktivieren, bevor Sie fortfahren.
pip
installieren: pip install basaran
pip install accelerate bitsandbytes
user/repo
durch das ausgewählte Modell und führen Sie Basaran aus: MODEL=user/repo PORT=80 python -m basaran
Eine vollständige Liste der Umgebungsvariablen finden Sie unter __init__.py
.
Wenn Sie auf die neuesten Funktionen zugreifen oder es selbst hacken möchten, können Sie es mit git
aus dem Quellcode ausführen.
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
durch das ausgewählte Modell und führen Sie Basaran aus: MODEL=user/repo PORT=80 python -m basaran
Die HTTP-Anfrage- und Antwortformate von Basaran stimmen mit der OpenAI-API überein.
Am Beispiel der Textvervollständigung:
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
}
}
Wenn Ihre Anwendung von OpenAI bereitgestellte Client-Bibliotheken verwendet, müssen Sie nur die Umgebungsvariable OPENAI_API_BASE
ändern, um sie an den Endpunkt von Basaran anzupassen:
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
Das Beispielverzeichnis enthält Beispiele für die Verwendung der OpenAI-Python-Bibliothek.
Basaran ist auch als Bibliothek auf PyPI verfügbar. Es kann direkt in Python verwendet werden, ohne dass ein separater API-Server gestartet werden muss.
pip
installieren: pip install basaran
load_model
um ein Modell zu laden: from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
Das Beispielverzeichnis enthält Beispiele für die Verwendung von Basaran als Bibliothek.
Das API-Format von Basaran stimmt mit dem von OpenAI überein, wobei sich die Kompatibilität hauptsächlich hinsichtlich der Parameterunterstützung und der Antwortfelder unterscheidet. Die folgenden Abschnitte enthalten detaillierte Informationen zur Kompatibilität der einzelnen Endpunkte.
Jeder Basaran-Prozess bedient nur ein Modell, daher enthält das Ergebnis nur dieses Modell.
Obwohl Basaran den model
nicht unterstützt, erfordert die OpenAI-Clientbibliothek, dass er vorhanden ist. Daher können Sie einen beliebigen Modellnamen eingeben.
Parameter | Basaran | OpenAI | Standardwert | Maximaler Wert |
---|---|---|---|---|
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 | ○ | ● | - | - |
Die Bereitstellung einer einheitlichen Chat-API ist derzeit schwierig, da jedes Modell ein anderes Format für den Chatverlauf hat.
Daher wird empfohlen, den Chatverlauf entsprechend den Anforderungen des jeweiligen Modells vorzuformatieren und ihn als Eingabeaufforderung für die Vervollständigungs-API zu verwenden.
**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]
问:你是谁?
答:
Eine vollständige Liste der vorgeschlagenen Funktionen finden Sie in den offenen Fragen.
Dieses Projekt ist Open Source. Wenn Sie Ideen oder Fragen haben, können Sie uns gerne kontaktieren, indem Sie ein Problem erstellen!
Beiträge werden sehr geschätzt. Weitere Informationen finden Sie unter CONTRIBUTING.md.
Basaran ist unter der MIT-Lizenz erhältlich.
© 2023 Hyperonym