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

strands-decider-E4B-gemma4-v1-2610

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

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

vision467MBstrands-decider-E4B-gemma4-v1-2610safetensorspermissive
FactsParamsnot statedSize467 MBFormatssafetensorsTasktext classificationLicenseApache-2.0From sourcepermissive
$ fw get amazon/strands-decider-E4B-gemma4-v1-2610
# manifest sha256 1828bc214103… · 467 MB · 23 files
$ fw verify ./strands-decider-E4B-gemma4-v1-2610 amazon/strands-decider-E4B-gemma4-v1-2610
From sourceHosted (signed)amazon/strands-decider-E4B-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-E4B-it.

Works with

Runs with

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

Overview

Size
467 MB
Weights
434 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-E4B-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 fad1b1a. Shown as plain text with links; images open at the publisher.

strands-decider-E4B-gemma4-v1-2610#

The main home of this model is StrandsAgents/strands-decider-E4B-gemma4-v1-2610. The same files are also at amazon/strands-decider-E4B-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-E4B-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-E4B-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-E4B-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.959
choice_0 -> billing (confidence 0.951)
    billing                  0.967
    sales                    0.019
    retail                   0.013
score_0 score = 0.97 (confidence 0.848)
    0: calm                                     0.102
    1: frustrated                               0.823
    2: depressed                                0.075

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-E4B-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-E4B-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 4096187/2310.2430.037these files
benchmarkscore
Decision Index 0.2.1, balanced skill (window 32,768)39.42
internal setaccuracyn
eval: held-out short tasks0.6846,000
eval: boardgame0.844900
eval: contractnli0.8721,026
eval: hotpotqa (held out)0.829959
eval: musique0.9221,199
eval: musique, answerable0.922599
eval: musique, unanswerable0.923600
eval: [4] adequacy_hs20.786234
eval: [5] gen:adequacy0.838302
eval: [6] code/bug_swapped_operands0.84389
eval: [6] code/bug_variable_misuse0.73089
eval: [6] code/bug_wrong_binary_operator0.71989
eval: [6] code/commit_message0.98989
eval: [6] code/correct_solution0.37189
eval: [6] code/cwe_choice0.93389
eval: [6] code/docstring_match0.95589
eval: [6] code/exception_type0.78789
eval: [6] code/exec_input0.782142
eval: [6] code/exec_output0.775662
eval: [6] code/needle_function0.974391
eval: [6] code/review_needed0.65289

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 · 467 MBWeights 434 MB (safetensors). Sizes and sha256 from the signed manifest.
Show all 23 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE.md13.1 KBfb23665dee0c6687360372b516111dc9ed8baf6b4491e6412f71080b969d40ba
MANIFEST.sha2561.90 KBbea5ddeea8c28923696517ff3201e68f4a5cc6510a3ab3457088485b7dbd3a4f
README.md15.3 KBa22ce8ed72b968a527cfb94044dcdb62b6f3648bb9a283d2c7f068e6e02ef77a
chat_template.jinja18.6 KB0a2c8073c878ab1da004bee933a998606537bbb62016310352c7285c3f01c5b5
eval/internal/eval.log6.84 KB9a7e1d6c288c60e41f171e3cd2e0572e4d503d294518c86cc9b78a354b286b1d
eval/internal/recipe_heldout.json2.47 KBfd88ecd4f78e97ff20aabaa5b8ac2cff4133a409de470b611041442f2a610258
eval/jevbench-w4096/health.json310 B12a78b37ca6cf1a18e33685a2f30fcca22ab2cd53b029573d354b08a14fc227f
eval/jevbench-w4096/manifest.json569 Bbfe84adc765dfed45b9f5ee381ec6c0e47eb7fd2dc83c6c32dfbe8916e6ddd98
eval/jevbench-w4096/paired.json2.57 KBb475296ebb72ab3817b37e6aaacc31ff91510fbd22c6f03afffd912b9c160c0c
eval/jevbench-w4096/paired.txt2.16 KB0b995ab3a4af09148a8655b10165607cfd5f49181bdb16bee7ed4380825522b8
eval/jevbench-w4096/results.jsonl184 KB762dec0f8dd95bfa406b8b1ba74a08b9856ced1546142fa057b76f7ec9f96ce7
eval/jevbench-w4096/run_meta.json1.01 KB5768f25e1e749ee93ae3d03c628a6e0547d58f91b381d92f26707c0010ece4bf
eval/jevbench-w4096/summary.json47.1 KB2fef23e043813d04a87dbb80f34e66a09bd4cf82131d2db02e00a669135b7027
eval/summary.json4.54 KB572ee353074498f36983fb8e5f971226c136cc8becea9c69adc391e54b32c7de
head.safetensors15.8 MB609cd2b6fdd4c65b6b5df1abfcb0c7a60dced2d50322e7610f64f5c92fbba113
lora/adapter_config.json1.17 KB0b9bf880b630441245e20eed71afb8a243cee13d7f0b7022c9e0d77bb267b7bc
lora/adapter_model.safetensors419 MB0fd1bf62d764747b6f8531dbe153e79655fb0c8cbfdf5c85abae2d658974b944
provenance.json994 Bcdefa4542cb39beaac581585cc33d41d930fe2f4ed2608752540540926ee89f5
strands_decider_config.json739 Bf2620549fc4f6533f58bef44de2e3d7a5d503b3d590f291965c7560006bd028b
tokenizer.json32.2 MB30383f3ce90a169cbabe9eb3da7bb77988bf906aad2e59184b378f5470ec4dbd
tokenizer_config.json3.73 KB3ab5c7b94dc97d65ca7064496fa69b88ff875378e1cb7ee3e43070c3a8170999
train_config.json1.95 KB293b690363bd40e7adab4718c0a19d24079e08f6a530eb1d342ac8ada8c8e201
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
fad1b1ada5 pinned now manifest updated, same commit2026-11-14 21:35 UTC23 files · 467 MB
fad1b1ada52026-11-14 21:35 UTC23 files · 467 MB

Use it

$ fw get amazon/strands-decider-E4B-gemma4-v1-2610
# manifest sha256 1828bc214103… · 467 MB · 23 files
$ fw verify ./strands-decider-E4B-gemma4-v1-2610 amazon/strands-decider-E4B-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-E4B-gemma4-v1-2610.json --dir ./strands-decider-E4B-gemma4-v1-2610 $ python3 fw.py verify ./strands-decider-E4B-gemma4-v1-2610 ./amazon__strands-decider-E4B-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-E4B-gemma4-v1-2610 --revision fad1b1ada5357940a2779f8bcc2d8b39edb8bc6e --local-dir ./strands-decider-E4B-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
fb23665dee0c6687360372b516111dc9ed8baf6b4491e6412f71080b969d40ba
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-E4B-gemma4-v1-2610Date: 2026-11-14Commit: fad1b1aSigned: 2DC28CC7B26A283B ✓
Upstream
amazon/strands-decider-E4B-gemma4-v1-2610
Pinned commit
fad1b1ada5357940a2779f8bcc2d8b39edb8bc6e
Manifest
strands-decider-E4B-gemma4-v1-2610.json · .minisig
Manifest sha256
1828bc214103ac8e8095b6b1e4fd81612f69b1e6cda6c65392cc0a3bc3d1de67
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-E4B-gemma4-v1-2610.json $ curl -O https://freeweights.allternit.com/manifests/amazon/strands-decider-E4B-gemma4-v1-2610.json.minisig $ minisign -Vm strands-decider-E4B-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-E4B-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-E4B-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-E4B-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