/ Модель

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

Контекст
514 токенов
Параметры
95,2 млн
Архитектура
roberta · dense
Базовая модель
distilroberta-base
Библиотека
sentence-transformers
Опубликована
25 апр 2024

distilroberta-base-nli-adaptive-layer

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

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

124скачиваний за 30 дней0лайковвеса обновлены25 апр 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это англоязычная модель Sentence Transformers на базе distilbert/distilroberta-base, дообученная разработчиком tomaarsen на наборе sentence-transformers/all-nli. Модель кодирует предложения и абзацы в плотные векторы размерностью 768; для сравнения векторов используется косинусное сходство. Архитектура включает RoBERTa-трансформер с усреднением токенных представлений, а параметры хранятся в формате safetensors. Размер модели — 95,2 млн параметров, максимальная длина последовательности — 512 токенов.

Модель предназначена для оценки семантического сходства, семантического поиска, поиска перефразировок, кластеризации и классификации текста на основе эмбеддингов. В карточке приведены результаты оценки сходства на STS-dev и STS-test. Она принимает текст и выдаёт векторы, поэтому для поиска и классификации обычно требуется отдельный индекс или классификатор. Лицензия в предоставленных данных не указана.

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

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

Ограничения

Модель рассчитана на английский язык и ограничена последовательностями длиной до 512 токенов. Для классификации и поиска по большим коллекциям нужны дополнительные компоненты, например классификатор или векторный индекс.

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

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

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

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

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

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

Открыть на Hugging Face

SentenceTransformer based on distilbert/distilroberta-base

This is a sentence-transformers model finetuned from distilbert/distilroberta-base on the sentence-transformers/all-nli dataset. 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 Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: RobertaModel 
  (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})
)

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/distilroberta-base-nli-adaptive-layer")
# Run inference
sentences = [
    'Introduction',
    'Analytical Perspectives.',
    'A man reads the paper.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

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

Evaluation

Metrics

Semantic Similarity

MetricValue
pearson_cosine0.8456
spearman_cosine0.8486
pearson_manhattan0.8475
spearman_manhattan0.8506
pearson_euclidean0.8495
spearman_euclidean0.8527
pearson_dot0.7867
spearman_dot0.7816
pearson_max0.8495
spearman_max0.8527

Semantic Similarity

MetricValue
pearson_cosine0.8183
spearman_cosine0.8148
pearson_manhattan0.8132
spearman_manhattan0.8088
pearson_euclidean0.8148
spearman_euclidean0.8105
pearson_dot0.75
spearman_dot0.735
pearson_max0.8183
spearman_max0.8148

Training Details

Training Dataset

sentence-transformers/all-nli

  • Dataset: sentence-transformers/all-nli at e587f0c
  • Size: 557,850 training samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 1000 samples:
    anchorpositivenegative
    typestringstringstring
    detailsmin: 7 tokensmean: 10.38 tokensmax: 45 tokensmin: 6 tokensmean: 12.8 tokensmax: 39 tokensmin: 6 tokensmean: 13.4 tokensmax: 50 tokens
  • Samples:
    anchorpositivenegative
    A person on a horse jumps over a broken down airplane.A person is outdoors, on a horse.A person is at a diner, ordering an omelette.
    Children smiling and waving at cameraThere are children presentThe kids are frowning
    A boy is jumping on skateboard in the middle of a red bridge.The boy does a skateboarding trick.The boy skates down the sidewalk.
  • Loss: AdaptiveLayerLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "n_layers_per_step": 1,
        "last_layer_weight": 1.0,
        "prior_layers_weight": 1.0,
        "kl_div_weight": 1.0,
        "kl_temperature": 0.3
    }
    

Evaluation Dataset

