itsanan's picture
Add new SentenceTransformer model
28ae705 verified
metadata
language:
  - en
license: apache-2.0
tags:
  - sentence-transformers
  - sentence-similarity
  - feature-extraction
  - dense
  - generated_from_trainer
  - dataset_size:900
  - loss:MatryoshkaLoss
  - loss:MultipleNegativesRankingLoss
base_model: microsoft/codebert-base
widget:
  - source_sentence: How to implement __del__?
    sentences:
      - |-
        class SampleMultiCrewFlow(Flow[SimpleState]):
                @start()
                def first_crew(self):
                    """Run first crew."""
                    agent = Agent(
                        role="first agent",
                        goal="first task",
                        backstory="first agent",
                        llm=mock_llm_1,
                    )
                    task = Task(
                        description="First task",
                        expected_output="first result",
                        agent=agent,
                    )
                    crew = Crew(
                        agents=[agent],
                        tasks=[task],
                        share_crew=True,
                    )

                    result = crew.kickoff()

                    assert crew._execution_span is not None
                    return str(result.raw)

                @listen(first_crew)
                def second_crew(self, first_result: str):
                    """Run second crew."""
                    agent = Agent(
                        role="second agent",
                        goal="second task",
                        backstory="second agent",
                        llm=mock_llm_2,
                    )
                    task = Task(
                        description="Second task",
                        expected_output="second result",
                        agent=agent,
                    )
                    crew = Crew(
                        agents=[agent],
                        tasks=[task],
                        share_crew=True,
                    )

                    result = crew.kickoff()

                    assert crew._execution_span is not None

                    self.state.result = f"{first_result} + {result.raw}"
                    return self.state.result
      - |-
        async def test_anthropic_async_with_tools():
            """Test async call with tools."""
            llm = AnthropicCompletion(model="claude-sonnet-4-0")

            tools = [
                {
                    "type": "function",
                    "function": {
                        "name": "get_weather",
                        "description": "Get the current weather for a location",
                        "parameters": {
                            "type": "object",
                            "properties": {
                                "location": {
                                    "type": "string",
                                    "description": "The city and state, e.g. San Francisco, CA"
                                }
                            },
                            "required": ["location"]
                        }
                    }
                }
            ]

            result = await llm.acall(
                "What's the weather in San Francisco?",
                tools=tools
            )
            logging.debug("result: %s", result)

            assert result is not None
            assert isinstance(result, str)
      - |-
        def __del__(self):
                """Cleanup connections on deletion."""
                try:
                    if self._connection_pool:
                        for conn in self._connection_pool:
                            try:
                                conn.close()
                            except Exception:  # noqa: PERF203, S110
                                pass
                    if self._thread_pool:
                        self._thread_pool.shutdown()
                except Exception:  # noqa: S110
                    pass
  - source_sentence: How does route_to_cycle work in Python?
    sentences:
      - |-
        def route_to_cycle(self):
                    execution_log.append("router_initial")
                    return "loop"
      - >-
        def _register_system_event_handlers(self, event_bus: CrewAIEventsBus) ->
        None:
                """Register handlers for system signal events (SIGTERM, SIGINT, etc.)."""

                @on_signal
                def handle_signal(source: Any, event: SignalEvent) -> None:
                    """Flush trace batch on system signals to prevent data loss."""
                    if self.batch_manager.is_batch_initialized():
                        self.batch_manager.finalize_batch()
      - |-
        async def aadd(self) -> None:
                """Add JSON file content asynchronously."""
                content_str = (
                    str(self.content) if isinstance(self.content, dict) else self.content
                )
                new_chunks = self._chunk_text(content_str)
                self.chunks.extend(new_chunks)
                await self._asave_documents()
  - source_sentence: Explain the test_evaluate logic
    sentences:
      - |-
        def test_flow_copy_state_with_unpickleable_objects():
            """Test that _copy_state handles unpickleable objects like RLock.

            Regression test for issue #3828: Flow should not crash when state contains
            objects that cannot be deep copied (like threading.RLock).
            """

            class StateWithRLock(BaseModel):
                counter: int = 0
                lock: Optional[threading.RLock] = None

            class FlowWithRLock(Flow[StateWithRLock]):
                @start()
                def step_1(self):
                    self.state.counter += 1

                @listen(step_1)
                def step_2(self):
                    self.state.counter += 1

            flow = FlowWithRLock(initial_state=StateWithRLock())
            flow._state.lock = threading.RLock()

            copied_state = flow._copy_state()
            assert copied_state.counter == 0
            assert copied_state.lock is not None
      - |-
        def test_evaluate(self, crew_planner):
                task_output = TaskOutput(
                    description="Task 1", agent=str(crew_planner.crew.agents[0])
                )

                with mock.patch.object(Task, "execute_sync") as execute:
                    execute().pydantic = TaskEvaluationPydanticOutput(quality=9.5)
                    crew_planner.evaluate(task_output)
                    assert crew_planner.tasks_scores[0] == [9.5]
      - |-
        class SlowAsyncTool(BaseTool):
                    name: str = "slow_async"
                    description: str = "Simulates slow I/O"

                    def _run(self, task_id: int, delay: float) -> str:
                        return f"Task {task_id} done"

                    async def _arun(self, task_id: int, delay: float) -> str:
                        await asyncio.sleep(delay)
                        return f"Task {task_id} done"
  - source_sentence: Explain the test_clean_action_no_formatting logic
    sentences:
      - |-
        def test_task_interpolation_with_hyphens():
            agent = Agent(
                role="Researcher",
                goal="be an assistant that responds with {interpolation-with-hyphens}",
                backstory="You're an expert researcher, specialized in technology, software engineering, AI and startups. You work as a freelancer and is now working on doing research and analysis for a new customer.",
                allow_delegation=False,
            )
            task = Task(
                description="be an assistant that responds with {interpolation-with-hyphens}",
                expected_output="The response should be addressing: {interpolation-with-hyphens}",
                agent=agent,
            )
            crew = Crew(
                agents=[agent],
                tasks=[task],
                verbose=True,
            )
            result = crew.kickoff(inputs={"interpolation-with-hyphens": "say hello world"})
            assert "say hello world" in task.prompt()

            assert result.raw == "Hello, World!"
      - |-
        class LLMCallCompletedEvent(LLMEventBase):
            """Event emitted when a LLM call completes"""

            type: str = "llm_call_completed"
            messages: str | list[dict[str, Any]] | None = None
            response: Any
            call_type: LLMCallType
            model: str | None = None
      - |-
        def test_clean_action_no_formatting():
            action = "Ask question to senior researcher"
            cleaned_action = parser._clean_action(action)
            assert cleaned_action == "Ask question to senior researcher"
  - source_sentence: Example usage of test_status_code_and_content_type
    sentences:
      - |-
        class NavigateBackToolInput(BaseModel):
            """Input for NavigateBackTool."""

            thread_id: str = Field(
                default="default", description="Thread ID for the browser session"
            )
      - |-
        def test_status_code_and_content_type(self, mock_bs, mock_get):
                for status in [200, 201, 301]:
                    mock_get.return_value = self.setup_mock_response(
                        f"<html><body>Status {status}</body></html>", status_code=status
                    )
                    mock_bs.return_value = self.setup_mock_soup(f"Status {status}")
                    result = WebPageLoader().load(
                        SourceContent(f"https://example.com/{status}")
                    )
                    assert result.metadata["status_code"] == status

                for ctype in ["text/html", "text/plain", "application/xhtml+xml"]:
                    mock_get.return_value = self.setup_mock_response(
                        "<html><body>Content</body></html>", content_type=ctype
                    )
                    mock_bs.return_value = self.setup_mock_soup("Content")
                    result = WebPageLoader().load(SourceContent("https://example.com"))
                    assert result.metadata["content_type"] == ctype
      - |-
        def set_crew(self, crew: Any) -> Memory:
                """Set the crew for this memory instance."""
                self.crew = crew
                return self
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
  - cosine_accuracy@1
  - cosine_accuracy@3
  - cosine_accuracy@5
  - cosine_accuracy@10
  - cosine_precision@1
  - cosine_precision@3
  - cosine_precision@5
  - cosine_precision@10
  - cosine_recall@1
  - cosine_recall@3
  - cosine_recall@5
  - cosine_recall@10
  - cosine_ndcg@10
  - cosine_mrr@10
  - cosine_map@100
