/ Модель

Характеристики

Контекст
514 токенов
Параметры
137 млн
Лицензия
Apache 2.0
Архитектура
mpnet · dense
Базовая модель
mpnet-base
Библиотека
sentence-transformers
Опубликована
5 июн 2024

mpnet-base-allnli

ЭмбеддингиТекст → embedding12 профессий

Англоязычная Sentence Transformers-модель на MPNet для получения эмбеддингов предложений и поиска семантически близких текстов.

121скачиваний за 30 дней0лайковвеса обновлены5 июн 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

tomaarsen/mpnet-base-allnli — модель Sentence Transformers, дообученная разработчиком tomaarsen на базе microsoft/mpnet-base. Она кодирует предложения и абзацы в плотные векторы размерности 768 и предназначена для сравнения смысловой близости текстов, семантического поиска и других задач, где нужно сопоставлять тексты по значению. Модель использует архитектуру MPNet с усреднением токенных представлений и нормализацией выходного вектора; для оценки сходства в карточке рекомендуется скалярное произведение. Контекст модели составляет до 384 токенов по README и до 514 токенов по метаданным.

Сценарии применения

  • поиск документов по смыслу запроса
  • сравнение семантической близости предложений
  • поиск перефразирований
  • кластеризация текстов по смыслу
  • извлечение признаков для классификации текстов

Ограничения

Модель обучена на англоязычных наборах данных и рассчитана на входные последовательности до 384 токенов согласно README; длинные тексты могут обрезаться. Она выдаёт векторы для сравнения, а не готовые развернутые ответы.

Для каких профессий подходит12

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

SentenceTransformer based on microsoft/mpnet-base

