完成版报告样例
本页是格式样例,不代表标准性能数字。数字用“示例”占位,避免学生照抄。
1. 场景与设备约束
- 应用场景:本地课程助教,回答端侧部署常见问题。
- 目标设备:Ubuntu Server + NVIDIA GPU,Jetson 作为后续验证。
- 端侧必要性:课堂弱网时仍可演示,日志和数据不上传云端。
- 不可接受风险:回答严重跑题、API 不稳定、显存 OOM。
2. 实验环境
| 项目 | 记录 |
|---|---|
| OS | 示例 Ubuntu 22.04 |
| GPU | 示例 NVIDIA GPU |
| CUDA | 示例版本 |
| llama.cpp commit | 示例 commit |
| 模型 | Qwen 小模型 GGUF |
| 量化版本 | Q8_0、Q5_K_M、Q4_K_M |
3. Baseline 结果
| 指标 | 结果 | 说明 |
|---|---|---|
| 模型 | Qwen 示例模型 | 文件来源已记录 |
| prompt | 三句话解释端侧量化 | 后续实验固定 |
ctx-size | 2048 | 量化对比保持一致 |
-ngl | 99 | 尽量 GPU offload |
| 首 token / prefill | 示例 | 来自 baseline log |
| tokens/s | 示例 | 来自 eval 统计 |
| 峰值显存 | 示例 | 来自 nvidia-smi |
| 质量观察 | 能回答问题,格式基本稳定 | 作为量化对照 |
4. 量化版本对比
| 版本 | 文件大小 | TTFT / prefill | tokens/s | 峰值内存 | 质量观察 | 判断 |
|---|---|---|---|---|---|---|
| Q8 | 示例 | 示例 | 示例 | 示例 | 输出稳定 | 质量优先 |
| Q5 | 示例 | 示例 | 示例 | 示例 | 轻微差异 | 当前推荐 |
| Q4 | 示例 | 示例 | 示例 | 示例 | 个别回答退化 | 内存受限备选 |
部署判断:当前设备上暂时推荐 Q5_K_M。它比 Q8 更省内存,质量退化不明显;Q4 适合作为低内存备选,但复杂回答需要更多质量样例验证。
5. Runtime 参数与加速实验
| 实验 | 变化 | 现象 | 结论 |
|---|---|---|---|
| GPU offload | -ngl 0 vs -ngl 99 | 示例:GPU 路径更快,显存增加 | 后续主线使用 GPU offload |
| 上下文长度 | 1024/2048/4096 | 示例:ctx 增大后内存增加 | Jetson 需重新验证 4096 |
| llama-bench | 固定 -p 512 -n 128 | 示例:补充标准化结果 | 与业务 prompt 分开解释 |
6. API 服务测试
- 启动方式:
llama-server本地绑定127.0.0.1:8080。 - 请求:
/v1/chat/completions。 - 响应:返回可解析 JSON。
- 观察:第一次请求更慢,后续请求更稳定。
- 风险:CLI tokens/s 不能直接代表 API 端到端延迟。
7. 风险与下一步
| 风险 | 证据 | 下一步 |
|---|---|---|
| Q4 复杂任务质量下降 | 示例输出中有概念遗漏 | 增加 20 条固定评估 prompt |
| Jetson 内存压力未知 | 还未实测 | 迁移到 Jetson 并记录 tegrastats |
| 长上下文风险 | ctx 4096 内存上升 | 增加 KV Cache 估算和长稳测试 |
| API 并发未测 | 只做单请求 smoke test | 60 学时路径加入并发选做 |
8. 最终建议
推荐方案:Qwen 小模型 + Q5_K_M + llama.cpp + GPU offload + 本地 OpenAI-compatible API。
不推荐方案:直接用 Q4 作为唯一上线版本。原因是示例质量观察仍有退化,且 Jetson 上的功耗、温度和长上下文稳定性尚未验证。
下一步:在 Jetson 上重复 baseline、量化对比和 API smoke test,并补充 30 分钟长稳日志。