Ë
    l^(hëº  ã                  ó€  — d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m	Z	 d dl
mZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d dlZd dlZd d
lmZmZ d dlmZ d dlmZ  d dl!m"Z"m#Z# d dl$m%Z% d dlm&Z& d dl'm(Z( d dlm)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>  e>«       rd dl?m@Z@mAZAmBZBmCZCmDZD  ejŠ                  eF«      ZGerd dlHmIZI d dlJmKZK d dlLmMZM  G d„ de)«      ZN e2d «       G d!„ d"eN«      «       ZOg d#¢ZPg d$¢ZQd*d%„ZRd+d&„ZSe G d'„ d(e«      «       ZTd,d)„ZUy)-é    )ÚannotationsN)ÚCounterÚdefaultdict)Úcopy)Ú	dataclassÚfieldÚfields)ÚPath)Úpython_version©Úindent)ÚTYPE_CHECKINGÚAnyÚLiteral)ÚCardDataÚ	ModelCard)Údataset_info)Ú
model_info)Ú
EvalResultÚeval_results_to_model_index)Ú	yaml_dump)Únn)Útqdm)ÚTrainerCallback)ÚCodeCarbonCallback)Úmake_markdown_table)ÚTrainerControlÚTrainerState)Ú
deprecated©Ú__version__)ÚStaticEmbeddingÚTransformer)Ú$SentenceTransformerTrainingArguments)ÚfullnameÚis_accelerate_availableÚis_datasets_available)ÚDatasetÚDatasetDictÚIterableDatasetÚIterableDatasetDictÚValue)ÚSentenceEvaluator)ÚSentenceTransformer)ÚSentenceTransformerTrainerc                  óœ   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 	 	 	 	 	 	 d
d„Zˆ xZS )Ú$SentenceTransformerModelCardCallbackc                ó0   •— t         ‰| �  «        || _        y ©N)ÚsuperÚ__init__Údefault_args_dict)Úselfr6   Ú	__class__s     €ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentence_transformers/model_card.pyr5   z-SentenceTransformerModelCardCallback.__init__/   s   ø€ Ü‰ÑÔØ!2ˆÕó    c                ó´  — ddl m}m}m}	 |j                  j                  d«       |j                  j                  D �
cg c]  }
t        |
t        «      sŒ|
‘Œ }}
|r|d   |j                  _
        |j                  rU|j                  j                  |j                  |j                  j                  |j                  d«      |j                  _        |j                  rU|j                  j                  |j                  |j                  j                   |j                  d«      |j                  _        t        |j                  t"        «      r$t%        |j                  j'                  «       «      }n|j                  g}d}|t)        |«      k  r]||   }t        ||	||f«      r5t+        |d«      r)|j                  |vr|j-                  |j                  «       |dz  }|t)        |«      k  rŒ]|j                  j/                  |«       |j                  j0                  s9|j                  xs |j                  x}r|j                  j3                  |«       y y y c c}
