Views
No views yet
requires/ensures) for formal verification| Property | Value |
|---|---|
| Base model | unsloth/Qwen2.5-Coder-7B-Instruct-bnb-4bit |
| Adapter type | LoRA (QLoRA 4-bit) |
| LoRA rank | r=8, alpha=32 |
| Training epochs | 3 |
| Train examples | 5,479 |
| Eval suite | 7-task IoT sandbox (T1–T7) |
| Best score | 5/7 (Cycle 22, 2026-05-03) |
| Training hardware | AMD RX 7900 GRE (ROCm, unsloth) |
| Task | Status | Description |
|---|---|---|
| T1-bearing-protection | ✅ PASS | API 670 bearing temperature/vibration protection relay |
| T2-irrigation-interlock | ✅ PASS | Soil moisture + rain sensor irrigation interlock |
| T3-async-sensor-poll | ✅ PASS | Async GPIO sensor polling with cancellation token |
| T4-bearing-anomaly | ❌ FAIL | Bearing anomaly diagnosis (lubrication failure pattern) |
| T5-hvac-setback | ❌ FAIL | HVAC occupancy setback (BACnet/Modbus control) |
| T6-vitals-alert | ✅ PASS | Patient vitals alert (HR/SpO2 thresholds) |
| T7-co2-anomaly | ✅ PASS | CO2 anomaly detection (NDIR sensor, ventilation logic) |
| Category | Examples |
|---|---|
| Anchor format / doc annotations | 329 |
| Async IoT patterns | 104 |
| Contract codegen | 48 |
| Doc interrogation (MCP) | 500 |
| IoT aggregation | 48 |
| IoT verticals (agri/building/industrial/medical) | 112 |
| IoT hypothesis patterns | 502 |
| Multi-step chains | 500 |
| Multi-step training | 3,242 |
| Pkg interrogation | 200 |
| Syntax drills/fixes | 160 |
| Targeted fixes (T2–T5) | 320+ |
1from peft import AutoPeftModelForCausalLM
2from transformers import AutoTokenizer
3
4model = AutoPeftModelForCausalLM.from_pretrained(
5 "synoema/qwen25-coder-7b-synoema-iot",
6 device_map="auto",
7)
8tokenizer = AutoTokenizer.from_pretrained(
9 "synoema/qwen25-coder-7b-synoema-iot"
10)
11
12prompt = """Generate a Synoema IoT rule that monitors bearing temperature.
13Alert if temperature > 85°C, trip if > 95°C."""
14
15inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
16out = model.generate(**inputs, max_new_tokens=512, temperature=0.7)
17print(tokenizer.decode(out[0], skip_special_tokens=True))1# Training command (AMD ROCm, unsloth)
2TORCHDYNAMO_DISABLE=1 python3 train_mcp_finetune.py \
3 --model unsloth/Qwen2.5-Coder-7B-Instruct-bnb-4bit \
4 --output output/ci-c22-qwen25-7b \
5 --train corpus/mcp_train.jsonl \
6 --epochs 3 \
7 --batch-size 1 \
8 --grad-accum 16 \
9 --max-seq-len 2048 \
10 --lora-r 8TORCHDYNAMO_DISABLE=1 required to work around unsloth_zoo CE loss decorator
on AMD ROCm (TorchDynamo shape mismatch with s97 vs s7 tensors in cross_entropy).@torch._dynamo.optimize() at import time; must monkey-patch or disable globally