Turbopilot 已弃用/存档于 30 年 9 月 23 日。还有其他成熟的解决方案可以更好地满足社区的需求。请阅读我的博客文章,了解我决定关闭工具并推荐替代方案。
TurboPilot 是一个自托管的 copilot 克隆,它使用 llama.cpp 背后的库在 4GiB 的 RAM 中运行 60 亿个参数的 Salesforce Codegen 模型。它在很大程度上基于 fauxpilot 项目并受到其启发。
注意:这是目前的概念验证,而不是一个稳定的工具。在此版本的项目中,自动完成速度非常慢。随意玩它,但您的里程可能会有所不同。
✨ 现在支持 StableCode 3B Instruct 只需使用 TheBloke 的量化 GGML 模型并设置 .-m stablecode
✨ 新增内容:重构 + 简化:源代码已得到改进,可以更轻松地扩展和添加新模型到 Turbopilot。该系统现在支持多种风格的模型
✨ 新增:Wizardcoder、Starcoder、Santacoder 支持 - Turbopilot 现在支持最先进的本地代码完成模型,这些模型提供了更多的编程语言和“中间填充”支持。
非常欢迎此项目的 PR 和相应的 GGML 分叉。
创建一个 fork,进行更改,然后打开 PR。
试用该项目的最简单方法是获取预处理的模型,然后在 docker 中运行服务器。
您有 2 个选项来获取模型
您可以从 Huggingface 下载预转换、预量化的模型。
对于低 RAM 用户(4-8 GiB),我推荐 StableCode,对于高功率用户(16+ GiB RAM、独立 GPU 或 Apple Silicon),我推荐 WizardCoder。
Turbopilot 仍然支持早期版本的第一代 codegen 模型。尽管旧模型确实需要重新量化。v0.0.5
您可以在 MODELS.md 中找到完整的型号目录。
如果您想尝试自己量化模型,请遵循本指南。
下载最新的二进制文件并将其解压缩到根项目文件夹。如果您的操作系统没有提供二进制文件,或者您希望自己构建它,请按照构建说明进行操作
跑:
./turbopilot -m starcoder -f ./models/santacoder-q4_0.bin
应用程序应该在 port 上启动一个服务器,您可以使用该选项更改此设置,但这是 vscode-fauxpilot 尝试连接的默认端口,因此除非您确定自己知道自己在做什么,否则您可能希望不理会它。18080
-p
如果您有一个多核系统,您可以使用该选项控制使用多少个 CPU - 例如,在我的 AMD Ryzen 5000 上,我使用 6 个内核/12 个线程:-t
./codegen-serve -t 6 -m starcoder -f ./models/santacoder-q4_0.bin
运行旧版 codegen 模型。只需将 model type 标志更改为 instead。-m
codegen
注意:Turbopilot 0.1.0 及更高版本会重新量化 v0.0.5 及更早版本中的 codegen 模型和旧模型。我正在努力提供更新的量化代码生成模型
您还可以从此处提供的预构建 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 标记的版本并传递给具有 GPU 访问权限的 docker,如下所示:--gpus=all
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,则设置将允许 turbopilot 将计算完全卸载到 GPU 上,而不是前后复制数据,从而大大加快推理速度。GPU_LAYERS
如果您分别使用 CUDA 12.0 或 12.2,请换用 CUDA 12.0 或 12.2。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 11 或 CUDA 12 来运行此容器。在运行 ./app/turbopilot
nvidia-smi
从 v0.0.5 开始,可以使用linux可执行文件的CUDA版本-它需要在计算机上安装libcublas 11-我可能会在某个时候构建ubuntu debs,但现在如果您想使用CUDA GPU,在docker中运行可能会更方便。
您可以通过该选项使用 GPU 卸载。--ngl
对官方 VS Code copilot 插件的支持正在进行中(请参阅票证 #11)。API 现在应该与 OpenAI 广泛兼容。
要使用 VSCode 的 API,我建议使用 vscode-fauxpilot 插件。安装后,您需要更改 settings.json 文件中的一些设置。
- 打开设置 (CTRL/CMD + SHIFT + P) 并选择
Preferences: Open User Settings (JSON)
- 添加以下值:
{ ... // other settings<span class="pl-ent">"fauxpilot.enabled"</span>: <span class="pl-c1">true</span>, <span class="pl-ent">"fauxpilot.server"</span>: <span class="pl-s"><span class="pl-pds">"</span>http://localhost:18080/v1/engines<span class="pl-pds">"</span></span>,
}
现在,您可以使用 和 select 启用 fauxpilotCTRL + SHIFT + P
Enable Fauxpilot
当您敲击键盘时,该插件将向正在运行的进程发送 API 调用。然后,它将等待每个请求完成,然后再发送进一步的请求。codegen-serve
您可以对其发出请求,其行为与相同的 Copilot 终端节点类似。http://localhost:18080/v1/engines/codegen/completions
例如:
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'))\n\n 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" }
- 目前 Turbopilot 一次只支持一个 GPU 设备(它不会尝试使用多个设备)。
- 如果没有 Georgi Gerganov 在 GGML 和 llama.cpp 方面的工作,这个项目是不可能的
- 它完全受到 fauxpilot 的启发,我确实尝试了一段时间,但想尝试让模型在没有 GPU 的情况下工作
- 该项目的前端由 Venthe 的 vscode-fauxpilot 插件提供支持
- 该项目使用 Salesforce Codegen 模型。
- 感谢 Moyix 在将 Salesforce 模型转换为在 GPT-J 架构中运行所做的工作。这不仅带来了一些速度优势,而且还使我更容易使用现有的 gpt-j 示例代码将模型移植到 GGML
- 模型服务器使用 CrowCPP 来提供建议。
- 查看 CodeGen 的原始科学论文以获取更多信息。