w )Nr   )ÚAdaptiveLayerLossÚMatryoshka2dLossÚMatryoshkaLossÚgenerated_from_trainerÚtrainÚevalÚlossé   )Úsentence_transformers.lossesr<   r=   r>   Úmodel_card_dataÚadd_tagsÚcallback_handlerÚ	callbacksÚ
isinstancer   Úcode_carbon_callbackÚtrain_datasetÚextract_dataset_metadataÚtrain_datasetsrB   Úeval_datasetÚeval_datasetsÚdictÚlistÚvaluesÚlenÚhasattrÚappendÚ
set_lossesÚwidgetÚset_widget_examples)r7   ÚargsÚstateÚcontrolÚmodelÚtrainerÚkwargsr<   r=   r>   ÚcallbackrH   ÚlossesÚloss_idxrB   Údatasets                   r9   Úon_init_endz0SentenceTransformerModelCardCallback.on_init_end3   s  € ÷ 	eÑdà×Ñ×&Ñ&Ð'?Ô@ð &-×%=Ñ%=×%GÑ%Gö
Ø!Ì:ÐV^Ô`rÕKsŠHð
ˆ	ð 
ñ Ø9BÀ1¹ˆE×!Ñ!Ô6ð × Ò Ø38×3HÑ3H×3aÑ3aØ×%Ñ% u×'<Ñ'<×'KÑ'KÈWÏ\É\Ð[bó4ˆE×!Ñ!Ô0ð ×ÒØ27×2GÑ2G×2`Ñ2`Ø×$Ñ$ e×&;Ñ&;×&IÑ&IÈ7Ï<É<ÐY_ó3ˆE×!Ñ!Ô/ô �g—l‘l¤DÔ)Ü˜'Ÿ,™,×-Ñ-Ó/Ó0‰Fà—l‘l�^ˆFð ˆØœ˜V›Ò$Ø˜(Ñ#ˆDä˜4 .Ð2CÐEUÐ!VÔWÜ˜D &Ô)Ø—I‘I VÑ+à—‘˜dŸi™iÔ(Ø˜‰MˆHð œ˜V›Ó$ð 	×Ñ×(Ñ(¨Ô0ð ×$Ñ$×+Ò+¸G×<PÑ<PÒ<iÐT[×TiÑTiÐ1i°Ð1iØ×!Ñ!×5Ñ5°gÕ>ð 2jÐ+ùòK
s   ¾IÁIc                ób  — h d£}|j                  «       }|j                  «       D ��	ci c]  \  }}	||vsŒ||	“Œ c}	}|j                  _        |j                  «       D ��	ci c],  \  }}	||vr#|| j                  v r|	| j                  |   k7  r||	“Œ. c}	}|j                  _        y c c}	}w c c}	}w )N>   Údo_evalÚdo_testÚdo_trainÚrun_nameÚ	hub_tokenÚ	report_toÚ
eval_delayÚ
eval_stepsÚ
output_dirÚ
save_stepsÚlogging_dirÚlogging_stepsÚsave_strategyÚlogging_strategyÚsave_total_limitÚgreater_is_betterÚpush_to_hub_tokenÚsamples_per_labelÚshow_progress_barÚlogging_first_stepÚevaluation_strategyÚmetric_for_best_model)Úto_dictÚitemsrE   Úall_hyperparametersr6   Únon_default_hyperparameters)
r7   rY   rZ   r[   r\   r^   Úignore_keysÚ	args_dictÚkeyÚvalues
             r9   Úon_train_beginz3SentenceTransformerModelCardCallback.on_train_begini   s¯   € ò
ˆð0 —L‘L“Nˆ	à)2¯©Ó):÷5
Ù%˜3 ¸cÈÒ>TˆC�‰Jó5
ˆ×ÑÔ1ð
 (Ÿo™oÓ/÷=
á��UØ˜+Ñ%¨#°×1GÑ1GÑ*GÈEÐUY×UkÑUkÐloÑUpÒLpð �‰Jó=
ˆ×ÑÕ9ùó5
ùó=
s   ¨B%µB%Á 1B+c                ó  — |D �ci c];  }|j                  d«      sŒdj                  |j                  d«      dd  «      ||   “Œ= }}t        |«      dk(  rd|v rd|d   i}|j                  j
                  rR|j                  j
                  d   d   |j                  k(  r)|j                  j
                  d   j                  |«       y |j                  j
                  j                  |j                  |j                  d	œ|¥«       y c c}w )
NÚ_lossú Ú_rC   rB   úValidation LosséÿÿÿÿÚStep©ÚEpochrŠ   )
ÚendswithÚjoinÚsplitrS   rE   Útraining_logsÚglobal_stepÚupdaterU   Úepoch)	r7   rY   rZ   r[   r\   Úmetricsr^   r�   Ú	loss_dicts	            r9   Úon_evaluatez0SentenceTransformerModelCardCallback.on_evaluate“   sü   € ð LSÖlÀCÐVY×VbÑVbÐcjÕVk�S—X‘X˜cŸi™i¨›n¨Q¨RÐ0Ó1°7¸3±<Ñ?Ðlˆ	ÐlÜˆy‹>˜QÒ 6¨YÑ#6Ø*¨I°fÑ,=Ð>ˆIà×!Ñ!×/Ò/Ø×%Ñ%×3Ñ3°BÑ7¸Ñ?À5×CTÑCTÒTà×!Ñ!×/Ñ/°Ñ3×:Ñ:¸9ÕEà×!Ñ!×/Ñ/×6Ñ6à"Ÿ[™[Ø!×-Ñ-ñð  ðõùò ms
   …Dœ)Dc                óž  — dht        |«      z  }|r¼|j                  j                  rW|j                  j                  d   d   |j                  k(  r.||j	                  «          |j                  j                  d   d<   y |j                  j                  j                  |j                  |j                  ||j	                  «          dœ«       y y )NrB   r‰   rŠ   úTraining Loss)rŒ   rŠ   r˜   )ÚsetrE   r�   r‘   ÚpoprU   r“   )r7   rY   rZ   r[   r\   Úlogsr^   Úkeyss           r9   Úon_logz+SentenceTransformerModelCardCallback.on_log­   s¶   € ð ˆxœ#˜d›)Ñ#ˆÙà×%Ñ%×3Ò3Ø×)Ñ)×7Ñ7¸Ñ;¸FÑCÀu×GXÑGXÒXàKOÐPT×PXÑPXÓPZÑK[�×%Ñ%×3Ñ3°BÑ7¸ÒHà×%Ñ%×3Ñ3×:Ñ:à!&§¡Ø %× 1Ñ 1Ø)-¨d¯h©h«jÑ)9ñõð r:   )r6   údict[str, Any]ÚreturnÚNone)rY   r$   rZ   r   r[   r   r\   r.   r]   r/   rŸ   r    )
rY   r$   rZ   r   r[   r   r\   r.   rŸ   r    )rY   r$   rZ   r   r[   r   r\   r.   r”   údict[str, float]rŸ   r    )rY   r$   rZ   r   r[   r   r\   r.   r›   r¡   rŸ   r    )	Ú__name__Ú
__module__Ú__qualname__r5   rc   rƒ   r–   r�   Ú__classcell__©r8   s   @r9   r1   r1   .   sü   ø„ õ3ð4?à2ð4?ð ð4?ð  ð	4?ð
 #ð4?ð ,ð4?ð 
ó4?ðl(
à2ð(
ð ð(
ð  ð	(
ð
 #ð(
ð 
ó(
ðTà2ðð ðð  ð	ð
 #ðð "ðð 
óð4à2ðð ðð  ð	ð
 #ðð ðð 
÷r:   r1   z¯The `ModelCardCallback` has been renamed to `SentenceTransformerModelCardCallback` and the former is now deprecated. Please use `SentenceTransformerModelCardCallback` instead.c                  ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚModelCardCallbackc                ó$   •— t        ‰| �  |i |¤Ž y r3   )r4   r5   )r7   rY   r^   r8   s      €r9   r5   zModelCardCallback.__init__Ë   s   ø€ Ü‰Ñ˜$Ð) &Ó)r:   )r¢   r£   r¤   r5   r¥   r¦   s   @r9   r¨   r¨   Ç   s   ø„ ÷*ð *r:   r¨   )ÚlanguageÚlicenseÚlibrary_nameÚtagsÚdatasetsr”   Úpipeline_tagrW   úmodel-indexÚco2_eq_emissionsÚ
base_model)r\   r]   Úeval_results_dictc                 óÎ   — t        «       t        t        j                  t        j                  dœ} t        «       rddlm} || d<   t        «       rddlm} || d<   ddl	m} || d<   | S )N)ÚpythonÚsentence_transformersÚtransformersÚtorchr   r    Ú
accelerater®   Ú
tokenizers)
r   Úsentence_transformers_versionr·   r!   r¸   r&   r¹   r'   r®   rº   )ÚversionsÚaccelerate_versionÚdatasets_versionÚtokenizers_versions       r9   Úget_versionsrÀ   ß   s^   € ä Ó"Ü!>Ü$×0Ñ0Ü×"Ñ"ñ	€Hô Ô Ý@à!3ˆ�ÑÜÔÝ<à/ˆ�ÑÝ<à/€Hˆ\Ñà€Or:   c                ó>   — t        | t        «      rt        | d«      S | S )Né   )rI   ÚfloatÚround©r‚   s    r9   Ú
format_logrÆ   õ   s   € Ü�%œÔÜ�U˜A‹ÐØ€Lr:   c                  óX  — e Zd ZU dZ ee¬«      Zded<   dZded<   dZ	ded<   dZ
ded	<    ee¬«      Zd
ed<    ee¬«      Zd
ed<   dZded<    ed„ ¬«      Zded<   dZded<    edd¬«      Zded<    edd¬«      Zded<    eed¬«      Zded<    eed¬«      Zded<    eed¬«      Zded<    eed¬«      Zd ed!<    eed¬«      Zd
ed"<    edd¬«      Zded#<    eed¬«      Zd
ed$<    edd¬«      Zd%ed&<    eed¬«      Zd'ed(<    edd¬«      Zd)ed*<    eedd¬+«      Zd,ed-<    ed.d¬«      Zd/ed0<    ed1d¬«      Zd2ed3<    ed4d¬«      Z ded5<    ed6d¬«      Z!ded7<    ee"d¬«      Z#d'ed8<    e e$e%«      jL                  d9z  d¬«      Z'd:ed;<    eddd¬<«      Z(d=ed><   dWd?„Z)	 dX	 	 	 	 	 dYd@„Z*dZdA„Z+d[dB„Z,d\dC„Z-	 d]	 	 	 	 	 	 	 	 	 d^dD„Z.d_dE„Z/d`dadF„Z0dbdG„Z1	 	 	 	 	 	 	 	 dcdH„Z2	 	 	 	 	 	 	 	 	 	 dddI„Z3dedJ„Z4dfdK„Z5d`dgdL„Z6dhdM„Z7didN„Z8djdO„Z9dWdP„Z:dkdQ„Z;dR„ Z<dldS„Z=dkdT„Z>dkdU„Z?d`dmdV„Z@y)nÚ SentenceTransformerModelCardDataaš  A dataclass storing data used in the model card.

    Args:
        language (`Optional[Union[str, List[str]]]`): The model language, either a string or a list,
            e.g. "en" or ["en", "de", "nl"]
        license (`Optional[str]`): The license of the model, e.g. "apache-2.0", "mit",
            or "cc-by-nc-sa-4.0"
        model_name (`Optional[str]`): The pretty name of the model, e.g. "SentenceTransformer based on microsoft/mpnet-base".
        model_id (`Optional[str]`): The model ID when pushing the model to the Hub,
            e.g. "tomaarsen/sbert-mpnet-base-allnli".
        train_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the training datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}, {"name": "STSB"}]
        eval_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the evaluation datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"id": "mteb/stsbenchmark-sts"}]
        task_name (`str`): The human-readable task the model is trained on,
            e.g. "semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more".
        tags (`Optional[List[str]]`): A list of tags for the model,
            e.g. ["sentence-transformers", "sentence-similarity", "feature-extraction"].

    .. tip::

        Install `codecarbon <https://github.com/mlco2/codecarbon>`_ to automatically track carbon emission usage and
        include it in your model cards.

    Example::

        >>> model = SentenceTransformer(
        ...     "microsoft/mpnet-base",
        ...     model_card_data=SentenceTransformerModelCardData(
        ...         model_id="tomaarsen/sbert-mpnet-base-allnli",
        ...         train_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
        ...         eval_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
        ...         license="apache-2.0",
        ...         language="en",
        ...     ),
        ... )
    )Údefault_factoryzstr | list[str] | Nonerª   Nú
str | Noner«   Ú
model_nameÚmodel_idúlist[dict[str, str]]rM   rO   zjsemantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and moreÚstrÚ	task_namec                 ó
   — g d¢S )N)úsentence-transformersúsentence-similarityzfeature-extraction© rÓ   r:   r9   ú<lambda>z)SentenceTransformerModelCardData.<lambda>.  s	   € ò !
€ r:   zlist[str] | Noner­   r   zLiteral['deprecated']Úgenerate_widget_examplesF)ÚdefaultÚinitr²   Úbase_model_revision)rÉ   r×   rž   r~   r}   z.dict[SentenceEvaluator, dict[str, Any]] | Noner³   zlist[dict[str, float]]r�   rW   Úpredict_exampleÚlabel_example_listzCodeCarbonCallback | NonerJ   údict[str, str]Ú	citationsz
int | NoneÚbest_model_step)rÉ   r×   Úreprú	list[str]r®   TÚboolÚ
first_saver‰   ÚintÚwidget_steprÒ   r¯   rÑ   r¬   Úversionzmodel_card_template.mdr
   Útemplate_path)rÖ   r×   rÞ   zSentenceTransformer | Noner\   c                óª  — | j                    }t        | j                   t        «      r| j                   g| _         | j                  | j                  |¬«      | _        | j                  | j
                  |¬«      | _        | j                  rJ| j                  j                  d«      dk7  r+t        j                  d| j                  ›d�«       d | _        y y y )N)Úinfer_languagesú/rC   zThe provided z} model ID should include the organization or user, such as "tomaarsen/mpnet-base-nli-matryoshka". Setting `model_id` to None.)
