Skip to content

Introducing Perceptron Multilook API

An efficient endpoint for asking one visual asset many questions

Input cost, 4 prompts
46%
of 4 separate requests
2.2× cheaper · 32% at 16 prompts
Throughput under load
3.9×
vs separate requests, at c=8
1.6× to 3.9× across shapes
Median latency under load
4.9× lower
vs separate requests, at c=16
2× to 4.9× across shapes
Prompts per call
16max
up to 64 completions
Comparisons are against the same workload sent as individual /v1/chat/completions requests, one request per prompt per sample. That is the base route referred to throughout this post, and it is the strongest client pattern that route supports.

The default way to ask several questions about one video is several requests. The Perceptron Files API took the byte transfer out of that loop: upload once, reference file-abc123 from then on. The prefill challenge remained unsolved:

  • The model re-reads the media for every question. A file id saves the upload. It does not save the forward pass over the frames. Ten questions about a ten minute clip means ten prefills over the same frames.

  • Cost tracks question count, not media volume. A 60 frame clip carries roughly 8,600 tokens of context. The question you attach to it is a sentence. Adding a question adds a full context, not a sentence.

BASE ROUTE · FOUR REQUESTSMULTILOOK · ONE REQUESTvideo context8,624 tokquery 1answer 1video context8,624 tokquery 2answer 2video context8,624 tokquery 3answer 3video context8,624 tokquery 4answer 44 prefills · 4 admission slots35,612 tok at $0.15/Mvideo context8,624 tokprefilled oncequery 1answer 1query 2answer 2query 3answer 3query 4answer 41 prefill · 1 admission slot9,740 at $0.15/M + 25,872 at $0.0375/M46% of base input cost · 2.2× cheaperbilled at the input ratereused, billed at the cache-read rate
Figure 1. A fixed query set against one clip, shown at four prompts. The base route on the left prefills the same video once per query. Multilook on the right prefills it once and serves the other three from that prefill. The 9,740 tokens billed at the input rate are the context once plus the four query texts, which sit outside the shared prefix and never cache.

With Multilook, the first query pays for the context at the input rate, and the remaining P − 1 prompts pay for it at the cache-read rate. Nothing about the answers changes.

BASE ROUTE · SIXTEEN REQUESTSMULTILOOK · ONE REQUESTq1 · s1q1 · s2q1 · s3q1 · s4q2 · s1q2 · s2q2 · s3q2 · s4q3 · s1q3 · s2q3 · s3q3 · s4q4 · s1q4 · s2q4 · s3q4 · s4exemplar set re-sent 16 times16 prefills · 16 admission slots142,448 tok at $0.15/M3 exemplars8,624 tokprefilled oncen = 4 samplesquery 1query 2query 3query 4exemplar set sent once1 prefill · 1 admission slot9,740 at $0.15/M + 25,872 at $0.0375/M11% of base input costbilled at the input ratereused, billed at the cache-read rate
Figure 2. Four queries against one exemplar set, four samples each. The base route on the left is sixteen requests, and each one carries the full exemplar set again, which is the sixteen orange bars. Multilook on the right sends the set once. Resampling adds completions without re-billing prompt tokens, so the second effect stacks on the first.
# one video, three questions, one call
curl https://api.perceptron.inc/v1/chat/completions/multilook \
  -H "Authorization: Bearer $PERCEPTRON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "perceptron-mk1",
    "context": [
      { "role": "user", "content": [
        { "type": "video_file_id", "video_file_id": { "file_id": "file-abc123" } }
      ] }
    ],
    "prompts": [
      "How many people are visible?",
      "Describe the setting in one sentence.",
      "Does anyone pick up an object? If so, what?"
    ],
    "n": 1,
    "max_completion_tokens": 128
  }'
"usage": {
  "prompt_tokens": 35612,
  "completion_tokens": 94,
  "total_tokens": 35706,
  "prompt_tokens_details": { "cached_tokens": 25872 }
}
Per-unit wall time at concurrency=16
Shapep50 to p95, seconds
P=4, n=1
base 8.6 / 9.5 smultilook 3.7 / 13.9 s
P=8, n=1
base 14.3 / 22.2 smultilook 7.5 / 11.9 s
P=4, n=4
base 30.7 / 40.2 smultilook 6.3 / 17.0 s010203040
Base routeMultilookfilled marker p50, hollow marker p95, shared axis 0 to 44 s
Median and 95th percentile per-unit wall time at the highest offered load. Multilook's median is roughly 2x lower at P=8 and 4.9x lower at P=4 n=4.
Single Multilook call latency with number of prompts (P)
SamplesP=2P=4P=8P=16
n=1
4.0 s
2.00 s / prompt
P=2, n=1
4.0 s for 2 completions
2.00 s per completion
3.7 s
0.93 s / prompt
P=4, n=1
3.7 s for 4 completions
0.93 s per completion
4.5 s
0.56 s / prompt
P=8, n=1
4.5 s for 8 completions
0.56 s per completion
8.6 s
0.54 s / prompt
P=16, n=1
8.6 s for 16 completions
0.54 s per completion
n=4
3.5 s
1.75 s / prompt
P=2, n=4
3.5 s for 8 completions
0.44 s per completion
6.1 s
1.52 s / prompt
P=4, n=4
6.1 s for 16 completions
0.38 s per completion
10.0 s
1.25 s / prompt
P=8, n=4
10.0 s for 32 completions
0.31 s per completion
18.3 s
1.14 s / prompt
P=16, n=4
18.3 s for 64 completions
0.29 s per completion
bars share one scale, 0 to 20 s · per-prompt time falls from 2.00 s at P=2 to 0.54 s at P=16
Latency grows sub-linearly with prompt count. Sixteen prompts return in 8.6 seconds, about 0.54 seconds per prompt, against 2.0 seconds per prompt at two prompts. The largest supported call, sixteen prompts at four samples, returns sixty-four completions in about eighteen seconds, or 0.29 seconds per completion.
Input cost by prompts per call
PromptsAt input rateAt cache-read rateInput cost vs separate requests
P=29,1828,624
64% · 1.6× cheaper
P=49,74025,872
46% · 2.2× cheaper
P=810,85660,368
36% · 2.7× cheaper
P=1613,088129,360
32% · 3.1× cheaper
Separate requestsMultilookdashed line marks the 25% floor · input cost only
Input cost of one Multilook call against the same work sent as separate requests, at one sample per prompt. Cached tokens bill at $0.0375 per million against the $0.15 input rate, so the saving deepens as more prompts share the context, toward a floor of 25%. Completions bill identically on both routes, so a workload with long answers sees a smaller saving on the full bill.
Getting startedMultilook is available today.
EndpointPOST api.perceptron.inc/v1/chat/completions/multilook
Model idperceptron-mk1
Input$0.15 / M tokens
Cache read$0.0375 / M tokens
Output$1.50 / M tokens
Prompts per call1 to 16
Completions per call64 (prompts x n)
Media inputs per call256, each video frame counts as one
Rate limit150 / min, separate bucket
Request budget300 s
Questions or higher limits: sales@perceptron.inc.

You can start using Perceptron Multilook API today.

We believe in building in the open and empowering the community. You can start building with Isaac today.