- Published on
llama.cpp + Hy3 部署指南
- Authors

- Name
- JiGu
- @crypto20x
环境信息
| 项目 | 值 |
|---|---|
| 系统 | Linux x86_64 |
| 显卡 | AMD RX 395 (Vulkan) |
| 显存 | 96 GB |
| 模型 | Hy3-IQ1_M-mtp.gguf (86 GB) |
| llama.cpp 版本 | b10075 |
1. 安装 llama.cpp(Vulkan 版)
下载最新 release
curl -sL https://api.github.com/repos/ggml-org/llama.cpp/releases/latest | python3 -c "import json,sys;d=json.load(sys.stdin);print(d['tag_name'])"
Ubuntu Vulkan x64 版本下载:
wget -O /tmp/llama-vulkan.tar.gz \
https://github.com/ggml-org/llama.cpp/releases/download/b10075/llama-b10075-bin-ubuntu-vulkan-x64.tar.gz
安装到用户目录
mkdir -p ~/.local/lib/llama ~/.local/bin
tar xzf /tmp/llama-vulkan.tar.gz -C /tmp/llama
cp /tmp/llama/llama-b10075/* ~/.local/lib/llama/
chmod +x ~/.local/lib/llama/llama* ~/.local/lib/llama/ggml*
for f in ~/.local/lib/llama/llama* ~/.local/lib/llama/ggml*; do
[ -x "$f" ] && ln -sf "$f" ~/.local/bin/
done
设置环境变量
export LD_LIBRARY_PATH="$HOME/.local/lib/llama:$LD_LIBRARY_PATH"
export PATH="$HOME/.local/bin:$PATH"
验证安装:
llama-cli --version
2. 运行 Hy3 模型
必要说明
hy_v3架构在 llama.cpp PR #25395 合入,b10075 已包含- 模型文件需为 MTP 版本(含 MTP 头),文件名
Hy3-IQ1_M-mtp.gguf - 86 GB 模型在 96 GB 显存上运行,剩余约 10 GB 给 KV 缓存
基础运行(无 MTP)
llama-server \
-m ~/model-gguf/Hy3-IQ1_M-mtp.gguf \
-ngl 99 \
-c 65536 \
-ctk q8_0 -ctv q8_0 \
-fa on \
--host 0.0.0.0 --port 8080
推荐运行(MTP + KV 量化,单卡 96G 最佳配置)
export LD_LIBRARY_PATH="$HOME/.local/lib/llama:$LD_LIBRARY_PATH" && \
export PATH="$HOME/.local/bin:$PATH" && \
llama-server \
-m ~/model-gguf/Hy3-IQ1_M-mtp.gguf \
--alias "hy3" \
--api-key "sk-testing" \
-ngl 99 -c 80000 \
-ctk q8_0 -ctv q8_0 \
-ctkd q8_0 -ctvd q8_0 \
-fa on \
--host 0.0.0.0 --port 8080 \
--spec-type draft-mtp \
--spec-draft-n-max 2
AMD RX 395 对
iq4_nlKV 量化格式支持不佳,改用q8_0后速度可达约 20 token/s,是目前实测最快的配置。
API 调用测试
curl -s http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer sk-testing" \
-d '{"messages":[{"role":"user","content":"你好"}],"max_tokens":100}'
3. 参数详解
GPU 相关
| 参数 | 说明 | 本配置 |
|---|---|---|
-ngl N | 将 N 层 offload 到 GPU(-1 或 99 = 全部) | 99 |
-fa on | Flash Attention,节省显存、加速长上下文 | on |
上下文与 KV 缓存
| 参数 | 说明 | 本配置 |
|---|---|---|
-c N | 上下文窗口大小(token 数) | 80000 (80K) |
-ctk TYPE | K 缓存量化格式 | q8_0 |
-ctv TYPE | V 缓存量化格式 | q8_0 |
KV 缓存量化格式(按显存用量从小到大):
| 格式 | 每元素位宽 | 说明 |
|---|---|---|
iq4_nl | ~4 bit | 非线性 4-bit,质量最佳 |
q4_0 | ~4 bit | 标准 4-bit 块量化 |
q4_1 | ~4.5 bit | 4-bit + fp16 scale 和 min |
q5_0 | ~5 bit | 5-bit 块量化 |
q5_1 | ~5.5 bit | 5-bit + fp16 scale 和 min |
q8_0 | ~8 bit | 8-bit 块量化,无损近似 |
f16 | 16 bit | 半精度,默认 |
f32 | 32 bit | 全精度 |
MTP 投机解码(Multi-Token Prediction)
| 参数 | 说明 | 本配置 |
|---|---|---|
--spec-type draft-mtp | 使用 MTP 头作为草稿模型 | draft-mtp |
--spec-draft-n-max N | 最多预测 N 个未来 token | 2 |
-ctkd TYPE | 草稿模型 K 缓存量化 | q8_0 |
-ctvd TYPE | 草稿模型 V 缓存量化 | q8_0 |
MTP 效果:接受率约 38%,平均每次生成 2.14 个 token,可提速 ~20-40%。
其他性能参数
| 参数 | 说明 |
|---|---|
-t N | CPU 线程数(默认: 物理核心数) |
-ub N | 最大 batch size,影响 prompt 处理速度 |
-lv N | 日志级别(0=error, 1=warn, 2=info, 3=verbose) |
4. 显存预算与上下文上限
单卡 96 GB 显存计算
模型权重: ~86 GB 运行时开销: ~1-2 GB 可用给 KV 缓存: ~8-9 GB
| 上下文 | q8_0 KV 大小 | 显存余量 | 结论 |
|---|---|---|---|
| 32K | ~5.6 GB | ~3 GB | 很稳 |
| 64K | ~11.2 GB | ~0 GB | 紧张 |
| 80K | ~14 GB | - | 实测可用,约 20 token/s |
每 token KV 缓存大小 ≈ 层数 × KV 头数 × 头维度 × 2 × 位宽系数 Hy3: 80层 × 8 KV头 × 128维度 × 2 × 1 byte (q8_0) ≈ 160 KB/token
超 80K 上下文的方案
--no-kv-offload:KV 缓存放系统内存,模型仍在 GPU。- 可行但慢 3-5 倍(PCIe 传输开销)
- 系统内存需足够:200K × 160 KB ≈ 32 GB
多卡:2 张卡可轻松跑 IQ1_M + MTP + 默认上下文
换更小量化:没有比 IQ1_M 更小的 Hy3 量化版本
5. 注意事项
- AMD RX 395 兼容性:
iq4_nlKV 量化格式在 AMD 395 上支持不佳,建议改用q8_0 - Warning
special_eos_id is not in special_eog_ids:GGUF 元数据问题,不影响使用 - 首次请求较慢(模型预热 + 编译缓存),后续请求提速
- MTP token 接受率和生成长度相关,短文本接受率可能偏低
- 模型文件不兼容过旧的 llama.cpp 版本(需 hy_v3 架构支持)