rª   rI   rÎ   Úvalidate_datasetsrM   rO   rÌ   ÚcountÚloggerÚwarning)r7   rç   s     r9   Ú__post_init__z.SentenceTransformerModelCardData.__post_init__R  s¸   € à"Ÿm™mÐ+ˆÜ�d—m‘m¤SÔ)Ø!Ÿ]™]˜OˆDŒMà"×4Ñ4°T×5HÑ5HÐZiÐ4ÓjˆÔØ!×3Ñ3°D×4FÑ4FÐXgÐ3ÓhˆÔà�=Š=˜TŸ]™]×0Ñ0°Ó5¸Ò:Ü�N‰NØ §¡Ð0ð 1^ð ^ôð !ˆD�Mð ;ˆ=r:   c                óR  — g }|D ]ñ  }d|vrd|v r|d   |d<   d|v rÊ	 t        |d   «      }|j                  rq|rod|j                  v ra|j                  j                  d«      }|�Dt        |t        «      r|g}|D ],  }|| j
                  vsŒ| j
                  j                  |«       Œ. |j                  | j                  vr&| j                  j                  |j                  «       	 |j                  |«       Œó |S # t        $ r" t        j                  d|d   ›d�«       |d= Y Œ?w xY w)NÚnameÚidrª   zThe dataset `id` z5 does not exist on the Hub. Setting the `id` to None.)Úget_dataset_infoÚcardDataÚgetrI   rÎ   rª   rU   rð   r®   Ú	Exceptionrë   rì   )r7   Údataset_listrç   Úoutput_dataset_listrb   ÚinfoÚdataset_languagerª   s           r9   ré   z2SentenceTransformerModelCardData.validate_datasetsb  s9  € ð !ÐØ#ò 	0ˆGØ˜WÑ$Ø˜7‘?Ø&-¨d¡m�G˜F‘Oà�w‰ð6Ü+¨G°D©MÓ:�Dð —}’}©¸ZÈ4Ï=É=Ñ=XØ+/¯=©=×+<Ñ+<¸ZÓ+HÐ(Ø+Ð7Ü)Ð*:¼CÔ@Ø4DÐ3EÐ 0Ø,<ò C Ø#+°4·=±=Ò#@Ø$(§M¡M×$8Ñ$8¸Õ$BðCð
 —w‘w d§m¡mÑ3ØŸ™×,Ñ,¨T¯W©WÕ5à×&Ñ& wÕ/ð9	0ð: #Ð"øô) !ò &Ü—N‘NØ+¨G°D©MÐ+<Ð<qÐrôð   šð	&ús   �C;Ã;(D&Ä%D&c                ó  — ddi}|D ]&  }	 |j                   ||j                  j                  <   Œ( t	        t
        «      }|j                  «       D ]  \  }}||   j                  |«       Œ dd„}|j                  «       D ��ci c]  \  }} ||«      |“Œ c}}| _        | j                  D �ci c]  }|j                  j                  |“Œ c}D �cg c]  }d|› �‘Œ	 c}«       y # t        $ r Y Œèw xY wc c}}w c c}w c c}w )NzSentence Transformersa¨  
@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",
}
c                ób   — t        | «      dkD  rdj                  | d d «      dz   | d   z   S | d   S )NrC   z, r‰   z and r   )rS   rŽ   )r`   s    r9   Ú	join_listz>SentenceTransformerModelCardData.set_losses.<locals>.join_listœ  s:   € Ü�6‹{˜QŠØ—y‘y ¨¨ Ó-°Ñ7¸&À¹*ÑDÐDØ˜!‘9Ðr:   zloss:)r`   rß   rŸ   rÎ   )
Úcitationr8   r¢   rô   r   rQ   r|   rU   rÜ   rF   )r7   r`   rÜ   rB   Úinverted_citationsrü   rû   s          r9   rV   z+SentenceTransformerModelCardData.set_losses…  s  € à#ð 
&ð
ˆ	ð ò 	ˆDðØ59·]±]�	˜$Ÿ.™.×1Ñ1Ò2ð	ô
 )¬Ó.ÐØ'Ÿo™oÓ/ò 	6‰NˆD�(Ø˜xÑ(×/Ñ/°Õ5ð	6ó	ð
 Oa×NfÑNfÓNh×iÑ:J¸(ÀF™) FÓ+¨XÑ5ÓiˆŒØ�‰Ð]cÖ2dÐUY°4·>±>×3JÑ3JÈDÑ3PÒ2dÖe¨$˜˜t˜f’~ÒeÕføô ò Ùðüó jùÚ2dùÒes#   ‹#C$ÂC3Â-C9ÃC>Ã$	C0Ã/C0c                ó   — || _         y r3   )rÝ   )r7   Ústeps     r9   Úset_best_model_stepz4SentenceTransformerModelCardData.set_best_model_step¤  s
   € Ø#ˆÕr:   c                óf  — t        |t        t        f«      ry t        |t        «      rt	        |¬«      }g | _        t        t        j                  t        |j                  «       «      d¬«      «      }d}t        |j                  «       ddd¬«      D �]‹  \  }}t        ||   t        «      rŒ||   j                  j                  «       D ��cg c]5  \  }}t        |t        «      st        |t        «      r|j                   d	v r|‘Œ7 }}}||   j#                  |«      }	t%        |	«      }
|
d
k(  rŒ�i }t'        |	j)                  t        j*                  t-        |
«      t/        ||
«      ¬«      «      «      D ](  \  }}t1        d„ |j                  «       D «       «      ||<   Œ* t3        t5        |j                  «       d„ ¬«      Ž \  }}|d | t        ||d  d d d…   «      }}|D �]<  }|	|   j                  «       D ��cg c]  \  }}|dk7  r|j7                  d«      s|‘Œ }}}t%        |«      dk  r’|r�|j9                  «       }|	|   j                  «       D ��cg c]  \  }}|dk7  r|j7                  d«      s|‘Œ }}}t%        |«      dk(  r|j;                  |«       n|j=                  |d   «       t%        |«      dk  r|rŒ�t%        |«      dk  rŒî| j
                  j=                  |d
   t        j*                  |dd  t%        |«      dz
  ¬«      dœ«       |d d | _        �Œ? �ŒŽ y c c}}w c c}}w c c}}w )N)rb   é   )Úkéè  zComputing widget examplesÚexampleF)ÚdescÚunitÚleave>   ÚstringÚlarge_stringr   c              3  ód   K  — | ](  \  }}|d k7  r|j                  d«      st        |«      –— Œ* y­w)Údataset_nameÚ_prompt_lengthN)r�   rS   ©Ú.0r�   r‚   s      r9   ú	<genexpr>zGSentenceTransformerModelCardData.set_widget_examples.<locals>.<genexpr>Ë  s4   è ø€ ò #á"˜˜UØ˜nÒ,°S·\±\ÐBRÔ5Sô ˜—Jñ#ùs   ‚.0c                ó   — | d   S )NrC   rÓ   )Úxs    r9   rÔ   zFSentenceTransformerModelCardData.set_widget_examples.<locals>.<lambda>Ñ  s
   € ÀAÀaÁD€ r:   ©r�   r‰   r  r  rÂ   rC   )Úsource_sentenceÚ	sentencesé   ) rI   r*   r+   r(   r)   rW   r   ÚrandomÚchoicesrQ   rœ   r   r|   ÚfeaturesrP   r,   ÚdtypeÚselect_columnsrS   Ú	enumerateÚselectÚsampleÚrangeÚminÚsumÚzipÚsortedr�   rš   ÚextendrU   rÙ   )r7   rb   Údataset_namesÚnum_samples_to_checkr  Únum_samplesÚcolumnÚfeatureÚcolumnsÚstr_datasetÚdataset_sizeÚlengthsÚidxr  Úindicesr‡   Útarget_indicesÚbackup_indicesr�   Úsentencer  Ú
backup_idxÚbackup_samples                          r9   rX   z4SentenceTransformerModelCardData.set_widget_examples§  s4  € Ü�g¤Ô1DÐEÔFàä�gœwÔ'Ü!¨'Ô2ˆGàˆŒä¤§¡¬t°G·L±L³NÓ/CÀqÔ IÓJˆØ#ÐÜ)-Ø×ÑÓ!Ð(CÈ)Ð[`ô*
ó =	5Ñ%ˆL˜+ô ˜' ,Ñ/´ÔAàð (/¨|Ñ'<×'EÑ'E×'KÑ'KÓ'M÷á#�F˜GÜ˜g¤tÔ,Ü˜w¬Ô.°7·=±=ÐD^Ñ3^ò ðˆGñ ð " ,Ñ/×>Ñ>¸wÓGˆKÜ˜{Ó+ˆLØ˜qÒ ØàˆGÜ(Ø×"Ñ"¤6§=¡=´°|Ó1DÌÐL`ÐbnÓHoÔ#pÓqó ò ‘��Vô  #ñ #à&,§l¡l£nô#ó  �˜’ðô œf W§]¡]£_¹.ÔIÐJ‰JˆG�QØ-4°\°kÐ-BÄDÈÐQ\ÐQ]ÐI^Ñ_cÐacÐ_cÑIdÓDe˜NˆNð &ó 5�ð *5°SÑ)9×)?Ñ)?Ó)A÷á%˜˜XØ˜nÒ,°S·\±\ÐBRÔ5Sò ð�	ñ ô
 ˜)“n qÒ(©^Ø!/×!3Ñ!3Ó!5�Jð .9¸Ñ-D×-JÑ-JÓ-L÷%á)˜C Ø .Ò0¸¿¹ÐFVÔ9Wò !ð%�Mñ %ô
 ˜=Ó)¨QÒ.à!×(Ñ(¨Õ7ð "×(Ñ(¨°qÑ)9Ô:ô ˜)“n qÒ(ª^ô �y“> AÒ%Øà—‘×"Ñ"Ø(1°!©Ä6Ç=Á=ÐQZÐ[\Ð[]ÐQ^ÔbeÐfoÓbpÐstÑbtÔCuÑvôð (1°°! }�Ö$ò75ñE=	5ùóùó6ùó%s   Ã:L!Ç7"L'
É"L-
c                ó$  — ddl m} t        |«      | j                  |<   t	        |d«      rÛ|j
                  x}rÌt        ||«      r$|j                  D �cg c]  }|j
                  ‘Œ }}nt        |t        «      r|g}|j                  «       D ��	ci c]  \  }}	||v sŒ||	“Œ }
}}	| j                  r4| j                  d   d   |k(  r| j                  d   j                  |
«       y | j                  j                  ||dœ|
¥«       y y y c c}w c c}	}w )Nr   )ÚSequentialEvaluatorÚprimary_metricr‰   rŠ   r‹   )Ú sentence_transformers.evaluationr6  r   r³   rT   r7  rI   Ú
evaluatorsrÎ   r|   r�   r’   rU   )r7   Ú	evaluatorr”   r“   rÿ   r6  Úprimary_metricsÚsub_evaluatorr�   r‚   Útraining_log_metricss              r9   Úset_evaluation_metricsz7SentenceTransformerModelCardData.set_evaluation_metricsò  s  € õ 	Iä,0°«Mˆ×Ñ˜yÑ)ô �9Ð.Ô/È	×H`ÑH`Ð5`°_Ð5`Ü˜)Ð%8Ô9ØU^×UiÑUiÖ"jÀM =×#?Ó#?Ð"j�Ñ"jÜ˜O¬SÔ1Ø#2Ð"3�àAHÇÁÃ×#k±:°3¸ÐTWÐ[jÒTj C¨¡JÐ#kÐ Ñ#kà×!Ò! d×&8Ñ&8¸Ñ&<¸VÑ&DÈÒ&LØ×"Ñ" 2Ñ&×-Ñ-Ð.BÕCà×"Ñ"×)Ñ)à!&Ø $ñð /ðõð 6aÐ/ùâ"jùó $ls   ÁDÂDÂDc           	     ó(  — d}t        t        «      }t        «       }|D ]m  }|d   }|d   }||vrC||   j                  dt	        |«      › d�«       t        ||   «      |k\  r|j                  |«       t        |«      | j                  k(  sŒm n |j                  «       D ��cg c]^  \  }}| j                  j                  r)t        |t        «      r| j                  j                  |   n|ddj                  |«      z   dz   d	œ‘Œ` c}}| _        y c c}}w )
Nr  ÚtextÚlabelz<li>z</li>z<ul>Ú z</ul>)ÚLabelÚExamples)r   rQ   r™   rU   rÞ   rS   ÚaddÚnum_classesr|   r\   ÚlabelsrI   râ   rŽ   rÚ   )	r7   rb   Únum_examples_per_labelÚexamplesÚfinished_labelsr  r@  rA  Úexample_sets	            r9   Úset_label_examplesz3SentenceTransformerModelCardData.set_label_examples  s
  € Ø!"ÐÜœtÓ$ˆÜ›%ˆØò 	ˆFØ˜&‘>ˆDØ˜7‘OˆEØ˜OÑ+Ø˜‘×&Ñ&¨¬d°4«j¨\¸Ð'?Ô@Ü�x ‘Ó'Ð+AÒAØ#×'Ñ'¨Ô.Ü�?Ó# t×'7Ñ'7Ó7Ùð	ð '/§n¡nÓ&6÷#
