4.4 KiB
4.4 KiB
大模型速度测试助手 (Ollama 版)
一个用于测试本地 Ollama 大模型响应速度的工具,提供 Web 界面,可测量 TTFT(首 Token 延迟)、Prefill 时间、解码速度(tokens/s)、端到端延迟等真实推理指标。
目录结构
llm_speed_test_app/
├── run.py # 启动入口
├── requirements.txt # Python 依赖
├── backend/ # 后端(Python)
│ ├── config.py # 配置(Ollama 地址、模型、端口)
│ ├── ollama_client.py # Ollama API 客户端(流式调用 + 指标测量)
│ ├── engine.py # 测试引擎(编排用例、统计、落盘)
│ ├── report.py # HTML 报告生成
│ ├── server.py # HTTP 服务器(API + 前端静态托管)
│ ├── stats.py # 统计计算(均值/标准差/百分位)
│ └── test_cases/ # 7 个测试用例(真实调用 Ollama)
│ ├── base.py
│ ├── case_01_generation.py 纯文本生成基准
│ ├── case_02_simple_tool.py 简单工具调用延迟
│ ├── case_03_file_analysis.py 文件读取+分析
│ ├── case_04_parallel_tool.py 并行工具调用
│ ├── case_05_long_context.py 长上下文处理
│ ├── case_06_reasoning.py 复杂推理任务
│ └── case_07_multiturn.py 多轮对话累积
├── frontend/ # 前端(静态页面)
│ ├── index.html
│ ├── css/style.css
│ └── js/app.js
├── results/ # 测试结果 JSON(运行时自动创建)
└── report/ # HTML 报告(运行时自动创建)
环境要求
- Python 3.8+
- Ollama 已安装并启动
- 已拉取至少一个模型,例如:
ollama pull gemma2:2b
快速开始
# 1. 启动 Ollama(如未启动)
ollama serve
# 或直接运行 ollama(Windows 桌面版一般自启)
# 2. 拉取模型(任选其一,或使用已拉取的模型)
ollama pull deepseek-r1:latest # 约 5GB,轻量
# 3. 安装依赖
pip install -r requirements.txt
# 4. 启动应用
python run.py
然后浏览器打开 http://localhost:8000。
注意:如果前端下拉框显示"未找到已拉取的模型",请确认 Ollama 服务已启动, 刷新页面即可重新加载模型列表。
使用说明
- 选择测试用例("推荐组合"勾选快速用例,耗时用例用于压力测试)
- 选择模型(自动从本地 Ollama 拉取已安装模型)
- 设置重复次数
- 点击"开始测试",观察实时进度
- 测试完成后自动展示:推理核心指标、延迟对比图表、详细数据表
- 可导出 CSV / JSON,或打开完整 HTML 报告
测试用例说明
| 用例 | 难度 | 说明 |
|---|---|---|
| 纯文本生成基准 | 简单 | 基础生成速度基准测试 |
| 简单工具调用延迟 | 简单 | 结构化工具输出的调用延迟 |
| 文件读取+分析 | 中等 | 文件读取与分析完整链路 |
| 并行工具调用 | 中等 | 串行 vs 并行请求的加速比 |
| 长上下文处理 | 耗时 | 500~4000 token 下 prefill 延迟变化 |
| 复杂推理任务 | 耗时 | 不同推理复杂度的延迟对比 |
| 多轮对话累积 | 耗时 | 上下文累积对延迟的影响 |
测量指标说明
| 指标 | 来源 |
|---|---|
| TTFT (首 Token 延迟) | 发起请求到首个生成 token 返回的时间 |
| Prefill Time | Ollama 返回的 prompt_eval_duration(prompt 预填充耗时) |
| Decode Speed | eval_count / eval_duration(生成速度 tokens/s) |
| E2E | 请求到完整回复的总耗时 |
配置(可选)
通过环境变量覆盖默认配置:
| 变量 | 默认值 | 说明 |
|---|---|---|
OLLAMA_BASE_URL |
http://localhost:11434 |
Ollama 服务地址 |
DEFAULT_MODEL |
qwen3.6:35b-a3b |
默认模型 |
SPEED_TEST_PORT |
8000 |
Web 服务端口 |
API 一览
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/models |
本地已拉取的模型列表 |
| GET | /api/cases |
用例注册表 |
| POST | /api/run |
开始测试(后台线程执行),body: {cases, repeats, model, skip_heavy} |
| GET | /api/status |
当前运行进度 |
| POST | /api/stop |
停止当前测试 |
| GET | /api/results/latest.json |
最近一次测试结果 |
| GET | /report.html |
完整 HTML 报告 |