design\games\ vsCoder 在线IDE+本地部署 AI 编码助手Tabby 初探

Coder + Tabby 码农专属AI助手

引子

在数字化时代,人工智能(AI)正以惊人的速度渗透到各个行业中。而对于码农们来说,AI已经成为他们日常工作中不可或缺的助手。然而,今天我要为大家介绍一款与众不同的助手,结合 开源 vscode 网页版code-server 和 开源 AI 助手 Tabby, 提供一个功能丰富、可定制的编程环境,帮助你更好地进行编码工作。

功能点

Coder

  1. 首先,VS Code 是一款由微软开发的流行的集成开发环境(IDE),广泛用于编写和调试各种编程语言的应用程序。而 code-server 是 VS Code 的一个开源项目,它提供了一个将 VS Code 编辑器以网页形式运行的方式。这意味着你可以通过浏览器访问它,无论你在哪个设备上,只要你有一个稳定的互联网连接。
  2. 通过将 code-server 部署到自己的服务器上,你可以享受到 VS Code 的全部功能,包括代码编辑、调试、版本控制等。你可以自定义扩展和配置,以满足个人的编程需求。而且,由于是在服务器上运行,你可以随时保存和同步代码,从而在不同的设备之间无缝切换。

Tabby

  1. 接下来是 AI 助手 Tabby。Tabby 是一个开源的 AI 助手,旨在提供对编程和开发过程的辅助功能。它可以与 code-server 集成,为你提供更高级的编程支持和建议。Tabby 可以通过分析代码结构、识别模式和上下文来提供智能建议、自动完成和错误检查。它还可以为你提供文档和参考资料的链接,帮助你更快地解决问题和学习新的概念。

Coder+Tabby

  1. 将 code-server 和 Tabby 结合使用,你可以获得一个强大而个性化的开发环境。你可以在自己的服务器上搭建一个完整的编程工作台,不受设备限制,随时随地都能访问。通过 Tabby 的智能支持,你可以更高效地编写代码,并从它的建议和提示中受益。
  2. 这款助手对于个人开发者、团队协作和远程工作都非常有用。它提供了强大的工具和智能辅助功能,可以大大提高开发效率和代码质量。而且,由于是开源项目,你可以根据自己的需求进行定制和扩展。

核心需求

为了获得更灵活、成本效益更高的解决方案,我选择将 code-server 和 Tabby 部署到自己的服务器上。以下是一些原因:

  1. 闲置的 Mac Mini 服务器:我有一个闲置的 Mac Mini 服务器,通过将 code-server 和 Tabby 部署在上面,我可以充分利用这个资源,将其转变为一个功能强大的编程环境。
  2. 缺少 Copilot 插件:由于 code-server 上没有 Copilot 插件,这可能限制了我的代码编写过程中的便利性和效率。
  3. 收费问题:使用 GitHub Copilot、Cursor 和 ChatGPT Plus 都需要付费,分别是每月 10 美元、16 美元和 20 美元。通过自己部署环境,我可以避免这些额外的费用。
  4. 自己部署:通过自己部署 Tabby,我可以确保代码不会上传到别人的服务器上用于生成代码提示,这提高了数据安全性和隐私保护。
  5. 持续提示:相比其他付费方案 Tabby 具有闪电般的响应速度和持续提示能力。
    • 尽管它是基于GPT-2,并且准确率可能较低,但它具有更快的提示速度,并且没有接口调用频率限制。你将生成时间定义为150毫秒,这意味着它可以以快速的速度持续不断地提供提示。这种情况下,速度取代了质量的考虑。
    • 在某些情况下,快速的提示反馈可能比完全准确的结果更重要。这特别适用于开发者希望快速获取创意、进行迭代或需要频繁的参考和提示的场景。尽管准确率较低,但通过持续的快速提示,Tabby提供了一种快速、流畅的开发体验。
    • 这一点对于开发者来说可能非常有价值,因为它可以提供即时的反馈和灵感,而无需等待较长的处理时间。这种权衡可以根据个人的偏好和需求来决定,对于那些追求速度和迭代的开发者来说,Tabby的速度优势可能是一个吸引人的特点。
  6. 模型微调提供一流的支持:虽然目前还没有看到 Tabby 提供模型微调的 API,但可以期待它未来可能提供这方面的支持。这将使我能够根据自己的需求对模型进行个性化调整。
  7. 测试成功:我个人在 Tabby 官网对 Java 语言进行了测试,并让它生成了一个充电费接口的校验代码。这次测试非常成功,证明了 Tabby 在提供准确指导方面的可靠性。
    通过将 code-server 和 Tabby 部署到自己的服务器上,我可以获得一个功能丰富、个性化定制的编程环境。这不仅提高了编码效率和质量,还避免了额外的费用和数据安全风险。这是一个理想的解决方案,适用于个人开发者和团队协作。

