Basaran は、OpenAI テキスト補完 API のオープンソース代替品です。これは、Hugging Face Transformers ベースのテキスト生成モデルに互換性のあるストリーミング API を提供します。
オープンソース コミュニティは最終的に大規模言語モデル (LLM) の安定普及の瞬間を目撃することになります。Basaran を使用すると、コードを 1 行も変更することなく、OpenAI のサービスを最新のオープンソース モデルに置き換えてアプリケーションを強化できるようになります。
Basaran の主な特徴は次のとおりです。
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 パッケージで入手できます。
GPU アクセラレーションの場合、NVIDIA ドライバーと NVIDIA コンテナー ランタイムもインストールする必要があります。 Basaran のイメージには CUDA や cuDNN などの関連ライブラリがすでに付属しているため、手動でインストールする必要はありません。
Basaran の画像は 3 つの方法で使用できます。
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
Basaran の HTTP リクエストおよびレスポンスの形式は、OpenAI API と一致しています。
テキスト補完を例に挙げると、次のようになります。
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 によって提供されるクライアント ライブラリを使用している場合は、Basaran のエンドポイントに一致するようにOPENAI_API_BASE
環境変数を変更するだけで済みます。
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
サンプル ディレクトリには、OpenAI Python ライブラリの使用例が含まれています。
Basaran は PyPI のライブラリとしても利用できます。別の API サーバーを起動する必要がなく、Python で直接使用できます。
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 をライブラリとして使用するサンプルが含まれています。
Basaran の API 形式は OpenAI の API 形式と一致していますが、主にパラメータのサポートと応答フィールドの点で互換性の違いがあります。次のセクションでは、各エンドポイントの互換性に関する詳細情報を提供します。
各 Basaran プロセスは 1 つのモデルのみを提供するため、結果にはそのモデルのみが含まれます。
Basaran はmodel
パラメーターをサポートしていませんが、OpenAI クライアント ライブラリではモデル パラメーターが存在する必要があります。したがって、任意のモデル名を入力できます。
パラメータ | バサラン | 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 ハイパーニム