delimitter/qwen25-coder-7b-synoema-iot
03
Qwen2.5-Coder-7B — Synoema IoT Fine-tune
LoRA adapter on Qwen2.5-Coder-7B-Instruct trained to generate correct Synoema IoT automation rules.
What is Synoema?
Synoema is an LLM-native programming language designed for IoT/edge automation:
- 33 BPE-aligned operators (cl100k_base) — no tokenizer misalignment
- GBNF grammar for constrained decoding (100% syntactic correctness)
- Cranelift JIT + WebAssembly targets
- Contract annotations (
requires/ensures) for formal verification
Model Details
Eval Results — IoT 7-Task Suite
Score: 5/7 (71.4%) — Training ongoing, target 7/7.
Continuous Training
This model is trained in a continuous improvement loop:
- 22+ cycles completed (2026-04-18 → 2026-05-03)
- Each cycle: corpus expansion → QLoRA fine-tune → IoT eval → targeted corpus generation
- Corpus: 5,479 training examples across 15 domains
Corpus Composition
Usage
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
model = AutoPeftModelForCausalLM.from_pretrained(
"synoema/qwen25-coder-7b-synoema-iot",
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(
"synoema/qwen25-coder-7b-synoema-iot"
)
prompt = """Generate a Synoema IoT rule that monitors bearing temperature.
Alert if temperature > 85°C, trip if > 95°C."""
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, temperature=0.7)
print(tokenizer.decode(out[0], skip_special_tokens=True))Training Setup
# Training command (AMD ROCm, unsloth)
TORCHDYNAMO_DISABLE=1 python3 train_mcp_finetune.py \
--model unsloth/Qwen2.5-Coder-7B-Instruct-bnb-4bit \
--output output/ci-c22-qwen25-7b \
--train corpus/mcp_train.jsonl \
--epochs 3 \
--batch-size 1 \
--grad-accum 16 \
--max-seq-len 2048 \
--lora-r 8Note: TORCHDYNAMO_DISABLE=1 required to work around unslothzoo CE loss decorator on AMD ROCm (TorchDynamo shape mismatch with `s97 vs s7` tensors in crossentropy).
Known Issues
- T4 / T5 still failing — targeted corpus expansion in progress
- TORCHDYNAMO_DISABLE required on AMD ROCm — unslothzoo CE loss applies `@torch.dynamo.optimize()` at import time; must monkey-patch or disable globally
