moo100's picture
Update README.md
5b233c2 verified
---
library_name: transformers
tags: []
---
# Model Card
<!-- Provide a quick summary of what the model is/does. -->
### Model Description
<!-- Provide a longer summary of what this model is. -->
This is a fine-tuned version of **DeepSeek-R1-Distill-Llama-8B**, optimized for **telecom-related queries**. The model has been fine-tuned to provide **concise and factual answers**, ensuring that it **does role-play as a customer service agent**.
- **Developed by:** Mohamed Abdulaziz
- **Model type:** Fine-tune-DeepSeek-R1-Distill-Llama-8B
- **Framework Used:** Unsloth for fine tuning and wandb for performance monitoring
- **License:** MIT License
## Uses
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
This model is designed for **customer support automation in the telecom industry**. It assists in:
- Answering common user queries about **5G, network issues, billing, and services**.
- Providing **concise and factually correct responses**.
- Reducing **workload on human support agents** by handling routine inquiries.
### **Who can use this model?**
- **Telecom companies**: Automate customer service via chatbots.
- **Developers & researchers**: Fine-tune and adapt for different use cases.
- **Call centers**: Support agents in handling user requests efficiently.
### **Who might be affected?**
- **End-users** interacting with telecom chatbots.
- **Support agents** using AI-assisted tools.
- **Developers & data scientists** fine-tuning and deploying the model.
## How to Get Started with the Model
### **1️⃣ Import necessary libraries**
```python
import torch
from unsloth import FastLanguageModel
from transformers import AutoTokenizer
```
### **2️⃣ Define model path**
```python
model_path = "moo100/DeepSeek-R1-telecom-chatbot"
```
### **3️⃣ Load the model and tokenizer**
```python
model, tokenizer = FastLanguageModel.from_pretrained(
model_path,
max_seq_length=1024, # training length equal to 2048 but you can choose less than that to avoid OOM
dtype=None # Uses default precision
)
```
### **4️⃣ Optimize model for fast inference with Unsloth**
```python
model = FastLanguageModel.for_inference(model)
```
### **5️⃣ Move model to GPU if available, otherwise use CPU**
```python
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
```
### **6️⃣ Define system instruction to guide model responses**
```python
system_instruction = """You are an AI assistant. Answer user questions concisely and factually.
Do NOT role-play as a customer service agent. Only answer the user's query."""
```
### **7️⃣ Define user input (Replace with any query)**
```python
user_input = "What are the benefits of 5G?"
```
### **8️⃣ Construct full prompt with instructions and user query**
```python
full_prompt = f"{system_instruction}\n\nUser: {user_input}\nAssistant:"
```
### **9️⃣ Tokenize input prompt**
```python
inputs = tokenizer(full_prompt, return_tensors="pt").to(device)
```
### **🔟 Generate model response with controlled stopping criteria**
```python
outputs = model.generate(
input_ids=inputs.input_ids, # Encoded input tokens
attention_mask=inputs.attention_mask, # Mask for input length
max_new_tokens=100, # Limits response length
do_sample=True, # Enables randomness for variability
temperature=0.5, # Controls randomness level
top_k=50, # Samples from top 50 probable words
eos_token_id=tokenizer.eos_token_id, # Stops at end-of-sentence token
)
```
### **1️⃣1️⃣ Decode and extract only the newly generated response**
```python
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[-1]:], skip_special_tokens=True)
```
### **1️⃣2️⃣ Print the AI-generated response**
```python
print(response.split("\n")[0].strip())
```
## Training Details
### Training Data
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
talkmap/telecom-conversation-corpus
### Training Procedure
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
- **Loss Curve:** Shows a steady decline, indicating model convergence.
- **Learning Rate Schedule:** Linear decay applied.
- **Gradient Norm:** Slight increase, but under control.
- **Global Steps & Epochs:** Indicates training progress.
Below are the training metrics recorded during fine-tuning:
https://drive.google.com/file/d/1-SOfG8K3Qt2WSEuyj3kFhGYOYMB5Gk2r/view?usp=sharing
# Evaluation
## Methodology
The chatbot was evaluated using Meta-Llama-3.3-70B-Instruct, assessing relevance, correctness, and fluency of its responses.
## Results
Meta-Llama-3.3-70B-Instruct Evaluation:
Relevance: 9/10
The response is highly relevant to the user’s query about 5G benefits, providing a concise and informative summary.
Correctness: 10/10
The response is factually accurate, highlighting key advantages such as faster data speeds, lower latency, increased capacity, and broader device compatibility.
Fluency: 9/10
The response is well-structured, grammatically sound, and easy to understand. Minor refinements could further enhance readability.