--- license: apache-2.0 base_model: - Qwen/Qwen3-8B datasets: - nraptisss/TMF921-intent-to-config-research-sota library_name: peft tags: - peft - qlora - trl - sft - qwen3 - telecom - tmf921 - 3gpp - etsi-zsm - o-ran - camara - network-slicing - intent-based-networking - json-generation - research-baseline pipeline_tag: text-generation --- # Qwen3-8B TMF921 Intent-to-Configuration QLoRA Adapter This is the primary stage-1 QLoRA adapter for multi-standard telecom intent-to-configuration translation. Base model: - [`Qwen/Qwen3-8B`](https://huggingface.co/Qwen/Qwen3-8B) Training dataset: - [`nraptisss/TMF921-intent-to-config-research-sota`](https://huggingface.co/datasets/nraptisss/TMF921-intent-to-config-research-sota) Training/evaluation repository: - [`nraptisss/tmf921-intent-training`](https://huggingface.co/nraptisss/tmf921-intent-training) ## Intended task The model translates natural-language 5G/6G telecom/network-slicing intents into structured JSON configuration-like outputs across target families including: - TMF921 intent objects, - 3GPP intent-style objects, - ETSI ZSM intent-style objects, - CAMARA network-slice booking-style objects, - O-RAN A1 policy-style objects, - O1 NRM-style objects, - TMF921 lifecycle operations, - adversarial/rejection responses. This is a **research baseline**, not a production-certified network-management system. ## Training recipe | Item | Value | |---|---| | Base model | `Qwen/Qwen3-8B` | | Method | QLoRA SFT | | Quantization | 4-bit NF4 + double quantization | | LoRA target modules | `all-linear` | | LoRA rank | 64 | | LoRA alpha | 16 | | LoRA dropout | 0.05 | | Max length | 2048 | | Loss | assistant-only SFT loss | | Training split | `train_sota` | | Learning rate | 2e-4 | | Scheduler | constant | | Optimizer | paged AdamW 32-bit | | Hardware | NVIDIA RTX 6000 Ada 48/50GB | | Framework | TRL `SFTTrainer` + PEFT | The dataset was audited with the Qwen3 chat template; all source rows fit within 2048 tokens. ## Main evaluation results Stage-1 raw metrics: | Split | JSON parse | Exact match | Field F1 | KPI presence | |---|---:|---:|---:|---:| | `test_in_distribution` | 1.0000 | 0.0227 | 0.6868 | 0.7973 | | `test_template_ood` | 1.0000 | 0.0014 | 0.6790 | 0.8062 | | `test_use_case_ood` | 0.9998 | 0.0122 | 0.6825 | 0.7883 | | `test_sector_ood` | 1.0000 | 0.0166 | 0.6610 | 0.7733 | | `test_adversarial` | 1.0000 | 0.9697 | 0.9697 | 1.0000 | Stage-1 normalized metrics: | Split | JSON parse | Normalized field F1 | Normalized key F1 | Normalized exact | |---|---:|---:|---:|---:| | `test_in_distribution` | 1.0000 | 0.7956 | 0.9811 | 0.0351 | | `test_template_ood` | 1.0000 | 0.7865 | 0.9801 | 0.0177 | | `test_use_case_ood` | 0.9998 | 0.7907 | 0.9805 | 0.0253 | | `test_sector_ood` | 1.0000 | 0.7697 | 0.9818 | 0.0293 | | `test_adversarial` | 1.0000 | 0.9697 | 1.0000 | 0.9697 | Normalization removes volatile/generated fields such as IDs, hrefs, timestamps, schema links, descriptions, and generated identifiers before computing field/key metrics. ## Layer-level findings Strong layers: - `tmf921`: normalized field F1 around 0.93–0.94. - `camara`: normalized field F1 around 0.81–0.87. - `intent_3gpp`: normalized field F1 around 0.80–0.82. - `etsi_zsm`: normalized field F1 around 0.75–0.79. Weak layers: - `o1_nrm`: normalized field F1 around 0.39–0.40. - `a1_policy`: normalized field F1 around 0.67–0.68. - `tmf921_lifecycle_report`: normalized field F1 around 0.15–0.18. - `tmf921_lifecycle_monitor`: normalized field F1 around 0.39–0.52. A stage-2 weak-layer continuation experiment was performed but is **not promoted** because it did not materially improve O1/A1 and slightly reduced adversarial robustness. Stage 1 remains the primary model. ## Usage ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel import torch base = "Qwen/Qwen3-8B" adapter = "nraptisss/Qwen3-8B-TMF921-Intent-QLoRA-qwen3-8b-qlora-20260501-083834" tokenizer = AutoTokenizer.from_pretrained(adapter, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True) model = PeftModel.from_pretrained(model, adapter) model.eval() messages = [ {"role": "system", "content": "You are a telecom intent-to-configuration assistant. Return valid JSON only."}, {"role": "user", "content": "Create a URLLC slice for remote robotic surgery in Hospital Campus with 1 ms latency, 99.9999% reliability, 100 Mbps downlink, 50 Mbps uplink, and 20 UEs."}, ] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(text, return_tensors="pt").to(model.device) with torch.no_grad(): out = model.generate(**inputs, max_new_tokens=1536, do_sample=False) print(tokenizer.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)) ``` ## Limitations - This model is trained on synthetic research data, not real operator logs. - It is not certified against official TMF921/3GPP/ETSI/CAMARA/O-RAN schemas. - It should not be used to deploy real network configurations without expert review and validators. - O1 NRM and A1 policy value fidelity remain open challenges. - Raw exact match is low because many outputs contain volatile/generated fields. - Normalized metrics are a research proxy, not proof of production standards compliance. ## Recommended citation ```bibtex @model{raptis_qwen3_tmf921_qlora_2026, title = {Qwen3-8B TMF921 Intent-to-Configuration QLoRA Adapter}, author = {Raptis, Nikolaos}, year = {2026}, publisher = {Hugging Face}, url = {https://huggingface.co/nraptisss/Qwen3-8B-TMF921-Intent-QLoRA-qwen3-8b-qlora-20260501-083834} } ``` ## Related resources - Dataset: https://huggingface.co/datasets/nraptisss/TMF921-intent-to-config-research-sota - Training/evaluation repo: https://huggingface.co/nraptisss/tmf921-intent-training - Results: https://huggingface.co/nraptisss/tmf921-intent-training/tree/main/results - Qualitative examples: https://huggingface.co/nraptisss/tmf921-intent-training/tree/main/analysis