/ Модель

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

Контекст
512 токенов
Параметры
124 млн
Архитектура
bert · dense
Базовая модель
paraphrase-multilingual-MiniLM-L12-v2
Библиотека
sentence-transformers
Опубликована
26 авг 2024

paraphrase-multilingual-MiniLM-L12-v2_QuoraDuplicateDetection_FINETUNED

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

Модель SentenceTransformer находит семантически похожие предложения и возможные дубликаты, преобразуя текст в 384-мерные векторы.

108скачиваний за 30 дней0лайковвеса обновлены26 авг 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модель SentenceTransformer, дообученная автором репозитория на наборе sentence-transformers/quora-duplicates для сравнения пар предложений. Она использует архитектуру BERT и преобразует текст в плотные векторы размерности 384; сходство векторов можно оценивать косинусной мерой. Модель подходит для поиска семантически близких формулировок, обнаружения перефразирований и дубликатов, кластеризации и классификации текста.

В карточке указана поддержка английского языка. Базовая многоязычная модель рассчитана на контекст до 512 токенов, однако README этой версии задаёт максимальную длину последовательности 128 токенов. Модель содержит 124,3 млн параметров и распространяется в формате Safetensors. Лицензия в предоставленных данных не указана.

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

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

Ограничения

README указывает максимальную длину последовательности 128 токенов, тогда как метаданные базовой модели приводят контекст 512 токенов. Дообучение выполнено на английских парах вопросов Quora, поэтому качество на других языках и за пределами этого сценария не подтверждено предоставленными данными.

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

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

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

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

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

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

Открыть на Hugging Face

SentenceTransformer based on sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

This is a sentence-transformers model finetuned from sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 on the sentence-transformers/quora-duplicates dataset. It maps sentences & paragraphs to a 384-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 Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 128, 'do_lower_case': False}) with Transformer model: BertModel 
  (1): Pooling({'word_embedding_dimension': 384, '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})
)

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("DashReza7/paraphrase-multilingual-MiniLM-L12-v2_QuoraDuplicateDetection_FINETUNED")
# Run inference
sentences = [
    'Why do complementary angles have to be adjacent?',
    'Can two adjacent angles be complementary?',
    'How can I get rid of my bad habits?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]

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

Evaluation

Metrics

Binary Classification

MetricValue
cosine_accuracy0.8684
cosine_accuracy_threshold0.7981
cosine_f10.8292
cosine_f1_threshold0.7599
cosine_precision0.7747
cosine_recall0.8921
cosine_ap0.8822
dot_accuracy0.836
dot_accuracy_threshold17.1121
dot_f10.7914
dot_f1_threshold16.0833
dot_precision0.7294
dot_recall0.865
dot_ap0.8439
manhattan_accuracy0.8568
manhattan_accuracy_threshold46.9431
manhattan_f10.8144
manhattan_f1_threshold50.5148
manhattan_precision0.7656
manhattan_recall0.8698
manhattan_ap0.8636
euclidean_accuracy0.8569
euclidean_accuracy_threshold3.0017
euclidean_f10.8143
euclidean_f1_threshold3.2429
euclidean_precision0.7652
euclidean_recall0.8701
euclidean_ap0.8638
max_accuracy0.8684
max_accuracy_threshold46.9431
max_f10.8292
max_f1_threshold50.5148
max_precision0.7747
max_recall0.8921
max_ap0.8822

Training Details

Training Dataset

sentence-transformers/quora-duplicates

  • Dataset: sentence-transformers/quora-duplicates at 451a485
  • Size: 323,432 training samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 1000 samples:
    sentence1sentence2label
    typestringstringint
    detailsmin: 6 tokensmean: 16.39 tokensmax: 80 tokensmin: 4 tokensmean: 16.2 tokensmax: 71 tokens0: ~62.10%1: ~37.90%
  • Samples:
    sentence1sentence2label
    Which are the best compilers for C language (for Windows 10)?Which is the best open source C/C++ compiler for Windows?0
    How much does YouTube pay per 1000 views in India?How much does youtube pay per 1000 views?0
    What parts do I need to build my own PC?I want to build a new computer. What parts do I need?1
  • Loss: OnlineContrastiveLoss

Evaluation Dataset

sentence-transformers/quora-duplicates

  • Dataset: sentence-transformers/quora-duplicates at 451a485
  • Size: 80,858 evaluation samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 1000 samples:
    sentence1sentence2label
    typestringstringint
    detailsmin: 6 tokensmean: 16.48 tokensmax: 79 tokensmin: 6 tokensmean: 16.76 tokensmax: 101 tokens0: ~63.90%1: ~36.10%
  • Samples:
    sentence1sentence2label
    How many stories got busted on Quora while being anonymous?Can what I say on Quora anonymously be used against me legally?0
    What are innovative mechanical component designs?What is the Innovation design?0
    What is the best way to learn phrasal verbs?Why should I learn phrasal verbs?1
  • Loss: OnlineContrastiveLoss

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 256
  • per_device_eval_batch_size: 256
  • learning_rate: 2e-05
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • fp16: True

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 256
  • per_device_eval_batch_size: 256
  • 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: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: True
  • 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: False
  • 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: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: False
  • 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
  • eval_on_start: False
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional

Training Logs

EpochStepTraining Losslossmax_ap
0.0791100-8.06070.8164
0.1582200-7.30120.8445
0.2373300-6.96260.8582
0.3165400-6.79010.8639
0.39565007.52296.64980.8694
0.4747600-6.53150.8736
0.5538700-6.46860.8766
0.6329800-6.40270.8787
0.7120900-6.31080.8797
0.791110006.46366.28620.8812
0.87031100-6.24490.8818
0.94941200-6.23440.8822

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 3.0.1
  • Transformers: 4.42.4
  • PyTorch: 2.3.1+cu121
  • Accelerate: 0.32.1
  • Datasets: 2.21.0
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers

@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…

Класс архитектуры
BertModel
Ревизия весов
df0a677

0 моделей