{
  "schema_version": 1,
  "builder_plan": {
    "scenario": "Your self-hosted model spends too long generating answers token by token.",
    "change": "Check whether a compatible draft model and serving integration exist before renting compute.",
    "baseline": "The same target with speculation off, then your existing drafter if you have one.",
    "steps": [
      "Locate the paper's implementation and check its license, model support, data needs, and hardware requirements. Stop here if you cannot obtain the required artifacts.",
      "Save a small set of representative product tasks and expected outcomes. Keep evaluation tasks out of any training or tuning, and choose quality and cost limits before running.",
      "Run the baseline and the proposed change on identical inputs. Keep other settings fixed and repeat paired runs to expose variation.",
      "Save per-task outputs, failures, timings, and all usage costs. Review regressions before expanding the test."
    ],
    "measure": "Accepted draft length, tokens per second, tail latency, output quality, and total GPU cost.",
    "decision": "Keep the change only if it meets your preselected quality and latency limits and improves the metric you care about after setup and operating costs. Otherwise retain the baseline. This is an exploration plan, not a validated recommendation."
  },
  "builder_review": null,
  "arxiv_id": "2608.24004",
  "title": "AgentSpec: Speculative Decoding for Batch Inference of LLM Agents",
  "summary": "AgentSpec replaces standard speculative decoding (e.g., Medusa/EAGLE-style drafting) in batched agent inference by isolating drafts to semantically coherent workflow segments and reallocating freed token budgets using agent-level information. It requires modifying or adopting a custom vLLM implementation, adding drafting complexity and dependence on the paper's code being released and maintained. It can fail if the agent workload lacks the assumed structural regularity, if acceptance rates drop on out-of-distribution tasks, or if batch sizes are small enough that conventional speculative decoding already performs adequately.",
  "rationale": "The technique targets a real serving bottleneck for self-hosted agent workloads on constrained GPUs, but the abstract provides no quantified speedup and the method requires custom vLLM integration, so adoption should follow workload-specific benchmarking.",
  "technique": "Structure-aware speculative decoding for batched LLM agents",
  "family": "decodificacao_especulativa",
  "recommendation": "testar",
  "published": "2026-08-25",
  "as_of": "2026-10-18",
  "editorial_status": "indexed",
  "source_url": "https://arxiv.org/abs/2608.24004",
  "independent_implementations": 0,
  "total_implementations": 0,
  "stars": 0,
  "citations": 0,
  "claims": [
    {
      "claim_id": "claim-01",
      "statement": "AgentSpec replaces standard speculative decoding (e.g., Medusa/EAGLE-style drafting) in batched agent inference by isolating drafts to semantically coherent workflow segments and reallocating freed token budgets using agent-level information. It requires modifying or adopting a custom vLLM implementation, adding drafting complexity and dependence on the paper's code being released and maintained. It can fail if the agent workload lacks the assumed structural regularity, if acceptance rates drop on out-of-distribution tasks, or if batch sizes are small enough that conventional speculative decoding already performs adequately.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.24004",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "claim_id": "claim-02",
      "statement": "Outperforms state-of-the-art speculative decoding on five workloads and four models in vLLM; no specific speedup factor is stated in the abstract.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.24004",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "exposure_map": [
    {
      "dimension": "quality",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compute",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "latency",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "operations",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compatibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "security",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "data_and_training",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "reproducibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "risks": [],
  "minimum_test": [],
  "open_questions": [],
  "independent_tests": [],
  "lab_reproductions": [],
  "report_available": false,
  "validation_tier": "unknown",
  "evidence_tier": "unknown",
  "infrastructure_basis": "unknown",
  "equations": [
    {
      "anchor": "S3.EGx1",
      "label": "",
      "section": "3 Speculative Decoding for Batch Inference of LLM Agents",
      "role": "baseline",
      "latex": "\\Delta T(b) =T_{\\text{base}}(b)-T_{\\text{spec}}(b) \\\\ \\approx D(b)(1-\\rho(b))t_{A}-D(b)\\big(t_{D}(b)+t_{V}(b)\\big) \\\\ =D(b)\\left[(1-\\rho(b))t_{A}-t_{D}(b)-t_{V}(b)\\right] \\\\ \\approx D(b)\\left[(1-\\rho(b))t_{A}-t_{V}(b)\\right]",
      "mathml": "<math display=\"block\"><mrow><mrow><mi mathvariant=\"normal\">Δ</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>T</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mrow><mphantom></mphantom><mo>=</mo><mrow><mrow><msub><mi>T</mi><mtext>base</mtext></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>−</mo><mrow><msub><mi>T</mi><mtext>spec</mtext></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow></mrow></math><math display=\"block\"><mrow><mphantom></mphantom><mo>≈</mo><mrow><mrow><mrow><mi>D</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><mrow><mi>ρ</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><msub><mi>t</mi><mi>A</mi></msub></mrow><mo>−</mo><mrow><mrow><mi>D</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo maxsize=\"1.200em\" minsize=\"1.200em\">(</mo><mrow><mrow><msub><mi>t</mi><mi>D</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>+</mo><mrow><msub><mi>t</mi><mi>V</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo maxsize=\"1.200em\" minsize=\"1.200em\">)</mo></mrow></mrow></mrow></mrow></math><math display=\"block\"><mrow><mphantom></mphantom><mo>=</mo><mrow><mrow><mi>D</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo>[</mo><mrow><mrow><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><mrow><mi>ρ</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><msub><mi>t</mi><mi>A</mi></msub></mrow><mo>−</mo><mrow><msub><mi>t</mi><mi>D</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>−</mo><mrow><msub><mi>t</mi><mi>V</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo>]</mo></mrow></mrow></mrow></math><math display=\"block\"><mrow><mphantom></mphantom><mo>≈</mo><mrow><mrow><mi>D</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo>[</mo><mrow><mrow><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><mrow><mi>ρ</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><msub><mi>t</mi><mi>A</mi></msub></mrow><mo>−</mo><mrow><msub><mi>t</mi><mi>V</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow><mo>]</mo></mrow></mrow></mrow></math>",
      "context": "To understand the cause of this degradation, we model the per-step execution time saving <math display=\"inline\"><mrow><mi mathvariant=\"normal\">Δ</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>T</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mi>b</mi><mo stretchy=\"false\">)</mo></mrow></mrow></math> of speculative decoding with batch size <math display=\"inline\"><mi>b</mi></math> as:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "S4.E1",
      "label": "(1)",
      "section": "4 Method: AgentSpec",
      "role": "proposed_method",
      "latex": "g(c,n)=\\frac{c}{n}\\cdot p(n),\\;p(n)=g_{\\min}+(1-g_{\\min})(1-e^{1-n}),",
      "mathml": "<math display=\"block\"><mrow><mrow><mrow><mrow><mi>g</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>c</mi><mo>,</mo><mi>n</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>=</mo><mrow><mfrac><mi>c</mi><mi>n</mi></mfrac><mo lspace=\"0.222em\" rspace=\"0.222em\">⋅</mo><mrow><mi>p</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>n</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow><mo rspace=\"0.447em\">,</mo><mrow><mrow><mi>p</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>n</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>=</mo><mrow><msub><mi>g</mi><mi>min</mi></msub><mo>+</mo><mrow><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><msub><mi>g</mi><mi>min</mi></msub></mrow><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><msup><mi>e</mi><mrow><mn>1</mn><mo>−</mo><mi>n</mi></mrow></msup></mrow><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow></mrow><mo>,</mo></mrow></math>",
      "context": "Key Design: To estimate the acceptance likelihood of a speculative draft for each request, AgentSpec introduces a redundancy score <math display=\"inline\"><mi>g</mi></math>:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "S4.E3",
      "label": "(3)",
      "section": "4 Method: AgentSpec",
      "role": "proposed_method",
      "latex": "L_{i}=\\max\\!\\left(|CT_{i}|,\\;B_{t}\\cdot\\frac{g_{i}}{\\sum_{j}g_{j}}\\right),",
      "mathml": "<math display=\"block\"><mrow><mrow><msub><mi>L</mi><mi>i</mi></msub><mo>=</mo><mrow><mpadded width=\"1.808em\"><mi>max</mi></mpadded><mo>⁡</mo><mrow><mo>(</mo><mrow><mo stretchy=\"false\">|</mo><mrow><mi>C</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><msub><mi>T</mi><mi>i</mi></msub></mrow><mo stretchy=\"false\">|</mo></mrow><mo rspace=\"0.447em\">,</mo><mrow><msub><mi>B</mi><mi>t</mi></msub><mo lspace=\"0.222em\" rspace=\"0.222em\">⋅</mo><mfrac><msub><mi>g</mi><mi>i</mi></msub><mrow><msub><mo>∑</mo><mi>j</mi></msub><msub><mi>g</mi><mi>j</mi></msub></mrow></mfrac></mrow><mo>)</mo></mrow></mrow></mrow><mo>,</mo></mrow></math>",
      "context": "where <math display=\"inline\"><mrow><mi>b</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>z</mi></mrow></math> is the batch size and <math display=\"inline\"><mi>α</mi></math> controls the overall speculative budget. For each request <math display=\"inline\"><msub><mi>r</mi><mi>i</mi></msub></math>, AgentSpec retrieves candidate drafts within the same semantic block and query, identifies the most frequent continuation prefix <math display=\"inline\"><mrow><mi>C</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><msub><mi>T</mi><mi>i</mi></msub></mrow></math>, and computes its redundancy score <math display=\"inline\"><msub><mi>g</mi><mi>i</mi></msub></math>. The per-request draft length is then allocated as",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    }
  ],
  "equations_status": "selected",
  "core_kind": "formula",
  "equations_fetched_at": "2026-09-20",
  "equations_source_url": "",
  "equations_source_sha256": "",
  "exposures_reviewed_at": "",
  "exposures_source_sha256": ""
}