metadata
library_name: transformers
tags:
- nli
- bert
- natural-language-inference
language:
- ru
metrics:
- accuracy
- f1
- precision
- recall
base_model:
- cointegrated/rubert-tiny2
pipeline_tag: text-classification
model-index:
- name: rubert-tiny-nli-terra-v0
results:
- task:
type: text-classification
name: Text Classification
dataset:
name: TERRA
type: NLI
split: validation
metrics:
- type: accuracy
value: 0.6677524429967426
name: Accuracy
- type: f1
value: 0.6666666666666666
name: F1
- type: precision
value: 0.6666666666666666
name: Precision
- type: recall
value: 0.6666666666666666
name: Recall
⚠️ Disclaimer: This model is in the early stages of development and may produce low-quality predictions. For better results, consider using the recommended Russian natural language inference models available here.
RuBERT-tiny-nli v0
This model is an initial attempt to fine-tune the RuBERT-tiny2 model for a two-way natural language inference task, utilizing the Russian Textual Entailment Recognition dataset. While it aims to enhance understanding of Russian text, its performance is currently limited.
Usage
How to run the model for NLI:
# !pip install transformers sentencepiece --quiet
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = 'Marwolaeth/rubert-tiny-nli-terra-v0'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
if torch.cuda.is_available():
model.cuda()
# An example from the base model card
premise1 = 'Сократ - человек, а все люди смертны.'
hypothesis1 = 'Сократ никогда не умрёт.'
with torch.inference_mode():
prediction = model(
**tokenizer(premise1, hypothesis1, return_tensors='pt').to(model.device)
)
p = torch.softmax(prediction.logits, -1).cpu().numpy()[0]
print({v: p[k] for k, v in model.config.id2label.items()})
# {'not_entailment': 0.7698182, 'entailment': 0.23018183}
# An example concerning sentiments
premise2 = 'Я ненавижу желтые занавески'
hypothesis2 = 'Мне нравятся желтые занавески'
with torch.inference_mode():
prediction = model(
**tokenizer(premise2, hypothesis2, return_tensors='pt').to(model.device)
)
p = torch.softmax(prediction.logits, -1).cpu().numpy()[0]
print({v: p[k] for k, v in model.config.id2label.items()})
# {'not_entailment': 0.60584205, 'entailment': 0.3941579}
Model Performance Metrics
The following metrics summarize the performance of the model on the test dataset:
Metric | Value |
---|---|
Validation Loss | 0.6261 |
Validation Accuracy | 66.78% |
Validation F1 Score | 66.67% |
Validation Precision | 66.67% |
Validation Recall | 66.67% |
Validation Runtime* | 0.7043 seconds |
Samples per Second* | 435.88 |
Steps per Second* | 14.20 |
*Using T4 GPU with Google Colab