Vox MENS — Qwen3-1.7B adapter
1.7B is trained, its spoke is vox-lang and its gate is passed.
Why this size
A small rung for ordinary laptops and desktop GPUs with a modest memory budget. It handles single-file generation and one-pass fixes for compiler diagnostics. Drop to the smallest size when latency is the limit, or climb to the middle size when an answer needs reasoning across functions. The measured training peak for 1.7B is 19968 MiB (peak_source: run_summary), and no serving memory figure has been measured for it.
Examples
For 1.7B, the examples are the 2 shortest items the adapter fixes and the shortest it still fails; of 52 items it fixes 12 and breaks 1.
Fixed page_index
define a page named `IndexPage` with a title 'Home' that displays a heading with the text 'Welcome'
Qwen3-1.7B base on page_index: does not parse (count 2).
component IndexPage() {
title: "Home"
heading: "Welcome"
view: column() {
text() { "Welcome" }
button(on_click={location = "/about"}) { "About" }
}
}
1.7B adapter on page_index: passes.
component IndexPage() {
view: heading() { "Welcome" }
}
Fixed humaneval_vox_043_triangle_valid
Return true if three side lengths (positive integers) can form a valid triangle (each side < sum of the other two).
Qwen3-1.7B base on humaneval_vox_043_triangle_valid: does not parse (count 6).
fn is_valid_triangle(a: int, b: int, c: int) to bool {
// Check if all sides are positive integers
if a <= 0 || b <= 0 || c <= 0 {
return false
}
// Check if the sum of any two sides is greater than the third
return (
a + b > c &&
a + c > b &&
b + c > a
)
}
1.7B adapter on humaneval_vox_043_triangle_valid: passes.
fn is_valid_triangle(a: int, b: int, c: int) to bool {
return a + b > c and a + c > b and b + c > a
}
Still fails humaneval_vox_042_reverse_list
Return a new list with the elements in reverse order.
Qwen3-1.7B base on humaneval_vox_042_reverse_list: does not parse (count 3).
fn reverse_list(lst: list[int]) to list[int] {
return reverse(lst)
}
fn reverse(lst: list[int]) to list[int] {
if lst is empty {
return empty
}
let first = lst[0]
let rest = lst[1:]
return cons(first, reverse(rest))
}
1.7B adapter on humaneval_vox_042_reverse_list: type errors (count 5).
fn reverse_list(lst: list[int]) to list[int] {
let mut result = list[int]();
for x in lst {
result = list.append(result, x);
}
return result;
}
Use it
The 1.7B adapter sits on the base pin Qwen/Qwen3-1.7B@70d244cc86ccca08cf5af4e1e306ecf908b1ad5e, and this command downloads it after checking the BLAKE3 hash of every file in hf_sync_manifest.json.
vox mens hub pull --size 1.7B --namespace brbrainerd
The pull writes the 1.7B run directory that this command serves.
vox mens serve --model mens/runs/qwen3-1.7b --port 11435
This request sends the user turn of held-out item action_delete to the 1.7B server, which applies its codegen lane to it.
curl -s http://127.0.0.1:11435/v1/chat/completions -H 'Content-Type: application/json' -d @- <<'JSON'
{
"lane": "codegen",
"messages": [
{
"role": "user",
"content": "Write a Vox program that: define an action named `delete_item` that takes an integer parameter `id` and returns a boolean indicating success"
}
],
"max_tokens": 1024,
"temperature": 0.0
}
JSON
The code below is the 1.7B adapter's recorded output for item action_delete in the held-out evaluation, taken from evidence/heldout_adapter_nothink.ckpt.jsonl, where the codegen lane's prompt protocol qwen3_non_thinking_codegen_v1 wrapped the same user turn and every stored check passed; it is not a transcript of vox mens serve.
fn delete_item(id: int) to bool {
return true
}
Results
| Result for 1.7B | Held-out pass@1 | Collateral accuracy | McNemar p-value |
|---|---|---|---|
| Base 1.7B | 3/52 (5.8%) | — | — |
| Adapter 1.7B | 14/52 (26.9%) | — | — |
| gsm8k_think, 128 items, 1.7B (base then adapter) | — | 0.766 then 0.758 | 0.5000 |
| math500_think, 128 items, 1.7B (base then adapter) | — | 0.469 then 0.453 | 0.4073 |
| vox_think, 128 items, 1.7B (base then adapter) | — | 0.688 then 0.633 | 0.1239 |
The 1.7B rows compare the base model with the adapter on identical items, and a slice p-value below 0.05 would mean the adapter lost ground on that slice.
The release gate record for 1.7B is gate_receipt.json.
Training
1.7B ran 138 optimizer steps over 966327 tokens, ended with a final loss (EMA) of 0.6964, a mean train loss of 0.9406 and a last-epoch validation loss of 0.8398, took 1h 01m and peaked at 19968 MiB, from Vox commit 4ad5670ef; the settings every size shares are on the docs page.
Files
The 1.7B repository holds candle_qlora_adapter.safetensors, the adapter, training and gate manifests and records, evidence/, and hf_sync_manifest.json with the BLAKE3 hash of every file.
This card is generated by vox mens hub sync; the ladder index lists the other sizes and how the cards are made is on the docs page.