Vox MENS — Qwen3-14B adapter
14B is trained, its spoke is vox-lang and its gate is passed.
Why this size
A large rung that only the biggest single machines can train or serve, so read the memory figure beside this text before trying it. It targets the hardest edits one model can take on without a cluster. Fall back to the next smaller size whenever the memory does not fit. The measured training peak for 14B is 54020 MiB (peak_source: run_summary), and no serving memory figure has been measured for it.
Examples
For 14B, the examples are the 2 shortest items the adapter fixes and the shortest it still fails; of 52 items it fixes 9 and breaks 1.
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-14B base on humaneval_vox_043_triangle_valid: does not parse (count 4).
fn is_valid_triangle(a: int, b: int, c: int) to bool {
let sides = [a, b, c]
for i in 0..3 {
let side = sides[i]
let other_sides = sides.filter(|x| x != side)
let sum_of_others = other_sides.reduce(0, |acc, x| acc + x)
if side >= sum_of_others {
return false
}
}
return true
}
14B adapter on humaneval_vox_043_triangle_valid: passes.
// Return true if three side lengths (positive integers) can form a valid triangle
// (each side < sum of the other two).
fn is_valid_triangle(a: int, b: int, c: int) to bool {
return a + b > c and a + c > b and b + c > a
}
Fixed humaneval_vox_069_binary_search
Search for target in a sorted list xs using binary search.
Return the index of target if found, or -1 if not found.
Qwen3-14B base on humaneval_vox_069_binary_search: type errors (count 4).
fn binary_search(xs: Vec[int], target: int) to int {
let mut left = 0
let mut right = xs.len() - 1
while left <= right {
let mid = (left + right) / 2
if xs[mid] == target {
return mid
} else if xs[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
14B adapter on humaneval_vox_069_binary_search: passes.
// Search for target in a sorted list xs using binary search.
// Return the index of target if found, or -1 if not found.
fn binary_search(xs: List[int], target: int) to int {
let mut left = 0
let mut right = len(xs) - 1
while left <= right {
let mid = (left + right) / 2
if xs[mid] == target {
return mid
} else if xs[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
Still fails humaneval_vox_042_reverse_list
Return a new list with the elements in reverse order.
Qwen3-14B base on humaneval_vox_042_reverse_list: type errors (count 4).
fn reverse_list(xs: List[T]) to List[T] {
let mut reversed = List[T] {}
for x in xs {
reversed = List[T] { head: x, tail: reversed }
}
reversed
}
14B adapter on humaneval_vox_042_reverse_list: type errors (count 1).
// Return a new list with the elements in reverse order.
fn reverse(xs: List[int]) to List[int] {
let mut ys = []
for x in xs {
ys = [x] + ys
}
ys
}
Use it
The 14B adapter sits on the base pin Qwen/Qwen3-14B@40c069824f4251a91eefaf281ebe4c544efd3e18, and this command downloads it after checking the BLAKE3 hash of every file in hf_sync_manifest.json.
vox mens hub pull --size 14B --namespace brbrainerd
The pull writes the 14B run directory that this command serves.
vox mens serve --model mens/runs/qwen3-14b --port 11435
This request sends the user turn of held-out item action_delete to the 14B 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 14B 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 14B | Held-out pass@1 | Collateral accuracy | McNemar p-value |
|---|---|---|---|
| Base 14B | 6/52 (11.5%) | — | — |
| Adapter 14B | 14/52 (26.9%) | — | — |
| gsm8k_think, 128 items, 14B (base then adapter) | — | 0.898 then 0.906 | 0.8125 |
| math500_think, 128 items, 14B (base then adapter) | — | 0.469 then 0.508 | 0.9165 |
| vox_think, 128 items, 14B (base then adapter) | — | 0.914 then 0.969 | 0.9941 |
The 14B 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 14B is gate_receipt.json.
Training
14B ran 138 optimizer steps over 2711427 tokens, ended with a final loss (EMA) of 0.5009, a mean train loss of 0.6635 and a last-epoch validation loss of 0.6061, took 17h 58m and peaked at 54020 MiB, from Vox commit 448df0192; the settings every size shares are on the docs page.
Files
The 14B 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.