ñ
 #��{ð 6:·Z±Z×5FÒ5FÌ:ÐV[Ô]`ÔKa˜Ÿ™×*Ñ*¨5Ò1ÐglØ" R§W¡W¨[Ó%9Ñ9¸GÑCóó#
ˆÕùó #
s   Â!A#Dc           	     ó4  — t        |t        «      r=|j                  «       D ���cg c]  \  }}| j                  ||¬«      D ]  }|‘Œ Œ! c}}}S |rt	        j
                  d|«      rd }|xs |j                  j                  t        |j                  «      dœ}|j                  j                  rR|j                  |j                  j                  v r0|j                  j                  |j                     j                  |d<   |j                  x}r‚t        |j                  «       «      d   }|j                  d«      rUd|v rQ|t!        d«      d  j                  d«      }|d   |d<   |d	   j                  d
«      d   x}rt!        |«      dk(  r||d<   |gS c c}}}w )N)r  z_dataset_\d+)rï   r�   Úsizer   zhf://datasets/ú@rð   rC   rè   é(   Úrevision)rI   r)   r|   Úinfer_datasetsÚreÚmatchr÷   r  rÎ   r�   ÚsplitsÚnum_examplesÚdownload_checksumsrQ   rœ   Ú
startswithrS   )	r7   rb   r  Úsub_datasetÚdataset_outputÚ	checksumsÚsourceÚsource_partsrQ  s	            r9   rR  z/SentenceTransformerModelCardData.infer_datasets"  s�  € Ü�gœ{Ô+ð 29·±³÷ð á-�L +Ø#×2Ñ2°;È\Ð2ÓZòð ò ðØôð ñ œBŸH™H _°lÔCØˆLð !Ò= G§L¡L×$=Ñ$=Ü˜Ÿ™Ó'ñ
ˆð �<‰<×Ò 7§=¡=°G·L±L×4GÑ4GÑ#GØ%,§\¡\×%8Ñ%8¸¿¹Ñ%G×%TÑ%TˆN˜6Ñ"ð  ×2Ñ2Ð2ˆ9Ð2Ü˜)Ÿ.™.Ó*Ó+¨AÑ.ˆFØ× Ñ Ð!1Ô2°s¸f±}Ø%¤cÐ*:Ó&;Ð&=Ð>×DÑDÀSÓI�Ø'3°A¡�˜tÑ$Ø ,¨Q¡× 5Ñ 5°cÓ :¸1Ñ =Ð=�HÐ=Ä3ÀxÃ=ÐTVÒCVØ19�N :Ñ.àÐÐùô7s   ¥$Fc                ó8   — | j                   j                  |«      S r3   )r\   Útokenize)r7   r@  s     r9   r_  z)SentenceTransformerModelCardData.tokenizeA  s   € Ø�z‰z×"Ñ" 4Ó(Ð(r:   c                ó

  — |si S t        |t        «      rt        |«      |d<   |j                  D �cg c]  }d|› d�‘Œ
 c}|d<   i |d<   t        |t        «      �r|j                  D �]j  }|dd |   }|d   }t        |t        «      rÉ| j                  |«      }t        |t        «      r*d	|v r&|d	   j                  d
¬«      j                  «       }d}	n|D �
cg c]  }
t        |
«      ‘Œ }}
d}	dt        t        |«      d«      › d|	› �t        t        |«      t        |«      z  d«      › d|	› �t        t        |«      d«      › d|	› �dœdœ|d   |<   Œêt        |t        t        f«      rTt        |«      }dt        |«      D �ci c])  }|t        |«      d
kD  rdnd› ||   t        |«      z  d›�“Œ+ c}dœ|d   |<   �ŒTt        |t         «      rVdt        t        |«      d«      t        t        |«      t        |«      z  d«      t        t        |«      d«      dœdœ|d   |<   �Œºt        |t"        «      r�t        |D �cg c]  }t        |«      ‘Œ c}«      }t        |«      d
k(  rddt        |«      › d�idœ|d   |<   �Œdt        |«      › d�t        |«      t        |«      z  d›d�t        |«      › d�dœdœ|d   |<   �ŒWt%        |«      i dœ|d   |<   �Œm d5d„}ddi|d   j'                  «       D ��ci c]  \  }}||d   “Œ c}}¥ddi|d   j'                  «       D ��ci c]  \  }}| ||d   «      “Œ c}}¥g}t)        t+        |«      j-                  d d!«      d"«      |d#<   |dd$ |d%<   t        |d%   t#        |d%   «      d      «      }g }t/        |«      D ]­  }i }|j                  D ]‰  }|d%   |   |   }t        |t"        «      r"t        |«      d&kD  rt	        |dd& «      dd' d(z   }t        |t        «      rt        |«      dkD  r|dd d)z   }t	        |«      j-                  d*d+«      }d|› d�||<   Œ‹ |j1                  |«       Œ¯ t)        t+        |«      j-                  d d!«      d"«      |d,<   d-t%        |«      i|d.<   t3        |d/«      r>|j5                  «       }	 t7        j8                  |d0¬1«      }t)        d2|› d3�d"«      |d.   d4<   |S c c}w c c}
w c c}w c c}w c c}}w c c}}w # t:        $ r t	        |«      }Y ŒNw xY w)6a¾  
        Given a dataset, compute the following:
        * Dataset Size
        * Dataset Columns
        * Dataset Stats
            - Strings: min, mean, max word count/token length
            - Integers: Counter() instance
            - Floats: min, mean, max range
            - List: number of elements or min, mean, max number of elements
        * 3 Example samples
        * Loss function name
            - Loss function config
        rN  z<code>z</code>r*  ÚstatsNr  r   Úattention_maskrC   )ÚdimÚtokensÚ
