TurboPilot は、llama.cpp の背後にあるライブラリを使用して 4GiB の RAM で 60 億パラメータの Salesforce Codegen モデルを実行するセルフホスト型コパイロット クローンです。これは、fauxpilot プロジェクトに大きく基づいており、そこからインスピレーションを受けています。
注意: これは現時点では安定したツールではなく概念実証です。このバージョンのプロジェクトではオートコンプリートがかなり遅くなります。自由に遊んでみてください。ただし、実際の走行距離は異なる場合があります。
StableCode 3B をサポートするようになりました。TheBlokeの量子化 GGML モデルを使用し、 -m stablecode
設定するだけです。
新規: リファクタリング + 簡素化: ソース コードが改善され、Turbopilot への新しいモデルの拡張と追加が容易になりました。システムは複数の種類のモデルをサポートするようになりました
新規: Wizardcoder、Starcoder、Santacoder のサポート- Turbopilot は、より多くのプログラミング言語と「中間補完」サポートを提供する最先端のローカル コード補完モデルをサポートするようになりました。
このプロジェクトおよび対応する GGML フォークへの PR は大歓迎です。
フォークを作成し、変更を加えてから、PR を開きます。
プロジェクトを試す最も簡単な方法は、前処理されたモデルを取得し、Docker でサーバーを実行することです。
モデルを取得するには 2 つのオプションがあります
事前変換および事前量子化されたモデルは、Huggingface からダウンロードできます。
低 RAM ユーザー (4 ~ 8 GiB) には StableCode をお勧めし、高パワー ユーザー (16 GiB 以上の RAM、ディスクリート GPU または Apple シリコン) には WizardCoder をお勧めします。
Turbopilot は、 v0.0.5
以前のビルドの第 1 世代 codegen モデルを引き続きサポートしています。ただし、古いモデルは再量子化する必要があります。
モデルの完全なカタログは MODELS.md にあります。
モデルの量子化を自分で試してみたい場合は、このガイドに従ってください。
最新のバイナリをダウンロードし、ルート プロジェクト フォルダーに抽出します。バイナリが OS に提供されていない場合、または自分でビルドしたい場合は、ビルド手順に従ってください。
走る:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
アプリケーションはポート18080
でサーバーを起動する必要があります。これは-p
オプションで変更できますが、これは vscode-fauxpilot が接続しようとするデフォルトのポートであるため、自分が何をしているのかよくわかっていない限り、これはそのままにしておく方がよいでしょう。やってます。
マルチコア システムを使用している場合は、 -t
オプションを使用して使用する CPU の数を制御できます。たとえば、6 コア/12 スレッドの AMD Ryzen 5000 を使用しています。
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
従来の codegen モデルを実行します。代わりに、モデル タイプ フラグ-m
codegen
に変更するだけです。
注: Turbopilot 0.1.0 以降では、codegen モデルの v0.0.5 以前の古いモデルが再量子化されます。更新された量子化コード生成モデルの提供に取り組んでいます
ここで提供されている事前に構築された Docker イメージから Turbopilot を実行することもできます
モデルを個別にダウンロードする必要がありますが、その後、次のコマンドを実行できます。
docker run --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:latest
リリース v0.0.5 の時点で、ターボコードは CUDA 推論をサポートするようになりました。 cuda 対応コンテナを実行するには、nvidia-docker を有効にし、cuda タグ付きバージョンを使用して、次のように GPU にアクセスできる--gpus=all
を docker に渡す必要があります。
docker run --gpus=all --rm -it
-v ./models:/models
-e THREADS=6
-e MODEL_TYPE=starcoder
-e MODEL= " /models/santacoder-q4_0.bin "
-e GPU_LAYERS=32
-p 18080:18080
ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda11-7
十分な大きさの GPU がある場合、 GPU_LAYERS
設定すると、データを前後にコピーするのではなく、ターボパイロットが計算を GPU に完全にオフロードできるようになり、推論が大幅に高速化されます。
使用している場合は、 ghcr.io/ravenscroftj/turbopilot:v0.1.0-cuda11
/ravenscroftj/turbopilot:v0.1.0-cuda11 をghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0
またはghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-2
に置き換えます。それぞれ CUDA 12.0 または 12.2。
このコンテナーを実行するには、後で CUDA 11 または CUDA 12 が必要になります。 nvidia-smi
実行すると、 /app/turbopilot
リストに表示されるはずです。
v0.0.5 では、Linux 実行可能ファイルの CUDA バージョンが利用可能です - マシンに libcublas 11 がインストールされている必要があります - いつか ubuntu debs をビルドするかもしれませんが、今のところは docker で実行する方が便利かもしれません。 CUDA GPU。
--ngl
オプションを使用して GPU オフロードを使用できます。
公式 VS Code コパイロット プラグインのサポートが進行中です (チケット #11 を参照)。 API は OpenAI と広範な互換性を持つようになりました。
VSCode の API を使用するには、vscode-fauxpilot プラグインをお勧めします。インストールしたら、settings.json ファイル内のいくつかの設定を変更する必要があります。
Preferences: Open User Settings (JSON)
{
... // other settings
"fauxpilot.enabled" : true ,
"fauxpilot.server" : " http://localhost:18080/v1/engines " ,
}
CTRL + SHIFT + P
でフェイクパイロットを有効にし、 Enable Fauxpilot
を選択できるようになりました。
キーストロークを行うと、プラグインは実行中のcodegen-serve
プロセスに API 呼び出しを送信します。その後、各リクエストが完了するまで待機してから、さらにリクエストを送信します。
http://localhost:18080/v1/engines/codegen/completions
にリクエストを送信すると、同じ Copilot エンドポイントと同様に動作します。
例えば:
curl --request POST
--url http://localhost:18080/v1/engines/codegen/completions
--header ' Content-Type: application/json '
--data ' {
"model": "codegen",
"prompt": "def main():",
"max_tokens": 100
} '
次のようなものが得られるはずです:
{
"choices" : [
{
"logprobs" : null ,
"index" : 0 ,
"finish_reason" : " length " ,
"text" : " n """ Main entry point for this script. """n logging.getLogger().setLevel(logging.INFO) n logging.basicConfig(format=('%(levelname)s: %(message)s')) nn parser = argparse.ArgumentParser( n description=__doc__, n formatter_class=argparse.RawDescriptionHelpFormatter, n epilog=__doc__) n "
}
],
"created" : 1681113078 ,
"usage" : {
"total_tokens" : 105 ,
"prompt_tokens" : 3 ,
"completion_tokens" : 102
},
"object" : " text_completion " ,
"model" : " codegen " ,
"id" : " 01d7a11b-f87c-4261-8c03-8c78cbe4b067 "
}