TurboPilot 是一個自架的 copilot 克隆,它使用 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 或蘋果晶片),我推薦 WizardCoder。
Turbopilot 仍然支援v0.0.5
及更早版本的第一代 codegen 模型。儘管舊模型確實需要重新量化。
您可以在 MODELS.md 中找到完整的模型目錄。
如果您想親自嘗試量化模型,請遵循本指南。
下載最新的二進位檔案並將其解壓縮到專案根資料夾中。如果沒有為您的作業系統提供二進位文件,或者您希望自己建立它,請按照建置說明進行操作
跑步:
./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
運行舊的程式碼生成模型。只需將模型類型標誌-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 版本起,turbocode 現在支援 CUDA 推理。為了執行支援 cuda 的容器,您需要啟用 nvidia-docker,使用 cuda 標記版本並將--gpus=all
傳遞給 docker,以便存取您的 GPU,如下所示:
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
將允許 Turbopilot 將計算完全卸載到您的 GPU 上,而不是前後複製數據,從而顯著加快推理速度。
將ghcr.io/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 開始,可以使用 CUDA 版本的 linux 執行檔 - 它需要在電腦上安裝 libcublas 11 - 我可能會在某個時候建置 ubuntu debs,但現在如果您想使用CUDA GPU。
您可以透過--ngl
選項使用 GPU 卸載。
對官方 VS Code copilot 外掛程式的支援正在進行中(請參閱票證 #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
啟用 fauxpilot 並選擇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 "
}