在使用 Ollama 部署大模型后,可以通过以下方法对本地模型的性能进行测试和监控:
1. 使用 --verbose 参数监控资源消耗
Ollama 提供了 --verbose 参数,用于实时监控模型运行时的资源消耗(如显存占用、推理速度等):
ollama run <model_name> --verbose
输出示例:
total duration: 12m1.056s # 总耗时
load duration: 1.810s # 模型加载时间
eval rate: 2.09 tokens/s # 生成速度(每秒生成的 token 数)
关键指标:
- 加载时间:模型启动到可交互的时间。
- 生成速度:模型生成文本的速度,反映硬件利用率(如 GPU 加速效果)。
- 资源占用:通过系统任务管理器或
nvidia-smi(NVIDIA 显卡)查看 CPU/内存/GPU 显存占用。
2. 性能基准测试
(1) 响应时间测量
通过命令行交互或 API 调用,记录模型从接收到请求到返回结果的时间:
# 命令行测试
ollama run <model_name>
# 输入问题后按 Ctrl+D 提交,记录等待时间
(2) API 调用测试
使用 curl 或 Python 脚本模拟高并发请求,测试模型的吞吐量和稳定性:
# 查看模型列表
curl http://localhost:11434/v1/models
# 发送请求并计算响应时间
time curl -X POST "http://localhost:11434/v1/completions" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-r1:7b", "prompt": "你好"}'
(3) 批量测试脚本
编写脚本批量发送请求,统计平均响应时间和错误率:
import timeit
import requests
def test_performance():
url = "http://localhost:11434/v1/completions"
payload = {"model": "deepseek-r1:7b", "prompt": "你好"}
start_time = timeit.default_timer()
response = requests.post(url, json=payload)
end_time = timeit.default_timer()
print(f"Response Time: {end_time - start_time:.4f} seconds")
print(f"Response: {response.json()}")
test_performance()
3. 硬件资源监控
(1) GPU 显存占用
-
NVIDIA 显卡:使用
nvidia-smi实时监控显存占用:nvidia-smi -l 1s # 每秒刷新一次 -
Intel GPU:通过任务管理器或
intel_gpu_top工具查看资源占用。
(2) CPU 和内存占用
- 使用系统自带的任务管理器(Windows)或
htop(Linux/macOS)监控 CPU 和内存使用情况。
4. 调整参数优化性能
根据测试结果,调整以下参数以优化性能:
-
批量大小(Batch Size):
-
增加批量大小可提高硬件利用率,但需避免显存溢出。
-
修改配置文件或通过环境变量设置:
export OLLAMA_BATCH_SIZE=32
-
-
最大序列长度(Max Sequence Length):
-
根据输入需求调整序列长度,避免内存浪费:
# Modelfile 示例 model_name: mymodel max_sequence_length: 2048
-
-
并行化处理:
-
多 GPU/CPU 核心可加速推理,通过
--parallel参数启用:ollama run <model_name> --parallel
-
-
低精度量化模型:
-
使用量化版本(如
q4_K_M、q3_K_L)降低显存占用:ollama run <model_name>:q4_K_M
-
5. 日志分析与问题排查
-
查看详细日志:
ollama run <model_name> --verbose -
常见问题:
- 显存不足:尝试使用轻量模型(如
deepseek:1.5b)或低精度版本。 - 模型无响应:检查
Modelfile配置(如路径、模板参数)是否正确。 - 下载中断:使用
ollama pull <model>重新下载,保留进度。
- 显存不足:尝试使用轻量模型(如
6. 性能对比与调优建议
| 场景 | 推荐配置 |
|---|---|
| 小模型(如 1.5B) | CPU + 8GB 内存,无需 GPU |
| 中等模型(如 7B) | GPU 显存 ≥ 8GB,启用 --verbose 监控 |
| 大模型(如 14B+) | GPU 显存 ≥ 32GB,使用量化模型(如 q4_K_M) |
| 高并发请求 | 增加批量大小,启用并行化处理 |
1881

被折叠的 条评论
为什么被折叠?