model-index:
  - name: CodeBERT Fine-tuned on CrewAI (LR=2e-05)
    results:
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: dim 768
          type: dim_768
        metrics:
          - type: cosine_accuracy@1
            value: 0.04
            name: Cosine Accuracy@1
          - type: cosine_accuracy@3
            value: 0.04
            name: Cosine Accuracy@3
          - type: cosine_accuracy@5
            value: 0.04
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 0.06
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.04
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.04
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.04
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.03
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.008
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 0.024
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 0.04
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 0.06
            name: Cosine Recall@10
          - type: cosine_ndcg@10
            value: 0.050819890355577976
            name: Cosine Ndcg@10
          - type: cosine_mrr@10
            value: 0.04333333333333334
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.06130275691848844
            name: Cosine Map@100
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: dim 512
          type: dim_512
        metrics:
          - type: cosine_accuracy@1
            value: 0.01
            name: Cosine Accuracy@1
          - type: cosine_accuracy@3
            value: 0.01
            name: Cosine Accuracy@3
          - type: cosine_accuracy@5
            value: 0.01
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 0.01
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.01
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.01
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.01
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.005
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.002
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 0.006
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 0.01
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 0.01
            name: Cosine Recall@10
          - type: cosine_ndcg@10
            value: 0.01
            name: Cosine Ndcg@10
          - type: cosine_mrr@10
            value: 0.01
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.019316331411936505
            name: Cosine Map@100
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: dim 256
          type: dim_256
        metrics:
          - type: cosine_accuracy@1
            value: 0.01
            name: Cosine Accuracy@1
          - type: cosine_accuracy@3
            value: 0.01
            name: Cosine Accuracy@3
          - type: cosine_accuracy@5
            value: 0.01
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 0.03
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.01
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.01
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.01
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.015
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.002
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 0.006
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 0.01
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 0.03
            name: Cosine Recall@10
          - type: cosine_ndcg@10
            value: 0.020819890355577977
            name: Cosine Ndcg@10
          - type: cosine_mrr@10
            value: 0.013333333333333334
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.028978936077832484
            name: Cosine Map@100
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: dim 128
          type: dim_128
        metrics:
          - type: cosine_accuracy@1
            value: 0.01
            name: Cosine Accuracy@1
          - type: cosine_accuracy@3
            value: 0.01
            name: Cosine Accuracy@3
          - type: cosine_accuracy@5
            value: 0.01
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 0.01
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.01
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.01
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.01
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.005
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.002
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 0.006
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 0.01
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 0.01
            name: Cosine Recall@10
          - type: cosine_ndcg@10
            value: 0.01
            name: Cosine Ndcg@10
          - type: cosine_mrr@10
            value: 0.01
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.027544667112101906
            name: Cosine Map@100
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: dim 64
          type: dim_64
        metrics:
          - type: cosine_accuracy@1
            value: 0.05
            name: Cosine Accuracy@1
          - type: cosine_accuracy@3
            value: 0.05
            name: Cosine Accuracy@3
          - type: cosine_accuracy@5
            value: 0.05
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 0.07
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.05
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.05
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.05
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.035
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.01
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 0.03
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 0.05
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 0.07
            name: Cosine Recall@10
          - type: cosine_ndcg@10
            value: 0.06081989035557797
            name: Cosine Ndcg@10
          - type: cosine_mrr@10
            value: 0.05333333333333334
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.0838507480466874
            name: Cosine Map@100

