pyteach237's picture
completed models card
6186909 verified
metadata
license: apache-2.0
library_name: peft
tags:
  - generated_from_trainer
base_model: distilbert-base-multilingual-cased
metrics:
  - accuracy
  - f1
  - precision
  - recall
model-index:
  - name: multilabel_lora_distilbert_runews_classifier_tuned
    results: []
datasets:
  - pyteach237/news_classify
language:
  - ru
  - fr
  - en

# Model Card: DistilBERT with LoRA for Text Classification

Model Details

Model Name: DistilBERT with LoRA for Text Classification
Model Type: Transformer-based Language Model
Base Model: distilbert-base-multilingual-cased
Fine-tuning Framework: LoRA (Low-Rank Adaptation of Large Language Models)
Trained By: ABODO Brice Donald
License: Apache 2.0

This model is a fine-tuned version of distilbert-base-multilingual-cased on the None dataset. It achieves the following results on the evaluation set:

  • Loss: 1.0019
  • Accuracy: 0.8276
  • F1: 0.8284
  • Precision: 0.8317
  • Recall: 0.8276

Model description

This model is a fine-tuned version of distilbert-base-multilingual-cased for text classification tasks. The model has been adapted using LoRA (Low-Rank Adaptation) to efficiently train on the target dataset with fewer parameters, allowing for better performance with less computational resources.

Intended uses & limitations

The model was trained and evaluated on the Russian Language news dataset, which consists of news texts labeled as positive, negative or neutral. The dataset is divided into training and test sets for evaluation purposes.

Intended Use

This model is intended for text classification tasks, particularly multilabel sentiment analysis. It can be fine-tuned further for other classification tasks by using appropriate datasets and modifying the number of labels.

Limitations and Risks

  • Bias: The model may inherit biases present in the training data.
  • Generalization: Performance may vary on datasets with different distributions from the training data.
  • Resource Usage: Although more efficient than larger models, fine-tuning and inference still require significant computational resources.

Training and evaluation data

The model was evaluated using the following metrics:

  • Accuracy: Measures the fraction of correct predictions.
  • F1 Score: Harmonic mean of precision and recall.
  • Precision: Proportion of positive identifications that are actually correct.
  • Recall: Proportion of actual positives that are correctly identified.

Training procedure

Preprocessing

  • Tokenization: The text data was tokenized using the DistilBertTokenizer with a maximum length of 512 tokens.
  • Padding and Truncation: Applied to ensure uniform input size.

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 0.0009143508688456378
  • train_batch_size: 32
  • eval_batch_size: 32
  • seed: 42
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • num_epochs: 7

Training results

Training Loss Epoch Step Validation Loss Accuracy F1 Precision Recall
No log 1.0 91 0.5987 0.7634 0.7621 0.7648 0.7634
No log 2.0 182 0.3768 0.8693 0.8698 0.8767 0.8693
No log 3.0 273 0.2620 0.9065 0.9063 0.9093 0.9065
No log 4.0 364 0.2427 0.9202 0.9203 0.9220 0.9202
No log 5.0 455 0.2244 0.9367 0.9369 0.9387 0.9367
0.3641 6.0 546 0.2385 0.9491 0.9491 0.9495 0.9491
0.3641 7.0 637 0.2560 0.9464 0.9464 0.9465 0.9464

How to Use

from transformers import DistilBertTokenizer, DistilBertForSequenceClassification, Trainer, TrainingArguments
from peft import PeftConfig, PeftModel

# Load the tokenizer and model
tokenizer = DistilBertTokenizer.from_pretrained('distilbert-base-multilingual-cased')
model_id = 'pyteach237/multilabel_lora_distilbert_runews_classifier_tuned'
config = PeftConfig.from_pretrained(model_id)

# Define the model with LoRA
model = DistilBertForSequenceClassification.from_pretrained(
    config.base_model_name_or_path,
    num_labels=3
)
model = PeftModel.from_pretrained(model, model_id, config=config)

text = "Your text here :)"

# Tokenize input
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding='max_length', max_length=512)

# Make predictions
outputs = model(**inputs)
predictions = outputs.logits.argmax(dim=-1)

# Convert predictions to labels
labels = ['negative', 'neutral', 'positive']
predicted_label = labels[predictions.item()]
print(f'Predicted label: {predicted_label}')

Acknowledgements

This model card template was inspired by the Hugging Face model cards. Special thanks to the contributors of the Hugging Face transformers library and the LoRA adaptation framework.

Contact Information

For further information, please contact [Brice Donald] at [b.donald.riced@protonmail.com].

Framework versions

  • PEFT 0.11.1
  • Transformers 4.41.2
  • Pytorch 2.1.2
  • Datasets 2.19.2
  • Tokenizers 0.19.1