alt.freeweights.qwen / strands-decider-2B-qwen3.5-v1-2610
From: amazon <huggingface.co/amazon>Newsgroups: alt.freeweights.qwenSubject:

strands-decider-2B-qwen3.5-v1-2610

Date: 2026-11-15Commit: 974685fSigned: 2DC28CC7B26A283B ✓

Text classification model. Safetensors weights, 235 MB in all. Published by amazon under Apache-2.0.

qwen235MBstrands-decider-2B-qwen3.5-v1-2610safetensorspermissive
FactsParamsnot statedSize235 MBFormatssafetensorsTasktext classificationLicenseApache-2.0From sourcepermissive
$ fw get amazon/strands-decider-2B-qwen3.5-v1-2610
# manifest sha256 821f8b579a5e… · 235 MB · 29 files
$ fw verify ./strands-decider-2B-qwen3.5-v1-2610 amazon/strands-decider-2B-qwen3.5-v1-2610
From sourceHosted (signed)amazon/strands-decider-2B-qwen3.5-v1-2610Last check: 2026-11-15 05:31 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Adapter of Qwen3.5-2B-Base.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
235 MB
Weights
214 MB (safetensors)
Parameters
not stated
Formats
safetensors
Task
text classification
License
Apache-2.0 (permissive)
Files
29, each with a sha256
Publisher
amazon
Added
2026-11-15
Section
alt.freeweights.qwen
Lineage

Original release from the publisher.

Base model: Qwen/Qwen3.5-2B-Base

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 05:31 UTCpassed

Model card

From the publisher at commit 974685f. Shown as plain text with links; images open at the publisher.

strands-decider-2B-qwen3.5-v1-2610#

The main home of this model is StrandsAgents/strands-decider-2B-qwen3.5-v1-2610. The same files are also at amazon/strands-decider-2B-qwen3.5-v1-2610.

Strands decider is a small, fast decision model for agentic AI. Unlike an LLM, which can generate arbitrary text, a decision model picks between sets of options and rates things on a scale, and every answer carries a calibrated confidence. It fits the decisions inside an agentic workflow: model routing, tool selection, argument checking, triage, guardrails, evaluations, and the rote decisions of a hybrid agent that leaves the hard ones to an LLM.

v1 is the first model of the new names: strands-decider-<size>-<base>-v<N>-<YYMM>, that is the base model's size, the base model, the recipe generation and the release month. The earlier strands-decider-2B-hobson-v19 and -v21 keep their names (docs/naming.md in the code repository).

What is new in v1, against hobson-v21:

  • A balanced data mix of 246,678 rows, about twice v21's. It adds code tasks and new rule-application rows (apply a written policy to a case), and it adds rows from more public datasets so that the mix follows the kinds of decisions in the evaluations. It drops v21's 20,000 rows from datasets whose terms restrict commercial use.
  • A larger teacher: the output distributions of google/gemma-4-31B-it are training targets where its answer agrees with the gold label.
  • The v19 anchor: training keeps the answers close to the released StrandsAgents/strands-decider-2B-hobson-v19 (a KL term, weight 0.3), not to the untrained base.
  • A soup: this checkpoint averages three training runs (seeds 0, 1 and 2) of the same recipe.

This repository holds one trained checkpoint: a LoRA adapter on Qwen/Qwen3.5-2B-Base plus a small readout head that scores the options of a typed question (noul, a yes/no question; choice, one of N options; score, a level on an ordered scale). The code, the training recipe, the data inventory and the evaluations are at https://github.com/strands-labs/strands-decider, under the same Apache-2.0 license as this model (see LICENSE.md).

Use#

pip install strands-decider

Ask one or more questions about a state. Pass --device cuda, mps or cpu; without it, the best available device is used. The base weights download from the Hub at first use.

strands-decider ask StrandsAgents/strands-decider-2B-qwen3.5-v1-2610 \
  --state "Help! My payouts have been failing for 3 days! " \
  --choice "Which team should handle this?=billing,sales,retail" \
  --noul "Does this convey urgency?" \
  --score "How frustrated is the writer?=calm,frustrated,depressed"

The output of this checkpoint (--device cpu; other devices differ in the last digits):

noul_0 noul = 0.858
choice_0 -> billing (confidence 0.659)
  billing                  0.773
  sales                    0.121
  retail                   0.106
