alt.freeweights.vision / strands-decider-12B-gemma4-v1-2610
From: amazon <huggingface.co/amazon>Newsgroups: alt.freeweights.visionSubject:

strands-decider-12B-gemma4-v1-2610

Date: 2026-11-14Commit: f152555Signed: 2DC28CC7B26A283B ✓

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

vision843MBstrands-decider-12B-gemma4-v1-2610safetensorspermissive
FactsParamsnot statedSize843 MBFormatssafetensorsTasktext classificationLicenseApache-2.0From sourcepermissive
$ fw get amazon/strands-decider-12B-gemma4-v1-2610
# manifest sha256 a27fa4b4f52d… · 843 MB · 23 files
$ fw verify ./strands-decider-12B-gemma4-v1-2610 amazon/strands-decider-12B-gemma4-v1-2610
From sourceHosted (signed)amazon/strands-decider-12B-gemma4-v1-2610Last check: 2026-11-14 21:35 UTC

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

Adapter of gemma-4-12B-it.

Works with

Runs with

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

Overview

Size
843 MB
Weights
811 MB (safetensors)
Parameters
not stated
Formats
safetensors
Task
text classification
License
Apache-2.0 (permissive)
Files
23, each with a sha256
Publisher
amazon
Added
2026-11-14
Section
alt.freeweights.vision
Lineage

Original release from the publisher.

Base model: google/gemma-4-12B-it

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-14 21:35 UTCpassed

Model card

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

strands-decider-12B-gemma4-v1-2610#

The main home of this model is StrandsAgents/strands-decider-12B-gemma4-v1-2610. The same files are also at amazon/strands-decider-12B-gemma4-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.

This is v1, the first Strands decider on Gemma 4, on google/gemma-4-12B-it. It trains on hobson-v21's data (123,339 rows) plus 12,263 code-task rows. The teacher is Qwen/Qwen3.5-4B: its output distributions are training targets where its answer agrees with the gold label. A frozen-KL anchor keeps the answers close to those of StrandsAgents/strands-decider-2B-hobson-v19. The checkpoint is a soup of three seeds of this recipe: each layer's LoRA update is the exact mean of the seeds' updates (stored as one rank-48 adapter), and the score of an option is the mean of the three heads' scores. The soup was then calibrated.

Model names: strands-decider-<size>-<base>-v<N>-<YYMM>, that is the base model's size, the base model family, the release on that family (v1 is the first) and the release month (docs/naming.md in the code repository).

This repository holds a LoRA adapter on google/gemma-4-12B-it 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 @ git+https://github.com/strands-labs/strands-decider"

This installs the code repository's main, which has Gemma 4 support; the package on PyPI does not have it yet.

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-12B-gemma4-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.956
choice_0 -> billing (confidence 0.909)
    billing                  0.939
    sales                    0.040
    retail                   0.021
score_0 score = 0.99 (confidence 0.799)
    0: calm                                     0.106
    1: frustrated                               0.794
    2: depressed                                0.101

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-12B-gemma4-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-12B-gemma4-v1-2610"). The adapter in lora/ is a standard PEFT adapter on the Gemma 4 text decoder (transformers.Gemma4ForConditionalGeneration(...).model.language_model); the head is head.safetensors.

Results#

evaluationtasks rightBrierECEserved
JevBench public, window 4096200/2310.1730.061these files
benchmarkscore
Decision Index 0.2.1, balanced skill (window 32,768)47.14
internal setaccuracyn
eval: held-out short tasks0.7086,000
eval: boardgame0.891900
eval: contractnli0.8761,026
eval: hotpotqa (held out)0.911959
eval: musique0.9361,199
eval: musique, answerable0.947599
eval: musique, unanswerable0.925600
eval: [4] adequacy_hs20.795234
eval: [5] gen:adequacy0.884302
eval: [6] code/bug_swapped_operands0.91089
eval: [6] code/bug_variable_misuse0.83189
eval: [6] code/bug_wrong_binary_operator0.79889
eval: [6] code/commit_message0.98989
eval: [6] code/correct_solution0.53989
eval: [6] code/cwe_choice0.95589
eval: [6] code/docstring_match0.95589
eval: [6] code/exception_type0.87689
eval: [6] code/exec_input0.810142
eval: [6] code/exec_output0.863662
eval: [6] code/needle_function0.990391
eval: [6] code/review_needed0.60789

