OpenTDT NLQ Router β€” Qwen2.5-Coder-3B QLoRA adapter (v3)

LoRA adapter that turns natural-language operator questions over the OpenTDT telecom digital twin into router decisions: a curated-tool call with slots, a templated listing, or a free-SPARQL escape.

can Seattle talk to Denver?          -> {"slots": {"dst": "Denver", "src": "Seattle"}, "tool": "reachability"}
show all OSPF adjacencies            -> {"template_id": "all_ospf_adj"}
which devices have >1 IP link?       -> {"kind": "free_query"}

Contract-bound: the model only behaves under its training contract β€” TDT's router system prompt plus the Operator question: user framing with the device catalog. It is served OpenAI-compatible and consumed by TDT's nl_query pipeline, which validates every output (Tier-0 fail-closed validator) before execution.

Training (Oumi)

  • Fine-tuned with Oumi: oumi train QLoRA (4-bit NF4, r=16, alpha=32, all-linear), 2 epochs over 338 contract-true examples, Liger fused-CE kernel, paged 8-bit AdamW β€” fits an 8GB RTX 4060 Ti (peak 5.6GB). Full resolved config: oumi_training_config.yaml (stamped by Oumi at train time).
  • Final eval loss 0.0199, eval token accuracy 99.4%.

Evaluation

  • TDT frozen golden gate (promotion gate): PASSED 2026-07-06 β€” Tier-1 intent 100%, Tier-2 execution 100%, 0 fabricated IRIs, 0 write-form translations (floors: 90% / 75% / 0 / 0 over 14 golden cases).
  • Forgetting check (oumi evaluate, LM-Harness): MMLU college CS 5-shot β€” base 56.0%, base+adapter 56.0%. No general-capability degradation.

Versions

  • v1: initial contract-true router family (Tier-2 67% β€” free-query boundary).
  • v2: free-query rebalance, 3%β†’12% of data (Tier-1 83% β€” blast_radius/route_impact link-failure boundary).
  • v3 (this): + link-IRI blast_radius contrast family. All gate floors green.

Usage

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-3B-Instruct")
model = PeftModel.from_pretrained(base, "<this-repo>")
tok = AutoTokenizer.from_pretrained("<this-repo>")
# messages = [{"role": "system", "content": <router system prompt>},
#             {"role": "user", "content": "Operator question:\n..."}]

Trained and packaged for the OpenTDT project's local NLQ backend.

Downloads last month
18
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for irfanlateef/opentdt-nlq-coder3b-v3

Base model

Qwen/Qwen2.5-3B
Adapter
(68)
this model