← 算法与AI总览 首页 / 算法与AI / AI 基础入门 / 第20课 · llama.cpp 配置模型实战
AI 基础入门 · 第20课

llama.cpp 配置模型实战:把开源模型跑在自己电脑上

前面 19 课你听了一堆术语:GGUF、量化、KV Cache、上下文窗口、采样温度——这一课把它们全部落到一条命令上。我们要在自己的 Mac 上用 llama.cpp 下载一个 Qwen3.8-7B 的量化模型,跑通"命令行一次推理 → 起 HTTP 服务 → 用 curl 调 OpenAI 兼容接口"整条链路。这是整个 AI 基础板块唯一一页照着敲就能跑通的动手页,所有参数、命令、JSON 请求体都是真的,不杜撰。

① 小白第一课怎么学(4 步走,约 90 分钟)

这是"动手落地"页,建议边读边在终端跟着敲。没有 Mac 也没关系,Windows/Linux 命令几乎一样,照抄即可。

1看懂流水线(15 分钟)
读②③:下载 GGUF → llama-cli/llama-server → API 调用,脑子里先有一张图。
2装 llama.cpp + 下模型(30 分钟)
读⑨上半:git clone 编译或下 release,从 Hugging Face 拉一个 Q4_K_M 模型。
3跑通命令行与服务(25 分钟)
读⑨中段:先 llama-cli 跑一句"你好",再起 llama-server 用 curl 调。
4排错 + 刷题(20 分钟)
读⑥⑨尾的报错表,做⑦⑩,参数名要记牢。
本课小目标学完你要能:① 说出 GGUF 模型从哪下、为什么选 Q4_K_M;② 写出一条带 -m/-c/-ngl/-n/--temp 的完整 llama-cli 命令并解释每个参数;③ 起一个 llama-server 并用 curl 调通 /completion 和 /v1/chat/completions;④ 根据自己机器内存算出能跑多大的模型。

② 一图看懂:llama.cpp 跑模型的完整流水线

① Hugging Face 搜 GGUF 仓库 bartowski/ Qwen3.8-7B-Instruct -Q4_K_M.gguf ≈ 4.4GB ② llama-cli(命令行) 一次性问答 / 脚本批处理 ./llama-cli -m model.gguf ... -ngl 99 把层卸到 GPU(Metal) ③ llama-server(服务) 常驻进程,开 HTTP 端口 --port 8080 --chat-template qwen3.8 给前端/程序长期调用 POST /completion 原生补全接口 {"prompt":"...","n_predict":256} POST /v1/chat/completions OpenAI 兼容,messages 数组 可 stream=true 打字机输出 ④ curl / Python / 前端 像调 OpenAI 一样调本地模型 主 .gguf 权重 + 可选 mmproj (多模态投影)
读法:左边紫色是"从哪拿模型文件",中间绿/金是 llama.cpp 提供的两个可执行程序(一个一次性跑、一个常驻服务),右边绿框是它对外暴露的两个 HTTP 接口,最下面是你自己的代码。整条链路上,模型文件只有一个(.gguf),其余全是参数。

③ 本质直觉:llama.cpp 就是一个"能读懂 GGUF 的本地小服务器"

一句话:llama.cpp 是 Georgi Gerganov 用纯 C/C++ 写的推理引擎,它的本事是——不依赖 CUDA、不依赖 PyTorch,光靠 CPU(或 Apple Metal / Vulkan)就能把一个 GGUF 格式的模型文件跑起来。它不是训练框架,只做"推理"这一件事。

为什么它这么火?因为它把"跑大模型"的门槛从"租 A100"降到了"一台 MacBook"。量化后的 7B 模型才 4GB 出头,MacBook Air 都能跑。