sentence-transformers/all-nli

  • Dataset: sentence-transformers/all-nli at e587f0c
  • Size: 6,584 evaluation samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 1000 samples:
    anchorpositivenegative
    typestringstringstring
    detailsmin: 6 tokensmean: 18.02 tokensmax: 66 tokensmin: 5 tokensmean: 9.81 tokensmax: 29 tokensmin: 5 tokensmean: 10.37 tokensmax: 29 tokens
  • Samples:
    anchorpositivenegative
    Two women are embracing while holding to go packages.Two woman are holding packages.The men are fighting outside a deli.
    Two young children in blue jerseys, one with the number 9 and one with the number 2 are standing on wooden steps in a bathroom and washing their hands in a sink.Two kids in numbered jerseys wash their hands.Two kids in jackets walk to school.
    A man selling donuts to a customer during a world exhibition event held in the city of AngelesA man selling donuts to a customer.A woman drinks her coffee in a small cafe.
  • Loss: AdaptiveLayerLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "n_layers_per_step": 1,
        "last_layer_weight": 1.0,
        "prior_layers_weight": 1.0,
        "kl_div_weight": 1.0,
        "kl_temperature": 0.3
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 128
  • per_device_eval_batch_size: 128
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • fp16: True
  • batch_sampler: no_duplicates

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: False
  • per_device_train_batch_size: 128
  • per_device_eval_batch_size: 128
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • learning_rate: 5e-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
  • 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: None
  • 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_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional

Training Logs

EpochStepTraining Losslosssts-dev_spearman_cosinests-test_spearman_cosine
0.02291007.05173.93780.7889-
0.04592004.48773.81050.7906-
0.06883004.03153.64010.7966-
0.09184003.8223.35370.7883-
0.11475003.06082.59750.7973-
0.13766002.63042.39560.7943-
0.16067002.77232.03790.8009-
0.18358002.35561.96450.7984-
0.20659002.49981.90860.8017-
0.229410002.18341.84000.7973-
0.252411002.27931.58310.8102-
0.275312002.10421.64850.8004-
0.298213002.13651.70840.8013-
0.321214002.00961.55200.8064-
0.344115002.04921.49170.8084-
0.367116001.87641.54470.8018-
0.390017001.86111.54800.8046-
0.412918001.9721.53530.8075-
0.435919001.80621.46330.8039-
0.458820001.85651.42130.8027-
0.481821001.88521.38600.8002-
0.504722001.79391.54680.7910-
0.527623001.73981.60410.7888-
0.550624001.85351.57910.7949-
0.573525001.84861.48710.7951-
0.596526001.73791.54270.8019-
0.619427001.73251.45850.8087-
0.642328001.76641.52640.7965-
0.665329001.75171.63440.7930-
0.688230001.83291.49470.8008-
0.711231001.72061.49170.8089-
0.734132001.71381.41850.8065-
0.757133001.37051.20400.8446-
0.780034001.12891.13630.8447-
0.802935001.01741.10490.8464-
0.825936001.01881.03620.8466-
0.848837000.98411.13910.8470-
0.871838000.84661.01160.8485-
0.894739000.92681.13230.8488-
0.917640000.86861.02960.8495-
0.940641000.92551.17370.8484-
0.963542000.79911.06090.8486-
0.986543000.84310.99760.8486-
1.04359---0.8148

Environmental Impact

Carbon emissions were measured using CodeCarbon.

  • Energy Consumed: 0.244 kWh
  • Carbon Emitted: 0.095 kg of CO2
  • Hours Used: 0.849 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.0.0.dev0
  • Transformers: 4.41.0.dev0
  • PyTorch: 2.3.0+cu121
  • Accelerate: 0.26.1
  • Datasets: 2.18.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",
}

AdaptiveLayerLoss

@misc{li20242d,
    title={2D Matryoshka Sentence Embeddings}, 
    author={Xianming Li and Zongxi Li and Jing Li and Haoran Xie and Qing Li},
    year={2024},
    eprint={2402.14776},
    archivePrefix={arXiv},
    primaryClass={cs.CL}
}

MultipleNegativesRankingLoss

@misc{henderson2017efficient,
    title={Efficient Natural Language Response Suggestion for Smart Reply}, 
    author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
    year={2017},
    eprint={1705.00652},
    archivePrefix={arXiv},
    primaryClass={cs.CL}
}

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
RobertaModel
Ревизия весов
6d3a6f0

0 моделей