Text Generation
Transformers
Safetensors
English
qwen2
telecom
ericsson
huawei
nokia
5g
lte
oran
ran
fine-tuned
qwen2.5
conversational
text-generation-inference
Instructions to use mindfossil/telecom-intelligence-model-v6-merged with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use mindfossil/telecom-intelligence-model-v6-merged with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="mindfossil/telecom-intelligence-model-v6-merged") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("mindfossil/telecom-intelligence-model-v6-merged") model = AutoModelForCausalLM.from_pretrained("mindfossil/telecom-intelligence-model-v6-merged", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use mindfossil/telecom-intelligence-model-v6-merged with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "mindfossil/telecom-intelligence-model-v6-merged" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mindfossil/telecom-intelligence-model-v6-merged", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/mindfossil/telecom-intelligence-model-v6-merged
- SGLang
How to use mindfossil/telecom-intelligence-model-v6-merged with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "mindfossil/telecom-intelligence-model-v6-merged" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mindfossil/telecom-intelligence-model-v6-merged", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "mindfossil/telecom-intelligence-model-v6-merged" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mindfossil/telecom-intelligence-model-v6-merged", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use mindfossil/telecom-intelligence-model-v6-merged with Docker Model Runner:
docker model run hf.co/mindfossil/telecom-intelligence-model-v6-merged
| license: apache-2.0 | |
| base_model: Qwen/Qwen2.5-7B-Instruct | |
| tags: | |
| - telecom | |
| - ericsson | |
| - huawei | |
| - nokia | |
| - 5g | |
| - lte | |
| - oran | |
| - ran | |
| - fine-tuned | |
| - qwen2.5 | |
| language: | |
| - en | |
| pipeline_tag: text-generation | |
| library_name: transformers | |
| # Telecom Intelligence — Qwen2.5-7B v6 | |
| A domain-fine-tuned LLM for telecom network operations, built on [Qwen/Qwen2.5-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) using QLoRA (4-bit) + SFT via [Unsloth](https://github.com/unslothai/unsloth). | |
| This is the **merged** (standalone) model — no adapter loading required. Compatible with vLLM, Transformers, and HuggingFace Inference Endpoints. | |
| --- | |
| ## What it does | |
| The model reasons step-by-step over telecom operational data to: | |
| - **Root cause analysis** — diagnose KPI degradations from PM counter data across Ericsson, Huawei, and Nokia RAN/Core nodes | |
| - **PRB utilisation** — compute DL/UL PRB utilisation % correctly using `pmPrbUsedDlSum / (pmPrbUsedDlSamp × totalPRBs) × 100` for all LTE bandwidths (6/15/25/50/75/100 PRBs) and 5G NR | |
| - **SON Energy Saving decisions** — evaluate ES cell switch-off against PRB, UE count, neighbour overlap, neighbour PRB, and NOC approval thresholds; always produces a binary ACTIVATE / DO NOT ACTIVATE decision | |
| - **Multi-vendor counter normalisation** — maps Ericsson (`pmRrcConnEstabSucc / pmRrcConnEstabAtt × 100`), Huawei (`L.RRC.ConnEstabSucc / L.RRC.ConnEstabAtt × 100`), and Nokia (`RRC_CONN_SETUP_SUCC_SUM / RRC_CONN_SETUP_ATT_SUM × 100`) counter names to equivalent KPI formulas | |
| - **Huawei MML** — outputs canonical Huawei MML commands using correct verbs: `BLK`/`UBL` (not BLOCK/UNBLOCK), `MOD` (not SET), `LST`, `DSP`, `RST`, `ACT`, `DEA` | |
| - **5G Core NF attribution** — names the exact failing Network Function (AMF, SMF, UPF, PCF, AUSF, UDM, NRF) and interface (N1, N2, N3, N4, N8, N11, etc.) rather than giving vague "core network" answers | |
| - **S1/EPC fault chains** — diagnoses S1 Setup failures (eNB↔MME, S1AP over SCTP port 36412), SGW path failures, MME overload cascades; correctly distinguished from 5G N2/NGAP (gNB↔AMF) | |
| - **LTE vs 5G generation boundary** — correctly identifies S1=LTE/EPC (eNB↔MME) vs N2=5G SA (gNB↔AMF) and never conflates them | |
| - **IMS / VoNR** — TAS→UDR latency diagnosis, correct SIP response codes (100/180/183/200/401/486/487/503/504), call drop RCA via session timer and UDR query timeout | |
| - **O-RAN** — fronthaul synchronisation failures (IEEE 1588v2 PTP), rApp/xApp policy collisions, Near-RT RIC / Non-RT RIC control loop conflicts | |
| - **5GC security** — GTP-U tunnel injection attacks, SEPP N32 JSON Patch integrity failures, uRPF bypass | |
| - **NTN LEO satellite** — 3GPP Rel-17 NTN HARQ feedback disable, timing advance pre-compensation, MSG3/MSG5 asymmetry diagnosis, Keplerian TA drift correction | |
| - **Cloud-native NF** — SR-IOV NUMA misalignment, DPDK RSS queue imbalance, Kubernetes pod CPU pinning faults | |
| - **PromQL** — writes energy efficiency and RAN KPI alert rules for Prometheus/O-RAN SMO | |
| --- | |
| ## Smart query routing (recommended) | |
| The model performs best when given a domain-specific system prompt. Use the `ask()` wrapper below — it automatically classifies the query and applies the right system prompt: | |
| ```python | |
| import torch | |
| SYSTEM_GENERAL = ( | |
| "You are a telecom network intelligence assistant. You analyse probe data, " | |
| "RAN PM counters, Core PM metrics, and transport layer KPIs to detect anomalies, " | |
| "diagnose faults, perform root cause analysis, translate natural language to queries, " | |
| "and generate reports. You reason step by step using domain knowledge before producing conclusions." | |
| ) | |
| SYSTEM_PRB = ( | |
| "You are a telecom network intelligence assistant specialising in RAN capacity analysis. " | |
| "LTE PRB counts by bandwidth (3GPP TS 36.101): 1.4 MHz=6, 3 MHz=15, 5 MHz=25, " | |
| "10 MHz=50, 15 MHz=75, 20 MHz=100. " | |
| "For 5G NR 20 MHz with 15 kHz SCS: 106 PRBs. For 5G NR 100 MHz with 30 kHz SCS: 132 PRBs. " | |
| "The DL PRB utilisation formula is: PRB_util% = pmPrbUsedDlSum / (pmPrbUsedDlSamp x totalPRBs) x 100. " | |
| "Always state totalPRBs from the bandwidth before calculating. " | |
| "For 20 MHz LTE, totalPRBs is 100 — not 96, not 66, not 110." | |
| ) | |
| SYSTEM_MML = ( | |
| "You are a Huawei MML expert. Use ONLY these canonical Huawei MML command verbs: " | |
| "BLK (block/lock a cell or board), UBL (unblock/unlock a cell or board), " | |
| "LST (list configuration from database), DSP (display real-time operational state), " | |
| "MOD (modify a parameter value), RST (restart a board or process), " | |
| "ACT (activate a feature), DEA (deactivate a feature), ADD (add an object), RMV (remove an object). " | |
| "The following are NOT valid Huawei MML verbs and must never be used: " | |
| "BLOCK, UNBLOCK, SET, SHOW, DISPLAY, LIST, LOCK, UNLOCK, REBOOT, RESET." | |
| ) | |
| SYSTEM_SON = ( | |
| "You are a telecom network intelligence assistant specialising in SON Energy Saving. " | |
| "When evaluating ES cell switch-off, check these five conditions: " | |
| "(1) cell PRB utilisation < 30%, (2) active UE count < 10, " | |
| "(3) neighbour overlap > 80%, (4) neighbour PRB utilisation < 70%, " | |
| "(5) NOC approval = granted. " | |
| "If ALL five conditions pass, your first word must be ACTIVATE. " | |
| "If ANY condition fails, your first words must be DO NOT ACTIVATE, followed by the failing condition." | |
| ) | |
| def _classify(question: str) -> str: | |
| q = question.lower() | |
| prb_keywords = ["prbuseddl", "prb util", "prb utiliz", "pmprb", "totalprbs", | |
| "dl prb", "ul prb", "mhz lte", "mhz nr", "bandwidth", "prb sum", "prb samp"] | |
| mml_keywords = ["mml", "blk", "ubl", "lst ", "dsp ", "mod ", "rst ", "huawei command", | |
| "block cell", "unblock cell", "lock cell", "unlock cell", | |
| "localcellid", "nrcellid", "brd:", "cell:", "enodebfunction"] | |
| son_keywords = ["energy sav", "es activation", "activate energy", "son es", | |
| "switch-off", "switch off", "cell sleep", "noc approv", | |
| "neighbor prb", "neighbour prb", "neighbor overlap", "neighbour overlap"] | |
| if any(k in q for k in prb_keywords): return "prb" | |
| if any(k in q for k in mml_keywords): return "mml" | |
| if any(k in q for k in son_keywords): return "son" | |
| return "general" | |
| def ask(question: str, system: str = None) -> str: | |
| if system is None: | |
| category = _classify(question) | |
| system_map = {"prb": SYSTEM_PRB, "mml": SYSTEM_MML, "son": SYSTEM_SON, "general": SYSTEM_GENERAL} | |
| system = system_map[category] | |
| messages = [{"role": "system", "content": system}, {"role": "user", "content": question}] | |
| 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, temperature=0.1, | |
| do_sample=True, repetition_penalty=1.1) | |
| return tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) | |
| ``` | |
| --- | |
| ## Loading the model | |
| ```python | |
| from unsloth import FastLanguageModel | |
| model, tokenizer = FastLanguageModel.from_pretrained( | |
| model_name="mindfossil/telecom-intelligence-model-v6-merged", | |
| max_seq_length=2048, | |
| load_in_4bit=True, | |
| ) | |
| FastLanguageModel.for_inference(model) | |
| ``` | |
| Or with standard Transformers (slower, no Unsloth optimisation): | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| import torch | |
| model_id = "mindfossil/telecom-intelligence-model-v6-merged" | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_id, | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| attn_implementation="eager" | |
| ) | |
| ``` | |
| --- | |
| ## Example queries | |
| ``` | |
| Cell: pmPrbUsedDlSum=57120, pmPrbUsedDlSamp=68, 20 MHz LTE. What is the DL PRB utilisation %? | |
| → 84% (formula: 57120 / (68 × 100) × 100; totalPRBs=100 for 20 MHz LTE) | |
| SON ES: cell PRB=19%, UEs=3, neighbour overlap=95%, neighbour PRB=52%, NOC approved. Activate? | |
| → ACTIVATE — all five thresholds pass | |
| Block cell LocalCellId=3 on Huawei eNodeB for maintenance, then restore. | |
| → BLK CELL: LocalCellId=3; / UBL CELL: LocalCellId=3; | |
| PDU session fails. AMF→SMF N11 healthy. SMF→UPF PFCP association times out. Which NF? | |
| → UPF is failing. Interface: N4 (SMF↔UPF). Check UPF process state and N4 connectivity. | |
| RRC Setup SR formula for Ericsson, Huawei, Nokia? | |
| → pmRrcConnEstabSucc/Att × 100 | L.RRC.ConnEstabSucc/Att × 100 | RRC_CONN_SETUP_SUCC_SUM/ATT_SUM × 100 | |
| S1 Setup SCTP up but no response — what to check? | |
| → S1 is eNB↔MME (LTE/EPC, port 36412). Check PLMN/TAC match, eNB IP whitelist on MME, S1AP cause code. | |
| VoLTE call drops 8s after 200 OK. TAS→UDR P99 = 4.2s. Root cause? | |
| → TAS session refresh timer expires waiting for UDR. Fix TAS→UDR latency below 500ms. | |
| NTN LEO: MSG3 success 98%, MSG5 failure 89%. Why? | |
| → Timing advance drift between MSG2 RAR and MSG5 transmission. Set ra-ContentionResolutionTimer ≥ 64ms, enable NTN TA pre-compensation. | |
| ``` | |
| --- | |
| ## Eval results (v6, 20-question domain eval) | |
| | Domain | Score | Notes | | |
| |--------|-------|-------| | |
| | PRB utilisation | 2/2 | totalPRBs correct for all bandwidths | | |
| | Huawei MML | 3/3 | BLK/UBL/DSP/RST/MOD/LST all canonical | | |
| | SON ES decisions | 3/3 | Binary ACTIVATE/DO NOT ACTIVATE, correct failing condition | | |
| | 5GC NF attribution | 2/2 | PFCP/UPF, N8/UDM correctly identified | | |
| | EPC/LTE RCA | 2/2 | MME overload, S1 setup (eNB↔MME) correct | | |
| | Multi-vendor RRC | 1/1 | ×100 multiplier correct, all three vendors | | |
| | IMS/VoNR | 1/1 | SIP codes correct, TAS→UDR root cause | | |
| | O-RAN / NTN / Cloud NF | 3/3 | PTP sync, NTN HARQ, NUMA analysis | | |
| | E-RAB formula | 1/1 | Counter structure and thresholds correct | | |
| | **Total** | **18/20** | AMOS CLI not in scope (skipped) | | |
| --- | |
| ## Training | |
| | Parameter | Value | | |
| |-----------|-------| | |
| | Base model | Qwen/Qwen2.5-7B-Instruct | | |
| | Method | QLoRA (4-bit NF4) + SFT via Unsloth + TRL SFTTrainer | | |
| | LoRA rank | 16 | | |
| | LoRA alpha | 32 | | |
| | Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj | | |
| | Training examples | 694 | | |
| | Epochs | 3 | | |
| | Max sequence length | 2048 | | |
| | Prompt format | ChatML (`<|im_start|>` / `<|im_end|>`) | | |
| **Training data coverage (694 examples across 45 batches):** | |
| - Ericsson LTE PM counter RCA (pmRrcConnEstab\*, pmErab\*, pmHo\*, pmPrb\*) | |
| - Ericsson 5G NR PM counters (pmNr\* series) | |
| - Huawei LTE L.\* counter RCA | |
| - Huawei 5G NR VS.\* counter RCA | |
| - Huawei MML canonical command syntax (BLK/UBL/LST/DSP/MOD/RST/ACT/DEA) | |
| - Nokia NetAct CLI and M8xxx counter RCA | |
| - Multi-vendor KPI normalisation (RRC SSR, E-RAB SSR, HO SSR) — all ×100 | |
| - CM configuration mismatch RCA | |
| - 5G Core: AMF, SMF, UPF, PCF, AUSF, UDM, NRF fault diagnosis | |
| - Network slicing and NWDAF anomaly detection | |
| - Probe/xDR passive monitoring | |
| - S1/EPC differential diagnosis (eNB↔MME, port 36412, S1AP) vs N2/5G (gNB↔AMF, NGAP) | |
| - SON Energy Saving binary decision evaluation | |
| - PRB utilisation formula (all LTE bandwidths + 5G NR) | |
| - IMS/VoNR: SIP call flows (100/180/183/200/401/486/487/503/504), TAS→UDR latency RCA | |
| - O-RAN WG4 Option 7.2x fronthaul synchronisation (PTP/IEEE 1588v2) | |
| - O-RAN RIC rApp/xApp policy collision resolution | |
| - 3GPP Rel-17 NTN LEO satellite: HARQ feedback disable, TA pre-compensation, MSG3/MSG5 asymmetry | |
| - 3GPP Rel-18 AI/ML RAN CSI model drift detection | |
| - 5GC security: GTP-U injection, SEPP N32, uRPF | |
| - Cloud-native NF: SR-IOV, DPDK, NUMA, Kubernetes CPU pinning | |
| - PromQL for Green RAN energy efficiency metrics | |
| --- | |
| ## Limitations | |
| - Trained on synthetic expert-authored examples, not live operator data exports | |
| - Counter names follow standard 3GPP/vendor documentation; site-specific customisations may differ | |
| - Max context 2048 tokens; very long counter dumps may need chunking | |
| - AMOS CLI (Ericsson MO-path syntax) is not a strength of this version — use vendor tooling for AMOS | |
| - Not a replacement for vendor tools (ENM, NetAct, U2000) — use for analysis assistance and NL→CLI translation | |
| - May occasionally output Chinese characters (Qwen base model bleed-through); add `"Always respond in English only."` to the system prompt if needed | |
| --- | |
| ## Version history | |
| | Version | Examples | Notes | | |
| |---------|----------|-------| | |
| | v1 | ~426 | Initial — Ericsson LTE, Huawei L.\*, multi-vendor normalisation | | |
| | v2 | 511 | Added 5GC, NWDAF, probes, Nokia, CM mismatch, 5G NR counters | | |
| | v3 | 606 | PRB formula, SON binary decisions, AMOS wildcards, 5GC NF attribution, MML canonicalisation | | |
| | v4 | 635 | PRB totalPRBs fix, SON logic, MML BLK/UBL, O-RAN, NTN, AI/ML RAN, 5GC security, IMS, cloud-native NF | | |
| | v5 | 680 | Heavy reinforcement on PRB/SON/MML; introduced smart system-prompt routing | | |
| | **v6** | **694** | RRC ×100 multiplier fix, S1 vs N2 generation boundary, IMS SIP codes, NTN TA drift; eval score 18/20 | | |