score_0 score = 1.03 (confidence 0.509)
  0: calm                                     0.196
  1: frustrated                               0.574
  2: depressed                                0.230

Images: pip install "strands-decider[vision]" (transformers 5.18 or later; the image path is on the code repository's main and in releases after 0.1.0), then serve --vision or ask --image FILE. See "Images" below and docs/vision.md in the code repository.

Or serve it over HTTP. The server binds to 127.0.0.1 and has no authentication: use it for local experiments.

strands-decider serve StrandsAgents/strands-decider-2B-qwen3.5-v1-2610 --port 8000
curl -s localhost:8000/v1/systemone -H 'content-type: application/json' -d '{
  "state": "Help! My payouts have been failing for 3 days!",
  "questions": {"is_urgent": {"type": "noul", "instructions": "Does this convey urgency?"}}
}'

In Python, strands_decider.modeling.StrandsDeciderModel.load("StrandsAgents/strands-decider-2B-qwen3.5-v1-2610"). The adapter in lora/ is a standard PEFT adapter on the Qwen3.5 text decoder (transformers.Qwen3_5ForCausalLM(...).model); the head is head.safetensors.

Results#

evaluationtasks rightBrierECEserved
JevBench public, window 4096180/2310.2800.072these files
internal setaccuracyn
eval: held-out short tasks0.6536,000
eval: boardgame0.810900
eval: contractnli0.8781,026
eval: hotpotqa (held out)0.832959
eval: musique0.8821,199
eval: musique, answerable0.876599
eval: musique, unanswerable0.887600
eval: [4] adequacy_hs20.709234
eval: [5] gen:adequacy0.828302

JevBench is the external benchmark (231 public tasks); the internal sets are this recipe's held-out short tasks, multi-step documents and answer-adequacy judgements (the code tasks are in the table under "How this checkpoint was made"). MuSiQue, ContractNLI and BoardgameQA are dev splits of sets whose train splits are in the training data; HotpotQA is never trained on. evaluation/README.md in the code repository describes each set, and its results pages give the figures by version. Per-skill results and the raw reports and logs are in eval/summary.json and eval/internal/.

How this checkpoint was made#

This checkpoint is a soup of three training runs of one recipe (seeds 0, 1 and 2). Each layer's LoRA update is the exact mean of the three runs' updates (stored as one rank-48 adapter), and the three readout heads are stacked so that the soup's score for an option is the mean of theirs. The soup was then calibrated like any trained checkpoint. A soup needs no choice between seeds. It scores at or above its seeds' mean on most measures below.

Seeds: their training runs (8x A100). Soup: these files through the code repository's main (one NVIDIA L4).

measureseed 0seed 1seed 2seeds, mean ± SDsoup (this checkpoint)
JevBench public, tasks right of 231 (window 4096)178177184179.7 ± 3.8180
JevBench Brier0.3050.2880.2890.294 ± 0.0100.280
JevBench ECE0.0790.0880.0600.076 ± 0.0140.072
MuSiQue (dev split; train split trained on)0.8820.8940.8870.888 ± 0.0060.882
ContractNLI (dev split; train split trained on)0.8660.8710.8700.869 ± 0.0030.878
BoardgameQA (dev split; train split trained on)0.8000.8030.8010.801 ± 0.0020.810
HotpotQA (never trained on)0.8220.8250.8230.823 ± 0.0020.832
held-out short tasks (6,000)0.6600.6490.6420.650 ± 0.0090.653
code tasks, held out (1,996)0.8260.8330.8310.830 ± 0.0040.836
HelpSteer2 adequacy (234)0.7180.7140.7050.712 ± 0.0070.709
generated adequacy (302)0.8180.7880.8080.805 ± 0.0150.828
generated documents, v16's set0.8490.8490.8630.853 ± 0.0080.857
generated documents, v18's set0.7450.7530.7370.745 ± 0.0080.781
JevBench tiers, easy / standard / hard48 / 65 / 6548 / 66 / 6348 / 64 / 7248 / 67 / 65

On the Decision Index (balanced skill) the soup scores 30.82, measured with the training harness.

Release checks#

These files through the code repository's main (not the training harness):

