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穿透时记得不要和云服务器的端口冲突,记得在防火墙放行响应的端口。
Comments | 3 条评论
博客作者 1030056861
好用吗?
博客作者 songjiahao
@1030056861 这个项目的特点是开源,使用简单方便。不过,目前这个模型支持的语言有限,可以试试清华的codeGeex项目的开源模型。另外,这个项目的vscode插件比较简单,就是单纯的把编辑区域的代码段作为模型输入,上下文信息基本没有,所以效果也会受到限制。
博客作者 1030056861
@songjiahao GodeGeeX在用了,就是有时候的代码补全提示会打断我的思路,哈哈