Skip to content

pplx-decider

Checkpoints Inputs
perplexity-ai/pplx-decider-flash-v1.2 text, images

pplx-decider-flash-v1.2 is Perplexity's decision model on Qwen3.5-4B. Flide reads it with the protocol of the release's pplx_decider package, which asks every question of a request in one sequence. The sequence is the model's chat template with its system prompt, then a user turn with "State:" and the state, then each question in order with its instructions, its options under the codes A, B, ..., Z, AA, ... and a <|fim_suffix|> marker, then the reply with thinking off. A question without instructions is asked as "Choose the best matching option." A state that is not a string is written as JSON, and special tokens inside the request's text get full-width brackets, as the release writes them.

The full-attention layers read the whole sequence in both directions, and the Gated DeltaNet layers stay causal. Each question is read at its marker through the readout head in readout.safetensors, one row per code, and its answer is the softmax over the rows of its options at the checkpoint's temperature.

Speed

On one H200, one request at a time, Flide answers 1.2 to 4.3 times faster than the fast path of pplx_decider 0.3.0 (packed requests, compiled layers and CUDA graphs). Each workload is 32 requests, each run once on both sides before timing, and the table gives the median latency of a request. MultiRC requests ask about 49 questions each, and GQA requests carry one image each.

Workload Flide Release Speedup
Decision Index 12.6 ms 38.9 ms 3.1×
RACE 8.6 ms 36.9 ms 4.3×
MultiRC 55.6 ms 78.1 ms 1.4×
QuALITY long 66.9 ms 80.2 ms 1.2×
GQA 28.2 ms 54.2 ms 1.9×

Start a server

flide serve --model perplexity-ai/pplx-decider-flash-v1.2

Send a request

curl http://localhost:8000/v1/systemone -H "Content-Type: application/json" -d '{
  "state": "Order #1182 arrived with a cracked screen. The customer asks for a refund and attached two photos.",
  "questions": {
    "action": {"type": "choice", "instructions": "What should support do next?",
               "criteria": {"refund": "refund the order", "replace": "send a replacement", "escalate": "ask a human"}},
    "urgent": {"type": "noul", "instructions": "Does this need a reply within the hour?"}
  }
}'

Images

Images go in images, as data URLs or plain base64. They sit ahead of the text in the user turn, as the release places them, and every question of the request sees them. The checkpoint's processor resizes each to at most the max_pixels of its decision_config.json and at least 65,536 pixels.

IMG=$(base64 -w0 photo.jpg)
curl http://localhost:8000/v1/systemone -H "Content-Type: application/json" -d '{
  "state": "A customer sent this photo of the delivered parcel.",
  "images": ["data:image/jpeg;base64,'"$IMG"'"],
  "questions": {"damaged": {"type": "noul", "instructions": "Is the parcel damaged?"}}
}'

Images need torchvision, installed from the same place as torch.

Limits and options

A request takes choice, noul and score questions. A choice takes up to 255 options and a score 2 to 255 levels. A noul reads "No / false" and "Yes / true" unless the request describes the two outcomes.

Option What it does
--format-arg max_length=N longest sequence in tokens, 262144 by default
--format-arg temperature=T the temperature of the answers, the checkpoint's by default