|
|
--- |
|
|
language: en |
|
|
license: apache-2.0 |
|
|
tags: |
|
|
- text-classification |
|
|
- question-classification |
|
|
- LoRA |
|
|
- quantization |
|
|
datasets: |
|
|
- squad |
|
|
- glue |
|
|
model_name: question-classification-lora-quant |
|
|
base_model: google/gemma-2b-it |
|
|
widget: |
|
|
- text: "What is the capital of France?" |
|
|
- text: "This is a beautiful day." |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
- precision |
|
|
- recall |
|
|
--- |
|
|
|
|
|
# Model Card: Question Classification using LoRA with Quantization |
|
|
|
|
|
## Model Overview |
|
|
|
|
|
This model is a fine-tuned version of [google/gemma-2b-it](https://huggingface.co/google/gemma-2b-it) designed to classify text into two categories: **QUESTION** or **NOT_QUESTION**. It was fine-tuned on a custom dataset that combines the **SQuAD** dataset (containing questions) and the **GLUE SST-2** dataset (containing general non-question sentences). |
|
|
|
|
|
### Model Architecture |
|
|
|
|
|
- Base Model: `google/gemma-2b-it` |
|
|
- Fine-tuning Method: LoRA (Low-Rank Adaptation) with k-bit quantization (4-bit quantization with NF4). |
|
|
- Configurations: |
|
|
- Quantization: 4-bit quantization using `BitsAndBytesConfig` |
|
|
- Adapter (LoRA) settings: |
|
|
- Rank: 64 |
|
|
- LoRA Alpha: 32 |
|
|
- Dropout: 0.05 |
|
|
- Target Modules: `q_proj`, `k_proj`, `v_proj`, `o_proj` |
|
|
|
|
|
## Dataset |
|
|
|
|
|
The model was trained using a combination of two datasets: |
|
|
- **SQuAD v1.1** (Question dataset) |
|
|
- **GLUE SST-2** (Non-question dataset) |
|
|
|
|
|
Each dataset was preprocessed to contain a label: |
|
|
- **QUESTION**: For SQuAD questions |
|
|
- **NOT_QUESTION**: For non-question sentences from GLUE SST-2. |
|
|
|
|
|
### Data Preprocessing |
|
|
- A random removal probability (`P_remove = 0.3`) was applied to remove some of the questions containing a question mark (`?`), to increase the model's robustness. |
|
|
- Both datasets were balanced with an equal number of samples (`N=100` for training and testing). |
|
|
|
|
|
## Model Performance |
|
|
|
|
|
- **Metrics Evaluated**: |
|
|
- Accuracy |
|
|
- F1 Score |
|
|
- Precision |
|
|
- Recall |
|
|
- These metrics were computed on a balanced test dataset containing both question and non-question examples. |
|
|
|
|
|
## How to Use |
|
|
|
|
|
You can use this model to classify whether a given text is a question or not. Here’s how you can use it: |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained("your_model_name") |
|
|
model = AutoModelForSequenceClassification.from_pretrained("your_model_name") |
|
|
|
|
|
inputs = tokenizer("What is the capital of France?", return_tensors="pt") |
|
|
outputs = model(**inputs) |
|
|
predictions = torch.argmax(outputs.logits, axis=1) |
|
|
|
|
|
label = "QUESTION" if predictions == 1 else "NOT_QUESTION" |
|
|
print(f"Predicted Label: {label}") |
|
|
``` |
|
|
|
|
|
## Limitations |
|
|
|
|
|
- The model was trained on English data only, so it may not perform well on non-English languages. |
|
|
- Since it is fine-tuned on specific datasets (SQuAD and GLUE SST-2), performance may vary with out-of-domain data. |
|
|
- The model assumes well-formed input sentences, so performance may degrade with informal or very short text. |
|
|
|
|
|
## Intended Use |
|
|
|
|
|
This model is intended for text classification tasks where distinguishing between questions and non-questions is needed. Potential use cases include: |
|
|
- Improving chatbot or virtual assistant interactions. |
|
|
- Enhancing query detection for search engines. |
|
|
|
|
|
## License |
|
|
|
|
|
This model follows the same license as [google/gemma-2b-it](https://huggingface.co/google/gemma-2b-it). Please refer to the original license for any usage restrictions. |
|
|
|