两个可执行文件,记一辈子 llama-cli:命令行一次性推理。你给它一个 prompt,它吐一段字就退出,适合脚本、批量测试。
llama-server:常驻 HTTP 服务。它把模型加载进内存后一直挂着 8080 端口,你用 curl/前端反复调,模型不用反复加载。
(老版本里这两个程序叫 main 和 server,2024 年底起改名为 llama-cli / llama-server,网上旧教程看到 main 别慌,就是它。)
它不是 Ollama,别混Ollama 是套在 llama.cpp 外面的"一键启动器"(帮你管模型名、自动拉镜像);llama.cpp 是更底层的引擎,参数更全、报错更直接。这一课学 llama.cpp,等于把 Ollama 替你藏起来的那层壳掀开看清楚。

④ 完整体系:关键参数 / 接口 / 精度对照表

llama-cli 核心参数速查(必背)

参数全称 / 单位作用常用值
-m--model模型 .gguf 文件路径./models/qwen3.8-7b-instruct-q4_k_m.gguf
-c--ctx-size(token 数)上下文窗口长度,决定能读多长的前文4096 / 8192 / 32768
-ngl--n-gpu-layers把多少层权重卸载到 GPU;99 = 全部Mac Metal 给 99;纯 CPU 给 0
-t--threads用几个 CPU 线程做 Prefill8(按你核数,别超物理核)
-p--prompt输入给模型的提示词"你好,介绍一下你自己"
-n--n-predict(token 数)最多生成多少个 token 就停256 / 512
--temptemperature采样温度,0~2,越高越发散写代码 0.2 / 聊天 0.7 / 脑暴 0.9
--top-pnucleus sampling只在累计概率前 p 的词里挑,0~10.9
--repeat-penalty重复惩罚对已出现过的词打折,防车轱辘话,1.0=不惩罚1.05~1.15
--color彩色输出命令行里把 user/assistant 染不同色调试时加上
--mmproj多模态投影文件跑视觉模型时指定 mmproj-f16.gguf见⑨.4 多模态段
--chat-template对话模板名server 模式下指定模板,否则乱码qwen3.8 / llama4 / chatml

GGUF 量化精度对比(第7课已讲,这里对照体积)

精度每权重字节(约)7B 模型体积质量损失什么时候选
F162.0≈14 GB无服务器上追求满血
Q8_01.0≈7.0 GB几乎无损内存充裕、要稳
Q4_K_M0.5~0.6≈4.4 GB轻微本地甜点,默认选它
Q4_K_S0.45≈3.8 GB略明显内存紧张
Q3_K_M0.38≈3.1 GB能感到笨16G 以下硬跑大模型
为什么是 Q4_K_M"K" = K-Quants(llama.cpp 自研的混合精度,敏感层用高比特、不敏感层用低比特);"M" = Medium 中等文件大小。Q4_K_M 在体积(≈4.4GB)和质量之间是公认的甜点,社区 90% 的本地案例用它。

⑤ 用法场景:本地跑模型能干什么

场景 A:离线写代码助手
公司电脑不能联网传代码到公网 API?本地起 Qwen3.8-Coder,通过 /v1/chat/completions 接 VS Code 插件。
优点:代码不出本机;缺点:7B 模型补全能力不如云端大模型,适合小函数。
场景 B:给 RAG 当本地生成端
检索到的文档切片拼进 prompt,丢给本地 llama-server,省去每次调云端 API 的费用。
关键参数:-c 8192 起步(要塞长上下文),--temp 0.2(要它照材料答,别自由发挥)。
场景 C:批处理脚本跑几百条文本
不用起 server,直接 llama-cli -p "..." -f input.txt -n 256 循环,跑完即退。
一次性任务用 cli,长驻服务用 server——这是两个二进制最核心的分工。
场景 D:多模态看图问答
跑 Qwen3.8-VL 这类视觉语言模型,主 .gguf 之外再带一个 mmproj-f16.gguf,用 --image 传图。
投影层是把图片编码器的输出对齐到语言模型的嵌入空间,第18课讲过原理,这里是落地。