charactersr	  é   r†   )r   ÚmeanÚmax)r  Údatarâ   ú~rB  z.2%rÃ   rQ   z	 elementsz.2fri  c                óZ   — ddj                  d„ | j                  «       D «       «      z   dz   S )Nz<ul><li>z	</li><li>c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)z: NrÓ   r  s      r9   r  zaSentenceTransformerModelCardData.compute_dataset_metrics.<locals>.to_html_list.<locals>.<genexpr>›  s    è ø€ Ò4fÉ:È3ÐPU¸°u¸B¸u¸gÔ5FÑ4fùs   ‚z
</li></ul>)rŽ   r|   )ri  s    r9   Úto_html_listzNSentenceTransformerModelCardData.compute_dataset_metrics.<locals>.to_html_listš  s.   € Ø! K×$4Ñ$4Ñ4fÐY]×YcÑYcÓYeÔ4fÓ$fÑfÐiuÑuÐur:   Útyper  Údetailsú-:|ú--|ú  Ústats_tabler  rI  r  r‰   z, ...]z...ú
z<br>Úexamples_tabler%   rB   Úget_config_dictrÂ   r   ú```json
ú
```Úconfig_code)ri  rP   )rI   r(   rS   Úcolumn_namesrÎ   r_  rP   r!  ÚtolistrÄ   r   rh  râ   rà   r   r#  rÃ   rQ   r%   r|   r   r   Úreplacer  rU   rT   rv  ÚjsonÚdumpsÚ	TypeError)r7   rb   r   rB   r(  Ú
subsectionÚfirstÚ	tokenizedr-  Úsuffixr2  Úcounterr�   Úlstrm  r‚   Ústats_linesr'  Úexamples_linesÚ
sample_idxr*  ÚconfigÚ
str_configs                          r9   Úcompute_dataset_metricsz8SentenceTransformerModelCardData.compute_dataset_metricsD  s†  € ñ& ØˆIä�gœwÔ'ä#& w£<ˆL˜Ñ ØJQ×J^ÑJ^Ö"_À V¨F¨8°7Ò#;Ò"_ˆ�YÑØ "ˆ�WÑÜ�gœwÕ'Ø!×.Ñ.ó 8[�Ø$ U d˜^¨FÑ3�
Ø" 1™�Ü˜e¤SÔ)Ø $§¡¨jÓ 9�IÜ! )¬TÔ2Ð7GÈ9Ñ7TØ"+Ð,<Ñ"=×"AÑ"AÀaÐ"AÓ"H×"OÑ"OÓ"Q˜Ø!)™àAKÖ"L°X¤3 x¥=Ð"L˜Ð"LØ!-˜à!)ä&+¬C°«L¸!Ó&<Ð%=¸Q¸v¸hÐ#GÜ',¬S°«\¼CÀ»LÑ-HÈ!Ó'LÐ&MÈQÈvÈhÐ$WÜ&+¬C°«L¸!Ó&<Ð%=¸Q¸v¸hÐ#Gñ!ñ5�L Ñ)¨&Ò1ô   ¬¬T {Ô3Ü% jÓ1�Gà!&ô (.¨g£ö!à #ð  ¬3¨w«<¸!Ò+;¡CÀÐ#DÀWÈSÁ\ÔTWÐXbÓTcÑEcÐdgÐDhÐ!iÑiò!ñ5�L Ñ)¨&Ó1ô   ¤uÔ-à!(ä#(¬¨Z«¸!Ó#<Ü$)¬#¨j«/¼CÀ
»OÑ*KÈQÓ$OÜ#(¬¨Z«¸!Ó#<ñ!ñ5�L Ñ)¨&Ó1ô   ¤tÔ,Ü%¸:Ö&F°C¤s¨3¥xÒ&FÓG�GÜ˜7“| qÒ(à%+à &¬3¨u«:¨,°iÐ(@ð%ñ9˜ WÑ-¨fÓ5ð &,ä*-¨g«,¨°yÐ'AÜ+.¨w«<¼#¸g»,Ñ+FÀsÐ*KÈ9Ð(UÜ*-¨g«,¨°yÐ'Añ%ñ9˜ WÑ-¨fÓ5ô ?GÀu»oÐWYÑ4Z�L Ñ)¨&Ó1ðq8[ótvð �VÐeÀlÐSZÑF[×FaÑFaÓFc×d¹
¸¸U  U¨7¡^Ñ 3ÓdÐeØ�YÐuÐVbÐcjÑVk×VqÑVqÓVs×"tÉ
ÈÈU 3©°U¸6±]Ó(CÑ#CÓ"tÐuðˆKô +1Ô1DÀ[Ó1Q×1YÑ1YÐZ_ÐafÓ1gÐimÓ*nˆL˜Ñ'à'.¨r° {ˆL˜Ñ$Ü˜l¨:Ñ6´t¸LÈÑ<TÓ7UÐVWÑ7XÑYÓZˆKØˆNÜ# KÓ0ò /�
Ø�Ø%×2Ñ2ò 
>�FØ(¨Ñ4°VÑ<¸ZÑH�Eä! %¬Ô.´3°u³:À²>Ü # E¨"¨1 I£¨s°Ð 3°hÑ >˜ä! %¬Ô-´#°e³*¸tÒ2CØ % e t ¨uÑ 4˜ä ›J×.Ñ.¨t°VÓ<�EØ(.¨u¨g°WÐ&=�G˜F’Oð
>ð ×%Ñ% gÕ.ð/ô .4Ô4GÈÓ4W×4_Ñ4_Ð`eÐglÓ4mÐosÓ-tˆLÐ)Ñ*ð œ ›ð 
ˆ�VÑô �4Ð*Ô+Ø×)Ñ)Ó+ˆFð)Ü!ŸZ™Z¨°qÔ9�
ô 39¸9ÀZÀLÐPUÐ9VÐX\Ó2]ˆL˜Ñ  Ñ/ØÐùòG #`ùò #Mùò!ùò 'Gùó0  eùÛ"tøô< ò )Ü  ›[’
ð)ús5   ±SÃSÅ?.SÈ9S
Ë1SÌS%
ÒS+ Ó+TÔTc                óØ  — |�r|rft        |t        «      rt        |«      t        |«      k7  st        |t        «      r/t        |«      dk7  r!t        j                  d|› d|› d|› d�«       g }|s| j                  |«      }t        |t        «      ret        |j                  «       |j                  «       |«      D ���cg c].  \  }}}| j                  ||t        |t        «      r||   n|«      ‘Œ0 }}}}n| j                  ||d   |«      g}|dk(  r?t        |D �cg c]  }|j                  dd«      ‘Œ c}«      }	|	r| j                  d	|	› �«       | j                  |«      S c c}}}w c c}w )
NrC   zThe number of `z?_datasets` in the model card data does not match the number of z1 datasets in the Trainer. Removing the provided `z$_datasets` from the model card data.r   r@   rN  zdataset_size:)rI   r)   rS   r(   rë   rì   rR  r"  rœ   rR   r‹  rP   r!  ró   rF   ré   )
r7   rb   Údataset_metadatarB   Údataset_typer  Údataset_valuer   ÚmetadataÚnum_training_sampless
             r9   rL   z9SentenceTransformerModelCardData.extract_dataset_metadataÂ  s‰  € ò ÙÜ˜G¤[Ô1´cÐ:JÓ6KÌsÐSZË|Ò6[Ü˜w¬Ô0´SÐ9IÓ5JÈaÒ5Oä—‘Ø% l ^Ð3rÐsð  sAð A.Ø.:¨^Ð;_ðaôð $&Ð á#Ø#'×#6Ñ#6°wÓ#?Ð ä˜'¤;Ô/ô FIØŸ™›¨¯©Ó(8Ð:JóF÷	$ð 	$ñ B˜ m°\ð ×0Ñ0Ø%Ø$Ü.8¸¼tÔ.D˜˜\Ò*È$õð	$Ð ó 	$ð %)×$@Ñ$@ÀÐJZÐ[\ÑJ]Ð_cÓ$dÐ#eÐ ð ˜7Ò"Ü#&ÐP`Ö'aÀH¨¯©°V¸QÕ(?Ò'aÓ#bÐ Ù#Ø—‘ Ð.BÐ-CÐDÔEà×%Ñ%Ð&6Ó7Ð7ùô'	$ùò (bs   Â<3E ÄE'c                ó   — || _         y r3   )r\   )r7   r\   s     r9   Úregister_modelz/SentenceTransformerModelCardData.register_modelí  s	   € Øˆ�
r:   c                ó   — || _         y r3   )rÌ   )r7   rÌ   s     r9   Úset_model_idz-SentenceTransformerModelCardData.set_model_idð  s	   € Ø ˆ�r:   c                ó�   — 	 t        |«      }|j                  | _        |�|dk(  r|j                  }|| _        y# t        $ r Y yw xY w)NFÚmainT)Úget_model_inforô   rð   r²   ÚsharØ   )r7   rÌ   rQ  r   s       r9   Úset_base_modelz/SentenceTransformerModelCardData.set_base_modeló  sS   € ð	Ü'¨Ó1ˆJð %Ÿ-™-ˆŒØÐ˜x¨6Ò1Ø!—~‘~ˆHØ#+ˆÔ Øøô ò 	áð	ús   ‚9 ¹	AÁAc                ó8   — t        |t        «      r|g}|| _        y r3   )rI   rÎ   rª   )r7   rª   s     r9   Úset_languagez-SentenceTransformerModelCardData.set_languageÿ  s   € Ü�h¤Ô$Ø �zˆHØ ˆ�r:   c                ó   — || _         y r3   )r«   )r7   r«   s     r9   Úset_licensez,SentenceTransformerModelCardData.set_license  s	   € Øˆ�r:   c                óŒ   — t        |t        «      r|g}|D ],  }|| j                  vsŒ| j                  j                  |«       Œ. y r3   )rI   rÎ   r­   rU   )r7   r­   Útags      r9   rF   z)SentenceTransformerModelCardData.add_tags  s@   € Ü�dœCÔ Ø�6ˆDØò 	&ˆCØ˜$Ÿ)™)Ò#Ø—	‘	× Ñ  Õ%ñ	&r:   c           
     óÂ  — t        | j                  d   t        «      rÝ| j                  d   j                  j                  j
                  }t        |«      }dj                  |j                  dd  «      g}|j                  j                  d«      }|t        dt        |«      «      D �cg c].  }dj                  |d | «      dz   dj                  ||d  «      z   ‘Œ0 c}z  }|D ]  }| j                  |«      sŒ y  y t        | j                  d   t        «      rC| j                  d   j                  r)| j                  | j                  d   j                  «       y y y c c}w )Nr   rè   éþÿÿÿr‡   rC   )rI   r\   r#   Ú
