Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
仅凭每秒令牌数无法解释发送请求后的等待时间。应分别测量首次响应内容、生成速率、完成时间和内存占用。本文提供了一种测量方法和客户端;并未进行实际模型基准测试或硬件排名。
定义时间边界
TTFT 通常指到达第一个令牌的时间,但一个 HTTP 片段不一定包含一个令牌。此脚本报告 TTFC,即到达第一个非空 response 片段的时间。它会单独记录返回的首次思考内容。此客户端指标包含排队、加载、提示处理和传输时间。
生成速率则使用服务器生成的令牌数量和生成持续时间。Ollama 持续时间以纳秒为单位;生成 API 的定义已于 2026 年 9 月 7 日检查。
这并非整个请求的吞吐量。不同的分词器也意味着仅凭词元数无法公平地比较日语答案的数量或质量。
修正条件
记录模型摘要、量化、Ollama 版本、CPU/GPU、RAM/VRAM、功耗限制、并发性和提示信息。保留返回的计数,因为相同的文本可能被分词成不同的形式。将首次使用未加载模型的请求与后续使用驻留模型的请求分开。
重复的提示信息可能会使用缓存。分别处理驻留模型/相同提示信息和驻留模型/新输入的测试。记录执行顺序,因为温度条件和后台工作可能会影响比较结果。
读取数据流
将 llm_benchmark.py 放在包含比较文本的 prompt.txt 旁边。它仅使用 Python 标准库。将 YOUR_MODEL 替换为已安装的模型:
python3 llm_benchmark.py --model YOUR_MODEL --prompt-file prompt.txt --runs 5 > runs.jsonl
默认端点为 127.0.0.1:11434/api/generate。请求使用 temperature=0、seed=42、num_predict=128、num_ctx=4096 和 keep_alive=5m。这些是实验设置,并不保证确定性或适用于所有模型。请检查输出计数和 done_reason,以判断是否存在提前终止或不同的思考行为。
验证输出和失败
每行 JSON 数据都包含 ttfc_s、first_thinking_s、client_total_s、generation_tokens_s 和服务器计数/持续时间。没有响应片段会导致 TTFC 为空;零生成持续时间会导致吞吐量为空。中断的流和 API 错误状态均为 status=error,绝不会是零秒成功。
解析、计时字段和失败处理均使用合成流式响应进行测试,而非实际的 Ollama 生成。首先进行五次试验以验证流程,然后根据明确的预热规则增加重复次数。报告成功次数、中位数和范围;不要将小样本 p95 值作为精确值呈现。
单独测量内存
该脚本不测量内存。运行模型 API 公开了驻留信息,包括 size_vram,但未公开整个系统的使用情况或瞬态峰值。在空闲和生成期间持续采样操作系统/GPU 指标,并注明观察间隔。
进程 RAM、页面缓存和 GPU 分配是不同的量;将它们相加可能会重复计数。尤其在统一内存系统上检查边界。诸如部分 CPU 处理之类的放置位置变化不应仅仅描述为模型能力的差异。
构建有用的比较表
包含模型/量化、输入/输出标记、驻留/缓存条件、成功次数、TTFC 中位数、生成速率中位数、总时间和内存指标/采样间隔。单独评估答案的正确性。对于能耗,请使用服务器功率测量将相同的工作负载转换为瓦时(Wh)。
评论
请先登录。
暂无数据。