JevBench is the external benchmark (231 public tasks); the Decision Index is the decision-model index of the decision-index kit. The internal sets are this recipe's held-out short tasks, multi-step documents, answer-adequacy judgements and code tasks. evaluation/README.md in the code repository describes each set. Per-skill results and the raw reports and logs are in eval/summary.json and eval/internal/.

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#

The datasets list in the metadata holds the 25 Hub datasets that the training rows come from: 18 short-task classification datasets, tasksource/Boardgame-QA, nvidia/HelpSteer2, and five code datasets. The other sources are:

  • ContractNLI and MuSiQue, from their authors' releases (not from the Hub).
  • Synthetic rows that open-weight language models generated and checked.
  • Code-task rows built here: generated programs with execution-checked answers, and functions from permissively licensed GitHub repositories. The five code datasets give the other code tasks (CuBERT ETH Py150 Open, CommitPackFT, CodeReviewer, Juliet C/C++ 1.3, CodeContests). Code rows carry gold labels only.
  • The output distributions of the frozen teacher model Qwen/Qwen3.5-4B. They are training targets, next to an anchor toward the distributions of StrandsAgents/strands-decider-2B-hobson-v19.

These Hub datasets are for calibration and evaluation only, not training: dair-ai/emotion, mteb/amazon_massive_intent, raquiba/Sarcasm_News_Headline, ucberkeley-dlab/measuring-hate-speech and hotpotqa/hotpot_qa.

In the code repository, data/sources.md lists every source with its revision, role, license and attribution. data/README.md states what is committed, what is downloaded and the reproduction contract. Read a source's own terms before you redistribute data built from it.

Training#

Three seeds (0, 1, 2) of one config (train_config.json; the seeds differ only in seed), each trained by training/recipe.sh train on one host with 8 NVIDIA H100 80GB GPUs (NGPU=8), one epoch of 4,109 steps. The soup was made by strands-decider soup and calibrated and evaluated by training/recipe.sh calibrate eval. training/README.md has the setup, the stages and the hardware notes.

Provenance#

provenance.json: base model and revision (inferred: the hosts did not pin one), 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 (Hub tag 261009): first release.
  • 2026-10-09: card corrected (the recipe, the install line, the dataset list). The weights did not change.

Files

23 files · 843 MBWeights 811 MB (safetensors). Sizes and sha256 from the signed manifest.
Show all 23 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE.md13.1 KB024b96c021e9a4db08bc53982ec95cc30b305a8350170337a38518bd672aae12
MANIFEST.sha2561.90 KBbc022aedbb54c29dd5b95a18e4c7262ae2b34e7c22c9d98b31fddd6880586ae1
README.md15.3 KB35c222768b545b5cd3fdd01490eef56f9e3d7e7be68e19c4985d5cbc82e9a6d8
chat_template.jinja18.7 KBae53464bf3be25802b3a5b37def7fd89667067d7577049b3b2d74c4d8de4c6d4
eval/internal/eval.log6.84 KB07f698546cde226c63ab0b1a02328c85c79b008934f24140f2afffb8e1bf21a7
eval/internal/recipe_heldout.json2.48 KBfa4039f2354af5c06cae4fce03f48cd3f400a661471462cc61344025e53ef50c
eval/jevbench-w4096/health.json310 B77f25a0098d6fb495bce35adac13ebe4e88ce9fd58012a4a5ace759fcf8f53bf
eval/jevbench-w4096/manifest.json569 B792e03f062db3a2bc970c90fcfa07683c30f223408dab84d748fb2df125bb145
eval/jevbench-w4096/paired.json2.90 KB0672de8e5fba88eeb4c28cfc1efbe576671d88f055cdeaaeae276334306bf26a
eval/jevbench-w4096/paired.txt2.58 KB66f3cd67b9de85169f54397634798711c983aa0385faccef53941204501731ec
eval/jevbench-w4096/results.jsonl184 KB8111c2acce9543c16fdd20a3edbd11a75ed9b02f109c60bc5f9b7c8d0100370a
eval/jevbench-w4096/run_meta.json1.01 KB1aa42a84fb55b503d36c10c30b22425b939145cec40e22055c64c4cb492549dc
eval/jevbench-w4096/summary.json47.1 KB127345b9e589134311f9f85b17d310e70032aeb99862d9bdf985d84925294ce2
eval/summary.json4.53 KB5c90e224c94e0d2406518fa75f029d36431be69badb74590f2f33bf56e24e9e9
head.safetensors23.6 MBfa6023b17422a569cd2c5b46b29564a827e78f609b1a7d81831d9ed3b1ecb94b
lora/adapter_config.json1.17 KB0b9bf880b630441245e20eed71afb8a243cee13d7f0b7022c9e0d77bb267b7bc
lora/adapter_model.safetensors787 MB67031b25815f17f2307052b9347e369d3eecf5873be5f50a4f5d7fdbef102e7b
provenance.json994 Bea13c70621f5cfb19d84b55ed85e600f25a25295687e12120ee762e3f4b4400f
strands_decider_config.json739 Bcdfb152fd4be7745353b09399623ce06bac2208cbbc05181b63c05beded3262d
tokenizer.json32.2 MB30383f3ce90a169cbabe9eb3da7bb77988bf906aad2e59184b378f5470ec4dbd
tokenizer_config.json3.74 KB794a39f8330ce05020774c70c091225bc5f031b9cacf41fc20e52eb54b4b52d8
train_config.json1.95 KBaf154bde24996bbd3a7decc444b18cb1856b0379c88fe949d29d1a736097570b
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
f15255546b pinned now manifest updated, same commit2026-11-14 21:35 UTC23 files · 843 MB
f15255546b2026-11-14 21:35 UTC23 files · 843 MB