auto_modelr‰  Ú_name_or_pathr
   rŽ   Úpartsrï   r�   r  rS   rš  r"   r²   )r7   r²   Úbase_model_pathÚcandidate_model_idsrU  r.  rÌ   s          r9   Útry_to_set_base_modelz6SentenceTransformerModelCardData.try_to_set_base_model  s=  € Ü�d—j‘j ‘m¤[Ô1ØŸ™ A™×1Ñ1×8Ñ8×FÑFˆJÜ" :Ó.ˆOð $'§8¡8¨O×,AÑ,AÀ"À#Ð,FÓ#GÐ"HÐð
 %×)Ñ)×/Ñ/°Ó4ˆFØÜQVÐWXÔZ]Ð^dÓZeÓQfö$ØJM�—‘˜  ˜Ó&¨Ñ,¨s¯x©x¸¸s¸t¸Ó/EÓEò$ñ Ðð 0ò �Ø×&Ñ& xÕ0Ùñô ˜Ÿ
™
 1™¤Ô7Ø�z‰z˜!‰}×'Ò'Ø×#Ñ# D§J¡J¨q¡M×$<Ñ$<Õ=ð (ð 8ùò$s   Â(3Ec                ó  ‡‡— g }i }g }| j                   j                  «       D �]^  \  }}t        |dd«      Št        |dd«      }‰r{t        ˆfd„|j	                  «       D «       «      rY|j                  «       D ��ci c]  \  }}|t        ‰«      dz   d |“Œ }}}|r%|j                  ‰dz   «      r|t        ‰«      dz   d }d#d„}	|j                  «       D ��ci c]  \  }}| |	|«      “Œ }}}|j                  «       D �
�cg c]2  \  }
}|
|k(  rd|
› d�n|
|
|k(  rdt        |«      › d�n
t        |«      d	œ‘Œ4 }}
}|j                  }t        |dd«      }d
}t        |d«      r:|j                  «       x}r(	 t        j                  |d¬«      }t        d|› d�d«      }|j!                  t#        |«      ||||dœ«       ˆfd„Š|j%                  |j                  «       D �
�cg c]…  \  }
} ‰|«      x}�vt'        ||j)                  «       j+                  dd«      |xs d|r"|j+                  dd«      j+                  dd«      nd|
j+                  dd«      j-                  «       |
|¬«      ‘Œ‡ c}}
«       |j/                  |«       �Œa g }|D ]ä  }|d   D �ci c]  }|d   |d   “Œ }}t1        |«      }|D ]¨  }t1        d„ |d   D «       «      }|d   |d   k(  sŒ$||k(  sŒ*|d   |d   k7  sŒ6|d   |d   k(  sŒB|d   D ]+  }d|v r|j3                  d«      ||d   <   ||d      ||d   <   Œ- t5        |d   t6        «      s	|d   g|d<   |d   j!                  |d   «        ŒÓ |j!                  |«       Œæ |D ]/  }t9        |j3                  d«      «      j+                  dd «      |d!<   Œ1 |t7        |j	                  «       «      t;        | j<                  |«      d"œS c c}}w c c}}w c c}}
w # t        $ r t        |«      }Y �Œrw xY wc c}}
w c c}w )$au  Format the evaluation metrics for the model card.

        The following keys will be returned:
        - eval_metrics: A list of dictionaries containing the class name, description, dataset name, and a markdown table
          This is used to display the evaluation metrics in the model card.
        - metrics: A list of all metric keys. This is used in the model card metadata.
        - model-index: A list of dictionaries containing the task name, task type, dataset type, dataset name, metric name,
          metric type, and metric value. This is used to display the evaluation metrics in the model card metadata.
        rï   Nr7  c              3  óF   •K  — | ]  }|j                  ‰d z   «      –— Œ y­w)r‡   N)rX  )r  r�   rï   s     €r9   r  zGSentenceTransformerModelCardData.format_eval_metrics.<locals>.<genexpr>4  s   øè ø€ ÒQ¸3˜CŸN™N¨4°#©:×6ÑQùs   ƒ!rC   r‡   c                ób   — 	 t        | d«      r| j                  «       S 	 | S # t        $ r Y | S w xY w)z^Try to convert a value from a Numpy or Torch scalar to pure Python, if not already pure Pythonr  )rT   Úitemrô   rÅ   s    r9   Útry_to_pure_pythonzPSentenceTransformerModelCardData.format_eval_metrics.<locals>.try_to_pure_python9  sB   € ðÜ˜u gÔ.Ø$Ÿz™z›|Ð+ð /ð �øô !ò ØØ�ðús   ‚! ¡	.­.ú**)ÚMetricr,   rB  rv  rÂ   r   rw  rx  rr  )Ú
class_nameÚdescriptionr  Útable_linesry  c                ó–   •— 	 t        | «      S # t        $ r Y nw xY wt        | t        «      rd| v r ‰| j	                  «       d   «      S y )Nr†   r   )rÃ   rô   rI   rÎ   r�   )Úmetric_valueÚtry_to_floats    €r9   rµ  zJSentenceTransformerModelCardData.format_eval_metrics.<locals>.try_to_floatc  sT   ø€ ðÜ  Ó.Ð.øÜ ò Ùðúô ˜l¬CÔ0°S¸LÑ5HÙ'¨×(:Ñ(:Ó(<¸QÑ(?Ó@Ð@às   ƒ
 Ž	™r†   ú-ÚunknownÚUnknown)rÏ   Ú	task_typerŽ  r  Úmetric_nameÚmetric_typer´  r²  r¯  r,   c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r¯  NrÓ   )r  Úlines     r9   r  zGSentenceTransformerModelCardData.format_eval_metrics.<locals>.<genexpr>…  s   è ø€ Ò1pÀT°$°xµ.Ñ1pùs   ‚r°  r  ry  rp  rq  Útable)Úeval_metricsr”   r°   )r‚   r   rŸ   r   )r³   r|   ÚgetattrÚallrœ   rS   rX  rÆ   r±  rT   rv  r}  r~  r  rÎ   r   rU   r%   r$  r   Úlowerr|  Útitler’   r™   rš   rI   rQ   r   r   rË   )r7   r¿  Úall_metricsÚeval_resultsr:  r”   r7  r�   r‚   r­  Ú