This is a sentence-transformers model finetuned from microsoft/mpnet-base on the multi_nli, snli and stsb datasets. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: microsoft/mpnet-base
  • Maximum Sequence Length: 384 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Dot Product
  • Training Datasets:
  • Language: en
  • License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 384, 'do_lower_case': False}) with Transformer model: MPNetModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
  (2): Normalize()
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("tomaarsen/mpnet-base-allnli")
# Run inference
sentences = [
    "Rouen is the ancient center of Normandy's thriving textile industry, and the place of Joan of Arc's martyrdom ' a national symbol of resistance to tyranny.",
    'Joan of Arc sacrificed her life at Rouen, which became an enduring symbol of opposition to tyranny.',
    'The islands are part of France now instead of just colonies.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Evaluation

Metrics

Semantic Similarity

MetricValue
pearson_cosine0.8344
spearman_cosine0.8295
pearson_manhattan0.8317
spearman_manhattan0.8332
pearson_euclidean0.8273
spearman_euclidean0.8295
pearson_dot0.8344
spearman_dot0.8295
pearson_max0.8344
spearman_max0.8332

Semantic Similarity

MetricValue
pearson_cosine0.7776
spearman_cosine0.7643
pearson_manhattan0.7788
spearman_manhattan0.7659
pearson_euclidean0.7763
spearman_euclidean0.7643
pearson_dot0.7776
spearman_dot0.7643
pearson_max0.7788
spearman_max0.7659

Training Details

Training Datasets

multi_nli

  • Dataset: multi_nli at da70db2
  • Size: 392,702 training samples
  • Columns: premise, hypothesis, and label
  • Approximate statistics based on the first 1000 samples:
    premisehypothesislabel
    typestringstringint
    detailsmin: 4 tokensmean: 26.95 tokensmax: 189 tokensmin: 5 tokensmean: 14.11 tokensmax: 49 tokens0: ~34.30%1: ~28.20%2: ~37.50%
  • Samples:
    premisehypothesislabel
    Conceptually cream skimming has two basic dimensions - product and geography.Product and geography are what make cream skimming work. 1
    you know during the season and i guess at at your level uh you lose them to the next level if if they decide to recall the the parent team the Braves decide to call to recall a guy from triple A then a double A guy goes up to replace him and a single A guy goes up to replace himYou lose the things to the following level if the people recall.0
    One of our number will carry out your instructions minutely.A member of my team will execute your orders with immense precision.0
  • Loss: SoftmaxLoss

snli

  • Dataset: snli at cdb5c3d
  • Size: 549,367 training samples
  • Columns: snli_premise, hypothesis, and label
  • Approximate statistics based on the first 1000 samples:
    snli_premisehypothesislabel
    typestringstringint
    detailsmin: 6 tokensmean: 17.38 tokensmax: 52 tokensmin: 4 tokensmean: 10.7 tokensmax: 31 tokens0: ~33.40%1: ~33.30%2: ~33.30%
  • Samples:
    snli_premisehypothesislabel
    A person on a horse jumps over a broken down airplane.A person is training his horse for a competition.1
    A person on a horse jumps over a broken down airplane.A person is at a diner, ordering an omelette.2
    A person on a horse jumps over a broken down airplane.A person is outdoors, on a horse.0
  • Loss: SoftmaxLoss

stsb

  • Dataset: stsb at 8913289
  • Size: 5,749 training samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 1000 samples:
    sentence1sentence2label
    typestringstringfloat
    detailsmin: 6 tokensmean: 10.0 tokensmax: 28 tokensmin: 5 tokensmean: 9.95 tokensmax: 25 tokensmin: 0.0mean: 0.54max: 1.0
  • Samples:
    sentence1sentence2label
    A plane is taking off.An air plane is taking off.1.0
    A man is playing a large flute.A man is playing a flute.0.76
    A man is spreading shreded cheese on a pizza.A man is spreading shredded cheese on an uncooked pizza.0.76
  • Loss: CosineSimilarityLoss with these parameters:
    {
        "loss_fct": "torch.nn.modules.loss.MSELoss"
    }
    

Evaluation Datasets

multi_nli

  • Dataset: multi_nli at da70db2
  • Size: 100 evaluation samples
  • Columns: premise, hypothesis, and label
  • Approximate statistics based on the first 1000 samples:
    premisehypothesislabel
    typestringstringint
    detailsmin: 5 tokensmean: 27.67 tokensmax: 138 tokensmin: 6 tokensmean: 13.48 tokensmax: 27 tokens0: ~35.00%1: ~31.00%2: ~34.00%
  • Samples:
    premisehypothesislabel
    The new rights are nice enoughEveryone really likes the newest benefits 1
    This site includes a list of all award winners and a searchable database of Government Executive articles.The Government Executive articles housed on the website are not able to be searched.2
    uh i don't know i i have mixed emotions about him uh sometimes i like him but at the same times i love to see somebody beat himI like him for the most part, but would still enjoy seeing someone beat him.0
  • Loss: SoftmaxLoss

snli

  • Dataset: snli at cdb5c3d
  • Size: 9,842 evaluation samples
  • Columns: snli_premise, hypothesis, and label
  • Approximate statistics based on the first 1000 samples:
    snli_premisehypothesislabel
    typestringstringint
    detailsmin: 6 tokensmean: 18.44 tokensmax: 57 tokensmin: 5 tokensmean: 10.57 tokensmax: 25 tokens0: ~33.10%1: ~33.30%2: ~33.60%
  • Samples:
    snli_premisehypothesislabel
    Two women are embracing while holding to go packages.The sisters are hugging goodbye while holding to go packages after just eating lunch.1
    Two women are embracing while holding to go packages.Two woman are holding packages.0
    Two women are embracing while holding to go packages.The men are fighting outside a deli.2
  • Loss: SoftmaxLoss

stsb

  • Dataset: stsb at 8913289
  • Size: 1,500 evaluation samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 1000 samples:
    sentence1sentence2label
    typestringstringfloat
    detailsmin: 5 tokensmean: 15.1 tokensmax: 45 tokensmin: 6 tokensmean: 15.11 tokensmax: 53 tokensmin: 0.0mean: 0.47max: 1.0
  • Samples:
    sentence1sentence2label
    A man with a hard hat is dancing.A man wearing a hard hat is dancing.1.0
    A young child is riding a horse.A child is riding a horse.0.95
    A man is feeding a mouse to a snake.The man is feeding a mouse to the snake.1.0
  • Loss: CosineSimilarityLoss with these parameters:
    {
        "loss_fct": "torch.nn.modules.loss.MSELoss"
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 64
  • per_device_eval_batch_size: 64
  • learning_rate: 2e-05
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • seed: 33
  • bf16: True
  • load_best_model_at_end: True
  • push_to_hub: True
  • hub_model_id: tomaarsen/mpnet-base-allnli
  • hub_private_repo: True
  • multi_dataset_batch_sampler: round_robin

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 64
  • per_device_eval_batch_size: 64
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 1
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 33
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: True
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: True
  • resume_from_checkpoint: None
  • hub_model_id: tomaarsen/mpnet-base-allnli
  • hub_strategy: every_save
  • hub_private_repo: True
  • hub_always_push: False
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • dispatch_batches: None
  • split_batches: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: round_robin

Training Logs

EpochStepTraining Lossmulti nli losssnli lossstsb losssts-dev_spearman_dotsts-test_spearman_cosine
0.0370100.8347-----
0.0741200.8269-----
0.1111300.70361.09781.09840.08300.6636-
0.1481400.7889-----
0.1852500.7948-----
0.2222600.6881.09761.09610.06790.7124-
0.2593700.7911-----
0.2963800.7847-----
0.3333900.68011.09501.09420.05220.7810-
0.37041000.7837-----
0.40741100.7803-----
0.44441200.67561.09781.09290.04410.8157-
0.48151300.7829-----
0.51851400.7789-----
0.55561500.67561.09541.09110.04330.8215-
0.59261600.7802-----
0.62961700.7751-----
0.66671800.66791.09341.08850.04010.8235-
0.70371900.7755-----
0.74072000.775-----
0.77782100.66941.09191.08590.03770.8295-
0.81482200.7733-----
0.85192300.772-----
0.88892400.66561.08911.08380.03650.8292-
0.92592500.7726-----
0.96302600.7731-----
1.02700.66741.08881.08330.03720.82950.7643
  • The bold row denotes the saved checkpoint.

Environmental Impact

Carbon emissions were measured using CodeCarbon.

  • Energy Consumed: 0.018 kWh
  • Carbon Emitted: 0.007 kg of CO2
  • Hours Used: 0.068 hours

Training Hardware

  • On Cloud: No
  • GPU Model: 1 x NVIDIA GeForce RTX 3090
  • CPU Model: 13th Gen Intel(R) Core(TM) i7-13700K
  • RAM Size: 31.78 GB

Framework Versions

  • Python: 3.11.6
  • Sentence Transformers: 3.1.0.dev0
  • Transformers: 4.41.2
  • PyTorch: 2.3.0+cu121
  • Accelerate: 0.30.1
  • Datasets: 2.19.1
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers and SoftmaxLoss

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
MPNetModel
Ревизия весов
9102dbb

0 моделей