autotrust/JEV-27B-VL
Dense 27B vision-language decision model on a Qwen3.8-27B backbone, with a rank-32 LoRA (jev-decision) for calibrated choices over text and images.
Qwen3.8-27B VL backbone; System 1 decisions through the jev-decision LoRA
Overview
JEV-27B-VL is AutoTrust's
vision-language decision model. The checkpoint is a dense BF16
Qwen3_5ForConditionalGeneration model (about 27.8B parameters, vision
tower included) continued from
Qwen/Qwen3.8-27B. System 2 is
the served checkpoint, named autotrust/JEV-27B-VL. System 1 is the
rank-32 LoRA jev-decision (adapter_vllm/, r 32, lora_alpha 64),
used for calibrated choice probabilities over text or images.
This recipe has no verified hardware entry. The model card's quick start
asks for one GPU with 80 GB or more, and the card's published latency
figures are from a B200. Those runs are the author's, not a badge on this
page.
Prerequisites
- vLLM: >= 0.32.0. Earlier releases are not supported for this checkpoint.
- Weights:
hf download autotrust/JEV-27B-VL --local-dir JEV-27B-VLso the LoRA path below exists. The sameadapter_vllmdirectory is in the ModelScope checkout; if that folder is not namedJEV-27B-VL, point the module at<checkout>/adapter_vllm(the HF snapshot path ends insnapshots/<rev>/adapter_vllm). - Docker: the image only bind-mounts the Hugging Face cache. Mount the
checkout into the container and keep
jev-decisionpointed at thatadapter_vllmdirectory. - Context:
text_config.max_position_embeddingsis 262144. The validated command uses--max-model-len 32768(theserve.shdefault). The card says a full 256K prompt needs about 17 GB of KV cache on top of the weights, and suggests--max-model-len 131072on an 80 GB GPU.
Decision LoRA and serve flags
These flags are the model card's validated vllm serve line. They are
base arguments, not optional toggles.
jev-decision—--enable-lora,--max-lora-rank 32, and--lora-modules jev-decision=JEV-27B-VL/adapter_vllm. The module name staysjev-decision. The path is the local checkoutJEV-27B-VL/adapter_vllm, or theadapter_vllmdirectory inside an HF or ModelScope checkout.--mamba-cache-mode align— the Qwen3.8 hybrid backbone mixes full attention with Mamba-style layers; the card serves it inalignmode.--limit-mm-per-prompt '{"image": 8}'— at most 8 images per request.--max-num-seqs 8— required. The card says that with more than 8 sequences in one batch, vLLM's LoRA path for this multimodal class returns wrong System 1 probabilities. Extra requests queue.--logprobs-mode processed_logprobs— System 1 reads post-processor logprobs. On/v1/chat/completionsor/v1/completionsforjev-decision, the card also says to sendtop_k: 0andtop_p: 1.0:generation_config.jsonsetstop_k20 andtop_p0.95, and those defaults would truncate the returned distribution.--trust-request-chat-template— image decisions send a raw decision chat template on the request. System 2 keeps the checkpoint's own template.--served-model-name autotrust/JEV-27B-VL— public name for System 2.--enable-prefix-cachingmatches the card's serve line.
POST /v1/decide is not part of stock vllm serve. The checkpoint ships
serve_decide.py, which starts the OpenAI server with these same flags
and adds that route. Stock vllm serve still exposes System 2 as
autotrust/JEV-27B-VL and System 1 as the LoRA model jev-decision.
Client usage
System 2 (the base checkpoint), with an image:
client.chat.completions.create(
model="autotrust/JEV-27B-VL",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": image_url}},
{"type": "text", "text": "What does this image show?"},
],
}],
)
System 1 through the checkpoint's /v1/decide route (serve_decide.py):
curl localhost:8000/v1/decide -H 'Content-Type: application/json' -d '{
"kind": "choice",
"state": "Customer: my card was charged twice for one coffee.",
"question": "Which team should handle this?",
"options": ["billing", "shipping", "tech support"]}'
Text-only System 1 calls the LoRA directly (model jev-decision). The
card says those text decisions match
autotrust/JEV-27B.