CodeBERT Fine-tuned on CrewAI (LR=2e-05)

This is a sentence-transformers model finetuned from microsoft/codebert-base. 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: microsoft/codebert-base
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 dimensions
  • 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': False, 'architecture': 'RobertaModel'})
  (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})
)

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("itsanan/codebert-finetuned-crewai-base")
# Run inference
sentences = [
    'Example usage of test_status_code_and_content_type',
    'def test_status_code_and_content_type(self, mock_bs, mock_get):\n        for status in [200, 201, 301]:\n            mock_get.return_value = self.setup_mock_response(\n                f"<html><body>Status {status}</body></html>", status_code=status\n            )\n            mock_bs.return_value = self.setup_mock_soup(f"Status {status}")\n            result = WebPageLoader().load(\n                SourceContent(f"https://example.com/{status}")\n            )\n            assert result.metadata["status_code"] == status\n\n        for ctype in ["text/html", "text/plain", "application/xhtml+xml"]:\n            mock_get.return_value = self.setup_mock_response(\n                "<html><body>Content</body></html>", content_type=ctype\n            )\n            mock_bs.return_value = self.setup_mock_soup("Content")\n            result = WebPageLoader().load(SourceContent("https://example.com"))\n            assert result.metadata["content_type"] == ctype',
    'def set_crew(self, crew: Any) -> Memory:\n        """Set the crew for this memory instance."""\n        self.crew = crew\n        return self',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.9009, 0.9087],
