AI自动补全工具Tabby的私有化部署

Tabby简介

  Tabby是一个自托管的AI编码助手,提供了一个开源的、可本地部署的GitHub Copilot替代品。Tabby拥有以下几个特点:
  1.自托管:Tabby是一个自托管的解决方案,不需要依赖于第三方云服务或DBMS,用户可以完全掌控和管理自己的数据和代码。
  2.开源:Tabby是一个开源项目,用户可以自由访问和修改源代码,以满足自己的需求。
  3.本地部署:Tabby可以在本地部署,可以在没有互联网连接的情况下使用,同时也可以保护用户的代码和数据不被第三方访问。
  4.易于集成:Tabby提供了OpenAPI接口,可以轻松地与现有的基础设施集成,例如Cloud IDE。
  5.支持消费级GPU:Tabby支持消费级GPU,可以提供更快的计算速度和更好的性能。
  基于上述特点,Tabby能够很有效的部署在内网环境中,再提升效率的同时,保护了代码和数据的安全。本文介绍使用Docker进行本地部署,方法参照了Tabby的官方文档

Tabby的本地化部署

部署方法

  Tabby最简单的部署方法便是使用Docker进行部署,并且官方提供了CPU版本和GPU版本。Docker的安装和使用可以戳这里
  CPU版本:

# 使用CPU版本部署
docker run -it                   \
    -p 8080:8080                 \
    -v $HOME/.tabby:/data        \
    tabbyml/tabby serve          \
    --model TabbyML/StarCoder-1B \

  GPU版本:

# 使用GPUT版本部署(需要Nvidia Container Tookit)
docker run -it --gpus all        \
    -p 8080:8080                 \
    -v $HOME/.tabby:/data        \
    tabbyml/tabby serve          \
    --model TabbyML/StarCoder-1B \
    --device cuda

  如果Docker能够正常运行,则容器自动下载指定的模型并启动tabby的服务。因为下载的模型比较大,所以一般此过程时间比较久且终端反馈基本没有,请耐心等待。Tabby正常启动后,控制台会输出对应的启动信息,访问本地的localhost:8080可看到后台界面,说明启动成功。
  如果遇到因为无法访问huggingface导致模型下载失败,则启动容器时添加-e TABBY_REGISTRY=modelscope参数指定模型仓库即可。Tabby为大陆用户提供了国内模型仓库(Tabby的团队太贴心了),添加参数以后的指令如下所示:

docker run -e TABBY_REGISTRY=modelscope \
    -it --gpus all               \
    -p 8080:8080                 \
    -v $HOME/.tabby:/data        \
    tabbyml/tabby serve          \
    --model TabbyML/StarCoder-1B \
    --device cuda

可用模型

  考虑到不同的用户所有用的计算资源都不一样,Tabby的模型仓库中提供了多种大小的模型,包括CPU版本和GPU版本,以及不同大小的模型,用户可以根据自己的部署环境选择合适的模型。
  官方的推荐如下:

  • 适用于CPU设备的小模型(小于400M)
  • 1B到7B的模型,建议至少使用NVIDIA T4、10系或20系列GPU
  • 7B到13B的模型,推荐使用NVIDIA V100、A100、30系或40系列GPU 、

  现有模型如下:

模型编号 开源协议 是否支持补全 是否支持苹果M1/M2芯片
TabbyML/CodeLlama-13B Llama2 Y Y
TabbyML/CodeLlama-7B Llama2 Y Y
TabbyML/StarCoder-7B BigCode-OpenRAIL-M Y Y
TabbyML/StarCoder-3B BigCode-OpenRAIL-M Y Y
TabbyML/StarCoder-1B BigCode-OpenRAIL-M Y Y
TabbyML/J-350M BSD-3 N N

Tabby的IDE插件

  Tabby目前支持VS Code、IntelliJ Platform和Vim三个开发工具的扩展安装。VS Code只需要在扩展市场中搜索TabbyML即可找到对应的插件,在插件中设置Tabby的服务地址(如http://localhost:8080)即可连接使用自己部署的Tabby服务。

frp内网穿透

  如果想使用Tabby的IDE插件,但是自己没有公网IP,可以考虑使用frp搭建内网穿透服务,将Tabby部署在内网中的服务暴露到公网中。frp的安装和使用方法参考用frp做内网穿透,可以直接使用tcp类型,也可以使用http类型。
  注意:使用frp穿透时记得不要和云服务器的端口冲突,记得在防火墙放行响应的端口。


当珍惜每一片时光~