Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper β’ 1908.10084 β’ Published β’ 13
How to use barealek/peftech-v1 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("barealek/peftech-v1")
sentences = [
"Instruct: Retrieve semantically similar text based on safety profile\nQuery: This is a vile, unbelievable, horrific story and these people are disgusting!! \nI am speechless as to the heinous behavior of this MOTHER & SON KILLERS! This is the most cold hearted, callous act for anyone and then to have the Mother and son do do this together makes me sick. Of course the Mother claims she doesn't know if her underage son was drinking! She reeked of alcohol herself which means, that yes, he was drinking, she probably gave him the alcohol and then they decided to wait several hours for the driver's blood alcohol to go down. He only came forward because there were multiple witnesses!! I am sick. This is some of the most vile behavior I have read, they stopped the car, and he got out and pulled the victim from his windshield and threw him on the ground. They both need to be charged with the MAXIMUM punishment possible. Mother & son deserve to be shot.",
"Instruct: Retrieve semantically similar text based on safety profile\nQuery: Instead of restrooms, we'll only have porta potties installed. Problem solved. Transgender friendly restrooms.",
"Instruct: Retrieve semantically similar text based on safety profile\nQuery: $26,443 a year for tuition and the best thing they can think of to chant is \"F%^$ Trump?",
"Instruct: Retrieve semantically similar text based on safety profile\nQuery: I'll leave the partisan politics out of my comment for a change.\n\nTo our troops. Take care and if you have to shoot, shoot the other poor bastard so you can come home."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from lightonai/modernbert-embed-large. It maps sentences & paragraphs to a 1024-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 256, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
(1): Pooling({'word_embedding_dimension': 1024, '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()
)
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("sentence_transformers_model_id")
# Run inference
sentences = [
'Instruct: Retrieve semantically similar text based on safety profile\nQuery: We will see women as popes when Islamic men stop raping women, playing tahharush, killing gays, forcing them to cover up, not allowing them to drive, stop performing genital mutilation etc. Jk we know neither will ever happen. Now run along and make my white self a sandwich honey!!',
'Instruct: Retrieve semantically similar text based on safety profile\nQuery: It\'s official. Canadians have been driven to mental illness. \n\n(The test for civility here is confusing. I rated a comment referring to the left as disgusting and vile as not good but civil. There were no personal names. "Vile" means disgusted, and the poster was disgusted. So ??? If that\'s not OK, why is "Fiberals" allowed? That\'s referring to the Liberals as liars.)',
"Instruct: Retrieve semantically similar text based on safety profile\nQuery: Right, so instead of proving your claim about the Hawaiian haters in this thread, you instead respond with the typical racist Hawaiian stereotypes about haoles.\n\nI see racism in Hawaii because ignorant racists like you pretend that your blind hatred is something other than what it is.\n\nThe fact is I have said nothing different than the kanaka maoil who were arrested outside of the Na'i Aupuni convention, but the difference is, you can not stand hearing it from someone who you assume does not have the magic blood.\n\nNews flash. Every single person on this planet is indigenous. Get over yourself.",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.9453, 0.9609],
# [0.9453, 1.0000, 0.9609],
# [0.9609, 0.9609, 1.0000]], dtype=torch.bfloat16)
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
Instruct: Retrieve semantically similar text based on safety profile |
Instruct: Retrieve semantically similar text based on safety profile |
1.0 |
Instruct: Retrieve semantically similar text based on safety profile |
Instruct: Retrieve semantically similar text based on safety profile |
1.0 |
Instruct: Retrieve semantically similar text based on safety profile |
Instruct: Retrieve semantically similar text based on safety profile |
1.0 |
main.OptimizedContrastiveDistillationLossper_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 1multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_ratio: 0.0warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falsebf16: Falsefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss |
|---|---|---|
| 0.6211 | 500 | 0.0186 |
@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",
}
Base model
answerdotai/ModernBERT-large