/ Модель

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

Контекст
512 токенов
Параметры
137 млн
Лицензия
Apache 2.0
Архитектура
bert · dense
Базовая модель
bge-base-en-v1.5
Библиотека
sentence-transformers
Опубликована
23 авг 2024

fine-tuned-matryoshka-100

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

Англоязычная BERT-модель создаёт текстовые эмбеддинги с гибкой размерностью для семантического поиска и сравнения предложений.

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

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

joshuapb/fine-tuned-matryoshka-100 — англоязычная модель Sentence Transformers, дообученная автором на основе BAAI/bge-base-en-v1.5 с использованием MatryoshkaLoss и MultipleNegativesRankingLoss. Она кодирует предложения и абзацы в плотные эмбеддинги для семантического поиска, сравнения текстов, поиска перефразировок, кластеризации и классификации текста. Архитектура основана на BERT: модель использует CLS-пулинг и нормализацию, создаёт векторы размерностью 768, а сходство можно оценивать косинусной мерой.

Обучение Matryoshka позволяет использовать укороченные эмбеддинги размерностью 512, 256, 128 или 64; максимальная длина входа — 512 токенов. Модель содержит 136,7 млн параметров и распространяется по лицензии Apache-2.0.

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

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

Ограничения

Модель рассчитана на английский язык и ограничена входами длиной до 512 токенов. По приведённым в README результатам точность поиска снижается при уменьшении размерности эмбеддинга, особенно до 64 измерений.

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

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

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

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

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

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

Открыть на Hugging Face

BGE base Financial Matryoshka

This is a sentence-transformers model finetuned from BAAI/bge-base-en-v1.5. 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: BAAI/bge-base-en-v1.5
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Cosine Similarity
  • Language: en
  • License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': True}) with Transformer model: BertModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, '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("joshuapb/fine-tuned-matryoshka-100")
# Run inference
sentences = [
    'Fine-tuning New Knowledge#\nFine-tuning a pre-trained LLM via supervised fine-tuning and RLHF is a common technique for improving certain capabilities of the model like instruction following. Introducing new knowledge at the fine-tuning stage is hard to avoid.\nFine-tuning usually consumes much less compute, making it debatable whether the model can reliably learn new knowledge via small-scale fine-tuning. Gekhman et al. 2024 studied the research question of whether fine-tuning LLMs on new knowledge encourages hallucinations. They found that (1) LLMs learn fine-tuning examples with new knowledge slower than other examples with knowledge consistent with the pre-existing knowledge of the model; (2) Once the examples with new knowledge are eventually learned, they increase the model’s tendency to hallucinate.',
    'How do the results presented by Gekhman et al. in their 2024 study inform our understanding of the reliability metrics associated with large language models (LLMs) when subjected to fine-tuning with novel datasets?',
    'What is the relationship between the calibration of AI models and the effectiveness of verbalized probabilities when applied to tasks of varying difficulty levels?',
]
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

Information Retrieval

MetricValue
cosine_accuracy@10.8281
cosine_accuracy@30.9635
cosine_accuracy@50.974
cosine_accuracy@100.9948
cosine_precision@10.8281
cosine_precision@30.3212
cosine_precision@50.1948
cosine_precision@100.0995
cosine_recall@10.8281
cosine_recall@30.9635
cosine_recall@50.974
cosine_recall@100.9948
cosine_ndcg@100.922
cosine_mrr@100.8977
cosine_map@1000.8981

Information Retrieval

MetricValue
cosine_accuracy@10.8021
cosine_accuracy@30.9635
cosine_accuracy@50.974
cosine_accuracy@100.9896
cosine_precision@10.8021
cosine_precision@30.3212
cosine_precision@50.1948
cosine_precision@100.099
cosine_recall@10.8021
cosine_recall@30.9635
cosine_recall@50.974
cosine_recall@100.9896
cosine_ndcg@100.9077
cosine_mrr@100.8802
cosine_map@1000.881

Information Retrieval

MetricValue
cosine_accuracy@10.7969
cosine_accuracy@30.9583
cosine_accuracy@50.9688
cosine_accuracy@100.9792
cosine_precision@10.7969
cosine_precision@30.3194
cosine_precision@50.1937
cosine_precision@100.0979
cosine_recall@10.7969
cosine_recall@30.9583
cosine_recall@50.9688
cosine_recall@100.9792
cosine_ndcg@100.9011
cosine_mrr@100.8746
cosine_map@1000.8758

Information Retrieval

MetricValue
cosine_accuracy@10.7865
cosine_accuracy@30.9323
cosine_accuracy@50.9635
cosine_accuracy@100.9635
cosine_precision@10.7865
cosine_precision@30.3108
cosine_precision@50.1927
cosine_precision@100.0964
cosine_recall@10.7865
cosine_recall@30.9323
cosine_recall@50.9635
cosine_recall@100.9635
cosine_ndcg@100.8881
cosine_mrr@100.8623
cosine_map@1000.8647

Information Retrieval

MetricValue
cosine_accuracy@10.6875
cosine_accuracy@30.8646
cosine_accuracy@50.9271
cosine_accuracy@100.9688
cosine_precision@10.6875
cosine_precision@30.2882
cosine_precision@50.1854
cosine_precision@100.0969
cosine_recall@10.6875
cosine_recall@30.8646
cosine_recall@50.9271
cosine_recall@100.9688
cosine_ndcg@100.8336
cosine_mrr@100.7896
cosine_map@1000.7918

Training Details

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_eval_batch_size: 16
  • learning_rate: 2e-05
  • num_train_epochs: 5
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • load_best_model_at_end: True

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 8
  • per_device_eval_batch_size: 16
  • 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: 5
  • max_steps: -1
  • lr_scheduler_type: cosine
  • 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: 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: 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 Lossdim_128_cosine_map@100dim_256_cosine_map@100dim_512_cosine_map@100dim_64_cosine_map@100dim_768_cosine_map@100
0.384655.0472-----
0.7692104.0023-----
1.013-0.79390.81350.82820.72070.8323
1.1538152.3381-----
1.5385203.4302-----
1.9231252.08-----
2.026-0.84940.86810.87810.79590.8888
2.3077301.4696-----
2.6923351.8153-----
3.039-0.86410.88440.89240.79520.8997
3.0769401.3498-----
3.4615450.9135-----
3.8462501.3996-----
4.052-0.86470.87750.88190.78960.8990
4.2308551.1582-----
4.6154601.2233-----
5.0650.97570.86470.87580.88100.79180.8981
  • The bold row denotes the saved checkpoint.

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",
}

MatryoshkaLoss

@misc{kusupati2024matryoshka,
    title={Matryoshka Representation Learning}, 
    author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
    year={2024},
    eprint={2205.13147},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

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…

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

0 моделей