JacobLinCool's picture
End of training
a4da7e0 verified
metadata
tags:
  - sentence-transformers
  - sentence-similarity
  - feature-extraction
  - dense
  - generated_from_trainer
  - dataset_size:400
  - loss:MultipleNegativesRankingLoss
base_model: Qwen/Qwen3-Embedding-0.6B
widget:
  - source_sentence: |-
      Wrapper for calling the clean method of services attribute

              :return: None
    sentences:
      - |-
        def import_from_nhmmer_table(hmmout_path):
                
                
                
                
                res=HMMSearchResult()
                res.fields = [
                               SequenceSearchResult.QUERY_ID_FIELD,
                               SequenceSearchResult.HMM_NAME_FIELD,
                               SequenceSearchResult.ALIGNMENT_LENGTH_FIELD,
                               SequenceSearchResult.QUERY_FROM_FIELD,
                               SequenceSearchResult.QUERY_TO_FIELD,
                               SequenceSearchResult.HIT_FROM_FIELD,
                               SequenceSearchResult.HIT_TO_FIELD,
                               SequenceSearchResult.ALIGNMENT_BIT_SCORE,
                               SequenceSearchResult.ALIGNMENT_DIRECTION,
                               ]
                
                for row in [x.rstrip().split() for x in open(hmmout_path) if not x.startswith()]:
                    alifrom    = int(row[6])
                    alito      = int(row[7])
                    aln_length = (alito-alifrom if alito-alifrom>0 else alifrom-alito)
                    res.results.append([row[0],
                                        row[2],
                                        aln_length,
                                        int(row[4]),
                                        int(row[5]),
                                        alifrom,
                                        alito,
                                        row[13],
                                        alito > alifrom
                                        ])
                return res
      - |-
        def clean(self):
                
                logger.debug("Cleaning configuration objects before configuration sending:")
                types_creations = self.__class__.types_creations
                for o_type in types_creations:
                    (_, _, inner_property, _, _) = types_creations[o_type]
                    logger.debug("  . for %s", inner_property, )
                    inner_object = getattr(self, inner_property)
                    inner_object.clean()
      - |-
        def index_modules(idx=None, path=None):
            
            suppress_output()
            modules = defaultdict(list)
            pkglist = pkgutil.walk_packages(onerror=lambda x: True)
            print(pkglist)
            if path:
                pkglist = pkgutil.walk_packages(path, onerror=lambda x: True)
            for modl, name, ispkg in pkglist:
                try:
                    path = os.path.join(modl.path, name.split()[-1])
                except AttributeError:
                    
                    continue

                if os.path.isdir(path):
                    path = os.path.join(path, )
                path += 

                objs = []

                if os.path.exists(path):
                    try:
                        objs = read_objs_from_path(path)
                    except:
                        continue
                elif not re.search(MODULE_BLACKLIST, name):
                    try:
                        mod = __import__(name)
                        objs = [k for k in dir(mod) if not k.startswith()]
                    except:
                        continue
                else:
                    continue

                for obj in objs:
                    if name not in modules[obj]:
                        modules[obj].append(name)
            suppress_output(True)
            return merge_dicts(idx, dict(modules))
  - source_sentence: Try to import the aeneas package and return ``True`` if that fails.
    sentences:
      - |-
        def check_import():
            
            try:
                import aeneas
                print_success(u"aeneas         OK")
                return False
            except ImportError:
                print_error(u"aeneas         ERROR")
                print_info(u"  Unable to load the aeneas Python package")
                print_info(u"  This error is probably caused by:")
                print_info(u"    A. you did not download/git-clone the aeneas package properly; or")
                print_info(u"    B. you did not install the required Python packages:")
                print_info(u"      1. BeautifulSoup4")
                print_info(u"      2. lxml")
                print_info(u"      3. numpy")
            except Exception as e:
                print_error(e)
            return True
      - |-
        def simplify(source, kink=20):
            
            source_coord = map(lambda o: {"lng": o.coordinates[0], "lat": o.coordinates[1]}, source)

            
            
            
            F = (math.pi / 180.0) * 0.5
            index = [] 
            sig_start = [] 
            sig_end = []

            
            count = len(source_coord)
            if count < 3:
                return source_coord 

            

            band_sqr = kink * 360.0 / (2.0 * math.pi * 6378137.0) 
            band_sqr *= band_sqr
            n_dest = 0
            sig_start[0] = 0
            sig_end[0] = count - 1
            n_stack = 1

            
            while n_stack > 0:
                
                start = sig_start[n_stack - 1]
                end = sig_end[n_stack - 1]
                n_stack -= 1

                if (end - start) > 1: 
                    
                    x12 = source[end]["lng"] - source[start]["lng"]
                    y12 = source[end]["lat"] - source[start]["lat"]
                    if math.fabs(x12) > 180.0:
                        x12 = 360.0 - math.fabs(x12)
                    x12 *= math.cos(F * (source[end]["lat"] + source[start]["lat"])) 
                    d12 = (x12 * x12) + (y12 * y12)

                    i = start + 1
                    sig = start
                    max_dev_sqr = -1.0
                    while i < end:
                        x13 = source[i]["lng"] - source[start]["lng"]
                        y13 = source[i]["lat"] - source[start]["lat"]
                        if math.fabs(x13) > 180.0:
                            x13 = 360.0 - math.fabs(x13)
                        x13 *= math.cos(F * (source[i]["lat"] + source[start]["lat"]))
                        d13 = (x13 * x13) + (y13 * y13)
                        x23 = source[i]["lng"] - source[end]["lng"]
                        y23 = source[i]["lat"] - source[end]["lat"]
                        if math.fabs(x23) > 180.0:
                            x23 = 360.0 - math.fabs(x23)
                        x23 *= math.cos(F * (source[i]["lat"] + source[end]["lat"]))
                        d23 = (x23 * x23) + (y23 * y23)

                        if d13 >= (d12 + d23):
                            dev_sqr = d23
                        elif d23 >= (d12 + d13):
                            dev_sqr = d13
                        else:
                            dev_sqr = (x13 * y12 - y13 * x12) * (x13 * y12 - y13 * x12) / d12 
                        if dev_sqr > max_dev_sqr:
                            sig = i
                            max_dev_sqr = dev_sqr
                        i += 1


                    if max_dev_sqr < band_sqr: 
                    
                        index[n_dest] = start
                        n_dest += 1
                    else: 
                        n_stack += 1
                        sig_start[n_stack - 1] = sig
                        sig_end[n_stack - 1] = end
                        n_stack += 1
                        sig_start[n_stack - 1] = start
                        sig_end[n_stack - 1] = sig

                else:  
                    index[n_dest] = start
                    n_dest += 1

            
            index[n_dest] = count - 1
            n_dest += 1

            
            r = []
            for i in range(0, n_dest):
                r.append(source_coord[index[i]])

            return map(lambda o:  {"type": "Point","coordinates": [o.lng, o.lat]}, r)
      - "def smooth(data, fw):\r\n    \r\n    if fw == 0:\r\n        fdata = data\r\n    else:\r\n        fdata = lfilter(np.ones(fw)/fw, 1, data)\r\n    return fdata"
  - source_sentence: Start response processing.
    sentences:
      - |-
        async def start(self, connection: ) -> :
                
                self._closed = False
                self._protocol = connection.protocol
                self._connection = connection

                with self._timer:
                    while True:
                        
                        try:
                            message, payload = await self._protocol.read()  
                        except http.HttpProcessingError as exc:
                            raise ClientResponseError(
                                self.request_info, self.history,
                                status=exc.code,
                                message=exc.message, headers=exc.headers) from exc

                        if (message.code < 100 or
                                message.code > 199 or message.code == 101):
                            break

                        if self._continue is not None:
                            set_result(self._continue, True)
                            self._continue = None

                
                payload.on_eof(self._response_eof)

                
                self.version = message.version
                self.status = message.code
                self.reason = message.reason

                
                self._headers = message.headers  
                self._raw_headers = message.raw_headers  

                
                self.content = payload

                
                for hdr in self.headers.getall(hdrs.SET_COOKIE, ()):
                    try:
                        self.cookies.load(hdr)
                    except CookieError as exc:
                        client_logger.warning(
                            , exc)
                return self
      - |-
        def solve(self, verbose=False, allow_brute_force=True):
                
                while not self.is_solved:
                    
                    self._update()

                    
                    singles_found = False or self._fill_naked_singles() or self._fill_hidden_singles()

                    
                    
                    
                    if not singles_found:
                        if allow_brute_force:
                            solution = None
                            try:
                                dlxs = DancingLinksSolver(copy.deepcopy(self._matrix))
                                solutions = dlxs.solve()
                                solution = next(solutions)
                                more_solutions = next(solutions)
                            except StopIteration as e:
                                if solution is not None:
                                    self._matrix = solution
                                else:
                                    raise SudokuHasNoSolutionError("Dancing Links solver could not find any solution.")
                            except Exception as e:
                                raise SudokuHasNoSolutionError("Brute Force method failed.")
                            else:
                                
                                
                                raise SudokuHasMultipleSolutionsError("This Sudoku has multiple solutions!")
                            self.solution_steps.append("BRUTE FORCE - Dancing Links")
                            break
                        else:
                            print(self)
                            raise SudokuTooDifficultError("This Sudoku requires more advanced methods!")
                if verbose:
                    print("Sudoku solved in {0} iterations!\n{1}".format(len(self.solution_steps), self))
                    for step in self.solution_steps:
                        print(step)
      - |-
        def get_peer_ips(self):
                
                presponse = [ord(i) for i in self.tracker_response[]]
                while presponse:
                    peer_ip = ((.join(str(x) for x in presponse[0:4]),
                               256 * presponse[4] + presponse[5]))
                    if peer_ip not in self.peer_ips:
                        self.peer_ips.append(peer_ip)
                    presponse = presponse[6:]
  - source_sentence: >-
      Setter method for ipv6_phy_intf_cmds, mapped from YANG variable
      /interface/fortygigabitethernet/ipv6/ipv6_phy_intf_cmds (container)
          If this variable is read-only (config: false) in the
          source YANG file, then _set_ipv6_phy_intf_cmds is considered as a private
          method. Backends looking to populate this variable should
          do so via calling thisObj._set_ipv6_phy_intf_cmds() directly.
    sentences:
      - |-
        def _trim_xpath(self, xpath, prop):
                

                xroot = self._get_xroot_for(prop)

                if xroot is None and isinstance(xpath, string_types):
                    xtags = xpath.split(XPATH_DELIM)

                    if xtags[-1] in _iso_tag_primitives:
                        xroot = XPATH_DELIM.join(xtags[:-1])

                return xroot
      - |-
        def _set_ipv6_phy_intf_cmds(self, v, load=False):
            
            if hasattr(v, "_utype"):
              v = v._utype(v)
            try:
              t = YANGDynClass(v,base=ipv6_phy_intf_cmds.ipv6_phy_intf_cmds, is_container=, presence=False, yang_name="ipv6-phy-intf-cmds", rest_name="", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions={u: {u: u, u: None, u: u}}, namespace=, defining_module=, yang_type=, is_config=True)
            except (TypeError, ValueError):
              raise ValueError({
                  : ,
                  : "container",
                  : ,
                })

            self.__ipv6_phy_intf_cmds = t
            if hasattr(self, ):
              self._set()
      - |-
        def create_snapshot(self, xml_bytes):
                
                root = XML(xml_bytes)
                snapshot_id = root.findtext("snapshotId")
                volume_id = root.findtext("volumeId")
                status = root.findtext("status")
                start_time = root.findtext("startTime")
                start_time = datetime.strptime(
                    start_time[:19], "%Y-%m-%dT%H:%M:%S")
                progress = root.findtext("progress")[:-1]
                progress = float(progress or "0") / 100.
                return model.Snapshot(
                    snapshot_id, volume_id, status, start_time, progress)
  - source_sentence: |-
      Generates samples of text from the provided vocabulary.

        Args:
          plain_vocab: vocabulary.
          distribution: distribution.
          train_samples: samples for training.
          length: length.

        Returns:
          train_indices (np.array of Integers): random integers for training.
            shape = [num_samples, length]
          test_indices (np.array of Integers): random integers for testing.
            shape = [num_samples, length]
          plain_vocab   (list of Integers): unique vocabularies.
    sentences:
      - |-
        def late_filling(target, pressure=,
                         Pc_star=,
                         Swp_star=0.2, eta=3):
            r
            element = pressure.split()[0]
            network = target.project.network
            phase = target.project.find_phase(target)
            pc_star = phase[Pc_star]
            Pc = phase[pressure]
            
                Ts = network.map_throats(throats=target.Ts, origin=target)
                values = values[Ts]
            else:
                Ps = network.map_pores(pores=target.Ps, origin=target)
                values = values[Ps]
            return values
      - |-
        def switch(self, name):
                
                try:
                    switch = self.storage[self.__namespaced(name)]
                except KeyError:
                    if not self.autocreate:
                        raise ValueError("No switch named  registered in " % (name, self.namespace))

                    switch = self.__create_and_register_disabled_switch(name)

                switch.manager = self
                return switch
      - |-
        def generate_plaintext_random(plain_vocab, distribution, train_samples,
                                      length):
          
          if distribution is not None:
            assert len(distribution) == len(plain_vocab)

          train_indices = np.random.choice(
              range(len(plain_vocab)), (train_samples, length), p=distribution)

          return train_indices
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
  - cosine_accuracy@1
  - 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@1
  - cosine_ndcg@5
  - cosine_ndcg@10
  - cosine_mrr@1
  - cosine_mrr@5
  - cosine_mrr@10
  - cosine_map@100
