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 |