Lory-27B v1

A decision model for simulated survey respondents whose answers follow economic logic: they respond to the actual stakes in a question (prices, odds, payoffs, delays, amounts), not only to the persona's stated attitudes. It reads an agent's traits and one question and returns a calibrated probability for every option in a single forward pass, the answer distribution a study needs, without sampling text.

Fine-tuned from Kev-27B (Jared Palmer; Qwen3.8-27B backbone). Same serving stack and API (kev.serve, System One /v1/systemone). v1 (public preview): one training seed.

Why

Off-the-shelf decision models follow personas well but barely react to money at stake. On the depositor-dial bank-run battery, released Kev-27B moved its decision cutoff by 1 point when the payoffs changed (theory: 80); the best hosted decision models moved 20โ€“32. In a typical EDSL study the money is the treatment, so a simulation that ignores it gets the persona right and the experiment wrong.

Results

Three tests, in increasing independence from the training data:

DLS v0.2 (ours, 9 families) blind test (513 contrasts written by GPT-6.1-sol) bank-run battery: payoff shift (theory 80) lottery slope (theory 1.0) EDSL-General (no regression)
this model 88 [83, 93] 92 [90, 94] 66 0.77 88
Kev-27B (released) 71 90 1 0.25 87
Perplexity Decider v1.2 77 93 9 0.43 88
GPT-6.1-terra, one pass 93 84* 62 0.92 99

Brackets: 95% bootstrap intervals (DLS: over checks; blind: over tests). Paired differences: vs Decider, DLS +10.3 [+4.2, +17.0], blind โˆ’1.3 [โˆ’3.4, +0.5] (a tie). *The blind test scores direction of movement with graded credit; GPT one-pass gives near-0/1 answers and loses credit when both answers of a contrast sit at the same extreme.

  • DLS v0.2: pricing/WTP, product choice, risk, time, budget allocation, labour, strategic games, question formats, market-research staples; each family scored against theory checks (demand slopes down, dominance, expected value, discounting, Engel curves, equilibrium cutoffs, framing invariance...). Written by the same author as the training data (independent wording, leak-checked), so it shares a genre with it.
  • Blind test: GPT-6.1-sol wrote the items and its own predictions from a one-line description per family, without seeing the training data or benchmark; one generic scoring rule fixed in advance. Tests direction, not size.
  • Battery: the depositor-dial bank-run game, lotteries, a twin-decision check and a protest game, written separately before this project. Passes 6 of the pilot's 7 bars (lottery slope 0.77 vs bar 0.8).
  • Kev's own decision-v7 development accuracy is unchanged (no forgetting).

Use

git clone https://github.com/jaredpalmer/kev && cd kev && git checkout 2074cc4 && uv sync --extra serve
uv run python -m kev.serve --run eltokh7/lory-27b --device cuda --port 8850      # ~55 GB in bf16: one 80 GB GPU
import requests
state = ("You are answering questions as if you were a human. Do not break character.\n"
         "Your traits: {'persona': 'You are 34, a teacher in Ohio earning $52,000.', 'money': 'You watch every dollar.'}")
r = requests.post("http://127.0.0.1:8850/v1/systemone", json={"state": state, "questions": {"q": {
    "type": "choice", "instructions": "Which phone plan do you pick?",
    "criteria": {"a": "$30/month, 5 GB", "b": "$45/month, 20 GB", "c": "$45/month, 5 GB"}}}})
print(r.json()["answers"]["q"]["probabilities"])

EDSL surveys: edsl_decision.py (in this repo) runs an EDSL Survey with Agents and Scenarios on this endpoint and returns a table of answer probabilities (multiple choice, yes/no, linear scale, Likert; optional option rotations to cancel position bias).

Cost: at least 33 requests/s on one H100 (measured with a client that capped concurrency), so under $0.75 per 1,000 respondents ร— 20 questions at $4.4/GPU-hour, ~3ร— that with option rotations. GPT-6.1-terra one-pass on the same survey: ~$3.40 (answer code only) to ~$8 (with EDSL's comment field).

Training

  • Data: 27,000 synthetic records across the nine families. Each is an agent with hidden preferences (budget, tastes, risk attitude, patience, value of time) described in plain EDSL-style traits, facing one decision; the label is what those preferences imply (random utility: soft targets over the options), so labels are consistent by construction. ~64% of records rewritten by open-weight models (GLM-5.3, DeepSeek V4.1 Flash) for wording variety, keeping every number. Every record passes a 7-word-shingle leak check against the benchmark and the battery. Plus 5,000 records replayed from Kev's own decision-v7 training split.
  • Recipe: LoRA (r 16) on the released full weights, one epoch, lr 2e-5, batch 8, bf16, merged back into full weights. One H100, 2.1 hours.

Limitations

  • Not validated against people. Every test checks economic consistency, not realism. Real respondents violate some of what is rewarded here (e.g. they react to framing); use human benchmarks before relying on levels.
  • Framing: on the blind test, rewording the same deal still moves answers (invariance 66/100; GPT one-pass 98), slightly more than before training (68).
  • Strategic breadth: trained on bank runs and coordination games; on GPT's trust / ultimatum / public-goods items it scores a little lower than before training (83 vs 87).
  • Lottery slope 0.77: it weighs stated odds well but not fully (GPT one-pass 0.92).
  • One training seed; no seed-to-seed interval yet.
  • English, US-style personas and dollar amounts.

Attribution

Kev and Kev-27B by Jared Palmer (Apache-2.0); backbone Qwen3.8-27B (Qwen, Apache-2.0).

Downloads last month
-
Safetensors
Model size
26B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for eltokh7/lory-27b

Base model

Qwen/Qwen3.8-27B
Finetuned
(1)
this model