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

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的官方文档Github文档

image.png|1100

Tabby 本地化部署

方法一、Docker部署

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

CPU版本:

docker run \
  --gpus all -p 8080:8080 -v $HOME/.tabby:/data \
  tabbyml/tabby \
  serve --model TabbyML/SantaCoder-1B --device cuda

GPU版本:

version: '3.5'
services:
  tabby:
    restart: always
    image: tabbyml/tabby
    command: serve --model TabbyML/SantaCoder-1B --device cuda
    volumes:
      - "$HOME/.tabby:/data"
    ports:
      - 8080:8080
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

如果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

出现以下画面,就表示成功了
image.png|1100

方法二、Liunx部署

  1. 下载 Tabby
    image.png|1100
  • CPU版:tabby_x86_64-manylinux2014.zip
  • GPU版:tabby_x86_64-manylinux2014-cuda117.zip,注意CUDA版本,我的是CUDA12.2
  • 非Nvidia GPU版:tabby_x86_64-manylinux2014-vulkan.zip
  1. 切换到tabby目录,执行如下命令
# 修改权限
chmod +x tabby llama-server

# CPU版
./tabby serve --model StarCoder-1B --chat-model Qwen2-1.5B-Instruct

# GPU版
./tabby serve --model StarCoder-1B --chat-model Qwen2-1.5B-Instruct --device $DEVICE

可以参考下述模型,进行修改,我使用3060显卡,命令修改如下:

./tabby serve --model Codestral-22B --chat-model Codestral-22B --device cuda
./tabby serve --model StarCoder2-7B --chat-model Qwen2-1.5B-Instruct --device cuda

# 修改端口
./tabby serve --model StarCoder2-7B --chat-model Qwen2-1.5B-Instruct --device cuda --port=8999

出现如下截图,即安装成功:
image.png|1100

可用模型

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

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

模型编号 证书
StarCoder-1B BigCode-OpenRAIL-M
StarCoder-3B BigCode-OpenRAIL-M
StarCoder-7B BigCode-OpenRAIL-M
StarCoder2-3B BigCode-OpenRAIL-M
StarCoder2-7B BigCode-OpenRAIL-M
CodeLlama-7B Llama 2
CodeLlama-13B Llama 2
DeepseekCoder-1.3B Deepseek License
DeepseekCoder-6.7B Deepseek License
CodeGemma-2B Gemma License
CodeGemma-7B Gemma License
CodeQwen-7B Tongyi Qianwen License
Codestral-22B Mistral AI Non-Production License
DeepSeek-Coder-V2-Lite Deepseek License

Chat模型:

模型编号 证书
Mistral-7B Apache 2.0
CodeGemma-7B-Instruct Gemma License
Qwen2-1.5B-Instruct Apache 2.0
CodeQwen-7B-Chat Tongyi Qianwen License
Codestral-22B Mistral AI Non-Production License
Yi-Coder-9B-Chat Apache 2.0

VScode插件

image.png|1100

设置插件,状态是这样就表示成功了

image.png|1100

问题

怎么修改端口?