#         [0.9009, 1.0000, 0.9053],
#         [0.9087, 0.9053, 1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.04
cosine_accuracy@3 0.04
cosine_accuracy@5 0.04
cosine_accuracy@10 0.06
cosine_precision@1 0.04
cosine_precision@3 0.04
cosine_precision@5 0.04
cosine_precision@10 0.03
cosine_recall@1 0.008
cosine_recall@3 0.024
cosine_recall@5 0.04
cosine_recall@10 0.06
cosine_ndcg@10 0.0508
cosine_mrr@10 0.0433
cosine_map@100 0.0613

Information Retrieval

Metric Value
cosine_accuracy@1 0.01
cosine_accuracy@3 0.01
cosine_accuracy@5 0.01
cosine_accuracy@10 0.01
cosine_precision@1 0.01
cosine_precision@3 0.01
cosine_precision@5 0.01
cosine_precision@10 0.005
cosine_recall@1 0.002
cosine_recall@3 0.006
cosine_recall@5 0.01
cosine_recall@10 0.01
cosine_ndcg@10 0.01
cosine_mrr@10 0.01
cosine_map@100 0.0193

Information Retrieval

Metric Value
cosine_accuracy@1 0.01
cosine_accuracy@3 0.01
cosine_accuracy@5 0.01
cosine_accuracy@10 0.03
cosine_precision@1 0.01
cosine_precision@3 0.01
cosine_precision@5 0.01
cosine_precision@10 0.015
cosine_recall@1 0.002
cosine_recall@3 0.006
cosine_recall@5 0.01
cosine_recall@10 0.03
cosine_ndcg@10 0.0208
cosine_mrr@10 0.0133
cosine_map@100 0.029

Information Retrieval

Metric Value
cosine_accuracy@1 0.01
cosine_accuracy@3 0.01
cosine_accuracy@5 0.01
cosine_accuracy@10 0.01
cosine_precision@1 0.01
cosine_precision@3 0.01
cosine_precision@5 0.01
cosine_precision@10 0.005
cosine_recall@1 0.002
cosine_recall@3 0.006
cosine_recall@5 0.01
cosine_recall@10 0.01
cosine_ndcg@10 0.01
cosine_mrr@10 0.01
cosine_map@100 0.0275

Information Retrieval

Metric Value
cosine_accuracy@1 0.05
cosine_accuracy@3 0.05
cosine_accuracy@5 0.05
cosine_accuracy@10 0.07
cosine_precision@1 0.05
cosine_precision@3 0.05
cosine_precision@5 0.05
cosine_precision@10 0.035
cosine_recall@1 0.01
cosine_recall@3 0.03
cosine_recall@5 0.05
cosine_recall@10 0.07
cosine_ndcg@10 0.0608
cosine_mrr@10 0.0533
cosine_map@100 0.0839

