§
    ™Štjð4  ã                  óÞ   — d dl mZ d dlZd dl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mZmZmZ  ej        e¦  «        Ze G d„ de¦  «        ¦   «         ZdS )é    )ÚannotationsN)ÚCallable)Ú	dataclassÚfield)ÚUnion)Úparse)ÚTrainingArguments)Ú__version__)ÚParallelMode)ÚBatchSamplersÚDefaultBatchSamplerÚMultiDatasetBatchSamplersÚMultiDatasetDefaultBatchSamplerc                  ó<  ‡ — e Zd ZU dZg d¢Z edddi¬¦  «        Zded<    eej	        dd	i¬¦  «        Z
d
ed<    eej        ddi¬¦  «        Zded<    eeddi¬¦  «        Zded<    eeddi¬¦  «        Zded<    ed„ ddi¬¦  «        Zded<   ˆ fd„Zˆ fd„Zˆ xZS )ÚBaseTrainingArgumentsaö  
    BaseTrainingArguments extends :class:`~transformers.TrainingArguments` with additional arguments
    specific to Sentence Transformers. See :class:`~transformers.TrainingArguments` for the complete list of
    available arguments.

    Args:
        output_dir (`str`):
            The output directory where the model checkpoints will be written.
        prompts (`Union[Dict[str, Dict[str, str]], Dict[str, str], str]`, *optional*):
            The prompts to use for each column in the training, evaluation and test datasets. Four formats are accepted:

            1. `str`: A single prompt to use for all columns in the datasets, regardless of whether the training/evaluation/test
               datasets are :class:`datasets.Dataset` or a :class:`datasets.DatasetDict`.
            2. `Dict[str, str]`: A dictionary mapping column names to prompts, regardless of whether the training/evaluation/test
               datasets are :class:`datasets.Dataset` or a :class:`datasets.DatasetDict`.
            3. `Dict[str, str]`: A dictionary mapping dataset names to prompts. This should only be used if your training/evaluation/test
               datasets are a :class:`datasets.DatasetDict` or a dictionary of :class:`datasets.Dataset`.
            4. `Dict[str, Dict[str, str]]`: A dictionary mapping dataset names to dictionaries mapping column names to
               prompts. This should only be used if your training/evaluation/test datasets are a
               :class:`datasets.DatasetDict` or a dictionary of :class:`datasets.Dataset`.

        batch_sampler (Union[:class:`~sentence_transformers.sentence_transformer.training_args.BatchSamplers`, `str`, :class:`~sentence_transformers.base.sampler.DefaultBatchSampler`, Callable[[...], :class:`~sentence_transformers.base.sampler.DefaultBatchSampler`]], *optional*):
            The batch sampler to use. See :class:`~sentence_transformers.sentence_transformer.training_args.BatchSamplers` for valid options.
            Defaults to ``BatchSamplers.BATCH_SAMPLER``.
        multi_dataset_batch_sampler (Union[:class:`~sentence_transformers.sentence_transformer.training_args.MultiDatasetBatchSamplers`, `str`, :class:`~sentence_transformers.base.sampler.MultiDatasetDefaultBatchSampler`, Callable[[...], :class:`~sentence_transformers.base.sampler.MultiDatasetDefaultBatchSampler`]], *optional*):
            The multi-dataset batch sampler to use. See :class:`~sentence_transformers.sentence_transformer.training_args.MultiDatasetBatchSamplers`
            for valid options. Defaults to ``MultiDatasetBatchSamplers.PROPORTIONAL``.
        router_mapping (`Dict[str, str] | Dict[str, Dict[str, str]]`, *optional*):
            A mapping of dataset column names to Router routes, like "query" or "document". This is used to specify
            which Router submodule to use for each dataset. Two formats are accepted:

            1. `Dict[str, str]`: A mapping of column names to routes.
            2. `Dict[str, Dict[str, str]]`: A mapping of dataset names to a mapping of column names to routes for
               multi-dataset training/evaluation.
        learning_rate_mapping (`Dict[str, float] | None`, *optional*):
            A mapping of parameter name regular expressions to learning rates. This allows you to set different
            learning rates for different parts of the model, e.g., `{'SparseStaticEmbedding\.*': 1e-3}` for the
            SparseStaticEmbedding module. This is useful when you want to fine-tune specific parts of the model
            with different learning rates.
    )Úaccelerator_configÚfsdp_configÚ	deepspeedÚgradient_checkpointing_kwargsÚlr_scheduler_kwargsÚlearning_rate_mappingÚpromptsÚrouter_mappingNÚhelpzòThe prompts to use for each column in the datasets. Either 1) a single string prompt, 2) a mapping of column names to prompts, 3) a mapping of dataset names to prompts, or 4) a mapping of dataset names to a mapping of column names to prompts.)ÚdefaultÚmetadataz;Union[str, None, dict[str, str], dict[str, dict[str, str]]]r   zThe batch sampler to use.zRUnion[BatchSamplers, str, DefaultBatchSampler, Callable[..., DefaultBatchSampler]]Úbatch_samplerz'The multi-dataset batch sampler to use.zvUnion[MultiDatasetBatchSamplers, str, MultiDatasetDefaultBatchSampler, Callable[..., MultiDatasetDefaultBatchSampler]]Úmulti_dataset_batch_samplerzíA mapping of dataset column names to Router routes, like "query" or "document". Either 1) a mapping of column names to routes or 2) a mapping of dataset names to a mapping of column names to routes for multi-dataset training/evaluation. )Údefault_factoryr   r   zãA mapping of parameter name regular expressions to learning rates. This allows you to set different learning rates for different parts of the model, e.g., {'SparseStaticEmbedding\.*': 1e-3} for the SparseStaticEmbedding module.z"Union[str, None, dict[str, float]]r   c                 óT   — t          t          ¦  «        t          d¦  «        k    rd ndS )Nú5.0.0ç        )Úparse_versionÚtransformers_version© ó    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sentence_transformers/base/training_args.pyú<lambda>zBaseTrainingArguments.<lambda>u   s'   € ­Õ6JÑ(KÔ(KÍ}Ð]dÑOeÔOeÒ(eÐ(e  Ðkn€ r&   z¬This argument is deprecated and will be removed in the future. If you're on Transformers v5+, then you should use `warmup_steps` instead as it also works with float values.zfloat | NoneÚwarmup_ratioc                ó&  •— t          t          ¦  «        t          d¦  «        k    r@| j        �8| j        dk    r-| j        | _        d | _        t                               d¦  «         nMt          | j        t          ¦  «        r3d| j        cxk     rdk     r!n n| j        dk    r| j        | _        d| _        t          ¦   «          	                    ¦   «          t          | j
        t          ¦  «        rt          | j
        ¦  «        n| j
        | _
        t          | j        t          ¦  «        rt          | j        ¦  «        n| j        | _        t          | j        t          ¦  «        r5	 t!          j        | j        ¦  «        | _        n# t           j        $ r Y nw xY w| j        �| j        ni | _        t          | j        t          ¦  «        rB	 t!          j        | j        ¦  «        | _        n"# t           j        $ r t)          d¦  «        ‚w xY w| j        �| j        ni | _        t          | j        t          ¦  «        rB	 t!          j        | j        ¦  «        | _        n"# t           j        $ r t)          d¦  «        ‚w xY wd| _        d	| _        | j        t2          j        k    r)| j        d
k    rt                               d¦  «         d S d S | j        t2          j        k    r5| j        s0| j        d
k    rt                               d¦  «         d| _        d S d S d S )Nr!   r   a  The `warmup_ratio` argument is deprecated in Transformers v5+, and will also be removed from Sentence Transformers once support for Transformers v4 is dropped. Since you're using Transformers v5+, please use `warmup_steps` (as a float) to specify the warmup ratio instead.r"   g      ð?zœThe `learning_rate_mapping` argument must be a dictionary mapping parameter name regular expressions to learning rates. A stringified dictionary also works.z¢The `router_mapping` argument must be a dictionary mapping dataset column names to Router routes, like 'query' or 'document'. A stringified dictionary also works.TFÚunusedzáCurrently using DataParallel (DP) for multi-gpu training, while DistributedDataParallel (DDP) is recommended for faster training. See https://sbert.net/docs/sentence_transformer/training/distributed.html for more information.z¶When using DistributedDataParallel (DDP), it is recommended to set `dataloader_drop_last=True` to avoid hanging issues with an uneven last batch. Setting `dataloader_drop_last=True`.)r#   r$   r)   Úwarmup_stepsÚloggerÚwarningÚ
isinstanceÚfloatÚsuperÚ__post_init__r   Ústrr   r   r   r   ÚjsonÚloadsÚJSONDecodeErrorr   Ú
ValueErrorr   Úprediction_loss_onlyÚddp_broadcast_buffersÚparallel_moder   ÚNOT_DISTRIBUTEDÚ
output_dirÚDISTRIBUTEDÚdataloader_drop_last)ÚselfÚ	__class__s    €r'   r2   z#BaseTrainingArguments.__post_init__|   si  ø€ õ Õ-Ñ.Ô.µ-ÀÑ2HÔ2HÒHÐHð Ô Ð,°Ô1BÀaÒ1GÐ1GØ$(Ô$5�Ô!Ø$(�Ô!å—’ðtñô ð øõ ˜$Ô+­UÑ3Ô3ð &¸¸dÔ>OÐ8UÐ8UÒ8UÐ8UÐRUÒ8UÐ8UÐ8UÐ8UÐ8UÐZ^ÔZkÐorÒZrÐZrØ$(Ô$5�Ô!Ø$%�Ô!å‰Œ×ÒÑÔÐõ 2<¸DÔ<NÕPSÑ1TÔ1TÐl�M˜$Ô,Ñ-Ô-Ð-ÐZ^ÔZlð 	Ôõ
 ˜$Ô:½CÑ@Ô@ð2Õ% dÔ&FÑGÔGÐGàÔ1ð 	Ô(õ �d”l¥CÑ(Ô(ð 	ðÝ#œz¨$¬,Ñ7Ô7�”�øÝÔ'ð ð ð ð �ðøøøð
 DHÔC]ÐCi TÔ%?Ð%?ÐoqˆÔ"Ý�dÔ0µ#Ñ6Ô6ð 	ðÝ-1¬Z¸Ô8RÑ-SÔ-S�Ô*Ð*øÝÔ'ð ð ð Ý ðNñô ð ðøøøð 6:Ô5HÐ5T˜dÔ1Ð1ÐZ\ˆÔÝ�dÔ)­3Ñ/Ô/ð 	ðÝ&*¤j°Ô1DÑ&EÔ&E�Ô#Ð#øÝÔ'ð ð ð Ý ðWñô ð ðøøøð %)ˆÔ!ð &+ˆÔ"àÔ¥Ô!=Ò=Ð=ð Œ (Ò*Ð*Ý—’ðvñô ð ð ð ð +Ð*ð Ô¥<Ô#;Ò;Ð;ÀDÔD]Ð;ð Œ (Ò*Ð*Ý—’ð;ñô ð ð )-ˆDÔ%Ð%Ð%ð <Ð;Ð;Ð;s*   Å#F ÆFÆFÇG& Ç&HÈ8I ÉI6c                ó¨   •— t          ¦   «                              ¦   «         }t          |d         ¦  «        r|d= t          |d         ¦  «        r|d= |S )Nr   r   )r1   Úto_dictÚcallable)r?   Útraining_args_dictr@   s     €r'   rB   zBaseTrainingArguments.to_dictÚ   s\   ø€ Ý"™WœWŸ_š_Ñ.Ô.ÐÝÐ& Ô7Ñ8Ô8ð 	4Ø" ?Ð3ÝÐ&Ð'DÔEÑFÔFð 	BØ"Ð#@ÐAØ!Ð!r&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_VALID_DICT_FIELDSr   r   Ú__annotations__r   ÚBATCH_SAMPLERr   r   ÚPROPORTIONALr   Údictr   r   r)   r2   rB   Ú__classcell__)r@   s   @r'   r   r      sû  ø€ € € € € € ð'ð 'ðZ	ð 	ð 	Ðð LQÈ5Øàð dð
ðLñ Lô L€Gð ð ð ñ ð inÐhmØÔ+°vÐ?ZÐ6[ðiñ iô i€Mð ð ð ñ ð
 	ˆØ)Ô6À&ÐJsÐAtð	ñ 	ô 	ð  ð ð ð ñ ð
 SXÐRWØàð Pð
ðSñ Sô S€Nð ð ð ñ ð AFÀØàð Xð
ðAñ Aô AÐð ð ð ñ ð "' ØnÐnàð ]ð
ð"ñ "ô "€Lð ð ð ñ ð\-ð \-ð \-ð \-ð \-ð|"ð "ð "ð "ð "ð "ð "ð "ð "r&   r   )Ú
__future__r   r4   ÚloggingÚcollections.abcr   Údataclassesr   r   Útypingr   Úpackaging.versionr   r#   Útransformersr	   ÚTransformersTrainingArgumentsr
   r$   Útransformers.training_argsr   Ú"sentence_transformers.base.samplerr   r   r   r   Ú	getLoggerrE   r-   r   r%   r&   r'   ú<module>rZ      sH  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø KÐ KÐ KÐ KÐ KÐ KØ <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ð ðG"ð G"ð G"ð G"ð G"Ð9ñ G"ô G"ñ „ðG"ð G"ð G"r&   