Parallel JSON public evaluation

September 16, 2026 · View on GitHub

All runs evaluate the same 408 questions from 46 saved Jev nodes across all 20 public cases. The accuracy denominator is the same 337 questions with unambiguous model-derived references. This replays Jev’s recorded paths; it does not reproduce autonomous branching or the full unpublished corpus.

Measured comparison

RunnerStepsAccuracyInference timeInference GPU costInput tokens
One question per sequence1298/337 (88.4%)248.03 s$0.272092,214,128
Grouped JSON1290/337 (86.1%)48.61 s$0.05332300,431
Grouped JSON2296/337 (87.8%)51.11 s$0.05607300,431

Saved Jev scores 306/337 (90.8%) against these same references. Every grouped run preserves 408/408 valid typed answers.

WorkflowOriginal one-stepGrouped 1-stepGrouped 2-stepJev
agent_trace_observability41/5241/5242/5241/52
customer_service84/9276/9278/9282/92
invoice_processing155/167154/167157/167162/167
security_incidents18/2619/2619/2621/26

Timing boundaries and cost

Request time includes tokenization, field-layout construction, GPU execution, final readout and JSON decoding. No separate warmup is excluded. GPU estimates use $0.001097/second ($3.9492/hour), excluding CPU/RAM/storage and lifecycle outside the measured function. These are single exploratory runs, not latency percentiles or invoice totals.

RunGPU function incl. setup and OOMsGPU cost incl. setup and OOMsClient wall time
Original339.07 s$0.3720348.32 s
Grouped 1-step180.32 s$0.1978193.34 s
Grouped 2-step148.97 s$0.1634155.00 s

Grouped 1-step: 5.10× faster successful inference; 119.1 ms amortized per judgment, not individual request latency. GPU cost per million actual input tokens is $0.1775. Input-token unit cost need not fall when repeated context is removed; cost for the fixed set of judgments is the relevant comparison. Batch target starts at 64 and halves on OOM. Failed targets: [64, 32, 16, 8, 4]. Peak allocated memory in successful batches: 71.79 GiB.

Grouped 2-step: 4.85× faster successful inference; 125.3 ms amortized per judgment, not individual request latency. GPU cost per million actual input tokens is $0.1866. Input-token unit cost need not fall when repeated context is removed; cost for the fixed set of judgments is the relevant comparison. Batch target starts at 64 and halves on OOM. Failed targets: [64, 32, 16, 8, 4]. Peak allocated memory in successful batches: 71.79 GiB.

What changed

  • Questions sharing a workflow node/document are packed into a JSON object using their original field names, instructions, criteria and allowed values.
  • Per-field candidate tries avoid enumerating the Cartesian product. Shorter alternatives are padded with JSON whitespace to keep subsequent fields aligned. We verify every field alternative decodes correctly.
  • All variable slots denoise over the full vocabulary; allowed alternatives are selected only from final logits. Shared JSON structure remains fixed. Multiple fields share attention, so judgment independence is not guaranteed.
  • The fixed 256-token output canvas limits object size. 41 nodes fit in one canvas; five larger nodes split. Total: 56 canvases, merged into 46 complete node JSON objects. The large nodes still repeat context between their chunks; there is no cross-canvas KV reuse.
  • Different schemas can share a batch. Jobs are sorted by actual prompt length, and the batch target halves from 64 only on OOM. No repeated cases are added to fill batches.
  • Grouping changes prompts, token layout, padding and attention interactions. The accuracy changes are measured, not assumed away. This is not an isolated kernel benchmark.

Reproduce

modal run verify_parallel.py  # CPU constraint checks
modal run parallel_benchmark.py --steps 1
modal run parallel_benchmark.py --steps 2
python scripts/report_parallel.py

Receipts