deebak14's picture
Add new SentenceTransformer model
178a831 verified
---
tags:
- sentence-transformers
- sentence-similarity
- feature-extraction
- dense
- generated_from_trainer
- dataset_size:15565
- loss:MultipleNegativesRankingLoss
base_model: google/embeddinggemma-300m
widget:
- source_sentence: I need to lock an object in my model so I can work on other parts
without accidentally selecting it. How can I do that?
sentences:
- You cannot use the following methods IsObjectLocked, LockObjects, UnlockObject,
SelectObject, SelectObjects, UnlockObjects, IsObjectSelectable, ShowObject, IsObjectNormal
- object
- "You can use the following methods to complete the task.\nmethod: LockObject\n\
description: Locks a single object. Locked objects are visible, and they can be\r\
\n snapped to. But, they cannot be selected.\nsyntax: LockObject(object_id)\n\
parameters: object_id (guid): The identifier of an object\nreturns: bool: True\
\ or False indicating success or failure\n\nFollowing is the code that uses this\
\ method to complete the task as per user query.\n\n```python\nimport rhinoscriptsyntax\
\ as rs\n\n# Lock an object in the model to prevent accidental selection\nid =\
\ rs.GetObject(\"Select object to lock\")\nif id:\n rs.LockObject(id)\n \
\ print(\"Object locked successfully.\")\nelse:\n print(\"No object selected.\"\
)\n```"
- source_sentence: I want to create a cloud of points in my Rhino model. Can you show
me how to do that?
sentences:
- "You can use the following methods to complete the task.\nmethod: AddPointCloud\n\
description: Adds point cloud object to the document\nsyntax: AddPointCloud(points,\
\ colors=None)\nparameters: \npoints ([point, ....]): list of values where every\
\ multiple of three represents a point\r\ncolors ([color, ...]): list of colors\
\ to apply to each point\n\nreturns: \nguid: identifier of point cloud on success\n\
\n\nFollowing is the code that uses this method to complete the task as per user\
\ query.\n\n```python\nimport rhinoscriptsyntax as rs\n\n# Create a cloud of points\
\ in Rhino\npoints = [(0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3)] # Define points\n\
rs.AddPointCloud(points) # Add the point cloud to the model\n```"
- geometry
- You cannot use the following methods PointCloudPoints, AddPoints, CreatePoint,
PointCloudCount, AddPoint, AddLine, PointCloudHidePoints, CreateVector, PointCoordinates
- source_sentence: I need to find out which vertices make up each face of my mesh.
Can you help me with that?
sentences:
- "You can use the following methods to complete the task.\nmethod: MeshFaces\n\
description: Returns face vertices of a mesh\nsyntax: MeshFaces(object_id, face_type=True)\n\
parameters: object_id (guid): identifier of a mesh object\nface_type (bool, optional):\
\ The face type to be returned. True = both triangles and quads. False = only\
\ triangles\nreturns: list([point, point, point, point], ...): 3D points that\
\ define the face vertices of the mesh. If face_type is True, then faces are returned\
\ as both quads and triangles (4 3D points). For triangles, the third and fourth\
\ vertex will be identical. If face_type is False, then faces are returned as\
\ only triangles(3 3D points). Quads will be converted to triangles.\n\nFollowing\
\ is the code that uses this method to complete the task as per user query.\n\n\
```python\nimport rhinoscriptsyntax as rs\n# Get the mesh object from the user\n\
obj = rs.GetObject(\"Select mesh\", rs.filter.mesh)\n# Retrieve the vertex indices\
\ for each face of the mesh\nfaces = rs.MeshFaces(obj, True)\nif faces:\n rs.EnableRedraw(False)\n\
\ i = 0\n while i < len(faces):\n # Each face can be a triangle or\
\ a quad\n face = faces[i:i+4] if len(faces) > i + 3 else faces[i:i+3]\n\
\ print(\"Face vertices:\", face)\n i += 3 if len(face) == 3 else\
\ 4\n rs.EnableRedraw(True)\n```"
- You cannot use the following methods MeshVertexFaces, MeshFaceVertices, MeshVertices,
MeshVertexCount, MeshFaceCenters, MeshTriangleCount, MeshQuadCount, MeshFaceCount,
MeshNakedEdgePoints
- mesh
- source_sentence: Can you show me how to check if two transformation matrices are
the same in Rhino?
sentences:
- "You can use the following methods to complete the task.\nmethod: XformChangeBasis2\n\
description: Returns a change of basis transformation matrix of None on error\n\
syntax: XformChangeBasis2(x0,y0,z0,x1,y1,z1)\nparameters: \nx0,y0,z0 (vector):\
\ initial basis\r\nx1,y1,z1 (vector): final basis\n\nreturns: \ntransform: The\
\ 4x4 transformation matrix if successful\r\nNone: if not successful\n\n\nFollowing\
\ is the code that uses this method to complete the task as per user query.\n\n\
```python\nimport rhinoscriptsyntax as rs\n\n# Function to check if two transformation\
\ matrices are the same\n# Parameters: mat1, mat2 - transformation matrices to\
\ compare\n# Returns: True if they are the same, False otherwise\ndef are_matrices_equal(mat1,\
\ mat2):\n return rs.XformCompare(mat1, mat2) == 0\n\n# Example usage\nmatrix1\
\ = rs.XformChangeBasis2(1, 0, 0, 0, 1, 0)\nmatrix2 = rs.XformChangeBasis2(1,\
\ 0, 0, 0, 1, 0)\nresult = are_matrices_equal(matrix1, matrix2)\nprint(\"Matrices\
\ are equal:\" , result)\n```"
- You cannot use the following methods XformCompare, IsXformSimilarity, IsXformIdentity,
IsXformZero, CompareGeometry, CreateXform, VectorTransform, XformTranslation,
TransformObject, XformDeterminant
- transformation
- source_sentence: I need to find where a flat surface meets a sphere. How can I do
that in Rhino?
sentences:
- plane
- You cannot use the following methods LineSphereIntersection, IsSphere, AddSphere,
LinePlaneIntersection, Angle, CircleCenterPoint, CurveCurveIntersection, CurveSurfaceIntersection,
AddCircle3Pt
- "You can use the following methods to complete the task.\nmethod: PlaneSphereIntersection\n\
description: Calculates the intersection of a plane and a sphere.\nsyntax: PlaneSphereIntersection(plane,\
\ sphere_plane, sphere_radius)\nparameters: plane (plane): The plane to intersect;\
\ sphere_plane (plane): Equatorial plane of the sphere (origin is center); sphere_radius\
\ (float): Radius of the sphere.\nreturns: list: [type, point/plane, radius] where\
\ type=0 for point, 1 for circle. None on error.\n\nFollowing is the code that\
\ uses this method to complete the task as per user query.\n\n```python\nimport\
\ rhinoscriptsyntax as rs\n\n# Define a flat surface as a plane\nplane = rs.WorldXYPlane()\n\
# Define the radius of the sphere\nradius = 10\n# Calculate the intersection between\
\ the plane and the sphere\nresults = rs.PlaneSphereIntersection(plane, plane,\
\ radius)\n\n# Check if there are results and handle them accordingly\nif results:\n\
\ if results[0] == 0:\n # If the intersection is a point, add it to\
\ the document\n rs.AddPoint(results[1])\n else:\n # If the intersection\
\ is a circle, add it to the document\n rs.AddCircle(results[1], results[2])\n\
```"
datasets:
- deebak14/embedding_tuple_data_v1
- deebak14/embedding_triplet_data_v1
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
- cosine_accuracy
model-index:
- name: SentenceTransformer based on google/embeddinggemma-300m
results:
- task:
type: triplet
name: Triplet
dataset:
name: base eval
type: base-eval
metrics:
- type: cosine_accuracy
value: 1.0
name: Cosine Accuracy
---
# SentenceTransformer based on google/embeddinggemma-300m
This is a [sentence-transformers](https://www.SBERT.net) model finetuned from [google/embeddinggemma-300m](https://huggingface.co/google/embeddinggemma-300m) on the [embedding_tuple_data_v1](https://huggingface.co/datasets/deebak14/embedding_tuple_data_v1) 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 Type:** Sentence Transformer
- **Base model:** [google/embeddinggemma-300m](https://huggingface.co/google/embeddinggemma-300m) <!-- at revision 57c266a740f537b4dc058e1b0cda161fd15afa75 -->
- **Maximum Sequence Length:** 2048 tokens
- **Output Dimensionality:** 768 dimensions
- **Similarity Function:** Cosine Similarity
- **Training Dataset:**
- [embedding_tuple_data_v1](https://huggingface.co/datasets/deebak14/embedding_tuple_data_v1)
<!-- - **Language:** Unknown -->
<!-- - **License:** Unknown -->
### Model Sources
- **Documentation:** [Sentence Transformers Documentation](https://sbert.net)
- **Repository:** [Sentence Transformers on GitHub](https://github.com/UKPLab/sentence-transformers)
- **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers)
### Full Model Architecture
```
SentenceTransformer(
(0): Transformer({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
(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})
(2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): Normalize()
)
```
## Usage
### Direct Usage (Sentence Transformers)
First install the Sentence Transformers library:
```bash
pip install -U sentence-transformers
```
Then you can load this model and run inference.
```python
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("deebak14/embedding_gemma_ft_v1")
# Run inference
queries = [
"I need to find where a flat surface meets a sphere. How can I do that in Rhino?",
]
documents = [
'You can use the following methods to complete the task.\nmethod: PlaneSphereIntersection\ndescription: Calculates the intersection of a plane and a sphere.\nsyntax: PlaneSphereIntersection(plane, sphere_plane, sphere_radius)\nparameters: plane (plane): The plane to intersect; sphere_plane (plane): Equatorial plane of the sphere (origin is center); sphere_radius (float): Radius of the sphere.\nreturns: list: [type, point/plane, radius] where type=0 for point, 1 for circle. None on error.\n\nFollowing is the code that uses this method to complete the task as per user query.\n\n```python\nimport rhinoscriptsyntax as rs\n\n# Define a flat surface as a plane\nplane = rs.WorldXYPlane()\n# Define the radius of the sphere\nradius = 10\n# Calculate the intersection between the plane and the sphere\nresults = rs.PlaneSphereIntersection(plane, plane, radius)\n\n# Check if there are results and handle them accordingly\nif results:\n if results[0] == 0:\n # If the intersection is a point, add it to the document\n rs.AddPoint(results[1])\n else:\n # If the intersection is a circle, add it to the document\n rs.AddCircle(results[1], results[2])\n```',
'You cannot use the following methods LineSphereIntersection, IsSphere, AddSphere, LinePlaneIntersection, Angle, CircleCenterPoint, CurveCurveIntersection, CurveSurfaceIntersection, AddCircle3Pt',
'plane',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 768] [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[ 0.6658, 0.4819, -0.1617]])
```
<!--
### Direct Usage (Transformers)
<details><summary>Click to see the direct usage in Transformers</summary>
</details>
-->
<!--
### Downstream Usage (Sentence Transformers)
You can finetune this model on your own dataset.
<details><summary>Click to expand</summary>
</details>
-->
<!--
### Out-of-Scope Use
*List how the model may foreseeably be misused and address what users ought not to do with the model.*
-->
## Evaluation
### Metrics
#### Triplet
* Dataset: `base-eval`
* Evaluated with [<code>TripletEvaluator</code>](https://sbert.net/docs/package_reference/sentence_transformer/evaluation.html#sentence_transformers.evaluation.TripletEvaluator)
| Metric | Value |
|:--------------------|:--------|
| **cosine_accuracy** | **1.0** |
<!--
## Bias, Risks and Limitations
*What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
-->
<!--
### Recommendations
*What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
-->
## Training Details
### Training Dataset
#### embedding_tuple_data_v1
* Dataset: [embedding_tuple_data_v1](https://huggingface.co/datasets/deebak14/embedding_tuple_data_v1) at [b592a1a](https://huggingface.co/datasets/deebak14/embedding_tuple_data_v1/tree/b592a1af60cff995640f6979dbf36c01d38c40a8)
* Size: 15,565 training samples
* Columns: <code>anchor</code> and <code>positive</code>
* Approximate statistics based on the first 1000 samples:
| | anchor | positive |
|:--------|:----------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------|
| type | string | string |
| details | <ul><li>min: 9 tokens</li><li>mean: 15.98 tokens</li><li>max: 50 tokens</li></ul> | <ul><li>min: 42 tokens</li><li>mean: 177.53 tokens</li><li>max: 810 tokens</li></ul> |
* Samples:
| anchor | positive |
|:-------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <code>Provide an example of using AddRectangle.</code> | <code>import rhinoscriptsyntax as rs<br>plane = rs.WorldXYPlane()<br>plane = rs.RotatePlane(plane, 45.0, [0,0,1])<br>rs.AddRectangle(plane, 5.0, 15.0) <br><br>Metadata: <br>Name: AddRectangle<br>Category: curve<br>Function Signature: rs.AddRectangle(plane: plane, width: number, height: number) -> guid<br>Description: Add a rectangular curve to the document</code> |
| <code>How do I search for the total number of linetypes in my document?</code> | <code><br><br>You can use the following method:<br>Name: LinetypeCount<br>Category: linetype<br>Function Signature: rs.LinetypeCount() -> int<br>Description: Description: Returns the number of linetypes in the document.<br>Parameters:<br> None<br>Returns:<br> int: The number of linetypes in the document.</code> |
| <code>How do I maintain the shape of a curve while fitting it?</code> | <code><br><br>You can use the following method:<br>Name: FitCurve<br>Category: curve<br>Function Signature: rs.FitCurve(curve_id: guid, degree: int = 3, distance_tolerance: float = -1, angle_tolerance: float = -1) -> guid<br>Description: Description: Reduces the number of control points of a curve while maintaining its general shape. This function is useful for replacing curves with many control points. For more information, see the Rhino help for the FitCrv command.<br>Parameters:<br> curve_id (guid): Identifier of the curve object to be fitted.<br> eg: '3D4F5A6B-7C8D-9E0F-1A2B-3C4D5E6F7A8B'<br> degree (int, optional): The degree of the curve, which must be greater than 1. The default is 3.<br> eg: 3<br> distance_tolerance (float, optional): The fitting tolerance. If not specified or <= 0.0, the document absolute tolerance is used.<br> eg: 0.01<br> angle_tolerance (float, optional): The kink smoothing tolerance in degrees. If 0.0, all kinks are smoothed. If > 0.0, kinks smaller than this value are smoothed. If ...</code> |
* Loss: [<code>MultipleNegativesRankingLoss</code>](https://sbert.net/docs/package_reference/sentence_transformer/losses.html#multiplenegativesrankingloss) with these parameters:
```json
{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
```
### Evaluation Dataset
#### embedding_triplet_data_v1
* Dataset: [embedding_triplet_data_v1](https://huggingface.co/datasets/deebak14/embedding_triplet_data_v1) at [71ea1de](https://huggingface.co/datasets/deebak14/embedding_triplet_data_v1/tree/71ea1de1dd869a91bfa545c4f65e1d1d5ac41186)
* Size: 476 evaluation samples
* Columns: <code>anchor</code>, <code>positive</code>, and <code>negative</code>
* Approximate statistics based on the first 476 samples:
| | anchor | positive | negative |
|:--------|:-----------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------|
| type | string | string | string |
| details | <ul><li>min: 15 tokens</li><li>mean: 23.13 tokens</li><li>max: 38 tokens</li></ul> | <ul><li>min: 111 tokens</li><li>mean: 252.44 tokens</li><li>max: 1015 tokens</li></ul> | <ul><li>min: 32 tokens</li><li>mean: 42.48 tokens</li><li>max: 55 tokens</li></ul> |
* Samples:
| anchor | positive | negative |
|:------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <code>I need to flatten a curved surface for laser cutting. How can I do that?</code> | <code>You can use the following methods to complete the task.<br>method: UnrollSurface<br>description: Flattens a developable surface or polysurface<br>syntax: UnrollSurface(surface_id, explode=False, following_geometry=None, absolute_tolerance=None, relative_tolerance=None)<br>parameters: <br>surface_id (guid): the surface's identifier <br>explode (bool, optional): If True, the resulting surfaces ar not joined <br>following_geometry ({guid, ...]): List of curves, dots, and points which <br> should be unrolled with the surface<br><br>returns: <br>list(guid, ...): of unrolled surface ids <br>tuple((guid, ...),(guid, ...)): if following_geometry is not None, a tuple <br> [1] is the list of unrolled surface ids <br> [2] is the list of unrolled following geometry<br><br><br>Following is the code that uses this method to complete the task as per user query.<br><br>```python<br>import rhinoscriptsyntax as rs<br><br># Flatten a curved surface for laser cutting<br>surface = rs.GetObject("Select curved surface to flatten", rs.filter.surface)<br>if surface:<br> # Unrol...</code> | <code>You cannot use the following methods ConvertCurveToPolyline, MeshOutline, PullCurveToMesh, ExplodeText, MeshToNurb, IsCurvePlanar, Angle, AddFilletCurve, MeshVolume</code> |
| <code>Can you show me how to rotate a plane by 30 degrees around its normal axis?</code> | <code>You can use the following methods to complete the task.<br>method: PlaneTransform<br>description: Transforms a plane.<br>syntax: PlaneTransform(plane, xform)<br>parameters: plane (plane): Plane to transform; xform (transform): Transformation to apply.<br>returns: plane: Resulting plane if successful, otherwise None.<br><br>Following is the code that uses this method to complete the task as per user query.<br><br>```python<br>import rhinoscriptsyntax as rs<br><br># Get the current construction plane<br>plane = rs.ViewCPlane()<br><br># Create a rotation transformation of 30 degrees around the normal axis (Z-axis)<br>xform = rs.XformRotation(30.0, plane.ZAxis, plane.Origin)<br><br># Apply the transformation to the plane<br>plane = rs.PlaneTransform(plane, xform)<br><br># Set the new construction plane<br>rs.ViewCPlane(None, plane)<br>```</code> | <code>You cannot use the following methods RotatePlane, XformRotation1, PlaneFromNormal, VectorRotate, Angle, PlaneFromFrame, LinePlane, MovePlane, CreatePlane</code> |
| <code>I want to change the height of a text dot I just created. How can I do that?</code> | <code>You can use the following methods to complete the task.<br>method: TextDotHeight<br>description: Returns or modified the font height of a text dot<br>syntax: TextDotHeight(object_id, height=None)<br>parameters: <br>object_id (guid): identifier of a text dot object <br>height (number, optional) new font height<br><br>returns: <br>number: If height is not specified, the current text dot height <br>number: If height is specified, the previous text dot height <br>None: on error<br><br><br>Following is the code that uses this method to complete the task as per user query.<br><br>```python<br>import rhinoscriptsyntax as rs<br># Change the height of a text dot<br>obj = rs.GetObject("Select text dot")<br>if rs.IsTextDot(obj):<br> previous_height = rs.TextDotHeight(obj, 15.0) # Set new height to 15.0<br> print(f"Previous height was: {previous_height}")<br>```</code> | <code>You cannot use the following methods TextDotPoint, TextDotFont, TextDotText, TextObjectHeight, IsTextDot, AddTextDot, TextObjectFont, PointCoordinates, ExplodeText</code> |
* Loss: [<code>MultipleNegativesRankingLoss</code>](https://sbert.net/docs/package_reference/sentence_transformer/losses.html#multiplenegativesrankingloss) with these parameters:
```json
{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
```
### Training Hyperparameters
#### Non-Default Hyperparameters
- `eval_strategy`: steps
- `per_device_train_batch_size`: 16
- `per_device_eval_batch_size`: 16
- `learning_rate`: 2e-05
- `warmup_ratio`: 0.1
- `bf16`: True
- `prompts`: task: sentence similarity | query:
- `batch_sampler`: no_duplicates
#### All Hyperparameters
<details><summary>Click to expand</summary>
- `overwrite_output_dir`: False
- `do_predict`: False
- `eval_strategy`: steps
- `prediction_loss_only`: True
- `per_device_train_batch_size`: 16
- `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
- `torch_empty_cache_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`: 3
- `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
- `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`: True
- `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`: 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}
- `parallelism_config`: None
- `deepspeed`: None
- `label_smoothing_factor`: 0.0
- `optim`: adamw_torch_fused
- `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`: None
- `hub_always_push`: False
- `hub_revision`: None
- `gradient_checkpointing`: False
- `gradient_checkpointing_kwargs`: None
- `include_inputs_for_metrics`: False
- `include_for_metrics`: []
- `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
- `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
- `use_liger_kernel`: False
- `liger_kernel_config`: None
- `eval_use_gather_object`: False
- `average_tokens_across_devices`: False
- `prompts`: task: sentence similarity | query:
- `batch_sampler`: no_duplicates
- `multi_dataset_batch_sampler`: proportional
- `router_mapping`: {}
- `learning_rate_mapping`: {}
</details>
### Training Logs
| Epoch | Step | Training Loss | Validation Loss | base-eval_cosine_accuracy |
|:------:|:----:|:-------------:|:---------------:|:-------------------------:|
| -1 | -1 | - | - | 0.0147 |
| 0.1028 | 100 | 0.1601 | - | - |
| 0.2055 | 200 | 0.0474 | 0.2296 | 0.8971 |
| 0.3083 | 300 | 0.0749 | - | - |
| 0.4111 | 400 | 0.1037 | 0.1457 | 0.9265 |
| 0.5139 | 500 | 0.0564 | - | - |
| 0.6166 | 600 | 0.0706 | 0.3362 | 0.9475 |
| 0.7194 | 700 | 0.0549 | - | - |
| 0.8222 | 800 | 0.0427 | 0.2154 | 0.9538 |
| 0.9250 | 900 | 0.0599 | - | - |
| 1.0277 | 1000 | 0.0656 | 0.2439 | 0.9706 |
| 1.1305 | 1100 | 0.0409 | - | - |
| 1.2333 | 1200 | 0.0283 | 0.2422 | 0.9727 |
| 1.3361 | 1300 | 0.0336 | - | - |
| 1.4388 | 1400 | 0.0338 | 0.2397 | 0.9664 |
| 1.5416 | 1500 | 0.0384 | - | - |
| 1.6444 | 1600 | 0.0271 | 0.1048 | 0.9832 |
| 1.7472 | 1700 | 0.0305 | - | - |
| 1.8499 | 1800 | 0.024 | 0.1172 | 0.9916 |
| 1.9527 | 1900 | 0.014 | - | - |
| 2.0555 | 2000 | 0.018 | 0.0898 | 0.9958 |
| 2.1583 | 2100 | 0.0091 | - | - |
| 2.2610 | 2200 | 0.0154 | 0.0721 | 0.9916 |
| 2.3638 | 2300 | 0.0123 | - | - |
| 2.4666 | 2400 | 0.0119 | 0.0876 | 0.9937 |
| 2.5694 | 2500 | 0.0173 | - | - |
| 2.6721 | 2600 | 0.0091 | 0.0482 | 1.0 |
| 2.7749 | 2700 | 0.0211 | - | - |
| 2.8777 | 2800 | 0.0146 | 0.0550 | 1.0 |
| 2.9805 | 2900 | 0.0101 | - | - |
| -1 | -1 | - | - | 1.0 |
### Framework Versions
- Python: 3.12.11
- Sentence Transformers: 5.1.0
- Transformers: 4.56.1
- PyTorch: 2.8.0+cu126
- Accelerate: 1.10.1
- Datasets: 4.0.0
- Tokenizers: 0.22.0
## Citation
### BibTeX
#### Sentence Transformers
```bibtex
@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",
}
```
#### MultipleNegativesRankingLoss
```bibtex
@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}
}
```
<!--
## Glossary
*Clearly define terms in order to be accessible across audiences.*
-->
<!--
## Model Card Authors
*Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
-->
<!--
## Model Card Contact
*Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
-->