Matryoshka Representation Learning
Paper • 2205.13147 • Published • 27
How to use don-unagi/finetuned_arctic_ft_kg with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("don-unagi/finetuned_arctic_ft_kg")
sentences = [
"What did the author plan to do with the dark meat and carcass after cooking the turkey?",
"Let’s say a family of four wants to spend only $365 per month on groceries, saving them $579 per month over that USDA average family in the link above. Investing this savings would compound into about $102,483.00 every ten years, which would obviously make a pretty big improvement in the financial health of the average young family.\nTo hit a monthly grocery spending target like that, you first have to understand what you are buying. There are four mouths to feed, each consuming three meals a day or 91.25 meals per month. Let’s say they all need adult levels of calories, so about 2000 per day.",
"When you eat beans and rice in the same meal, you’re getting complete protein at virtually no cost. Nuts and especially peanut butter are also a good way to mix high calories with built-in protein. Eggs contain the highest quality complete protein of all (6 grams per egg), so I enjoy three of them every day.",
"Turkey 101 Follow-up\nThought I’d share how my freezer “spring clean” is going. In an attempt to reduce the number of trips to the grocery store in April, I’ve taken on the challenge to use up what I have first. Here’s my first attempt at staying away from the deli-counter:\nDay 1- After anxiously awaiting the 3 day defrost, ready to cook turkey! Easy enough. Since I usually overcook meat (just to make sure it’s dead), decided to cook it breast side down; using gravity to my advantage, resulting in big, juicy breasts (just like my hubby likes). Save dark meat for later. Freeze some white meat, slice some for sandwiches, make broth from carcass."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Snowflake/snowflake-arctic-embed-l. 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': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 1024, '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()
)
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 = [
'What additional ingredients are suggested to increase protein content in the context?',
'cocoa and maybe some ground flax or whatever is lying around) for an extra 40 grams of protein.',
'Thanks for this timely article! In the midst of the March Challenge; was trying to determine the next item to tackle- and groceries was it! How’d you know it was $1000? Hmmm….psychic.\nI FINALLY updated all the spending on Quicken last month to make myself stare it in the face. No surprises; not ugly, but not very pretty either. The most valuable outcome of the exercise was showing my husband that his hard efforts are appreciated, and I’m stepping up!',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.7582 |
| cosine_accuracy@3 | 0.9121 |
| cosine_accuracy@5 | 0.9451 |
| cosine_accuracy@10 | 0.9725 |
| cosine_precision@1 | 0.7582 |
| cosine_precision@3 | 0.304 |
| cosine_precision@5 | 0.189 |
| cosine_precision@10 | 0.0973 |
| cosine_recall@1 | 0.7582 |
| cosine_recall@3 | 0.9121 |
| cosine_recall@5 | 0.9451 |
| cosine_recall@10 | 0.9725 |
| cosine_ndcg@10 | 0.8709 |
| cosine_mrr@10 | 0.8376 |
| cosine_map@100 | 0.8396 |
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.66 |
| cosine_accuracy@3 | 0.76 |
| cosine_accuracy@5 | 0.88 |
| cosine_accuracy@10 | 0.9 |
| cosine_precision@1 | 0.66 |
| cosine_precision@3 | 0.2533 |
| cosine_precision@5 | 0.176 |
| cosine_precision@10 | 0.09 |
| cosine_recall@1 | 0.66 |
| cosine_recall@3 | 0.76 |
| cosine_recall@5 | 0.88 |
| cosine_recall@10 | 0.9 |
| cosine_ndcg@10 | 0.7736 |
| cosine_mrr@10 | 0.7329 |
| cosine_map@100 | 0.7377 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
What is the significance of the date Mar 29, 2012, in relation to grocery expenses? |
Killing your $1000 Grocery Bill |
Wut do u think about spendin eighty dolars a week on food for a family? |
“Eighty dollars a week on food for the three of you? That’s IT??”, said a friend, “We spend more than three times that amount!!” |
What factors contribute to the varying cost of living in the United States, and how can individuals make choices to manage their spending effectively? |
But the experience still reminded me of the amazing variety of spending levels we all have available to us here in the United States. It is simultaneously one of the cheapest industrialized countries in the world to live in, and the most expensive. It all depends on the choices you make in your shopping, because everything in the world is available right here for your buying convenience. |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
768,
512,
256,
128,
64
],
"matryoshka_weights": [
1,
1,
1,
1,
1
],
"n_dims_per_step": -1
}
eval_strategy: stepsper_device_train_batch_size: 10per_device_eval_batch_size: 10num_train_epochs: 5multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 10per_device_eval_batch_size: 10per_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: 5max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_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: Falseuse_ipex: 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}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_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: Falsegradient_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: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | cosine_ndcg@10 |
|---|---|---|
| 1.0 | 10 | 0.8684 |
| 2.0 | 20 | 0.8698 |
| 3.0 | 30 | 0.8699 |
| 4.0 | 40 | 0.8706 |
| 5.0 | 50 | 0.8709 |
| 1.0 | 5 | 0.7269 |
| 2.0 | 10 | 0.7437 |
| 3.0 | 15 | 0.7539 |
| 4.0 | 20 | 0.7727 |
| 5.0 | 25 | 0.7736 |
@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",
}
@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}
}
@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}
}
Base model
Snowflake/snowflake-arctic-embed-l