model-index:
  - name: SentenceTransformer based on Qwen/Qwen3-Embedding-0.6B
    results:
      - task:
          type: information-retrieval
          name: Information Retrieval
        dataset:
          name: Unknown
          type: unknown
        metrics:
          - type: cosine_accuracy@1
            value: 0.99
            name: Cosine Accuracy@1
          - type: cosine_accuracy@5
            value: 1
            name: Cosine Accuracy@5
          - type: cosine_accuracy@10
            value: 1
            name: Cosine Accuracy@10
          - type: cosine_precision@1
            value: 0.99
            name: Cosine Precision@1
          - type: cosine_precision@3
            value: 0.3333333333333334
            name: Cosine Precision@3
          - type: cosine_precision@5
            value: 0.19999999999999996
            name: Cosine Precision@5
          - type: cosine_precision@10
            value: 0.09999999999999998
            name: Cosine Precision@10
          - type: cosine_recall@1
            value: 0.99
            name: Cosine Recall@1
          - type: cosine_recall@3
            value: 1
            name: Cosine Recall@3
          - type: cosine_recall@5
            value: 1
            name: Cosine Recall@5
          - type: cosine_recall@10
            value: 1
            name: Cosine Recall@10
          - type: cosine_ndcg@1
            value: 0.99
            name: Cosine Ndcg@1
          - type: cosine_ndcg@5
            value: 0.9963092975357145
            name: Cosine Ndcg@5
          - type: cosine_ndcg@10
            value: 0.9963092975357145
            name: Cosine Ndcg@10
          - type: cosine_mrr@1
            value: 0.99
            name: Cosine Mrr@1
          - type: cosine_mrr@5
            value: 0.995
            name: Cosine Mrr@5
          - type: cosine_mrr@10
            value: 0.995
            name: Cosine Mrr@10
          - type: cosine_map@100
            value: 0.995
            name: Cosine Map@100

