✨ 在线体验最新纯前端版(无需下载/部署,点开即用): 👉 https://gengchaogit.github.io/llm_speedtest/
Python后端版本通过Python FastAPI后端发起HTTP请求,突破浏览器6并发限制,支持真正的高并发测试(50+并发)。
| 特性 | 浏览器版本 | Python后端版本 |
|---|---|---|
| 安装要求 | 无需安装 | 需要Python 3.7+ |
| 并发限制 | ≤6 (浏览器限制) | 50+ (无限制) |
| 测试准确性 | 一般 | 高 (真实并发) |
| 启动方式 | 双击HTML | 需启动后端服务 |
| 适用场景 | 快速测试 | 高并发压测 |
- Python 3.7 或更高版本
- Windows / Linux / macOS
cd python
pip install fastapi uvicorn httpx使用国内镜像加速(可选):
pip install fastapi uvicorn httpx -i https://pypi.tuna.tsinghua.edu.cn/simple双击以下任一脚本:
启动测速工具.bat(中文界面)Start_LLM_Speed_Test.bat(英文界面)
脚本会自动:
- 检查Python环境
- 安装缺失的依赖包
- 启动后端服务器
- 在默认浏览器打开测试页面
创建启动脚本:
#!/bin/bash
cd python
python llm_test_backend.py &
sleep 2
open LLM_Speed_Test_v3_Python_Backend.html # macOS
# xdg-open LLM_Speed_Test_v3_Python_Backend.html # Linuxcd python
python llm_test_backend.py后端服务将运行在 http://localhost:18000 (默认端口,可自动调整)
在浏览器中打开 LLM_Speed_Test_v3_Python_Backend.html
后端服务会自动选择一个未占用的随机端口,避免端口冲突。端口信息会自动传递给前端HTML页面。
如需手动指定端口,可以在启动时传递端口参数:
python llm_test_backend.py 8080 # 使用指定端口8080编辑 llm_test_backend.py 中的CORS配置(如需修改):
# CORS配置(跨域)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 生产环境建议限制来源
...
)前端页面会自动从URL参数接收后端端口信息。如需手动修改后端地址,可以在页面顶部的**"Python后端地址"**输入框中修改。
前端页面的所有功能与浏览器版本相同,包括:
- 后端地址配置(支持手动修改)
- API地址、模型名称、并发数等参数配置
- 历史记录管理
- 图表导出
- CSV导出/导入
- 浏览器版本受限于浏览器的6并发限制
- Python后端版本可支持50+并发,测试真实的系统并发能力
- 使用真实的墙上时间计算总吞吐量
- 记录每个请求的精确时间戳(开始时间、首token时间、结束时间)
- 计算公式:
- Prefill总吞吐 = 总prompt tokens / (最晚首token时间 - 最早开始时间)
- Decode总吞吐 = 总output tokens / (最晚结束时间 - 最早首token时间)
- TTFT (Time To First Token):首Token延迟,衡量模型响应速度
- ITL (Inter-Token Latency):Token间延迟,衡量生成流畅度
- 平均值:所有token间隔的平均时间
- 标准差:衡量生成稳定性/抖动(jitter)
- 独立图表展示TTFT和ITL随提示词长度的变化趋势
测试结果提供6个维度的可视化分析:
- Prefill吞吐图表:预填充速度随提示词长度变化
- Decode吞吐图表:输出速度随提示词长度变化
- TTFT图表:首Token延迟随提示词长度变化
- ITL图表:Token间延迟(平均值+标准差)
- Prefill百分位图表:P50/P90/P95吞吐分布
- Decode百分位图表:P50/P90/P95吞吐分布
- 支持勾选多条历史记录生成对比图表
- 完整6图表对比:对比所有维度的性能差异
- Prefill/Decode吞吐对比
- TTFT/ITL延迟对比
- 百分位统计对比(P50/P90/P95用不同线型区分)
- 一键导出所有对比图表为单张长图
- 单次测试导出:6个图表合并为一张长图导出
- 对比图表导出:6个对比图表合并导出
- 自动生成包含模型名、并发数、备注的标题
- 显示token统计的来源(API/本地估算)
- 对本地估算值添加⚠警告标记
- 显示P50/P90/P95百分位统计
- 更准确评估性能分布和稳定性
- 未勾选"保存测试详情"时不保存prompt/output文本
- 50并发测试存储占用减少约98%
- 框架: FastAPI
- WebSocket: 实时测试进度推送
- 异步HTTP客户端: httpx (支持真实高并发)
- 功能:
- 接收前端测试请求
- 并发发起HTTP请求到LLM API
- 记录精确时间戳
- 解析响应流并统计tokens
- 实时推送测试进度
- 通信: WebSocket连接后端
- 功能:
- 配置测试参数
- 接收实时测试结果
- 计算真实并发吞吐量
- 图表展示和数据导出
错误: Address already in use
解决方法:
v2.2版本已自动使用随机未占用端口,默认优先使用端口18000。一般不会遇到端口冲突。如果仍然遇到,可以:
# 手动指定一个空闲端口
python llm_test_backend.py 8080
# 或查找占用端口的进程
netstat -ano | findstr :18000 # Windows
lsof -i :18000 # Linux/macOS错误: WebSocket连接失败
检查步骤:
- 确认后端已启动且运行正常
- 检查浏览器控制台(F12)查看错误信息
- 确认页面顶部的"Python后端地址"是否正确(一般会自动设置)
- 如需手动修改,格式为:
ws://localhost:端口号(无需添加/ws/test后缀) - 检查防火墙设置
可能原因:
- LLM服务器资源不足(GPU显存、CPU)
- 网络带宽限制
- LLM服务配置的最大batch size限制
建议:
- 从较低并发开始测试(如10),逐步增加
- 监控服务器资源使用情况
- 检查LLM服务器日志
错误: pip install 失败
解决方法:
# 使用国内镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastapi uvicorn httpx
# 或使用清华镜像
pip install -i https://pypi.mirrors.ustc.edu.cn/simple fastapi uvicorn httpx关闭后端命令行窗口即可停止服务
在后端终端按 Ctrl+C 停止服务
- 测试开始: 建议从10并发开始
- 逐步增加: 每次增加10-20并发
- 监控观察: 注意服务器负载和响应时间
- 找到上限: 当延迟明显增加时即为系统瓶颈
- 短提示词测试 (128-1024): 测试Prefill性能
- 长提示词测试 (4096-32768): 测试长上下文处理能力
- 超长提示词 (32768+): 测试系统极限
- 短输出 (128-512): 测试基础Decode性能
- 长输出 (1024-2048): 测试持续生成能力
- ✅ 天梯榜系统 (Leaderboard): 支持将测试成绩上传云端、生成专属分享词及专属图表连接,随时展示评测记录
- ✅ 全网总榜与个人记录: 快速查看大家在各显卡、各框架上的最新评测数据
- ✅ CSV 批量上传云端: 支持将过往的历史评测 CSV 合并并一次性上传至排行榜
- ✅ 新版用户身份与防刷机制: 基于 Supabase 提供的安全防护、速率限制 (100次/天) 与数据存储
- 非对比模式:6个图表标题(Prefill/Decode/TTFT/ITL/百分位)完整翻译
- 对比模式:6个对比图表标题完整翻译
- Y轴标签:吞吐/时间单位的翻译
- 解决英文模式下仍显示中文标题的问题
- ✅ 文件名优化:全面优化导出文件名生成逻辑
- 兼容Windows/Linux/macOS文件名限制(正确处理禁止字符
< > : " / \ | ? *) - 移除所有特殊字符(+、括号、冒号等)
- 防止中文字符截断问题(使用
substring而非slice) - 添加时间戳避免文件覆盖(格式:2025-12-30_14_30_45)
- 优化文件名长度(限制在200字符以内,确保跨平台兼容)
- 影响范围:CSV导出、历史记录CSV导出、图表导出、对比图表导出
- 兼容Windows/Linux/macOS文件名限制(正确处理禁止字符
- ✅ TTFT测量:新增首Token时间(Time To First Token)测量,独立图表展示
- ✅ ITL测量:新增Token间延迟(Inter-Token Latency)测量
- 平均值:衡量整体生成速度
- 标准差:衡量生成稳定性/抖动
- ✅ 6图表体系:测试结果提供完整6个维度的可视化分析
- ✅ 完整对比功能:历史记录对比现在支持全部6个图表的对比
- Prefill/Decode吞吐对比
- TTFT/ITL延迟对比
- 百分位统计对比(P50/P90/P95)
- ✅ 增强导出功能:
- 单次测试导出所有6个图表为一张长图
- 对比图表导出所有6个对比图表为一张长图
- ✅ 智能端口选择:默认使用端口18000(避开常见端口),被占用时自动选择随机端口
- ✅ 端口自动传递:启动脚本自动捕获端口并传递给HTML前端
- ✅ 前端显示配置:HTML页面可显示和修改后端地址
- ✅ 手动端口指定:支持通过命令行参数手动指定端口
- ✅ 历史记录保持:使用固定默认端口,确保localStorage历史记录不丢失
- ✅ 修复并发吞吐量计算(关键修复):
- 使用基于真实时间戳的墙上时间计算总吞吐量
- 正确处理并发请求的时间重叠
- Prefill吞吐 = 总tokens / (最晚首token时间 - 最早开始时间)
- Decode吞吐 = 总tokens / (最晚结束时间 - 最早首token时间)
- ✅ 修复图表导出按钮的翻译变量作用域问题
- ✅ 修复加载历史记录时的图表标题显示
- ✅ 初始发布Python后端版本
- ✅ 支持50+真实高并发测试
- ✅ 修复并发吞吐量计算错误
- ✅ 添加Token来源追踪
- ✅ 添加百分位统计(P50/P90/P95)
- ✅ 优化存储空间占用
- ✅ 提供一键启动脚本
- GitHub: https://github.com/gengchaogit/llm_speedtest
- QQ群: 1028429001
- Issues: 欢迎在GitHub提交问题和建议
本项目基于原作者纸鸢随风(B站)的工作进行改进
开发者: chao (魔改版维护者) 版本: v2.2 最后更新: 2025-12-30