ChetanFernandis's picture
Update README.md
fea1fe1 verified
---
library_name: transformers
tags:
- text-classification
- sentiment-analysis
- lora
- peft
- distilbert
- imdb
---
# Model Card for distilbert_cls-lora-IMDB
## Model Details
### Model Description
This model is a **LoRA-adapted DistilBERT model** fine-tuned for **binary sentiment classification** (POSITIVE / NEGATIVE) on the **IMDB movie reviews dataset**.
Instead of fine-tuning all parameters, **Low-Rank Adaptation (LoRA)** was applied to the attention projection layers, enabling efficient training with a small number of trainable parameters while preserving the original pretrained weights.
⚠️ **Note:** This repository contains **LoRA adapter weights only**, not a fully merged model.
- **Developed by:** Chetan Fernandis
- **Model type:** Transformer encoder (DistilBERT) + LoRA adapters
- **Task:** Sentiment Classification (Binary)
- **Language(s):** English
- **License:** Apache-2.0
- **Finetuned from:** `distilbert-base-uncased`
---
## Model Sources
- **Base Model:** https://huggingface.co/distilbert-base-uncased
- **Dataset:** https://huggingface.co/datasets/imdb
- **Repository:** https://huggingface.co/ChetanFernandis/distilbert_cls-lora-IMDB
## Evaluation Results
The model was evaluated on a held-out validation subset of the **IMDB dataset** using standard classification metrics.
### Confusion Matrix
- **NEGATIVE → NEGATIVE:** 42
- **NEGATIVE → POSITIVE:** 11
- **POSITIVE → NEGATIVE:** 7
- **POSITIVE → POSITIVE:** 40
This indicates balanced performance across both sentiment classes.
### Classification Report
![image](https://cdn-uploads.huggingface.co/production/uploads/6864251ed4dde09fbaabf6cf/sFiCggbBtFF9zYZeAJ1Wo.png)
### Summary
- **Overall Accuracy:** 82%
- **Balanced F1-score:** 0.82 for both classes
- Strong precision for **NEGATIVE** reviews
- Strong recall for **POSITIVE** reviews
These results demonstrate that **LoRA fine-tuning** achieves competitive sentiment classification performance while training only a small fraction of model parameters.
![image](https://cdn-uploads.huggingface.co/production/uploads/6864251ed4dde09fbaabf6cf/1lZVhPe2w0Y61MGhGBPMU.png)
## Uses
### Direct Use
This model can be used for **sentiment analysis** on English text, classifying input sentences or paragraphs as:
- `POSITIVE`
- `NEGATIVE`
Example use cases:
- Movie review analysis
- User feedback classification
- Opinion mining
---
### Out-of-Scope Use
- Not suitable for multilingual sentiment analysis
- Not intended for fine-grained sentiment (e.g., star ratings)
- Not designed for long documents beyond 512 tokens
---
## Bias, Risks, and Limitations
- The model inherits biases from the **IMDB dataset** and the **DistilBERT pretraining corpus**
- Performance may degrade on:
- Informal language
- Sarcasm
- Domain-specific jargon
- Predictions should not be used for high-stakes decisions without human review
---
## How to Get Started with the Model
⚠️ This is a **LoRA adapter**, so it must be loaded on top of the base model.
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from peft import PeftModel
# Load base model
base_model = AutoModelForSequenceClassification.from_pretrained(
"distilbert-base-uncased",
num_labels=2
)
# Load LoRA adapter
model = PeftModel.from_pretrained(
base_model,
"ChetanFernandis/distilbert_cls-lora-IMDB"
)
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(
"ChetanFernandis/distilbert_cls-lora-IMDB"
)
# Inference
text = "This movie was absolutely fantastic!"
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
outputs = model(**inputs)
prediction = outputs.logits.argmax(dim=-1).item()
label_map = {0: "NEGATIVE", 1: "POSITIVE"}
print(label_map[prediction])
---
## Training Details
Training Data
Dataset: IMDB Movie Reviews
Samples: 200 training / 100 test
train_ds = imdb_dataset['train'].shuffle(seed=42).select(range(200))
val_ds = imdb_dataset['test'].shuffle(seed=42).select(range(100))
Labels: Binary (Positive / Negative)
Training Procedure
Preprocessing
a. Text tokenized using AutoTokenizer
b.Truncation applied to max sequence length
c. Padding applied dynamically per batch
Training Hyperparameters:-
a. Training regime: FP32 (full precision)
b. Batch size: 8
c. Gradient accumulation: 4
d. Epochs: 20
e. Optimizer: AdamW
f. LoRA rank (r): 4
g. LoRA alpha: 8
h. LoRA dropout: 0.1
i. Target modules: q_lin, k_lin, v_lin
Speeds, Sizes, Times:-
a. Trainable parameters: ~700K
b. Total parameters: ~67M
c. Trainable %: ~1%
d. Checkpoint size: ~3–4 MB (adapter only)
Evaluation:-
Metrics
a. Accuracy
b. Loss (Cross-Entropy)
Results:-
The LoRA-adapted model achieves competitive sentiment classification performance compared to full fine-tuning, while significantly reducing memory usage and training cost.
Technical Specifications
Model Architecture
a. Base architecture: DistilBERT (6 layers, 12 heads)
b. Hidden size: 768
c.LoRA injected into: Attention Q, K, V projections
d. Classification head: 2-class linear classifier
Compute Infrastructure
a. Hardware
b. CPU-based training (no GPU required)
Software
a.transformers
b.peft
c. torch
d.datasets
Citation
If you use this model, please cite the base model and dataset:
@misc{sanh2019distilbert,
title={DistilBERT, a distilled version of BERT},
author={Sanh, Victor and others},
year={2019},
archivePrefix={arXiv},
primaryClass={cs.CL}
}