Training Details

Training Dataset

Unnamed Dataset

  • Size: 900 training samples
  • Columns: anchor and positive
  • Approximate statistics based on the first 900 samples:
    anchor positive
    type string string
    details
    • min: 6 tokens
    • mean: 13.86 tokens
    • max: 141 tokens
    • min: 20 tokens
    • mean: 253.07 tokens
    • max: 512 tokens
  • Samples:
    anchor positive
    How to implement LLMCallCompletedEvent? class LLMCallCompletedEvent(LLMEventBase):
    """Event emitted when a LLM call completes"""

    type: str = "llm_call_completed"
    messages: str | list[dict[str, Any]] | None = None
    response: Any
    call_type: LLMCallType
    model: str | None = None
    How does get_llm_response work in Python? def get_llm_response(
    llm: LLM | BaseLLM,
    messages: list[LLMMessage],
    callbacks: list[TokenCalcHandler],
    printer: Printer,
    from_task: Task | None = None,
    from_agent: Agent | LiteAgent | None = None,
    response_model: type[BaseModel] | None = None,
    executor_context: CrewAgentExecutor | LiteAgent | None = None,
    ) -> str:
    """Call the LLM and return the response, handling any invalid responses.

    Args:
    llm: The LLM instance to call.
    messages: The messages to send to the LLM.
    callbacks: List of callbacks for the LLM call.
    printer: Printer instance for output.
    from_task: Optional task context for the LLM call.
    from_agent: Optional agent context for the LLM call.
    response_model: Optional Pydantic model for structured outputs.
    executor_context: Optional executor context for hook invocation.

    Returns:
    The response from the LLM as a string.

    Raises:
    Exception: If an error ...
    Example usage of _run def _run(
    self,
    **kwargs: Any,
    ) -> Any:
    website_url: str | None = kwargs.get("website_url", self.website_url)
    if website_url is None:
    raise ValueError("Website URL must be provided.")

    page = requests.get(
    website_url,
    timeout=15,
    headers=self.headers,
    cookies=self.cookies if self.cookies else {},
    )

    page.encoding = page.apparent_encoding
    parsed = BeautifulSoup(page.text, "html.parser")

    text = "The following text is scraped website content:\n\n"
    text += parsed.get_text(" ")
    text = re.sub("[ \t]+", " ", text)
    return re.sub("\s+\n\s+", "\n", text)
  • Loss: 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
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • gradient_accumulation_steps: 32
  • learning_rate: 2e-05
  • weight_decay: 0.01
  • num_train_epochs: 20
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • fp16: True
  • load_best_model_at_end: True
  • optim: adamw_torch
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 32
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.01
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 20
  • max_steps: -1
  • lr_scheduler_type: cosine
  • lr_scheduler_kwargs: None
  • 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
  • bf16: False
  • fp16: True
  • 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}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • project: huggingface
  • trackio_space_id: trackio
  • 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: no
  • 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: True
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss dim_768_cosine_ndcg@10 dim_512_cosine_ndcg@10 dim_256_cosine_ndcg@10 dim_128_cosine_ndcg@10 dim_64_cosine_ndcg@10
0.9956 7 - 0.04 0.04 0.03 0.0262 0.0308
1.2844 10 7.098 - - - - -
1.8533 14 - 0.0362 0.02 0.0354 0.0154 0.0508
2.5689 20 6.5515 - - - - -
2.7111 21 - 0.0508 0.01 0.0208 0.01 0.0608
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.12.12
  • Sentence Transformers: 5.2.2
  • Transformers: 4.57.6
  • PyTorch: 2.9.0+cu126
  • Accelerate: 1.12.0
  • Datasets: 4.0.0
  • Tokenizers: 0.22.2

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