|
--- |
|
language: |
|
- en |
|
license: mit |
|
base_model: prajjwal1/bert-tiny |
|
tags: |
|
- pytorch |
|
- movie-review-sentiment |
|
- BertForSequenceClassification |
|
- generated_from_trainer |
|
metrics: |
|
- accuracy |
|
- matthews_correlation |
|
model-index: |
|
- name: tiny-imdb |
|
results: |
|
- task: |
|
type: text-classification |
|
metrics: |
|
- type: accuracy |
|
value: 0.8944 |
|
name: accuracy |
|
- type: accuracy |
|
value: 0.7888 |
|
name: matthews_correlation |
|
datasets: |
|
- imdb |
|
library_name: transformers |
|
pipeline_tag: text-classification |
|
--- |
|
|
|
<!-- This model card has been generated automatically according to the information the Trainer had access to. You |
|
should probably proofread and complete it, then remove this comment. --> |
|
|
|
# bert-tiny-imdb |
|
|
|
This model is a fine-tuned version of [prajjwal1/bert-tiny](https://huggingface.co/prajjwal1/bert-tiny) on the imdb dataset. |
|
It achieves the following results on the evaluation set: |
|
- Loss: 0.2775 |
|
- Accuracy: 0.8944 |
|
- Matthews Correlation: 0.7888 |
|
|
|
## Model description |
|
|
|
This is the smallest version of BERT model suggested by Google in this [GitHub Repo](https://github.com/google-research/bert), this model contains 2 transformer layers and an a hidden layer output length of 128, ie __(L=2, H=128)__. There are a total 4.39 million paramteres in the model. |
|
|
|
## Intended uses & limitations |
|
|
|
This model should be used for text classification tasks specifically on movie reviews or other such text data. Also you can use this model for other downstream tasks like: |
|
|
|
- Sentiment Analysis |
|
- Named Entity Recognition or Token Classification |
|
|
|
This model should not be used for any tasks other than the above mentioned or any language other than English. |
|
|
|
### How to use the Model |
|
|
|
__Pytorch Model__ |
|
|
|
```python |
|
from transformers import pipeline |
|
|
|
# load pipeline |
|
tiny_bert = pipeline("text-classification", "arnabdhar/tinybert-imdb") |
|
|
|
# perform inference |
|
results = pipeline(input_text, truncation=True, max_length=128) |
|
``` |
|
|
|
__ONNX Model__ |
|
|
|
```python |
|
from transformers import AutoTokenizer, pipeline |
|
from optimum.onnxruntime import ORTModelForSequenceClassification |
|
|
|
# load tokenizer & model |
|
model_name = "arnabdhar/tinybert-imdb" |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
onnx_model = ORTModelForSequenceClassification.from_pretrained(model_name) |
|
|
|
# build pipeline |
|
tiny_bert_onnx = pipeline( |
|
task = "text-classification", |
|
tokenizer = tokenizer, |
|
model = onnx_model |
|
) |
|
|
|
# perform inference |
|
results = tiny_bert_onnx(input_text, truncation=True, max_length=128) |
|
``` |
|
|
|
## Training |
|
|
|
The model was finetuned on Google Colab using the NVIDIA V100 GPU and was trained for 9 epochs, it took around 12 minutes to finish finetuning. |
|
|
|
This model has been trained on the [imdb](https://huggingface.co/datasets/imdb) dataset which has 25,000 data text data for each training set and testing set, but I have combined both the partitions and then split the dataset in 80:20 ratio and used it for finetuning. This approach gave me a larger dataset to finetune the model. |
|
|
|
|
|
### Training hyperparameters |
|
|
|
The following hyperparameters were used during training: |
|
- learning_rate: 5e-05 |
|
- train_batch_size: 32 |
|
- eval_batch_size: 320 |
|
- seed: 42 |
|
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08 |
|
- lr_scheduler_type: cosine |
|
- lr_scheduler_warmup_ratio: 0.1 |
|
- num_epochs: 9 |
|
|
|
### Training results |
|
|
|
| Training Loss | Epoch | Step | Validation Loss | Accuracy | Matthews Correlation | |
|
|:-------------:|:-----:|:-----:|:---------------:|:--------:|:--------------------:| |
|
| 0.4927 | 1.0 | 1250 | 0.3557 | 0.8484 | 0.7016 | |
|
| 0.298 | 2.0 | 2500 | 0.2874 | 0.8866 | 0.7732 | |
|
| 0.2555 | 3.0 | 3750 | 0.2799 | 0.8912 | 0.7828 | |
|
| 0.2132 | 4.0 | 5000 | 0.2775 | 0.8944 | 0.7888 | |
|
| 0.1779 | 5.0 | 6250 | 0.3065 | 0.891 | 0.7835 | |
|
| 0.1508 | 6.0 | 7500 | 0.3331 | 0.889 | 0.7811 | |
|
| 0.1304 | 7.0 | 8750 | 0.3451 | 0.8926 | 0.7870 | |
|
| 0.119 | 8.0 | 10000 | 0.3670 | 0.8915 | 0.7852 | |
|
| 0.1118 | 9.0 | 11250 | 0.3655 | 0.891 | 0.7840 | |
|
|
|
|
|
### Framework versions |
|
|
|
- Transformers 4.35.2 |
|
- Pytorch 2.1.0+cu118 |
|
- Datasets 2.15.0 |
|
- Tokenizers 0.15.0 |