部署指北

温馨提示,注意先别着急安装,先看下文,看下文,下文,文!!!

  1. 安装brew:首先,你需要在你的Mac上安装Homebrew(brew),它是一个流行的包管理器。你可以在Homebrew的官方网站(https://brew.sh)上找到安装说明。

  2. 安装code-server:使用brew,你可以通过运行以下命令来安装code-server:

    brew install code-server
    

    这将从Homebrew仓库中下载和安装code-server。

  3. 安装Docker:接下来,你需要安装Docker,它是一个开源的容器化平台。你可以访问 Docker 的官方网站(https://www.docker.com)并按照他们的指南来安装Docker。

  4. 配置和启动code-server:一旦安装了code-server,你可以使用以下命令来启动它:

    code-server
    # 或者使用 launchctl load xxx 忘记了来设置开机启动,MAC 设置为通电启动
    

    这将在默认端口(通常是 127.0.0.1:8080)上启动code-server,并在浏览器中访问它。

  5. 安装Java开发所需的插件:为了进行Java开发,你需要在code-server上安装适用于Java的插件。其中一个常用的插件是"Extension Pack for Java",它是一个包含了多个Java开发相关插件的扩展包。你可以在VS Code Marketplace(https://marketplace.visualstudio.com)中搜索并安装该插件。安装后,它将提供Java开发所需的工具和功能。

  6. 安装Tabby插件:为了在code-server上使用Tabby,你需要安装Tabby插件。Tabby插件将为你提供与Tabby的集成,使你可以在code-server中访问Tabby的功能。你可以在VS Code Marketplace中搜索"Tabby"插件,并按照安装说明进行安装。

  7. 你没有M1/M2,使用 Docker 在自己的服务器上部署Tabby:为了使用Docker部署 Tabby,你需要从Tabby的官方源代码中构建Docker镜像。你可以在Tabby的GitHub存储库(https://github.com/tabby-lang/tabby)中找到源代码和构建说明。

    • 如果你不是 MAC
      docker run --name tabby -it -d --network=host -v  /Users/apple/data:/data -v /Users/apple/data/hf_cache:/home/app/.cache/huggingface tabbyml/tabby serve --model TabbyML/SantaCoder-1B
      
  8. 你有M1/M2:Mac 人提供了编译好的二进制包,直接下载使用

  9. 现在,你已经 “成功” 地在Mac上安装了brew、code-server和Docker,并部署了Tabby。你可以通过访问code-server的URL和指定的Tabby端口来访问这个完整的开发环境。

然而你的 Tabby 并不能正常工作

  • 如果你有一台闲置的 Mac Mini M2 Pro或者Mac Mini M2 Ultra,那么恭喜你,你可以通过硬件升级来解决大部分问题,无需再进行额外的努力。
  • 但如果你只有一台较低配置的Mac Mini M2基础版,那么我们是那些希望通过努力解决问题的人,需要继续折腾。

继续折腾

我坚信,我们应该成为AI的驾驭者,而不是被替代,通过与 AI 技术的深度交互,我们应该更好地驾驭它,将其作为我编程的有力助手。

虽然按照之前提到的步骤,你可能会遇到Tabby后端无法正常运行的问题。

  1. 我在https://huggingface.co/TabbyML 上发现了 Tabby 所使用的预训练的语言模型,该模型用于 Tabby 代码辅助工具。这个发现对我来说非常有价值,因为Hugging Face提供了许多优秀的预训练模型,可以用于各种AI任务。
  2. 关于Tabby的资料在网络上非常有限,我在尝试编译Tabby时遇到了一些困难,因此博主决定尝试使用Docker来部署 Tabby。这种方式可以简化部署过程并提供更好的可移植性。
  3. 在国内的网络环境下,容器中下载 Hugging Face 的模型失败是一个常见的问题。为了解决这个问题,你可以尝试使用代理服务器或者加速器来改善下载速度和稳定性。此外,你还可以寻找国内的镜像源,或者尝试使用Hugging Face提供的离线模型,将其下载到本地后通过修改 hosts 将目标网址指向本地来使用。
  4. 关于 N 卡和 GPU 加速和依赖安装,Tabby 的执行需要 NVIDIA GPU,并且如果你需要使用 GPU 版本,需要额外安装相应的 NVIDIA CUDA Toolkit工具包。 请确保你的系统具备正确的硬件和驱动条件,并按照相关的安装指南进行操作。此外,阅读 Tabby 的文档,了解GPU加速的要求和依赖项,并确保环境设置正确。

性能测试

最后是结论。由于博主没有额外的Nvidia GPU电脑,我的电脑只有MX250 GPU,并且其中存有重要的学习资料,所以我选择了租用GPU云服务器的方式进行实际测试。

  1. 首先,我部署了Tabby的CPU版本,并使用了8核32GB内存的云服务器。通过使用apache2的ab工具进行测试,每个请求的响应速度约为2.5秒。CPU的负载超过90%,内存只使用了1.6GB,同时并发数为10时出现了卡死的现象。当我尝试使用code-server连接到Tabby服务时,几乎无法正常工作,代码提示频繁掉线,偶尔可以成功一次。
  2. 然后,我切换到了6核64GB内存的云服务器,平均请求完成时间为3秒,主要瓶颈在于CPU性能。
  3. 最后,我尝试了GPU版本,使用了T4 GPU。根据网上的资料,Tesla T4显卡相当于GTX 1060显卡(属于入门级显卡中的中等性能)。经过测试,响应时间为200毫秒,即使在10个并发请求下执行了20个请求,每个请求仍然只需200毫秒。可以看到这是串行执行的(200ms/请求已经是处理上限)。其中一个 CPU 的负载瞬间只达到了60%左右。当我使用code-server连接到Tabby服务时,工作非常顺畅,速度快,而且非常稳定。

结论及部署建议

最后是结论:如果你想拥有一套内网安全的与众不同的 AI 编码助手,即code-server + tabby,你需要一台M2(官网表示M1/M2适用于个人使用),或者一台性能相当于GTX 1060左右的服务器(T4云服务器性能相当于GTX 1650)。

对于显卡方面的建议,个人可能对其了解不深。根据网上的资料,博主找到了一些价格在 5k 人民币以下的迷你小主机:

  • 如 RTX 2060 6G、RTX 3050 8G、GTX 1060、M2、GTX 1650 4G等。
  • 根据博主的调查它们的 CUDA 核心数分别为
  • 1920、一般2500 左右、1280、300 多、896
  • M2 是一款集成在苹果电脑中的芯片,它的结构和CUDA核心数并不适用于直接比较。M2芯片有统一的内置神经网络硬件加速器,但它没有公开的 CUDA 核心数指标
  • 个人感觉除了GTX 1650外,其他显卡应该都能胜任工作。
    • GTX 1650的性能较难确定,可能比 GTX 1060 稍低一些。
    • 响应时间大约为 0.5 秒(GTX 1060 为 0.25 秒,算 3 秒,然后 1650 性能低 25% 嘛,没有实测过)。
  • 这只是博主个人的建议,取决于大家的需求和观点。

另外,博主个人喜欢玩 Blender,所以可能更倾向于 N 卡。M2 的优势在于低功耗,感觉也不错,更安静省电。

综上所述,选择适合自己需求的显卡或服务器是个人决策。不同的显卡具有不同的性能特点和优势。建议大家根据自己的预算、需求和偏好做出选择。请注意,技术和市场在不断发展变化,所以在做出决策之前最好进行进一步的研究和咨询。

感谢您的祝福!希望大家都能在使用 code-server 和 tabbyml-演示环境 的过程中玩得开心并获得所需的帮助。如果有任何测试结果不如意或其他问题,可以在评论区中寻求帮助,博主可能无法直接解决所有问题。祝愿大家能够充分利用这些工具,提高工作效率和编码体验!

你可能感兴趣的:(llvm,code-server,Tabby,自建服务器,开源工具)