metric_keyr´  r²  r±  r  ry  r‰  rŠ  Úmetric_value_floatÚgrouped_eval_metricsÚeval_metricr½  Úeval_metric_mappingÚeval_metric_metricsÚgrouped_eval_metricÚgrouped_eval_metric_metricsrï   rµ  s                             @@r9   Úformat_eval_metricsz4SentenceTransformerModelCardData.format_eval_metrics$  s²  ù€ ð ˆØˆØˆØ"&×"8Ñ"8×">Ñ">Ó"@ó L	(ÑˆI�wÜ˜9 f¨dÓ3ˆDÜ$ YÐ0@À$ÓGˆNÙœÓQÀ'Ç,Á,Ã.ÔQÔQØIPÏÉË×Y¹:¸3À˜3œs 4›y¨1™}˜Ð/°Ñ6ÐY�ÑYÙ! n×&?Ñ&?ÀÀsÁ
Ô&KØ%3´C¸³IÀ±M°OÐ%D�Nóð IPÏÉË×X¹*¸#¸u�sÑ.¨uÓ5Ñ5ÐXˆGÑXð 18·±³÷ñ -�J ð 6@À>Ò5Q  : ,¨bÑ1ÐWaà! ^Ò3ð  "¤*¨\Ó":Ð!;¸2Ñ>ä# LÓ1ó	ðˆKñ ð $×/Ñ/ˆKÜ" 9¨f°dÓ;ˆLØˆKÜ�yÐ"3Ô4ÀI×D]ÑD]ÓD_Ð:_¸&Ð:_ð-Ü!%§¡¨F¸1Ô!=�Jô % y°°¸EÐ%BÀDÓI�à×Ñä"*¨9Ó"5Ø#.Ø$0Ø#.Ø#.ñôô	ð ×Ñð 5<·M±M³O÷ñ 1˜
 LÙ.:¸<Ó.HÐHÐ*ÐUô Ø"-Ø"-×"3Ñ"3Ó"5×"=Ñ"=¸cÀ3Ó"GØ%1Ò%>°YÙYe \×%9Ñ%9¸#¸sÓ%C×%KÑ%KÈCÐQTÔ%UÐktØ$.×$6Ñ$6°s¸CÓ$@×$FÑ$FÓ$HØ$.Ø%7öóôð ×Ñ˜wÖ'ðYL	(ð^  "ÐØ'ò 	9ˆKØMXÐYfÑMgÖ"hÀT 4¨¡>°4¸±=Ñ#@Ð"hÐÐ"hÜ"%Ð&9Ó":ÐØ';ò 9Ð#Ü.1Ñ1pÐM`ÐanÑMoÔ1pÓ.pÐ+à Ñ-Ð1DÀ\Ñ1RÓRØ+Ð/JÓJØ# NÑ3Ð7JÈ>Ñ7ZÓZØ# MÑ2Ð6IÈ-Ñ6XÓXð !4°MÑ Bò `˜Ø" d™?ØHLÏÉÐQXÓHY˜DÐ!4°^Ñ!DÑEà<OÐPTÐU]ÑP^Ñ<_˜˜[¨Ñ8Ò9ð	`ô &Ð&9¸.Ñ&IÌ4ÔPØ?RÐSaÑ?bÐ>cÐ+¨NÑ;Ø'¨Ñ7×>Ñ>¸{È>Ñ?ZÔ[Ùð%9ð( %×+Ñ+¨KÕ8ð/	9ð2 $8ò 	ÐÜ+>Ð?R×?VÑ?VÐWdÓ?eÓ+f×+nÑ+nØ�uó,Ð Ò(ð	ð 1Ü˜K×,Ñ,Ó.Ó/Ü6°t·±ÈÓUñ
ð 	
ùóU Zùó Yùóøô" !ò -Ü!$ V£“Jð-üó4ùò& #is1   Á;OÃOÄ7O!Å5O'ÇB
PÊPÏ'O?Ï>O?c                ó¨  ‡— g Š| j                   D ]-  }|j                  «       D ]  }|‰vsŒ‰j                  |«       Œ Œ/ dˆfd„}t        ‰|¬«      }| j                   D ��cg c]M  }|D �ci c]?  }||d   | j                  k(  rd||v rt        ||   «      nd› d�n|j                  |d«      “ŒA c}‘ŒO }}}t        |«      }|d|v dœS c c}w c c}}w )Nc                ó€   •— | dk(  ry| dk(  ry| dk(  ry| dk(  ry| j                  d	«      ry
‰j                  | «      dz   S )NrŒ   r   rŠ   rC   r˜   rf  rˆ   r  rB   rÂ   r  )r�   Úindex)r�   Úeval_lines_keyss    €r9   Úsort_metricszKSentenceTransformerModelCardData.format_training_logs.<locals>.sort_metrics®  sS   ø€ Ø�gŠ~ØØ�fŠ}ØØ�oÒ%ØØÐ'Ò'ØØ�|‰|˜FÔ#ØØ"×(Ñ(¨Ó-°Ñ1Ð1r:   r  rŠ   r®  r¶  )Ú
eval_linesÚexplain_bold_in_eval)r�   rÎ   rŸ   rÎ   )r�   rœ   rU   r#  rÝ   rÆ   ró   r   )	r7   Úlinesr�   rÓ  Úsorted_eval_lines_keysr½  r�   rÔ  rÒ  s	           @r9   Úformat_training_logsz5SentenceTransformerModelCardData.format_training_logs¥  s  ø€ àˆØ×'Ñ'ò 	0ˆEØ—z‘z“|ò 0�Ø˜oÒ-Ø#×*Ñ*¨3Õ/ñ0ð	0õ	2ô "(¨¸\Ô!JÐð ×*Ñ*÷
ð ð 2ö	ð ð Ø˜‘< 4×#7Ñ#7Ò7ð °3¸$±;œ* T¨#¡YÔ/ÀCÐHÈÑKà—X‘X˜c 3Ó'ñ(ôð
ˆñ 
ô )¨Ó7ˆ
à$Ø$(¨JÐ$6ñ
ð 	
ùòùó
s   Á"	CÁ+AC	Â/CÃ	Cc                óf  — | j                   j                  j                  «       }dt        |j                  «      dz  t        |j
                  «      dd|j                  dk(  |j                  |j                  t        |j                  dz  d«      dœi}|j                  r|j                  |d   d	<   |S )