Use it

$ fw get amazon/strands-decider-12B-gemma4-v1-2610
# manifest sha256 a27fa4b4f52d… · 843 MB · 23 files
$ fw verify ./strands-decider-12B-gemma4-v1-2610 amazon/strands-decider-12B-gemma4-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-12B-gemma4-v1-2610.json --dir ./strands-decider-12B-gemma4-v1-2610 $ python3 fw.py verify ./strands-decider-12B-gemma4-v1-2610 ./amazon__strands-decider-12B-gemma4-v1-2610.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download amazon/strands-decider-12B-gemma4-v1-2610 --revision f15255546b30770e4d6acd84ac95267904607722 --local-dir ./strands-decider-12B-gemma4-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-14
Text in
LICENSE.md
Text sha256
024b96c021e9a4db08bc53982ec95cc30b305a8350170337a38518bd672aae12
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.visionSubject: strands-decider-12B-gemma4-v1-2610Date: 2026-11-14Commit: f152555Signed: 2DC28CC7B26A283B ✓
Upstream
amazon/strands-decider-12B-gemma4-v1-2610
Pinned commit
f15255546b30770e4d6acd84ac95267904607722
Manifest
strands-decider-12B-gemma4-v1-2610.json · .minisig
Manifest sha256
a27fa4b4f52d0e6675aef9063f4fa3d02cb048b824145c1a2b83b4494be9fba8
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:35 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/amazon/strands-decider-12B-gemma4-v1-2610.json $ curl -O https://freeweights.allternit.com/manifests/amazon/strands-decider-12B-gemma4-v1-2610.json.minisig $ minisign -Vm strands-decider-12B-gemma4-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

google/gemma-4-12B-it · 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-12B-gemma4-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-12B-gemma4-v1-2610.json. Provenance. Takedown history: none.
From: dima806 <huggingface.co/dima806>Subject: ai_vs_real_image_detection
From: legekka <huggingface.co/legekka>Subject: AI-Anime-Image-Detector-ViT
From: onnx-community <huggingface.co/onnx-community>Subject: AI-Anime-Image-Detector-ViT-ONNX
From: AICodexLab <huggingface.co/AICodexLab>Subject: answerdotai-ModernBERT-base-ai-detector
From: onnx-community <huggingface.co/onnx-community>Subject: answerdotai-ModernBERT-base-ai-detector-ONNX
From: onnx-community <huggingface.co/onnx-community>Subject: bart-large-cnn-ONNX