checkresult
JevBench public (window 4096), on one NVIDIA L4180/231, Brier 0.280, ECE 0.072, strict schema 1.000
the same on CPUthe same answer on all 231 tasks
against the training harness (A100)the same answer on 230 of 231 tasks (181/231 there); the one other task is a near tie (0.346 against 0.345)
internal sets (training/recipe.sh eval) and the code tasks, on the L4the soup column above, each within 2 items of the harness
example output above, --device cpu and --device cudathe same answers; probabilities within 0.006
code: test suite (CPU), ruff and mypy, as CI runs thempass

Images#

With --vision the vision tower of Qwen3.5-2B-Base is kept and the adapter and head are used unchanged; nothing was trained on images. NaturalBench (first 300 groups, 1,200 questions) and POPE adversarial (first 600 items), this checkpoint and hobson-v21 on the same L4:

NaturalBench accG-AccBrierECEPOPE-adv accBrierECE
v1 (this checkpoint), --vision0.7760.3100.3070.0390.8720.1920.023
hobson-v21, --vision0.7850.3130.3110.0430.8770.1790.037
v1 minus v21, paired bootstrap 95% CI-0.009 (-0.022 to +0.003)-0.003-0.005 (-0.013 to +0.004)-0.004 (-0.019 to +0.016)-0.005 (-0.020 to +0.008)+0.013 (+0.003 to +0.023)-0.014 (-0.036 to +0.010)

The same accuracy as v21 within the intervals; POPE Brier is a little worse.

Image missing. Without the image both fall to chance, so the answers come from the image. With the image removed this checkpoint still answers: mean confidence 0.711 on NaturalBench and 0.834 on POPE, ECE 0.211 and 0.334 (v21: 0.722 and 0.792, ECE 0.222 and 0.292). On POPE it is more overconfident than v21 (ECE +0.042, 95% CI +0.039 to +0.044). Do not use its confidence to detect a missing, blank or unreadable image: check for the image before you ask.

Limitations#

  • Questions are read less than documents. With the state and options fixed, a changed question often gets the same answer. Phrase a question so the obvious reading is the intended one.
  • Long, multi-step documents are the weak spot: JevBench's hard tier scores far below its easy tier.
  • score and noul transfer poorly to rubrics and yes/no tasks unlike the training mix. Train on a rubric resembling yours.
  • Calibration is one temperature per primitive, fitted on held-out short classification. The confidence bands are established there only: measure on your own traffic before you trust a threshold.
  • Trained on public datasets, so it inherits their domains and their label noise.

evaluation/README.md, section "Limitations", has the measured figures behind each point.

Training data#

246,678 rows in nine files:

partrowswhat it is
short tasks80,449v21's public classification datasets, without the four whose terms restrict commercial use (AG News, Yahoo Answers topics, Yelp reviews, language identification)
multi-step documents12,909v21's, unchanged
generated documents3,815v21's, written and checked by open-weight models
answer adequacy6,166v21's: HelpSteer2 (CC BY 4.0) and generated items
code24,533generated programs with answers checked by running them; functions from 286 GitHub repositories with permissive licences (MIT, Apache-2.0, BSD, ISC); CuBERT (Apache-2.0), CommitPackFT (MIT), CodeReviewer (CC BY 4.0), CodeContests (CC BY 4.0), Juliet C/C++ 1.3 (public domain)
gap fill96,638rows from public datasets for the decision types that v21 had few rows for: tool choice, agent steps, preference, legal and contract text, routing, NLI, multiple choice, and 119 sources of tasksource/tasksource-jev-typed-decisions
rule application22,168new synthetic rows: apply a written policy to a case (below)

Rule-application rows. Our templates hold each rule. google/gemma-4-31B-it (Apache-2.0) wrote the policy text and the case files. The gold answers were computed by code from the rule. Claude was used only as an independent check to filter rows: a row was kept only where gemma's and Claude's answers both agree with the code. Claude's text is not in the data.

Teacher. The output distributions of google/gemma-4-31B-it are training targets on the yes/no and choice rows where its answer is the gold label; the multi-step rows keep an earlier model's own distributions; the generated-document and adequacy rows train on the gold label only.

