Matryoshka Representation Learning
Paper • 2205.13147 • Published • 27
How to use kenrogers/gte-ft-yt with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("kenrogers/gte-ft-yt", trust_remote_code=True)
sentences = [
"1. What advancements in technology are mentioned as contributing to faster inference times in applications? \n2. In what scenarios does the context suggest that response latency is less of a concern for users?",
"your take on this yeah I mean so no not better uh it's definitely different it's definitely uh you know do it's trying to do a different thing which is dope I would say like at the end of the day uh they're they're using the same process but they're they're they're finding different ways to uh to take advantage of that process uh the recurrent depth is more of an architecture change right it's more of a let's actually get this reasoning inherent to the to the model we're going to train it to be very good at this recurrent task we're going to train it to do this this accordion thing that it does very well right uh versus coconut which is like let's adapt and add to existing uh architecture right to to get this uh this kind of reasoning flavor that that coconut winds to get or winds up getting so it's it's it's a it's the same process two different approaches though where they're coming at it from two different angles uh I would say like current depth is uh is interesting because it's",
"right we kind of got to go a little bit more into the blackbox we gota go back beyond the unknown yeah it happens but it's it's it's it's the the timing is right and uh with companies like you know Nvidia with companies the other accelerators that are that are coming out they're super good at inference Gro and S all these other peeps right uh we're getting real fast at inference and so the spending that time you know becomes less and less impactful to the user experience but more importantly uh you know we have a lot of applications LMS aren't good for yet where we don't care about response latency like research like uh PhD level math where it's like it doesn't matter if it takes a day yeah because that means it didn't take some some other person a day right like that's the that's the the we're at this time the models are capable enough that we can think about problems that we can't just do ourselves faster it the whole the whole you know ecosystem is set up for this to be the right",
"today that's right that's right so so reasoning is some right now because our models are System One machines right this is the this is the they're not reasoners they're they're uh they're they're just they they just do they just do they just do right uh we need some way to stretch them into this reasoning domain and the way that we do that is through some kind of test time computer some kind of test time scaling things that you know it's interesting to think about but something like an agent right is an example or expression of test time compute right we're we're we're using the agent to leverage more compute to do cooler things right so these kinds of systems are also test time compute uh very broad definition you love agents are also reasoning right that's right agents are reason there you go but the idea is that we we need some way to stretch the system one machine to a system two machine and the way that we know how to do that right now is is through these time compute methods"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Alibaba-NLP/gte-Qwen2-1.5B-instruct. It maps sentences & paragraphs to a 1536-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': 32768, 'do_lower_case': False}) with Transformer model: Qwen2Model
(1): Pooling({'word_embedding_dimension': 1536, 'pooling_mode_cls_token': False, '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': True, '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("kenrogers/gte-ft-yt")
# Run inference
sentences = [
'1. What has changed in the time required for inference that allows for more progress to be made? \n2. What challenges did participants face during the engineering boot camp in early 2024?',
"is that we have some idea we have some thoughts that that say well we need to keep progress going so what's the next lowest hanging fruit that is accommodated by our Hardware uh and that's why it's like well we can just spend more time doing inference then right we we can we can do inference so fast now that spending extra time in inference isn't uh is feasible you know what would have used to take months or or or or at least weeks now can take you know a day or hours and so it makes sense you know the the the circumstances have changed uh we're running up against a a wall with our tried and true bread and butter methods uh and so now is the time for these you know for these kinds of uh leaps of progress yeah yeah and I remember you know when we were teaching like the a engineering boot camp and in early 2024 a lot of people were having you know issues with with streaming the token out and a lot of people were you know it's like it's like it just becomes so much easier to get you want",
"and in early 2024 a lot of people were having you know issues with with streaming the token out and a lot of people were you know it's like it's like it just becomes so much easier to get you want a quick result boom gbt 40 mini or whatever it is whatever equivalent of model are so good at those quick results those sort of system one results that now we're like okay what if we want to tackle bigger Beyond a single task kind of problems like we're seeing with deep research like we're seeing with these other things that require it to go chew on some things but I want to also just dig in there real quick because you mentioned agents and when we think about deep research or some of these types of tools they're actually agentic and they're using tools what we're talking about here is we're talking about reasoning inside the llm and we're talking about doing engineering within the llm and and sort of giving giving the sort of the brain itself instead of the application we're not giving the",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1536]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.8333 |
| cosine_accuracy@3 | 1.0 |
| cosine_accuracy@5 | 1.0 |
| cosine_accuracy@10 | 1.0 |
| cosine_precision@1 | 0.8333 |
| cosine_precision@3 | 0.3333 |
| cosine_precision@5 | 0.2 |
| cosine_precision@10 | 0.1 |
| cosine_recall@1 | 0.8333 |
| cosine_recall@3 | 1.0 |
| cosine_recall@5 | 1.0 |
| cosine_recall@10 | 1.0 |
| cosine_ndcg@10 | 0.933 |
| cosine_mrr@10 | 0.9097 |
| cosine_map@100 | 0.9097 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
1. What are the two big ideas aimed at scaling the power of LLMs during inference mentioned in the context? |
okay whiz we're talking about reasoning in latent space today is that the same as test time compute yeah that's right nice nice okay and we've got two big ideas to cover that are aimed at scaling the power of llms during inference is that right that yeah that's right so we have we have two you know latent space methods uh we have our continuous Chain of Thought or coconut right and then we have our more more directly more uh you know uh budget forcing recurrent depth uh model yes man that's a lot so when we look across both of those there appears to be a pretty simple explanation it's almost like uh you know when we when we're in that sort of thinking space of computation we don't have to do the thinky thinky in words and that's better maybe even it will allow us to find a new scaling axis is that right yeah that's exactly right I mean the idea is that we have this uh you know we we have this way of taking advantage of of uh the most powerful thinking space in the Transformer and not |
1. What are the two big ideas aimed at scaling the power of LLMs during inference mentioned in the context? |
okay whiz we're talking about reasoning in latent space today is that the same as test time compute yeah that's right nice nice okay and we've got two big ideas to cover that are aimed at scaling the power of llms during inference is that right that yeah that's right so we have we have two you know latent space methods uh we have our continuous Chain of Thought or coconut right and then we have our more more directly more uh you know uh budget forcing recurrent depth uh model yes man that's a lot so when we look across both of those there appears to be a pretty simple explanation it's almost like uh you know when we when we're in that sort of thinking space of computation we don't have to do the thinky thinky in words and that's better maybe even it will allow us to find a new scaling axis is that right yeah that's exactly right I mean the idea is that we have this uh you know we we have this way of taking advantage of of uh the most powerful thinking space in the Transformer and not |
1. What is the significance of staying in the "mind Palace" of the Transformer according to the context? |
is that right yeah that's exactly right I mean the idea is that we have this uh you know we we have this way of taking advantage of of uh the most powerful thinking space in the Transformer and not just like for a second right not automatically resolving back to token space but kind of staying in this very like uh you know in in the mind Palace of the of the Transformer without having to write down the words yes okay okay okay so basically scaling is dead Long Live scaling something like that yeah scaling has died uh we should scale yeah all right all right all right well I'm pumped for the demos today we're going to see some thinking in latent space let's cover all the Concepts we need to get there we'll get you back in for some discussions along the way because this one's pretty meta thanks whiz all right guys we are gonna rock out on large reasoning models today while we were originally going to just cover chain of continuous thought or coconut we saw a paper come out a couple |
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: 10multi_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: 10max_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 | 9 | 0.8744 |
| 2.0 | 18 | 0.9251 |
| 3.0 | 27 | 0.9301 |
| 4.0 | 36 | 0.9253 |
| 5.0 | 45 | 0.9177 |
| 5.5556 | 50 | 0.9330 |
| 6.0 | 54 | 0.9330 |
| 7.0 | 63 | 0.9330 |
| 8.0 | 72 | 0.9330 |
| 9.0 | 81 | 0.9330 |
| 10.0 | 90 | 0.9330 |
@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
Alibaba-NLP/gte-Qwen2-1.5B-instruct