Javi0.4-2B

Javi0.4-2B

Javi0.4-2B is Javi0.3-2B with one embedding row changed. No fine-tuning, no new data, no gradients. The tied input/output row for token 51187 (=open_page) is multiplied by 0.84. Every other weight is byte-identical to Javi0.3-2B.

The edit biases one decision: after a failed lookup, call web_search again instead of opening a URL typed from memory. It does not add a new reasoning capability.

Measured effect

8 held-out eval-v3 canonical fail questions, first web_search forced to fail, greedy next tool:

model next web_search next open_page
Javi0.3-2B 0/8 8/8
Javi0.4-2B 7/8 1/8

This probe isolates the decision the edit targets. In a two-seed harness canary with real tools and sampling, 0.84 chose open_page after a permanently blocked search and completed, same as the base; it used one extra search on a normal lookup. A 0.75 scale flipped 4/4 but looped on 14 searches under a permanent block, so 0.84 is the conservative setting. The edit reaches the canonical open_page tool; in opencode/grok, webfetch/web_fetch after a 403 is unchanged.

Full eval v3

175 held-out seeds, 3 runs, date pin 2026-10-07, cached search results. Javi0.3-2B answers on the same seeds are the baseline. Judges: DeepSeek-V4.1-Flash-1017 and mimo-v26-dual.

metric Javi0.3-2B Javi0.4-2B
core pass (judge average) 0.35 [0.30, 0.40] 0.41 [0.36, 0.45]
core pass (deepseek) 0.48 0.58
core pass (mimo) 0.23 0.24
recovery after a tool failure 0.55 (n=11) 0.45 (n=10)
made-up links 0.01 0.00
loops 0.04 0.03

Paired core pass difference: +0.06 [0.02, 0.10] (deepseek +0.10 [0.05, 0.16], mimo +0.02 [-0.02, 0.06]), 95% bootstrap over 175 seeds. The deepseek interval clears zero; the mimo interval crosses zero, so the size of the gain is uncertain. Conflict questions improved (0.33 vs 0.07, n=7) and nodate (0.42 vs 0.17, n=6); premise (0.23 vs 0.29, n=13) and recovery after real failures did not.

Five answer episodes (4 seeds) carry no deepseek verdict because the judge omits the tools or style key; one seed never finished an episode in any of the three runs and the judge skips it, so judge-only rows cover 174 seeds. Core pass stays at 175 seeds with incomplete episodes scored 0. Full scoreboard: data/v2/eval/javi04-vs-03-2b/score.md in the source tree.

Files

Merged bf16 safetensors (one shard, 4.2 GB), tokenizer, processor files and chat template. The vision tower is Qwen3.5-2B's, unchanged; the edit is in the language model only.

Run it

Javi was trained and evaluated with thinking off. Send "chat_template_kwargs": {"enable_thinking": false} and use temperature 0.2, top-p 0.8, top-k 20 so tool calls stay well formed.

GGUF for llama.cpp or lmdeck: Javi0.4-2B-GGUF.

lmdeck

lmdeck use javi0.4-2b

Transformers

from transformers import AutoModelForImageTextToText, AutoProcessor

model_id = "javierbits/Javi0.4-2B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, dtype="auto", device_map="auto")

tools = [{"type": "function", "function": {
    "name": "web_search", "description": "Search the web.",
    "parameters": {"type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"]}}}]
messages = [{"role": "user", "content": [{"type": "text", "text": "What's the latest stable Rust release?"}]}]

inputs = processor.apply_chat_template(messages, tools=tools, add_generation_prompt=True, enable_thinking=False,
                                       tokenize=True, return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.2, top_p=0.8, top_k=20)
print(processor.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

The edit

embed_tokens[51187] *= 0.84  # =open_page

Token 51187 is a single token in the Qwen3.5 tokenizer. The row is tied between input and output embeddings, so the output logit for =open_page is reduced.

Links

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

Model tree for javierbits/Javi0.4-2B

Finetuned
Qwen/Qwen3.5-2B
Finetuned
(1)
this model
Quantizations
1 model

Collection including javierbits/Javi0.4-2B