⑥ 高频错误诊断(5 条 box.err)

错误 1:模型加载失败 / "failed to load model"90% 是两种:① -m 路径写错(相对路径相对于你敲命令的当前目录,不是 .gguf 所在目录);② 文件没下全——HF 下载中断会留下半截 .gguf,大小不对。解法:用 ls -lh 核对体积是否和 HF 页面一致(4.4GB),不一致就重下。
错误 2:Out of memory / 加载到一半崩两种原因:① -c 给太大(比如 32768),KV Cache 爆内存;② -ngl 99 全卸到 GPU,但你显存不够。解法:先把 -c 降到 4096,-ngl 从 20 开始往上加,看哪一档能起来。
错误 3:中文输出乱码 / 不按对话格式答几乎一定是 --chat-template 没对。llama.cpp 不知道 Qwen3.8 的对话格式(<|im_start|>user...<|im_end|>),就会把你的问题当裸文本续写。解法:server 命令里加 --chat-template qwen3.8;cli 模式加 --interactive 让它自动套模板。
错误 4:输出重复啰嗦、车轱辘话默认 --repeat-penalty 是 1.0(不惩罚)。解法:调到 1.1~1.15;同时把 --temp 降到 0.6 左右。惩罚太高(>1.3)会让它用词奇怪。
错误 5:一本正经胡说(幻觉)不是 llama.cpp 的 bug,是模型本身在缺上下文时瞎补。解法:system prompt 里把要它依据的材料喂足,写代码/事实问答把 --temp 压到 0.1~0.3,让它别发散。

⑦ 考点真题演练(4 题)

考点分布

考法出题形式应对
选哪个量化问本地甜点Q4_K_M
参数含义问 -ngl 99全部层卸到 GPU
接口区分问 OpenAI 兼容端点/v1/chat/completions
排错问中文乱码原因chat-template 没对

真题基础1. 你在 Mac 上本地跑 7B 模型,默认应该选哪个量化版本?

真题中档2. llama-cli 命令里 -ngl 99 是什么意思?

真题中档3. 想用 OpenAI SDK 无缝切换到本地 llama-server,应该调哪个端点?

真题拔高4. llama-server 起来后,调中文对话模型出现乱码、不按对话格式回答,最可能原因是?

⑧ 必背知识点卡

模型去哪下:Hugging Face 搜 GGUF,认准 bartowski 等量化仓库 别从官网下 F16
甜点精度:Q4_K_M,7B ≈ 4.4GB K=混合精度,M=中等
两个二进制:llama-cli(一次性)/ llama-server(常驻 HTTP) 老名 main / server
必背参数:-m 路径 / -c 上下文 / -ngl 卸载层数 / -t 线程 / -n 生成长度 / --temp / --top-p / --repeat-penalty 一个都不能错
两个接口:/completion(原生补全)/ /v1/chat/completions(OpenAI 兼容) 后者带 messages 数组
多模态:主 .gguf + --mmproj mmproj-f16.gguf 投影层单独一个文件
排错口诀:加载失败查路径/体积;OOM 降 -c 降 -ngl;乱码加 --chat-template;啰嗦加 repeat-penalty 见⑥

⑨ 应用输出:从 0 到跑通,完整照做

9.1 选模型去哪下:Hugging Face 搜 GGUF

打开 huggingface.co,搜索框输 Qwen3.8-7B-Instruct GGUF。你会看到一堆仓库,优先选 bartowski/Qwen3.8-7B-Instruct-GGUF(社区最常用、更新及时、量化版本齐全)。点进去在 Files 标签里找文件名:

