nanochat 后半程 · 第 6 章 llama.cpp 部署


nanochat 后半程 · 第 6 章 llama.cpp 部署

章节摘要:训练机的 PyTorch 权重不是交付形态——交付形态是一个能在任何机器(包括无 GPU 的笔记本)上跑起来的服务。6.1 节讲导出与量化:先把 HF 权重转成 llama.cpp 的 GGUF 单文件格式(权重、词表、模板元数据装进一个文件),再压进量化档位——Q8_0 近无损、Q4_K_M 是常用平衡点、越小的档位伤得越重,而参数本来就不多的 124M 模型对量化尤其敏感。转换时携带的模板与终止符配置是 4.3 节"一份模板、三处消费"的第三处消费点,错位三的部署版在本章集中清算。6.2 节讲本地服务:用 llama-server 把 GGUF 变成本地 OpenAI 兼容 API,附一个维护多轮历史的最小对话客户端,以及部署侧四症状排查表。本章结束后,模型不再依赖训练环境。

学习目标

阅读完本章,你应当能够:

  1. 说出 GGUF 解决什么问题(单文件交付、脱离训练框架、量化容器)。
  2. 完成两步导出:HF 权重转 f16 GGUF,再量化出多档位。
  3. 按"大小/速度/质量损失"三角为场景选档位,并解释小模型为何对量化更敏感。
  4. 用 llama-server 起本地 API,写最小对话客户端。
  5. 诊断部署侧四症状(腰斩/永不停/开头乱码/太慢),知道何时回 4.3、何时回 6.1。
  6. 说出量化前后验收为什么必须用冻结题库,而不是随手问几句。

核心概念速览

(文字流程图) B ──quantize 量化──▶ Q8_0 / Q4_K_M·按场景选档 Q8_0 / Q4_K_M·按场景选档 ──llama-server──▶ 本地 OpenAI 兼容 API·第 7 章语音回路复用

一句话金句:GGUF 是模型的行李箱——权重、词表、模板一件不落;量化是给行李箱减重,减得越多,摔得越疼。

💡 阅读策略:6.1、6.2 顺序读——先有文件再起服务;动手前通读 4.3 的"一份模板、三处消费",本章是那幅图里第三处消费的落地现场,部署事故的一多半是它的复刻。

子章节导航

6.1 导出与量化:GGUF 与量化档位

GGUF 单文件格式与元数据;两步导出脚本(写法示意);六档量化对比表(大小/速度/质量损失)。
124M 小模型的选档纪律;转换时模板与终止符的回环校验(4.3 第三处消费)。

6.2 本地服务与 API

llama-server 的角色(一个二进制把模型变服务);启动参数示意与启动自检。
OpenAI 兼容接口的最小对话客户端;部署侧四症状排查表(先模板后量化的排查次序)。

子章节之间的逻辑关系

部署 = 形态转换 + 服务化,两步各有一次验收(模板回环 / 量化回归) 6.1 导出与量化(形态转换:HF → GGUF → 选定档位) │ 产出:chat_model/*.gguf + 部署前回环校验通过 ▼ 6.2 本地服务与 API(服务化:GGUF → HTTP API → 客户端) │ 产出:localhost 对话服务 + 最小客户端 ▼ 第 7 章 语音入口(6.2 的 API 是语音回路的"对话腿")

前置知识与后续延伸

前置知识:第 3 章的训练产物(runs/sft_124m/final/ 里权重、词表、模板同目录同源——4.3 错位三的根治纪律在导出时兑现);4.1 的模板与终止符 id(GGUF 元数据携带的就是这份定义);4.3 的"一份模板、三处消费"(部署是第三处,本章直接落地);5.2 的分数台账(量化前后各评一次,损失入账)。

为后续奠定基础:6.2 的本地 API 是第 7 章语音对话闭环的对话半环;量化档位选择直接参与第 7 章的实时性预算;第 8 章中文改造产出的新模型,交付路径原样复用本章两节——导出、量化、起服务,一个流程吃遍所有后续版本。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U