如何按 MODEL_SPEC 构建本地模型目录并用 --model 参数加载到 Tabby?
2026/9/10 5:37:48 网站建设 项目流程

如何按 MODEL_SPEC 构建本地模型目录并用 --model 参数加载到 Tabby?

【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby

你手里有一个 GGUF 格式的大模型文件,想让它跑在自己的 Tabby(Self-hosted AI coding assistant)里提供代码补全,而不是用官方内置模型注册表里的模型名。FAQ 中明确说明:按照 MODEL_SPEC.md 创建一个包含指定文件的目录,然后把目录路径传给--model--chat-model启动参数即可。这篇文章给出从建目录到验证服务可用的完整路径。

模型目录需要包含什么

MODEL_SPEC.md 规定,一个最小的 Tabby 模型目录至少包含两部分:

tabby.json ggml/model-00001-of-00001.gguf

ggml/ 目录:放置 GGUF 模型文件

ggml/目录存放 llama.cpp 推理引擎使用的二进制文件。Tabby 在cpucudametal设备上利用 GGML 进行推理。

模型文件名遵循 llama.cpp 的命名约定model-{index}-of-{count}.ggufindex 从 1 开始

  • 单文件模型默认命名为model-00001-of-00001.gguf
  • 分片模型按model-00001-of-000NN.ggufmodel-00002-of-000NN.gguf依次编号。

如果你的 GGUF 文件不叫这个名字,把它重命名(或按分片规则重命名)放进ggml/目录。

tabby.json:模型元信息

tabby.json提供模型的元信息,其中两个字段都是可选的(optional):

{ "prompt_template": "<PRE>{prefix}<SUF>{suffix}<MID>" }
  • prompt_template:存在该字段时,Tabby 假设模型支持 FIM(fill-in-the-middle)推理。模板中的{prefix}{suffix}会被替换为对应的实际值,整个 prompt 再送入模型。上面的<PRE>{prefix}<SUF>{suffix}<MID>是 MODEL_SPEC.md 给出的官方示例格式。
  • chat_template:存在该字段时,Tabby 假设模型支持 instruct/chat 风格交互,该模板可以配合--chat-model使用。MODEL_SPEC.md 中给出了一个基于<s>[INST]标记的 Jinja 模板示例,可参考该文件获取完整写法。

对于本文的目标——用--model加载一个补全模型——最少只要把 GGUF 文件按规则放进ggml/,并准备好tabby.json(哪怕只含prompt_template一行)。

用 --model 加载本地目录

models 文档 中明确区分了两类启动参数:

  • --model:加载Completion models(代码补全模型);
  • --chat-model:加载Chat models(对话模型,建议至少 1B 参数以保证响应质量)。

FAQ 的回答是:按 MODEL_SPEC 建好目录后,"You can then pass the directory path to--modelor--chat-modelto start Tabby"。也就是说,参数的值不是模型注册表里的名字(如StarCoder-1B),而是你本地目录的路径。

前提条件

以 Linux 独立可执行文件方式运行为例(其他平台同理,把可执行文件名换成对应平台的即可):

  1. 已从 Tabby release 页面获取对应的发行包(CPU 版或 CUDA/Vulkan 版),解压后tabby可执行文件位于dist子目录中;
  2. 已赋予执行权限:chmod +x tabby llama-server
  3. GPU 环境(CUDA 版)需要已安装 CUDA 11 及以上,可用nvcc --version检查;详细下载与安装步骤见 Linux 安装文档。

启动命令

在包含tabby可执行文件的目录下运行(./your-model-dir请替换为你按上文建好的模型目录的实际路径):

# CPU 环境 ./tabby serve --model ./your-model-dir # GPU 环境,DEVICE 为 cuda 或 vulkan ./tabby serve --model ./your-model-dir --device $DEVICE

如果你还需要对话能力,把 chat 模型目录传给--chat-model即可与--model同时使用(--chat-model的参数值同样是本地目录路径,前提是模型目录中包含chat_template):

./tabby serve --model ./your-model-dir --chat-model ./your-chat-model-dir

Docker 方式同理:把--model后的值换成挂载进容器的本地模型目录路径,例如 README 中演示的serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct,其中StarCoder-1B属于内置注册表模型名,换成你的目录路径即为加载本地模型。

验证模型加载成功

Linux 安装文档 给出的成功判断标准:

  1. 服务启动后会输出一条成功信息(文档中配了成功截图,实际以你终端输出的消息为准,不要把截图内容当成逐字匹配的目标);
  2. 之后访问http://localhost:8080可以打开你的 Tabby 实例。

如果启动时怀疑模型目录没被正确识别(文件名不对、tabby.json缺失等),可以用 FAQ 中给出的方式打开调试日志观察服务端的报错:

RUST_LOG=debug ./tabby serve --model ./your-model-dir

Docker 下则通过-e RUST_LOG=debug传入该环境变量。

限制与注意

  • --model对应补全模型、--chat-model对应对话模型,两者不要混用(见 models 文档 的两张模型表)。
  • tabby.jsonprompt_templatechat_template均为可选字段,但存在时分别触发 FIM 与 chat 行为的假设,按你的模型实际能力填写。
  • GGUF 文件命名必须从 1 开始编号(model-00001-of-00001.gguf),0 起始的命名不符合约定。
  • 资源参考:FAQ 提到 Tabby 在 CUDA 上默认以 int8 模式运行,CodeLlama-7B 大约需要 8GB 显存(文档示例),大模型加载前可先对照自己的设备显存。
  • 不同 GPU 的精度支持有要求(int8 需要 Compute Capability >= 7.0 或 6.1,float16 需要 >= 7.0,bfloat16 需要 >= 8.0,同样来自 FAQ),选型时注意与你的卡对应。

【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询