बेंचमार्किंग
adk-bench क्रेट और cargo adk bench कमांड ADK-Rust एजेंटों के लिए वास्तविक-LLM बेंचमार्किंग प्रदान करते हैं। सिंथेटिक माइक्रोबेंचमार्क के विपरीत, adk-bench लाइव मॉडल कॉल के साथ वास्तविक एंड-टू-एंड प्रदर्शन को मापता है और फ्रेमवर्क ओवरहेड को प्रदाता विलंबता से अलग करता है।
यह क्या मापता है
| मेट्रिक | विवरण |
|---|---|
| कोल्ड स्टार्ट | प्रक्रिया लॉन्च से पहली LLM प्रतिक्रिया तक का समय |
| एजेंट लूप ओवरहेड | प्रत्येक टूल-कॉल राउंड-ट्रिप की फ़्रेमवर्क लागत (LLM प्रतीक्षा समय को छोड़कर) |
| थ्रूपुट | निरंतर लोड के अंतर्गत प्रति सेकंड अनुरोध |
| मेमोरी | निष्पादन के दौरान अधिकतम RSS |
| टोकन ओवरहेड | फ़्रेमवर्क इंस्ट्रूमेंटेशन द्वारा जोड़े गए अतिरिक्त टोकन |
| CV (परिवर्तन गुणांक) | रन के दौरान मापों की स्थिरता |
त्वरित शुरुआत
# Run all benchmarks with default settings
cargo adk bench
# Run a specific workload
cargo adk bench --workload simple_tool_call
# Dry run (no LLM calls, validates config only)
cargo adk bench --dry-run
CLI संदर्भ
cargo adk bench [OPTIONS]
OPTIONS:
--workload <NAME> Run a specific workload (simple_tool_call,
multi_step_reasoning, parallel_tool_invocation)
--iterations <N> Number of iterations per workload [default: 10]
--warmup <N> Warmup iterations before measurement [default: 2]
--provider <NAME> LLM provider to benchmark [default: gemini]
--model <MODEL> Model ID to use [default: gemini-3.5-flash-lite]
--output <FORMAT> Output format: table, json, csv [default: table]
--output-file <PATH> Write results to file instead of stdout
# Cost control
--dry-run Validate configuration without making LLM calls
--max-cost-usd <AMOUNT> Abort if estimated cost exceeds this amount
--confirm-cost Prompt for confirmation before running
# Regression detection
--save-baseline <NAME> Save results as a named baseline
--check-regression <NAME> Compare against a saved baseline
--tolerance <PERCENT> Regression threshold percentage [default: 10]
# External comparison
--ebp Enable External Benchmark Protocol output
--harness <PATH> Path to external framework harness config
लागत नियंत्रण
बेंचमार्क वास्तविक LLM कॉल करते हैं। अप्रत्याशित बिलों से बचने के लिए इन फ्लैग का उपयोग करें:
# Preview what would run without spending anything
cargo adk bench --dry-run
# Set a hard cost ceiling
cargo adk bench --max-cost-usd 5.00
# Require manual confirmation after cost estimate
cargo adk bench --confirm-cost
लागत अनुमानक पिछली रन से प्राप्त टोकन गणनाओं (या वर्कलोड परिभाषा से प्राप्त अनुमानों) को प्रदाता द्वारा प्रकाशित प्रति-टोकन मूल्य से गुणा करता है।
रिग्रेशन पहचान
रिलीज़ के दौरान प्रदर्शन को ट्रैक करें:
# Establish a baseline after a release
cargo adk bench --save-baseline v1.0.0
# On the next change, check for regressions
cargo adk bench --check-regression v1.0.0 --tolerance 10
# Tighter tolerance for critical paths
cargo adk bench --workload simple_tool_call --check-regression v1.0.0 --tolerance 5
एग्ज़िट कोड:
0— कोई रिग्रेशन नहीं मिला1— कम-से-कम एक मेट्रिक सहनशीलता सीमा से अधिक रिग्रेस हुआ2— कॉन्फ़िगरेशन या रनटाइम त्रुटि
बेसलाइन .adk-bench/baselines/ में JSON फ़ाइलों के रूप में संग्रहीत की जाती हैं।
बाहरी फ्रेमवर्क तुलना (EBP)
External Benchmark Protocol (EBP) अन्य एजेंट फ्रेमवर्क के साथ समान आधार पर तुलना को सक्षम बनाता है। EBP एक मानक वर्कलोड प्रारूप और मापन प्रोटोकॉल परिभाषित करता है, ताकि विभिन्न इम्प्लीमेंटेशन के परिणामों की तुलना की जा सके।
# Output EBP-compatible results
cargo adk bench --ebp --output json > results.json
# Run against an external harness (e.g., LangGraph, Python SDK)
cargo adk bench --harness harnesses/langraph.toml
हार्नेस कॉन्फ़िगरेशन फ़ाइलें परिभाषित करती हैं कि समान वर्कलोड के साथ बाहरी फ्रेमवर्क को कैसे आमंत्रित किया जाए और समान पद्धति का उपयोग करके उनके परिणामों को कैसे मापा जाए।
बेंचमार्क परिणाम
अन्य फ्रेमवर्क के साथ ADK-Rust की तुलना करने वाले प्रकाशित परिणाम (नियतात्मक कॉन्फ़िगरेशन, समान मॉडल, समान वर्कलोड):
| मेट्रिक | ADK-Rust | Gemini Python SDK | LangGraph |
|---|---|---|---|
| कोल्ड स्टार्ट | 109 ms | 501 ms | 502 ms |
| लूप ओवरहेड | 568 μs | 253 μs | 1228 ms |
| simple_tool_call | कुल 1.2 सेकंड | कुल 1.8 सेकंड | कुल 2.1 सेकंड |
| multi_step_reasoning | कुल 4.1 सेकंड | कुल 5.9 सेकंड | कुल 7.3 सेकंड |
| parallel_tool_invocation | कुल 2.3 सेकंड | कुल 3.7 सेकंड | कुल 4.8 सेकंड |
पद्धति:
- वास्तविक Gemini 3.5 Flash-Lite कॉल (मॉक नहीं किए गए)
- नियतात्मक कॉन्फ़िगरेशन:
temperature=0, निश्चित seed - 2 वार्मअप रन के बाद 10 पुनरावृत्तियाँ
- ओवरहेड पृथक्करण: कुल समय में से मापी गई LLM विलंबता घटाकर
- सभी फ्रेमवर्क में समान टूल परिभाषाएँ और प्रॉम्प्ट
कार्यभार
simple_tool_call
एकल उपयोगकर्ता संदेश → एक टूल कॉल → एक प्रतिक्रिया। न्यूनतम राउंड-ट्रिप ओवरहेड को मापता है।
multi_step_reasoning
3–5 क्रमिक टूल कॉल की आवश्यकता वाली बहु-चरणीय बातचीत, जिसमें प्रत्येक के बीच तर्क किया जाता है। निरंतर लूप प्रदर्शन को मापता है।
parallel_tool_invocation
एकल उपयोगकर्ता संदेश, जो 3 समानांतर टूल कॉल ट्रिगर करता है। समवर्ती डिस्पैच ओवरहेड को मापता है।
प्रोग्रामेटिक उपयोग
use adk_bench::{BenchmarkSuite, BenchConfig, Workload};
let config = BenchConfig::builder()
.iterations(10)
.warmup(2)
.provider("gemini")
.model("gemini-3.5-flash-lite")
.build()?;
let suite = BenchmarkSuite::new(config);
let results = suite.run_all().await?;
for result in &results {
println!("{}: cold_start={}ms overhead={}μs",
result.workload,
result.cold_start_ms,
result.loop_overhead_us,
);
}
आगे पढ़ें
इन विषयों के लिए adk-bench/README.md देखें:
- कस्टम कार्यभार परिभाषाएँ
- हार्नेस लेखन मार्गदर्शिका
- CI एकीकरण पैटर्न
- ऐतिहासिक परिणाम ट्रैकिंग
पिछला: ← कोड निष्पादन | अगला: ACP उपकरण →