llm-speed-bench 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,34 @@ It is designed to provide detailed, actionable data on the output speed and late
14
14
 
15
15
  ## Installation
16
16
 
17
+ There are multiple ways to use `llm-speed-bench`:
18
+
19
+ ### NPX (Recommended)
20
+
21
+ The easiest way to run the tool without a permanent installation is to use `npx`. This ensures you are always using the latest version.
22
+
23
+ ```bash
24
+ npx llm-speed-bench [options]
25
+ ```
26
+
27
+ ### Global Installation
28
+
29
+ If you prefer to have the command available globally, you can install it via npm:
30
+
31
+ ```bash
32
+ npm install -g llm-speed-bench
33
+ ```
34
+
35
+ Once installed, you can run the tool from any directory:
36
+
37
+ ```bash
38
+ llm-speed-bench [options]
39
+ ```
40
+
41
+ ### Local Installation (for Development)
42
+
43
+ If you want to contribute to the project or modify the code, you can install it locally.
44
+
17
45
  1. **Clone the repository:**
18
46
  ```bash
19
47
  git clone https://github.com/your-username/llm-speed-bench.git
@@ -29,7 +57,7 @@ It is designed to provide detailed, actionable data on the output speed and late
29
57
  ```bash
30
58
  npm run build
31
59
  ```
32
- This will compile the TypeScript code into JavaScript and place the executable in the `dist/` directory.
60
+ This will compile the TypeScript code into JavaScript and place the executable in the `dist/` directory. You can then run the tool directly: `./dist/index.js`.
33
61
 
34
62
  ## Usage
35
63
 
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import yargs from 'yargs';
4
4
  import { hideBin } from 'yargs/helpers';
5
5
  import dotenv from 'dotenv';
6
6
  import { get_encoding } from 'tiktoken';
7
+ import ms from 'ms';
7
8
  // Load environment variables from .env file
8
9
  dotenv.config({ quiet: true });
9
10
  // --- Utility Functions ---
@@ -140,6 +141,12 @@ async function getConfig() {
140
141
  type: 'boolean',
141
142
  description: 'Output the results in JSON format.',
142
143
  default: false,
144
+ })
145
+ .option('effort', {
146
+ alias: 'e',
147
+ type: 'string',
148
+ description: 'Reasoning effort level.',
149
+ choices: ['minimal', 'low', 'medium', 'high'],
143
150
  })
144
151
  .help()
145
152
  .alias('help', 'h')
@@ -156,6 +163,7 @@ async function getConfig() {
156
163
  model: argv.model,
157
164
  prompt: argv.prompt,
158
165
  json: argv.json ?? false,
166
+ effort: argv.effort,
159
167
  };
160
168
  return config;
161
169
  }
@@ -164,14 +172,19 @@ async function getConfig() {
164
172
  * @param config - The configuration object.
165
173
  */
166
174
  async function runBenchmark(config) {
167
- const { apiBaseUrl, apiKey, model, prompt, json } = config;
175
+ const { apiBaseUrl, apiKey, model, prompt, json, effort } = config;
168
176
  const progress = new ProgressIndicator(json);
169
177
  progress.start('Connecting...');
170
178
  const T_start = performance.now();
171
- let T_first_token = null;
172
- const interTokenLatencies = [];
173
- let lastChunkTime = 0;
174
- let outputTokens = 0;
179
+ let T_second_token = null;
180
+ const tokenTimestamps = {
181
+ all: [],
182
+ completion: [],
183
+ reasoning: [],
184
+ };
185
+ let totalOutputTokens = 0;
186
+ let completionTokens = 0;
187
+ let reasoningTokens = 0;
175
188
  try {
176
189
  const url = new URL(apiBaseUrl);
177
190
  if (!url.pathname.endsWith('/')) {
@@ -184,6 +197,14 @@ async function runBenchmark(config) {
184
197
  else {
185
198
  finalUrl = new URL('v1/chat/completions', url);
186
199
  }
200
+ const body = {
201
+ model,
202
+ messages: [{ role: 'user', content: prompt }],
203
+ stream: true,
204
+ };
205
+ if (effort) {
206
+ body.reasoning = { effort };
207
+ }
187
208
  progress.update('Sending Request...');
188
209
  const response = await fetch(finalUrl, {
189
210
  method: 'POST',
@@ -191,11 +212,7 @@ async function runBenchmark(config) {
191
212
  'Content-Type': 'application/json',
192
213
  Authorization: `Bearer ${apiKey}`,
193
214
  },
194
- body: JSON.stringify({
195
- model,
196
- messages: [{ role: 'user', content: prompt }],
197
- stream: true,
198
- }),
215
+ body: JSON.stringify(body),
199
216
  });
200
217
  if (!response.ok || !response.body) {
201
218
  const errorBody = await response.text();
@@ -209,16 +226,11 @@ async function runBenchmark(config) {
209
226
  if (done) {
210
227
  break;
211
228
  }
212
- const chunkTime = performance.now();
213
- if (T_first_token === null) {
214
- T_first_token = chunkTime;
215
- }
216
- if (lastChunkTime > 0) {
217
- interTokenLatencies.push(chunkTime - lastChunkTime);
218
- }
219
- lastChunkTime = chunkTime;
220
229
  const chunk = decoder.decode(value, { stream: true });
221
230
  const lines = chunk.split('\n').filter((line) => line.trim().startsWith('data:'));
231
+ let chunkProducedTokens = false;
232
+ let chunkProducedCompletionTokens = 0;
233
+ let chunkProducedReasoningTokens = 0;
222
234
  for (const line of lines) {
223
235
  const data = line.substring(5).trim();
224
236
  if (data === '[DONE]') {
@@ -226,47 +238,91 @@ async function runBenchmark(config) {
226
238
  }
227
239
  try {
228
240
  const parsed = JSON.parse(data);
229
- const content = parsed.choices[0]?.delta?.content;
230
- if (content) {
231
- outputTokens++;
232
- const elapsedS = (performance.now() - T_first_token) / 1000;
233
- const tokensPerSecond = elapsedS > 0 ? outputTokens / elapsedS : 0;
234
- progress.update(`Receiving Tokens... (${outputTokens} tokens received @ ${tokensPerSecond.toFixed(2)} tokens/s)`);
241
+ const delta = parsed.choices?.[0]?.delta;
242
+ if (!delta) {
243
+ continue;
244
+ }
245
+ const completionCount = countTokenLikeEntries(delta.content);
246
+ const reasoningCount = countTokenLikeEntries(delta.reasoning);
247
+ const reasoningContentCount = countTokenLikeEntries(delta.reasoning_content);
248
+ const totalReasoning = reasoningCount + reasoningContentCount;
249
+ if (completionCount > 0 || totalReasoning > 0) {
250
+ chunkProducedTokens = true;
251
+ chunkProducedCompletionTokens += completionCount;
252
+ chunkProducedReasoningTokens += totalReasoning;
235
253
  }
236
254
  }
237
255
  catch (e) {
238
256
  // Ignore parsing errors for non-JSON lines
239
257
  }
240
258
  }
259
+ if (chunkProducedTokens) {
260
+ const chunkTime = performance.now();
261
+ const producedTokens = chunkProducedCompletionTokens + chunkProducedReasoningTokens;
262
+ totalOutputTokens += producedTokens;
263
+ completionTokens += chunkProducedCompletionTokens;
264
+ reasoningTokens += chunkProducedReasoningTokens;
265
+ const registerTimestamp = (container, count) => {
266
+ for (let i = 0; i < count; i++) {
267
+ container.push(chunkTime);
268
+ }
269
+ };
270
+ if (chunkProducedCompletionTokens > 0) {
271
+ registerTimestamp(tokenTimestamps.completion, chunkProducedCompletionTokens);
272
+ registerTimestamp(tokenTimestamps.all, chunkProducedCompletionTokens);
273
+ }
274
+ if (chunkProducedReasoningTokens > 0) {
275
+ registerTimestamp(tokenTimestamps.reasoning, chunkProducedReasoningTokens);
276
+ registerTimestamp(tokenTimestamps.all, chunkProducedReasoningTokens);
277
+ }
278
+ if (tokenTimestamps.all.length >= 2 && T_second_token === null) {
279
+ T_second_token = tokenTimestamps.all[1];
280
+ }
281
+ const totalTokensLabel = totalOutputTokens === 1 ? 'token' : 'tokens';
282
+ const completionLabel = completionTokens === 1 ? 'token' : 'tokens';
283
+ const reasoningLabel = reasoningTokens === 1 ? 'token' : 'tokens';
284
+ let message = `Receiving Tokens... (total: ${totalOutputTokens} ${totalTokensLabel}`;
285
+ message += ` | completion: ${completionTokens} ${completionLabel}`;
286
+ message += ` | reasoning: ${reasoningTokens} ${reasoningLabel}`;
287
+ if (T_second_token && totalOutputTokens > 1) {
288
+ const elapsedS = (chunkTime - T_second_token) / 1000;
289
+ const tokensSinceSecond = totalOutputTokens - 1;
290
+ const tokensPerSecond = elapsedS > 0 ? tokensSinceSecond / elapsedS : 0;
291
+ message += ` @ ${tokensPerSecond.toFixed(2)} tokens/s`;
292
+ }
293
+ message += ')';
294
+ progress.update(message);
295
+ }
241
296
  }
242
297
  const T_end = performance.now();
243
298
  progress.stop('Finished receiving tokens.');
244
299
  const totalWallClockTimeMs = T_end - T_start;
245
- const timeToFirstTokenMs = T_first_token ? T_first_token - T_start : 0;
246
300
  // Estimate prompt tokens using tiktoken
247
301
  const encoding = get_encoding('cl100k_base');
248
302
  const promptTokens = encoding.encode(prompt).length;
249
303
  encoding.free();
250
- const outputDurationS = (totalWallClockTimeMs - timeToFirstTokenMs) / 1000;
251
- const overallOutputRateTps = outputDurationS > 0 ? outputTokens / outputDurationS : 0;
252
- const latencyStats = calculateLatencyStats(interTokenLatencies);
304
+ const inclusiveMetrics = computeViewpointMetrics(tokenTimestamps.all, totalOutputTokens, totalWallClockTimeMs, T_start, T_end);
305
+ const reasoningOnlyMetrics = computeViewpointMetrics(tokenTimestamps.reasoning, reasoningTokens, totalWallClockTimeMs, T_start, T_end);
306
+ const completionOnlyMetrics = computeViewpointMetrics(tokenTimestamps.completion, completionTokens, totalWallClockTimeMs, T_start, T_end);
253
307
  const results = {
254
308
  configuration: {
255
309
  apiBaseUrl,
256
310
  model,
257
311
  },
258
312
  metrics: {
259
- timeToFirstTokenMs: parseFloat(timeToFirstTokenMs.toFixed(2)),
260
313
  totalWallClockTimeMs: parseFloat(totalWallClockTimeMs.toFixed(2)),
261
- overallOutputRateTps: parseFloat(overallOutputRateTps.toFixed(2)),
314
+ timeToSecondTokenMs: parseFloat((T_second_token ? T_second_token - T_start : 0).toFixed(2)),
315
+ views: {
316
+ reasoningInclusive: inclusiveMetrics,
317
+ reasoningOnly: reasoningOnlyMetrics,
318
+ completionOnly: completionOnlyMetrics,
319
+ },
262
320
  },
263
321
  tokenCounts: {
264
322
  promptTokens,
265
- outputTokens,
266
- },
267
- interTokenLatencyMs: {
268
- ...latencyStats,
269
- latencies: interTokenLatencies,
323
+ completionTokens,
324
+ reasoningTokens,
325
+ totalOutputTokens,
270
326
  },
271
327
  };
272
328
  printResults(results, config.json);
@@ -286,9 +342,31 @@ function printResults(results, asJson) {
286
342
  // Create a new object for JSON output that doesn't include the full latencies array
287
343
  const jsonOutput = {
288
344
  ...results,
289
- interTokenLatencyMs: {
290
- ...results.interTokenLatencyMs,
291
- latencies: undefined, // Remove the detailed list for the final JSON output
345
+ metrics: {
346
+ ...results.metrics,
347
+ views: {
348
+ reasoningInclusive: {
349
+ ...results.metrics.views.reasoningInclusive,
350
+ interTokenLatencyMs: {
351
+ ...results.metrics.views.reasoningInclusive.interTokenLatencyMs,
352
+ latencies: undefined,
353
+ },
354
+ },
355
+ reasoningOnly: {
356
+ ...results.metrics.views.reasoningOnly,
357
+ interTokenLatencyMs: {
358
+ ...results.metrics.views.reasoningOnly.interTokenLatencyMs,
359
+ latencies: undefined,
360
+ },
361
+ },
362
+ completionOnly: {
363
+ ...results.metrics.views.completionOnly,
364
+ interTokenLatencyMs: {
365
+ ...results.metrics.views.completionOnly.interTokenLatencyMs,
366
+ latencies: undefined,
367
+ },
368
+ },
369
+ },
292
370
  },
293
371
  };
294
372
  // delete jsonOutput.interTokenLatencyMs.latencies;
@@ -305,24 +383,35 @@ function printResults(results, asJson) {
305
383
  console.log();
306
384
  console.log('Metrics');
307
385
  console.log('-----------------------');
308
- console.log(`Time to First Token: ${results.metrics.timeToFirstTokenMs} ms`);
309
- console.log(`Total Wall Clock Time: ${results.metrics.totalWallClockTimeMs} ms`);
310
- console.log(`Overall Output Rate: ${results.metrics.overallOutputRateTps} tokens/sec`);
386
+ console.log(`Total Wall Clock Time: ${results.metrics.totalWallClockTimeMs} ms (${ms(results.metrics.totalWallClockTimeMs)})`);
387
+ console.log(`Time to Second Token (all tokens): ${results.metrics.timeToSecondTokenMs} ms (${ms(results.metrics.timeToSecondTokenMs)})`);
311
388
  console.log();
312
389
  console.log('Token Counts');
313
390
  console.log('-----------------------');
314
391
  console.log(`Prompt Tokens: ${results.tokenCounts.promptTokens} (estimated)`);
315
- console.log(`Output Tokens: ${results.tokenCounts.outputTokens}`);
392
+ console.log(`Reasoning Tokens: ${results.tokenCounts.reasoningTokens}`);
393
+ console.log(`Completion Tokens: ${results.tokenCounts.completionTokens}`);
394
+ console.log(`Total Output Tokens: ${results.tokenCounts.totalOutputTokens}`);
395
+ console.log();
396
+ const { reasoningInclusive, reasoningOnly, completionOnly } = results.metrics.views;
397
+ console.log('Reasoning + Completion View');
398
+ console.log('-----------------------');
399
+ console.log(`Time to Second Token: ${reasoningInclusive.timeToSecondTokenMs} ms (${ms(reasoningInclusive.timeToSecondTokenMs)})`);
400
+ console.log(`Time to Second Reasoning Token: ${reasoningOnly.timeToSecondTokenMs} ms (${ms(reasoningOnly.timeToSecondTokenMs)})`);
401
+ console.log(`Time to Second Completion Token: ${completionOnly.timeToSecondTokenMs} ms (${ms(completionOnly.timeToSecondTokenMs)})`);
402
+ console.log(`Output Rate (since 2nd reasoning token): ${reasoningOnly.outputRateTpsFromSecondToken} tokens/sec`);
403
+ console.log(`Output Rate (since 2nd completion token): ${completionOnly.outputRateTpsFromSecondToken} tokens/sec`);
404
+ console.log(`Output Rate (wall clock): ${reasoningInclusive.outputRateTpsFromRequestStart} tokens/sec`);
316
405
  console.log();
317
406
  console.log('Inter-Token Latency (ms)');
318
407
  console.log('-----------------------');
319
- console.log(`Min: ${results.interTokenLatencyMs.min} ms`);
320
- console.log(`Mean: ${results.interTokenLatencyMs.mean} ms`);
321
- console.log(`Median: ${results.interTokenLatencyMs.median} ms`);
322
- console.log(`Max: ${results.interTokenLatencyMs.max} ms`);
323
- console.log(`p90: ${results.interTokenLatencyMs.p90} ms`);
324
- console.log(`p95: ${results.interTokenLatencyMs.p95} ms`);
325
- console.log(`p99: ${results.interTokenLatencyMs.p99} ms`);
408
+ console.log(`Min: ${reasoningInclusive.interTokenLatencyMs.min} ms`);
409
+ console.log(`Mean: ${reasoningInclusive.interTokenLatencyMs.mean} ms`);
410
+ console.log(`Median: ${reasoningInclusive.interTokenLatencyMs.median} ms`);
411
+ console.log(`Max: ${reasoningInclusive.interTokenLatencyMs.max} ms`);
412
+ console.log(`p90: ${reasoningInclusive.interTokenLatencyMs.p90} ms`);
413
+ console.log(`p95: ${reasoningInclusive.interTokenLatencyMs.p95} ms`);
414
+ console.log(`p99: ${reasoningInclusive.interTokenLatencyMs.p99} ms`);
326
415
  }
327
416
  // --- Entry Point ---
328
417
  (async () => {
@@ -336,4 +425,75 @@ function printResults(results, asJson) {
336
425
  process.exit(1);
337
426
  }
338
427
  })();
428
+ /**
429
+ * Counts token-like entries within a streamed delta field.
430
+ * @param value - The value to examine for token content.
431
+ * @returns The number of token-like entries discovered.
432
+ */
433
+ function countTokenLikeEntries(value) {
434
+ if (value === null || value === undefined) {
435
+ return 0;
436
+ }
437
+ if (typeof value === 'string') {
438
+ return value.trim() ? 1 : 0;
439
+ }
440
+ if (Array.isArray(value)) {
441
+ return value.reduce((total, item) => total + countTokenLikeEntries(item), 0);
442
+ }
443
+ if (typeof value === 'object') {
444
+ const obj = value;
445
+ if (obj.tokens !== undefined) {
446
+ return countTokenLikeEntries(obj.tokens);
447
+ }
448
+ if (obj.content !== undefined) {
449
+ return countTokenLikeEntries(obj.content);
450
+ }
451
+ if (typeof obj.text === 'string') {
452
+ return obj.text.trim() ? 1 : 0;
453
+ }
454
+ return 0;
455
+ }
456
+ return 0;
457
+ }
458
+ /**
459
+ * Computes throughput and latency statistics for a given set of token timestamps.
460
+ * @param timestamps - The timestamps for each token in the view.
461
+ * @param tokenCount - The total number of tokens in the view.
462
+ * @param totalWallClockTimeMs - The total wall clock time of the run.
463
+ * @param start - The benchmark start time.
464
+ * @param end - The benchmark end time.
465
+ * @returns Metrics describing the selected viewpoint.
466
+ */
467
+ function computeViewpointMetrics(timestamps, tokenCount, totalWallClockTimeMs, start, end) {
468
+ const timeToFirstTokenMs = timestamps[0] !== undefined ? timestamps[0] - start : 0;
469
+ const timeToSecondTokenMs = timestamps[1] !== undefined ? timestamps[1] - start : 0;
470
+ const tokensExcludingFirst = Math.max(tokenCount - 1, 0);
471
+ const outputDurationMsFromSecondToken = timestamps[1] !== undefined ? end - timestamps[1] : 0;
472
+ const outputRateTpsFromSecondToken = outputDurationMsFromSecondToken > 0
473
+ ? (tokensExcludingFirst / outputDurationMsFromSecondToken) * 1000
474
+ : 0;
475
+ const outputRateTpsFromRequestStart = totalWallClockTimeMs > 0
476
+ ? (tokensExcludingFirst / totalWallClockTimeMs) * 1000
477
+ : 0;
478
+ const latencies = [];
479
+ for (let i = 1; i < timestamps.length; i++) {
480
+ const previous = timestamps[i - 1];
481
+ const current = timestamps[i];
482
+ if (previous !== undefined && current !== undefined) {
483
+ latencies.push(current - previous);
484
+ }
485
+ }
486
+ const latencyStats = calculateLatencyStats(latencies);
487
+ return {
488
+ outputTokens: tokenCount,
489
+ timeToFirstTokenMs: parseFloat(timeToFirstTokenMs.toFixed(2)),
490
+ timeToSecondTokenMs: parseFloat(timeToSecondTokenMs.toFixed(2)),
491
+ outputRateTpsFromSecondToken: parseFloat(outputRateTpsFromSecondToken.toFixed(2)),
492
+ outputRateTpsFromRequestStart: parseFloat(outputRateTpsFromRequestStart.toFixed(2)),
493
+ interTokenLatencyMs: {
494
+ ...latencyStats,
495
+ latencies,
496
+ },
497
+ };
498
+ }
339
499
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-speed-bench",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "A CLI tool to benchmark the performance of OpenAI-compatible LLM providers.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -25,9 +25,11 @@
25
25
  "author": "",
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
+ "@types/ms": "^2.1.0",
28
29
  "@types/node": "^24.3.0",
29
30
  "@types/yargs": "^17.0.33",
30
31
  "dotenv": "^17.2.2",
32
+ "ms": "^2.1.3",
31
33
  "tiktoken": "^1.0.22",
32
34
  "ts-node": "^10.9.2",
33
35
  "typescript": "^5.9.2",