Nr±   r  Ú
codecarbonzfine-tuningÚYi  r  )Ú	emissionsÚenergy_consumedr\  Útraining_typeÚon_cloudÚ	cpu_modelÚram_total_sizeÚ
hours_usedÚhardware_used)rJ   ÚtrackerÚ_prepare_emissions_datarÃ   rÜ  rÝ  rß  rà  rá  rÄ   ÚdurationÚ	gpu_model)r7   Úemissions_dataÚresultss      r9   Úget_codecarbon_dataz4SentenceTransformerModelCardData.get_codecarbon_dataË  s­   € Ø×2Ñ2×:Ñ:×RÑRÓTˆàä" >×#;Ñ#;Ó<¸tÑCÜ#(¨×)GÑ)GÓ#HØ&Ø!.Ø*×3Ñ3°sÑ:Ø+×5Ñ5Ø"0×"?Ñ"?Ü# N×$;Ñ$;¸dÑ$BÀAÓFñ
!ð
ˆð ×#Ò#Ø;I×;SÑ;SˆGÐ&Ñ'¨Ñ8Øˆr:   c                ó€  — d}| j                   j                  r]dddddœj                  | j                   j                  | j                   j                  j                  dd«      j	                  «       «      }| j                   j                  «       | j                   j                  «       t        | j                   «      |dœS )	NzCosine SimilarityzDot ProductzEuclidean DistancezManhattan Distance)ÚcosineÚdotÚ	euclideanÚ	manhattanr‡   r†   )Úmodel_max_lengthÚoutput_dimensionalityÚmodel_stringÚsimilarity_fn_name)r\   ró  ró   r|  rÃ  Úget_max_seq_lengthÚ get_sentence_embedding_dimensionrÎ   )r7   ró  s     r9   Úget_model_specific_metadataz<SentenceTransformerModelCardData.get_model_specific_metadataÞ  sŸ   € Ø0ÐØ�:‰:×(Ò(à-Ø$Ø1Ø1ñ	"÷
 ‰c�$—*‘*×/Ñ/°·±×1NÑ1N×1VÑ1VÐWZÐ\_Ó1`×1fÑ1fÓ1hÓið ð !%§
¡
× =Ñ =Ó ?Ø%)§Z¡Z×%PÑ%PÓ%RÜ §
¡
›OØ"4ñ	
ð 	
r:   c                ó¶  — | j                   r| j                  s	 | j                  «        | j                  sf| j                  r5| j
                  j                  j                  › d| j                  › �| _        n%| j
                  j                  j                  | _        t        | «      D �ci c]#  }|j                  t        | |j                  «      “Œ% }}| j                  r 	 |j                  | j                  «       «       | j                   r 	 |j                  | j#                  «       «       t%        | j                   «      dkD  |d<   | j&                  rU| j&                  j(                  r?| j&                  j(                  j*                  �|j                  | j-                  «       «       |j                  | j/                  «       «       d| _         t0        D ]  }|j3                  |d «       Œ |S # t        $ r Y �ŒÎw xY wc c}w # t        $ r}t        j                  d|› �«       |‚d }~ww xY w# t        $ r#}t        j                  d|› �«       Y d }~�Œ(d }~ww xY w)Nz
 based on z+Error while formatting evaluation metrics: z&Error while formatting training logs: éd   Úhide_eval_linesF)rá   r²   r¨  rô   rË   r\   r8   r¢   r	   rï   rÀ  r³   r’   rÎ  rë   rì   r�   rØ  rS   rJ   rä  Ú_start_timerê  rö  ÚIGNORED_FIELDSrš   )r7   r   Ú
super_dictÚexcr�   s        r9   r{   z(SentenceTransformerModelCardData.to_dictî  s  € à�?Š? 4§?¢?ðØ×*Ñ*Ô,ð
 �ŠØ�ŠØ%)§Z¡Z×%9Ñ%9×%BÑ%BÐ$CÀ:ÈdÏoÉoÐM^Ð"_�•à"&§*¡*×"6Ñ"6×"?Ñ"?�”äIOÐPTËÖVÀ�e—j‘j¤'¨$°·
±
Ó";Ñ;ÐVˆ
ÐVð ×!Ò!ðØ×!Ñ! $×":Ñ":Ó"<Ô=ð ×ÒðOØ×!Ñ! $×";Ñ";Ó"=Ô>ô ),¨D×,>Ñ,>Ó(?À#Ñ(Eˆ
Ð$Ñ%ð ×%Ò%Ø×)Ñ)×1Ò1Ø×)Ñ)×1Ñ1×=Ñ=ÐIà×Ñ˜d×6Ñ6Ó8Ô9ð 	×Ñ˜$×:Ñ:Ó<Ô=ØˆŒä!ò 	&ˆCØ�N‰N˜3 Õ%ð	&àÐøôW ò Úðüò Wøô ò Ü—‘Ð!LÈSÈEÐRÔSØ�	ûðûô ò OÜ—‘Ð!GÈÀuÐM×NÒNûðOúsG   šG, Â)(G<Ã H ÄH, Ç,	G9Ç8G9È	H)È
H$È$H)È,	IÈ5IÉIc           	     óÆ   — t        | j                  «       j                  «       D ��ci c]  \  }}|t        v sŒ|d g fvsŒ||“Œ c}}d|¬«      j	                  «       S c c}}w )NF)Ú	sort_keysÚ
line_break)r   r{   r|   ÚYAML_FIELDSÚstrip)r7   r   r�   r‚   s       r9   Úto_yamlz(SentenceTransformerModelCardData.to_yaml   s\   € ÜØ*.¯,©,«.×*>Ñ*>Ó*@×s™J˜C ÀCÌ;ÒDVÐ[`ÐimÐoqÐhrÒ[rˆS�%‰ZÓsØØ!ô
÷ ‰%‹'ð		ùÛss   §A
¸A
¿A
)rŸ   r    )T)rõ   úlist[dict[str, Any]]rç   rà   rŸ   r  )r`   zlist[nn.Module]rŸ   r    )rÿ   râ   rŸ   r    )rb   úDataset | DatasetDictrŸ   r    )r   r   )
r:  r-   r”   rž   r“   râ   rÿ   râ   rŸ   r    )rb   r(   rŸ   r    r3   )rb   r  r  rÊ   rŸ   rÍ   )r@  ústr | list[str]rŸ   rž   )rb   z Dataset | IterableDataset | Noner   rž   rB   z'dict[str, nn.Module] | nn.Module | NonerŸ   rÛ   )
rb   r  r�  r  rB   z nn.Module | dict[str, nn.Module]rŽ  zLiteral['train', 'eval']rŸ   r  )r\   r.   rŸ   r    )rÌ   rÎ   rŸ   r    )rÌ   rÎ   rQ  rÊ   rŸ   r    )rª   r  rŸ   r    )r«   rÎ   rŸ   r    )r­   r  rŸ   r    ©rŸ   rž   )rŸ   z1dict[Literal['co2_eq_emissions'], dict[str, Any]])rŸ   rÎ   )Ar¢   r£   r¤   Ú__doc__r   rQ   rª   Ú__annotations__r«   rË   rÌ   rM   rO   rÏ   r­   rÕ   r²   rØ   rP   r~   r}   r³   r�   rW   rÙ   rÚ   rJ   rÜ   rÝ   r®   rá   rã   r¯   r¬   rÀ   rä   r
   Ú__file__Úparentrå   r\   rí   ré   rV   r   rX   r>  rL  rR  r_  r‹  rL   r“  r•  rš  rœ  rž  rF   r¨  rÎ  rØ  rê  rö  r{   r  rÓ   r:   r9   rÈ   rÈ   û   s>  … ñ$ñN (-¸TÔ'B€HÐ$ÓBØ€GˆZÓØ!€J�
Ó!Ø€HˆjÓÙ+0ÀÔ+F€NÐ(ÓFÙ*/ÀÔ*E€MÐ'ÓEàtð ˆsó ñ #ñ
ô€DÐ
ó ð 7CÐÐ3ÓBñ #¨4°eÔ<€J�
Ó<Ù&+°D¸uÔ&EÐ˜ÓEÙ27ÈÐSXÔ2YÐ ÓYÙ*/ÀÈ5Ô*QÐ˜ÓQÙHMÐ^bÐinÔHoÐÐEÓoÙ,1À$ÈUÔ,S€MÐ)ÓSÙ#(¸ÀEÔ#J€FÐ ÓJÙ(-°dÀÔ(G€OÐ%ÓGÙ/4ÀTÐPUÔ/VÐÐ,ÓVÙ6;ÀDÈuÔ6UÐÐ3ÓUÙ %°dÀÔ G€Iˆ~ÓGÙ"'°¸5Ô"A€O�ZÓAÙ°¸5ÀuÔM€HˆiÓMñ  T°Ô6€J�Ó6Ù R¨eÔ4€K�Ó4ñ Ð&;À%ÔH€L�#ÓHÙÐ&=ÀEÔJ€L�#ÓJÙ#°LÀuÔM€Gˆ^ÓMÙ©¨X«×(=Ñ(=Ð@XÑ(XÐ_dÔe€M�4Óeñ ).°dÀÈUÔ(S€EÐ%ÓSó!ð" KOð!#Ø0ð!#ØCGð!#à	ó!#óFgó>$óI5ðX bcðØ*ðØ5CðØLOðØ[^ðà	óó6
ô* ó>)ð|à1ð|ð %ð|ð 6ð	|ð
 
ó|ð|)8à&ð)8ð /ð)8ð /ð	)8ð
 /ð)8ð 
ó)8óVó!ô
ó!ó
ó&ó>ó,
òB$
óLó&
ó 0õdr:   rÈ   c                ó†   — t        j                  | j                  | j                  j                  d¬«      }|j                  S )Nu   ðŸ¤—)Ú	card_datarå   Úhf_emoji)r   Úfrom_templaterE   rå   Úcontent)r\   Ú
model_cards     r9   Úgenerate_model_cardr  (  s:   € Ü×(Ñ(Ø×'Ñ'°u×7LÑ7L×7ZÑ7ZÐekô€Jð ×ÑÐr:   r  )r‚   zfloat | int | strrŸ   r   )r\   r.   rŸ   rÎ   )VÚ
__future__r   r}  Úloggingr  rS  Úcollectionsr   r   r   Údataclassesr   r   r	   Úpathlibr
   Úplatformr   Útextwrapr   Útypingr   r   r   r¸   r·   Úhuggingface_hubr   r   r   rñ   r   r˜  Úhuggingface_hub.repocard_datar   r   Úhuggingface_hub.utilsr   r   Útqdm.autonotebookr   r   Útransformers.integrationsr   Útransformers.modelcardr   Útransformers.trainer_callbackr   r   Útyping_extensionsr   r¶   r!   r»   Úsentence_transformers.modelsr"   r#   Ú#sentence_transformers.training_argsr$   Úsentence_transformers.utilr%   r&   r'   r®   r(   r)   r*   r+   r,   Ú	getLoggerr¢   rë   Ú2sentence_transformers.evaluation.SentenceEvaluatorr-   Ú)sentence_transformers.SentenceTransformerr.   Úsentence_transformers.trainerr/   r1   r¨   r  rû  rÀ   rÆ   rÈ   r  rÓ   r:   r9   ú<module>r*     s  ðÝ "ã Û Û Û 	ß ,Ý ß 0Ñ 0Ý Ý #Ý ß .Ñ .ã Û ß /Ý <Ý 8ß QÝ +Ý Ý "Ý (Ý 8Ý 6ß FÝ (å Nß EÝ Tß _Ñ _áÔßZÕZà	ˆ×	Ñ	˜8Ó	$€áÝTÝMÝHôV¨?ô Vñr ð vóô*Ð<ó *óð*ò
€ò ;€óó,ð ôi xó ió ðiôXr:   