Armenian-Text-Embeddings-1

Model Details

  • Model Name: Armenian-Text-Embeddings-1
  • Model Type: Text Embeddings for Armenian Language
  • Base Model: intfloat/multilingual-e5-base
  • Version: 1.0.0
  • License: Apache 2.0
  • Last Updated: November 2024
  • Model Architecture: Transformer-based embeddings model
  • Input: Armenian text
  • Output: Dense vector embeddings

Quick Start

import torch.nn.functional as F

from torch import Tensor
from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained('Metric-AI/armenian-text-embeddings-1')
model = AutoModel.from_pretrained('Metric-AI/armenian-text-embeddings-1')


def average_pool(last_hidden_states: Tensor,
                 attention_mask: Tensor) -> Tensor:
    last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]


# Each input text should start with "query: " or "passage: ", even for non-English texts.
# For tasks other than retrieval, you can simply use the "query: " prefix.
input_texts = [
    'query: Ինչպե՞ս պատրաստել տոլմա',  # How to make tolma
    'query: Քանի՞ գրամ սպիտակուց է հարկավոր օրական',  # How many grams of protein needed daily
    
    """passage: Տոլմայի բաղադրատոմս՝
    Բաղադրիչներ՝
    - 500գ աղացած միս
    - 1 բաժակ բրինձ
    - Խաղողի տերևներ
    - 2 գլուխ սոխ
    - Համեմունքներ՝ աղ, սև պղպեղ, քարի
    
    Պատրաստման եղանակը՝
    1. Միսը խառնել բրնձի, մանր կտրատած սոխի և համեմունքների հետ
    2. Խաղողի տերևները լվանալ և թողնել տաք ջրի մեջ 10 րոպե
    3. Լցոնել տերևները և դասավորել կաթսայի մեջ
    4. Եփել դանդաղ կրակի վրա 45-60 րոպե""",  # Detailed tolma recipe
    
    """passage: Սպիտակուցի օրական չափաբաժինը կախված է մարդու քաշից, սեռից և ֆիզիկական ակտիվությունից: 
    Միջին հաշվով, կանանց համար խորհուրդ է տրվում 46-50 գրամ սպիտակուց օրական: 
    Մարզիկների համար այս թիվը կարող է հասնել մինչև 1.6-2 գրամ մարմնի քաշի յուրաքանչյուր կիլոգրամի համար: 
    Հղիների համար պահանջվում է լրացուցիչ 25 գրամ սպիտակուց:
    
    Սպիտակուցի հարուստ աղբյուրներ են՝
    - Հավի միս (31գ/100գ)
    - Ձու (13գ/100գ)
    - Ոսպ (25գ/100գ)
    - Մածուն (3.5գ/100գ)"""] # Detailed protein intake advice

# Tokenize the input texts
batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])

# normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())

# [[83.96063232421875, 30.283924102783203], [32.504661560058594, 82.4246826171875]]

Support for Sentence Transformers

Below is an example for usage with sentence_transformers.

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('Metric-AI/armenian-text-embeddings-1')

embeddings = model.encode(input_texts, normalize_embeddings=True)

Intended Use

Primary Intended Uses

  • Retrieval-augmented generation (RAG)
  • Semantic search in Armenian
  • Document similarity computation
  • Cross-lingual text understanding
  • Text classification tasks
  • Information retrieval

Training Data

Dataset Details

  • Source: Reddit dataset with English-Armenian translations
  • Size: 1.08M pairs of rows
  • Content Type: Title and body text pairs
  • Token Statistics:
    • Training Set:
      • Translated Title Tokens: 23,921,393
      • Translated Body Tokens: 194,200,654
    • Test Set:
      • Translated Title Tokens: 242,443
      • Translated Body Tokens: 1,946,164
  • Split Ratio: 99% train, 1% test

Training Procedure

Training Details

  • Weight Averaging:
    • Base model (multilingual-e5-base): 0.6 weight
    • Fine-tuned model: 0.4 weight
  • Training Duration: 2 days
  • Hardware: 4 x NVIDIA A100 40GB GPUs
  • Training Parameters:
    • Epochs: 5
    • Batch Size: 256 per GPU, (256*4 in total)
    • Learning Rate: 5e-5
    • Weight Decay: 0.01
    • Warmup Steps: 1000
    • Maximum Sequence Length: 128 tokens
    • FP16 Training: Enabled
    • Gradient Clipping: 1.0

Optimization Configuration

  • Framework: DeepSpeed Stage 2
  • Optimizer: AdamW with auto weight decay
  • Mixed Precision: FP16 with dynamic loss scaling
  • ZeRO Optimization: Stage 2 with:
    • Allgather partitions
    • Overlap communications
    • Contiguous gradients
  • Additional Features:
    • Gradient checkpointing
    • Tensor parallelism (size: 2)

Performance and Limitations

Capabilities

  • Effective for semantic similarity tasks in Armenian
  • Suitable for document classification and clustering

Limitations

  • Performance may vary on domain-specific terminology
  • May not capture Armenian-specific cultural contexts effectively
  • Limited by the quality of training data translations

Known Biases

  • May exhibit biases present in Reddit content

Environmental Impact

  • Training Hardware: 4 x NVIDIA A100 40GB
  • Training Duration: 48 hours
  • Estimated Energy Consumption: 384 kWh (estimated based on A100 power consumption)

Ethical Considerations

  • Data Privacy: Training data from public Reddit content
  • Potential Misuse: Could be misused for content manipulation or spam
  • Bias: May perpetuate social biases present in Reddit content
  • Recommendations:
    • Monitor system outputs for harmful content
    • Implement content filtering for production use
    • Regular bias assessment recommended

Technical Specifications

  • Model Size: ~278M parameters (based on e5-base)
  • Embedding Dimension: 384
  • Max Sequence Length: 128 tokens
  • Framework Compatibility:
    • PyTorch
    • Hugging Face Transformers
    • DeepSpeed

Citation

@misc{armenian-text-embeddings-1,
  author = {Spartak Bughdaryan, Zaruhi Navasardyan, Bagrat Minasyan, Hrant Davtyan},
  title = {Armenian-Text-Embeddings-1: Enhanced Armenian Language Embeddings},
  year = {2024},
  howpublished = {\url{https://metric.am/blog/announcing-armenian-text-embeddings/}}
}

Additional Information

Base Model References

Acknowledgments

  • intfloat for the original multilingual-e5-base model
  • Reddit community for the source content
  • DeepSpeed team for optimization toolkit

Version History

  • 1.0.0 (November 2024): Initial release
Downloads last month
2,414
Safetensors
Model size
278M params
Tensor type
F32
·
Inference Providers NEW
This model is not currently available via any of the supported third-party Inference Providers, and the model is not deployed on the HF Inference API.

Model tree for Metric-AI/armenian-text-embeddings-1

Finetuned
(40)
this model