SentenceTransformer based on Qwen/Qwen3-Embedding-0.6B

This is a sentence-transformers model finetuned from Qwen/Qwen3-Embedding-0.6B. 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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: Qwen/Qwen3-Embedding-0.6B
  • Maximum Sequence Length: 32768 tokens
  • Output Dimensionality: 1024 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 32768, 'do_lower_case': False, 'architecture': 'Qwen3Model'})
  (1): Pooling({'word_embedding_dimension': 1024, '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()
)

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("JacobLinCool/Qwen3-Embedding-0.6B-GIR-1")
# Run inference
queries = [
    "Generates samples of text from the provided vocabulary.\n\n  Args:\n    plain_vocab: vocabulary.\n    distribution: distribution.\n    train_samples: samples for training.\n    length: length.\n\n  Returns:\n    train_indices (np.array of Integers): random integers for training.\n      shape = [num_samples, length]\n    test_indices (np.array of Integers): random integers for testing.\n      shape = [num_samples, length]\n    plain_vocab   (list of Integers): unique vocabularies.",
]
documents = [
    'def generate_plaintext_random(plain_vocab, distribution, train_samples,\n                              length):\n  \n  if distribution is not None:\n    assert len(distribution) == len(plain_vocab)\n\n  train_indices = np.random.choice(\n      range(len(plain_vocab)), (train_samples, length), p=distribution)\n\n  return train_indices',
    'def switch(self, name):\n        \n        try:\n            switch = self.storage[self.__namespaced(name)]\n        except KeyError:\n            if not self.autocreate:\n                raise ValueError("No switch named  registered in " % (name, self.namespace))\n\n            switch = self.__create_and_register_disabled_switch(name)\n\n        switch.manager = self\n        return switch',
    'def late_filling(target, pressure=,\n                 Pc_star=,\n                 Swp_star=0.2, eta=3):\n    r\n    element = pressure.split()[0]\n    network = target.project.network\n    phase = target.project.find_phase(target)\n    pc_star = phase[Pc_star]\n    Pc = phase[pressure]\n    \n        Ts = network.map_throats(throats=target.Ts, origin=target)\n        values = values[Ts]\n    else:\n        Ps = network.map_pores(pores=target.Ps, origin=target)\n        values = values[Ps]\n    return values',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 1024] [3, 1024]

# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[ 0.8344, -0.0822,  0.0233]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.99
cosine_accuracy@5 1.0
cosine_accuracy@10 1.0
cosine_precision@1 0.99
cosine_precision@3 0.3333
cosine_precision@5 0.2
cosine_precision@10 0.1
cosine_recall@1 0.99
cosine_recall@3 1.0
cosine_recall@5 1.0
cosine_recall@10 1.0
cosine_ndcg@1 0.99
cosine_ndcg@5 0.9963
cosine_ndcg@10 0.9963
cosine_mrr@1 0.99
cosine_mrr@5 0.995
cosine_mrr@10 0.995
cosine_map@100 0.995

Training Details

Training Dataset

Unnamed Dataset

  • Size: 400 training samples
  • Columns: query and code
  • Approximate statistics based on the first 400 samples:
    query code
    type string string
    details
    • min: 2 tokens
    • mean: 67.12 tokens
    • max: 3156 tokens
    • min: 24 tokens
    • mean: 126.98 tokens
    • max: 1236 tokens
  • Samples:
    query code
    For memory actions, get a list of addresses it operates on.

    :param SimAction action: The action object to work with.
    :return: A list of addresses that are accessed with that action.
    :rtype: list
    def _get_actual_addrs(action, state):


    if action.actual_addrs is None:

    addr_list = {0x60000000}
    else:
    addr_list = set(action.actual_addrs)

    return addr_list
    Construct the input file of the calculation. def make_input(self, with_header=False):

    s = str(self.input)
    if with_header: s = str(self) + "\n" + s
    return s
    Check worker status route def check_worker_status():

    if not in request.args:
    resp = {"status": "bad request"}
    return jsonify(**resp)
    else:
    worker_id = request.args[]
    assignment_id = request.args[]
    allow_repeats = CONFIG.getboolean(, )
    if allow_repeats:
    try:
    part = Participant.query.<br> filter(Participant.workerid == worker_id).<br> filter(Participant.assignmentid == assignment_id).one()
    status = part.status
    except exc.SQLAlchemyError:
    status = NOT_ACCEPTED
    else:
    try:
    matches = Participant.query.<br> filter(Participant.workerid == worker_id).all()
    numrecs = len(matches)
    if numrecs==0:
    status = NOT_ACCEPTED
    else:
    status = max([record.status for record in matches])
    except exc.SQLAlchemyError:
    ...
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 100 evaluation samples
  • Columns: query and code
  • Approximate statistics based on the first 100 samples:
    query code
    type string string
    details
    • min: 5 tokens
    • mean: 66.56 tokens
    • max: 548 tokens
    • min: 24 tokens
    • mean: 142.11 tokens
    • max: 901 tokens
  • Samples:
    query code
    Return the value of the android prefixed attribute in a specific tag.

    This function will always try to get the attribute with a android: prefix first,
    and will try to return the attribute without the prefix, if the attribute could not be found.
    This is useful for some broken AndroidManifest.xml, where no android namespace is set,
    but could also indicate malicious activity (i.e. wrongly repackaged files).
    A warning is printed if the attribute is found without a namespace prefix.

    If you require to get the exact result you need to query the tag directly:

    example::
    >>> from lxml.etree import Element
    >>> tag = Element('bar', nsmap={'android': 'http://schemas.android.com/apk/res/android'})
    >>> tag.set('{http://schemas.android.com/apk/res/android}foobar', 'barfoo')
    >>> tag.set('name', 'baz')
    # Assume that a is some APK object
    >>> a.get_value_from_tag(tag, 'name'...
    def get_value_from_tag(self, tag, attribute):




    value = tag.get(self._ns(attribute))
    if value is None:
    value = tag.get(attribute)

    if value:

    log.warning("Failed to get the attribute on tag with namespace. "
    "But found the same attribute without namespace!".format(attribute, tag.tag))
    return value
    Get information about this object as a dictionary. Used by WebSocket interface to pass some
    relevant information to client applications.
    def get_as_datadict(self):

    return dict(type=self.class.name, tags=list(self.tags))
    Makes forecast with the estimated model

    Parameters
    ----------
    h : int (default : 5)
    How many steps ahead would you like to forecast?

    past_values : int (default : 20)
    How many past observations to show on the forecast graph?

    intervals : Boolean
    Would you like to show 95% prediction intervals for the forecast?

    Returns
    ----------
    - Plot of the forecast
    def plot_predict(self,h=5,past_values=20,intervals=True,**kwargs):

    import matplotlib.pyplot as plt
    import seaborn as sns

    figsize = kwargs.get(,(10,7))

    if self.latent_variables.estimated is False:
    raise Exception("No latent variables estimated!")
    else:

    scale, shape, skewness = self._get_scale_and_shape(self.latent_variables.get_z_values(transformed=True))
    previous_value = self.data[-1]
    forecasted_values = np.ones(h)*self.states[-1]
    date_index = self.shift_dates(h)
    simulations = 10000
    sim_vector = np.zeros([simulations,h])
    t_params = self.transform_z()

    for n in range(0,simulations):
    rnd_q = np.random.normal(0,np.sqrt(self.latent_variables.get_z_values(transformed=True)[0]),h)
    exp = forecasted_values.copy()

    for t in range(0,h):
    if t == 0:...
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_train_batch_size: 64
  • per_device_eval_batch_size: 64
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • seed: 2025
  • bf16: True
  • load_best_model_at_end: True
  • optim: adamw_torch
  • push_to_hub: True
  • hub_model_id: JacobLinCool/Qwen3-Embedding-0.6B-GIR-1
  • hub_private_repo: False
  • gradient_checkpointing: True
  • eval_on_start: True
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 64
  • per_device_eval_batch_size: 64
  • 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: 5e-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: 1
  • 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: 2025
  • 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: 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
  • 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: True
  • resume_from_checkpoint: None
  • hub_model_id: JacobLinCool/Qwen3-Embedding-0.6B-GIR-1
  • hub_strategy: every_save
  • hub_private_repo: False
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: True
  • 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: True
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: False
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Validation Loss cosine_ndcg@10
0 0 0.0616 0.9926
1.0 7 0.0358 0.9963
-1 -1 - 0.9963
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.11.11
  • Sentence Transformers: 5.1.1
  • Transformers: 4.56.2
  • PyTorch: 2.8.0+cu128
  • Accelerate: 1.10.1
  • Datasets: 4.1.1
  • Tokenizers: 0.22.1

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

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