# 认准这个文件名(HF 上真实存在):
qwen3.8-7b-instruct-q4_k_m.gguf      # ≈ 4.4 GB,这就是我们要下的
qwen3.8-7b-instruct-q5_k_m.gguf      # ≈ 5.2 GB,质量略高
qwen3.8-7b-instruct-q8_0.gguf        # ≈ 7.0 GB,几乎无损
为什么是 Q4_K_MQ4 = 4bit 权重;K = K-Quants 混合精度;M = Medium。它在 4.4GB 体积下保留了 95%+ 的 Q8_0 质量,是本地体验/资源比的最优解。16G Mac 跑 7B Q4_K_M 加 8K 上下文刚好,32G 可以上 14B。

下载可以直接浏览器点文件名,也可以用 huggingface-cli:

pip install -U "huggingface_hub[cli]"
hf download bartowski/Qwen3.8-7B-Instruct-GGUF qwen3.8-7b-instruct-q4_k_m.gguf \
  --local-dir ./models

9.2 安装 llama.cpp:git clone + cmake(Mac Metal 后端)

# 1. 拉源码
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

# 2. 编译(macOS 自动用 Metal,Apple Silicon 速度起飞)
cmake -B build
cmake --build build --config Release -j

# 3. 编译完后,二进制在 build/bin/ 下:
ls build/bin/llama-cli      # 命令行推理
ls build/bin/llama-server   # HTTP 服务
不想编译?直接下 release去 github.com/ggml-org/llama.cpp/releases,下载 llama-xxxx-mac-universal.zip(或对应 Windows/Linux 包),解压后 bin/ 目录里就是编译好的 llama-cli、llama-server。新手强烈推荐这条,省掉 cmake 坑。

9.3 命令行一次推理(逐参数解释)

把上一步下的 .gguf 放进 ./models/,然后敲这一条(整条可直接复制):

./build/bin/llama-cli \
  -m ./models/qwen3.8-7b-instruct-q4_k_m.gguf \
  -c 4096 \
  -ngl 99 \
  -t 8 \
  -p "你好,请用三句话介绍你自己" \
  -n 256 \
  --temp 0.7 \
  --top-p 0.9 \
  --repeat-penalty 1.1 \
  --color
参数这里取的值意思
-m./models/...q4_k_m.gguf模型权重文件路径,必须指对
-c 40964096 token上下文窗口,能读入的前文长度。越大越吃内存(KV Cache)
-ngl 9999把 99 层 Transformer 全部卸载到 GPU(Metal)。7B 大约 28 层,给 99 = 全卸。纯 CPU 机给 0
-t 88Prefill 阶段用 8 个 CPU 线程。按你物理核数给,别超
-p "你好..."提示词输入给模型的文本
-n 256256 token最多生成 256 个 token 就停(大约 200 个汉字)
--temp 0.70.7聊天温度,0.7 是"自然但不乱编"的常用值
--top-p 0.90.9只在概率累计前 90% 的词里采样,去掉冷门怪词
--repeat-penalty 1.11.1对已出现过的词打 9 折,防重复
--color开终端彩色打印,方便看 user/assistant 分界
看到什么算成功终端先刷一堆加载日志(llm_load_tensors: ...),然后输出你的 prompt,紧接着打印模型生成的中文回答。第一次加载约 5~15 秒(把 4.4GB 读进内存),之后逐 token 吐字。

9.4 多模态投影:跑 Qwen2-VL 要加 --mmproj

如果跑的是视觉语言模型(如 Qwen3.8-VL),你需要两个文件:主模型 .gguf + 投影文件 mmproj。投影文件把图片编码器输出对齐到语言模型的嵌入空间(原理见第18课)。

# 两个文件:
qwen3.8-vl-7b-instruct-q4_k_m.gguf     # 主权重
mmproj-f16.gguf                       # 投影层,单独下

# 命令里多两个参数:
./build/bin/llama-cli \
  -m ./models/qwen3.8-vl-7b-instruct-q4_k_m.gguf \
  --mmproj ./models/mmproj-f16.gguf \
  -c 4096 -ngl 99 -t 8 \
  --image ./path/to/cat.jpg \
  -p "描述这张图里有什么" -n 256
