为什么一个 2-bit 的 27B 模型值得看
人工智能实验室 Underdog AI 本月发布 Saluki 27B,它是 Qwen3.8-27B 的 2-bit 量化调优版本,文件大小仅 7.89 GB,只保留文本输入输出能力。Underdog 表示,Saluki 针对智能体应用设计,长于日常推理与工具使用,数学表现相对逊色,但工具选择和多工具并行调用的表现甚至优于全尺寸的 Qwen3.8-27B。最关键的一点是,它使用标准的 llama.cpp 格式,可在标准 llama.cpp 及基于它构建的应用中直接加载,无需任何自定义编译。
这意味着你可以在一台没有高端独显、内存也不太富裕的机器上,跑起一个面向 Agent 任务的 27B 级模型。下面给出从零到可用的四步流程,以及实测中真正影响体验的几个参数。
第一步:准备环境与模型文件
先拿到 GGUF 文件。模型权重托管在 Hugging Face 的 ConwayResearch/Underdog-Saluki-27B-1.0 仓库,可直接用命令行下载:安装 huggingface_hub 后执行下载命令并指定本地目录,或者用浏览器手动取文件。文件不大,7.89 GB 在普通宽带上几分钟就能下完;下载后建议与仓库页面给出的 sha256 校验值比对,避免文件不完整导致推理异常。
接着准备推理运行时。若用 llama.cpp,编译时需要 cmake 与 C 编译器,建议使用 Release 构建以获得最优的 CPU 推理速度;若你更习惯 Ollama,也可以写一个 Modelfile 把 GGUF 导入后一条命令拉起。两条路都会暴露一个 OpenAI 兼容接口,方便把现有代码直接指向本地。
第二步:启动本地服务
用 llama.cpp 的 llama-server 拉起一个 OpenAI 兼容服务是最省事的方式。核心参数只有几个:-m 指定 GGUF 模型路径;--host 与 --port 指定监听地址与端口,本地调试用 127.0.0.1 即可;-c 设上下文窗口长度,做 Agent 任务建议至少给到 8192;-t 设 CPU 推理线程数,建议按物理核心数调整;有显卡时用 --n-gpu-layers 控制多少层权重放到 GPU 上,写一个大数表示尽量全部 offload。
启动成功后日志里会出现服务监听地址,此时把请求指向本地 8080 端口的 v1 路径就能调用。一个常被忽略的点是 KV Cache:它随上下文长度线性增长,是显存与内存占用的隐形杀手。做 Agent 这种非高并发场景时,把上下文限制在必要范围、批大小设为 1,往往比一味调大窗口更划算。
社区实测给出的经验是:量化每降一档,准确率大约掉 3 到 5 个点;在面向 Agent 的结构化控制任务上,至少要保住 Q4 级别。Saluki 的取巧之处在于,它不是简单地砍精度,而是针对文本输入输出与工具调用做了调优,用 2-bit 的体积换来了接近全尺寸模型的工具使用能力,代价是数学与部分推理能力。
第三步:验证与调参
服务起来后,先用最简单的对话请求确认能正常返回,再测工具调用。Saluki 的卖点是多工具并行,因此建议设计一个需要同时选择多个工具、并把结果串起来的用例,观察它是否能正确输出结构化调用参数。若出现 JSON 格式错误或工具链断裂,优先检查 chat template 是否正确启用(llama.cpp 里的 --jinja 参数),模板不对会让模型答非所问。
最后根据硬件微调:内存或显存吃紧就降低 offload 层数、压缩上下文;想要更快就提高线程数并确保用 Release 构建。llama.cpp 迭代很快,不同版本的参数名可能略有差异,遇到不认识的参数先看对应版本的文档。做完这几步,你就得到了一个完全本地、无需联网、按提示词触发工具调用的轻量 Agent 基座,适合做原型验证与隐私敏感场景的离线实验。