| | --- |
| | 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 |