Skip to content

Turbopilot 是一个基于大型语言模型的开源代码完成引擎,可在 CPU 上本地运行Turbopilot is an open source large-language-model based code completion engine that runs locally on CPU

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/dpqq-pilot

 
 

Repository files navigation

涡轮飞行员 🚀

Turbopilot 已弃用/存档于 30 年 9 月 23 日。还有其他成熟的解决方案可以更好地满足社区的需求。请阅读我的博客文章,了解我决定关闭工具并推荐替代方案。


Mastodon 关注 BSD 许可 逗留时间

TurboPilot 是一个自托管的 copilot 克隆,它使用 llama.cpp 背后的库在 4GiB 的 RAM 中运行 60 亿个参数的 Salesforce Codegen 模型。它在很大程度上基于 fauxpilot 项目并受到其启发。

注意:这是目前的概念验证,而不是一个稳定的工具。在此版本的项目中,自动完成速度非常慢。随意玩它,但您的里程可能会有所不同。

通过 FauxPilot 插件运行的 Turbopilot 的屏幕录像

✨ 现在支持 StableCode 3B Instruct 只需使用 TheBloke 的量化 GGML 模型并设置 .-m stablecode

✨ 新增内容:重构 + 简化:源代码已得到改进,可以更轻松地扩展和添加新模型到 Turbopilot。该系统现在支持多种风格的模型

✨ 新增:Wizardcoder、Starcoder、Santacoder 支持 - Turbopilot 现在支持最先进的本地代码完成模型,这些模型提供了更多的编程语言和“中间填充”支持。

🤝 贡献

非常欢迎此项目的 PR 和相应的 GGML 分叉

创建一个 fork,进行更改,然后打开 PR。

👋 开始

试用该项目的最简单方法是获取预处理的模型,然后在 docker 中运行服务器。

获取模型

您有 2 个选项来获取模型

选项 A:直接下载 - 简单、快速入门

您可以从 Huggingface 下载预转换、预量化的模型。

对于低 RAM 用户(4-8 GiB),我推荐 StableCode,对于高功率用户(16+ GiB RAM、独立 GPU 或 Apple Silicon),我推荐 WizardCoder

Turbopilot 仍然支持早期版本的第一代 codegen 模型。尽管旧模型确实需要重新量化。v0.0.5

您可以在 MODELS.md 中找到完整的型号目录。

选项 B:自己转换模型 - 更难,更灵活

如果您想尝试自己量化模型,请遵循本指南

⚙️ 运行 TurboPilot 服务器

下载最新的二进制文件并将其解压缩到根项目文件夹。如果您的操作系统没有提供二进制文件,或者您希望自己构建它,请按照构建说明进行操作

跑:

./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。-mcodegen

注意:Turbopilot 0.1.0 及更高版本会重新量化 v0.0.5 及更早版本中的 codegen 模型和旧模型。我正在努力提供更新的量化代码生成模型

📦 从 Docker 运行

您还可以从此处提供的预构建 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

Docker 和 CUDA

从 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-cuda11ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-0ghcr.io/ravenscroftj/turbopilot:v0.2.0-cuda12-2

稍后您将需要 CUDA 11 或 CUDA 12 来运行此容器。在运行 ./app/turbopilotnvidia-smi

可执行文件和 CUDA

从 v0.0.5 开始,可以使用linux可执行文件的CUDA版本-它需要在计算机上安装libcublas 11-我可能会在某个时候构建ubuntu debs,但现在如果您想使用CUDA GPU,在docker中运行可能会更方便。

您可以通过该选项使用 GPU 卸载。--ngl

🌐 使用 API

支持官方 Copilot 插件

对官方 VS Code copilot 插件的支持正在进行中(请参阅票证 #11)。API 现在应该与 OpenAI 广泛兼容。

将 API 与 FauxPilot 插件一起使用

要使用 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 + PEnable Fauxpilot

当您敲击键盘时,该插件将向正在运行的进程发送 API 调用。然后,它将等待每个请求完成,然后再发送进一步的请求。codegen-serve

直接调用 API

您可以对其发出请求,其行为与相同的 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 设备(它不会尝试使用多个设备)。

👏 确认

About

Turbopilot 是一个基于大型语言模型的开源代码完成引擎,可在 CPU 上本地运行Turbopilot is an open source large-language-model based code completion engine that runs locally on CPU

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.8%
  • Python 1.7%
  • Other 0.5%