CoolFace
Modelpublic

delimitter/synoema-coder-3b-tools-v8

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
0likes75downloads
Model Card

Synoema-Coder-3B Tools (C8)

A 3B LoRA fine-tune of unsloth/Qwen2.5-Coder-3B-Instruct that turns it into an agentic coding model for the [Synoema](https://synoema.tech) programming language — it writes Synoema, type-checks it, runs it, searches a corpus, and self-corrects on errors, all through MCP tools.

  • 🌐 Website: https://synoema.tech
  • 🤖 This model: https://huggingface.co/delimitter/synoema-coder-3b-tools-v8
  • 📚 Training corpus (dataset): https://huggingface.co/datasets/delimitter/synoema-coder-3b-tools-corpus

🏆 Result: 100% (28/28) on the Synoema agentic tool-use benchmark

Scored on the corrected agentic harness: the model is driven turn-by-turn (generation stops at <|im_end|>), and real tool results are injected between turns — actual sno check / sno run output from the live Synoema compiler, never mocked. A task only passes if the model genuinely completes it end-to-end (e.g. multi-write self-correction: write broken code → observe the type error → rewrite a valid fix → type-check passes).

CapabilityTasksPass
Write + typecheck + runTU1–TU3, TU5, TU10
Search → write → runTU6, TU9, TU20
Multi-write self-correction (if/else → ternary)TU4, TU13
Language features (ADT, HOF, pattern match, cons)TU11, TU14–TU19, TU23, TU29
List comprehensionsTU12, TU26
Nested ternary (fizzbuzz)TU22, TU30
Total2828/28

What is Synoema?

Synoema is an LLM-native programming language and runtime designed so that models can write it reliably:

  • BPE-aligned operators — every operator maps to exactly one cl100k_base token.
  • Ternary instead of if/else? cond -> a : b (nestable).
  • GBNF grammar for constrained decoding (structural-correctness guarantee).
  • Cranelift JIT + WebAssembly compile targets.
  • MCP server exposing file_write, file_read, sno_typecheck, sno_run, search_corpus.
  • Contract annotations (requires / ensures) for formal verification.

Model details

PropertyValue
Base modelunsloth/Qwen2.5-Coder-3B-Instruct
Parameters3B
MethodQLoRA (4-bit NF4 + LoRA), merged to fp16 for GGUF
LoRAr=16, alpha=32
Sequence length1024
Epochs / cycle3
Training corpus~18k tool-use + codegen examples — every example passes `sno check` + `sno run`
CycleC8 (sequential "carousel": each cycle warm-starts from the best previous adapter, then trains on the corpus plus targeted examples for the prior cycle's failures)
HardwareAMD RX 7900 GRE 16GB (ROCm + unsloth)

GGUF files (llama.cpp / Ollama / LM Studio)

FileQuantSizeNotes
synoema-coder-3b-tools-v8.Q4_K_M.ggufQ4KM2 GBsmallest, recommended for local use
synoema-coder-3b-tools-v8.Q8_0.ggufQ8_03 GBnear-lossless
synoema-coder-3b-tools-v8.f16.ggufF166 GBfull precision
bash
# llama.cpp
llama-cli -hf delimitter/synoema-coder-3b-tools-v8 --hf-file synoema-coder-3b-tools-v8.Q4_K_M.gguf -p "Write quicksort in Synoema to src/qs.sno and run it."

# Ollama
ollama run hf.co/delimitter/synoema-coder-3b-tools-v8:Q4_K_M

Usage — Transformers + PEFT (adapter)

python
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("unsloth/Qwen2.5-Coder-3B-Instruct", device_map="auto")
tok  = AutoTokenizer.from_pretrained("unsloth/Qwen2.5-Coder-3B-Instruct")
model = PeftModel.from_pretrained(base, "delimitter/synoema-coder-3b-tools-v8")

Prompt format is ChatML. The system prompt used at training/eval:

<|im_start|>system
You are sno-code, a Synoema coding agent. Use tools to write and verify code.<|im_end|>
<|im_start|>user
Write `square x = x * x` with `main = square 9` to src/square.sno, typecheck and run it.<|im_end|>
<|im_start|>assistant

The model emits OpenAI-style tool_calls for file_write, sno_typecheck, sno_run, file_read, search_corpus; feed real tool results back as tool turns.


Synoema language quick reference

synoema
maxOf x y = ? x > y -> x : y            -- ternary (NO if/then/else)
fact 0 = 1                              -- pattern matching
fact n = n * fact (n - 1)
evens xs = [x | x <- xs, x % 2 == 0]    -- list comprehension
sumList xs = foldl (\acc x -> acc + x) 0 xs   -- higher-order functions
Direction = North | South | East | West       -- ADT
opposite North = South
main = qsort [3 1 4 1 5]                -- lists are SPACE-separated

License

Apache-2.0 (same as the Qwen2.5 base model). Synoema © Andrey Bubnov — https://synoema.tech