组合规则主 .gguf 负责"语言脑子",mmproj 负责"把图片翻译成语言脑子能懂的向量"。少了 mmproj,模型只能处理文字;多下了 mmproj 但不给 --image,它就当纯文本模型跑,不报错。

9.5 服务模式:起 llama-server

一次性跑 cli 每次都要重新加载模型(5~15 秒)。要反复调用,就起常驻服务:

./build/bin/llama-server \
  -m ./models/qwen3.8-7b-instruct-q4_k_m.gguf \
  -ngl 99 \
  -c 8192 \
  --port 8080 \
  --host 127.0.0.1 \
  --chat-template qwen3.8
--chat-template 为什么必须对每个模型家族对话格式不一样:Qwen3.8 用 ChatML(<|im_start|>user...<|im_end|>),Llama 4 用 <|start_header_id|>user<|end_header_id|>。llama.cpp 默认不知道你加载的是哪家模型,不指定 --chat-template,它就把 messages 数组生硬拼接,模型看到一堆没有分隔符的文字,于是输出乱码、不按角色回答、中文串成一坨。Qwen3.8 就填 qwen3.8,Llama 4 填 llama4,ChatML 系填 chatml。

看到 main: server is listening on 127.0.0.1:8080 就成功了。浏览器打开 http://127.0.0.1:8080 还有一个自带的网页聊天框可以先玩。

9.6 API 调用示例(完整 curl + JSON)

① 原生补全接口 POST /completion

curl http://127.0.0.1:8080/completion \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "用三句话解释什么是量化",
    "n_predict": 256,
    "temperature": 0.7,
    "top_p": 0.9,
    "repeat_penalty": 1.1,
    "stream": false
  }'

返回 JSON 里关键字段是 content(模型生成的文本)和 timings(速度统计,含 prompt eval / eval 每秒 token 数)。

② OpenAI 兼容接口 POST /v1/chat/completions

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-7b-instruct",
    "messages": [
      {"role": "system", "content": "你是一个简洁的中文助手,回答不超过三句话。"},
      {"role": "user", "content": "什么是 KV Cache?"}
    ],
    "n_predict": 256,
    "temperature": 0.3,
    "stream": false
  }'

这个接口的请求体和 OpenAI 官方 /v1/chat/completions 几乎一样——意味着你把 OpenAI SDK 的 base_url 改成 http://127.0.0.1:8080/v1、api_key 随便填,原有代码一行不改就能跑本地模型。

③ stream=true 的 SSE 流式返回长什么样

把上面请求体里 "stream": false 改成 true,服务器不再一次性返回完整 JSON,而是以 SSE(Server-Sent Events)格式逐块吐:

data: {"choices":[{"delta":{"content":"K"}}]}

data: {"choices":[{"delta":{"content":"V"}}]}

data: {"choices":[{"delta":{"content":" "}}]}

data: {"choices":[{"delta":{"content":"Cache"}}]}

data: {"choices":[{"delta":{"content":" 是"}}]}

data: [DONE]

前端每收到一段 data: 就把 choices[0].delta.content 追加到页面上——这就是"打字机效果"的来源(第22课专门讲流式)。

9.7 显存 / 内存测算公式与算例

总占用 ≈ 权重 + KV Cache 模型磁盘大小 ≈ 参数量 × 每权重字节(7B × 0.5~0.6 ≈ 4 GB)
KV Cache ≈ 2 × 层数 × KV头数 × 维度 × 上下文长度 × 精度字节

算例(7B Q4_K_M,-c 4096):权重 ≈ 4.4GB;KV Cache 在 FP16 下大约几百 MB(7B 大约 0.5~1GB),合计 ≈5~5.5GB。Mac 16G 跑它还剩一半内存给系统,很舒服。

