sentence-transformers safetensors bert text-classification natural-language-inference transformers nlp model-card en license:mit region:us
---
language: en
license: mit
tags:
- natural-language-inference
- sentence-transformers
- transformers
- nlp
- model-card
---

# NoInstruct-small-Embedding-v0-nli

- **Base Model:** [avsolatorio/NoInstruct-small-Embedding-v0](https://huggingface.co/avsolatorio/NoInstruct-small-Embedding-v0)
- **Task:** Natural Language Inference (NLI)
- **Framework:** Hugging Face Transformers, Sentence Transformers

NoInstruct-small-Embedding-v0-nli is a fine-tuned NLI model that classifies the relationship between pairs of sentences into three categories: entailment, neutral, and contradiction. It enhances the capabilities of [avsolatorio/NoInstruct-small-Embedding-v0](https://huggingface.co/avsolatorio/NoInstruct-small-Embedding-v0) for improved performance on NLI tasks.

## Intended Use
NoInstruct-small-Embedding-v0-nli is ideal for applications requiring understanding of logical relationships between sentences, including:

- Semantic textual similarity
- Question answering
- Dialogue systems
- Content moderation

## Performance
NoInstruct-small-Embedding-v0-nli was trained on the [sentence-transformers/all-nli](https://huggingface.co/datasets/sentence-transformers/all-nli) dataset, achieving competitive results in sentence pair classification.

Performance on the MNLI matched validation set:
- Accuracy: 0.7687
- Precision: 0.77
- Recall: 0.77
- F1-score: 0.77

## Training details

<details>
<summary><strong>Training Details</strong></summary>

- **Dataset:** 
  - Used [sentence-transformers/all-nli](https://huggingface.co/datasets/sentence-transformers/all-nli).
  
- **Sampling:**
  - 100 000 training samples and 10 000 evaluation samples.

- **Fine-tuning Process:**
  - Custom Python script with adaptive precision training (bfloat16).
  - Early stopping based on evaluation loss.

- **Hyperparameters:**
  - **Learning Rate:** 2e-5
  - **Batch Size:** 64
  - **Optimizer:** AdamW (weight decay: 0.01)
  - **Training Duration:** Up to 10 epochs

</details>

<details>
<summary><strong>Reproducibility</strong></summary>

To ensure reproducibility:
- Fixed random seed: 42
- Environment:
  - Python: 3.10.12
  - PyTorch: 2.5.1
  - Transformers: 4.44.2

</details>

## Usage Instructions

## Using Sentence Transformers
```python
from sentence_transformers import CrossEncoder

model_name = "agentlans/NoInstruct-small-Embedding-v0-nli"
model = CrossEncoder(model_name)
scores = model.predict(
    [
        ("A man is eating pizza", "A man eats something"),
        (
            "A black race car starts up in front of a crowd of people.",
            "A man is driving down a lonely road.",
        ),
    ]
)

label_mapping = ["entailment", "neutral", "contradiction"]
labels = [label_mapping[score_max] for score_max in scores.argmax(axis=1)]
print(labels)
```

## Using Transformers Library
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_name = "agentlans/NoInstruct-small-Embedding-v0-nli"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

features = tokenizer(
    [
        "A man is eating pizza",
        "A black race car starts up in front of a crowd of people.",
    ],
    ["A man eats something", "A man is driving down a lonely road."],
    padding=True,
    truncation=True,
    return_tensors="pt",
)

model.eval()
with torch.no_grad():
    scores = model(**features).logits
    label_mapping = ["entailment", "neutral", "contradiction"]
    labels = [label_mapping[score_max] for score_max in scores.argmax(dim=1)]
    print(labels)
```

## Limitations and Ethical Considerations
NoInstruct-small-Embedding-v0-nli may reflect biases present in the training data. Users should evaluate its performance in specific contexts to ensure fairness and accuracy.

## Conclusion
NoInstruct-small-Embedding-v0-nli offers a robust solution for NLI tasks, enhancing [avsolatorio/NoInstruct-small-Embedding-v0](https://huggingface.co/avsolatorio/NoInstruct-small-Embedding-v0)'s capabilities with straightforward integration into existing frameworks. It aids developers in building intelligent applications that require nuanced language understanding.


