From a4200f193f9d6c7c5f2d1b7a85a0d48313de3c94 Mon Sep 17 00:00:00 2001 From: Simba Zhang Date: Tue, 17 Mar 2026 20:52:13 -0700 Subject: [PATCH] feat: expand HomeSec-Bench to 143 tests, add perf metrics, enable skill auto-start MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update benchmark paper: 131→143 tests (VLM Scene 35→47, 3 new dedup scenarios, 4 new tool-use scenarios) - Add performance metrics to run-benchmark.cjs (TTFT, decode throughput tracking) - Fix tool_call argument serialization for non-string arguments - Enable auto_start for yolo-detection-2026 and depth-estimation skills - Add LaTeX build artifacts .gitignore --- docs/paper/.gitignore | 10 ++ docs/paper/home-security-benchmark.pdf | Bin 90122 -> 95995 bytes docs/paper/home-security-benchmark.tex | 144 ++++++++++++++--- .../scripts/run-benchmark.cjs | 148 ++++++++++++++++-- .../detection/yolo-detection-2026/config.yaml | 2 +- .../depth-estimation/config.yaml | 6 + 6 files changed, 275 insertions(+), 35 deletions(-) create mode 100644 docs/paper/.gitignore diff --git a/docs/paper/.gitignore b/docs/paper/.gitignore new file mode 100644 index 00000000..908987e3 --- /dev/null +++ b/docs/paper/.gitignore @@ -0,0 +1,10 @@ +# LaTeX build artifacts +*.aux +*.log +*.out +*.synctex.gz +*.toc +*.bbl +*.blg +*.fls +*.fdb_latexmk diff --git a/docs/paper/home-security-benchmark.pdf b/docs/paper/home-security-benchmark.pdf index 85677bfefd53332bf8e2ad786e05cc9bbb2bca44..f5a588fc6d58348f49e79a75d0b5e2351a1add27 100644 GIT binary patch delta 60502 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 delta 54613 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 { if (m.role === 'assistant' && m.tool_calls) { // Convert tool call to text representation - const callDesc = m.tool_calls.map(tc => - `[Calling ${tc.function.name}(${tc.function.arguments})]` - ).join('\n'); + const callDesc = m.tool_calls.map(tc => { + const argStr = typeof tc.function.arguments === 'string' + ? tc.function.arguments + : JSON.stringify(tc.function.arguments); + return `[Calling ${tc.function.name}(${argStr})]`; + }).join('\n'); return { role: 'assistant', content: callDesc }; } if (m.role === 'tool') { @@ -269,6 +273,7 @@ async function llmCall(messages, opts = {}) { } } + const callStartTime = Date.now(); try { const stream = await client.chat.completions.create(params, { signal: controller.signal, @@ -281,6 +286,7 @@ async function llmCall(messages, opts = {}) { let usage = {}; let tokenCount = 0; let tokenBuffer = ''; + let firstTokenTime = null; // For TTFT measurement for await (const chunk of stream) { resetIdle(); @@ -292,6 +298,8 @@ async function llmCall(messages, opts = {}) { if (delta?.reasoning_content) reasoningContent += delta.reasoning_content; if (delta?.content || delta?.reasoning_content) { tokenCount++; + // Capture TTFT on first content/reasoning token + if (!firstTokenTime) firstTokenTime = Date.now(); // Buffer and log tokens — tag with field source const isContent = !!delta?.content; const tok = delta?.content || delta?.reasoning_content || ''; @@ -345,7 +353,12 @@ async function llmCall(messages, opts = {}) { toolCalls[idx] = { id: tc.id, type: tc.type || 'function', function: { name: '', arguments: '' } }; } if (tc.function?.name) toolCalls[idx].function.name += tc.function.name; - if (tc.function?.arguments) toolCalls[idx].function.arguments += tc.function.arguments; + if (tc.function?.arguments) { + const chunk = typeof tc.function.arguments === 'string' + ? tc.function.arguments + : JSON.stringify(tc.function.arguments); + toolCalls[idx].function.arguments += chunk; + } } } @@ -379,6 +392,22 @@ async function llmCall(messages, opts = {}) { const totalTokens = usage.total_tokens || (promptTokens + completionTokens); const callTokens = { prompt: promptTokens, completion: completionTokens, total: totalTokens }; + // ─── Performance metrics ─── + const callEndTime = Date.now(); + const totalElapsedMs = callEndTime - callStartTime; + const ttftMs = firstTokenTime ? (firstTokenTime - callStartTime) : null; + // Decode throughput: tokens generated / time spent generating (after first token) + const decodeMs = firstTokenTime ? (callEndTime - firstTokenTime) : 0; + const decodeTokensPerSec = (decodeMs > 0 && tokenCount > 1) + ? ((tokenCount - 1) / (decodeMs / 1000)) // -1 because first token is the TTFT boundary + : null; + + const callPerf = { + ttftMs, + decodeTokensPerSec: decodeTokensPerSec ? parseFloat(decodeTokensPerSec.toFixed(1)) : null, + totalElapsedMs, + }; + // Track global token totals results.tokenTotals.prompt += callTokens.prompt; results.tokenTotals.completion += callTokens.completion; @@ -391,6 +420,16 @@ async function llmCall(messages, opts = {}) { _currentTestTokens.total += callTokens.total; } + // Track per-test perf (accumulated across multiple llmCall invocations within one test) + if (_currentTestPerf) { + if (ttftMs !== null) _currentTestPerf.ttftMs.push(ttftMs); + if (decodeTokensPerSec !== null) _currentTestPerf.decodeTokensPerSec.push(decodeTokensPerSec); + } + + // Track global perf totals + if (ttftMs !== null) results.perfTotals.ttftMs.push(ttftMs); + if (decodeTokensPerSec !== null) results.perfTotals.decodeTokensPerSec.push(decodeTokensPerSec); + // Capture model name from first response if (opts.vlm) { if (!results.model.vlm && model) results.model.vlm = model; @@ -398,7 +437,7 @@ async function llmCall(messages, opts = {}) { if (!results.model.name && model) results.model.name = model; } - return { content, toolCalls, usage: callTokens, model }; + return { content, toolCalls, usage: callTokens, perf: callPerf, model }; } finally { clearTimeout(idleTimer); } @@ -486,33 +525,47 @@ async function runSuites() { } } -// ─── Per-test token accumulator (set by test(), read by llmCall) ────────────── +// ─── Per-test token + perf accumulators (set by test(), read by llmCall) ────── let _currentTestTokens = null; +let _currentTestPerf = null; async function test(name, fn) { - const testResult = { name, status: 'pass', timeMs: 0, detail: '', tokens: { prompt: 0, completion: 0, total: 0 } }; + const testResult = { name, status: 'pass', timeMs: 0, detail: '', tokens: { prompt: 0, completion: 0, total: 0 }, perf: {} }; _currentTestTokens = { prompt: 0, completion: 0, total: 0 }; + _currentTestPerf = { ttftMs: [], decodeTokensPerSec: [] }; const start = Date.now(); try { const detail = await fn(); testResult.timeMs = Date.now() - start; testResult.detail = detail || ''; testResult.tokens = { ..._currentTestTokens }; + // Compute aggregate perf for this test (may span multiple llmCall invocations) + testResult.perf = { + ttftMs: _currentTestPerf.ttftMs.length > 0 ? Math.round(_currentTestPerf.ttftMs.reduce((a, b) => a + b, 0) / _currentTestPerf.ttftMs.length) : null, + decodeTokensPerSec: _currentTestPerf.decodeTokensPerSec.length > 0 ? parseFloat((_currentTestPerf.decodeTokensPerSec.reduce((a, b) => a + b, 0) / _currentTestPerf.decodeTokensPerSec.length).toFixed(1)) : null, + }; currentSuite.passed++; const tokInfo = _currentTestTokens.total > 0 ? `, ${_currentTestTokens.total} tok` : ''; - log(` ✅ ${name} (${testResult.timeMs}ms${tokInfo})${detail ? ` — ${detail}` : ''}`); + const perfInfo = testResult.perf.ttftMs !== null ? `, TTFT ${testResult.perf.ttftMs}ms` : ''; + const tpsInfo = testResult.perf.decodeTokensPerSec !== null ? `, ${testResult.perf.decodeTokensPerSec} tok/s` : ''; + log(` ✅ ${name} (${testResult.timeMs}ms${tokInfo}${perfInfo}${tpsInfo})${detail ? ` — ${detail}` : ''}`); } catch (err) { testResult.timeMs = Date.now() - start; testResult.status = 'fail'; testResult.detail = err.message; testResult.tokens = { ..._currentTestTokens }; + testResult.perf = { + ttftMs: _currentTestPerf.ttftMs.length > 0 ? Math.round(_currentTestPerf.ttftMs.reduce((a, b) => a + b, 0) / _currentTestPerf.ttftMs.length) : null, + decodeTokensPerSec: _currentTestPerf.decodeTokensPerSec.length > 0 ? parseFloat((_currentTestPerf.decodeTokensPerSec.reduce((a, b) => a + b, 0) / _currentTestPerf.decodeTokensPerSec.length).toFixed(1)) : null, + }; currentSuite.failed++; log(` ❌ ${name} (${testResult.timeMs}ms) — ${err.message}`); } _currentTestTokens = null; + _currentTestPerf = null; currentSuite.timeMs += testResult.timeMs; currentSuite.tests.push(testResult); - emit({ event: 'test_result', suite: currentSuite.name, test: name, status: testResult.status, timeMs: testResult.timeMs, detail: testResult.detail.slice(0, 120), tokens: testResult.tokens }); + emit({ event: 'test_result', suite: currentSuite.name, test: name, status: testResult.status, timeMs: testResult.timeMs, detail: testResult.detail.slice(0, 120), tokens: testResult.tokens, perf: testResult.perf }); } function skip(name, reason) { @@ -2009,6 +2062,52 @@ function collectSystemInfo() { }; } +// ═══════════════════════════════════════════════════════════════════════════════ +// SERVER METRICS SCRAPER (llama-server Prometheus /metrics endpoint) +// ═══════════════════════════════════════════════════════════════════════════════ + +/** + * Scrape llama-server /metrics endpoint for server-side performance stats. + * Requires llama-server to be launched with --metrics flag. + * Extracts: prompt_tokens_seconds (prefill tok/s), predicted_tokens_seconds (decode tok/s) + */ +async function scrapeServerMetrics() { + // Try LLM server first, then VLM server + const ports = [ + { name: 'LLM', url: LLM_URL || GATEWAY_URL }, + ...(VLM_URL ? [{ name: 'VLM', url: VLM_URL }] : []), + ]; + + for (const { name, url } of ports) { + try { + const base = url.replace(/\/v1\/?$/, ''); + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 3000); + const res = await fetch(`${base}/metrics`, { signal: controller.signal }); + clearTimeout(timeout); + + if (!res.ok) continue; + const text = await res.text(); + + // Parse Prometheus text format for our metrics + const prefillMatch = text.match(/llamacpp:prompt_tokens_seconds\s+([\d.]+)/); + const decodeMatch = text.match(/llamacpp:predicted_tokens_seconds\s+([\d.]+)/); + + if (prefillMatch || decodeMatch) { + const prefill = prefillMatch ? parseFloat(parseFloat(prefillMatch[1]).toFixed(1)) : null; + const decode = decodeMatch ? parseFloat(parseFloat(decodeMatch[1]).toFixed(1)) : null; + results.perfTotals.prefillTokensPerSec = prefill; + results.perfTotals.serverDecodeTokensPerSec = decode; + log(` 📊 ${name} server metrics: prefill ${prefill || '?'} tok/s, decode ${decode || '?'} tok/s`); + return; // Got metrics from at least one server + } + } catch (_) { + // /metrics not available — server not started with --metrics flag + } + } + log(' ℹ️ Server /metrics not available (start with --metrics for server-side stats)'); +} + // ═══════════════════════════════════════════════════════════════════════════════ // MAIN RUNNER // ═══════════════════════════════════════════════════════════════════════════════ @@ -2083,14 +2182,44 @@ async function main() { heapUsed: (postMem.heapUsed / 1048576).toFixed(1), }; + // Scrape llama-server /metrics for server-side prefill/decode stats + await scrapeServerMetrics(); + // Summary const { passed, failed, skipped, total, timeMs } = results.totals; const tokPerSec = timeMs > 0 ? ((results.tokenTotals.total / (timeMs / 1000)).toFixed(1)) : '?'; + // Compute aggregate perf stats + const ttftArr = results.perfTotals.ttftMs; + const avgTtft = ttftArr.length > 0 ? Math.round(ttftArr.reduce((a, b) => a + b, 0) / ttftArr.length) : null; + const p50Ttft = ttftArr.length > 0 ? ttftArr.sort((a, b) => a - b)[Math.floor(ttftArr.length * 0.5)] : null; + const p95Ttft = ttftArr.length > 0 ? ttftArr.sort((a, b) => a - b)[Math.floor(ttftArr.length * 0.95)] : null; + const decArr = results.perfTotals.decodeTokensPerSec; + const avgDecode = decArr.length > 0 ? parseFloat((decArr.reduce((a, b) => a + b, 0) / decArr.length).toFixed(1)) : null; + + // Store computed aggregates + results.perfSummary = { + ttft: { avgMs: avgTtft, p50Ms: p50Ttft, p95Ms: p95Ttft, samples: ttftArr.length }, + decode: { avgTokensPerSec: avgDecode, samples: decArr.length }, + server: { + prefillTokensPerSec: results.perfTotals.prefillTokensPerSec, + decodeTokensPerSec: results.perfTotals.serverDecodeTokensPerSec, + }, + }; + log(`\n${'═'.repeat(66)}`); log(` RESULTS: ${passed}/${total} passed, ${failed} failed, ${skipped} skipped (${(timeMs / 1000).toFixed(1)}s)`); log(` TOKENS: ${results.tokenTotals.prompt} prompt + ${results.tokenTotals.completion} completion = ${results.tokenTotals.total} total (${tokPerSec} tok/s)`); log(` MODEL: ${results.model.name}${results.model.vlm ? ' | VLM: ' + results.model.vlm : ''}`); + if (avgTtft !== null) { + log(` TTFT: avg ${avgTtft}ms | p50 ${p50Ttft}ms | p95 ${p95Ttft}ms (${ttftArr.length} samples)`); + } + if (avgDecode !== null) { + log(` DECODE: ${avgDecode} tok/s avg (${decArr.length} samples)`); + } + if (results.perfTotals.prefillTokensPerSec !== null) { + log(` SERVER: prefill ${results.perfTotals.prefillTokensPerSec} tok/s | decode ${results.perfTotals.serverDecodeTokensPerSec} tok/s (from /metrics)`); + } log(`${'═'.repeat(66)}`); if (failed > 0) { @@ -2132,6 +2261,7 @@ async function main() { vlmPassed, vlmTotal, timeMs, tokens: results.tokenTotals.total, + perfSummary: results.perfSummary || null, }); fs.writeFileSync(indexFile, JSON.stringify(index, null, 2)); diff --git a/skills/detection/yolo-detection-2026/config.yaml b/skills/detection/yolo-detection-2026/config.yaml index 62f82256..d84fc4ca 100644 --- a/skills/detection/yolo-detection-2026/config.yaml +++ b/skills/detection/yolo-detection-2026/config.yaml @@ -6,7 +6,7 @@ params: - key: auto_start label: Auto Start type: boolean - default: false + default: true description: "Start this skill automatically when Aegis launches" - key: model_size diff --git a/skills/transformation/depth-estimation/config.yaml b/skills/transformation/depth-estimation/config.yaml index 0f81c43f..1a560936 100644 --- a/skills/transformation/depth-estimation/config.yaml +++ b/skills/transformation/depth-estimation/config.yaml @@ -3,6 +3,12 @@ # Format: params[] with key, type, label, default, description, options params: + - key: auto_start + label: Auto Start + type: boolean + default: true + description: "Start this skill automatically when Aegis launches" + - key: model label: Depth Model type: select