模型规模Q4_K_M 权重+8K 上下文 KV Cache建议机器内存16G Mac 能跑?32G Mac 能跑?
3B≈2.0 GB≈0.3 GB8 GB轻松轻松
7B≈4.4 GB≈0.8 GB16 GB可以(甜点)轻松
14B≈8.5 GB≈1.5 GB24 GB勉强(-c 降到 4K)可以
32B≈19 GB≈3.5 GB40 GB跑不动勉强(-c 4K)
别忘留系统余量macOS 自身要占 4~6GB。你看到"16G Mac 能跑 7B"是指留 8~10GB 给模型、其余给系统。别把 -c 拉到 32768,光 KV Cache 就能再吃好几 GB。

9.8 效果调优表:温度 / top_p / repeat-penalty 怎么配

任务类型--temp--top-p--repeat-penalty为什么
写代码 / 函数补全0.1~0.30.91.05要确定性,别让它自由发挥
RAG 问答(照材料答)0.2~0.40.91.1低温度照抄材料,少幻觉
日常聊天 / 写作0.6~0.80.91.1自然但不离谱
头脑风暴 / 起名0.9~1.10.951.15发散,要多样性
翻译0.30.91.0忠实原文,别润色过头
调参直觉温度管"敢不敢换花样",top_p 管"从多大词池里挑",repeat-penalty 管"别老调重弹"。写代码低温、脑暴高温,这一条记住就够用。

⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)

▍基础 6 题

基础1GGUF 模型应该去哪个网站下载?
Hugging Face(huggingface.co),搜索时加上 GGUF 关键词,认准 bartowski 这类量化仓库。
基础27B 模型 Q4_K_M 大约多大?
≈4.4 GB。7B 参数 × 0.5~0.6 字节/权重 ≈ 3.5~4.2GB,加上元数据头约 4.4GB。
基础3llama.cpp 里一次性跑一个 prompt 的二进制叫什么?常驻 HTTP 服务的又叫什么?
一次性 = llama-cli;服务 = llama-server。(老版本叫 main / server。)
基础4参数 -ngl 99 里的 99 是什么意思?
把 99 层 Transformer 权重卸载到 GPU。99 是个"比模型实际层数大"的数,等价于全部卸载。7B 实际只有约 28 层。
基础5控制"生成最大长度"的参数是哪个?
-n(--n-predict),单位是 token。-n 256 = 最多生成 256 个 token。
基础6OpenAI 兼容的聊天接口路径是什么?
POST /v1/chat/completions,请求体里用 messages 数组。

▍中档 5 题

中档7为什么 Q4_K_M 是本地甜点,而不是 Q8_0 或 Q3_K_M?
Q8_0 质量更高但 7B 要 7GB,内存开销大;Q3_K_M 体积小但质量明显下降。Q4_K_M 用 K-Quants 混合精度,在 4.4GB 体积下保留了 Q8_0 约 95%+ 的质量,性价比最高。
中档8跑 Qwen3.8-VL 为什么要单独下一个 mmproj 文件?
视觉编码器输出的向量维度和语言模型嵌入维度不一致,需要投影层(mmproj)把图片特征对齐到语言模型能读的空间。主 .gguf 只装语言权重,投影层单独打包。
中档9llama-server 不加 --chat-template qwen3.8 会怎样?
llama.cpp 不知道 Qwen3.8 的 ChatML 对话格式,会把 messages 生硬拼接,模型看到没有特殊分隔符的文本,输出乱码、不按角色回答、中文串成一坨。
中档10写代码助手应该把 --temp 调到多少?为什么?
0.1~0.3。代码要确定性、可编译,高温会让它自由发挥编造不存在的 API。
中档11stream=true 时,服务器返回的格式是什么?前端怎么拿到逐字输出?
SSE(Server-Sent Events),每条以 data: 开头,内容是 JSON 片段 choices[0].delta.content,最后以 data: [DONE] 结束。前端每收到一段就追加到页面。

▍拔高 5 题

