Skip to content
ModelListedExternal
Download

Strands Qwen3 Vl 2b

A Strands-Agents-expert Qwen3-VL-2B that keeps learning after deployment.

KindText modelBase modelQwen/Qwen3-VL-2B-InstructVersionmodel

Model source

Kind
Text model
File size
3.96 GB
Base model
Qwen/Qwen3-VL-2B-Instruct
Version
vmodel
Updated
Sep 25, 2026
Downloads
25
Source
Hugging Face

Source description

strands-qwen3-vl-2b

A Strands-Agents-expert Qwen3-VL-2B that keeps learning after deployment.

Qwen/Qwen3-VL-2B-Instruct post-tuned (LoRA r=32, merged) on the full public codebase and docs of strands-agents and strands-labs (12 repos, ~5.6M tokens), designed to be wrapped with the strands-slm plastic self-learning layer: surprise-gated weight updates at inference, EMA-bounded plasticity, and a provable off-switch (reset() is bit-identical to this base).

Code, demo notebook, and full experimental record: github.com/cagataycali/slm

Use — self-learning (recommended)

pip install strands-slm

As a Strands Agents model provider — every agent turn can change the weights:

from strands import Agent
from strands_tools import shell
from slm import SLM

model = SLM("cagataydev/strands-qwen3-vl-2b")
agent = Agent(tools=[shell], model=model)
agent("use the shell tool to run: echo hello")   # this turn updated the weights

Or drive the learning loop directly:

from slm import StrandsPlasticQwen

m = StrandsPlasticQwen.from_pretrained("cagataydev/strands-qwen3-vl-2b", device="cuda")
print(m.chat("How do I create a custom tool in Strands Agents?"))

for doc in your_stream:
    m.observe(doc, learn=True)   # predicts; if surprised, rewrites its fast weights
m.reset()                        # bit-exact back to this base

Use — plain transformers (frozen expert)

from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("cagataydev/strands-qwen3-vl-2b", dtype="bfloat16", device_map="cuda")
proc = AutoProcessor.from_pretrained("cagataydev/strands-qwen3-vl-2b")

Results

Measured on a single L40S, seed-replicated. The base is never updated by the plastic layer.

claimevidence
Domain expertstrands probe NLL 4.85 → 2.22, 8/8 probes improved; corpus holdout NLL 1.848 → 1.239
Learns while runningcontinual OOD stream NLL 6.18 → 5.37, pure inference
Does not forgetstrands expertise after OOD learning: Δ −0.01
Agent competence growsheld-out tasks 0/4 → 4/4 after 18 curated lessons, 5/5 seeds
Fact memory15/15 facts at 100% verbatim recall
Provable off-switchreset() is bit-identical to this base, Δlogits = 0
Cost+0.11–0.25 s/turn learning overhead

Full results, honest limitations, and the demo notebook: github.com/cagataycali/slm

License: Apache-2.0 (inherits Qwen3-VL license terms).

Sources

1 source
Hugging FacePrimaryVersion 47eec1b60b233f4bf718bd38f3c280c48d29a051
huggingface.co/cagataydev/strands-qwen3-vl-2b/tree/47eec1b60b233f4bf718bd38f3c280c48d29a051

Verified Sep 11

Model artifacts

1 artifact

model.safetensors

safetensors · 3.96 GB · SHA-256 4324c95e3bd2…4072 · Hugging Face

Download

Source excerpts

2 excerpts

--- license: apache-2.0 base_model: Qwen/Qwen3-VL-2B-Instruct tags: - strands-agents - test-time-learning - self-learning - continual-learning - fast-weights - qwen3-vl library_name: transformers pipeline_tag: image-text-to-text --- # strands-qwen3-vl-2b **A Strands-Agents-expert Qwen3-VL-2B that keeps learning after deployment.** **Qwen/Qwen3-VL-2B-Instruct** post-tuned (LoRA r=32, merged) on the full public codebase and docs of [strands-agents](https://github.com/strands-agents) and strands-labs (12 repos, ~5.6M tokens), designed to be wrapped with the [`strands-slm`](https://pypi.org/project/strands-slm/) plastic self-learning layer: surprise-gated weight updates at inference, EMA-bounded plasticity, and a provable off-switch (`reset()` is bit-identical to this base). Code, demo notebook, and full experimental record: [github.com/cagataycali/slm](https://github.com/cagataycali/slm) ## Use — self-learning (recommended) ```bash pip install strands-slm ``` As a [Strands Agents](https://github.com/strands-agents) model provider — every agent turn can change the weights: ```python from strands import Agent from strands_tools import shell from slm import SLM model = SLM("cagataydev/strands-qwen3-vl-2b") agent = Agent(tools=[shell], model=model) agent("use the shell tool to run: echo hello") # this turn updated the weights ``` Or drive the learning loop directly: ```python from slm import StrandsPlasticQwen m = StrandsPlasticQwen.from_pretrained("cagataydev/strands-qwen3-vl-2b", device="cuda") print(m.chat("How do I create a custom tool in Strands Agents?")) for doc in your_stream: m.observe(doc, learn=True) # predicts; if surprised, rewrites its fast weights m.reset() # bit-exact back to this base ``` ## Use — plain transformers (frozen expert) ```python from transformers import AutoModelForImageTextToText, AutoProcessor model = AutoModelForImageTextToText.from_pretrained("cagataydev/strands-qwen3-vl-2b", dtype="bfloat16", device_map="cuda") proc = AutoProcessor.from_pretrained("cagataydev/strands-qwen3-vl-2b") ``` ## Results Measured on a single L40S, seed-replicated. The base is never updated by the plastic layer. | claim | evidence | |---|---| | Domain expert | strands probe NLL 4.85 → 2.22, 8/8 probes improved; corpus holdout NLL 1.848 → 1.239 | | Learns while running | continual OOD stream NLL 6.18 → 5.37, pure inference | | Doe...

Source context: 25 downloads · 1 likes · Pipeline image-text-to-text · Library transformers · Repo cagataydev/strands-qwen3-vl-2b