Checks on every row. Licence, a 13-gram overlap check against JevBench's public tasks, the Decision Index suite, HotpotQA dev and our held-out sets (rows with any overlap were dropped), the 4,096-token window, and a hand read of samples. HotpotQA is not in the training data; the mix does have 2WikiMultihopQA, a similar multi-hop task.

training/sources.md lists every source with its revision, licence and attribution.

Training#

Each of the three runs trained one epoch on the mix with training/recipe.sh train calibrate eval of the code repository, on p4de.24xlarge hosts (8x NVIDIA A100 80GB; about 79 min of training each). Their configs are in training/configs/; they differ only in seed. The soup was made with strands-decider soup, then calibrated with training/recipe.sh calibrate like any trained checkpoint. The anchor setting (kl_frozen_reference, strands-labs/strands-decider#56) and the soup command (#58) are in the code repository's main. The builders of this data mix are not yet, so the training data cannot be rebuilt from main. Config: train_config.json (seed 0's).

Provenance#

strands_decider_config.json is the soup's, less three keys that the training code wrote and released versions of strands-decider do not read: full_weight_targets: [], force_bos: false and host_embeddings: false (each the off value, so the model is the same). provenance.json: base model and revision (inferred: the hosts did not pin one; the loader pins it from this file), and the sha256 of the config, adapter, head and source pickle. MANIFEST.sha256 lists every file; python -m strands_decider.hf_export verify <folder> checks them. The run records keep their timings and results; host paths, cloud identifiers and cost fields are removed.

Changelog#

  • 2026-10-09: first release.

Files

29 files · 235 MBWeights 214 MB (safetensors). Sizes and sha256 from the signed manifest.
Show all 29 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE.md12.6 KBc0d777a0fed01cceb107d91f1aef96d51737be04f2ed75b1b933286a170d7411
MANIFEST.sha2562.48 KB874dfc3d47c22b5c50b387fabd1e549be483f6e29c127ec6f852125779fa3371
README.md18.0 KBa5c93bdea3200566e89ec5055e2a4fbe5ce9928021b90c9b9f0f089e947bdb5d
chat_template.jinja7.75 KB273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80
eval/internal/eval.log6.61 KB1e1d3be5c4a6cce72848b7f8a66655bbc294dc0f265c1716765436eb4f961d9e
eval/internal/recipe_heldout.json2.48 KB3983c83cae2a6578eb4e68b6d6950e6e600875c4849876a5221f047b3f2225a5
eval/jevbench-w4096/health.json270 B562f689f1eee0035f5bfcd0e2785f228467c62281a6de15526442e7876c3e80c
eval/jevbench-w4096/manifest.json482 Bf43df353b52f059a8c20aefc8fdb093db6223a0cfad7eabe09a3617ff046cc4f
eval/jevbench-w4096/paired.json2.24 KBa44107cbcacd42de3b5cb13ae729ff90098c1fe974bc9b0ec4da8b21c2c4e1f7
eval/jevbench-w4096/paired.txt1.75 KB613657140580fcba4f4aba95c4f0c6a8d07c4cd0421fa238e5693d00517cd308
eval/jevbench-w4096/results.jsonl177 KB67d62b0ca3d7e6c101cc139426fe5aff6b740c3a1515b972f23449370f09644d
eval/jevbench-w4096/run_meta.json964 B140955cc974c7212899ec52e989e7f0eac24f00d65c51ac14a52d1425f622d36
eval/jevbench-w4096/summary.json47.1 KB55259a481dd8a744b84023aed44dce1579aec6eda8024671d9fa5b492dfab38f
eval/summary.json3.50 KB16d92c4441d789ee2e31fdb99a59cf025c5512c72eb4c82b5da5c375011ec314
head.safetensors12.6 MBace56742545b505e6fae34ada85c8edbeedb23ba8974d8680aebe0380d6083a1
lora/adapter_config.json1.27 KB0ced130cefbad13b092425de87680347ce01d09c833cf8e3870e8156db18ffcc
lora/adapter_model.safetensors202 MBae1d0cd1ac3edec6df0a519a3ad18f1c382099032d493f8f98c96a80cfebb4c7
provenance.json967 B8713fedb4e67fb6c60f41dc73c937635377506671e09978f92a2d447ac5264bd
strands_decider_config.json746 B1d9625055e88c254d50089116992d08b0567286c9d6fcefb3c025922058ee65a
tokenizer.json20.0 MBa2cdd2e108566b09079afa8d266e9e65e7c280f27b771218237a06de5ba9cd86
tokenizer_config.json1.13 KB8671bed7c852ce9e661be94f179a7b4ffd091c2a65aea0363e5501c20318ee45
train_config.json2.23 KB85e5dbda4fb646a5182dc5c9895b653837592cf1e685d0c67fa2747c9d6cd649
training/configs/v1-qwen3.5-2b-s0.yaml1.16 KBcf7e3ad462c981e50afc93c1fe7e09616e3205b28ed8fc282e71bada0a9191f3
training/configs/v1-qwen3.5-2b-s1.yaml1.16 KB66d4bccf696e41d56a458fa11a82223cdca7fa36bd3a201090a1252825ecb19f
training/configs/v1-qwen3.5-2b-s2.yaml1.16 KBdd9f57cecaa7f0ceaeaef187347b3b6095c29acae7c4f405524c347a25e9fe1e
training/data_sha256.txt1.94 KB7c2fc0f44fd603f69080599374204e1dab585b163fa8284c7dda0c23e54c6761
training/sources.md32.4 KB77d9cd907c3b809b093566c8f1402098026392b2d8f603c5ff7703b9bba77af9
training/stages.jsonl138 B29ec32e1484c55742e96903afb2003b285a0608abcfef9e4e56cad84e2bbf12d
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
974685f92d pinned now2026-11-15 05:31 UTC29 files · 235 MB

Use it

$ fw get amazon/strands-decider-2B-qwen3.5-v1-2610
# manifest sha256 821f8b579a5e… · 235 MB · 29 files
$ fw verify ./strands-decider-2B-qwen3.5-v1-2610 amazon/strands-decider-2B-qwen3.5-v1-2610
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/amazon/strands-decider-2B-qwen3.5-v1-2610.json --dir ./strands-decider-2B-qwen3.5-v1-2610 $ python3 fw.py verify ./strands-decider-2B-qwen3.5-v1-2610 ./amazon__strands-decider-2B-qwen3.5-v1-2610.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download amazon/strands-decider-2B-qwen3.5-v1-2610 --revision 974685f92d5930b2d37e9cb5eacec7a8f882d9fa --local-dir ./strands-decider-2B-qwen3.5-v1-2610

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE.md
Text sha256
c0d777a0fed01cceb107d91f1aef96d51737be04f2ed75b1b933286a170d7411
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: amazon <huggingface.co/amazon>Newsgroups: alt.freeweights.qwenSubject: strands-decider-2B-qwen3.5-v1-2610Date: 2026-11-15Commit: 974685fSigned: 2DC28CC7B26A283B ✓
Upstream
amazon/strands-decider-2B-qwen3.5-v1-2610
Pinned commit
974685f92d5930b2d37e9cb5eacec7a8f882d9fa
Manifest
strands-decider-2B-qwen3.5-v1-2610.json · .minisig
Manifest sha256
821f8b579a5eefebf224d7bc35878ec227c4ca4bc01133ceef0025704f4bfb2c
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 05:31 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/amazon/strands-decider-2B-qwen3.5-v1-2610.json $ curl -O https://freeweights.allternit.com/manifests/amazon/strands-decider-2B-qwen3.5-v1-2610.json.minisig $ minisign -Vm strands-decider-2B-qwen3.5-v1-2610.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

Qwen/Qwen3.5-2B-Base · this model is a adapter of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download amazon/strands-decider-2B-qwen3.5-v1-2610
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. strands-decider-2B-qwen3.5-v1-2610.json. Provenance. Takedown history: none.
From: BAAI <huggingface.co/BAAI>Subject: Aquila-VL-2B-llava-qwen
From: Perciqa <huggingface.co/Perciqa>Subject: Aurora-Code-1
From: BAAI <huggingface.co/BAAI>Subject: bge-reasoner-embed-qwen3-8b-0923
From: amazon <huggingface.co/amazon>Subject: BMOJOF-primed-HQwen3-8B-Instruct
From: nbeerbower <huggingface.co/nbeerbower>Subject: Bubba-Qwen3.6-27B-LoRA
From: bartowski <huggingface.co/bartowski>Subject: bytkim_Qwen3.8-27B-pi-GGUF