拔高12模型加载到一半 OOM,除了降 -c 和 -ngl,还有什么招?
① 换更小量化(Q4_K_M → Q3_K_M);② 换更小模型(7B → 3B);③ 限制 KV Cache 类型(--kv-cache-type q8_0,把 KV 也量化,省一半 KV 内存);④ 关掉其他占内存的程序。
拔高13KV Cache 为什么跟上下文长度成正比?能不能复用?
每来一个 token,模型都要把它之前所有 token 的 Key/Value 缓存下来供注意力用,所以 KV Cache ≈ 层数×头数×维度×2×上下文。llama-server 常驻时会保留会话 KV Cache,同一会话多轮对话不用重算前文,这就是 server 比 cli 快的原因之一。
拔高14/completion 和 /v1/chat/completions 本质差别是什么?为什么有两个?
/completion 是 llama.cpp 原生接口,你给裸 prompt 它续写,灵活但要自己拼对话格式;/v1/chat/completions 是 OpenAI 兼容层,它替你把 messages 数组按 chat-template 拼成模型认识的格式,方便无缝切换云端 SDK。前者是"裸金属",后者是"开箱即用"。
拔高15Mac 16G 想跑 14B Q4_K_M(≈8.5GB),为什么建议把 -c 从 8192 降到 4096?
14B 权重 8.5GB + 系统 5GB + 8K 上下文 KV Cache 约 1.5GB ≈ 15GB,逼近 16G 上限,会触发 swap 变卡。降到 4096 后 KV Cache 减半,总占用约 13GB,留出余量。
拔高16llama.cpp 和 Ollama 是什么关系?什么时候直接用 llama.cpp?
Ollama 底层调用的就是 llama.cpp,但它在外面包了一层模型管理(ollama run qwen3.8 自动拉文件、自动选 chat-template)。需要调底层参数(自定义 mmproj、改 KV 量化类型、试新模型架构)或看真实报错时,直接用 llama.cpp;日常不想管细节用 Ollama。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① 模型去 HF 下 GGUF,本地甜点 Q4_K_M,7B 大概 4.4G。
② cli 一次性、server 常驻;参数记 -m/-c/-ngl/-n/--temp/--repeat-penalty。
③ 乱码查 chat-template,OOM 降 -c 降 -ngl,啰嗦加 repeat-penalty。
天任务自检
第 1 天读②③④,把流水线图默写一遍说清 cli/server 分工
第 2 天读⑨.1~9.3,下模型 + 跑通 llama-cli终端能吐出中文
第 3 天读⑨.5~9.6,起 server + curl 两个接口能看到 JSON 返回
第 4 天读⑨.7~9.8 内存表和调优表,做中档 7-11会算自己机器能跑多大
第 5 天做⑦真题 4 题 + 基础 1-6限时每题 2 分钟
第 6 天做拔高 12-16,故意制造一个报错再排查能自己定位乱码/OOM
第 7 天合上书口述完整命令和三句口诀不看资料全敲对
📌 知识链路 前置知识(先学): 第15课 GGUF 格式——本页跑的就是 GGUF 文件; 第18课 投影层 mmproj——多模态时要加的那个文件; 第7课 量化——Q4_K_M 是怎么省一半体积的; 第8课 上下文窗口——-c 参数在调它; 第9课 显存与内存——⑨.7 的测算公式来源; 第12课 采样参数——--temp/--top-p/--repeat-penalty 的原理。
本节位置:这是整条"基础概念 → 本地动手"流水线的落地页——前面学的所有概念,都在这一页变成一条能跑通的命令。
下一步(学完去): 第21课 结构化输出——在 llama.cpp 上加 grammar 约束让模型吐 JSON; 第22课 流式输出——把 stream=true 的 SSE 吃透; 第10课 Agent——本地模型长出手脚,去调工具。
← 第19课 · 推理引擎全家桶 算法与AI总览