+
    QV-jsP ã                   ó°  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^RIHt ^ RIt^ RIt^ RIt^ RIH t! ^ RI"H#t#H$t$ ^ RI%H&t& ^ R	IH't' ^ R
I(H)t)H*t*H+t+H,t,H-t- ^RI.H/t/ ^RI0H1t1 ^RI2H3t3H4t4H5t5 ^RI6H7t7H8t8 ^RI9H:t: ^RI;H<t< ^RI=H>t>H?t? ^RI@HAtA ^RIBHCtCHDtDHEtEHFtFHGtG ^RIHHItIHJtJ ^RIKHLtL ^RIMHNtNHOtO ^RIPHQtQ ^RIRHStSHTtTHUtU ^RIVHWtWHXtX ^RIYHZtZ ^RI[H\t\H]t] ^RI^H_t_H`t` ^RIaHbtbHctc ^RIdHete ^RIfHgtg ^R IhHitiHjtjHktkHltlHmtmHntnHotoHptp ^R!IqHrtrHstsHtttHutu ^R"IvHwtwHxtxHytyHztzH{t{H|t|H}t}H~t~HtH€t€H�t�H‚t‚HƒtƒH„t„H…t… ^R#I†H‡t‡HˆtˆH‰t‰HŠtŠH‹t‹HŒtŒH�t�HŽtŽH�t�H�t�H‘t‘H’t’H“t“H”t”H•t•H–t–H—t—H˜t˜H™t™HštšH›t›HœtœH�t�HžtžHŸtŸH t H¡t¡H¢t¢H£t£H¤t¤ ^R$I¥H¦t¦H§t§H¨t¨ ^R%I©HªtªH«t«H¬t¬H­t­H®t®H¯t¯H°t°H±t±H²t²H³t³H´t´HµtµH¶t¶H·t·H¸t¸H¹t¹HºtºH»t»H¼t¼H½t½H¾t¾H¿t¿HÀtÀHÁtÁHÂtÂHÃtÃHÄtÄ ^R&IÅHÆtÆ ^R'IÇHÈtÈ ]j.tÉ]mtÊ]»! 4       '       d	   ^R(IËHÌtÌ ]ÌtÊ]º! 4       '       d   ^ RIÍtÍ]Ã! 4       '       dX   ^ RIÎHÏu HÐtÑ ^ RIÒHÓu HÔtÕ ^ RIÖH×tØ ^ RIÙH/tÚ ]&EP¶                  ! ]Ú4      ]&EP¶                  ! ]³4      8¬  tÜ]Ü'       d
   ^ RIÝH u HÞtß MR)tÜ]¾! 4       '       d   ^ RIàHáu Htâ ^R*IvHãtãHätäHåtå ]¼! 4       '       d   ^ R+IæHçtç ]¹! 4       '       d>   ^ R,IèHétéHêtê ^ R-IëHìtì ^ R.IíHîtîHïtïHðtðHñtñHòtòHótóHôtôHõtõHötö ^ R/I÷Høtø ]F! 4       '       d   ^ R0IíHùtù ]'       d   ^ RIútú]ÄEPö                  ! ]ü4      týR1tþR2tÿR3Et R4EtR5EtR6EtR7Et]Æ! R;R87       ! R9 R:4      4       EtR# )<uc   
The Trainer class, to easily train a ðŸ¤— Transformers from scratch or finetune it on a new task.
N)ÚCallableÚIteratorÚMapping©Úpartial)ÚPath)ÚTYPE_CHECKINGÚAny)Ú#get_reporting_integration_callbacks)Ú
CommitInfoÚ	ModelCard)Úversion)Únn)Ú
DataLoaderÚDatasetÚIterableDatasetÚRandomSamplerÚSequentialSampler)Ú__version__)ÚPreTrainedConfig)ÚDataCollatorÚDataCollatorWithPaddingÚdefault_data_collator)ÚDebugOptionÚDebugUnderflowOverflow)ÚSequenceFeatureExtractor)ÚFeatureExtractionMixin)Ú"ALL_HYPERPARAMETER_SEARCH_BACKENDSÚdefault_hp_search_backend)ÚBaseImageProcessor)Údeepspeed_initÚdeepspeed_load_checkpointÚdeepspeed_sp_compute_lossÚis_deepspeed_availableÚpropagate_args_to_deepspeed)Úget_fsdp_ckpt_kwargsÚupdate_fsdp_plugin_peft)Úapply_liger_kernel)Úactivate_neftuneÚdeactivate_neftune)ÚMIN_PEFT_VERSION)Úsave_tpu_checkpointÚtpu_spmd_dataloaderÚwrap_model_xla_fsdp)ÚLOSS_MAPPINGÚForCausalLMLoss)ÚTrainingSummary)ÚPreTrainedModelÚunwrap_model)Ú!MODEL_FOR_CAUSAL_LM_MAPPING_NAMESÚMODEL_MAPPING_NAMES)ÚGreedyLRÚget_scheduler)ÚProcessorMixin)ÚPreTrainedTokenizerBase)ÚCallbackHandlerÚDefaultFlowCallbackÚExportableStateÚPrinterCallbackÚProgressCallbackÚTrainerCallbackÚTrainerControlÚTrainerState)Ú_OPTIMIZER_HANDLERSÚOptimizerContextÚ_parse_optim_argsÚis_optimizer_factory)ÚEvalLoopContainerÚIterableDatasetShardÚLabelSmootherÚLengthGroupedSamplerÚdistributed_broadcast_scalarsÚfind_batch_sizeÚget_model_param_countÚget_parameter_namesÚis_attention_mask_causalÚnested_detachÚnested_gatherÚreissue_pt_warningsÚremove_dummy_checkpointÚsafe_globalsÚset_rng_state_for_device)ÚPREFIX_CHECKPOINT_DIRÚBestRunÚEvalLoopOutputÚEvalPredictionÚHPSearchBackendÚHubStrategyÚPredictionOutputÚRemoveColumnsCollatorÚSaveStrategyÚTrainerMemoryTrackerÚTrainOutputÚ_is_peft_modelÚalign_special_tokensÚ#compare_trainer_and_checkpoint_argsÚdefault_compute_objectiveÚdenumpify_detensorizeÚenable_full_determinismÚfind_executable_batch_sizeÚget_last_checkpointÚ
has_lengthÚload_sharded_checkpointÚnumber_of_argumentsÚrotate_checkpointsÚseed_workerÚset_seedÚsort_checkpointsÚspeed_metricsÚsuppress_progress_barsÚunwrap_peft_modelÚ"validate_quantization_for_training)ÚOptimizerNamesÚParallelModeÚTrainingArguments)ÚADAPTER_CONFIG_NAMEÚADAPTER_SAFE_WEIGHTS_NAMEÚADAPTER_WEIGHTS_NAMEÚCONFIG_NAMEÚGENERATION_CONFIG_NAMEÚSAFE_WEIGHTS_INDEX_NAMEÚSAFE_WEIGHTS_NAMEÚWEIGHTS_INDEX_NAMEÚWEIGHTS_NAMEÚXLA_FSDPV2_MIN_VERSIONÚPushInProgressÚcan_return_lossÚcheck_torch_load_is_safeÚfind_labelsÚhf_apiÚis_accelerate_availableÚis_datasets_availableÚis_in_notebookÚis_peft_availableÚis_sagemaker_dp_enabledÚis_sagemaker_mp_enabledÚis_torch_hpu_availableÚis_torch_mlu_availableÚis_torch_musa_availableÚis_torch_npu_availableÚis_torch_xla_availableÚlogging)Úrequires)ÚQuantizationMethod)ÚNotebookProgressCallbackF)Úsmp_forward_backwardÚsmp_forward_onlyÚsmp_nested_concat)Ú	PeftModel)ÚAcceleratorÚskip_first_batches)ÚAcceleratorState)	ÚDataLoaderConfigurationÚDistributedDataParallelKwargsÚDistributedTypeÚGradientAccumulationPluginÚload_fsdp_modelÚload_fsdp_optimizerÚrelease_memoryÚsave_fsdp_modelÚsave_fsdp_optimizer)Úclear_device_cache)ÚDeepSpeedSchedulerWrapperztraining_args.binztrainer_state.jsonzoptimizer.ptz	scaler.ptzoptimizer.binzscheduler.ptÚpytorch_model_fsdp)Úbackendsc                   ót  a € ] tR t^ût o Rt^RIHtHtHtH	t	H
t
HtHt R©V 3R lR lltV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R lR ltRªV 3R lR lltV 3R lR ltV 3R lR ltR«V 3R lR lltRªV 3R lR lltV 3R lR ltV 3R lR ltRªV 3R lR lltRªV 3R lR lltV 3R  lR! ltRªV 3R" lR# lltRªV 3R$ lR% llt]RªV 3R& lR' ll4       tV 3R( lR) lt V 3R* lR+ lt!R¬V 3R, lR- llt"R­V 3R. lR/ llt#V 3R0 lR1 lt$R2 t%R3 t&R4 t'RªV 3R5 lR6 llt(R®V 3R7 lR8 llt)V 3R9 lR: lt*R¯V 3R; lR< llt+RªV 3R= lR> llt,V 3R? lR@ lt-V 3RA lRB lt.V 3RC lRD lt/V 3RE lRF lt0V 3RG lRH lt1V 3RI lRJ lt2V 3RK lRL lt3V 3RM lRN lt4V 3RO lRP lt5V 3RQ lRR lt6R°V 3RS lRT llt7RU t8RV t9RW t:RªRX lt;R±V 3RY lRZ llt<R±V 3R[ lR\ llt=R²V 3R] lR^ llt>RªV 3R_ lR` llt?R³V 3Ra lRb llt@V 3Rc lRd ltAV 3Re lRf ltBV 3Rg lRh ltCV 3Ri lRj ltDV 3Rk lRl ltEV 3Rm lRn ltFRªV 3Ro lRp lltGV 3Rq lRr ltHV 3Rs lRt ltIV 3Ru lRv ltJV 3Rw lRx ltKV 3Ry lRz ltLV 3R{ lR| ltMR´V 3R} lR~ lltNR¨V 3R lR€ lltORªV 3R� lR‚ lltPV 3Rƒ lR„ ltQV 3R… lR† ltRRªV 3R‡ lRˆ lltSRµV 3R‰ lRŠ lltTR¶V 3R‹ lRŒ lltUV 3R� lRŽ ltVV 3R� lR� ltWR·V 3R‘ lR’ lltXRªV 3R“ lR” lltYV 3R• lR– ltZV 3R— lR˜ lt[V 3R™ lRš lt\V 3R› lRœ lt]V 3R� lRž lt^V 3RŸ lR  lt_V 3R¡ lR¢ lt`V 3R£ lR¤ ltaV 3R¥ lR¦ ltbR§tcV tdR# )¸ÚTraineruÜ  
Trainer is a simple but feature-complete training and eval loop for PyTorch, optimized for ðŸ¤— Transformers.

Args:
    model ([`PreTrainedModel`] or `torch.nn.Module`, *optional*):
        The model to train, evaluate or use for predictions. If not provided, a `model_init` must be passed.

        <Tip>

        [`Trainer`] is optimized to work with the [`PreTrainedModel`] provided by the library. You can still use
        your own models defined as `torch.nn.Module` as long as they work the same way as the ðŸ¤— Transformers
        models.

        </Tip>

    args ([`TrainingArguments`], *optional*):
        The arguments to tweak for training. Will default to a basic instance of [`TrainingArguments`] with the
        `output_dir` set to a directory named *tmp_trainer* in the current directory if not provided.
    data_collator (`DataCollator`, *optional*):
        The function to use to form a batch from a list of elements of `train_dataset` or `eval_dataset`. Will
        default to [`default_data_collator`] if no `processing_class` is provided, an instance of
        [`DataCollatorWithPadding`] otherwise if the processing_class is a feature extractor or tokenizer.
    train_dataset (`torch.utils.data.Dataset` | `torch.utils.data.IterableDataset` | `datasets.Dataset`, *optional*):
        The dataset to use for training. If it is a [`~datasets.Dataset`], columns not accepted by the
        `model.forward()` method are automatically removed.

        Note that if it's a `torch.utils.data.IterableDataset` with some randomization and you are training in a
        distributed fashion, your iterable dataset should either use a internal attribute `generator` that is a
        `torch.Generator` for the randomization that must be identical on all processes (and the Trainer will
        manually set the seed of this `generator` at each epoch) or have a `set_epoch()` method that internally
        sets the seed of the RNGs used.
    eval_dataset (`torch.utils.data.Dataset` | dict[str, `torch.utils.data.Dataset`] | `datasets.Dataset`, *optional*):
         The dataset to use for evaluation. If it is a [`~datasets.Dataset`], columns not accepted by the
         `model.forward()` method are automatically removed. If it is a dictionary, it will evaluate on each
         dataset prepending the dictionary key to the metric name.
    processing_class (`PreTrainedTokenizerBase` or `BaseImageProcessor` or `FeatureExtractionMixin` or `ProcessorMixin`, *optional*):
        Processing class used to process the data. If provided, will be used to automatically process the inputs
        for the model, and it will be saved along the model to make it easier to rerun an interrupted training or
        reuse the fine-tuned model.
    model_init (`Callable[[], PreTrainedModel]`, *optional*):
        A function that instantiates the model to be used. If provided, each call to [`~Trainer.train`] will start
        from a new instance of the model as given by this function.

        The function may have zero argument, or a single one containing the optuna/Ray Tune trial object, to
        be able to choose different architectures according to hyperparameters (such as layer count, sizes of
        inner layers, dropout probabilities etc).
    compute_loss_func (`Callable`, *optional*):
        A function that accepts the raw model outputs, labels, and the number of items in the entire accumulated
        batch (batch_size * gradient_accumulation_steps) and returns the loss. For example, see the default [loss function](https://github.com/huggingface/transformers/blob/052e652d6d53c2b26ffde87e039b723949a53493/src/transformers/trainer.py#L3618) used by [`Trainer`].
    compute_metrics (`Callable[[EvalPrediction], Dict]`, *optional*):
        The function that will be used to compute metrics at evaluation. Must take a [`EvalPrediction`] and return
        a dictionary string to metric values. *Note* When passing TrainingArgs with `batch_eval_metrics` set to
        `True`, your compute_metrics function must take a boolean `compute_result` argument. This will be triggered
        after the last eval batch to signal that the function needs to calculate and return the global summary
        statistics rather than accumulating the batch-level statistics
    callbacks (List of [`TrainerCallback`], *optional*):
        A list of callbacks to customize the training loop. Will add those to the list of default callbacks
        detailed in [here](callback).

        If you want to remove one of the default callbacks used, use the [`Trainer.remove_callback`] method.
    optimizers (`tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`, *optional*, defaults to `(None, None)`):
        A tuple containing the optimizer and the scheduler to use. Will default to an instance of [`AdamW`] on your
        model and a scheduler given by [`get_linear_schedule_with_warmup`] controlled by `args`.
    optimizer_cls_and_kwargs (`tuple[Type[torch.optim.Optimizer], dict[str, Any]]`, *optional*):
        A tuple containing the optimizer class and keyword arguments to use.
        Overrides `optim` and `optim_args` in `args`. Incompatible with the `optimizers` argument.

        Unlike `optimizers`, this argument avoids the need to place model parameters on the correct devices before initializing the Trainer.
    preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`, *optional*):
        A function that preprocess the logits right before caching them at each evaluation step. Must take two
        tensors, the logits and the labels, and return the logits once processed as desired. The modifications made
        by this function will be reflected in the predictions received by `compute_metrics`.

        Note that the labels (second parameter) will be `None` if the dataset does not have them.

Important attributes:

    - **model** -- Always points to the core model. If using a transformers model, it will be a [`PreTrainedModel`]
      subclass.
    - **model_wrapped** -- Always points to the most external model in case one or more other modules wrap the
      original model. This is the model that should be used for the forward pass. For example, under `DeepSpeed`,
      the inner model is wrapped in `DeepSpeed` and then again in `torch.nn.DistributedDataParallel`. If the inner
      model hasn't been wrapped, then `self.model_wrapped` is the same as `self.model`.
    - **is_model_parallel** -- Whether or not a model has been switched to a model parallel mode (different from
      data parallelism, this means some of the model layers are split on different GPUs).
    - **place_model_on_device** -- Whether or not to automatically place the model on the device. Defaults to
      `True` unless model parallel, DeepSpeed, FSDP, full fp16/bf16 eval, or SageMaker MP is active. Can be
      overridden by subclassing `TrainingArguments` and overriding the `place_model_on_device` property.
    - **is_in_train** -- Whether or not a model is currently running `train` (e.g. when `evaluate` is called while
      in `train`)

)Úget_learning_ratesÚget_num_trainable_parametersÚget_optimizer_groupÚlog_metricsÚmetrics_formatÚsave_metricsÚ
save_stateNc                óÒ  <€ V ^8„  d   QhRS[ S[P                  ,          R,          RS[R,          RS[R,          RRRRR	S[S[,          S[,          S[,          R,          R
S[	RS[ 3,          R,          RS[	R,          RS[	S[
.S[3,          R,          RS[S[,          R,          RS[S[P                   P"                  R,          S[P                   P$                  P&                  R,          3,          RS[S[S[P                   P"                  ,          S[S[S[3,          3,          R,          RS[	S[P.                  S[P.                  .S[P.                  3,          R,          /# )é   ÚmodelNÚargsÚdata_collatorÚtrain_datasetz3Dataset | IterableDataset | datasets.Dataset | NoneÚeval_datasetz6Dataset | dict[str, Dataset] | datasets.Dataset | NoneÚprocessing_classÚ
model_init.Úcompute_loss_funcÚcompute_metricsÚ	callbacksÚ
optimizersÚoptimizer_cls_and_kwargsÚpreprocess_logits_for_metrics)r1   r   ÚModulert   r   r8   r   r   r7   r   rW   ÚdictÚlistr>   ÚtupleÚtorchÚoptimÚ	OptimizerÚlr_schedulerÚLambdaLRÚtypeÚstrr	   ÚTensor)ÚformatÚ__classdict__s   "€Úe/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/trainer.pyÚ__annotate__ÚTrainer.__annotate__l  s€  ø€ ÷ ~7ñ ~7á¡§¡Õ*¨TÕ1ð~7ñ   $Õ&ð~7ñ $ dÕ*ð	~7ð
 Mð~7ð Oð~7ñ 2Ù
õá
 õ!ñ õð õ	ð~7ñ ˜S¡/Ð1Õ2°TÕ9ð~7ñ $ d�?ð~7ñ "¡>Ð"2±DÐ"8Õ9¸DÕ@ð~7ñ ™Õ(¨4Õ/ð~7ñ  ™%Ÿ+™+×/Ñ/°$Õ6¹¿¹×8PÑ8P×8YÑ8YÐ\`Õ8`Ð`Õað!~7ñ" #(©©U¯[©[×-BÑ-BÕ(CÁTÉ#ÉsÈ(Å^Ð(SÕ"TÐW[Õ"[ð#~7ñ$ (0±·±¹u¿|¹|Ð0LÉeÏlÉlÐ0ZÕ'[Ð^bÕ'bñ%~7ó    c                ó®  € Vf(   Rp\         P                  RV R24       \        VR7      pW n        V P                  P                  '       d    \        V P                  P                  4      M\        V P                  P                  4       R V n        Wn	        V P                  4        \        V P                  P                  4      V n        V P                  P                  4        VP                  4       p\         P"                  ! V4       VP$                   Vf'   Ve   Wpn        V P)                  4       pM \+        R4      hVe   \-        R4      hWpn        VP.                  P0                  \2        9   d$   \-        RVP.                  P0                   R24      h\5        V4       R	V n        \9        VR
R 4      e�   \;        VP<                  P?                  4       4       Uu. uF  pVR 9  g   K  VNK  	  pp\A        V4      ^8”  d	   RV n        MI\A        V4      ^8X  d:   V P                  PB                  \D        PB                  ! V^ ,          4      8g  V n        VPF                  ;'       d    VPH                  PK                  RR	4      V n&        VPF                  '       dZ   V PN                  '       d   \-        R4      hV PL                  '       g+   VPP                  \R        PT                  8w  d   \-        R4      hVPV                  e   VPV                  V n+        M‹V P6                  '       gk   V PN                  '       gY   VPX                  '       gG   VPZ                  '       g5   V PL                  '       g#   V P\                  '       g   \_        4       '       d	   R	V n+        MRV n+        V PV                  '       d<   \9        VRR 4      \`        Pb                  8w  d   V Pe                  WPB                  4       V P6                  '       d   ^V P                  n3        Wn4        Wn	        \k        V Pl                  Po                  V4      4      p\q        VR4      '       d   VPr                  V n:        M\v        Px                  ! VPz                  4      P|                  p\~        ;QJ d*    R VP?                  4        4       F  '       g   K   RM	  R	M! R VP?                  4        4       4      V n:        \9        V Pl                  RR 4      pVe+   VP€                  R8X  d   VP‚                  '       d   R	V n:        \k        V P                  4      p\…        VP.                  4      pV P                  P†                  f   TMV P                  P†                  V nC        \‰        VP.                  4      V nD        \Š        PJ                  ! \9        VRR 4      4      \Œ        J V nG        V P                  P�                  ^ 8w  dp   \9        V P                  P’                  RR 4      R8X  d$   \”        P–                  ! R\˜        4       R V nM        M-\�        V P                  P�                  R7      V nM        MR V nM        Ve(   \Ÿ        V\         \¢        34      '       d   \¥        V4      M\¦        pVe   TMTV nT        W@nU        WPnV        W`nW        VP°                  V nX        W€nY        W�nZ        WÐn[        Vw  V n\        V n]        WÀn^        V P¿                  4        \À        \Ã        V P                  PÄ                  4      ,           pV P                  PÆ                  '       d)   ^RIdHep V! 4       pVV.,           pVPÍ                  V 4       V
f   TMVV
,           p
\Ï        W P                  V P®                  V P¸                  V Pº                  4      V nh        T PÓ                  V P                  PÔ                  '       d   \Ö        M\Ø        4       R V nm        V P                  PÜ                  '       d   V Pß                  4        V P                  Pà                  '       d-   \â        Pä                  ! V P                  Pæ                  RR7       \é        4       V nu        \í        V Pï                  4       V Pñ                  4       V PÐ                  Pò                  V Pê                  .,            Uu. uF  p\Ÿ        V\ô        4      '       g   K  VNK  	  upR7      V n{        R	V n|        R V n}        R V n~        ^ V n        R	V n€        R V n�        VEP                  V nƒ        R	V n„        V PÐ                  EP                  V P                  V Pö                  V Pê                  4      V nu        \9        V P                  RR 4      e1   V P                  EP                  V P                  P’                  n†        VPF                  ;'       d    VPH                  PK                  RR	4      V n‡        V EP                  '       dƒ   E\        '       g   \-        R4      hE\        EP                  ! 4       pE\        EP                  ! E\        EP                  ! E\        EP                  ! E\!        V4      4      V^3R!R7      4       V PL                  ;'       d    V EP                  '       * V n‘        V P                  EP%                  4        R # u upi u upi )"NÚtmp_trainerz1No `TrainingArguments` passed, using `output_dir=z`.)Ú
output_dirz<`Trainer` requires either a `model` or `model_init` argumentzK`Trainer` requires either a `model` or `model_init` argument, but not both.zThe model you have picked (a  ) cannot be used as is for training: it only computes hidden states and does not accept any labels. You should choose a model with a head suitable for your task like any of the `AutoModelForXxx` listed at https://huggingface.co/docs/transformers/model_doc/autoFÚhf_device_mapTÚxlazZUsing --fsdp xxx together with --deepspeed is not possible, deactivate one of those flags.z.Using fsdp only works in distributed training.Úquantization_methodÚaccepts_loss_kwargsc              3   ón   "  € T F+  qP                   \        P                  P                  8H  x € K-  	  R # 5i©N)ÚkindÚinspectÚ	ParameterÚVAR_KEYWORD)Ú.0Úks   & rÍ   Ú	<genexpr>Ú#Trainer.__init__.<locals>.<genexpr>ó  s'   é € ð 1ÙAX¸A—‘œ'×+Ñ+×7Ñ7Ö7ÓAXùs   ‚35Úparallelism_configÚ	deepspeedÚ	loss_typeÚproblem_typeÚmulti_label_classificationzsLabel smoothing is not compatible with multi-label classification. Disabling label smoothing for this training run.)Úepsilon)ÚJITCheckpointCallback©Úexist_ok)Úis_local_process_zeroÚis_world_process_zeroÚstateful_callbacksÚconfigÚxla_fsdp_v2z*FSDPv2 requires `torch_xla` 2.2 or higher.)Ú
axis_names)ÚcpuÚdisk)ÚfsdpÚtensor)“ÚloggerÚinfort   r³   Úfull_determinismrd   Úseedrl   rã   r²   Ú"create_accelerator_and_postprocessr]   Úskip_memory_metricsÚ_memory_trackerÚstartÚget_process_log_levelr�   Úset_verbosityÚ_setup_devicesr¸   Úcall_model_initÚRuntimeErrorÚ
ValueErrorÚ	__class__Ú__name__r4   rq   Úis_model_parallelÚgetattrÚsetrÔ   ÚvaluesÚlenÚdevicerÃ   ró   Úfsdp_configÚgetÚis_fsdp_xla_enabledÚis_deepspeed_enabledÚparallel_moders   ÚDISTRIBUTEDÚplace_model_on_deviceÚfp16_full_evalÚbf16_full_evalÚis_fsdp_enabledr‰   r‘   ÚBITS_AND_BYTESÚ_move_model_to_deviceÚ_n_gpuÚmodel_wrappedrp   Úacceleratorr2   Úhasattrr×   Úmodel_accepts_loss_kwargsrÛ   Ú	signatureÚforwardÚ
parametersÚanyÚ
sp_backendÚ
sp_enabledr‚   Úlabel_namesr€   r.   r/   Ú_loss_shifts_labelsÚlabel_smoothing_factorrî   ÚwarningsÚwarnÚUserWarningÚlabel_smootherrG   Ú
isinstancer8   r   r   r   r´   rµ   r¶   r·   Úneftune_noise_alphar¹   rº   r¾   Ú	optimizerrÆ   r½   Ú_validate_argsÚDEFAULT_CALLBACKSr
   Ú	report_toÚenable_jit_checkpointÚtrainer_jit_checkpointrè   Úset_trainerr9   Úcallback_handlerÚadd_callbackÚdisable_tqdmr<   ÚDEFAULT_PROGRESS_CALLBACKÚhub_model_idÚpush_to_hubÚinit_hf_repoÚshould_saveÚosÚmakedirsrÓ   r?   Úcontrolr@   rë   rì   r»   r;   ÚstateÚis_in_trainÚhp_nameÚhp_search_backendÚcurrent_flosÚ_loggers_initializedÚ_signature_columnsÚtrain_batch_sizeÚ_train_batch_sizeÚ_created_lr_schedulerÚon_init_endÚ	use_cacheÚis_fsdp_xla_v2_enabledÚIS_XLA_FSDPV2_POST_2_2ÚxrÚglobal_runtime_device_countÚxsÚset_global_meshÚMeshÚnpÚarrayÚrangeÚis_fsdp_xla_v1_enabledÚstop_and_update_metrics)Úselfr²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   rÓ   Ú	log_levelr
  ÚdevicesÚunwrapped_modelÚforward_paramsÚpcÚmodel_to_inspectÚdefault_label_namesÚdefault_collatorÚdefault_callbacksrè   Újit_callbackÚcbÚnum_devicess   &&&&&&&&&&&&&&               rÍ   Ú__init__ÚTrainer.__init__l  ss  € ðD Š<Ø&ˆJÜ�K‰KÐKÈJÈ<ÐWYÐZÔ[Ü$°
Ô;ˆDØŒ	à37·9±9×3M×3MÐ3MÔ §	¡	§¡Ô/ÔS[Ð\`×\eÑ\e×\jÑ\jÓSkøð
 ˆŒØŒ
Ø×/Ñ/Ô1ä3°D·I±I×4QÑ4QÓRˆÔØ×Ñ×"Ñ"Ô$à×.Ñ.Ó0ˆ	Ü×Ò˜iÔ(à×Òð Š=ØÒ%Ø",”Ø×,Ñ,Ó.‘ä"Ð#aÓbÐbàÒ%Ü Ð!nÓoÐoØ(ŒOà�?‰?×#Ñ#Ô':Ô:ÜØ-¨e¯o©o×.FÑ.FÐ-Gð HJð Jóð ô 	+¨5Ô1ð "'ˆÔÜ�5˜/¨4Ó0Ò<Ü,/°×0CÑ0C×0JÑ0JÓ0LÔ,MÓoÑ,M &ÐQWÐ_nÑQn—v�vÑ,MˆGÐoÜ�7‹|˜aÔØ)-�Õ&Ü�W“ Ô"Ø)-¯©×)9Ñ)9¼U¿\º\È'ÐRSÍ*Ó=UÑ)U�Ô&à#'§9¡9×#SÐ#S°×1AÑ1A×1EÑ1EÀeÈUÓ1SˆÔ Ø�9�9ˆ9Ø×(×(Ð(Ü Øpóð ð ×+×+Ð+°×0BÑ0BÄl×F^ÑF^Ô0^Ü Ð!QÓRÐRð ×%Ñ%Ò1Ø)-×)CÑ)CˆDÕ&à×"×"Ð"Ø×(×(Ð(Ø×#×#Ð# t×':×':Ð':Ø×'×'Ð'Ø×#×#Ð#Ü&×(Ò(à).ˆDÕ&à)-ˆDÔ&ð
 ×&×&Ð&Ü˜Ð4°dÓ;Ô?Q×?`Ñ?`Ô`à×&Ñ& u¯k©kÔ:ð ×!×!Ð!Ø ˆD�I‰IÔð #ÔØŒ
ô ,¨D×,<Ñ,<×,IÑ,IÈ%Ó,PÓQˆä�?Ð$9×:Ò:Ø-<×-PÑ-PˆDÕ*ä$×.Ò.¨×/FÑ/FÓG×RÑRˆNß-0«Sñ 1ØAO×AVÑAVÔAXó1¯S¯SªSñ 1ØAO×AVÑAVÔAXó1ó .ˆDÔ*ô
 �T×%Ñ%Ð';¸TÓBˆØŠ>˜bŸm™m¨{Ô:¸r¿}¿}¸}Ø-2ˆDÔ*ä,¨T¯Z©ZÓ8ÐÜ)Ð*:×*DÑ*DÓEÐØ26·)±)×2GÑ2GÒ2OÑ.ÐUY×U^ÑU^×UjÑUjˆÔÜ.Ð/?×/IÑ/IÓJˆÔô $0×#3Ò#3´GÐ<LÈkÐ[_Ó4`Ó#aÔetÐ#tˆÔ à�9‰9×+Ñ+¨qÔ0Ü�t—z‘z×(Ñ(¨.¸$Ó?ÐC_Ô_Ü—’ðGäôð
 '+�Õ#ä&3¸D¿I¹I×<\Ñ<\Ô&]�Õ#à"&ˆDÔð  Ò+ÜÐ+Ô.EÔG_Ð-`×aÒaô $Ð$4Ô5ô 'ð	 	ð /<Ò.G™]ÐM]ˆÔØ*ÔØ(ÔØ 0ÔØ#'×#;Ñ#;ˆÔ ð "3ÔØ.ÔØ-JÔ*ð -7Ñ)ˆŒ˜Ô)Ø(@Ô%à×ÑÔô .Ô0SÐTX×T]ÑT]×TgÑTgÓ0hÕhÐà�9‰9×*×*Ð*ÝEá0Ó2ˆLØ 1°\°NÕ BÐØ×$Ñ$ TÔ*à)2Ò):Ñ%Ð@QÐT]Õ@]ˆ	Ü /Ø—z‘z 4×#8Ñ#8¸$¿.¹.È$×J[ÑJ[ó!
ˆÔð 	×Ñ¨T¯Y©Y×-C×-CÐ-C�/ÔIbÔcð !ˆÔØ�9‰9× × Ð Ø×ÑÔØ�9‰9× × Ð Ü�KŠK˜Ÿ	™	×,Ñ,°tÕ<ô &Ó'ˆŒÜ!Ø"&×"<Ñ"<Ó">Ø"&×"<Ñ"<Ó">à!×2Ñ2×<Ñ<ÀÇÁ¸~ÖMó ÙM�rÔQ[Ð\^Ô`o×Qp—�ÑMñ ô
ˆŒ
ð !ˆÔØˆŒØ!%ˆÔàˆÔà$)ˆÔ!à"&ˆÔà!%×!6Ò!6ˆÔà%*ˆÔ"à×,Ñ,×8Ò8¸¿¹ÀDÇJÁJÐPT×P\ÑP\Ó]ˆŒô �4—:‘:˜x¨Ó.Ò:Ø*.¯)©)×*=Ò*=ˆD�J‰J×ÑÔ'à&*§i¡i×&^Ð&^°D×4DÑ4D×4HÑ4HÈÐX]Ó4^ˆÔ#Ø×&×&Ñ&ß)Ô)Ü Ð!MÓNÐNÝ×8Ó8Ó:ˆKÝ×Ó�rŸw›w¥r§x£xµ°kÓ0BÓ'CÀkÐSTÐEUÐbtÔuÔvØ&*×&>Ñ&>×&bÐ&bÀt×GbÒGbÔCbˆÔ#à×Ñ×4Ò4Ö6ùòY pùòX s   Ç 	kÇ.kâ>kãkc                ó   <€ V ^8„  d   QhRR/# ©r±   ÚreturnN© )rË   rÌ   s   "€rÍ   rÎ   rÏ   l  s   ø€ ÷ Pñ P ñ PrÐ   c                óú  € V P                   p\        4       '       dæ   VP                  '       d   \        R4      hVP                  \
        P                  P                  P                  8w  d–   \        P                  R\
        P                  P                  P                   RVP                   R\
        P                  P                  P                   24       \
        P                  P                  P                  Vn        VP                  '       dI   V P                  e;   R\        P                  ! V P                  4      P                  9  d   \        R4      hVP                  e9   VP                  R8w  d(   V P                   f   \        R	VP                   R
24      hVP"                  \$        P&                  8X  g   VP(                  '       d   VP*                  f   \        R4      hV P,                  e   V P.                  e   \1        R4      hV P2                  e(   V P.                  f   V P4                  e   \1        R4      h\7        4       '       dž   V P.                  e�   V P8                  P                  4        F  pVP:                  p M	  V P.                  P<                   F6  p\?        VR,          4      ^ 8”  g   K  VR,          ^ ,          P:                  p M	  XX8w  d   \        R4      hV P@                  '       g   V PB                  '       d(   V P.                  f   V P4                  e   \1        R4      h\E        V PF                  4      '       g2   \E        \I        V PF                  RR4      4      '       d   \K        R4      hVPL                  ^ 8”  d'   VPN                  ^ 8”  d   \        PQ                  R4       V PR                  e8   \U        V PR                  4      '       g   VPL                  ^ 8:  d   \        R4      hV PR                  ef   \W        V PR                  \X        PZ                  P\                  P^                  4      '       d&   \        PQ                  RVP`                   R24       R# R# R# )zJValidate constructor arguments and fail fast on incompatible combinations.zOSageMaker Model Parallelism does not support BF16 yet. Please use FP16 instead z(FP16 provided in SM_HP_MP_PARAMETERS is z+, but FP16 provided in trainer argument is z, setting to NÚcompute_resultzõWhen using `batch_eval_metrics`, your `compute_metrics` function must take a `compute_result` boolean argument which will be triggered after the last batch of the eval set to signal that the summary statistics should be returned by the function.Únoz%You have set `args.eval_strategy` to zx but you didn't pass an `eval_dataset` to `Trainer`. Either set `args.eval_strategy` to `no` or pass an `eval_dataset`. zƒ`args.metric_for_best_model` must be provided when using 'best' save_strategy or if `args.load_best_model_at_end` is set to `True`.zSPassing both `optimizers` and `optimizer_cls_and_kwargs` arguments is incompatible.z¨Passing a `model_init` is incompatible with providing the `optimizers` argument. You should subclass `Trainer` and override the `create_optimizer_and_scheduler` method.Úparamsa[  The model and the optimizer parameters are not on the same device, which probably means you created an optimizer around your model **before** putting on the device and passing it to the `Trainer`. Make sure the lines `import torch_xla.core.xla_model as xm` and `model.to(xm.xla_device())` is performed before the optimizer creation in your script.z—Passing `optimizers` is not allowed if PyTorch FSDP is enabled. You should subclass `Trainer` and override the `create_optimizer_and_scheduler` method.Úcollate_batchzRThe `data_collator` should be a simple callable (function, class with `__call__`).zHmax_steps is given, it will override any value given in num_train_epochszžThe train_dataset does not implement __len__, max_steps has to be specified. The number of steps needs to be known in advance for the learning rate scheduler.zThe `train_sampling_strategy='z‘'` option is ignored when using an `IterableDataset`. Samplers cannot be used with IterableDataset as they require indexed access to the dataset.)1r³   r‰   Úbf16r  Úfp16Úsmpr=  Úcfgrõ   ÚwarningÚbatch_eval_metricsrº   rÛ   r  r  Úeval_strategyr¶   Úsave_strategyr\   ÚBESTÚload_best_model_at_endÚmetric_for_best_modelr½   r+  r  r¸   rÆ   rŽ   r²   r
  Úparam_groupsr	  r  r  Úcallabler´   r  Ú	TypeErrorÚ	max_stepsÚnum_train_epochsrö   rµ   rg   r)  rÃ   ÚutilsÚdatar   Útrain_sampling_strategy)rU  r³   ÚparamÚmodel_deviceÚparam_groupÚoptimizer_devices   &     rÍ   r,  ÚTrainer._validate_argsl  s¯  € à�y‰yˆô #×$Ò$Ø�y�yˆyÜ Ð!rÓsÐsØ�y‰yœCŸI™IŸM™M×.Ñ.Ô.Ü—‘Ø>¼s¿y¹y¿}¹}×?QÑ?QÐ>Rð S@Ø@DÇ	Á	¸{ð K"Ü"%§)¡)§-¡-×"4Ñ"4Ð!5ð7ôô
  ŸI™IŸM™M×.Ñ.�”	ð ×"×"Ð" t×';Ñ';Ò'GØ¤w×'8Ò'8¸×9MÑ9MÓ'N×'YÑ'YÔYÜ ðNóð ð
 ×ÑÒ)¨d×.@Ñ.@ÀDÔ.HÈT×M^ÑM^ÒMfÜØ7¸×8JÑ8JÐ7Kð  LDð  Eóð ð ×Ñ¤×!2Ñ!2Ô2°d×6Q×6QÐ6QØ×)Ñ)Ò1Ü ð Zóð ð
 ×(Ñ(Ò4¸¿¹Ò9SÜÐtÓuÐuØ�?‰?Ò&¨D¯N©NÒ,FÈ$×J[ÑJ[ÒJgÜðjóð ô "×#Ò#¨¯©Ò(BØŸ™×.Ñ.Ö0�Ø$Ÿ|™|�Ùñ 1ð  $Ÿ~™~×:Ô:�Ü�{ 8Õ,Ó-°Ö1Ø'2°8Õ'<¸QÕ'?×'FÑ'FÐ$Ùñ  ;ð Ð/Ô/Ü ðnóð ð ×$×$Ð$¨×(<×(<Ð(<Ø�N‰NÒ&¨$×*;Ñ*;Ò*Gäðjóð ô ˜×*Ñ*×+Ò+´¼À×ASÑASÐUdÐfjÓ9k×0lÒ0lÜÐpÓqÐqØ�>‰>˜AÔ $×"7Ñ"7¸!Ô";Ü�K‰KÐbÔcØ×ÑÒ)´*¸T×=OÑ=O×2PÒ2PÐUY×UcÑUcÐghÔUhÜðdóð ð
 ×ÑÒ)¬j¸×9KÑ9KÌUÏ[É[×M]ÑM]×MmÑMm×.nÒ.nÜ�K‰KØ0°×1MÑ1MÐ0Nð Onð nöñ /oÑ)rÐ   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# ©r±   rf  )rÀ   rÉ   r	   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ¾  s   ø€ ÷ 9ñ 9±4¹¹S¸µ>ñ 9rÐ   c                ó  € RV P                   P                  RV P                   P                  /pVP                  V4       V P                   P                  e   V P                   P                  pM\\        V P                  \        4      '       d;   V P                  P                  ;'       g    V P                   P                  '       * pMRpRV/pV P                   P                  e   V P                   P                  VR&   V P                   P                  e   V P                   P                  VR&   V P                   P                  e   V P                   P                  VR&   \        R/ VB .VR	&   V P                   P                  e<   R
p\        V4      '       g   \!        RV R24      hV P                   P                  VR&   \#        V P                  RR4      eÝ   V P                  P$                  ^8”  dÂ   V P                   P                  f\   \        R
4      '       d@   V P                   P                  f'   ^ RIHp V! V P                  P$                  R7      VR&   MY\+        R4      hVR,          P$                  V P                  P$                  8w  d#   V P                  P$                  VR,          n        \        R4      '       d=   ^ RIHp V! V P                   P0                  V P                   P2                  R7      pW‚R&   V# )z>Helper method to build accelerator-specific keyword arguments.Úmixed_precisionÚdeepspeed_pluginNTÚfind_unused_parametersÚbucket_cap_mbÚbroadcast_buffersÚstatic_graphÚkwargs_handlersz1.12.0z'ParallelismConfig requires accelerate>=z1). Please upgrade accelerate to use this feature.râ   Útp_size)ÚParallelismConfig)r�  z5Requires accelerate>1.12.0 to use Tensor Parallelism.z1.2.0)ÚTorchDynamoPlugin)ÚbackendÚmodeÚdynamo_pluginrg  )r³   rˆ  r‰  ÚupdateÚddp_find_unused_parametersr)  r²   r1   Úis_gradient_checkpointingÚgradient_checkpointingÚddp_bucket_cap_mbÚddp_broadcast_buffersÚddp_static_graphr›   râ   r„   ÚImportErrorr  r�  Ú
accelerater�  r  Úaccelerate.utilsr‘  Útorch_compile_backendÚtorch_compile_mode)	rU  Úkwargsr³   Úfind_unusedÚ
ddp_kwargsÚmin_accelerate_versionr�  r‘  r”  s	   &,       rÍ   Ú_build_accelerator_argsÚTrainer._build_accelerator_args¾  sm  € ð ˜tŸy™y×8Ñ8Ø §	¡	× :Ñ :ð
ˆð 	�‰�FÔà�9‰9×/Ñ/Ò;ØŸ)™)×>Ñ>‰KÜ˜Ÿ
™
¤O×4Ò4ð  $Ÿz™z×CÑC×gÐgÀtÇyÁy×GgÑGgÔh‰KàˆKà.°Ð<ˆ
Ø�9‰9×&Ñ&Ò2Ø*.¯)©)×*EÑ*EˆJ�Ñ'Ø�9‰9×*Ñ*Ò6Ø.2¯i©i×.MÑ.MˆJÐ*Ñ+Ø�9‰9×%Ñ%Ò1Ø)-¯©×)CÑ)CˆJ�~Ñ&ä#@Ñ#NÀ:Ñ#NÐ"OˆÐÑð �9‰9×'Ñ'Ò3Ø%-Ð"Ü*Ð+A×BÒBÜ!Ø=Ð>TÐ=Uð  VGð  Hóð ð *.¯©×)EÑ)EˆDÐ%Ñ&ä�4—:‘:˜y¨$Ó/Ò;ÀÇ
Á
×@RÑ@RÐUVÔ@VØ�y‰y×+Ñ+Ò3Ü*¨8×4Ò4Ø—y‘y×3Ñ3Ò;Ý@á5FÈtÏzÉz×OaÑOaÔ5b˜Ð1Ñ2øä$Ð%\Ó]Ð]ØÐ*Õ+×3Ñ3°t·z±z×7IÑ7IÔIØ59·Z±Z×5GÑ5G�Ð)Õ*Ô2ä" 7×+Ò+å:á-ØŸ	™	×7Ñ7¸d¿i¹i×>ZÑ>ZôˆMð %2�Ñ!àˆrÐ   c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ù  s   ø€ ÷ jxñ jx°Dñ jxrÐ   c                ój	  € / pV P                   P                  P                  e!   V P                   P                  P                  pRV9   d?   V P                   P                  ^8”  d   \	        R4      hVR,          V P                   n        ^VR&   \        R/ VB pV P                   P                  P                  4       p. ROp\        R/ V Uu/ uF  qUVP                  V4      bK  	  upB pV P                   P                  Vn	        VP                  R4      pV'       d2   V P                   P                  '       g   \        P                  R4       Wvn        VP                  R4       RpV P                   P                  e#   ^ RIHp	 V	! R/ V P                   P                  B pV P#                  VVVR7      p
\%        R/ V
B V n        V P&                  P(                  V n        R	\,        P.                  ! V P*                  4      P0                  9   d<   \2        P4                  ! V P*                  V P                   P6                  R
7      V n        \9        V P&                  P:                  RR4      RJV n        \9        V P&                  P:                  RR4      RJV n        V P>                  '       dX   V P&                  P:                  P@                  PB                  '       d(   V P                   PD                  '       d   \	        R4      hV P<                  '       d:   \9        V P                   RR4      f!   \G        V P&                  V P                   4       V P                   PH                  '       de   V P<                  '       g   V P>                  '       dA   V P                   PJ                  '       d%   V P<                  '       d   RMRp\	        V R24      hV P<                  '       dW   V P&                  P:                  PL                  PN                  ^8X  d(   V P                   PP                  '       d   \	        R4      hV P                   PH                  '       dZ   V P>                  '       dF   R\S        V P&                  P:                  P@                  PT                  4      9   d   \	        R4      hR# R# R# u upi )zOCreate the accelerator and perform post-creation setup (FSDP, DeepSpeed, etc.).NÚ	num_stepsz÷The `AcceleratorConfig`'s `num_steps` is set but `gradient_accumulation_steps` is greater than 1 in the passed `TrainingArguments`If using the passed `AcceleratorConfig` is desired, do not set the `TrainingArguments` `gradient_accumulation_steps`.Únon_blockingzx`non_blocking` is enabled but `dataloader_pin_memory` is not. For the best performance, it's recommended to enable both.Úgradient_accumulation_kwargs)ÚFullyShardedDataParallelPlugin)Údataloader_configÚfsdp_pluginÚgradient_accumulation_pluginÚuse_gather_object)r°  r‰  r®  zÁThe activation_checkpointing in FSDP config and the gradient_checkpointing in training arg can't be set to True simultaneously. Please use FSDP's activation_checkpointing logic when using FSDP.Úhf_deepspeed_configÚ	DeepSpeedÚFSDPzJ can't be used with `save_only_model` along with `load_best_model_at_end`.zo`auto_find_batch_size` isn't supported yet with DeepSpeed Zero-3. Please consider using Zero-2, Zero-1, or FSDPÚSHARDED_STATE_DICTzWsave_only_model option is not compatible with FSDP state dict type 'SHARDED_STATE_DICT'rg  )Úsplit_batchesÚdispatch_batchesÚeven_batchesÚuse_seedable_sampler)+r³   Úaccelerator_configr«  Úgradient_accumulation_stepsr  r�   Úto_dictrš   ÚpopÚ	data_seedÚdataloader_pin_memoryrõ   rq  rª  Úfsdp_plugin_argsrž  r¬  r¥  r—   r  Úgather_for_metricsÚgather_functionrÛ   r  r  Ú	functoolsr   Úeval_use_gather_objectr  r=  r  r  r®  Úactivation_checkpointingr˜  r$   Úsave_only_modelrv  r‰  Ú
zero_stageÚauto_find_batch_sizerÉ   Ústate_dict_type)rU  Úgrad_acc_kwargsr¯  r¹  Údataloader_paramsr€  r­  rª  r®  r¬  r³   Úwrappers   &           rÍ   rù   Ú*Trainer.create_accelerator_and_postprocessù  så  € ð ˆØ�9‰9×'Ñ'×DÑDÒPØ"Ÿi™i×:Ñ:×WÑWˆOð ˜/Ô)Ø�y‰y×4Ñ4°qÔ8ä ðLóð ð
 9HÈÕ8T�—	‘	Ô5ð ()ˆ˜Ñ$ô
 (BÑ'TÀOÑ'TÐ$à!ŸY™Y×9Ñ9×AÑAÓCÐò jÐÜ3ñ 
ÙARÓSÑAR¸Ð(×,Ñ,¨UÓ3Ò3ÑARÑSñ
Ðð '+§i¡i×&9Ñ&9ÐÔ#à)×-Ñ-¨nÓ=ˆç §	¡	× ?× ?Ð ?Ü�N‰Nð Kôð *6Ô&à×ÑÐ=Ô>àˆØ�9‰9×%Ñ%Ò1ÝGá8ÑV¸4¿9¹9×;UÑ;UÑVˆKà×+Ñ+Ø/Ø#Ø)Eð ,ó 
ˆô 'Ñ.¨Ñ.ˆÔà#×/Ñ/×BÑBˆÔà¤'×"3Ò"3°D×4HÑ4HÓ"I×"TÑ"TÔTÜ#,×#4Ò#4Ø×$Ñ$¸¿	¹	×8XÑ8Xô$ˆDÔ ô
 %,¨D×,<Ñ,<×,BÑ,BÐDVÐX\Ó$]ÐeiÐ$iˆÔ!Ü& t×'7Ñ'7×'=Ñ'=¸}ÈdÓSÐ[_Ð_ˆÔð ××ÐØ×Ñ×%Ñ%×1Ñ1×J×JÐJÈtÏyÉy×Oo×OoÐOoÜ ð'óð ð ×$×$Ð$¬°·±Ð<QÐSWÓ)XÒ)`Ü'¨×(8Ñ(8¸$¿)¹)ÔDð �I‰I×%×%Ð%Ø×*×*Ð*¨d×.B×.BÐ.BØ—	‘	×0×0Ð0à%)×%>×%>Ð%>‘kÀFˆGÜ ˜yÐ(rÐsÓtÐtð ×%×%Ð%Ø× Ñ ×&Ñ&×7Ñ7×BÑBÀaÔGØ—	‘	×.×.Ð.äð Bóð ð �I‰I×%×%Ð%Ø×$×$Ð$Ø$¬¨D×,<Ñ,<×,BÑ,B×,NÑ,N×,^Ñ,^Ó(_Ô_äÐvÓwÐwñ `ñ %ñ &ùòO Ts   ÃR0c                ó    <€ V ^8„  d   QhRS[ /# r†  )r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   g  s   ø€ ÷ 
ñ 
¡jñ 
rÐ   c                óœ   € V P                   f   \        R4      hV P                  V P                   RV P                  V P                  RR7      # )a  
Returns the training [`~torch.utils.data.DataLoader`].

Will use no sampler if `train_dataset` does not implement `__len__`, a random sampler (adapted to distributed
training if necessary) otherwise.

Subclass and override this method if you want to inject some custom behavior.
z+Trainer: training requires a train_dataset.ÚTrainingT)ÚdatasetÚdescriptionÚ
batch_sizeÚ
sampler_fnÚis_training)rµ   r  Ú_get_dataloaderrE  Ú_get_train_sampler©rU  s   &rÍ   Úget_train_dataloaderÚTrainer.get_train_dataloaderg  sU   € ð ×ÑÒ%ÜÐJÓKÐKà×#Ñ#Ø×&Ñ&Ø"Ø×-Ñ-Ø×.Ñ.Øð $ó 
ð 	
rÐ   c                óD   <€ V ^8„  d   QhRS[ S[,          R,          RS[/# )r±   r¶   Nrf  )rÉ   r   r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   {  s%   ø€ ÷ %
ñ %
±±gµÀÕ0Dð %
ÑPZñ %
rÐ   c                óð  € Vf   V P                   f   \        R4      h\        V\        4      '       d   TMRp\	        V R4      '       d@   W P
                  9   d0   V P                  P                  '       d   V P
                  V,          # \        V\        4      '       d   V P                   V,          MVe   TMV P                   pV P                  VRV P                  P                  V P                  VR7      # )að  
Returns the evaluation [`~torch.utils.data.DataLoader`].

Subclass and override this method if you want to inject some custom behavior.

Args:
    eval_dataset (`str` or `torch.utils.data.Dataset`, *optional*):
        If a `str`, will use `self.eval_dataset[eval_dataset]` as the evaluation dataset. If a `Dataset`, will override `self.eval_dataset` and must implement `__len__`. If it is a [`~datasets.Dataset`], columns not accepted by the `model.forward()` method are automatically removed.
z-Trainer: evaluation requires an eval_dataset.ÚevalÚ_eval_dataloadersÚ
Evaluation)rÐ  rÑ  rÒ  rÓ  Údataloader_key)r¶   r  r)  rÉ   r  rÝ  r³   Údataloader_persistent_workersrÕ  Úeval_batch_sizeÚ_get_eval_sampler)rU  r¶   rß  s   && rÍ   Úget_eval_dataloaderÚTrainer.get_eval_dataloader{  sä   € ð Ò D×$5Ñ$5Ò$=ÜÐLÓMÐMô *4°LÄ#×)FÒ)F™ÈFˆä�DÐ-×.Ò.Ø×"8Ñ"8Ô8Ø—	‘	×7×7Ð7à×)Ñ)¨.Õ9Ð9ô ˜,¬×,Ò,ð ×Ñ˜lÖ+ð Ò'ñ à×"Ñ"ð 	ð ×#Ñ#Ø Ø$Ø—y‘y×0Ñ0Ø×-Ñ-Ø)ð $ó 
ð 	
rÐ   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r±   Útest_datasetrf  )r   r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ¢  s   ø€ ÷ 
ñ 
±ð 
¹Jñ 
rÐ   c                óh   € V P                  VRV P                  P                  V P                  R7      # )a}  
Returns the test [`~torch.utils.data.DataLoader`].

Subclass and override this method if you want to inject some custom behavior.

Args:
    test_dataset (`torch.utils.data.Dataset`, *optional*):
        The test dataset to use. If it is a [`~datasets.Dataset`], columns not accepted by the
        `model.forward()` method are automatically removed. It must implement `__len__`.
Útest)rÐ  rÑ  rÒ  rÓ  )rÕ  r³   rá  râ  )rU  ræ  s   &&rÍ   Úget_test_dataloaderÚTrainer.get_test_dataloader¢  s8   € ð ×#Ñ#Ø ØØ—y‘y×0Ñ0Ø×-Ñ-ð	 $ó 
ð 	
rÐ   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r±   Ú
dataloaderrf  )r   Úint)rË   rÌ   s   "€rÍ   rÎ   rÏ   ´  s   ø€ ÷ Kñ K¡zð K±cñ KrÐ   c                ó4  €  VP                   p\        V\        4      '       d    \        VP                   P                   4      # \        VP                   4      #   \        \
        \        3 d*    \        T4      T P                  P                  ,          u # i ; i)z³
Helper to get number of samples in a [`~torch.utils.data.DataLoader`] by accessing its dataset. When
dataloader.dataset does not exist or has no length, estimates as best it can
)	rÐ  r)  rF   r	  Ú	NameErrorÚAttributeErrorrz  r³   Úper_device_train_batch_size)rU  rì  rÐ  s   && rÍ   Únum_examplesÚTrainer.num_examples´  sz   € ð
	KØ ×(Ñ(ˆGä˜'Ô#7×8Ò8Ü˜:×-Ñ-×5Ñ5Ó6Ð6Ü�z×)Ñ)Ó*Ð*øÜœ>¬9Ð5ô 	KÜ�z“? T§Y¡Y×%JÑ%JÕJÒJð	Kús   ‚A A ÁA Á<BÂBc                ó´   <€ V ^8„  d   QhRS[ RS[RS[RS[S[ .S[P
                  P                  P                  3,          R,          RS[RS[R,          RS[	/# )	r±   rÐ  rÑ  rÒ  rÓ  NrÔ  rß  rf  )
r   rÉ   rí  r   rÃ   r}  r~  ÚSamplerÚboolr   )rË   rÌ   s   "€rÍ   rÎ   rÏ   Â  sv   ø€ ÷ 0ñ 0áð0ñ ð0ñ ð	0ñ
 ™g˜Y©¯©×(8Ñ(8×(@Ñ(@Ð@ÕAÀDÕHð0ñ ð0ñ ˜d�
ð0ñ 
ñ0rÐ   c                ój  € V P                   p\        4       '       d4   \        V\        P                  4      '       d   V P                  WR7      pMV P                  V P                   VR7      p\        P                  P                  P                  4       ;'       d    V P                  P                  ^8„  pRTRTRV P                  P                  RV P                  P                  RV P                  P                  RV'       d   RMR	/p	\        V\        P                  P                   P"                  4      '       g‡   Ve   V! V4      V	R
&   V P                  P$                  V	R&   V P                  P&                  V	R&   V'       d>   \)        \*        V P                  P                  V P                  P,                  R7      V	R&   V P.                  P1                  \3        V3/ V	B 4      p
VeG   V P                  P                  '       d+   \5        V R4      '       d   W P6                  V&   V
# Wj/V n        V
# )zACreate a [`~torch.utils.data.DataLoader`] from the given dataset.)rÑ  rÒ  Ú
collate_fnÚnum_workersÚ
pin_memoryÚpersistent_workersÚmultiprocessing_contextÚforkNÚsamplerÚ	drop_lastÚprefetch_factor)rù  ÚrankÚworker_init_fnrÝ  )r´   r…   r)  Údatasetsr   Ú_remove_unused_columnsÚ"_get_collator_with_removed_columnsrÃ   r¦   ÚmpsÚis_availabler³   Údataloader_num_workersr¾  rà  r}  r~  r   Údataloader_drop_lastÚdataloader_prefetch_factorr   rk   Úprocess_indexr  Úpreparer   r  rÝ  )rU  rÐ  rÑ  rÒ  rÓ  rÔ  rß  r´   Úshould_forkrÊ  rì  s   &&&&&&&    rÍ   rÕ  ÚTrainer._get_dataloaderÂ  sØ  € ð ×*Ñ*ˆÜ ×"Ò"¤z°'¼8×;KÑ;K×'LÒ'LØ×1Ñ1°'Ð1ÓS‰Gà ×CÑCÀD×DVÑDVÐdoÐCÓpˆMô —n‘n×(Ñ(×5Ñ5Ó7×`Ð`¸D¿I¹I×<\Ñ<\Ð_`Ñ<`ˆð ˜*Ø˜-Ø˜4Ÿ9™9×;Ñ;Ø˜$Ÿ)™)×9Ñ9Ø  $§)¡)×"IÑ"IØ%·¡vÀ$ð
Ðô ˜'¤5§;¡;×#3Ñ#3×#CÑ#C×DÒDØÒ%Ù/9¸'Ó/BÐ! )Ñ,Ø-1¯Y©Y×-KÑ-KÐ˜kÑ*Ø37·9±9×3WÑ3WÐÐ/Ñ0ßÜ6=Ü¨T¯Y©Y×-MÑ-MÐTX×T]ÑT]×TkÑTkô7Ð!Ð"2Ñ3ð ×%Ñ%×-Ñ-¬j¸Ñ.VÐDUÑ.VÓWˆ
ð Ò%¨$¯)©)×*Q×*QÐ*QÜ�tÐ0×1Ò1Ø9C×&Ñ& ~Ñ6ð Ðð +9Ð)E�Ô&àÐrÐ   c                ó~   <€ V ^8„  d   QhRS[ R,          RS[P                  P                  P                  R,          /# )r±   rµ   Nrf  ©r   rÃ   r}  r~  rõ  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ô  s5   ø€ ÷ 0ñ 0±¸$µð 0É%Ï+É+×JZÑJZ×JbÑJbÐeiÕJiñ 0rÐ   c                óª  € Vf   V P                   pVe   \        V4      '       g   R# V P                  P                  R8X  dâ   \	        4       '       de   \        V\        P                  4      '       dE   V P                  P                  VP                  9   d   WP                  P                  ,          MRpMRpV P                  e   V P                  P                  ^ ,          MRp\        V P                  P                  V P                  P                  ,          VVVR7      # V P                  P                  R8X  d   \        V4      # \!        V4      # )z?Return the training sampler based on `train_sampling_strategy`.NÚgroup_by_length©rÐ  ÚlengthsÚmodel_input_nameÚ
sequential)rµ   rg   r³   r  r…   r)  r  r   Úlength_column_nameÚcolumn_namesr·   Úmodel_input_namesrH   rD  rº  r   r   )rU  rµ   r  r  s   &&  rÍ   rÖ  ÚTrainer._get_train_samplerô  s  € àÒ Ø ×.Ñ.ˆMØÒ ¬
°=×(AÒ(AÙð �9‰9×,Ñ,Ð0AÔAÜ$×&Ò&¬:°mÄX×EUÑEU×+VÒ+Vð —y‘y×3Ñ3°}×7QÑ7QÔQð "§)¡)×">Ñ">Ö?àñ ð �à>B×>SÑ>SÒ>_�×%Ñ%×7Ñ7¸Ö:Ðeið ô (Ø—	‘	×*Ñ*¨T¯Y©Y×-RÑ-RÕRØ%ØØ!1ô	ð ð �Y‰Y×.Ñ.°,Ô>Ü$ ]Ó3Ð3ä  Ó/Ð/rÐ   c                óp   <€ V ^8„  d   QhRS[ RS[P                  P                  P                  R,          /# )r±   r¶   rf  Nr  )rË   rÌ   s   "€rÍ   rÎ   rÏ     s1   ø€ ÷ ñ ©gð ¹%¿+¹+×:JÑ:J×:RÑ:RÐUYÕ:Yñ rÐ   c                óB  € Ve   \        V4      '       g   R# V P                  P                  R8X  dÇ   \        4       '       de   \	        V\
        P                  4      '       dE   V P                  P                  VP                  9   d   WP                  P                  ,          MRpMRpV P                  e   V P                  P                  ^ ,          MRp\        V P                  P                  VVVR7      # V P                  P                  ^8:  d   \        V4      # R# )zNReturn the evaluation sampler, using sequential ordering when not distributed.Nr  r  )rg   r³   r  r…   r)  r  r   r  r  r·   r  rH   rá  Ú
world_sizer   )rU  r¶   r  r  s   &&  rÍ   râ  ÚTrainer._get_eval_sampler  sì   € àÒ¤z°,×'?Ò'?Ùà�9‰9×,Ñ,Ð0AÔAÜ$×&Ò&¬:°lÄH×DTÑDT×+UÒ+Uð —y‘y×3Ñ3°|×7PÑ7PÔPð !§¡×!=Ñ!=Ö>àñ ð �à>B×>SÑ>SÒ>_�×%Ñ%×7Ñ7¸Ö:Ðeið ô (Ø—	‘	×)Ñ)Ø$ØØ!1ô	ð ð �9‰9×Ñ 1Ô$Ü$ \Ó2Ð2árÐ   c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   0  s   ø€ ÷ \ñ \°$ñ \rÐ   c                ó0  € V P                   Ef   V P                  p\        V P                  4      '       dX   \        V P                  R4      '       d   V P                  P	                  4       pM V P                  P
                  P                  p\        P                  ! VP                  4      p\        VP                  P                  4       4      V n         V ;P                   \        \        RR.V P                  ,           4      4      ,          un         R# R# )zTPopulate `_signature_columns` from the model's forward signature if not already set.NÚget_base_modelÚlabelÚ	label_ids)rC  r²   r_   r  r!  Ú
base_modelrÛ   r  r  rÁ   r  Úkeysr  r"  )rU  r[  r  s   &  rÍ   Ú _set_signature_columns_if_neededÚ(Trainer._set_signature_columns_if_needed0  sÇ   € à×"Ñ"Ó*à#Ÿz™zÐÜ˜dŸj™j×)Ò)Ü˜4Ÿ:™:Ð'7×8Ò8Ø'+§z¡z×'@Ñ'@Ó'BÑ$ð (,§z¡z×'<Ñ'<×'BÑ'BÐ$Ü×)Ò)Ð*:×*BÑ*BÓCˆIÜ&*¨9×+?Ñ+?×+DÑ+DÓ+FÓ&GˆDÔ#à×#Ò#¤t¬C°¸+Ð0FÈ×IYÑIYÕ0YÓ,ZÓ'[Õ[×#ñ +rÐ   c                ó6   <€ V ^8„  d   QhRRRS[ R,          RR/# )r±   rÐ  zdatasets.DatasetrÑ  Nrf  ©rÉ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   @  s)   ø€ ÷ !;ñ !;Ø)ð!;Ù8;¸d½
ð!;à	ñ!;rÐ   c                óâ  € V P                   P                  '       g   V# V P                  4        V P                  p\	        \        VP                  4      \        V4      ,
          4      p\        V4      ^ 8”  dŒ   Vf   RMRV R2p\        P                  RV RV P                  P                  P                   RRP                  V4       RRP                  V4       R	V P                  P                  P                   R
24       V Uu. uF  qfVP                  9   g   K  VNK  	  pp\        V4      ^ 8X  d1   \        RRP                  V4       RRP                  V4       R24      h\        P                   ! \"        P$                  4      \        P                   ! R4      8  d8   VP'                  VP(                  R,          WqP(                  R,          R7       V# VP+                  V4      # u upi )zBRemove dataset columns not accepted by the model's forward method.Ú zin the z setzThe following columns z) don't have a corresponding argument in `z!.forward` and have been ignored: ú, z. If z are not expected by `z/.forward`,  you can safely ignore this message.zGNo columns in the dataset match the model's forward method signature: (z-). The following columns have been ignored: [zp]. Please check the dataset and model. You may need to set `remove_unused_columns=False` in `TrainingArguments`.z1.4.0rÈ   Úformat_kwargs)rÈ   Úcolumnsr-  )r³   Úremove_unused_columnsr&  rC  rÁ   r  r  r	  rõ   rö   r²   r  r  Újoinr  r   Úparser  r   Ú
set_formatrË   Úremove_columns)rU  rÐ  rÑ  Úsignature_columnsÚignored_columnsÚdset_descriptionrß   r.  s   &&&     rÍ   r  ÚTrainer._remove_unused_columns@  sÒ  € ð �y‰y×.×.Ð.ØˆNØ×-Ñ-Ô/Ø ×3Ñ3Ðäœs 7×#7Ñ#7Ó8¼3Ð?PÓ;QÕQÓRˆÜˆÓ !Ô#Ø%0Ò%8™rÀÈÀ}ÐTXÐ>YÐÜ�K‰KØ(Ð)9Ð(:ð ;Ø—J‘J×(Ñ(×1Ñ1Ð2Ð2SÐTX×T]ÑT]Ð^mÓTnÐSoð pØ—y‘y Ó1Ð2Ð2HÈÏÉ×I]ÑI]×IfÑIfÐHgð h7ð7ôñ 0ÓMÑ/˜¸×8LÑ8LÑ3L—1�1Ñ/ˆÐMÜˆw‹<˜1ÔÜØYÐZ^×ZcÑZcÐduÓZvÐYwð x=Ø=A¿Y¹YÀÓ=WÐ<Xð Y@ð@óð ô �=Š=œ×-Ñ-Ó.´·²¸wÓ1GÔGØ×ÑØ—^‘^ FÕ+°WÏNÉNÐ[jÕLkð ô ð ˆNà×)Ñ)¨/Ó:Ð:ùò Ns   ÄG,ÄG,c                ó:   <€ V ^8„  d   QhRS[ RS[R,          RS[ /# )r±   r´   rÑ  Nrf  )r   rÉ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   c  s*   ø€ ÷ 'ñ 'Áð 'ÑWZÐ]aÕWað 'Ñmuñ 'rÐ   c                óÞ   € V P                   P                  '       g   V# V P                  4        V P                  p\	        VV\
        VV P                  P                  P                  R7      pV# )z=Wrap the data collator in a callable removing unused columns.)r´   r4  rõ   rÑ  Ú
model_name)	r³   r/  r&  rC  r[   rõ   r²   r  r  )rU  r´   rÑ  r4  Úremove_columns_collators   &&&  rÍ   r  Ú*Trainer._get_collator_with_removed_columnsc  sb   € à�y‰y×.×.Ð.Ø Ð Ø×-Ñ-Ô/Ø ×3Ñ3Ðä"7Ø'Ø/ÜØ#Ø—z‘z×+Ñ+×4Ñ4ô#
Ðð 'Ð&rÐ   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r±   Únum_training_stepsrf  N©rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   u  s   ø€ ÷ 	Eñ 	EÁð 	EÈñ 	ErÐ   c                óJ   € V P                  4        V P                  VR7       R# )a2  
Setup the optimizer and the learning rate scheduler.

We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the
Trainer's init through `optimizers`, or subclass and override this method (or `create_optimizer` and/or
`create_scheduler`) in a subclass.
©r>  N)Úcreate_optimizerÚcreate_scheduler)rU  r>  s   &&rÍ   Úcreate_optimizer_and_schedulerÚ&Trainer.create_optimizer_and_scheduleru  s"   € ð 	×ÑÔØ×ÑÐ1CÐÖDrÐ   c                óH   <€ V ^8„  d   QhRS[ P                  P                  /# r†  )rÃ   rÄ   rÅ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   €  s!   ø€ ÷ Jñ J©e¯k©k×.CÑ.Cñ JrÐ   c           
     ó\  € Vf   V P                   MTpV P                  Ef»   V P                  V4      pRVP                  4        UUu. uF#  w  rEWC9   g   K  VP                  '       g   K!  VNK%  	  uppRV P
                  P                  /RVP                  4        UUu. uF#  w  rEWC9  g   K  VP                  '       g   K!  VNK%  	  uppRR/.pV P                  e   V P                  w  rxMV P                  V P
                  V4      w  rx\        V4      '       d   V! 4       ! V3/ VB V n        MVRV9   d   VP                  R4      pRV9   d   VP                  R4      pRV9   d   VP                  R4      pV! V3/ VB V n        R\        V4      9   EdG   VP                  RR4      ^8X  Ed/   ^ RIp	V	P                  P                  P!                  4       p
^ pVP#                  4        FÐ  p\%        V\&        P(                  4      '       g   K%  T\+        VP-                  4        Uu/ uF!  qUP/                  4       VP1                  4       bK#  	  upP3                  4       4      ,          p\4        P7                  R	V R
VR,           R24       V
P9                  VRR^ /4       \4        P;                  RV R24       KÒ  	  \4        P7                  RVR,           R24       \=        4       '       d&   \>        P@                  ! V P                  4      V n        V P                  # u uppi u uppi u upi )a  
Setup the optimizer.

We provide a reasonable default that works well. If you want to use something else, you can pass a tuple in the
Trainer's init through `optimizers`, or subclass and override this method in a subclass.

Returns:
    `torch.optim.Optimizer`: The optimizer instance.
Nrk  Úweight_decayç        r²   Úoptimizer_dictÚbitsandbytesÚ
optim_bitszskipped z: zM paramsÚweightzbitsandbytes: will optimize z in fp32z	skipped: i   )!r²   r+  Úget_decay_parameter_namesÚnamed_parametersÚrequires_gradr³   rH  r½   Úget_optimizer_cls_and_kwargsrD   r¼  rÉ   r  rK  rÄ   ÚGlobalOptimManagerÚget_instanceÚmodulesr)  r   Ú	EmbeddingÚsumr  Údata_ptrÚnumelr  rõ   rö   Úregister_module_overrideÚdebugr‰   ro  ÚDistributedOptimizer)rU  r²   Ú	opt_modelÚdecay_parametersÚnÚpÚoptimizer_grouped_parametersÚoptimizer_clsÚoptimizer_kwargsrK  ÚmanagerÚskippedÚmodules   &&           rÍ   rB  ÚTrainer.create_optimizer€  sá  € ð #(¢-�D—J’J°Uˆ	à�>‰>Ó!Ø#×=Ñ=¸iÓHÐð Ø&/×&@Ñ&@Ô&BôÙ&B™d˜aÀqÑG\œÐab×apÕapŸ˜Ñ&Bòð # D§I¡I×$:Ñ$:ð	ð Ø&/×&@Ñ&@Ô&BôÙ&B™d˜aÀqÑG`œÐef×etÕetŸ˜Ñ&Bòð # Cð	ð,Ð(ð ×,Ñ,Ò8Ø26×2OÑ2OÑ/�Ð/à26×2SÑ2SÐTX×T]ÑT]Ð_hÓ2iÑ/�ô $ M×2Ò2Ù!.¤°Ñ!OÐ>NÑ!O�•ð
 Ð/Ô/Ø3C×3GÑ3GÈÓ3QÐ0ð Ð.Ô.Ø3C×3GÑ3GÈÓ3PÐ0ð $Ð'7Ô7Ø3C×3GÑ3GÐHXÓ3YÐ0á!.Ð/KÑ!`ÐO_Ñ!`�”à¤ ]Ó!3Õ3Ð8H×8LÑ8LÈ\Ð[_Ó8`ÐdeÕ8eÛ#à&×,Ñ,×?Ñ?×LÑLÓN�à�Ø'×/Ñ/Ö1�FÜ! &¬"¯,©,×7Ô7Ø¤3È×IZÑIZÔI\Ó']ÑI\ÀA¯
©
«°a·g±g³iÒ(?ÑI\Ñ']×'dÑ'dÓ'fÓ#gÕg˜ÜŸ™ h¨v¨h°b¸À5½Ð8IÈÐ$RÔSØ×8Ñ8¸ÀÈLÐZ\ÐK]Ô^ÜŸ™Ð'CÀFÀ8È8Ð%TÖUñ 2ô —‘˜i¨°%­Ð'8¸ÐAÔBä"×$Ò$Ü ×5Ò5°d·n±nÓEˆDŒNà�~‰~ÐùóuùóùòV (^s*   Á
LÁLÁ*LÂ
L#
Â-L#
ÃL#
È%'L)c                óž   <€ V ^8„  d   QhRS[ RS[P                  P                  R,          RS[P                  P                  P
                  /# )r±   r>  r+  Nrf  )rí  rÃ   rÄ   rÅ   rÆ   ÚLRScheduler)rË   rÌ   s   "€rÍ   rÎ   rÏ   Ì  sD   ø€ ÷ !ñ !Ù"%ð!Ù27·+±+×2GÑ2GÈ$Õ2Nð!á	�‰×	!Ñ	!×	-Ñ	-ñ!rÐ   c                ó²  € V P                   f¿   Vf^   \        4       '       dB   \        P                  P                  P
                  '       d   V P                  P                  pMV P                  p\        V P                  P                  VV P                  P                  V4      VV P                  P                  R7      V n         RV n        V P                   # )a,  
Setup the scheduler. The optimizer of the trainer must have been set up either before this method is called or
passed as an argument.

Args:
    num_training_steps (int): The number of training steps to do.

Returns:
    `torch.optim.lr_scheduler.LRScheduler`: The learning rate scheduler instance.
)r+  Únum_warmup_stepsr>  Úscheduler_specific_kwargsT)rÆ   r‰   ro  r=  rp  rn  r+  r6   r³   Úlr_scheduler_typeÚget_warmup_stepsÚlr_scheduler_kwargsrF  )rU  r>  r+  s   &&&rÍ   rC  ÚTrainer.create_schedulerÌ  s    € ð ×ÑÒ$ØÒ Ü*×,Ò,´·±·±×1C×1CÐ1Cà $§¡× 8Ñ 8‘Ià $§¡�IÜ -Ø—	‘	×+Ñ+Ø#Ø!%§¡×!;Ñ!;Ð<NÓ!OØ#5Ø*.¯)©)×*GÑ*Gô!ˆDÔð *.ˆDÔ&Ø× Ñ Ð rÐ   c                óP   <€ V ^8„  d   QhRS[ RS[R,          RS[S[S[3,          /# )r±   r³   r²   Nrf  )rt   r1   rÂ   r	   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ë  s6   ø€ ÷ ñ Ñ+<ð Á_ÐW[ÕE[ð ÑglÑmpÑruÐmuÕgvñ rÐ   c           	     ó0  € \        V VRV P                  /RV P                  V P                  3RV P                  /\        V P                  4      R7      p\        P                  ! V P                  4      pVf   \        RV P                   24      hV! V4      # )a¹  
Returns the optimizer class and optimizer parameters based on the training arguments.

Args:
    args (`transformers.training_args.TrainingArguments`):
        The training arguments for the training session.
    model (`PreTrainedModel`, *optional*):
        The model being trained. Required for some optimizers (GaLore, Apollo, LOMO).

Returns:
    A tuple containing the optimizer class and a dictionary of optimizer keyword arguments.
ÚlrÚbetasÚeps)r³   r²   rb  Úadam_kwargsÚ
optim_argsz2Trainer cannot instantiate unsupported optimizer: )rB   Úlearning_rateÚ
adam_beta1Ú
adam_beta2Úadam_epsilonrC   rv  rA   r  rÄ   r  )r³   r²   ÚctxÚhandlers   &&  rÍ   rQ  Ú$Trainer.get_optimizer_cls_and_kwargsê  s’   € ô ØØØ" D×$6Ñ$6Ð7à˜$Ÿ/™/¨4¯?©?Ð;Ø�t×(Ñ(ðô )¨¯©Ó9ô	
ˆô &×)Ò)¨$¯*©*Ó5ˆØŠ?ÜÐQÐRV×R\ÑR\ÐQ]Ð^Ó_Ð_á�s‹|ÐrÐ   c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# )r±   r²   rf  )r   r¿   rÁ   rÉ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   	  s#   ø€ ÷ 
 ñ 
 ©r¯y©yð 
 ¹TÁ#½Yñ 
 rÐ   c                óF   € . ROp\        V\        P                  .V4      pV# )a  
Get all parameter names that weight decay will be applied to.

This function filters out parameters in two ways:
1. By layer type (instances of layers specified in ALL_LAYERNORM_LAYERS)
2. By parameter name patterns (containing 'bias', or variation of 'norm')
)ÚbiasÚ	layernormÚrmsnormz(?:^|\.)norm(?:$|\.)z_norm(?:$|\.))rL   r   Ú	LayerNorm)rU  r²   Úforbidden_name_patternsr]  s   &&  rÍ   rN  Ú!Trainer.get_decay_parameter_names	  s'   € ò #qÐÜ.¨u´r·|±|°nÐF]Ó^ÐØÐrÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  )Úfloat)rË   rÌ   s   "€rÍ   rÎ   rÏ     s   ø€ ÷ ñ ¡Eñ rÐ   c                ó\  € V P                   '       d$    V P                  P                  4       ^ ,          pMŠ\        V P                  \        P                  P                  P                  \        34      '       d&   V P                  P                  ^ ,          R,          pM!V P                  P                  4       ^ ,          p\        P                  ! V4      '       d   VP                  4       pV#   \         d3   pR\	        T4      9   d   \
        P                  R4       ^ p Rp?Leh Rp?ii ; i)z�
Returns the current learning rate from the scheduler.

Handles DeepSpeed's dynamic loss scaling warmup period where `get_last_lr` may fail.
zneed to call stepzQtried to get lr value before scheduler/optimizer started stepping, returning lr=0Nrr  )r  rÆ   Úget_last_lrÚAssertionErrorrÉ   rõ   rq  r)  rÃ   rÄ   ÚReduceLROnPlateaur5   r+  rx  Ú	is_tensorÚitem)rU  Úlast_lrÚes   &  rÍ   Ú_get_learning_rateÚTrainer._get_learning_rate  sÝ   € ð ×$×$Ð$ðØ×+Ñ+×7Ñ7Ó9¸!Õ<‘ô ˜$×+Ñ+¬e¯k©k×.FÑ.F×.XÑ.XÔZbÐ-c×dÒdØŸ.™.×5Ñ5°aÕ8¸Õ>‘à×+Ñ+×7Ñ7Ó9¸!Õ<�ä�?Š?˜7×#Ò#Ø—l‘l“nˆGØˆøô "ô Ø&¬#¨a«&Ô0Ü—N‘NÐ#vÔwØ•Gàûðús   ”!C. Ã.D+Ã9'D&Ä%D&Ä&D+c                ól   <€ V ^8„  d   QhRS[ S[,          R,          RRRS[S[ ,          R,          RS[/# )r±   Úresume_from_checkpointNÚtrialú$optuna.Trial | dict[str, Any] | NoneÚignore_keys_for_evalrf  )rÉ   rö  rÁ   r^   )rË   rÌ   s   "€rÍ   rÎ   rÏ   3  sK   ø€ ÷ kñ ká #¡d¥
¨TÕ 1ðkð 6ðkñ #¡3�i¨$Õ.ð	kñ
 
ñkrÐ   c           	     óÔ  € VRJ d   RpV P                   P                  4        V P                  pRV n        V P                  e«   VP
                  '       d   \        VP                  4      M\        VP                  4       V P                  V4      V n
        RRuV n        V n        V P                  '       d'   V P                  V P                  VP                  4       V P                  V n        V P                  P"                  '       d+   \%        V P                  V P                  P&                  4       VP(                  '       g   VP*                  '       dG   V P,                  '       g5   V P                  f'   V P                  V P                  VP                  4       VP.                  '       d'   V P                  P1                  VP2                  R7       \5        V P6                  \8        \:        34      '       d=   \=        V P                  R4      '       d!   \?        V P                  V P6                  4       V P@                  e1   \C        V P                  V P@                  V PD                  4      V n#        V PI                  V4       \J        PL                  VPN                  9   d2   VPP                  ^8”  d   \S        R4      h\U        V P                  4       \5        V\V        4      '       d;   V'       d3   \Y        VPZ                  4      pVf   \S        RVPZ                   R24      hVe¯   \]        4       '       g6   V P^                  '       g$   V P`                  '       g   V Pc                  V4       \d        Pf                  ! \h        Pj                  Pm                  V\n        4      4      pVPp                  e$   VPr                  '       d   VPp                  V n:        \w        V Px                  V Pt                  VPr                  4      pVPz                  '       d   \}        4       M\~        P€                  ! 4       pV;_uu_ 4        V! VVVVR	7      uuRRR4       #   + '       g   i     R# ; i)
a„  
Main training entry point.

Args:
    resume_from_checkpoint (`str` or `bool`, *optional*):
        If a `str`, local path to a saved checkpoint as saved by a previous instance of [`Trainer`]. If a
        `bool` and equals `True`, load the last checkpoint in *args.output_dir* as saved by a previous instance
        of [`Trainer`]. If present, training will resume from the model/optimizer/scheduler states loaded here.
    trial (`optuna.Trial` or `dict[str, Any]`, *optional*):
        The trial run or the hyperparameter dictionary for hyperparameter search.
    ignore_keys_for_eval (`list[str]`, *optional*)
        A list of keys in the output of your model (if it is a dictionary) that should be ignored when
        gathering predictions for evaluation during the training.

Returns:
    [`~trainer_utils.TrainOutput`]: Object containing the global step count, training loss, and metrics.
FNT)Úgradient_checkpointing_kwargsrî   z\Currently --debug underflow_overflow is not supported under DP. Please use DDP with torchrunz/No valid checkpoint found in output directory (Ú))r³   r“  r”  r–  )Arû   rü   r³   r>  r¸   r÷   rd   rø   rl   r   r²   r+  rÆ   r  r  r
  r  Úuse_liger_kernelr'   Úliger_kernel_configr  r  r  r˜  Úgradient_checkpointing_enabler˜  r)  r·   r8   r7   r  r`   r*  r(   r  Úneftune_hook_handleÚ_hp_search_setupr   ÚUNDERFLOW_OVERFLOWrZ  Ún_gpur  r   rö  rf   rÓ   r‰   r  r  Ú_load_from_checkpointr@   Úload_from_jsonr:  Úpathr0  ÚTRAINER_STATE_NAMErD  rÇ  rE  re   Ú_inner_training_loopr7  ro   Ú
contextlibÚnullcontext)rU  r“  r”  r–  r³   r=  Úinner_training_loopr{  s   &&&&    rÍ   ÚtrainÚTrainer.train3  sJ  € ð. " UÓ*Ø%)Ð"ð 	×Ñ×"Ñ"Ô$à�y‰yˆàˆÔð �?‰?Ò&à26×2G×2GÐ2GÔ# D§I¡IÔ.ÌXÐVZ×V_ÑV_ÓM`øØ×-Ñ-¨eÓ4ˆDŒJà04°dÐ-ˆDŒN˜DÔ-Ø×)×)Ð)Ø×*Ñ*¨4¯:©:°t·{±{ÔCØ!%§¡ˆDÔà�9‰9×%×%Ð%Ü˜tŸz™z¨4¯9©9×+HÑ+HÔIð ××Ð 4×#6×#6Ð#6À×@V×@VÐ@VÐ[_×[jÑ[jÒ[rØ×&Ñ& t§z¡z°4·;±;Ô?ð ×&×&Ð&Ø�J‰J×4Ñ4ÐSW×SuÑSuÐ4Ôvô �d×+Ñ+Ô.EÄ~Ð-V×WÒWÔ\cØ�J‰J˜÷]
ò ]
ô ! §¡¨T×-BÑ-BÔCð ×#Ñ#Ò/Ü'7¸¿
¹
ÀD×D\ÑD\Ð^b×^nÑ^nÓ'oˆDÔ$ð 	×Ñ˜eÔ$ä×)Ñ)¨T¯Z©ZÔ7Ø�z‰z˜AŒ~ô !Øróð ô ' t§z¡zÔ2ô Ð,¬d×3Ò3×8NÜ%8¸¿¹Ó%IÐ"Ø%Ò-Ü Ð#RÐSW×SbÑSbÐRcÐcdÐ!eÓfÐfà!Ò-ô +×,Ò,°T×5N×5NÐ5NÐW[×Wk×WkÐWkØ×*Ñ*Ð+AÔBÜ ×/Ò/´·±·±Ð=SÔUgÓ0hÓiˆEØ×%Ñ%Ò1°d×6O×6OÐ6Oà).×)?Ñ)?�Ô&ä8Ø×%Ñ% t×'=Ñ'=¸t×?XÑ?Xó
Ðð +/×*:×*:Ð*:Ô$Ô&Ä
×@VÒ@VÓ@XˆßŠSÙ&ØØ'=ØØ%9ô	÷ �S�S‹Sús   Ð?QÑQ'	c                ó„   <€ V ^8„  d   QhRS[ R,          RS[R,          RS[R,          RRRS[S[,          R,          RS[/# )	r±   rÒ  Nr³   r“  r”  r•  r–  rf  )rí  rt   rÉ   rÁ   r^   )rË   rÌ   s   "€rÍ   rÎ   rÏ      sm   ø€ ÷ [Mñ [Má˜$•Jð[Mñ   $Õ&ð[Mñ !$ d¥
ð	[Mð
 6ð[Mñ #¡3�i¨$Õ.ð[Mñ 
ñ[MrÐ   c                óÎ  € V P                   P                  4        VP                  '       d   V P                  V4       V P	                  4       pV P
                  '       d   \        V4      pV P                  W&4      w  ppp	p
pppV P                  WØWsV4      w  rïV P                  WÖV4      w  pp\        P                  R4       \        P                  RV	R 24       \        P                  RVR 24       \        P                  RVR 24       \        P                  RV P                  P                  R 24       V P                  P                  V P                  8w  d$   \        P                  RV P                  R 24       \        P                  RVR 24       \        P                  R	VP                   24       \        P                  R
VR 24       \        P                  R\!        VRR7      R 24       Veh   \        P                  RV RV P"                  P$                   24       V P                  P&                  '       g   \        P                  RV RV R24       \(        P(                  ! 4       pV P"                  P*                  V n        \.        P0                  ! RVP2                  R7      V n        RV n        V P"                  P$                  V n        VP;                  4        V P<                  P?                  W P"                  V P@                  4      V n         VPB                  '       d   V PE                  WERR7       \G        Wç4       F}  pV P<                  PI                  V P                  V P"                  V P@                  4      V n         V PK                  VVVVVVVVVVVR7       V P@                  PL                  '       g   K}   M	  V PO                  WJV4      # )z\Run the actual training loop: forward, backward, optimizer step, logging, and checkpointing.z***** Running training *****ú  Num examples = Ú,z  Num Epochs = z  Num update steps per epoch = z(  Instantaneous batch size per device = zA  Training with DataParallel so batch size has been adjusted to: zE  Total train batch size (w. parallel, distributed & accumulation) = z   Gradient Accumulation steps = z  Total optimization steps = z#  Number of trainable parameters = T)Útrainable_onlyz/  Resuming training from checkpoint with epoch z and global step z&  Fast-forwarding the dataloader past z epochs and z1 batches to resume from the exact training state.rI  ©r
  )Úskip_scheduler)r²   ÚepochÚtrain_dataloaderÚsteps_in_epochÚnum_update_steps_per_epochr”  r–  Ú
start_timer“  Úepochs_trainedÚsteps_trained_in_current_epoch)(r  Úfree_memoryrÇ  Ú_update_auto_batch_sizerØ  rI  r,   Úset_initial_training_valuesÚ_init_training_stateÚ_prepare_for_trainingrõ   rö   r³   rñ  rE  rº  rK   r=  Úglobal_stepÚignore_data_skipÚtimeÚnum_input_tokens_seenÚ_initial_num_input_tokens_seenrÃ   rô   r
  Ú_tr_lossÚ_total_loss_scalarÚ_globalstep_last_loggedÚ	zero_gradr2  Úon_train_beginr<  Úeval_on_startÚ	_evaluaterR  Úon_epoch_beginÚ
_run_epochÚshould_training_stopÚ_finalize_training)rU  rÒ  r³   r“  r”  r–  r³  r|  rµ  rò  Únum_train_samplesÚtotal_train_batch_sizer´  r{  r·  r¸  r²   r¶  r²  s   &&&&&&             rÍ   r¥  ÚTrainer._inner_training_loop   sq  € ð 	×Ñ×$Ñ$Ô&Ø×$×$Ð$Ø×(Ñ(¨Ô4à×4Ñ4Ó6ÐØ×&×&Ð&Ü2Ð3CÓDÐð ×,Ñ,¨TÓDñ	
ØØ&ØØØ"ØØð :>×9RÑ9RØÐ3CÐ]bó:
Ñ6ˆð #'×"<Ñ"<¸YÐZpÓ"qÑˆÐô 	�‰Ð2Ô3Ü�‰Ð'¨°QÐ'7Ð8Ô9Ü�‰�oÐ&6°qÐ%9Ð:Ô;Ü�‰Ð5Ð6PÐQRÐ5SÐTÔUÜ�‰Ð>¸t¿y¹y×?dÑ?dÐefÐ>gÐhÔiØ�9‰9×0Ñ0°D×4JÑ4JÔJÜ�K‰KÐ[Ð\`×\rÑ\rÐstÐ[uÐvÔwÜ�‰Ð[Ð\rÐstÐ[uÐvÔwÜ�‰Ð6°t×7WÑ7WÐ6XÐYÔZÜ�‰Ð3°I¸a°=ÐAÔBÜ�‰Ð9Ô:OÐPUÐfjÔ:kÐlmÐ9nÐoÔpà!Ò-Ü�K‰KØAÀ.ÐAQÐQbÐcg×cmÑcm×cyÑcyÐbzÐ{ôð —9‘9×-×-Ð-Ü—‘Ø<¸^Ð<Lð MØ6Ð7Ð7hðjôô
 —Y’Y“[ˆ
à.2¯j©j×.NÑ.NˆÔ+ô Ÿš S°·±Ô=ˆŒØ"%ˆÔØ'+§z¡z×'=Ñ'=ˆÔ$à�‰Ôà×,Ñ,×;Ñ;¸DÇ*Á*ÈdÏlÉlÓ[ˆŒà××ÐØ�N‰N˜5ÀtˆNÔLä˜>Ö<ˆEØ×0Ñ0×?Ñ?ÀÇ	Á	È4Ï:É:ÐW[×WcÑWcÓdˆDŒLØ�O‰OØØØ!1Ø-Ø+EØØ%9Ø%Ø'=Ø-Ø/Mð ô ð �|‰|×0×0Ò0Ùñ! =ð$ ×&Ñ& uÀÓLÐLrÐ   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r†  )rÂ   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ý  s   ø€ ÷ >ñ >á	‰s‘Cˆx�ñ>rÐ   c           	     ó   € \        V P                  P                  V P                  .,            Uu. uF  p\	        V\
        4      '       g   K  VNK  	  upR7      V n        VRJV P                  n        V P                  V P                  n	        V P                  P                  V P                  V4       ^ p^ pVEe0   \        P                  P                  \        P                  P                  V\         4      4      '       dé   \         P"                  ! \        P                  P                  V\         4      4      V n        \%        V P                  V P                  4       V P'                  4        \)        V P                  P*                  V,          4      pV P                  P,                  '       g:   V P                  P*                  V,          pW€P                  P.                  ,          pV P                  P1                  WW54       Wx3# u upi )zxInitialize TrainerState, optionally restoring from checkpoint. Returns (epochs_trained, steps_trained_in_current_epoch).)rí   N)r@   r2  r»   r<  r)  r;   r=  Úis_hyper_param_searchrE  rD  Úcompute_stepsr³   r:  r£  Úisfiler0  r¤  r¢  ra   Ú_load_callback_staterí  r¾  r¿  rº  Úinit_training_references)	rU  r{  rµ  r|  r“  r”  r`  r·  r¸  s	   &&&&&&   rÍ   r¼  ÚTrainer._init_training_stateý  s|  € ô "à!×2Ñ2×<Ñ<ÀÇÁ¸~ÖMó ÙM�rÔQ[Ð\^Ô`o×Qp—�ÑMñ ô
ˆŒ
ð
 ,1¸Ð+<ˆ�
‰
Ô(Ø&*×&<Ñ&<ˆ�
‰
Ô#Ø�
‰
× Ñ  §¡¨IÔ6àˆØ)*Ð&à!Ó-´"·'±'·.±.Ü�G‰G�L‰LÐ/Ô1CÓD÷3
ò 3
ô &×4Ò4´R·W±W·\±\ÐBXÔZlÓ5mÓnˆDŒJÜ/°·	±	¸4¿:¹:ÔFØ×%Ñ%Ô'Ü  §¡×!7Ñ!7Ð;UÕ!UÓVˆNØ—9‘9×-×-Ð-Ø15·±×1GÑ1GÐJdÕ1dÐ.Ø.·)±)×2WÑ2WÕWÐ.à�
‰
×+Ñ+¨DÐ=MÔUàÐ=Ð=ùò1 s   °HÁHc           	     óT	  € \        4       ;'       g!    V P                  ;'       g    V P                  pV P                  ;'       d/    \        V P                  P
                  P                  R^4      ^8H  pV'       d   RpV P                  '       d   RV n        RV n        V P                  '       d   \        WR7      w  V n        V n        V'       g   V P                  4        V P                  V P                  4      pW`P                  J pV'       Edn   V'       d¯   V P                  '       d<   \!        V P                  4      '       d!   \#        V P                  V P                  4       V P                  P%                  V P                  4      pV P                  V4       V P                  P%                  V P                  4      V n        MáV P                  '       dn   \'        V P                  4      P(                  R8X  dJ   V P                  P%                  V P                  V P                  V P                  4      w  q`n        V n        MbV P                  P%                  V P                  V P                  4      w  q`n        M*V P                  P%                  V P                  4      V n        V P+                  VR7       W`n        V P                  '       g   V P                  '       d   V;V n        V n        V P                  '       d   V P                  V n        V P                  '       dG   \/        V P                  R4      '       d+   \0        P2                  P5                  V P                  R4       \        V P                  RR4      pVe?   VP6                  R8X  d.   VP8                  '       d   V P                  P;                  W&4      pVe£   V P                  '       d2   \=        V P                  V\!        V P                  4      '       * R	7       M=\        4       '       g   V P                  '       d   V P?                  W0P                  4       V PA                  V4       V PC                  V4       R
 F#  p	\E        V PF                  V	\        W	4      4       K%  	  W PF                  n$        Wb3# )zkWrap model, create optimizer and scheduler, and run accelerator.prepare. Returns (model, train_dataloader).Úfsdp_versionFNrA  ÚDummySchedulerÚgeneraterâ   rã   ©Úload_module_strict)r²   r+  rÆ   )%r‰   r  r  r  r  r=  r®  rF  rÆ   r  r    r+  rB  Ú_wrap_modelr  r²   r_   r&   r  rÈ   r  rC  rã   r  Údistró   Úregister_fsdp_forward_methodr   r!  Údeepspeed_ulysses_dl_adapterr!   r¡  Ú_load_optimizer_and_schedulerÚ_load_scalerÚsetattrr2  r³  )
rU  r{  r³  r“  Údelay_optimizer_creationÚis_fsdp2r²   Úuse_accelerator_preparerZ  Úattrs
   &&&&      rÍ   r½  ÚTrainer._prepare_for_training  sŽ  € ä#:Ó#<×#pÐ#pÀ×@XÑ@X×#pÐ#pÐ\`×\pÑ\pÐ ð ×'Ñ'×qÐq¬W°T×5EÑ5E×5KÑ5K×5WÑ5WÐYgÐijÓ-kÐopÑ-pˆßØ',Ð$ð ×%×%Ð%Ø $ˆDÔØ).ˆDÔ&à×$×$Ð$Ü0>¸tÔ0bÑ-ˆDŒN˜DÔ-ç'Ø×!Ñ!Ô#ð × Ñ  ×!3Ñ!3Ó4ˆð #(¯:©:Ð"5Ð÷ #Ð"ß'à×'×'Ð'¬N¸4¿:¹:×,FÒ,FÜ+¨D¯J©J¸×8HÑ8HÔIà×(Ñ(×0Ñ0°·±Ó<�à×%Ñ% eÔ,Ø!%×!1Ñ!1×!9Ñ!9¸$¿.¹.Ó!I�•Ø×*×*Ð*¬t°D×4EÑ4EÓ/F×/OÑ/OÐScÔ/cØ;?×;KÑ;K×;SÑ;SØ—J‘J §¡°×0AÑ0Aó<Ñ8�”~ tÕ'8ð )-×(8Ñ(8×(@Ñ(@ÀÇÁÈTÏ^É^Ó(\Ñ%�•~à!×-Ñ-×5Ñ5°d·n±nÓEˆDŒNð 	×Ñ°ÐÔ;ð #Ôà××Ð 4×#;×#;Ð#;ð /4Ð3ˆDŒJ˜Ô+ð ×$×$Ð$Ø!×/Ñ/ˆDŒNð ××Ðä�t—z‘z :×.Ò.Ü—	‘	×6Ñ6°t·z±zÀ:ÔNô �T×%Ñ%Ð';¸TÓBˆØŠ>˜bŸm™m¨{Ô:¸r¿}¿}¸}Ø#×/Ñ/×LÑLÐM]ÓeÐð "Ò-Ø×(×(Ð(Ü)Ø×&Ñ&Ð(>ÔWeÐfj×fpÑfpÓWqÔSqöô )×*Ò*¨d×.B×.BÐ.BØ×*Ñ*Ð+A×CUÑCUÔVà×.Ñ.Ð/EÔFØ×ÑÐ4Ô5ó ;ˆDÜ�D×)Ñ)¨4´¸Ó1DÖEñ ;à1A×ÑÔ.àÐ&Ð&rÐ   c                óô  € RpRpRpRp^ pW*8X  ds   V	eo   V^ 8”  dP   V P                   P                  '       g4   \        W;4      pV^,
          pW°P                   P                  ,          pRpMV^ 8X  d   V P	                  V	4       \        VR4      '       d   VP                  V4       \        V4      pW@P                   P                  ,          pV^ 8X  d   V P                   P                  p\        VV4       EF…  pVV^,
          8w  d   V P                   P                  MTpV P                  VVV P                   P                  4      w  pp\        V4      V n        V'       d   V P	                  V	4       Rp\        V4       EF¼  w  ppV^,          pV^,           V P                   P                  ,          ^ 8H  ;'       g    V^,           V8H  pV P                  P                  P!                  V4       WÀP                   P                  ,          ^ 8X  dA   V P"                  P%                  V P                   V P&                  V P(                  4      V n        V P                  P                  P*                  P-                  RR4      '       gA   V P                  P.                  \0        P2                  8X  g   V\        V4      ^,
          8X  d   \4        P6                  pM,\8        P:                  ! V P                  P<                  VR7      pV! 4       ;_uu_ 4        V P?                  VVV4      pRRR4       V P                   P@                  '       d    \C        4       '       g�   \D        PF                  ! X4      '       g   \D        PH                  ! V4      '       dX   V ;PJ                  V PJ                  ^V P&                  PL                  ,           V PN                  ,
          ,          ,          un%        MmV PJ                  P                  XP                  8w  d0   \Q        RV PJ                  P                   RVP                   24      hV ;PJ                  V,          un%        V ;PR                  \U        V PW                  V4      4      ,          un)        V PY                  V4       V'       Ed!   RpV P                   PZ                  ^ 8”  d   V P]                  V4      pV P_                  WR	7      pV P"                  Pa                  V P                   V P&                  V P(                  4      V n        V Pb                  Pe                  4        V P"                  Pg                  V P                   V P&                  V P(                  4      V n        V Pi                  4       pV P                  Pj                  '       g_   \m        V Pn                  \D        Pp                  Pn                  Pr                  \t        34      '       g   V Pn                  Pe                  4        VPw                  4        V P&                  ;PL                  ^,          un&        W,^,           V,          ,           V P&                  n<        V P"                  P{                  V P                   V P&                  V P(                  4      V n        V P}                  V PJ                  VVVVVVVR
7       M@V P"                  P                  V P                   V P&                  V P(                  4      V n        V P(                  P€                  '       g    V P(                  P‚                  '       g   EK½   M	  V P(                  P€                  '       g    V P(                  P‚                  '       g   EK†   M	  \C        4       '       d   \„        P†                  ! 4        V^ 8  dV   \ˆ        P‹                  RV P&                  PL                   RV P&                  PŒ                   R24       RV P(                  nA        V P"                  P�                  V P                   V P&                  V P(                  4      V n        V P}                  V PJ                  VVVVVVVR
7       R#   + '       g   i     ELH; i)z&Run one full pass over the dataloader.NFTÚ	set_epochÚsync_each_batch)r²   z0Calculated loss must be on the original device: z but device in use is )Ú	grad_norm)rw  zXThere seems not to be a single sample in your epoch_iterator, stopping training at step zI! This is expected if you're using an IterableDataset and set num_steps (z.) higher than the number of available samples.éÿÿÿÿ)Hr³   r¿  r˜   rº  Ú_load_rng_stater  rì  ÚiterrR  Úget_batch_samplesr
  r	  Ú#current_gradient_accumulation_stepsÚ	enumerater  Úgradient_stateÚ_set_sync_gradientsr2  Úon_step_beginr=  r<  Úplugin_kwargsr  Údistributed_typerœ   Ú	DEEPSPEEDr¦  r§  rÂ  r   Úno_syncÚtraining_stepÚlogging_nan_inf_filterrŽ   rÃ   ÚisnanÚisinfrÃ  r¾  rÅ  r  rA  r‡  Úfloating_point_opsÚ_track_num_input_tokensÚmax_grad_normÚ_clip_grad_normÚ_get_grad_normÚon_pre_optimizer_stepr+  ÚstepÚon_optimizer_stepr�  Úoptimizer_step_was_skippedr)  rÆ   rÄ   r‹  r5   rÆ  r²  Úon_step_endÚ_maybe_log_save_evaluateÚon_substep_endÚshould_epoch_stoprÌ  ÚxmÚ	mark_steprõ   rq  r{  Úon_epoch_end)rU  r²   r²  r³  r´  rµ  r”  r–  r¶  r“  r·  r¸  r  rî  rw  Úrng_to_syncÚnum_update_steps_trainedÚepoch_iteratorÚ	remainderÚupdate_stepÚnum_batchesÚbatch_samplesÚnum_items_in_batchÚiÚinputsÚdo_sync_stepÚsync_contextÚtr_loss_steps   &&&&&&&&&&&&                rÍ   rË  ÚTrainer._run_epoch~  sœ  € ð  ˆØˆ	ØˆØˆð $%Ð ØÔ"Ð'=Ò'IØ-°Ô1¸$¿)¹)×:T×:TÐ:TÜ#5Ð6FÓ#gÐ Ø5¸Õ9�Ø+IÏYÉY×MrÑMrÕ+rÐ(Ø"‘Ø/°1Ô4Ø×$Ñ$Ð%;Ô<äÐ# [×1Ò1Ø×&Ñ& uÔ-ÜÐ.Ó/ˆð #§Y¡Y×%JÑ%JÕJˆ	Ø˜Œ>ØŸ	™	×=Ñ=ˆIô
 !Ð!9Ð;U×VˆKà9DÐIcÐfgÕIgÔ9h�—	‘	×5Ò5Ðnwð ð 15×0FÑ0FÀ~ÐWbÐdh×dmÑdm×dtÑdtÓ0uÑ-ˆMÐ-ô 8;¸=Ó7IˆDÔ4÷ Ø×$Ñ$Ð%;Ô<Ø#�ô
 ' }×5‘	��6Ø˜•	�Ø $ q¥¨D¯I©I×,QÑ,QÕQÐUVÑV×vÐvÐ[_ÐbcÕ[cÐhvÑZv�à× Ñ ×/Ñ/×CÑCÀLÔQàŸ)™)×?Ñ?Õ?À1ÔDØ#'×#8Ñ#8×#FÑ#FÀtÇyÁyÐRV×R\ÑR\Ð^b×^jÑ^jÓ#k�D”Lð ×$Ñ$×3Ñ3×AÑA×EÑEÐFWÐY^×_Ò_Ø×'Ñ'×8Ñ8¼O×<UÑ<UÔUØœC Ó.°Õ2Ô2ä#-×#9Ñ#9‘Lä#,×#4Ò#4°T×5EÑ5E×5MÑ5MÐUZÔ#[�LÙ!—^•^Ø#'×#5Ñ#5°e¸VÐEWÓ#X�L÷ $ð —I‘I×4×4Ð4Ü2×4Ò4ÜŸš \×2Ò2´e·k²kÀ,×6OÒ6Oð —M’M T§]¡]°a¸$¿*¹*×:PÑ:PÕ6PÐSW×SoÑSoÕ6oÕ%pÕp–Mà—}‘}×+Ñ+¨|×/BÑ/BÔBÜ(ØNÈtÏ}É}×OcÑOcÐNdÐdzð  |H÷  |Oñ  |Oð  {Pð  Qóð ð —M’M \Õ1•Mà×!Ò!¤U¨4×+BÑ+BÀ6Ó+JÓ%KÕKÕ!Ø×,Ñ,¨VÔ4ç�<Ø $�IØ—y‘y×.Ñ.°Ô2Ø$(×$8Ñ$8¸Ó$?˜	Ø $× 3Ñ 3°EÐ 3Ó O�Ià#'×#8Ñ#8×#NÑ#NÈtÏyÉyÐZ^×ZdÑZdÐfj×frÑfrÓ#s�D”LØ—N‘N×'Ñ'Ô)Ø#'×#8Ñ#8×#JÑ#JÈ4Ï9É9ÐVZ×V`ÑV`Ðbf×bnÑbnÓ#o�D”Lð %)×$;Ñ$;Ó$=�Mà×+Ñ+×F×FÐFä)¨$×*;Ñ*;¼e¿k¹k×>VÑ>V×>hÑ>hÔjrÐ=s×tÒtØ ×-Ñ-×2Ñ2Ô4à—O‘OÔ%Ø—J‘J×*Ò*¨aÕ/Õ*Ø',°qµ¸NÕ/JÕ'J�D—J‘JÔ$Ø#'×#8Ñ#8×#DÑ#DÀTÇYÁYÐPT×PZÑPZÐ\`×\hÑ\hÓ#i�D”LØ×1Ñ1ØŸ™Ø!ØØØØ,Ø"Ø&3ð 2õ 	ð $(×#8Ñ#8×#GÑ#GÈÏ	É	ÐSW×S]ÑS]Ð_c×_kÑ_kÓ#l�D”Là—<‘<×1×1Ð1°T·\±\×5V×5VÓ5VÙñU 6ðV �|‰|×-×-Ð-°·±×1R×1RÓ1RÙñ} WôD "×#Ò#Ü�LŠLŒNà�!Œ8Ü�N‰NðØ—J‘J×*Ñ*Ð+ð ,Ø#Ÿz™z×3Ñ3Ð4Ð4bðdôð
 15ˆD�L‰LÔ-à×,Ñ,×9Ñ9¸$¿)¹)ÀTÇZÁZÐQU×Q]ÑQ]Ó^ˆŒØ×%Ñ%Ø�M‰MØØØØØ ØØ'ð 	&ö 		
÷U $—^�^ús   Ìa&	á&a7c                ó¼  € \         P                  R4       V ;P                  V P                  P	                  4       ,          un        \        V P                  P                  R4      pV P                  V,          p\        RVVV P                  P                  R7      pV P                  4        V P                  P                  VR&   WVR&   V P                  P                  V4       V P                  V4       V P                  P                   '       d)   V P                  P"                  e   V P%                  4        \'        V P)                  V4      V P                  P"                  R7      pV P                  P*                  '       d©   V P                  P"                  e‘   V P                  P,                  ^8X  dv   V Fo  p\.        P0                  P3                  W€P                  P"                  4      '       d   K>  \         P                  RV R	24       \4        P6                  ! VR
R7       Kq  	  V P8                  P;                  V P                  V P                  V P<                  4      V n        V P?                  4        V P@                  e,   \C        V PD                  V PF                  V PH                  4       RV n%        \M        V P                  P                  WV4      # )zMFinalize training: metrics, best-model loading, cleanup. Returns TrainOutput.zU

Training completed. Do not forget to share your model on huggingface.co/models =)

gü©ñÒMbP?r©  ©Únum_samplesr©  Ú
total_flosÚ
train_loss)rÓ   Úbest_model_checkpointzDeleting older checkpoint [z] due to args.save_total_limitT)Úignore_errorsF)'rõ   rö   rÄ  rÃ  r�  Úmaxr=  r¾  rn   r{  Ú
store_flosr!  rû   rT  Úlogr³   rv  r#  Ú_load_best_modelrm   Ú_get_output_dirr9  Úsave_total_limitr:  r£  ÚsamefileÚshutilÚrmtreer2  Úon_train_endr<  Ú_finish_current_pushr*  r)   r²   r�  r  r>  r^   )	rU  r”  rÎ  r¶  Úeffective_global_stepr"  ÚmetricsÚcheckpoints_sortedÚ
checkpoints	   &&&&     rÍ   rÍ  ÚTrainer._finalize_training#  s  € ä�‰ÐoÔpð 	×Ò 4§=¡=×#5Ñ#5Ó#7Õ7ÕÜ # D§J¡J×$:Ñ$:¸EÓ BÐØ×,Ñ,Ð/DÕDˆ
äØØØ)Ø—j‘j×*Ñ*ô	
ˆð 	�‰ÔØ $§
¡
× 5Ñ 5ˆ�ÑØ *�Ñà×Ñ×4Ñ4°WÔ=Ø�‰�Ôà�9‰9×+×+Ð+°·
±
×0PÑ0PÒ0\Ø×!Ñ!Ô#ä-Ø×+Ñ+¨EÓ2È$Ï*É*×JjÑJjô
Ðð
 �9‰9× × Ð  T§Z¡Z×%EÑ%EÒ%QÐVZ×V_ÑV_×VpÑVpÐtuÔVuÛ0�
Ü—w‘w×'Ñ'¨
·J±J×4TÑ4T×UÔUÜ—K‘KÐ"=¸j¸\ÐIgÐ hÔiÜ—M’M *¸D×Añ 1ð
 ×,Ñ,×9Ñ9¸$¿)¹)ÀTÇZÁZÐQU×Q]ÑQ]Ó^ˆŒð 	×!Ñ!Ô#ð ×#Ñ#Ò/Ü˜tŸz™z¨4×+CÑ+CÀT×EUÑEUÔVØ ˆÔä˜4Ÿ:™:×1Ñ1°:ÓGÐGrÐ   c                óÆ   <€ V ^8„  d   QhRS[ P                  RS[S[S[P
                  S[,          3,          RS[P
                  S[,          R,          RS[P
                  /# )r±   r²   r  r  Nrf  )r   r¿   rÀ   rÉ   rÃ   rÊ   r	   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   T  sb   ø€ ÷ E!ñ E!á�y‰yðE!ñ ‘S™%Ÿ,™,©Õ,Ð,Õ-ðE!ñ "ŸL™L©3Õ.°Õ5ð	E!ñ
 
�‰ñE!rÐ   c           
     óÊ  € V P                  W4      w  rBV! 4       ;_uu_ 4        VP                  4        \        V P                  R4      '       d@   \	        V P                  P                  4      '       d   V P                  P                  4        V P                  V4      p\        4       '       dl   \        WV P                  P                  4      pVP                  4       P                  4       P                  V P                  P                  4      uuRRR4       # V P                  4       ;_uu_ 4        V P                  WVR7      pRRR4       ?V P                  P                   eA   V P"                  P$                  V P                  P                   ,          ^ 8X  d   \'        4        / pV P                  P(                  \*        P,                  \*        P.                  39   d   V P1                  4       VR&   V P                  P2                  ^8”  d   XP5                  4       pV P6                  '       d   Vf"   V P8                  f   XV P:                  ,          pV P<                  P>                  \@        PB                  8X  d   RVR&   V P<                  PD                  ! X3/ VB  VP                  4       uuRRR4       #   + '       g   i     EL; i  + '       g   i     R# ; i)a  
Perform a training step on a batch of inputs.

Subclass and override to inject custom behavior.

Args:
    model (`nn.Module`):
        The model to train.
    inputs (`dict[str, torch.Tensor | Any]`):
        The inputs and targets of the model.

        The dictionary will be unpacked before being fed to the model. Most models expect the targets under the
        argument `labels`. Check your model's documentation for all accepted arguments.

Return:
    `torch.Tensor`: The tensor with training loss on this batch.
r©  N©r  rw  FÚscale_wrt_gas)#Ú _prepare_context_parallel_inputsr©  r  r+  ry  Ú_prepare_inputsr‰   r“   r³   rº  Úreduce_meanÚdetachÚtor
  Úcompute_loss_context_managerÚcompute_lossÚtorch_empty_cache_stepsr=  r¾  r£   rÄ   rr   ÚLOMOÚADALOMOr�  r   Úmeanr  r¹   ró  r  rù  rœ   rú  Úbackward)rU  r²   r  r  Ú
cp_contextÚloss_mbÚlossr¡  s   &&&&    rÍ   rü  ÚTrainer.training_stepT  s  € ð2 "×BÑBÀ5ÓQÑˆ
ñ �\�\Ø�K‰KŒMÜ�t—~‘~ w×/Ò/´H¸T¿^¹^×=QÑ=Q×4RÒ4RØ—‘×$Ñ$Ô&à×)Ñ)¨&Ó1ˆFÜ&×(Ò(Ü.¨u¸d¿i¹i×>cÑ>cÓd�Ø×*Ñ*Ó,×3Ñ3Ó5×8Ñ8¸¿¹×9IÑ9IÓJ÷ Š\ð ×2Ñ2×4Õ4Ø×(Ñ(¨ÐK]Ð(Ó^�÷ 5ð à—	‘	×1Ñ1Ò=Ø—J‘J×*Ñ*¨T¯Y©Y×-NÑ-NÕNÐRSÔSä"Ô$àˆFð �y‰y�‰¤>×#6Ñ#6¼×8NÑ8NÐ"OÔOØ*.×*AÑ*AÓ*C��Ñ'à�y‰y�‰ Ô"Ø—y‘y“{�ð ×2×2Ð2Ð6HÒ6PÐVZ×VlÑVlÒVtà˜d×FÑFÕF�ð ×Ñ×0Ñ0´O×4MÑ4MÔMØ*/��Ñ'à×Ñ×%Ò% dÑ5¨fÒ5à—;‘;“=÷S Š\÷ 5×4Ð4ú÷ �\ˆ\ús2   £C-KÄKÄ3J=	ÅC+KÈ3A?KÊ=KË	KËK"	c                ó  <€ V ^8„  d   QhRS[ P                  RS[S[S[P
                  S[,          3,          RS[RS[P
                  S[,          R,          RS[P
                  S[	S[P
                  S[3,          ,          /# )r±   r²   r  Úreturn_outputsr  Nrf  )
r   r¿   rÀ   rÉ   rÃ   rÊ   r	   rö  rí  rÂ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ›  s€   ø€ ÷ W;ñ W;á�y‰yðW;ñ ‘S™%Ÿ,™,©Õ,Ð,Õ-ðW;ñ ð	W;ñ
 "ŸL™L©3Õ.°Õ5ðW;ñ 
�‰™™eŸl™l©CÐ/Õ0Õ	0ñW;rÐ   c           	     ó$  € \        V P                  RR4      pVeW   VP                  R8X  dF   VP                  '       d4   V P                  P
                  '       d   \        V P                  WW54      # V P                  f   V P                  e   RV9   d   VP                  R4      pMRpV P                  '       d   / pVe   WGR&   / VCVCpV! R/ VB pV P                  e0   Vf   \        P                  R4       V P                  VVVR7      p	EM5Ve¡   V P                  P                  V4      p
\        V
4      '       d%   V
P                  P                  P!                  4       MV
P!                  4       pV\"        P$                  ! 4       9   d   V P                  W†RR	7      p	M£V P                  W†4      p	M‘\'        V\(        4      '       dT   R
V9  dM   \+        RRP-                  VP/                  4       4       RRP-                  VP/                  4       4       R24      h\'        V\(        4      '       d
   VR
,          MV^ ,          p	V P0                  P2                  '       d¥   V P                  '       g   V P                  '       d�   Ve}   V P                  P4                  p\        V P                  RR4      ;pe   WÅP6                  ,          pY�P0                  P8                  ^8:  d   TMV P0                  P8                  ,          p	V'       d   W˜3# T	# )a¶  
How the loss is computed by Trainer. By default, all models return the loss in the first element.

Args:
    model (`nn.Module`):
        The model to compute the loss for.
    inputs (`dict[str, torch.Tensor | Any]`):
        The input data for the model.
    return_outputs (`bool`, *optional*, defaults to `False`):
        Whether to return the model outputs along with the loss.
    num_items_in_batch (Optional[torch.Tensor], *optional*):
        The number of items in the batch. If not passed, the loss is computed
        using the default batch size reduction logic.

Returns:
    The loss of the model along with its output if return_outputs was set to True

Subclass and override for custom behavior. If you are not using `num_items_in_batch` when computing your loss,
make sure to overwrite `self.model_accepts_loss_kwargs` to `False`. Otherwise, the loss calculation might be slightly inaccurate when performing gradient accumulation.
râ   Nrã   Úlabelsr  z|Trainer: `compute_loss_func` is defined but `labels=None`. Your custom loss function will still be called with labels=None. r7  T)Úshift_labelsrG  zJThe model did not return a loss from the inputs, only the following keys: r®  z,. For reference, the inputs it received are Ú.rg  )r  r  r   r!  r²   Útrainingr"   r(  r¹   r¼  r  rõ   rq  r2   r_   r$  Ú	_get_namer3   r  r)  rÀ   r  r0  r%  r³   Úaverage_tokens_across_devicesÚnum_processesr�  r   )rU  r²   r  rJ  r  rZ  rL  r¡  ÚoutputsrG  rX  r:  Ú
loss_scales   &&&&&        rÍ   r?  ÚTrainer.compute_loss›  s¯  € ô6 �T×%Ñ%Ð';¸TÓBˆØŠ>˜bŸm™m¨{Ô:¸r¿}¿}¸}ÐQU×Q[ÑQ[×Qd×QdÐQdÜ,¨T×-=Ñ-=¸uÈnÓaÐaà×ÑÒ+¨t×/EÑ/EÒ/QÐW_ÐciÔWiØ—Z‘Z Ó)‰FàˆFØ×)×)Ð)ØˆFØ!Ò-Ø/AÐ+Ñ,Ø)˜Ð) &Ð)ˆFÙ‘/˜&‘/ˆð ×!Ñ!Ò-ØŠ~Ü—‘ðXôð ×)Ñ)ØØØ#5ð *ó ŠDð ÒØ"×.Ñ.×;Ñ;¸EÓBˆOô " /×2Ò2ð  ×*Ñ*×0Ñ0×:Ñ:Ô<à$×.Ñ.Ó0ð ð
 Ô>×EÒEÓGÔGØ×*Ñ*¨7ÈÐ*ÓN‘à×*Ñ*¨7Ó;‘ä˜'¤4×(Ò(¨V¸7Ô-BÜ Ø`Ø—x‘x §¡£Ó/Ð0Ð0\Ð]`×]eÑ]eÐfl×fqÑfqÓfsÓ]tÐ\uÐuvðxóð ô
 '1°¼$×&?Ò&?�7˜6–?ÀWÈQÅZˆDð �I‰I×3×3Ð3Ø×/×/Ð/°4×3I×3IÐ3IØ"Ò.ð ×)Ñ)×7Ñ7ˆJÜ˜d×.Ñ.Ð0DÀdÓKÐK�ÒXØŸz™zÕ)�
Ø§)¡)§/¡/°QÔ"6‘J¸D¿I¹I¿O¹OÕKˆDç"0�ˆÐ:°dÐ:rÐ   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r†  )r¦  Ú	ExitStack)rË   rÌ   s   "€rÍ   rÎ   rÏ   ô  s   ø€ ÷ 
ñ 
©j×.BÑ.Bñ 
rÐ   c                ó²   € \         P                  ! 4       pV P                  4       p\        V\         P                  4      '       g   VP                  V4       V# )z6
A helper wrapper to group together context managers.
)r¦  rW  Úautocast_smart_context_managerr)  r§  Úenter_context)rU  Ú	ctx_stackÚautocast_ctxs   &  rÍ   r>  Ú$Trainer.compute_loss_context_managerô  sG   € ô ×(Ò(Ó*ˆ	à×:Ñ:Ó<ˆÜ˜,¬
×(>Ñ(>×?Ò?Ø×#Ñ# LÔ1àÐrÐ   c                óH   <€ V ^8„  d   QhRS[ R,          RS[P                  /# )r±   Úcache_enabledNrf  )rö  r¦  ÚAbstractContextManager)rË   rÌ   s   "€rÍ   rÎ   rÏ      s&   ø€ ÷ (ñ (¹DÀ4½Kð (ÑS]×StÑStñ (rÐ   c                ó,   € \         P                  ! 4       # )zÏ
A helper wrapper that creates an appropriate context manager for `autocast` while feeding it the desired
arguments, depending on the situation. We rely on accelerate for autocast, hence we do nothing here.
)r¦  r§  )rU  r_  s   &&rÍ   rY  Ú&Trainer.autocast_smart_context_manager   s   € ô
 ×%Ò%Ó'Ð'rÐ   c                óÒ   <€ V ^8„  d   QhRS[ P                  RS[ P                  S[,          R,          RS[P                  RRRS[RS[S[,          R,          R	S[R
S[R,          RR/	# )r±   Útr_lossrî  Nr²   r”  r•  r²  r–  r¶  rw  rf  )rÃ   rÊ   r‡  r   r¿   rÁ   rÉ   )rË   rÌ   s   "€rÍ   rÎ   rÏ     s“   ø€ ÷ 0^ñ 0^á—‘ð0^ñ —<‘<¡%Õ'¨$Õ.ð0^ñ �y‰yð	0^ð
 6ð0^ñ ð0^ñ #¡3�i¨$Õ.ð0^ñ ð0^ñ ˜t•|ð0^ð 
ñ0^rÐ   c	                óæ  € V P                   P                  '       Edk   V P                  P                  V P                  8”  EdE   \        4       '       d   \        P                  ! 4        / p	\        WP                  P                  4      P                  4       P                  4       p
W,          pW P                  P                  V P                  ,
          ,          V	R&   Ve6   \        V\        P                  4      '       d   VP                  4       MTV	R&   Ve   W‰R&   MV P!                  4       V	R&   V ;P"                  V
,          un        V P                  P                  V n        V P%                  4        V P'                  W—4       RpV P                   P(                  '       d]   V P+                  WF4      pV P-                  W´R7      pV P                  P.                  \0        P2                  8X  d   WÀP                   n        V P                   P4                  '       dT   V P7                  W44       V P8                  P;                  V P                  V P                  V P                   4      V n         R# R# )z\Log metrics, run evaluation, and save checkpoints if the current training state requires it.rG  Nrî  rw  )r1  r”  )r<  Ú
should_logr=  r¾  rÅ  rŽ   r  r  rO   r³   r  rC  r�  r)  rÃ   rÊ   r�  rÄ  r&  r'  Úshould_evaluaterÉ  Ú_determine_best_metricrt  r\   ru  r9  Ú_save_checkpointr2  Úon_save)rU  rd  rî  r²   r”  r²  r–  r¶  rw  ÚlogsÚtr_loss_scalarr1  Úis_new_best_metrics   &&&&&&&&&    rÍ   r
  Ú Trainer._maybe_log_save_evaluate  sÀ  € ð �<‰<×"×"Ñ" t§z¡z×'=Ñ'=À×@\Ñ@\Õ'\Ü%×'Ò'Ü—’”à%'ˆDô +¨7·I±I×4KÑ4KÓL×QÑQÓS×XÑXÓZˆNð ÕˆGà)¯Z©Z×-CÑ-CÀd×FbÑFbÕ-bÕcˆD�‰LØÒ$Ü8BÀ9ÌeÏlÉl×8[Ò8[ I§N¡NÔ$4Ðaj��[Ñ!ØÒ(Ø(5�_Ò%à(,×(?Ñ(?Ó(A��_Ñ%à×#Ò# ~Õ5Õ#Ø+/¯:©:×+AÑ+AˆDÔ(Ø�O‰OÔà�H‰H�TÔ&àˆØ�<‰<×'×'Ð'Ø—n‘n UÓAˆGØ!%×!<Ñ!<ÀWÐ!<Ó!ZÐà�y‰y×&Ñ&¬,×*;Ñ*;Ô;Ø+=—‘Ô(à�<‰<×#×#Ð#Ø×!Ñ! %Ô/Ø×0Ñ0×8Ñ8¸¿¹ÀDÇJÁJÐPT×P\ÑP\Ó]ˆDŽLñ $rÐ   c                óŽ   <€ V ^8„  d   QhRS[ RS[RS[P                  RS[S[S[P                  S[,          R,          3,          /# )r±   r  r  r
  rf  N)r   rí  rÃ   r
  rÂ   rÁ   rÊ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   :  sI   ø€ ÷ 1ñ 1Ù&ð1Ù58ð1ÙBGÇ,Á,ð1á	‰t‘U—\‘\¡CÕ'¨$Õ.Ð.Õ	/ñ1rÐ   c                ó®   € . p\        V4       F  p VP                  \        V4      4       K   	  V P	                  WC4      pWF3#   \         d      K#  i ; i)z•
Collects a specified number of batches from the epoch iterator and optionally counts the number of items in the batches to properly scale the loss.
)rR  ÚappendÚnextÚStopIterationÚ_get_num_items_in_batch)rU  r  r  r
  r  Ú_r  s   &&&&   rÍ   rò  ÚTrainer.get_batch_samples:  s`   € ð ˆä�{Ö#ˆAðØ×$Ñ$¤T¨.Ó%9Ö:ñ $ð "×9Ñ9¸-ÓPÐØÐ0Ð0øô	 !ô Ûðús   ’AÁAÁAc                ór   <€ V ^8„  d   QhRS[ RS[P                  RS[P                  S[,          R,          /# )r±   r  r
  rf  N)rÁ   rÃ   r
  rÊ   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   K  s9   ø€ ÷ <"ñ <"±Tð <"Á5Ç<Á<ð <"ÑTY×T`ÑT`ÑcfÕTfÐimÕTmñ <"rÐ   c                ó„  € Rp\        V4      ^ 8„  ;'       d7    RV^ ,          9   ;'       d#    V P                  ;'       g    V P                  RJpV'       d^    V Uu. uF>  pRV9   d
   VR,          M*V P                  '       d   VR,          R,          MVR,          NK@  	  pp\	        R V 4       4      pVEek   V P                  P                  '       dU   V P                  P                  ^8”  d9   V P                  P                  VP                  V4      4      P	                  4       pM7V P                  P                  ^8”  d   W0P                  P                  ,          p\        P                  ! V4      '       d¨   VP                  V4      pV P                  P                  ^8”  dK   VP!                  4       ^ 8X  d6   VP#                  ^ 4      P%                  V P                  P                  R4      p\'        V P                  RR4      ;p'       d   W7P(                  ,          pV# u upi   \
        \        3 d     ELŠi ; i)aN  
Counts the number of items in the batches to properly scale the loss.
Args:
    batch_samples (`list`): List of batches
    device (`torch.device`): The device on which the number of items in the batch should be.
Returns:
    None if the number of items in the batch doesn't need to be computed else the number of items in the batch
NrL  rM  c              3   ó^   "  € T F#  qP                  R4      P                  4       x € K%  	  R# 5i)éd   Néœÿÿÿ)ÚnerV  )rÞ   rL  s   & rÍ   rà   Ú2Trainer._get_num_items_in_batch.<locals>.<genexpr>p  s$   é € Ð(^ÑM]À6¯©°4«×)<Ñ)<×)>Ð)>ÓM]ùs   ‚+-râ   ).ºé   NNrï  )r	  r  r¹   r#  rV  rz  rð  r³   rQ  r  r  Úgatherr=  r   rÃ   rŒ  ÚdimÚ	unsqueezeÚexpandr  Únon_data_parallel_size)rU  r  r
  r  Úcount_num_items_in_batchÚbatchÚlabels_for_countrZ  s   &&&     rÍ   rt  ÚTrainer._get_num_items_in_batchK  s  € ð "Ðä�Ó Ñ"÷ ð Ø˜M¨!Õ,Ñ,÷ð ð
 ×.Ñ.÷ 6ð 6ð ×)Ñ)°Ð5ð 	!÷ $ðñ "/ó$ñ "/˜ð	 &¨Ô.ð ˜.Ö)ð ×/×/Ð/ð ˜x�¨Ö1à˜x�ò	)ñ
 "/ð !ð $ô &)Ñ(^ÑM]Ó(^Ó%^Ð"ð Ó)Ø�y‰y×6×6Ð6Ø—9‘9×'Ñ'¨!Ô+Ø)-×)9Ñ)9×)@Ñ)@ÐAS×AVÑAVÐW]ÓA^Ó)_×)cÑ)cÓ)eÐ&øØ—‘—‘ 1Ô$ð &8¿9¹9¿?¹?Õ%JÐ"ä�ŠÐ1×2Ò2Ø%7×%:Ñ%:¸6Ó%BÐ"à—9‘9—?‘? QÔ&Ð+=×+AÑ+AÓ+CÀqÔ+Hà);×)EÑ)EÀaÓ)H×)OÑ)OÐPT×PYÑPY×P_ÑP_ÐacÓ)dÐ&ä  ×!1Ñ!1Ð3GÈÓNÐN�2ÖNØ);×?XÑ?XÕ)XÐ&à!Ð!ùò?$øô œ~Ð.ô Úðús*   ÁH* Á&H%ÂH%Â H* È%H* È*H?È>H?c                ón   <€ V ^8„  d   QhRS[ P                  S[,          RS[ P                  S[,          /# )r±   r~  rf  )rÃ   rÊ   r	   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ‰  s-   ø€ ÷ ñ ¡5§<¡<±#Õ#5ð ¹%¿,¹,ÉÕ:Lñ rÐ   c           
     óî  a € \        V\        4      '       dD   \        V4      ! VP                  4        UUu/ uF  w  r#VS P	                  V4      bK  	  upp4      # \        V\
        \        34      '       d   \        V4      ! V 3R lV 4       4      # \        V\        P                  4      '       d¾   RS P                  P                  /pS P                  '       d‚   \        P                  ! V4      '       g   \        P                  ! V4      '       dJ   VP                  RS P                  P                   P"                  P$                  P'                  4       /4       VP(                  ! R/ VB # V# u uppi )zl
Prepares one `data` before feeding it to the model, be it a tensor or a nested list/dictionary of tensors.
c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÙ   )Ú_prepare_input)rÞ   ÚvrU  s   & €rÍ   rà   Ú)Trainer._prepare_input.<locals>.<genexpr>�  s   øé € ÐC¹d¸˜d×1Ñ1°!×4Ð4»dùó   ƒ!r
  Údtyperg  )r)  r   rÈ   ÚitemsrŒ  rÂ   rÁ   rÃ   rÊ   r³   r
  r  Úis_floating_pointÚ
is_complexr•  r  r=  r‰  Úhf_ds_configr�  r=  )rU  r~  rß   r�  r¡  s   f&   rÍ   rŒ  ÚTrainer._prepare_input‰  s  ø€ ô �dœG×$Ò$Ü˜”:ÀTÇZÁZÄ\ÔRÁ\¹T¸Q˜q $×"5Ñ"5°aÓ"8Ò8Á\ÒRÓSÐSÜ˜œu¤d˜m×,Ò,Ü˜”:ÔC¹dÓCÓCÐCÜ˜œeŸl™l×+Ò+Ø §	¡	× 0Ñ 0Ð1ˆFØ×(×(Ð(¬e×.EÒ.EÀd×.KÒ.KÌu×O_ÒO_Ð`d×OeÒOeð —‘˜w¨×(8Ñ(8×(>Ñ(>×(OÑ(O×(\Ñ(\×(bÑ(bÓ(dÐeÔfØ—7’7Ñ$˜VÑ$Ð$Øˆùó Ss   ¶E1
c                óš   <€ V ^8„  d   QhRS[ S[S[P                  S[,          3,          RS[ S[S[P                  S[,          3,          /# ©r±   r  rf  )rÀ   rÉ   rÃ   rÊ   r	   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ›  sE   ø€ ÷ ñ ¡d©3±·±¹sÕ0BÐ+BÕ&Cð ÉÉSÑRW×R^ÑR^ÑadÕRdÐMdÕHeñ rÐ   c                ó˜   € V P                  V4      p\        V4      ^ 8X  d)   \        RRP                  V P                  4       R24      hV# )z…
Prepare `inputs` before feeding them to the model, converting them to tensors if they are not already and
handling potential state.
z”The batch received was empty, your model won't be able to train on it. Double-check that your training dataset contains keys expected by the model: r®  rN  )rŒ  r	  r  r0  rC  )rU  r  s   &&rÍ   r:  ÚTrainer._prepare_inputs›  sY   € ð
 ×$Ñ$ VÓ,ˆÜˆv‹;˜!ÔÜðIØILÏÉÐRV×RiÑRiÓIjÐHkÐklðnóð ð
 ˆrÐ   c                óÊ   <€ V ^8„  d   QhRS[ P                  RS[S[S[P
                  S[,          3,          RS[S[S[S[S[P
                  S[,          3,          3,          /# )r±   r²   r  rf  )	r   r¿   rÀ   rÉ   rÃ   rÊ   r	   rÂ   r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ©  s^   ø€ ÷ \.ñ \.Ù—Y‘Yð\.Ù(,©S±%·,±,ÁÕ2DÐ-DÕ(Eð\.á	‰x™™c¡5§<¡<±#Õ#5Ð5Õ6Ð6Õ	7ñ\.rÐ   c                ó˜  € \        V P                  RR4      Ee    V P                  P                  P                  '       Edù   V P                  P                  P                  R8X  d¹   \        VR4      '       d?   VP                  P                  R8w  d$   \        RVP                  P                   R24      hRV9  db   \        P                  R	4       R
V9   dF   Rp\        P                  P                  VR
,          RVR7      pVR,          P                  4       VR&   RV9  d~   \        P                  R4       \        P                   ! VR,          P#                  ^4      VR,          P$                  R7      P'                  VR,          P#                  ^ 4      R4      VR&   . p. pRV9   d*   VP)                  VR,          4       VP)                  ^4       R
V9   d*   VP)                  VR
,          4       VP)                  ^4       RV9   d*   VP)                  VR,          4       VP)                  ^4       RV9   d”   \        V RR4      '       g-   VR,          p\+        V4      '       g   \        R4      hRV n        V P,                  '       dC   VR,          pVP/                  4       ^8X  d$   VP)                  V4       VP)                  ^4       M RV9   d5   VR,          e*   VP)                  VR,          4       VP)                  ^4       \1        V P                  P2                  VV\5        V4      R7      V3# \6        P8                  V3# )a3  
Prepare inputs for context parallelism by setting up buffers and validation.

Args:
    model: The model being trained
    inputs: Input tensors to prepare

Returns:
    tuple: (context_manager, prepared_inputs) where context_manager is either
           the context parallelism wrapper or a no-op context
râ   NrÃ   rî   ÚsdpazIContext parallelism is supported only with SDPA attention, you are using rN  rM  z7Shift labels not found in the inputs, shifting manuallyrL  )ÚvalueÚposition_idsz9Position IDs not found in the inputs, generating manuallyÚ	input_idsr°  Úattention_maskÚ_attn_mask_causal_checkedFzëContext parallelism only supports causal attention masks. The provided attention_mask is not causal. Please ensure your data uses causal masking (lower triangular) or remove the attention_mask to use the model's default causal masking.T)ÚbuffersÚbuffer_seq_dimsÚno_restore_buffersr{  )é    r  ):NNNr~  rï  )r  r  râ   Ú
cp_enabledÚ
cp_backendr  rî   Ú_attn_implementationr  rõ   Úwarning_oncer   Ú
functionalÚpadÚ
contiguousrÃ   ÚarangeÚsizer
  rƒ  rq  rM   r¡  r�  r   Úmaybe_context_parallelr  r¦  r§  )rU  r²   r  Ú_ignore_indexrL  r¢  r£  r   s   &&&     rÍ   r9  Ú(Trainer._prepare_context_parallel_inputs©  sû  € ô �D×$Ñ$Ð&:¸DÓAÓMØ× Ñ ×3Ñ3×>×>Ñ>à×Ñ×2Ñ2×=Ñ=ÀÔHÜ˜5 (×+Ò+Ø—|‘|×8Ñ8¸FÔBÜ(ØgÐhm×htÑht÷  iJñ  iJð  hKð  KLð  Móð ð "¨Ô/Ü×'Ñ'Ð(aÔbØ 6Ô)Ø(,˜Ü!#§¡×!2Ñ!2°6¸(Õ3CÀVÐS`Ð!2Ó!a˜Ø17¸µ×1IÑ1IÓ1K˜˜~Ñ.ð  VÔ+Ü×#Ñ#Ð$_Ô`Ü).¯ªØ˜;Õ'×,Ñ,¨QÓ/¸¸{Õ8K×8RÑ8Rô*ç‘&˜ Õ,×1Ñ1°!Ó4°bÓ9ð �~Ñ&ð ˆGØ ˆOà˜fÔ$Ø—‘˜v kÕ2Ô3Ø×&Ñ& qÔ)Ø˜6Ô!Ø—‘˜v hÕ/Ô0Ø×&Ñ& qÔ)Ø Ô'Ø—‘˜v nÕ5Ô6Ø×&Ñ& qÔ)à 6Ô)ä˜tÐ%@À%×HÒHð &,Ð,<Õ%=�NÜ3°N×CÒCÜ(ðfóð ð 6:�DÔ2Ø×1×1Ð1à%+Ð,<Õ%=�NØ%×)Ñ)Ó+¨qÔ0ØŸ™ ~Ô6Ø'×.Ñ.¨qÕ1ð à Ô'¨F°>Õ,BÒ,NØ—‘˜v nÕ5Ô6Ø×&Ñ& qÔ)äØ× Ñ ×7Ñ7ØØ /Ü#& w£<ô	ð
 ðð ô ×%Ñ% vÐ-Ð-rÐ   c                ód   <€ V ^8„  d   QhRS[ RS[RS[S[S[S[S[S[S[R,          S[3,          /# )r±   r³   rì  rf  N)rt   r   rÂ   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   	  sB   ø€ ÷ D
ñ D
Ù%ðD
Ù3=ðD
á	‰s‘C™™c¡3©¨d­
±CÐ7Õ	8ñD
rÐ   c                óà  € VP                   pV^ 8  p\        V4      '       d   \        V4      MRpV P                  V4      pV P	                  4       pV^8”  d   Ve	   WW,          pVeo   \        WQP                  ,          \        WQP                  ,          ^ 8„  4      ,           ^4      pV'       d(   \        P                  ! VP                  V,          4      pV'       d‘   V P                  V4      p	VP                   ^ 8”  d,   VX,          \        W8,          ^ 8„  4      ,           p
W6,          pM¤\        P                  ! VP                  4      p
V P                  V4      VP                  ,          pMaVP                   ^ 8”  d9   \        P                  p
TpWaP                   ,          p	VP                   V,          pM\        RVP                    24      hVe   TMW1P                  ,          pV
XV	VVVV3# )zß
Calculates and returns the following values:
- `num_train_epochs`
- `num_update_steps_per_epoch`
- `num_examples`
- `num_train_samples`
- `total_train_batch_size`
- `steps_in_epoch` (total batches per epoch)
- `max_steps`
NzYargs.max_steps must be set to a positive value if dataloader does not have a length, was )r{  rg   r	  Úget_total_train_batch_sizeÚget_sp_sizer%  rº  rí  ÚmathÚceilr|  rò  ÚsysÚmaxsizer  )rU  r³   rì  r{  Úepoch_basedÚlen_dataloaderrÏ  Úsp_sizerµ  rò  r|  rÎ  r´  s   &&&          rÍ   r»  Ú#Trainer.set_initial_training_values	  sË  € ð —N‘Nˆ	à !‘mˆÜ,6°z×,BÒ,Bœ˜ZœÈˆØ!%×!@Ñ!@ÀÓ!FÐð ×"Ñ"Ó$ˆØ�QŒ;˜>Ò5Ø+Õ5ˆNð Ò%Ü),Ø×"BÑ"BÕBÜ�n×'GÑ'GÕGÈ!ÑKÓLõMàó*Ð&÷ Ü ŸIšI d×&;Ñ&;Ð>XÕ&XÓY�	çØ×,Ñ,¨ZÓ8ˆLØ�~‰~ Ô!Ø#,Ð0JÕ#JÌSØÕ:¸QÑ>óNõ $Ð ð
 %.Õ$FÑ!ä#'§9¢9¨T×-BÑ-BÓ#CÐ Ø$(×$5Ñ$5°jÓ$AÀD×DYÑDYÕ$YÑ!Ø�^‰^˜aÔä"Ÿ{™{ÐØ)2Ð&Ø1·N±NÕBˆLØ $§¡Ð1GÕ GÑäðØ—N‘NÐ#ð%óð ð ,:Ò+E™È9×WwÑWwÕKwˆàØ&ØØØ"ØØð
ð 	
rÐ   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r±   r³   rf  )rt   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   M	  s    ø€ ÷ Yñ YÑ/@ð YÁSñ YrÐ   c                óà   € VP                   V P                  4       ,          V P                  4       ,          V P                  4       ,          pV P                  VP
                  ,          V,          # )a  Calculates total batch size (micro_batch * grad_accum * dp_world_size).

Accounts for all parallelism dimensions: TP, CP, and SP.

Formula: dp_world_size = world_size // (tp_size * cp_size * sp_size)

Where:
- TP (Tensor Parallelism): Model layers split across GPUs
- CP (Context Parallelism): Sequences split using Ring Attention (FSDP2)
- SP (Sequence Parallelism): Sequences split using ALST/Ulysses (DeepSpeed)

All dimensions are separate and multiplicative: world_size = dp_size * tp_size * cp_size * sp_size
)r  Úget_tp_sizeÚget_cp_sizerµ  rE  rº  )rU  r³   Údp_world_sizes   && rÍ   r´  Ú"Trainer.get_total_train_batch_sizeM	  sT   € ð Ÿ™¨4×+;Ñ+;Ó+=Õ=À×AQÑAQÓASÕSÐW[×WgÑWgÓWiÕiˆØ×%Ñ%¨×(HÑ(HÕHÈ=ÕXÐXrÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  r?  )rË   rÌ   s   "€rÍ   rÎ   rÏ   _	  ó   ø€ ÷ ñ ™Sñ rÐ   c                ó|   € \        V P                  RR4      f   ^# V P                  P                  pVP                  # )zGet the sequence parallel sizerâ   N)r  r  râ   r¼  ©rU  rZ  s   & rÍ   rµ  ÚTrainer.get_sp_size_	  ó6   € ä�4×#Ñ#Ð%9¸4Ó@ÒHÙà×!Ñ!×4Ñ4ˆBØ—:‘:ÐrÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  r?  )rË   rÌ   s   "€rÍ   rÎ   rÏ   g	  rÅ  rÐ   c                ó|   € \        V P                  RR4      f   ^# V P                  P                  pVP                  # )zGet the context parallel sizerâ   N)r  r  râ   Úcp_sizerÇ  s   & rÍ   rÁ  ÚTrainer.get_cp_sizeg	  rÉ  rÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  r?  )rË   rÌ   s   "€rÍ   rÎ   rÏ   o	  s   ø€ ÷ ñ ™Sñ rÐ   c                óú   € \        V P                  RR4      ;pe   V# V P                  '       dL   \        V P                  RR4      ;p'       d-   VP                  P                  R/ 4      P                  R^4      # ^# )zGGet the tensor parallel size from either the model or DeepSpeed config.Ú_tp_sizeNr±  Útensor_parallelÚautotp_size)r  r²   r  r³   rî   r  )rU  Úmodel_tpÚdeepspeed_configs   &  rÍ   rÀ  ÚTrainer.get_tp_sizeo	  sv   € ô   §
¡
¨J¸Ó=Ð=ˆHÒJØˆOð ×$×$Ð$¼gÀdÇiÁiÐQfÐhlÓ>mÐ*mÐ*:Ö*mØ#×*Ñ*×.Ñ.Ð/@À"ÓE×IÑIÈ-ÐYZÓ[Ð[ñ rÐ   c                óh   <€ V ^8„  d   QhRS[ P                  RS[RS[R,          RS[ P                  /# )r±   r²   rO  rì  Nrf  )r   r¿   rö  r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   }	  s:   ø€ ÷  ñ  ¡§¡ð  ±dð  ÉzÐ\`ÕO`ð  Ñln×luÑluñ  rÐ   c                óâ  € V P                   P                  VRR7      VJd   V# \        4       '       dX   \        V\        P
                  P                  4      '       d   V# \        P                  ! WP                  P                  R7      # V P                  P                  ^8”  d=   \        VRR4      '       g*   \        VRR4      '       g   \        P                  ! V4      pV'       g   V# V P                  '       d#   \        WP                  V P                  4      pV# \!        4       '       d@   \        P"                  P%                  V\'        \(        P*                  ! R4      4      .R7      pV# )zMWrap `model` for distributed training if needed (DDP, FSDP, SageMaker, etc.).F©Úkeep_torch_compile)Úbackward_passes_per_stepÚis_loaded_in_8bitÚis_loaded_in_4bitÚSMDATAPARALLEL_LOCAL_RANK)Ú
device_ids)r  r2   r‰   r)  ro  r²   ÚDistributedModelr³   rº  r   r  r   ÚDataParallelr  r-   rI  rˆ   ÚparallelÚDistributedDataParallelrí  r:  Úgetenv)rU  r²   rO  rì  s   &&&&rÍ   rß  ÚTrainer._wrap_model}	  s  € ð ×Ñ×(Ñ(¨À5Ð(ÓIÐQVÓVØˆLä"×$Ò$ä˜%¤§¡×!;Ñ!;×<Ò<Ø�Ü×'Ò'¨Ï	É	×HmÑHmÔnÐnð �I‰I�O‰O˜aÔÜ˜EÐ#6¸×>Ò>Ü˜EÐ#6¸×>Ò>ä—O’O EÓ*ˆE÷ ØˆLð ×#×#Ð#Ü'¨¯y©y¸$×:UÑ:UÓVˆEð
 ˆô	 %×&Ò&Ü—K‘K×7Ñ7Ø¤3¤r§y¢yÐ1LÓ'MÓ#NÐ"Oð 8ó ˆEð ˆrÐ   c                óò  € Wn         \        V P                  4       V P                  '       d   \	        V P
                  RR7      V n        V P
                  V n        V P                  '       d‹   V P                  P                  pV P                   \        ^V P                  P                  4      ,          V P                  n        \        V P                  V P                  RR7       W P                  n        R# R# )zwFree memory, reset model wrapping, and update DeepSpeed config for the new batch size when using `auto_find_batch_size`T)Ú	recursive)rÇ  N)rE  r    r  r  r2   r²   r  r³   rñ  r%  r   r$   r  )rU  rÒ  Úoriginal_bss   && rÍ   rº  ÚTrainer._update_auto_batch_sizeŸ	  s±   € ð ",Ôä�t×)Ñ)Ô*à××Ðä% d§j¡j¸DÔAˆDŒJà!ŸZ™ZˆÔð ×$×$Ð$àŸ)™)×?Ñ?ˆKØ48×4JÑ4JÌcÐRSÐUY×U^ÑU^×UdÑUdÓNeÕ4eˆD�I‰IÔ1Ü'¨×(8Ñ(8¸$¿)¹)ÐZ^Õ_Ø4?�I‰IÖ1ñ %rÐ   c                ó¤  € V P                   P                  R8X  d   R# \        V P                  RR4      pW!9  d   \        P                  R4       R# V P                   P                  R8X  d¼   RV9   d   VR,          P                  4       pM²V P                  ec   \        V P                  R4      '       dG   V P                  P                  e/   W,          V P                  P                  8g  P                  4       pMB\        P                  R	4       W,          P                  4       pMW,          P                  4       p\        P                  ! W0P                   P                  \        P                  R
7      pV P                  ;P                   V P"                  P%                  V4      P                  4       P'                  4       ,          un        R# )z>Count input tokens seen (all or non-padding) and update state.rj  NÚmain_input_namerŸ  zÏTried to track the number of tokens seen, however the current model is not configured properly to know what item is the input. To fix this, add a `main_input_name` attribute to the model class you are using.Únon_paddingr   Úpad_token_idz\Could not determine method to count non-padding tokens, falling back to counting all tokens.)r
  r�  )r³   Úinclude_num_input_tokens_seenr  r²   rõ   rq  rV  r·   r  rì  rX  rÃ   Ú	as_tensorr
  Úint64r=  rÁ  r  r€  r�  )rU  r  rê  Úinput_tokenss   &&  rÍ   r  ÚTrainer._track_num_input_tokens´	  sT  € à�9‰9×2Ñ2°dÔ:ÙÜ! $§*¡*Ð.?ÀÓMˆØÔ(Ü�N‰NðRôñ
 à�9‰9×2Ñ2°mÔCØ 6Ô)Ø%Ð&6Õ7×;Ñ;Ó=‘à×%Ñ%Ò1Ü˜D×1Ñ1°>×BÒBØ×)Ñ)×6Ñ6ÒBà &Õ 7¸4×;PÑ;P×;]Ñ;]Ñ ]×bÑbÓd‘ä—‘Ørôð  &Õ6×<Ñ<Ó>‘à!Õ2×8Ñ8Ó:ˆLä—’ |¿I¹I×<LÑ<LÔTY×T_ÑT_Ô`ˆØ�
‰
×(Ò(¨D×,<Ñ,<×,CÑ,CÀLÓ,Q×,UÑ,UÓ,W×,\Ñ,\Ó,^Õ^×(rÐ   c                ó4  € \        4       '       dL   V P                  P                  '       d0   V P                  P	                  V P                  P
                  4      # V P                  P                  VP                  4       V P                  P
                  4      # )zDClip gradients to max_grad_norm. Returns the pre-clip gradient norm.)	r‰   r³   rn  r+  Úclip_master_gradsr  r  Úclip_grad_norm_r  )rU  r²   s   &&rÍ   r  ÚTrainer._clip_grad_normÕ	  sb   € ä"×$Ò$¨¯©¯¯¨Ø—>‘>×3Ñ3°D·I±I×4KÑ4KÓLÐLØ×Ñ×/Ñ/°×0@Ñ0@Ó0BÀDÇIÁI×D[ÑD[Ó\Ð\rÐ   c                ó
  € Vf4   V P                   P                  VP                  4       \        R4      4      pV P                   P                  \
        P                  8X  d#   \        VR4      '       d   VP                  4       pV# )z+Return the gradient norm as a Python float.Úinfr�  )	r  rô  r  r‡  rù  rœ   rú  r  r�  )rU  r²   rî  s   &&&rÍ   r  ÚTrainer._get_grad_normÛ	  sg   € àÒà×(Ñ(×8Ñ8¸×9IÑ9IÓ9KÌUÐSXË\ÓZˆIà×Ñ×,Ñ,´×0IÑ0IÔIÜ�y &×)Ò)Ø%ŸN™NÓ,�	ØÐrÐ   c          
      óš   <€ V ^8„  d   QhRS[ S[S[S[ 3,          ,          R,          RS[S[,          R,          RS[RS[S[S[3,          /# )r±   r¶   NÚignore_keysÚmetric_key_prefixrf  )r   rÀ   rÉ   rÁ   r‡  )rË   rÌ   s   "€rÍ   rÎ   rÏ   è	  s^   ø€ ÷ bñ bá¡¡S©' \Õ 2Õ2°TÕ9ðbñ ™#•Y Õ%ðbñ ð	bñ
 
‰c‘5ˆjÕ	ñbrÐ   c                óL  € VRJpV'       d   TMV P                   p\        V\        4      '       dR   / pVP                  4        F9  w  rgT P	                  V'       d   TMTVV RV 2R7      pVP                  V4       K;  	  V# V P                  P                  4        V P                  V4      p	V P                  '       d   \        V	4      p	\        P                  ! 4       p
T P                  T	RV P                  f   RMRVVR7      pV P                  P                  V P                  P                   ,          pV R2VP"                  9   d   W«P"                  V R2,          ,          p
VP"                  P                  \%        VV
VP&                  \(        P*                  ! VP&                  V,          4      R7      4       V P-                  VP"                  4       \.        P0                  V P                  P2                  9   d*   \4        P6                  ! \8        P:                  ! 4       4       V P<                  P?                  V P                  V P@                  V PB                  VP"                  4      V n!        V P                  PE                  VP"                  4       VP"                  # )	aí  
Run evaluation and returns metrics.

The calling script will be responsible for providing a method to compute metrics, as they are task-dependent
(pass it to the init `compute_metrics` argument).

You can also subclass and override this method to inject custom behavior.

Args:
    eval_dataset (`Dataset` | dict[str, `Dataset`], *optional*):
        Pass a dataset if you wish to override `self.eval_dataset`. If it is a [`~datasets.Dataset`], columns
        not accepted by the `model.forward()` method are automatically removed. If it is a dictionary, it will
        evaluate on each dataset, prepending the dictionary key to the metric name. Datasets must implement the
        `__len__` method.

        <Tip>

        If you pass a dictionary with names of datasets as keys and datasets as values, evaluate will run
        separate evaluations on each dataset. This can be useful to monitor how training affects other
        datasets or simply to get a more fine-grained evaluation.
        When used with `load_best_model_at_end`, make sure `metric_for_best_model` references exactly one
        of the datasets. If you, for example, pass in `{"data1": data1, "data2": data2}` for two datasets
        `data1` and `data2`, you could specify `metric_for_best_model="eval_data1_loss"` for using the
        loss on `data1` and `metric_for_best_model="eval_data2_loss"` for the loss on `data2`.

        </Tip>

    ignore_keys (`list[str]`, *optional*):
        A list of keys in the output of your model (if it is a dictionary) that should be ignored when
        gathering predictions.
    metric_key_prefix (`str`, *optional*, defaults to `"eval"`):
        An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named
        "eval_bleu" if the prefix is "eval" (default)

Returns:
    A dictionary containing the evaluation loss and the potential metrics computed from the predictions. The
    dictionary also contains the epoch number which comes from the training state.
Nru  )r¶   rú  rû  rÞ  T)rÑ  Úprediction_loss_onlyrú  rû  Ú_model_preparation_timer  )#r¶   r)  rÀ   r‘  Úevaluater•  rû   rü   rã  rI  r,   rÀ  Úevaluation_looprº   r³   rá  r  r1  rn   r   r¶  r·  r'  r   ÚTPU_METRICS_DEBUGrZ  r  Úmaster_printÚmetÚmetrics_reportr2  Úon_evaluater=  r<  rT  )rU  r¶   rú  rû  Úoverrider1  Úeval_dataset_nameÚ_eval_datasetÚdataset_metricsÚeval_dataloaderr¶  ÚoutputÚtotal_batch_sizes   &&&&         rÍ   rÿ  ÚTrainer.evaluateè	  s)  € ðZ   tÐ+ˆß'/‘|°T×5FÑ5FˆÜ�l¤D×)Ò)ØˆGØ4@×4FÑ4FÖ4HÑ0Ð!Ø"&§-¡-ß2:¡Ð@QØ +Ø):Ð(;¸1Ð=NÐ<OÐ&Pð #0ó #�ð
 —‘˜Ö/ñ 5Ið ˆNð 	×Ñ×"Ñ"Ô$à×2Ñ2°<Ó@ˆØ×&×&Ð&Ü1°/ÓBˆOä—Y’Y“[ˆ
à×%Ñ%ØØ$ð *.×)=Ñ)=Ò)E¡È4Ø#Ø/ð &ó 
ˆð  Ÿ9™9×4Ñ4°t·y±y×7KÑ7KÕKÐØÐ Ð 7Ð8¸F¿N¹NÔJØŸ.™.Ð,=Ð+>Ð>UÐ)VÕWÕWˆJØ�‰×ÑÜØ!ØØ"×.Ñ.ÜŸ)š) F×$6Ñ$6Ð9IÕ$IÓJô	ô	
ð 	�‰�—‘Ô ä×(Ñ(¨D¯I©I¯O©OÔ;Ü�OŠOœC×.Ò.Ó0Ô1à×,Ñ,×8Ñ8¸¿¹ÀDÇJÁJÐPT×P\ÑP\Ð^d×^lÑ^lÓmˆŒà×Ñ×4Ñ4°V·^±^ÔDà�~‰~ÐrÐ   c                ój   <€ V ^8„  d   QhRS[ RS[RS[R,          RS[S[,          R,          RS[RS[/# )r±   rì  rÑ  rý  Nrú  rû  rf  )r   rÉ   rö  rÁ   rV   )rË   rÌ   s   "€rÍ   rÎ   rÏ   L
  sd   ø€ ÷ Muñ MuáðMuñ ðMuñ # T�kð	Muñ
 ™#•Y Õ%ðMuñ ðMuñ 
ñMurÐ   c           
     óì  € V P                   pVe   TMVP                  pV P                  '       d    V P                  f   \	        V ^ RR7      w   pV P                  V P                  RR7      p\        V P                  P                  4      ^ 8X  Ed   W€P                  J Ed	   \        P                  ! 4       p	V P                  '       g/   V P                  '       d8   V P                   P                  '       g   V P                  P                  V4      MV P                  P                  VRR7      p\        \        P                  ! 4       V	,
          ^4      V n        V P                  '       d   W€n        W€P                  Jd   W€n        V P                  '       d   V P"                  V n        V P$                  '       g|   VP&                  '       d-   VP)                  \*        P,                  VP.                  R7      pM=VP0                  '       d,   VP)                  \*        P2                  VP.                  R7      pV P                   P4                  p
\6        P9                  RV R	24       \;        V4      '       d)   \6        P9                  R
V P=                  V4       24       M\6        P9                  R4       \6        P9                  RV
 24       \?        VR4      '       d,   \A        VPB                  4      '       d   VPC                  4        \?        V PD                  R4      '       d@   \A        V PD                  PB                  4      '       d   V PD                  PC                  4        WPF                  n$        \K        VRR4      p\M        V P                   PN                  R!R7      p\M        V P                   PN                  R!R7      p\M        V P                   PN                  R!R7      p\M        V P                   PN                  R!R7      pRp/ p^ p\Q        V4       EFÅ  w  pp\S        V4      pVe   VV,          pV
f   Tp
V PU                  VVW4R7      w  ppp\K        V P                  RR4      pRVPV                  9   d   V PY                  VV,          4      MRp\[        4       '       d   \\        P^                  ! 4        Ve2   V Pa                  VPc                  V
4      4      pVPe                  V4       Ved   V P                  Pg                  V^R!R7      pV Pa                  V4      pV P                   Ph                  '       d   VR8X  d   VPe                  V4       Ve   V P                  Pg                  V^R!R7      pVe„   V P                  Pg                  V^R!R7      pV Pj                  e   V Pk                  VV4      pV Pa                  V4      pV P                   Ph                  '       d   VR8X  d   VPe                  V4       VeF   V Pa                  V4      pV P                   Ph                  '       d   VR8X  d   VPe                  V4       V PF                  Pm                  W`Pn                  V Pp                  4      V n8        V P                   Ph                  '       d®   V Pr                  e{   Vew   Ves   V P                  Pt                  Pv                  p/ pRVPV                  9   d   TMRVR&   RVPV                  9   d   TMRVR&   V Ps                  \y        R"RVRV/VB VR7      p????\*        Pz                  P}                  4        EK0  VP~                  f   EKA  V^,           VP~                  ,          ^ 8X  g   EKc  VP�                  4        VP�                  4        VP�                  4        VP�                  4        ????\*        Pz                  P}                  4        EKÈ  	  V P                  P‚                  V n0        VP…                  4       pVP…                  4       pVP…                  4       pVP…                  4       p\;        V4      '       d   \        V4      pMZ\‡        V\ˆ        4      '       d    \K        VR^ 4      ^ 8”  d   VP<                  pM%\;        V4      '       d   V P=                  V4      pMTpV^ 8X  d
   V^ 8”  d   TpV Pr                  et   Vep   Vel   V P                   Ph                  '       gP   RVPV                  9   d   TMRVR&   RVPV                  9   d   TMRVR&   V Ps                  \y        R"RVRV/VB 4      pMVf   / p\‹        V4      p\‡        V\Œ        4      '       dB   V'       d:   \Ž        P�                  ! V4      P“                  4       P•                  4       VV R2&   MD\‡        V\Ž        P–                  4      '       d%   VP“                  4       P•                  4       VV R2&   \?        V R4      '       d   V P                   VV R2&   \�        VP™                  4       4       F8  pVP›                  V R24      '       d   K  VP�                  V4      VV RV 2&   K:  	  \Ÿ        WÞVVR 7      # )#zy
Prediction/evaluation loop, shared by `Trainer.evaluate()` and `Trainer.predict()`.

Works both with or without labels.
NT)r>  Ú	inferenceF)rO  )Úevaluation_mode)r�  r
  z
***** Running z *****r­  z  Num examples: Unknownz  Batch size = rÜ  rÐ  )Úpadding_index©rú  rê  rŸ  r  )r�  Ú	pad_indexÚ
PredictionrG  ÚlossesÚpredictionsr#  )ri  rò  Ú_lossÚmodel_preparation_timerþ  ru  )r  r#  r1  r   r{  rg  )Pr³   rý  r  rã   r    rß  r²   r	  r  Ú_modelsrÀ  r  Útorch_compiler  Úprepare_modelÚroundr  r  r>  r  r=  rÃ   Úfloat16r
  r  Úbfloat16rá  rõ   rö   rg   rò  r  ry  rÜ  r+  r2  r
  r  rE   Úeval_do_concat_batchesrô  rJ   Úprediction_stepÚinclude_for_metricsrŒ  rŽ   r  r  rÁ  ÚrepeatÚaddÚpad_across_processesrr  r¾   Úon_prediction_stepr=  r<  rº   rõ  Úend_of_dataloaderrW   ÚcudaÚempty_cacheÚeval_accumulation_stepsÚto_cpu_and_numpyrÀ  Ú
get_arraysr)  rF   rc   rÁ   rP  ÚconcatenaterC  r�  Úndarrayr%  Ú
startswithr¼  rV   )rU  rì  rÑ  rý  rú  rû  r³   ru  r²   r¶  rÒ  r¶   Ú
all_lossesÚ	all_predsÚ
all_labelsÚ
all_inputsr1  Úeval_set_kwargsÚobserved_num_examplesr  r  Úobserved_batch_sizer  ÚlogitsrL  rê  Úinputs_decodeÚis_last_stepÚbatch_kwargsr   Úkeys   &&&&&&                         rÍ   r   ÚTrainer.evaluation_loopL
  s«  € ð �y‰yˆà7KÒ7WÑ3Ð]a×]vÑ]vÐð ×$×$Ð$¨¯©Ò)?Ü! $¸1ÈÔM‰DˆAˆqà× Ñ  §¡°eÐ Ó<ˆäˆt×Ñ×'Ñ'Ó(¨AÕ-°%¿:¹:Ô2EÜŸš›ˆJð ×,×,Ð,°×1E×1EÐ1EÈdÏiÉi×Ne×NeÐNeð × Ñ ×(Ñ(¨Ô/à×%Ñ%×3Ñ3°EÈ4Ð3ÓPð ô
 +0´·	²	³¸jÕ0HÈ!Ó*LˆDÔ'à×#×#Ð#Ø"”
ð ŸJ™JÓ&Ø%*Ô"ð ×(×(Ð(Ø!%×!3Ñ!3�”ð ××ÐØ×"×"Ð"ØŸ™¤u§}¡}¸T¿[¹[˜ÓI‘Ø×$×$Ð$ØŸ™¤u§~¡~¸d¿k¹k˜ÓJ�à—Y‘Y×.Ñ.ˆ
ä�‰Ð& { m°6Ð:Ô;Ü�j×!Ò!Ü�K‰KÐ+¨D×,=Ñ,=¸jÓ,IÐ+JÐKÕLä�K‰KÐ1Ô2Ü�‰�o j \Ð2Ô3ä�5˜&×!Ò!¤h¨u¯z©z×&:Ò&:Ø�J‰JŒLÜ�4—>‘> 6×*Ò*¬x¸¿¹×8KÑ8K×/LÒ/LØ�N‰N×ÑÔ!à0:×ÑÔ-ä˜z¨9°dÓ;ˆô ' t§y¡y×'GÑ'GÐW[Ô\ˆ
Ü% d§i¡i×&FÑ&FÐVZÔ[ˆ	Ü& t§y¡y×'GÑ'GÐW[Ô\ˆ
Ü& t§y¡y×'GÑ'GÐW[Ô\ˆ
àˆØˆð !"Ðô & j×1‰LˆD�&ä"1°&Ó"9ÐØ"Ò.Ø%Ð)<Õ<Ð%àÒ%Ø!4�Jð &*×%9Ñ%9¸%ÀÐI]Ð%9Ó%wÑ"ˆF�F˜FÜ% d§j¡jÐ2CÀ[ÓQˆOà@HÈD×LdÑLdÔ@d�×#Ñ# F¨?Õ$;Ô<Ðjnð ô &×'Ò'Ü—’”ð Ò!Ø×-Ñ-¨f¯m©m¸JÓ.GÓH�Ø—‘˜vÔ&ØÒ(Ø $× 0Ñ 0× EÑ EÀmÐYZÐfjÐ EÓ k�Ø $× 4Ñ 4°]Ó C�Ø—y‘y×3×3Ð3°{ÀlÔ7RØ—N‘N =Ô1ØÒ!à×)Ñ)×>Ñ>¸vÈ1ÐX\Ð>Ó]�ØÒ!Ø×)Ñ)×>Ñ>¸vÈ1ÐX\Ð>Ó]�Ø×5Ñ5ÒAØ!×?Ñ?ÀÈÓO�FØ×-Ñ-¨fÓ5�Ø—y‘y×3×3Ð3°{ÀlÔ7RØ—M‘M &Ô)ØÒ!Ø×-Ñ-¨fÓ5�Ø—y‘y×3×3Ð3°{ÀlÔ7RØ—N‘N 6Ô*à×0Ñ0×CÑCÀDÏ*É*ÐVZ×VbÑVbÓcˆDŒLà�y‰y×+×+Ð+Ø×'Ñ'Ò3¸Ò8JÈvÒOaØ#'×#3Ñ#3×#BÑ#B×#TÑ#T�LØ#%�LØ7=À×AYÑAYÔ7Y©VÐ_c�L Ñ*Ø7?À4×C[ÑC[Ô7[©VÐae�L Ñ*Ø"×2Ñ2Ü&Ñ\°6Ð\ÀVÐ\È|Ñ\Ø'3ð 3ó �Gð
 ˜F F¨FÜ—
‘
×&Ñ&×(ð ×-Ñ-Õ9¸tÀa½xÈ4×KgÑKgÕ>gÐkl×>lØ×+Ñ+Ô-Ø×*Ñ*Ô,Ø×+Ñ+Ô-Ø×+Ñ+Ô-à˜F F¨FÜ—
‘
×&Ñ&×(ñG 2ðL  $×/Ñ/×BÑBˆÔð  ×*Ñ*Ó,ˆ
Ø×(Ñ(Ó*ˆ	Ø×*Ñ*Ó,ˆ
Ø×*Ñ*Ó,ˆ
ô �l×#Ò#Ü˜lÓ+‰Kô ˜Ô&:×;Ò;ÄÈÐVdÐfgÓ@hÐklÔ@lØ&×3Ñ3‰Kä˜*×%Ò%Ø"×/Ñ/°
Ó;‘à3�Ø˜!ÔÐ 5¸Ô 9Ø/ˆKð × Ñ Ò,ØÒ%ØÒ&Ø—I‘I×0×0Ð0à6<À×@XÑ@XÔ6X©
Ð^bˆO˜HÑ%Ø6>À$×BZÑBZÔ6Z©
Ð`dˆO˜HÑ%Ø×*Ñ*ÜÑ^¨9Ð^À
Ð^ÈoÑ^ó‰Gð Š_ØˆGô (¨Ó0ˆä�j¤$×'Ò'¯JÜ35·>²>À*Ó3M×3RÑ3RÓ3T×3YÑ3YÓ3[ˆGÐ(Ð)¨Ð/Ò0Ü˜
¤B§J¡J×/Ò/Ø3=·?±?Ó3D×3IÑ3IÓ3KˆGÐ(Ð)¨Ð/Ñ0Ü�4Ð1×2Ò2ØEI×E`ÑE`ˆGÐ(Ð)Ð)@ÐAÑBô ˜Ÿ™›Ö'ˆCØ—>‘>Ð%6Ð$7°qÐ"9×:Ô:Ø8?¿¹ÀCÓ8H�Ð,Ð-¨Q¨s¨eÐ4Ó5ñ (ô ¨)ÐSZÐhsÔtÐtrÐ   c                óP   <€ V ^8„  d   QhRS[ RS[S[,          R,          RS[RS[/# )r±   ræ  rú  Nrû  rf  )r   rÁ   rÉ   rZ   )rË   rÌ   s   "€rÍ   rÎ   rÏ     s<   ø€ ÷ ;tñ ;tÙ#ð;tÙ26±sµ)¸dÕ2Bð;tÙ^að;tá	ñ;trÐ   c                óR  € V P                   P                  4        V P                  V4      p\        P                  ! 4       pV P	                  VRW#R7      pV P
                  P                  V P
                  P                  ,          pV R2VP                  9   d   WVP                  V R2,          ,          pVP                  P                  \        VVVP                  \        P                  ! VP                  V,          4      R7      4       V P                  P                  V P
                  V P                   V P"                  VP                  4      V n        V P                   P%                  VP                  4       \'        VP(                  VP*                  VP                  R7      # )aÌ  
Run prediction and returns predictions and potential metrics.

Depending on the dataset and your use case, your test dataset may contain labels. In that case, this method
will also return metrics, like in `evaluate()`.

Args:
    test_dataset (`Dataset`):
        Dataset to run the predictions on. If it is an `datasets.Dataset`, columns not accepted by the
        `model.forward()` method are automatically removed. Has to implement the method `__len__`
    ignore_keys (`list[str]`, *optional*):
        A list of keys in the output of your model (if it is a dictionary) that should be ignored when
        gathering predictions.
    metric_key_prefix (`str`, *optional*, defaults to `"test"`):
        An optional prefix to be used as the metrics key prefix. For example the metrics "bleu" will be named
        "test_bleu" if the prefix is "test" (default)

<Tip>

If your predictions or labels have different sequence length (for instance because you're doing dynamic padding
in a token classification task) the predictions will be padded (on the right) to allow for concatenation into
one array. The padding index is -100.

</Tip>

Returns: *NamedTuple* A namedtuple with the following keys:

    - predictions (`np.ndarray`): The predictions on `test_dataset`.
    - label_ids (`np.ndarray`, *optional*): The labels (if the dataset contained some).
    - metrics (`dict[str, float]`, *optional*): The potential dictionary of metrics (if the dataset contained
      labels).
r  )rÑ  rú  rû  rþ  r  )r  r#  r1  )rû   rü   ré  rÀ  r   r³   rá  r  r1  r•  rn   r   r¶  r·  r2  Ú
on_predictr=  r<  rT  rZ   r  r#  )rU  ræ  rú  rû  Útest_dataloaderr¶  r  r  s   &&&&    rÍ   ÚpredictÚTrainer.predict  sM  € ðH 	×Ñ×"Ñ"Ô$à×2Ñ2°<Ó@ˆÜ—Y’Y“[ˆ
à×%Ñ%Ø¨À;ð &ó 
ˆð  Ÿ9™9×4Ñ4°t·y±y×7KÑ7KÕKÐØÐ Ð 7Ð8¸F¿N¹NÔJØŸ.™.Ð,=Ð+>Ð>UÐ)VÕWÕWˆJØ�‰×ÑÜØ!ØØ"×.Ñ.ÜŸ)š) F×$6Ñ$6Ð9IÕ$IÓJô	ô	
ð ×,Ñ,×7Ñ7¸¿	¹	À4Ç:Á:ÈtÏ|É|Ð]c×]kÑ]kÓlˆŒØ×Ñ×4Ñ4°V·^±^ÔDä¨F×,>Ñ,>È&×JZÑJZÐdj×drÑdrÔsÐsrÐ   c                ó$  <€ V ^8„  d   QhRS[ P                  RS[S[S[P
                  S[,          3,          RS[RS[S[,          R,          RS[	S[P
                  R,          S[P
                  R,          S[P
                  R,          3,          /# )r±   r²   r  rý  rú  Nrf  )
r   r¿   rÀ   rÉ   rÃ   rÊ   r	   rö  rÁ   rÂ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   X  s‹   ø€ ÷ g&ñ g&á�y‰yðg&ñ ‘S™%Ÿ,™,©Õ,Ð,Õ-ðg&ñ #ð	g&ñ
 ™#•Y Õ%ðg&ñ 
‰u�|‰|˜dÕ"¡E§L¡L°4Õ$7¹¿¹ÈÕ9LÐLÕ	Mñg&rÐ   c                ó 
  aa€ \        V P                  4      ^ 8X  d   RMM\        ;QJ d)    V3R lV P                   4       F  '       d   K   RM	  RM! V3R lV P                   4       4      pSP                  R4      pVf   V P                  p\        V P                  4      ^ 8H  ;'       d    TpV P                  S4      oSfB   \        V P                  R4      '       d$   \        V P                  P                  RR.4      oM. oV'       g	   V'       dj   \        \        ;QJ d!    . V3R	 lV P                   4       F  NK  	  5M! V3R	 lV P                   4       4      4      p\        V4      ^8X  d
   V^ ,          pMRp\        P                  ! 4       ;_uu_ 4        \        4       '       EdL   \        VS4      p	V'       g	   V'       dº   \!        V	\"        4      '       dY   V	R
,          p
\        ;QJ d%    . V3R lV	P%                  4        4       F  NK  	  5M! V3R lV	P%                  4        4       4      pMV	^ ,          p
V	R,          pV
P'                  4       P)                  4       P+                  4       p\-        V4      pEMRp\!        V	\"        4      '       dP   \        ;QJ d%    . V3R lV	P%                  4        4       F  NK  	  5M! V3R lV	P%                  4        4       4      pMT	p\-        V4      pEMŽV'       g	   V'       dí   V P/                  4       ;_uu_ 4        V P1                  S.V P2                  P4                  4      pV P7                  VSRVR7      w  rÏRRR4       XP)                  4       P9                  4       p\!        X\"        4      '       dP   \        ;QJ d%    . V3R lVP%                  4        4       F  NK  	  5M! V3R lVP%                  4        4       4      pMœVR,          pM’RpV P/                  4       ;_uu_ 4        V! R/ SB pRRR4       \!        X\"        4      '       dP   \        ;QJ d%    . V3R lVP%                  4        4       F  NK  	  5M! V3R lVP%                  4        4       4      pMTpRRR4       V'       d   XRR3# \        X4      p\        V4      ^8X  d
   V^ ,          pXWØ3#   + '       g   i     ELm; i  + '       g   i     LÈ; i  + '       g   i     Ll; i)ap  
Perform an evaluation step on `model` using `inputs`.

Subclass and override to inject custom behavior.

Args:
    model (`nn.Module`):
        The model to evaluate.
    inputs (`dict[str, torch.Tensor | Any]`):
        The inputs and targets of the model.

        The dictionary will be unpacked before being fed to the model. Most models expect the targets under the
        argument `labels`. Check your model's documentation for all accepted arguments.
    prediction_loss_only (`bool`):
        Whether or not to return the loss only.
    ignore_keys (`list[str]`, *optional*):
        A list of keys in the output of your model (if it is a dictionary) that should be ignored when
        gathering predictions.

Return:
    tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]: A tuple with the loss,
    logits and labels (each being optional).
Fc              3   óJ   <"  € T F  pSP                  V4      R Jx € K  	  R # 5irÙ   ©r  )rÞ   rß   r  s   & €rÍ   rà   Ú*Trainer.prediction_step.<locals>.<genexpr>v  s"   øé € ÐAvÑeuÐ`aÀ&Ç*Á*ÈQÃ-ÐW[ÕB[Óeuùs   ƒ #TÚreturn_lossNrî   Úkeys_to_ignore_at_inferenceÚpast_key_valuesc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÙ   rF  )rÞ   Únamer  s   & €rÍ   rà   rG  ˆ  s   øé € Ð(WÑFV¸d¨¯©°D×)9Ð)9ÓFVùr�  rG  c              3   óN   <"  € T F  w  rVSR .,           9  g   K  Vx € K  	  R# 5i©rG  Nrg  ©rÞ   rß   r�  rú  s   &  €rÍ   rà   rG  ”  s(   øé € Ð)oÑ8K±°ÈqÐXcÐgmÐfnÕXnÑOn¯!ª!Ó8Kùó   ƒ%›
%r~  c              3   ó>   <"  € T F  w  rVS9  g   K  Vx € K  	  R # 5irÙ   rg  rO  s   &  €rÍ   rà   rG  ž  s   øé € Ð)dÑ8K±°ÈqÐXcÑOc¯!ª!Ó8Kùó   ƒ“
)rJ  r  c              3   óN   <"  € T F  w  rVSR .,           9  g   K  Vx € K  	  R# 5irN  rg  rO  s   &  €rÍ   rà   rG  ¬  s&   øé € Ð&h±_©T¨QÈÐQ\Ð`fÐ_gÕQgÑHg§q¢q³_ùrP  c              3   ó>   <"  € T F  w  rVS9  g   K  Vx € K  	  R # 5irÙ   rg  rO  s   &  €rÍ   rà   rG  ´  s   øé € Ð&]±_©T¨QÈÐQ\ÑH\§q¢q³_ùrR  rg  )r	  r"  Úallr  r€   r:  r  r²   r  rî   rN   rÂ   rÃ   Úno_gradr‰   r”   r)  rÀ   r‘  r;  r<  rñ   r•   r>  rt  r³   r
  r?  rC  )rU  r²   r  rý  rú  Ú
has_labelsrH  Úloss_without_labelsrL  Úraw_outputsrF  Ú	logits_mbrG  r7  r  rS  s   &&f&f           rÍ   r!  ÚTrainer.prediction_stepX  s�  ù€ ô< " $×"2Ñ"2Ó3°qÔ8‘U¿c»cÔAvÐei×euÒeuÓAv¿c¿cºcÔAvÐei×euÒeuÓAvÓ>vˆ
ð —j‘j Ó/ˆØÒØ×.Ñ.ˆKÜ! $×"2Ñ"2Ó3°qÑ8×HÐH¸[Ðà×%Ñ% fÓ-ˆØÒÜ�t—z‘z 8×,Ò,Ü% d§j¡j×&7Ñ&7Ð9VÐYjÐXkÓl‘à �÷ ×,Ü"§5¤5Ô(WÀd×FVÒFVÓ(W§5¡5Ô(WÀd×FVÒFVÓ(WÓ#WÓXˆFÜ�6‹{˜aÔØ ��øàˆFä�]Š]�_�_Ü&×(Ó(Ü.¨u°fÓ=�ß×!4Ü! +¬t×4Ò4Ø"-¨fÕ"5˜ß$)¤EÔ)o¸×8IÑ8IÔ8KÓ)o§E¡EÔ)o¸×8IÑ8IÔ8KÓ)oÓ$o™	à"-¨a¥.˜Ø$/°¥O˜	à"×.Ñ.Ó0×7Ñ7Ó9×=Ñ=Ó?�DÜ.¨yÓ9’Fà�DÜ! +¬t×4Ò4ß$)¤EÔ)d¸×8IÑ8IÔ8KÓ)d§E¡EÔ)d¸×8IÑ8IÔ8KÓ)dÓ$d™	à$/˜	Ü.¨yÓ9’Fç×!4Ø×:Ñ:×<Õ<Ø-1×-IÑ-IÈ6È(ÐTX×T]ÑT]×TdÑTdÓ-eÐ*Ø(,×(9Ñ(9Ø! 6¸$ÐSeð ):ó )™˜÷ =ð
  Ÿ;™;›=×-Ñ-Ó/�Dä! '¬4×0Ò0ß!&¤Ô&h°W·]±]´_Ó&h§¡Ô&h°W·]±]´_Ó&hÓ!h™à!(¨¥™à�DØ×:Ñ:×<Õ<Ù"'¡/¨&¡/˜÷ =ä! '¬4×0Ò0ß!&¤Ô&]°W·]±]´_Ó&]§¡Ô&]°W·]±]´_Ó&]Ó!]™à!(˜÷Q ÷T  Ø˜$ Ð%Ð%ä˜vÓ&ˆÜˆv‹;˜!ÔØ˜A•YˆFà�fÐ%Ð%÷7 =×<Ð<ú÷ =×<ú÷G �_úsk   Æ-S-Ç)S-Ç6B1S-Ê(AS-ÌS-ÌS-Ì#?S	Í"AS-Î)A(S-Ð	S	Ð(S-ÑAS-ÓSÓ	S-ÓS*Ó%S-Ó-S=	c          
      ód   <€ V ^8„  d   QhRRRS[ S[,          R,          RS[RS[S[S[3,          /# )r±   r”  r•  r–  Nr±  rf  )rÁ   rÉ   rö  rÀ   r‡  )rË   rÌ   s   "€rÍ   rÎ   rÏ   Á  sE   ø€ ÷ ñ à5ðñ #¡3�i¨$Õ.ðñ ð	ñ
 
‰c‘5ˆjÕ	ñrÐ   c           
     ó:  € V P                  VR7      pV P                  WP                  P                  V4       \	        V P
                  \        P                  P
                  P                  \        34      '       d_   V'       gW   V P                  P                  pVP                  R4      '       g   RV 2p V P
                  P                  WE,          4       V# V#   \         d3   p\        RT R\        TP!                  4       4       RT R24      ThRp?ii ; i)zSRun evaluation, report to HP search, and step ReduceLROnPlateau/GreedyLR if needed.r  Úeval_ú9The `metric_for_best_model` training argument is set to 'úW', which is not found in the evaluation metrics. The available evaluation metrics are: zX. Please ensure that the `compute_metrics` function returns a dictionary that includes 'zM' or consider changing the `metric_for_best_model` via the TrainingArguments.N)rÿ  Ú_report_to_hp_searchr=  r¾  r)  rÆ   rÃ   rÄ   r‹  r5   r³   rw  r/  r  ÚKeyErrorrÁ   r%  )rU  r”  r–  r±  r1  Úmetric_to_checkÚexcs   &&&&   rÍ   rÉ  ÚTrainer._evaluateÁ  s  € ð —-‘-Ð,@�-ÓAˆØ×!Ñ! %¯©×)?Ñ)?ÀÔIô �t×(Ñ(¬5¯;©;×+CÑ+C×+UÑ+UÔW_Ð*`×aÒaß"à"Ÿi™i×=Ñ=ˆOØ"×-Ñ-¨g×6Ò6Ø$)¨/Ð):Ð";�ð	Ø×!Ñ!×&Ñ& wÕ'?Ô@ð ˆˆwˆøô ô ÜØOÐP_ÐO`ð a=ä=AÀ'Ç,Á,Ã.Ó=QÐ<Rð SmØm|Ðl}ð ~_ð`óð ðûðús   Â8!C ÃDÃ(-DÄDc                ó$   <€ V ^8„  d   QhRRRS[ /# ©r±   r”  r•  rf  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   á  s   ø€ ÷ ñ Ð%Kð ÑPSñ rÐ   c                óp  € V P                   Ee   VEe   V P                   \        P                  8X  d   VP                  pM…V P                   \        P                  8X  d.   ^ RIpVP                  P                  4       P                  4       pM9V P                   \        P                  8X  d   ^ RI
pVP                  P                  pV P                  e   V P                  V4      MRX 2p\        P                  P!                  V P"                  P$                  V4      pV# V P"                  P$                  pV# )zIReturn the output directory, accounting for hyperparameter search trials.Nzrun-)r@  rX   ÚOPTUNAÚnumberÚRAYÚray.tuneÚtuneÚget_contextÚget_trial_idÚWANDBÚwandbÚrunÚidr?  r:  r£  r0  r³   rÓ   )rU  r”  Úrun_idÚrayrq  Úrun_nameÚrun_dirs   &&     rÍ   r)  ÚTrainer._get_output_dirá  sâ   € à×!Ñ!Ó-°%Ó2CØ×%Ñ%¬×)?Ñ)?Ô?ØŸ™‘Ø×'Ñ'¬?×+>Ñ+>Ô>ÛàŸ™×-Ñ-Ó/×<Ñ<Ó>‘Ø×'Ñ'¬?×+@Ñ+@Ô@ÛàŸ™Ÿ™�Ø.2¯l©lÒ.F�t—|‘| EÔ*ÈdÐSYÐRZÈOˆHÜ—g‘g—l‘l 4§9¡9×#7Ñ#7¸ÓBˆGð ˆð —i‘i×*Ñ*ˆGØˆrÐ   c                ó<   <€ V ^8„  d   QhRS[ P                  RRRR/# )r±   r²   r”  r•  rf  N©r   r¿   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ô  s-   ø€ ÷ Cñ C¡b§i¡ið CÐ8^ð CÐcgñ CrÐ   c                ó  € \          RV P                  P                   2pV P                  f   Vf   V P	                  4        V P                  VR7      p\        P                  P                  WC4      pV P                  VRR7       V P                  P                  \        P                  \        P                  \        P                  39   Ed   V P                  P                   '       dÿ   \#        4       '       d   \$        P&                  ! R4       MdV P                  P(                  \*        P,                  8X  d   \.        P0                  ! 4        M%\3        4       '       d   \4        P0                  ! 4        \          RV P                  P                    2p\        P                  P                  WF4      p\        P                  P7                  V4      '       d   WpP                  n        V P                  P:                  '       g4   V P=                  V4       V P?                  V4       V PA                  V4       V P                  PB                  '       Ed2   V PD                  PF                  V PH                  .,            Uu. uF  p\K        V\L        4      '       g   K  VNK  	  up F   pVPN                  PP                  p	VP                  4       p
\K        V P                  PR                  V	,          \T        4      '       d/   V P                  PR                  V	,          PW                  V
4       Kˆ  W P                  PR                  V	&   K¢  	  V P                  PY                  \        P                  P                  V\Z        4      4       V P                  P\                  '       d   V P_                  V4       V P                  PB                  '       d:   \a        VV P                  Pb                  V P                  P8                  RR7       R# R# u upi )zSSave model checkpoint, optimizer, scheduler, scaler, RNG states, and trainer state.Ú-N)r”  T©Ú_internal_callrv  )rÓ   r*  r#  Ú	use_mtime)2rT   r=  r¾  r@  r&  r)  r:  r£  r0  Ú
save_modelr³   rt  r\   ÚSTEPSÚEPOCHru  Úbest_global_steprŽ   r  Ú
rendezvousr  rs   r  rà  Úbarrierr‰   ro  Úexistsr#  rÅ  Ú_save_optimizer_and_schedulerÚ_save_scalerÚ_save_rng_stater9  r2  r»   r<  r)  r;   r  r  rí   rÁ   rq  Úsave_to_jsonr¤  r7  Ú_push_from_checkpointrj   r*  )rU  r²   r”  Úcheckpoint_folderrw  rÓ   Úbest_checkpoint_folderÚbest_checkpoint_dirr`  Úcb_nameÚcb_states   &&&        rÍ   ri  ÚTrainer._save_checkpointô  sÆ  € ô  5Ð5°Q°t·z±z×7MÑ7MÐ6NÐOÐà×!Ñ!Ò)¨eªmØ�O‰OÔà×&Ñ&¨UÐ&Ó3ˆÜ—W‘W—\‘\ 'Ó=ˆ
Ø�‰˜
°4ˆÔ8ð �I‰I×#Ñ#¬×(:Ñ(:¼L×<NÑ<NÔP\×PaÑPaÐ'bÕbØ—
‘
×+×+Ð+ô &×'Ò'Ü—’Ð6Õ7Ø—‘×(Ñ(¬L×,DÑ,DÔDÜ—’•Ü(×*Ò*Ü—’”ä(=Ð'>¸aÀÇ
Á
×@[Ñ@[Ð?\Ð%]Ð"Ü"$§'¡'§,¡,¨wÓ"OÐä�w‰w�~‰~Ð1×2Ò2Ø3F—
‘
Ô0à�y‰y×(×(Ð(à×.Ñ.¨zÔ:Ø×Ñ˜jÔ)à× Ñ  Ô,ð �9‰9× × Ñ ð "×2Ñ2×<Ñ<ÀÇÁ¸~ÖMóÙM�rÔQ[Ð\^Ô`o×Qp—�ÑMô�ð Ÿ,™,×/Ñ/�ØŸ8™8›:�Ü˜dŸj™j×;Ñ;¸GÕDÄd×KÒKØ—J‘J×1Ñ1°'Õ:×AÑAÀ(ÖKà=E—J‘J×1Ñ1°'Ó:ñð �J‰J×#Ñ#¤B§G¡G§L¡L°Ô=OÓ$PÔQà�9‰9× × Ð Ø×&Ñ& zÔ2ð �9‰9× × Ð äØ"Ø!%§¡×!;Ñ!;Ø&*§j¡j×&FÑ&FØ÷	ñ !ùòs   É?P
ÊP
c                ó@   <€ V ^8„  d   QhRS[ S[S[3,          RRRS[/# )r±   r1  r”  r•  rf  )rÀ   rÉ   r‡  rö  )rË   rÌ   s   "€rÍ   rÎ   rÏ   9  s-   ø€ ÷ $"ñ $"©d±3¹°:Õ.>ð $"ÐGmð $"Ñrvñ $"rÐ   c           
     ó˜  € RpV P                   P                  Eer   V P                   P                  pVP                  R4      '       g   RV 2p W,          pT P                   P                  '       d   \        P                  M\        P                  pT P                  P                  fB   T P                   P                  '       d   \        R4      M
\        R4      T P                  n        T! YPP                  P                  4      '       d€   YPP                  n        T P                   P                  \        P                  \        P                   \        P"                  39   d&   T P                  P$                  T P                  n        R	pV#   \         d0   p\        RT R\	        TP                  4       4       R24      ThRp?ii ; i)
z�
Determine if the model should be saved based on the evaluation metrics.

Returns:
    bool: True if a new best metric was found, else False
FNr^  r_  r`  zJ. Consider changing the `metric_for_best_model` via the TrainingArguments.z-infr÷  T)r³   rw  r/  rb  rÁ   r%  Úgreater_is_betterrP  ÚgreaterÚlessr=  Úbest_metricr‡  rt  r\   r�  r‚  ru  r¾  rƒ  )rU  r1  r”  rm  rc  Úmetric_valuerd  Úoperators   &&&     rÍ   rh  ÚTrainer._determine_best_metric9  sj  € ð #Ðà�9‰9×*Ñ*Ó6Ø"Ÿi™i×=Ñ=ˆOà"×-Ñ-¨g×6Ò6Ø$)¨/Ð):Ð";�ðØ&Õ7�ð &*§Y¡Y×%@×%@Ð%@”r—z’zÄbÇgÁgˆHà�z‰z×%Ñ%Ò-Ø:>¿)¹)×:U×:UÐ:U¬¨v¬Ô[`ÐafÓ[g�—
‘
Ô&á˜§j¡j×&<Ñ&<×=Ò=Ø)5—
‘
Ô&à—9‘9×*Ñ*¬|×/AÑ/AÄ<×CUÑCUÔWc×WhÑWhÐ.iÔiØ26·*±*×2HÑ2H�D—J‘JÔ/à%)Ð"à!Ð!øô' ô ÜØOÐP_ÐO`ð a=Ü=AÀ'Ç,Á,Ã.Ó=QÐ<Rð  S]ð^óð ðûðús   ÁF ÆG	Æ*GÇG	c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r±   rÓ   rf  Nr)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   _  s   ø€ ÷ 1iñ 1i©#ð 1i°$ñ 1irÐ   c           	     ó
  € R\         P                  ! 4       R\        P                   P                  4       R\        P                   P                  4       /p\        P                  P                  4       '       d�   V P                  P                  \        P                  8X  d-   \        P                  P                   P                  4       VR&   M+\        P                  P                   P                  4       VR&   \        4       '       d   \        P
                  ! 4       VR&   \        4       '       d�   V P                  P                  \        P                  8X  d-   \        P                   P                   P                  4       VR&   M+\        P                   P                   P                  4       VR&   \#        4       '       d�   V P                  P                  \        P                  8X  d-   \        P$                  P                   P                  4       VR&   M+\        P$                  P                   P                  4       VR&   \'        4       '       d�   V P                  P                  \        P                  8X  d-   \        P(                  P                   P                  4       VR&   M+\        P(                  P                   P                  4       VR&   \+        4       '       dm   V P                  P                  \        P                  8X  d#   \        P,                  P                  4       VR	&   M!\        P,                  P                  4       VR	&   \.        P0                  ! VR
R7       V P                  P2                  ^8:  d8   \        P4                  ! V\.        P6                  P9                  VR4      4       R# \        P4                  ! V\.        P6                  P9                  VRV P                  P:                   R24      4       R# )z@Save random number generator states for reproducible resumption.ÚpythonÚnumpyrñ   r(  rÕ   ÚnpuÚhpuÚmluÚmusaTré   úrng_state.pthÚ
rng_state_ú.pthN)ÚrandomÚgetstaterP  Ú	get_staterÃ   Úget_rng_stater(  r  r³   r  rs   r  Úget_rng_state_allrŽ   r  r�   r   rŠ   r¡  r‹   r¢  rŒ   r£  r:  r;  r  Úsaver£  r0  r  )rU  rÓ   Ú
rng_statess   && rÍ   r‰  ÚTrainer._save_rng_state_  s�  € ð ”f—o’oÓ'Ø”R—Y‘Y×(Ñ(Ó*Ø”5—<‘<×-Ñ-Ó/ð
ˆ
ô
 �:‰:×"Ñ"×$Ò$Ø�y‰y×&Ñ&¬,×*BÑ*BÔBä%*§Z¡Z×%6Ñ%6×%HÑ%HÓ%J�
˜6Ò"ä%*§Z¡Z×%6Ñ%6×%DÑ%DÓ%F�
˜6Ñ"ä!×#Ò#Ü "× 0Ò 0Ó 2ˆJ�uÑä!×#Ò#Ø�y‰y×&Ñ&¬,×*BÑ*BÔBÜ$)§I¡I×$4Ñ$4×$FÑ$FÓ$H�
˜5Ò!ä$)§I¡I×$4Ñ$4×$BÑ$BÓ$D�
˜5Ñ!ä!×#Ò#Ø�y‰y×&Ñ&¬,×*BÑ*BÔBÜ$)§I¡I×$4Ñ$4×$FÑ$FÓ$H�
˜5Ò!ä$)§I¡I×$4Ñ$4×$BÑ$BÓ$D�
˜5Ñ!ä!×#Ò#Ø�y‰y×&Ñ&¬,×*BÑ*BÔBÜ$)§I¡I×$4Ñ$4×$FÑ$FÓ$H�
˜5Ò!ä$)§I¡I×$4Ñ$4×$BÑ$BÓ$D�
˜5Ñ!ä"×$Ò$Ø�y‰y×&Ñ&¬,×*BÑ*BÔBÜ%*§Z¡Z×%AÑ%AÓ%C�
˜6Ò"ä%*§Z¡Z×%=Ñ%=Ó%?�
˜6Ñ"ô 	�Š�J¨Õ.à�9‰9×Ñ 1Ô$Ü�JŠJ�z¤2§7¡7§<¡<°
¸OÓ#LÖMä�JŠJ�z¤2§7¡7§<¡<°
¸jÈÏÉ×I`ÑI`ÐHaÐaeÐ<fÓ#gÖhrÐ   c                ó$   <€ V ^8„  d   QhRS[ RR/# rœ  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ’  s   ø€ ÷ @1ñ @1¹ð @1Àñ @1rÐ   c                ó0  € \        4       '       Ed£   \        P                  ! R4       V P                  '       d¤   RV P                  P                  4       RV P                  P                  4       /p\        P                  ! V\        P                  P                  VRV P                  P                   RV P                  P                   R\         24      RR7       MQ\        P                  ! V P                  P                  4       \        P                  P                  V\        4      4       \         P"                  ! R	R
7      ;_uu_ 4       p\        P                  ! V P$                  P                  4       \        P                  P                  V\&        4      4       \)        V4       RRR4       EM¸\+        4       '       dÖ   V P                  P-                  RR7      p\.        P0                  ! 4        \.        P2                  ! 4       ^ 8X  g+   \.        P4                  P6                  P8                  '       d_   \.        P                  ! V\        P                  P                  V\        4      R	\.        P4                  P6                  P8                  R7       EMÓV P:                  '       d®   R\=        \>        P@                  ! V PB                  PD                  4      PF                  PI                  4       4      9   pV'       d;   \K        V P                  4      '       d    V PB                  PE                  VR	R7       EM1V PB                  PE                  V4       EMV PL                  '       d–   \O        V PP                  P4                  PR                  V PP                  V P                  V3/ \U        4       B  \W        V PP                  P4                  PR                  V PP                  V P                  V P                  V4       MmV P                  PX                  '       dR   \Z        P                  ! V P                  P                  4       \        P                  P                  V\        4      4       V P:                  ;'       d     \]        V P$                  \^        4      '       * pV P                  PX                  '       dµ   V P:                  '       d	   V'       d™   \        4       '       g‡   \         P"                  ! R	R
7      ;_uu_ 4       p\Z        P                  ! V P$                  P                  4       \        P                  P                  V\&        4      4       RRR4       \)        X4       R# R# R# R#   + '       g   i     EL; i  + '       g   i     L7; i)zBSave optimizer and learning rate scheduler states to `output_dir`.Úsaving_optimizer_statesr+  Úshard_metadatar  ú-of-r|  F)Úmaster_onlyT©ÚrecordN)Úgather_if_shard)r   Úv3Úexclude_frozen_parameters©r¹  )0rŽ   r  r„  rS  r+  Ú
state_dictr²   Úget_shard_metadatar¬  r:  r£  r0  r³   r  r  ÚOPTIMIZER_NAMEr%  Úcatch_warningsrÆ   ÚSCHEDULER_NAMErP   r‰   Úlocal_state_dictro  r…  Úrdp_rankr=  rp  Úshard_optimizer_stater  r  rÛ   r  r  Úsave_checkpointr  r%  r_   r  r¡   r  r®  r%   r¢   r9  rÃ   r)  r¤   )rU  rÓ   ÚoptmÚcaught_warningsÚopt_state_dictÚ accept_exclude_frozen_parametersÚis_deepspeed_custom_schedulers   &&     rÍ   r‡  Ú%Trainer._save_optimizer_and_scheduler’  s¼  € ä!×#Ó#Ü�MŠMÐ3Ô4Ø×*×*Ð*à §¡×!:Ñ!:Ó!<Ø$ d§j¡j×&CÑ&CÓ&Eð�ô —’ØÜ—G‘G—L‘LØ" d¨4¯9©9×+BÑ+BÐ*CÀ4ÈÏ	É	×H\ÑH\ÐG]Ð]^Ô_mÐ^nÐ$oóð !&öô —’˜Ÿ™×1Ñ1Ó3´R·W±W·\±\À*ÌnÓ5]Ô^Ü×(Ò(°×5Õ5¸Ü—’˜×)Ñ)×4Ñ4Ó6¼¿¹¿¹ÀZÔQ_Ó8`ÔaÜ# OÔ4÷ 6Ñ5ô %×&Ò&Ø!Ÿ^™^×<Ñ<ÈUÐ<ÓSˆNÜ�KŠKŒMÜ�|Š|‹~ Ô"¤c§i¡i§m¡m×&I×&IÐ&IÜ—’Ø"Ü—G‘G—L‘L ¬^Ó<Ø Ü—y‘y—}‘}×:Ñ:õ	ùð ×&×&Ð&ð 0KÌcÜ×!Ò! $×"4Ñ"4×"DÑ"DÓE×PÑP×UÑUÓWóOñ 0Ð,÷ 0´NÀ4Ç:Á:×4NÒ4NØ×"Ñ"×2Ñ2°:ÐY]Ð2Ö^à×"Ñ"×2Ñ2°:Ö>Ø×!×!Ð!äØ× Ñ ×&Ñ&×2Ñ2°D×4DÑ4DÀdÇjÁjÐR\ñÜ`tÓ`vòô  Ø× Ñ ×&Ñ&×2Ñ2°D×4DÑ4DÀdÇnÁnÐVZ×V`ÑV`Ðblõð �Y‰Y×"×"Ð"ä�JŠJ�t—~‘~×0Ñ0Ó2´B·G±G·L±LÀÌ^Ó4\Ô]ð )-×(AÑ(A÷ )
ð )
Ì*Ø×ÑÔ8óK
ô G
Ð%ð �I‰I×!×!Ð!Ø×.×.Ð.×2OÜ*×,Ò,ä×(Ò(°×5Õ5¸Ü—
’
˜4×,Ñ,×7Ñ7Ó9¼2¿7¹7¿<¹<È
ÔTbÓ;cÔd÷ 6ä Ö0ñ	 -ñ 3Pñ "÷Q 6×5Ð5ú÷X 6×5ús   ÅAU1ÔAVÕ1V	ÖV	c                ó$   <€ V ^8„  d   QhRS[ RR/# rœ  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   Ô  s   ø€ ÷ 1ñ 1¡sð 1¨tñ 1rÐ   c           	     ó”  €  V P                   P                  pTf   R# \        4       '       d¥   \        P
                  ! R4       \        P                  ! RR7      ;_uu_ 4       p\        P                  ! T P                   P                  P                  4       \        P                  P                  T\        4      4       \        T4       RRR4       T P                  P                   '       d£   \        4       '       g‘   \        P                  ! RR7      ;_uu_ 4       p\"        P                  ! T P                   P                  P                  4       \        P                  P                  T\        4      4       RRR4       \        X4       R# R# R#   \         d     R# i ; i  + '       g   i     Lâ; i  + '       g   i     LF; i)z-Save the gradient scaler state if one exists.NÚsaving_scaler_stateTrµ  )r  Úscalerrð  rŽ   r  r„  r%  r¾  r¬  r»  r:  r£  r0  ÚSCALER_NAMErP   r³   r9  rÃ   )rU  rÓ   rÍ  rÅ  s   &&  rÍ   rˆ  ÚTrainer._save_scalerÔ  s(  € ð	Ø×%Ñ%×,Ñ,ˆFð Š>ÙÜ!×#Ò#Ü�MŠMÐ/Ô0Ü×(Ò(°×5Õ5¸Ü—’˜×(Ñ(×/Ñ/×:Ñ:Ó<¼b¿g¹g¿l¹lÈ:ÔWbÓ>cÔdÜ# OÔ4÷ 6ð
 �9‰9× × Ð Ô)?×)AÒ)AÜ×(Ò(°×5Õ5¸Ü—
’
˜4×+Ñ+×2Ñ2×=Ñ=Ó?ÄÇÁÇÁÈjÔZeÓAfÔg÷ 6ä Ö0ñ *BÑ øô ô 	Úð	ú÷ 6×5ú÷ 6×5ús+   ‚F Á#A'F$ÄAF7ÆF!Æ F!Æ$F4	Æ7G	c                óL   <€ V ^8„  d   QhRS[ RS[P                  R,          RR/# )r±   r“  r²   Nrf  )rÉ   r   r¿   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ë  s2   ø€ ÷ =ñ =¹Cð =ÉÏ	É	ÐTXÕHXð =Ðdhñ =rÐ   c           
     ó  a€ Vf   V P                   p\        P                  P                  S\        4      p\        P                  P                  S\
        4      p\        P                  P                  S\        4      p\        P                  P                  S\        4      p\        P                  P                  S\        4      p\        P                  P                  S\        4      p\        P                  P                  S\        4      p	\        P                  P                  S4      ;'       d¯    \        ;QJ d3    V3R l\        P                  ! S4       4       F  '       g   K   RM(	  RM$! V3R l\        P                  ! S4       4       4      ;'       gE    \        P                  P                  \        P                  P                  S\         R24      4      p
\        P                  P                  S4      '       dþ   \        P                  ! S4       Uu. uFÜ  p\        P                  P                  \        P                  P                  SV4      4      '       g   KH  \        P                  P                  \        P                  P                  SV\
        4      4      '       gK   \        P                  P                  \        P                  P                  SV\        4      4      '       g   KÚ  VNKÞ  	  upM. pV
'       d"   V P                   '       g   \#        RS R24      h\        ;QJ d"    R VVVV	VV3 4       F  '       g   K   RM	  RM! R VVVV	VV3 4       4      '       g   V
'       g   V'       g   \#        R	S 24      h\$        P'                  R
S R24       \        P                  P                  V4      '       dR   \(        P*                  ! V4      pVP,                  pVe,   V\.        8w  d!   \$        P1                  RV R\.         R24       \        P                  P                  V4      '       g/   \        P                  P                  V4      '       g
   V
'       Ed   \3        4       '       d!   \4        P6                  ! S\        RRR7       R# V P                   '       dB   \9        V P:                  P<                  P>                  V P:                  VS3/ \A        4       B  R# \        P                  P                  V4      '       d#   \B        PD                  PG                  VRR7      pM#\I        4        \D        PJ                  ! VRRR7      pVPM                  VR4      p?V PO                  V4       R# \Q        V4      '       Ed4   \S        VR4      '       Ed   \S        VR4      '       dð   \        P                  PU                  S4      '       d¬   VPV                  p\Y        V4      ^8”  d   \$        P1                  R4       V^ ,          pV'       dT   V F:  p\        P                  P                  SV4      pVP[                  VVVV8H  R7       K<  	  VP]                  V4       R# VP[                  SVRR7       R# \$        P1                  R\
         R24       R# \$        P1                  R\^         R24       R# \a        VS\3        4       R7      p\3        4       '       g   V PO                  V4       R# R# u upi )z/Load model weights from a checkpoint directory.Nc              3   óÀ   <"  € T FS  p\         P                  P                  \         P                  P                  SV4      4      '       g   KH  \        V9   x € KU  	  R # 5irÙ   )r:  r£  Úisdirr0  ÚFSDP_MODEL_NAME)rÞ   Úfolder_namer“  s   & €rÍ   rà   Ú0Trainer._load_from_checkpoint.<locals>.<genexpr>ù  s?   øé € ð á#E�KÜ—7‘7—=‘=¤§¡§¡Ð.DÀkÓ!R×Sô /” ;Ö.Û#Eùs   ƒAAÁATFz.binzCheckpoint found at z* is only supported when using PyTorch FSDPc              3   ó`   "  € T F$  p\         P                  P                  V4      x € K&  	  R # 5irÙ   )r:  r£  rÕ  )rÞ   Úfs   & rÍ   rà   rÖ    s+   é € ð 
ñ�Aô —‘—‘˜q×!Ð!óùs   ‚,.z!Can't find a valid checkpoint at zLoading model from rN  z9You are resuming training from a checkpoint trained with z- of Transformers but your current version is zJ. This is not recommended and could yield to errors or unwanted behaviors.©r£  Útagr   Úload_optimizerrñ   r°  ©Úmap_locationÚweights_onlyÚactive_adaptersÚload_adapterzFMultiple active adapters detected will only consider the first adapter)Úis_trainableújThe intermediate checkpoints of PEFT may not be saved correctly, consider using a custom callback to save úi in corresponding saving folders. Check some examples here: https://github.com/huggingface/peft/issues/96ú8Could not load adapter model, make sure to have PEFT >= ú
 installed©Ústrict)1r²   r:  r£  r0  rx   rw   rv   r}   r|   r{   rz   rÓ  r  ÚlistdirrÕ  rÔ  r  r  rõ   rö   r   Úfrom_json_fileÚtransformers_versionr   rq  r‰   ro  r“  rž   r  r=  r®  r%   ÚsafetensorsrÃ   Ú	load_filer�   ÚloadÚload_state_dictÚ_issue_warnings_after_loadr_   r  r†  rß  r	  rà  Úset_adapterr*   rh   )rU  r“  r²   Úconfig_fileÚadapter_weights_fileÚadapter_safe_weights_fileÚweights_fileÚweights_index_fileÚsafe_weights_fileÚsafe_weights_index_fileÚis_fsdp_ckptrÕ  Úadapter_subdirsrî   Úcheckpoint_versionr»  Úload_resultrß  Úactive_adapterÚsubdir_nameÚpeft_ids   &f&                  rÍ   r¡  ÚTrainer._load_from_checkpointë  sl  ø€ àŠ=Ø—J‘JˆEä—g‘g—l‘lÐ#9¼;ÓGˆÜ!Ÿw™wŸ|™|Ð,BÔDXÓYÐÜ$&§G¡G§L¡LÐ1GÔIbÓ$cÐ!Ü—w‘w—|‘|Ð$:¼LÓIˆÜŸW™WŸ\™\Ð*@ÔBTÓUÐÜŸG™GŸL™LÐ)?ÔARÓSÐÜ"$§'¡'§,¡,Ð/EÔG^Ó"_ÐÜ—w‘w—}‘}Ð%;Ó<÷ 	
ð 	
ç‹Cô ä#%§:¢:Ð.DÔ#Eó�C�CŠCô ä#%§:¢:Ð.DÔ#Eóó ÷ ^ð ^ô �w‰w�~‰~œbŸg™gŸl™lÐ+AÄoÐEVÐVZÐC[Ó\Ó]ð 	ô* �w‰w�}‰}Ð3×4Ò4ô $&§:¢:Ð.DÔ#Eóá#E�KÜ—7‘7—=‘=¤§¡§¡Ð.DÀkÓ!R×Sô ô —G‘G—N‘N¤2§7¡7§<¡<Ð0FÈÔUiÓ#j×kÒkÜ—w‘w—~‘~¤b§g¡g§l¡lÐ3IÈ;ÔXqÓ&r×s÷ �Ù#Eòð ð 	÷  × 4× 4Ð 4ÜÐ3Ð4JÐ3KÐKuÐvÓwÐw÷ ‹Cñ 
ð !Ø%Ø&Ø+Ø(Ø-ñó
�C�CŠCñ 
ð !Ø%Ø&Ø+Ø(Ø-ñó
÷ 
ò 
÷ ßäÐ@ÐAWÐ@XÐYÓZÐZä�‰Ð)Ð*@Ð)AÀÐCÔDä�7‰7�>‰>˜+×&Ò&Ü%×4Ò4°[ÓAˆFØ!'×!<Ñ!<ÐØ!Ò-Ð2DÌÔ2SÜ—‘ØOÐPbÐOcð d@Ü@K¸}ð M=ð=ôô �7‰7�>‰>˜,×'Ò'¬2¯7©7¯>©>Ð:K×+LÒ+L×P\ÐP\ä&×(Ò(Ü×*Ò*Ø/´\È5Ðaf÷ð ×%×%Ð%ÜØ×$Ñ$×*Ñ*×6Ñ6Ø×$Ñ$ØØ*ñ	ô
 +Ó,ôô —7‘7—>‘>Ð"3×4Ò4Ü!,×!2Ñ!2×!<Ñ!<Ð=NÐW\Ð!<Ó!]‘Jä,Ô.Ü!&§¢¨LÀuÐ[_Ô!`�Jð $×3Ñ3°JÀÓF�àØ×/Ñ/°Ö<ô ˜E×"Ó"ä�uÐ/×0Ó0´W¸UÀN×5SÒ5SÜ—7‘7—>‘>Ð"8×9Ò9Ø&+×&;Ñ&;�OÜ˜?Ó+¨aÔ/ÜŸ™Ð'oÔpØ%4°QÕ%7�Nç&Û+:˜KÜ&(§g¡g§l¡lÐ3IÈ;Ó&W˜GØ!×.Ñ.¨w¸ÐS^ÐbpÑSpÐ.Örñ ,;ð ×)Ñ)¨.Ö9à×*Ñ*Ð+AÀ>Ð`dÐ*Öeä—N‘NðDÜDXÐCYð Zbðböô —‘Ð!YÔZjÐYkÐkuÐvÖwô 2°%Ð9OÔXoÓXqÔrˆKÜ*×,Ò,Ø×/Ñ/°Ö<ñ -ùòMs   È A\	É*A\	Ê2A\	Ë<\	c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   l  s   ø€ ÷ hñ h $ñ hrÐ   c                ó°  € \         P                  RV P                  P                   RV P                  P                   R24       \
        P                  P                  V P                  P                  \        4      p\
        P                  P                  V P                  P                  \        4      p\
        P                  P                  V P                  P                  \        4      p\
        P                  P                  V P                  P                  \        4      p\        4       '       d   V P                  MV P                  pV P                  '       dG   \!        V P                  V P                  P                  \#        V P                  4      '       * R7       R# V P$                  '       dV   \'        V P(                  P                  P*                  V P(                  VV P                  P                  3/ \-        4       B pR# \
        P                  P/                  V4      '       gq   \
        P                  P/                  V4      '       gL   \
        P                  P/                  V4      '       g'   \
        P                  P/                  V4      '       Ed+   Rp\        4       '       d5   \0        P2                  ! V P                  P                  \        RRR7       R# \#        V4      '       Ed(   \5        VR4      '       dö   \5        VR	4      '       dä   VP6                  ^ ,          p\9        VP6                  4      ^8”  d   \         P;                  R
4       \
        P                  P/                  V4      '       g&   \
        P                  P/                  V4      '       d8    VP=                  V P                  P                  V4       ^ RI$H%p T! . . 4      pM¼\         P;                  R\         R24       RpMœ\         P;                  R\L         R24       RpM|\
        P                  PO                  V4      '       d#   \P        PR                  PU                  VRR7      pM#\W        4        \R        PX                  ! VRRR7      pVP[                  VR4      p\        4       '       g   V'       d   V P]                  X4       R# R# R# \
        P                  P/                  \
        P                  P                  V P                  P                  \^        4      4      '       g\   \
        P                  P/                  \
        P                  P                  V P                  P                  \`        4      4      '       dO   \c        WPP                  P                  \        4       R7      p\        4       '       g   V P]                  V4       R# R# \         P;                  RV R24       R#   \>         da   p	TP@                  T,          PB                  '       d8   RTP@                  T,          PD                  PF                   R2p
\?        T
4      T	hh Rp	?	ii ; i)zFLoad the best model found during training based on the tracked metric.zLoading best model from z	 (score: z).rÝ  TFrÙ  rß  rà  zCDetected multiple active adapters, will only consider the first onez0When using prompt learning PEFT methods such as zî, setting load_best_model_at_end=True can lead to errors, it is recommended to set this to False and to load the model manually from the checkpoint directory using PeftModel.from_pretrained(base_model, <path>) after training has finished.N)Ú_IncompatibleKeysrâ  rã  rä  rå  rñ   r°  rÜ  ræ  z#Could not locate the best model at zi, if you are running a distributed training on multiple nodes, you should activate `--save_on_each_node`.)2rõ   rö   r=  r#  r—  r:  r£  r0  r}   r{   rw   rv   r‰   r  r²   r  r!   r_   r  rž   r  r®  r%   r†  ro  r“  r  rß  r	  rq  rà  r  Úpeft_configÚis_prompt_learningÚ	peft_typer�  Útorch.nn.modules.moduler  r*   rÕ  rë  rÃ   rì  r�   rí  rî  rï  rz   r|   rh   )rU  Úbest_model_pathÚbest_safe_model_pathÚbest_adapter_model_pathÚbest_safe_adapter_model_pathr²   rû  Úhas_been_loadedrü  rd  Úmsgr  r»  s   &            rÍ   r(  ÚTrainer._load_best_modell  s“  € ä�‰Ð.¨t¯z©z×/OÑ/OÐ.PÐPYÐZ^×ZdÑZd×ZpÑZpÐYqÐqsÐtÔuÜŸ'™'Ÿ,™, t§z¡z×'GÑ'GÌÓVˆÜ!Ÿw™wŸ|™|¨D¯J©J×,LÑ,LÔN_Ó`ÐÜ"$§'¡'§,¡,¨t¯z©z×/OÑ/OÔQeÓ"fÐÜ')§w¡w§|¡|°D·J±J×4TÑ4TÔVoÓ'pÐ$ä&=×&?Ò&?�×"Ò"ÀTÇZÁZˆØ×$×$Ð$Ü%Ø×"Ñ"Ø—
‘
×0Ñ0Ü'5°d·j±jÓ'AÔ#A÷ð
 ×!×!Ð!Ü)Ø× Ñ ×&Ñ&×2Ñ2Ø× Ñ ØØ—
‘
×0Ñ0ñ	ô
 'Ó(ñŠKô �G‰G�N‰N˜?×+Ò+Ü�w‰w�~‰~Ð2×3Ò3Ü�w‰w�~‰~Ð5×6Ò6Ü�w‰w�~‰~Ð:×;Ó;à"ˆOÜ&×(Ò(Ü×*Ò*ØŸ™×9Ñ9Ü$Ø!Ø#(÷	ô " %×(Ó(ä˜uÐ&7×8Ò8¼WÀUÈN×=[Ò=[Ø).×)>Ñ)>¸qÕ)A˜Ü˜u×4Ñ4Ó5¸Ô9Ü"ŸN™NÐ+pÔqäŸ7™7Ÿ>™>Ð*A×BÒBÄbÇgÁgÇnÁnÐUq×FrÒFrð*Ø %× 2Ñ 2°4·:±:×3SÑ3SÐUcÔ dõ  Rá*;¸BÀÓ*C™Kä"ŸN™Nð!LÜL`ÐKað bjð!jôð
 /4™OäŸ™ØVÔWgÐVhÐhrÐsôð +0™ô —w‘w—~‘~Ð&:×;Ò;Ü%0×%6Ñ%6×%@Ñ%@ÐAUÐ^cÐ%@Ó%d™
ä0Ô2Ü%*§Z¢Z°ÈeÐbfÔ%g˜
ð
 #(×"7Ñ"7¸
ÀEÓ"J�KÜ.×0Ò0·_Ø×3Ñ3°KÖ@ñ 6EÑ0ä�W‰W�^‰^œBŸG™GŸL™L¨¯©×)IÑ)IÔKbÓc×dÒdÔhj×hoÑho×hvÑhvÜ�G‰G�L‰L˜Ÿ™×9Ñ9Ô;MÓN÷i
ò i
ô 2Ø—z‘z×7Ñ7Ô@WÓ@YôˆKô +×,Ò,Ø×/Ñ/°Ö<ñ -ô �N‰NØ5°oÐ5Fð GPð Pöøôk $0ô *Ø#(×#4Ñ#4°^Õ#D×#W×#WÐ#Wð )[Ø+0×+<Ñ+<¸^Õ+L×+VÑ+V×+\Ñ+\Ð*]ð ^8ð)8ð %(ô +7°sÓ*;ÀÐ$Dà$)ûð*ús   Î*&W* ×*Y×5AYÙYc                ó2   <€ V ^8„  d   QhRS[ R,          RR/# ©r±   r3  Nrf  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   Ö  s#   ø€ ÷ +_ñ +_©#°­*ð +_¸ñ +_rÐ   c                óì  € Vf   R# V P                   P                  ^8”  d|   V P                   P                  p\        P                  P                  VRV R24      p\        P                  P                  V4      '       g   \        P                  RV R24       R# M\\        P                  P                  VR4      p\        P                  P                  V4      '       g   \        P                  R4       R# \        4       ;_uu_ 4        \        4        \        P                  ! VRR	7      pRRR4       \        P                  ! XR
,          4       \        P                  P!                  VR,          4       \        P                  P#                  VR,          4       \%        4       '       d   \&        P"                  ! VR,          4       V P                   P(                  \*        P,                  8H  p\        P.                  P1                  4       '       d   \3        R\        P.                  WE4       \5        4       '       d   \3        R\        P6                  WE4       \9        4       '       d   \3        R\        P:                  WE4       \=        4       '       d   \3        R\        P>                  WE4       \A        4       '       d   \3        R\        PB                  WE4       R# R#   + '       g   i     EL½; i)z9Restore random number generator states from a checkpoint.Nr¥  r¦  z$Didn't find an RNG file for process zr, if you are resuming a training that wasn't launched in a distributed fashion, reproducibility is not guaranteed.r¤  z†Didn't find an RNG file, if you are resuming a training that was launched in a distributed fashion, reproducibility is not guaranteed.T©rÞ  rž  rŸ  rñ   rÕ   ÚCUDAÚNPUÚHPUÚMLUÚMUSA)"r³   r  r  r:  r£  r0  rÕ  rõ   rö   rR   r�   rÃ   rí  r§  ÚsetstaterP  Ú	set_stateÚset_rng_staterŽ   r  r  rs   r  r(  r  rS   r�   r   rŠ   r¡  r‹   r¢  rŒ   r£  )rU  r3  r  Úrng_fileÚcheckpoint_rng_stateÚis_distributeds   &&    rÍ   rð  ÚTrainer._load_rng_stateÖ  s  € ð ÒÙà�9‰9×Ñ !Ô#Ø ŸI™I×3Ñ3ˆMÜ—w‘w—|‘| J°*¸]¸OÈ4Ð0PÓQˆHÜ—7‘7—>‘> (×+Ò+Ü—‘Ø:¸=¸/ð Jcð côñ ð ,ô —w‘w—|‘| J°Ó@ˆHÜ—7‘7—>‘> (×+Ò+Ü—‘ðBôñ ä�^�^Ü$Ô&Ü#(§:¢:¨hÀTÔ#JÐ ÷ ô 	�ŠÐ,¨XÕ6Ô7Ü
�	‰	×ÑÐ0°Õ9Ô:Ü�‰×"Ñ"Ð#7¸Õ#>Ô?Ü!×#Ò#Ü×ÒÐ1°%Õ8Ô9àŸ™×0Ñ0´L×4LÑ4LÑLˆÜ�:‰:×"Ñ"×$Ò$Ü$ V¬U¯Z©ZÐ9MÔ^Ü!×#Ò#Ü$ U¬E¯I©IÐ7KÔ\Ü!×#Ò#Ü$ U¬E¯I©IÐ7KÔ\Ü!×#Ò#Ü$ U¬E¯I©IÐ7KÔ\Ü"×$Ò$Ü$ V¬U¯Z©ZÐ9MÖ^ñ %÷% �^ˆ^ús   Ä#K"Ë"K3	c                ó2   <€ V ^8„  d   QhRS[ R,          RR/# r  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ     s#   ø€ ÷ f5ñ f5¹¸d½
ð f5Àtñ f5rÐ   c                ó¬  a€ Sf   R# V P                   '       d³   \        V P                  \        4      '       g‘   \        P
                  ! RR7      ;_uu_ 4       p\        4        V P                  P                  \        P                  ! \        P                  P                  S\        4      RR7      4       RRR4       \        X4       R# \        4       '       dA   \         P                   ! \        P                  P                  S\"        4      R,           4      EM\        P                  P%                  \        P                  P                  S\"        4      4      ;'       gÓ    \        P                  P%                  \        P                  P                  S\&        4      4      ;'       gŠ    \        P                  P)                  S4      ;'       dc    \*        ;QJ d3    V3R l\        P,                  ! S4       4       F  '       g   K   RM(	  RM$! V3R l\        P,                  ! S4       4       4      pV P.                  '       dS   \         P                   ! \        P                  P                  SRV P0                  P2                   R	\"         24      4      MTpV'       Edô   \        P                  P%                  \        P                  P                  S\        4      4      '       Edª   \5        4       '       EdÝ   V P.                  '       d�   \        4        \        P                  ! \        P                  P                  SR
V P0                  P6                   RV P0                  P2                   R	\"         24      RRR7      pVR,          pME\        4        \        P                  ! \        P                  P                  S\"        4      RRR7      p\        P
                  ! RR7      ;_uu_ 4       p\        4        \        P                  ! \        P                  P                  S\        4      RRR7      pRRR4       \        X4       \8        P:                  ! W@P0                  P<                  4       \8        P:                  ! XV P0                  P<                  4       V P>                  P                  V4       V P                  P                  V4       R# \        4       '       d#   V3R lpV P@                  PC                  V4       MøV P0                  P2                  ^8”  d   V P0                  P<                  MRpV PD                  '       dV   \G        V PH                  PJ                  PL                  V PH                  V P>                  V PN                  S3/ \Q        4       B  M^\        4        V P>                  P                  \        P                  ! \        P                  P                  S\"        4      VRR7      4       \        P
                  ! RR7      ;_uu_ 4       p\        4        V P                  P                  \        P                  ! \        P                  P                  S\        4      RR7      4       RRR4       \        X4       R# R# R#   + '       g   i     ELí; i  + '       g   i     EL}; i  + '       g   i     LI; i)z3If optimizer and scheduler states exist, load them.NTrµ  r  ú_*c              3   óì   <"  € T Fi  p\         P                  P                  \         P                  P                  SV4      4      '       g   KH  \        P                  R 4      ^ ,          V9   x € Kk  	  R# 5i)rN  N)r:  r£  rÓ  r0  ÚOPTIMIZER_NAME_BINÚsplit)rÞ   rÕ  r3  s   & €rÍ   rà   Ú8Trainer._load_optimizer_and_scheduler.<locals>.<genexpr>  sP   øé € ð á+A˜KÜŸ7™7Ÿ=™=¬¯©¯©°jÀ+Ó)N×Oô HÔ*×0Ñ0°Ó5°aÕ8¸KÖGÛ+Aùs   ƒAA4Á'A4Fz	rank*-of-r|  r  r³  rñ   rÜ  r+  c                 óš   <€ VP                  \        P                  ! \        P                  P                  S\        4      R R7      4       R# )Tr   N)rî  ro  rí  r:  r£  r0  r½  )ÚmodÚoptr3  s   &&€rÍ   Úopt_load_hookÚ<Trainer._load_optimizer_and_scheduler.<locals>.opt_load_hookK  s,   ø€ Ø×+Ñ+¬C¯HªH´R·W±W·\±\À*ÌnÓ5]ÐgkÔ,lÖmrÐ   ))r  r)  rÆ   r¤   r%  r¾  r�   rî  rÃ   rí  r:  r£  r0  r¿  rP   r‰   Úglobr½  rÕ  r"  rÓ  r  rè  rS  r³   r  rŽ   r  r  Úsend_cpu_data_to_devicer
  r+  r  Úregister_post_step_hookr  rŸ   r  r=  r®  r²   r%   )rU  r3  rÅ  Úcheckpoint_file_existsÚoptimizer_stateÚlr_scheduler_stater(  rÝ  s   &f      rÍ   rã  Ú%Trainer._load_optimizer_and_scheduler  s“  ø€ àÒÙà×$×$Ð$ä˜d×/Ñ/Ô1J×KÒKÜ×,Ò,°D×9Õ9¸_Ü,Ô.Ø×%Ñ%×5Ñ5ÜŸ
š
¤2§7¡7§<¡<°
¼NÓ#KÐZ^Ô_ô÷ :ô
 $ OÔ4Ùô '×(Ò(ô �IŠI”b—g‘g—l‘l :¬~Ó>ÀÕEÕFô —‘—‘œrŸw™wŸ|™|¨J¼ÓGÓH÷ 	ð 	Ü—7‘7—>‘>¤"§'¡'§,¡,¨zÔ;MÓ"NÓO÷	ð 	ô —G‘G—M‘M *Ó-÷ ð ß›ô ä+-¯:ª:°jÔ+AóŸŸšô ä+-¯:ª:°jÔ+Aóó ð 	ð$ ×*×*Ð*ô �IŠI”b—g‘g—l‘l :°¸4¿9¹9×;OÑ;OÐ:PÐPQÔR`ÐQaÐ/bÓcÔdà'ð 	÷
 "Ð!¤b§g¡g§n¡n´R·W±W·\±\À*ÌnÓ5]×&^Ó&^ä%×'Ó'à×.×.Ð.Ü,Ô.Ü&+§j¢jÜŸ™Ÿ™Ø&¨$¨t¯y©y×/FÑ/FÐ.GÀtÈDÏIÉI×L`ÑL`ÐKaÐabÔcqÐbrÐ(sóð &+Ø%)ô'�Oð '6°kÕ&B‘Oä,Ô.Ü&+§j¢jÜŸ™Ÿ™ Z´Ó@ÈuÐcgô'�Oô ×,Ò,°D×9Õ9¸_Ü,Ô.Ü).¯ªÜŸ™Ÿ™ Z´Ó@ÈuÐcgô*Ð&÷ :ô
 $ OÔ4ä×*Ò*¨?¿I¹I×<LÑ<LÔMÜ×*Ò*Ð+=¸t¿y¹y×?OÑ?OÔPà—‘×.Ñ.¨Ô?Ø×!Ñ!×1Ñ1Ð2DÖEä*×,Ò,õnð ×&Ñ&×>Ñ>¸}ÕMð
 8<·y±y×7KÑ7KÈaÔ7O 4§9¡9×#3Ò#3ÐUZ�LØ×+×+Ð+Ü+Ø ×,Ñ,×2Ñ2×>Ñ>Ø ×,Ñ,Ø ŸN™NØ ŸJ™JØ&ñô 3Ó4óô 1Ô2ØŸ™×6Ñ6Ü!ŸJšJÜ "§¡§¡¨Z¼Ó HÐWcÐrvôôô
 ×,Ò,°D×9Õ9¸_Ü,Ô.Ø×%Ñ%×5Ñ5ÜŸ
š
¤2§7¡7§<¡<°
¼NÓ#KÐZ^Ô_ô÷ :ô
 $ OÖ4ñC '_Ñ!÷; :×9Ð9ú÷b :×9Ð9ú÷P :×9ús'   ÁAZÏ5AZ/Ø$A[ÚZ,	Ú/[ 	Û[	c                ó2   <€ V ^8„  d   QhRS[ R,          RR/# r  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   k  s   ø€ ÷ 5ñ 5¡s¨T¥zð 5°dñ 5rÐ   c           
     óà  € Vf   R# \         P                  P                  \         P                  P                  V\        4      4      pV'       Edw   \        4       '       dË   \        P                  ! RR7      ;_uu_ 4       p\        4        \        P                  ! \         P                  P                  V\        4      RRR7      pRRR4       \        X4       \        P                  ! XV P                  P                  4       V P                   P"                  P%                  V4       R# \        P                  ! RR7      ;_uu_ 4       p\        4        V P                   P"                  P%                  \        P                  ! \         P                  P                  V\        4      RR7      4       RRR4       \        X4       R# R#   + '       g   i     EL; i  + '       g   i     L3; i)z If scaler state exists, load it.NTrµ  rñ   rÜ  r  )r:  r£  rÕ  r0  rÎ  rŽ   r%  r¾  r�   rÃ   rí  rP   r  r+  r³   r
  r  rÍ  rî  )rU  r3  r-  rÅ  Úscaler_states   &&   rÍ   rä  ÚTrainer._load_scalerk  s9  € àÒÙä!#§¡§¡´·±·±¸ZÌÓ0UÓ!VÐç!Ð!ô &×'Ò'Ü×,Ò,°D×9Õ9¸_Ü,Ô.Ü#(§:¢:ÜŸ™Ÿ™ Z´Ó=ÈEÐ`dô$�L÷ :ô
 $ OÔ4Ü×*Ò*¨<¸¿¹×9IÑ9IÔJØ× Ñ ×'Ñ'×7Ñ7¸ÖEä×,Ò,°D×9Õ9¸_Ü,Ô.Ø×$Ñ$×+Ñ+×;Ñ;ÜŸ
š
¤2§7¡7§<¡<°
¼KÓ#HÐW[Ô\ô÷ :ô
 $ OÖ4ñ% "÷ :×9Ð9ú÷ :×9ús   Â AG	Å
A(GÇ	G	ÇG-	c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   †  s   ø€ ÷ %9ñ %9 dñ %9rÐ   c                óž  a€ V P                   P                  '       g   R# . p. pV P                  P                  V P                  .,           pV P
                  P                  P                  4        EFw  w  op\        V\        4      '       g   V.p\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       Ed   V Uu. uF!  qUP                  P                  S8X  g   K  VNK#  	  pp\        Wd4       F±  w  rWVP                  R/ 4      pVP                  R/ 4      p	\        V4      ! R/ VB p
V	P                  4        F  w  r¼\!        W«V4       K  	  \        V\"        4      '       d   W n        MVP%                  V
4       V P                  P'                  \        V
4      4       K³  	  \(        P+                  R4       EKf  VP%                  S4       EKz  	  \-        V4      ^ 8”  d)   \(        P/                  RR	P1                  V4       R
24       V F  pV P                  P3                  V4       K   	  R# u upi )zLIf callback states exist and were passed in, restore their states if enabledNc              3   óT   <"  € T F  qP                   P                  S8H  x € K  	  R # 5irÙ   )r  r  )rÞ   ÚcallbackÚstored_callbacks   & €rÍ   rà   Ú/Trainer._load_callback_state.<locals>.<genexpr>‘  s"   øé € ÐeÑRdÀh×%Ñ%×.Ñ.°/ÖAÓRdùs   ƒ%(TFr³   Ú
attributeszPContinuing training from checkpoint, restoring any callbacks that were passed inzPCheckpoint included callbacks not included in current configuration. Ignoring. (r,  r™  rg  )r³   Ú'restore_callback_states_from_checkpointr2  r»   r<  r=  rí   r‘  r)  rÁ   r  r  r  Úzipr  rÈ   rå  r?   rq  Úremove_callbackrõ   rö   r	  rq  r0  r3  )rU  Ú	not_foundÚnew_callbacksÚoriginal_callbacksr~  r8  Ú
duplicatesÚcallback_datar³   r;  Únew_callbackÚ	attributer�  r9  s   &            @rÍ   rÖ  ÚTrainer._load_callback_state†  så  ø€ à�y‰y×@×@Ð@Ùàˆ	ØˆØ!×2Ñ2×<Ñ<ÀÇÁ¸~ÕMÐØ%)§Z¡Z×%BÑ%B×%HÑ%H×%JÑ!ˆO˜TÜ˜d¤D×)Ò)Ø�v�ß‹sÔeÑRdÓe�s�sŠsÔeÑRdÓe×eÓeñ .@óÙ-? ×CUÑCU×C^ÑC^ÐbqÑCq—H�HÑ-?ð ð ô 03°:Ö/DÑ+�HØ(×,Ñ,¨V°RÓ8�DØ!.×!2Ñ!2°<ÀÓ!D�JÜ#'¨¤>Ñ#9°DÑ#9�LØ,6×,<Ñ,<Ö,>Ñ(˜	Ü ¸Ö?ñ -?ä! (¬N×;Ò;à'3�à%×,Ñ,¨\Ô:à×)Ñ)×9Ñ9¼$¸|Ó:LÖMñ 0Eô —‘Ðn×oà× Ñ  ×1ñ/ &Kô0 ˆy‹>˜AÔÜ�N‰NØbÐcg×clÑclÐmvÓcwÐbxÐxyÐzôó &ˆHØ×!Ñ!×.Ñ.¨xÖ8ó &ùò/s   ÃI
Ã6I
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r±   rû  rf  N)r	   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ­  s   ø€ ÷ ñ ±cð ¸dñ rÐ   c                ó  € \        VP                  4      ^ 8w  d²   V P                  P                  ew   \        V P                  P                  4      ^ 8”  dS   \	        VP                  4      \	        V P                  P                  4      8X  d   V P                  P                  4        M#\        P                  RVP                   R24       \        VP                  4      ^ 8w  d&   \        P                  RVP                   R24       R# R# )zGLog warnings for missing or unexpected keys after loading a checkpoint.Nz8There were missing keys in the checkpoint model loaded: rN  z;There were unexpected keys in the checkpoint model loaded: )	r	  Úmissing_keysr²   Ú_keys_to_ignore_on_saver  Útie_weightsrõ   rq  Úunexpected_keys)rU  rû  s   &&rÍ   rï  Ú"Trainer._issue_warnings_after_load­  sÅ   € äˆ{×'Ñ'Ó(¨AÔ-à—
‘
×2Ñ2Ò>Ü˜Ÿ
™
×:Ñ:Ó;¸aÔ?Ü˜×0Ñ0Ó1´S¸¿¹×9[Ñ9[Ó5\Ô\à—
‘
×&Ñ&Õ(ä—‘Ð!YÐZe×ZrÑZrÐYsÐstÐuÔvÜˆ{×*Ñ*Ó+¨qÔ0Ü�N‰NØMÈk×NiÑNiÐMjÐjkÐlöñ 1rÐ   c                ó8   <€ V ^8„  d   QhRS[ R,          RS[RR/# )r±   rÓ   Nr~  rf  )rÉ   rö  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ¿  s,   ø€ ÷ 8[ñ 8[¡S¨4¥Zð 8[Éð 8[ÐY]ñ 8[rÐ   c                ó  € Vf   V P                   P                  p\        4       '       dE   \        V P                  V P                   V P
                  V P                  V P                  V4       EM¬\        4       '       dš   \        P                  ! VRR7       V P                  P                  4       pV P                   P                  '       d   V P                  WR7       \        \        P                   P#                  VR4      4      P%                  4        EMV P&                  '       dŽ   R\)        V P
                  P*                  P,                  P.                  4      9   dT   V P
                  P1                  V P                  4      pV P                   P                  '       d   V P                  WR7       EMdV P2                  '       Ed%    R\5        \6        P8                  ! V P                  P:                  4      P<                  P?                  4       4      9   pV P@                  PB                  PE                  R/ 4      PE                  R	R4      ^8H  pV'       dA   \G        V P                  4      '       d&   V'       d   V P@                  PI                  RR
7      pM%V P
                  P1                  V P@                  4      pV P                   P                  '       d   V P                  WR7       M-V P                   P                  '       d   V P                  V4       V P                   PV                  '       d4   V'       g*   V PW                  RV P                   PX                  R7       R# R# R#   \J         dŽ    \L        PO                  R4       T P                   P                  '       d   T P                  T/ R7       \Q        T P                   P                  T\R        \T        .4       T P                  P;                  T4        Lèi ; i)zm
Will save the model, so you can reload it using `from_pretrained()`.

Will only save from the main process.
NTré   ©r»  zuser_content.ptÚFULL_STATE_DICTr¹  Úzero_optimizationÚstagerº  z| stage3_gather_16bit_weights_on_model_save=false. Saving the full checkpoint instead, use zero_to_fp32.py to recover weightsz
Model save)Úcommit_messageÚrevision)-r³   rÓ   rŽ   r+   r²   r  r·   rS  r‰   r:  r;  r  r»  r9  Ú_saver   r£  r0  Útouchr  rÉ   r=  r®  rÈ  Úget_state_dictr  r  rÛ   r  rÃ  r  r%  rã   rî   r  r_   Ú$_zero3_consolidated_16bit_state_dictr  rõ   rq  rQ   r}   r{   r7  Úhub_revision)rU  rÓ   r~  r»  rÇ  Úzero3_shardings   &&&   rÍ   r€  ÚTrainer.save_model¿  sÞ  € ð ÒØŸ™×-Ñ-ˆJä!×#Ò#ÜØ—
‘
˜DŸI™I t×'7Ñ'7¸×9NÑ9NÐPT×PkÑPkÐmwöô %×&Ò&ä�KŠK˜
¨TÕ2Ø×+Ñ+×6Ñ6Ó8ˆJØ�y‰y×$×$Ð$Ø—
‘
˜:�
Ô=Ü”—‘—‘˜jÐ*;Ó<Ó=×CÑCÖEØ×!×!Ð!Ø ¤C¨×(8Ñ(8×(>Ñ(>×(JÑ(J×(ZÑ(ZÓ$[Ô[Ø!×-Ñ-×<Ñ<¸T¿Z¹ZÓH�
Ø—9‘9×(×(Ð(Ø—J‘J˜z�JÔAùØ×&×&Ñ&ð?Ø3NÔRUÜ×%Ò% d×&8Ñ&8×&HÑ&HÓI×TÑT×YÑYÓ[óSñ 4Ð0ð "&§¡×!6Ñ!6×!:Ñ!:Ð;NÐPRÓ!S×!WÑ!WÐX_ÐaeÓ!fÐjkÑ!k�ß3¼ÀtÇzÁz×8RÒ8R×Weð "&§¡×!TÑ!TÐosÐ!TÓ!t‘Jà!%×!1Ñ!1×!@Ñ!@ÀÇÁÓ!P�JØ—9‘9×(×(Ð(Ø—J‘J˜z�JÔAøð �Y‰Y×"×"Ð"Ø�J‰J�zÔ"ð �9‰9× × Ð ¯Ø×Ñ¨LÀ4Ç9Á9×CYÑCYÐÖZñ *8Ñ øô ô 	?Ü—‘ð:ôð —9‘9×(×(Ð(Ø—J‘J˜z°b�JÔ9ä'¨¯	©	×(=Ñ(=¸zÌLÔZkÐKlÔmØ×"Ñ"×2Ñ2°:Ö>ð	?ús'   ÇB1M, É=AM, ËM, Í,;PÎ(APÐPc                óF   <€ V ^8„  d   QhRS[ R,          RS[R,          RR/# )r±   rÓ   Nr»  rf  )rÉ   rÀ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ù  s0   ø€ ÷ %Lñ %L¡ d¥
ð %L¹tÀd½{ð %LÐVZñ %LrÐ   c                óø  € Ve   TMV P                   P                  p\        P                  ! VRR7       \        P                  RV 24       \        4       '       g   \        3M\        \        3p\        V P                  V4      '       gê   Vf   V P                  P                  4       p\        V P                  P                  V P                  RR7      V4      '       d9   V P                  P                  V P                  RR7      P                  WR7       Mx\        P                  R4       \        P                   P#                  V\        P$                  P'                  V\(        4      R	R
/R7       MV P                  P                  WR7       V P*                  e   V P*                  P                  V4       M|V P,                  eo   \/        V P,                  R4      '       dS   V P,                  P0                  e;   \        P                  R4       V P,                  P0                  P                  V4       \         P2                  ! V P                   \        P$                  P'                  V\4        4      4       R# )zHSave model weights, configuration, and processing class to `output_dir`.NTré   zSaving model checkpoint to FrØ  rP  zETrainer.model is not a `PreTrainedModel`, only saving its state dict.rË   Úpt)ÚmetadataÚ	tokenizerzWSaving Trainer.data_collator.tokenizer by default as Trainer.processing_class is `None`)r³   rÓ   r:  r;  rõ   rö   r‡   r1   r–   r)  r²   r»  r  r2   Úsave_pretrainedrë  rÃ   Ú	save_filer£  r0  r{   r·   r´   r  ra  r¬  ÚTRAINING_ARGS_NAME)rU  rÓ   r»  Úsupported_classess   &&& rÍ   rV  ÚTrainer._saveù  sÕ  € ð $.Ò#9‘Z¸t¿y¹y×?SÑ?Sˆ
Ü
�Š�J¨Õ.Ü�‰Ð1°*°Ð>Ô?ä6G×6IÒ6Iœ_Ñ.ÔP_ÔajÐOkÐô ˜$Ÿ*™*Ð&7×8Ò8ØÒ!Ø!ŸZ™Z×2Ñ2Ó4�
ä˜$×*Ñ*×7Ñ7¸¿
¹
ÐW\Ð7Ó]Ð_p×qÒqØ× Ñ ×-Ñ-¨d¯j©jÈUÐ-ÓS×cÑcØð dõ ô —‘ÐcÔdÜ×!Ñ!×+Ñ+Ø¤§¡§¡¨ZÔ9JÓ KÐW_ÐaeÐVfð ,õ ð �J‰J×&Ñ& zÐ&ÔIà× Ñ Ò,Ø×!Ñ!×1Ñ1°*Õ=à×ÑÒ*Ü˜×*Ñ*¨K×8Ò8Ø×"Ñ"×,Ñ,Ò8ä�K‰KÐqÔrØ×Ñ×(Ñ(×8Ñ8¸ÔDô 	�
Š
�4—9‘9œbŸg™gŸl™l¨:Ô7IÓJÖKrÐ   c                óN   <€ V ^8„  d   QhRS[ S[S[3,          RS[R,          RR/# )r±   rk  r¶  Nrf  )rÀ   rÉ   r‡  )rË   rÌ   s   "€rÍ   rÎ   rÏ   "  s4   ø€ ÷ _ñ _™™S¡%˜ZÕ(ð _±e¸dµlð _Èdñ _rÐ   c                ób  € V P                   P                  e   V P                   P                  VR&   V P                  P                  R8w  da   V P                   P                  VR&   VeD   V P                   P                  V P
                  ,
          pVP                  \        RW#R7      4       / VCRV P                   P                  /CpV P                   P                  P                  V4       V P                  P                  V P                  V P                   V P                  V4      V n        R# )zø
Log `logs` on the various objects watching training.

Subclass and override this method to inject custom behavior.

Args:
    logs (`dict[str, float]`):
        The values to log.
    start_time (`Optional[float]`):
        The start of training.
Nr²  rj  rÁ  r©  )Ú
num_tokensr  )r=  r²  r³   rí  rÁ  rÂ  r•  rn   r¾  Úlog_historyrq  r2  Úon_logr<  )rU  rk  r¶  Úcurrent_session_num_tokensr  s   &&&  rÍ   r'  ÚTrainer.log"  sá   € ð �:‰:×ÑÒ'Ø ŸJ™J×,Ñ,ˆD�‰MØ�9‰9×2Ñ2°dÔ:Ø,0¯J©J×,LÑ,LˆDÐ(Ñ)ØÒ%Ø-1¯Z©Z×-MÑ-MÐPT×PsÑPsÕ-sÐ*Ø—‘œM¨'°:ÔeÔfà9�DÐ9˜& $§*¡*×"8Ñ"8Ñ9ˆØ�
‰
×Ñ×%Ñ% fÔ-Ø×,Ñ,×3Ñ3°D·I±I¸t¿z¹zÈ4Ï<É<ÐY]Ó^ˆŽrÐ   c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   :  s   ø€ ÷ 	"ñ 	"˜Dñ 	"rÐ   c                ó¤  € V P                   P                  \        P                  8X  ds   V P                  ;P
                  \        V P                  .V P                   P                  R7      P                  4       P                  4       ,          un        ^ V n        R# V P                  ;P
                  V P                  ,          un        ^ V n        R# )zGStore the number of floating-point operations that went into the model.r°  N)r³   r  rs   r  r=  r!  rI   rA  r
  rV  r�  r×  s   &rÍ   r&  ÚTrainer.store_flos:  s‹   € à�9‰9×"Ñ"¤l×&>Ñ&>Ô>Ø�J‰J×!Ò!Ü-¨t×/@Ñ/@Ð.AÈ$Ï)É)×JZÑJZÔ[×_Ñ_Óa×fÑfÓhõÕ!ð !"ˆDÖà�J‰J×!Ò! T×%6Ñ%6Õ6Õ!Ø !ˆDÖrÐ   c                ó`   <€ V ^8„  d   QhRS[ S[S[P                  S[,          3,          RS[/# r—  )rÀ   rÉ   rÃ   rÊ   r	   rí  )rË   rÌ   s   "€rÍ   rÎ   rÏ   E  s.   ø€ ÷ ñ ©©c±5·<±<Á#Õ3EÐ.EÕ)Fð É3ñ rÐ   c                óô   € \        V P                  RR4      ;q!9   d[   \        V P                  R4      '       d?   ^W,          P                  4       ,          V P                  P	                  RR7      ,          # ^ # )a¤  
For models that inherit from [`PreTrainedModel`], uses that method to compute the number of floating point
operations for every backward + forward pass. If using another model, either implement such a method in the
model or subclass and override this method.

Args:
    inputs (`dict[str, torch.Tensor | Any]`):
        The inputs and targets of the model.

Returns:
    `int`: The number of floating-point operations.
rê  rŸ  Únum_parametersT)Úexclude_embeddings)r  r²   r  rX  rs  )rU  r  Ú
main_inputs   && rÍ   r   ÚTrainer.floating_point_opsE  sj   € ô " $§*¡*Ð.?ÀÓMÐMˆJÔXÔ]dØ�J‰JÐ(÷^
ò ^
ð �vÕ)×/Ñ/Ó1Õ1°D·J±J×4MÑ4MÐaeÐ4MÓ4fÕfÐfÙrÐ   c                ó2   <€ V ^8„  d   QhRS[ R,          RR/# )r±   ÚtokenNrf  r)  )rË   rÌ   s   "€rÍ   rÎ   rÏ   Z  s   ø€ ÷ %ñ %¡#¨¥*ð %¸ñ %rÐ   c                óÊ  € V P                  4       '       g   R# V P                  P                  f9   \        V P                  P                  4      P                  4       P                  pMV P                  P                  pVe   TMV P                  P                  p\        4       P                  W!V P                  P                  RR7      pVP                  V n        RV n        R# )z5
Initializes a git repo in `self.args.hub_model_id`.
NT)rx  Úprivaterê   )rì   r³   r6  r   rÓ   ÚabsoluterL  Ú	hub_tokenrƒ   Úcreate_repoÚhub_private_repoÚrepo_idÚpush_in_progress)rU  rx  Ú	repo_nameÚrepo_urls   &&  rÍ   r8  ÚTrainer.init_hf_repoZ  s¨   € ð
 ×)Ñ)×+Ò+Ùà�9‰9×!Ñ!Ò)Ü˜TŸY™Y×1Ñ1Ó2×;Ñ;Ó=×BÑB‰IàŸ	™	×.Ñ.ˆIàÒ*‘°·	±	×0CÑ0CˆÜ“8×'Ñ'¨	ÈÏ	É	×HbÑHbÐmqÐ'ÓrˆØ$×,Ñ,ˆÔØ $ˆÖrÐ   c                ór  <€ V ^8„  d   QhRS[ R,          RS[ R,          RS[ S[S[ ,          ,          R,          RS[ R,          RS[ R,          RS[ S[S[ ,          ,          R,          RS[ S[S[ ,          ,          R,          R	S[ S[S[ ,          ,          R,          R
S[ S[S[ ,          ,          R,          RR/
# )r±   ÚlanguageNÚlicenseÚtagsr:  Úfinetuned_fromÚtasksÚdataset_tagsrÐ  Údataset_argsrf  )rÉ   rÁ   )rË   rÌ   s   "€rÍ   rÎ   rÏ   l  sØ   ø€ ÷ Hhñ Hhá˜•*ðHhñ �t•ðHhñ ‘D™•I�o Õ$ð	Hhñ
 ˜$•JðHhñ ˜d�
ðHhñ ‘T™#•Y� Õ%ðHhñ ™D¡�I•o¨Õ,ðHhñ ‘t™C•y• 4Õ'ðHhñ ™D¡�I•o¨Õ,ðHhð 
ñHhrÐ   c
                ó´  € V P                  4       '       g   R# \        P                  P                  V P                  P
                  R4      p
Rp\        P                  P                  V
4      '       d¢   \        P                  ! V
4      P                  P                  R4      pVR8H  p\        P                  ! V
4      P                  P                  pVe@   Ve<   \        V\        4      '       d   V.pV F  pWã9  g   K  VP                  V4       K  	  \        P                   ! V VVVVVVVVV	R7
      pVP#                  4       p\%        V
R4      ;_uu_ 4       pVP'                  V4       RRR4       V'       dK   V P(                  P+                  V P,                  4      P/                  V P                  P
                  4       R# R#   + '       g   i     Ld; i)aM  
Creates a draft of a model card using the information available to the `Trainer`.

Args:
    language (`str`, *optional*):
        The language of the model (if applicable)
    license (`str`, *optional*):
        The license of the model. Will default to the license of the pretrained model used, if the original
        model given to the `Trainer` comes from a repo on the Hub.
    tags (`str` or `list[str]`, *optional*):
        Some tags to be included in the metadata of the model card.
    model_name (`str`, *optional*):
        The name of the model.
    finetuned_from (`str`, *optional*):
        The name of the model used to fine-tune this one (if applicable). Will default to the name of the repo
        of the original model given to the `Trainer` (if it comes from the Hub).
    tasks (`str` or `list[str]`, *optional*):
        One or several task identifiers, to be included in the metadata of the model card.
    dataset_tags (`str` or `list[str]`, *optional*):
        One or several dataset tags, to be included in the metadata of the model card.
    dataset (`str` or `list[str]`, *optional*):
        One or several dataset identifiers, to be included in the metadata of the model card.
    dataset_args (`str` or `list[str]`, *optional*):
       One or several dataset arguments, to be included in the metadata of the model card.
Nz	README.mdFÚlibrary_nameÚpeft)	r…  r†  r‡  r:  rˆ  r‰  rŠ  rÐ  r‹  Úw)rì   r:  r£  r0  r³   rÓ   r†  r   rí  r~  r  r‡  r)  rÉ   rq  r0   Úfrom_trainerÚto_model_cardÚopenÚwriter  r2   r²   Úcreate_or_update_model_card)rU  r…  r†  r‡  r:  rˆ  r‰  rŠ  rÐ  r‹  Úmodel_card_filepathÚis_peft_libraryr�  Úexisting_tagsrÚ  Útraining_summaryÚ
model_cardrØ  s   &&&&&&&&&&        rÍ   Úcreate_model_cardÚTrainer.create_model_cardl  su  € ðJ ×)Ñ)×+Ò+Ùä Ÿg™gŸl™l¨4¯9©9×+?Ñ+?ÀÓMÐØˆÜ�7‰7�>‰>Ð-×.Ò.Ü$Ÿ>š>Ð*=Ó>×CÑC×GÑGÈÓWˆLØ*¨fÑ4ˆOô &ŸNšNÐ+>Ó?×DÑD×IÑIˆMØÒ MÒ$=Ü˜d¤C×(Ò(Ø ˜6�DÛ(�CØ–ØŸ™ CÖ(ñ )ô +×7Ò7ØØØØØ!Ø)ØØ%ØØ%ô
Ðð &×3Ñ3Ó5ˆ
ÜÐ% s×+Ô+¨qØ�G‰G�JÔ÷ ,÷ Ø×Ñ×)Ñ)¨$¯*©*Ó5×QÑQÐRV×R[ÑR[×RfÑRfÖgñ ÷ ,×+ús   ÅGÇG	c          
      ób   <€ V ^8„  d   QhRS[ R,          RS[RS[ R,          RS[ R,          RS[/# )r±   rT  NÚblockingrx  rU  rf  )rÉ   rö  r   )rË   rÌ   s   "€rÍ   rÎ   rÏ   ¶  sP   ø€ ÷ P
ñ P
á˜d�
ðP
ñ ðP
ñ �T�zð	P
ñ
 ˜•*ðP
ñ 
ñP
rÐ   c           
     ó¾  € V P                   P                  V P                  V P                  V P                  4       VP                  RR4      pVf‹   V P                  P                  '       do   V P                  P                  f+   \        V P                  P                  4      P                  pM,V P                  P                  P                  R4      R,          pVe   TMV P                  P                  pV P                  f   V P                  VR7       V P                  RR7       V P                  4       '       g   R# \!        V P"                  RR4      e{   RV9  d   . VR&   \%        VR,          \&        4      '       d   VR,          .VR&   V P"                  P(                   F*  pWuR,          9  g   K  VR,          P+                  V4       K,  	  V P,                  ! RRV/VB  Vf   V P                  P.                  pV P1                  4        \3        4       P5                  V P                  V P                  P                  VVV'       * R	\6         R
2.VR7      # )u‘  
Upload `self.model` and `self.processing_class` to the ðŸ¤— model hub on the repo `self.args.hub_model_id`.

Parameters:
    commit_message (`str`, *optional*, defaults to `"End of training"`):
        Message to commit while pushing.
    blocking (`bool`, *optional*, defaults to `True`):
        Whether the function should return only when the `git push` has finished.
    token (`str`, *optional*, defaults to `None`):
        Token with write permission to overwrite Trainer's original args.
    revision (`str`, *optional*):
        The git revision to commit from. Defaults to the head of the "main" branch.
    kwargs (`dict[str, Any]`, *optional*):
        Additional keyword arguments passed along to [`~Trainer.create_model_card`].

Returns:
    The URL of the repository where the model was pushed if `blocking=False`, or a `Future` object tracking the
    progress of the commit if `blocking=True`.
r:  NÚ/)rx  Tr}  Ú
model_tagsr‡  r   ú-*©r  Úfolder_pathrT  rx  Úrun_as_futureÚignore_patternsrU  rï  rg  )r2  Úon_push_beginr³   r=  r<  r¼  r9  r6  r   rÓ   rL  r#  r|  r8  r€  rì   r  r²   r)  rÉ   r   rq  rš  rZ  r/  rƒ   Úupload_folderrT   )rU  rT  r�  rx  rU  r¡  r:  Ú	model_tags   &&&&&,  rÍ   r7  ÚTrainer.push_to_hub¶  sò  € ð6 	×Ñ×+Ñ+¨D¯I©I°t·z±zÀ4Ç<Á<ÔPà—Z‘Z ¨dÓ3ˆ
ØÒ $§)¡)×"7×"7Ð"7Ø�y‰y×%Ñ%Ò-Ü! $§)¡)×"6Ñ"6Ó7×<Ñ<‘
à!ŸY™Y×3Ñ3×9Ñ9¸#Ó>¸rÕB�
ØÒ*‘°·	±	×0CÑ0Cˆð ×ÑÒ$Ø×Ñ EÐÔ*ð 	�‰ tˆÔ,ð ×)Ñ)×+Ò+Ùô
 �4—:‘:˜|¨TÓ2Ò>Ø˜VÔ#Ø!#��v‘ô ˜& �.¬#×.Ò.Ø"(¨¥.Ð!1��v‘à!ŸZ™Z×2Ô2�	Ø¨6¥NÖ2Ø˜6•N×)Ñ)¨)Ö4ñ 3ð 	×ÒÑ?¨*Ð?¸Ò?àÒØ—y‘y×-Ñ-ˆHð 	×!Ñ!Ô#ä‹x×%Ñ%Ø×%Ñ%ØŸ	™	×,Ñ,Ø)ØØ&œ,Ø!Ô&;Ð%<¸BÐ#?Ð@Øð &ó 
ð 	
rÐ   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r±   rŒ  rf  Nr)  )rË   rÌ   s   "€rÍ   rÎ   rÏ     s   ø€ ÷ C9ñ C9±sð C9¸tñ C9rÐ   c           
     óh
  € V P                  4       '       d*   V P                  P                  \        P                  8X  d   R# V P                  P
                  '       g1   V P                  e#   V P                  P                  4       '       g   R# V P                  P                  V P                  V P                  V P                  4       V P                  P                  p\        \        \        \         .p\"        \$        3 FÔ  p\&        P(                  P+                  W4      p\&        P(                  P-                  V4      '       g   KI  VP/                  V4       \1        V4      ;_uu_ 4       p\2        P4                  ! VP7                  4       4      pRRR4       \9        \;        XR,          P=                  4       4      4      pVP?                  V4       KÖ  	  \A        4       '       d!   VP?                  \B        \D        \F        .4       V F˜  p	\&        P(                  P-                  \&        P(                  P+                  W4      4      '       g   KG  \H        PJ                  ! \&        P(                  P+                  W4      \&        P(                  P+                  W)4      4       Kš  	  V PL                  e   V PL                  PO                  V4       \P        PR                  ! V P                  \&        P(                  P+                  V\T        4      4       V P                  PV                  \X        PZ                  8X  d   RV P                  P\                   2p
M"R\_        V P                  P`                  4       2p
\c        4       Pe                  V Pf                  VV
V P                  Ph                  RR\j         R2.V P                  Pl                  R7      pV.pV P                  P                  \        Pn                  \        Pp                  39   d«   V P                  P                  \        Pn                  8X  d   R	M\s        V4      Pt                  p\c        4       Pe                  V Pf                  VVV
R
,           V P                  Ph                  RV P                  Pl                  R7      pVP/                  V4       V P                  e!   V P                  P                  4       '       d   \w        V4      V n        R# V P                  Px                  P?                  V4       R#   + '       g   i     EL–; i)zDPush model and checkpoint files to the Hub from a checkpoint folder.NÚ
weight_mapzTraining in progress, step zTraining in progress, epoch Tr   r¡  r¢  zlast-checkpointz, checkpoint)r  r£  Úpath_in_reporT  rx  r¤  rU  )=rì   r³   Úhub_strategyrY   ÚENDÚhub_always_pushr€  Úis_doner2  r¦  r=  r<  rÓ   rx   ry   r}   r{   r|   rz   r:  r£  r0  rÕ  rq  r’  ÚjsonÚloadsÚreadrÁ   r  r  Úextendr‡   ru   rw   rv   r,  Úcopyr·   rb  rÃ   r¬  rd  rt  r\   r�  r¾  rí  r²  rƒ   r§  r6  r|  rT   rZ  Ú
CHECKPOINTÚALL_CHECKPOINTSr   rL  r   Újobs)rU  rŒ  rÓ   Úmodeling_filesÚ
index_fileÚ
index_pathrØ  ÚindexÚshard_filesÚmodeling_filerT  Úmodel_push_jobÚ	push_jobsr­  Úcheckpoint_pushs   &&             rÍ   r‹  ÚTrainer._push_from_checkpoint  s�  € à×)Ñ)×+Ò+¨t¯y©y×/EÑ/EÌÏÉÔ/XÙà�y‰y×(×(Ð(¨T×-BÑ-BÒ-NÐW[×WlÑWl×WtÑWt×WvÒWvÙà×Ñ×+Ñ+¨D¯I©I°t·z±zÀ4Ç<Á<ÔPØ—Y‘Y×)Ñ)ˆ
ä%Ô'=¼|ÔM^Ð_ˆä-Ô/FÓGˆJÜŸ™Ÿ™Ð&7ÓDˆJÜ�w‰w�~‰~˜j×)Ô)Ø×%Ñ% jÔ1Ü˜*×%Ô%¨Ü ŸJšJ q§v¡v£xÓ0�E÷ &ä"¤3 u¨\Õ':×'AÑ'AÓ'CÓ#DÓE�Ø×%Ñ% kÖ2ñ Hô ×ÒØ×!Ñ!Ô#6Ô8LÔNgÐ"hÔiÛ+ˆMÜ�w‰w�~‰~œbŸg™gŸl™lÐ+<ÓL×MÔMÜ—’œBŸG™GŸL™LÐ):ÓJÌBÏGÉGÏLÉLÐYcÓLsÖtñ ,ð × Ñ Ò,Ø×!Ñ!×1Ñ1°*Ô=ä�
Š
�4—9‘9œbŸg™gŸl™l¨:Ô7IÓJÔKà�9‰9×"Ñ"¤l×&8Ñ&8Ô8Ø:¸4¿:¹:×;QÑ;QÐ:RÐS‰Nà;¼CÀÇ
Á
×@PÑ@PÓ<QÐ;RÐSˆNä›×/Ñ/Ø×%Ñ%Ø"Ø)Ø—)‘)×%Ñ%ØØ!Ô&;Ð%<¸BÐ#?Ð@Ø—Y‘Y×+Ñ+ð 0ó 
ˆð $Ð$ˆ	à�9‰9×!Ñ!¤k×&<Ñ&<¼k×>YÑ>YÐ%ZÔZà%)§Y¡Y×%;Ñ%;¼{×?UÑ?UÔ%UÑ!Ô[_Ð`qÓ[r×[wÑ[wð ô %›h×4Ñ4Ø×)Ñ)Ø-Ø)Ø-°Õ>Ø—i‘i×)Ñ)Ø"ØŸ™×/Ñ/ð 5ó ˆOð ×Ñ˜_Ô-à× Ñ Ò(¨D×,AÑ,A×,IÑ,I×,KÒ,KÜ$2°9Ó$=ˆDÖ!à×!Ñ!×&Ñ&×-Ñ-¨iÖ8÷e &×%Ð%ús   Å.%T Ô T1c                ó   <€ V ^8„  d   QhRR/# re  rg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   M  s   ø€ ÷ 4ñ 4 dñ 4rÐ   c                óð   € \        V R4      '       g   R# V P                  eT   V P                  P                  4       '       g2   \        P	                  R4       V P                  P                  4        R# R# R# )z5Wait for any in-progress push to the Hub to complete.r€  Nz\Waiting for the current checkpoint push to be finished, this might take a couple of minutes.)r  r€  r±  rõ   rö   Úwait_until_doner×  s   &rÍ   r/  ÚTrainer._finish_current_pushM  s[   € ä�tÐ/×0Ò0ÙØ× Ñ Ò,°T×5JÑ5J×5RÑ5R×5TÒ5TÜ�K‰KÐvÔwØ×!Ñ!×1Ñ1Ö3ñ 6UÑ,rÐ   c                ó<  <€ V ^8„  d   QhRS[ R.S[S[S[3,          3,          R,          RS[ S[S[S[3,          .S[3,          R,          RS[RS[S[S[,          ,          RS[S[,          R,          RS[ R.S[3,          R,          R	S[S[S[,          ,          /# )
r±   Úhp_spacezoptuna.TrialNÚcompute_objectiveÚn_trialsÚ	directionr’  r?  rf  )r   rÀ   rÉ   r‡  rí  rÁ   rX   rU   )rË   rÌ   s   "€rÍ   rÎ   rÏ   W  s½   ø€ ÷ Oñ Oá˜NÐ+©T±#±u°*Õ-=Ð=Õ>ÀÕEðOñ $¡T©#©u¨*Õ%5Ð$6¹Ð$=Õ>ÀÕEðOñ ð	Oñ
 ™™c�•?ðOñ ‘Õ&¨Õ-ðOñ ˜>Ð*©CÐ/Õ0°4Õ7ðOñ 
‘4™•=Õ	 ñOrÐ   c                óL  € Vf   \        4       p\        V4      p\        V,          ! 4       pVP                  4        WPn        V P
                  f   \        R4      hVf   VP                  MTV n        W`n	        Vf   \        MTV n        VP                  ! WV3/ VB p	RV n        V	# )a  
Launch a hyperparameter search using `optuna` or `Ray Tune`. The optimized quantity is determined
by `compute_objective`, which defaults to a function returning the evaluation loss when no metric is provided,
the sum of all metrics otherwise.

<Tip warning={true}>

To use this method, you need to have provided a `model_init` when initializing your [`Trainer`]: we need to
reinitialize the model at each new run. This is incompatible with the `optimizers` argument, so you need to
subclass [`Trainer`] and override the method [`~Trainer.create_optimizer_and_scheduler`] for custom
optimizer/scheduler.

</Tip>

Args:
    hp_space (`Callable[["optuna.Trial"], dict[str, float]]`, *optional*):
        A function that defines the hyperparameter search space. Will default to
        [`~trainer_utils.default_hp_space_optuna`] or [`~trainer_utils.default_hp_space_ray`]
        depending on your backend.
    compute_objective (`Callable[[dict[str, float]], float]`, *optional*):
        A function computing the objective to minimize or maximize from the metrics returned by the `evaluate`
        method. Will default to [`~trainer_utils.default_compute_objective`].
    n_trials (`int`, *optional*, defaults to 100):
        The number of trial runs to test.
    direction (`str` or `list[str]`, *optional*, defaults to `"minimize"`):
        If it's single objective optimization, direction is `str`, can be `"minimize"` or `"maximize"`, you
        should pick `"minimize"` when optimizing the validation loss, `"maximize"` when optimizing one or
        several metrics. If it's multi objectives optimization, direction is `list[str]`, can be List of
        `"minimize"` and `"maximize"`, you should pick `"minimize"` when optimizing the validation loss,
        `"maximize"` when optimizing one or several metrics.
    backend (`str` or [`~training_utils.HPSearchBackend`], *optional*):
        The backend to use for hyperparameter search. Will default to optuna or Ray Tune, depending
        on which one is installed. If all are installed, will default to optuna.
    hp_name (`Callable[["optuna.Trial"], str]]`, *optional*):
        A function that defines the trial/run name. Will default to None.
    kwargs (`dict[str, Any]`, *optional*):
        Additional keyword arguments for each backend:

        - `optuna`: parameters from
          [optuna.study.create_study](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.create_study.html)
          and also the parameters `timeout`, `n_jobs` and `gc_after_trial` from
          [optuna.study.Study.optimize](https://optuna.readthedocs.io/en/stable/reference/generated/optuna.study.Study.html#optuna.study.Study.optimize)
        - `ray`: parameters from [tune.run](https://docs.ray.io/en/latest/tune/api_docs/execution.html#tune-run).
          If `resources_per_trial` is not set in the `kwargs`, it defaults to 1 CPU core and 1 GPU (if available).
          If `progress_reporter` is not set in the `kwargs`,
          [ray.tune.CLIReporter](https://docs.ray.io/en/latest/tune/api/doc/ray.tune.CLIReporter.html) is used.
Returns:
    [`trainer_utils.BestRun` or `list[trainer_utils.BestRun]`]: All the information about the best run or best
    runs for multi-objective optimization. Experiment summary can be found in `run_summary` attribute for Ray
    backend.
NzXTo use hyperparameter search, you need to pass your model through a model_init function.)r   rX   r   Úensure_availabler@  r¸   r  Údefault_hp_spacerÉ  r?  rb   rÊ  rr  )
rU  rÉ  rÊ  rË  rÌ  r’  r?  r¡  Úbackend_objÚbest_runs
   &&&&&&&,  rÍ   Úhyperparameter_searchÚTrainer.hyperparameter_searchW  s¤   € ðz Š?Ü/Ó1ˆGÜ! 'Ó*ˆÜ8¸ÖAÓCˆØ×$Ñ$Ô&Ø!(ÔØ�?‰?Ò"ÜØjóð ð 9AÒ8H˜×4Ò4ÈhˆŒØŒØ>OÒ>WÕ!:Ð]nˆÔà—?’? 4°9ÑGÀÑGˆà!%ˆÔØˆrÐ   c                ó8   <€ V ^8„  d   QhRRRS[ P                  /# rg  rz  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ¨  s#   ø€ ÷ ñ Ð%Kð ÑWY×W`ÑW`ñ rÐ   c                óÆ   € \        V P                  4      pV^ 8X  d   V P                  4       pM$V^8X  d   V P                  V4      pM\        R4      hVf   \        R4      hV# )zdInvoke `model_init` to get a fresh model instance, optionally conditioned on a hyperparameter trial.z'model_init should have 0 or 1 argument.z"model_init should not return None.)ri   r¸   r  )rU  r”  Úmodel_init_argcountr²   s   &&  rÍ   r   ÚTrainer.call_model_init¨  s]   € ä1°$·/±/ÓBÐØ !Ô#Ø—O‘OÓ%‰EØ  AÔ%Ø—O‘O EÓ*‰EäÐHÓIÐIàŠ=ÜÐCÓDÐDàˆrÐ   c                ó"   <€ V ^8„  d   QhRRRR/# )r±   r”  r•  rf  Nrg  )rË   rÌ   s   "€rÍ   rÎ   rÏ   ·  s   ø€ ÷ 42ñ 42Ð&Lð 42ÐQUñ 42rÐ   c                ó¢  € Wn         V P                  e   Vf   R# V P                  \        P                  8X  d   V P	                  V4      pMUV P                  \        P
                  8X  d   TpVP                  RR4       M!V P                  \        P                  8X  d   TpXP                  4        F~  w  r4\        V P                  V4      '       g   \        P                  RV R24       K<  \        V P                  VR4      pVe   \        V4      ! V4      p\        V P                  W44       K€  	  V P                  \        P                  8X  d#   \        P!                  RVP"                   24       V P                  \        P                  8X  d   \        P!                  RV 24       V P$                  '       dè   V P                  P&                  f   \)        R4      hT P*                  P-                  4        ^ RIHp ^ R	IHp V! V P                  P&                  4      V P                  n        V P                  P6                  P9                  V P                  4       V! V P                  P6                  R
7      V P                  n        \=        4       P?                  4        V P                  P@                  V n!        V PE                  4        R# )zRSet up training arguments and accelerator state for a hyperparameter search trial.Nrq  zTrying to set zY in the hyperparameter search but there is no corresponding field in `TrainingArguments`.zTrial: zW&B Sweep parameters: z7For sweeps with deepspeed, `args.deepspeed` must be set)ÚDeepSpeedPlugin)ÚHfTrainerDeepSpeedConfig)r”  )#Ú_trialr@  rX   ri  rÉ  rk  r¼  rp  r‘  r  r³   rõ   rq  r  rÈ   rå  rö   rk  r  rã   r  r  r¹  rž  rÚ  Ú#transformers.integrations.deepspeedrÛ  r±  Útrainer_config_processr‰  r™   Ú_reset_staterD  rE  rù   )rU  r”  rk  r;  r�  Úold_attrrÚ  rÛ  s   &&      rÍ   rž  ÚTrainer._hp_search_setup·  s  € àŒà×!Ñ!Ò)¨Uª]ÙØ×!Ñ!¤_×%;Ñ%;Ô;Ø—]‘] 5Ó)‰FØ×#Ñ#¤×':Ñ':Ô:ØˆFØ�J‰J�w Õ%Ø×#Ñ#¤×'<Ñ'<Ô<ØˆFà Ÿ,™,ž.‰JˆCÜ˜4Ÿ9™9 c×*Ò*Ü—‘Ø$ S Eð *,ð ,ôñ Ü˜tŸy™y¨#¨tÓ4ˆHàÒ#Ü˜Xœ uÓ-�ä�D—I‘I˜sÖ*ñ )ð ×!Ñ!¤_×%;Ñ%;Ô;Ü�K‰K˜' %§,¡, Ð0Ô1Ø×!Ñ!¤_×%:Ñ%:Ô:Ü�K‰KÐ0°°Ð8Ô9Ø×$×$Ð$Ø�y‰y×"Ñ"Ò*Ü Ð!ZÓ[Ð[à×Ñ×(Ñ(Ô*õ 9åTá,DÀTÇYÁY×EXÑEXÓ,YˆD�I‰IÔ)Ø�I‰I×)Ñ)×@Ñ@ÀÇÁÔKÙ)8ÀdÇiÁi×FcÑFcÔ)dˆD�I‰IÔ&ô Ó×+Ñ+Ô-ð "&§¡×!;Ñ!;ˆÔØ×/Ñ/Ö1rÐ   c                óD   <€ V ^8„  d   QhRRRS[ RS[S[S[3,          RR/# )r±   r”  r•  r  r1  rf  N)rí  rÀ   rÉ   r‡  )rË   rÌ   s   "€rÍ   rÎ   rÏ   í  s?   ø€ ÷ @ñ @Ø;ð@ÙCFð@ÙQUÑVYÑ[`ÐV`ÕQað@à	ñ@rÐ   c                óê  € V P                   e   Vf   R# VP                  4       pV P                  V4      V n        V P                   \        P
                  8X  d»   ^ RIp\        VR4      '       d£   VP                  P                  4       '       g�   VP                  V P                  V4       VP                  4       '       dM   V P                  P                  V P                  V P                  V P                   4       VP"                  ! 4       hR# R# R# V P                   \        P$                  8X  d­   ^ RIp\(        P*                  ! 4       ;_uu_ 4       pRpV P                   P,                  '       d8   V P/                  VR7       VP0                  P2                  P5                  V4      pV P                  VR&   VP0                  P                  W7R7       RRR4       R# R#   + '       g   i     R# ; i)zHReport intermediate metrics to the active hyperparameter search backend.NÚstudy)Úcheckpoint_dirÚ	objective)r3  )r@  r¶  rÊ  ræ  rX   ri  Úoptunar  rä  Ú_is_multi_objectiveÚreportÚshould_pruner2  r.  r³   r=  r<  ÚTrialPrunedrk  rl  ÚtempfileÚTemporaryDirectoryr9  Ú_tune_save_checkpointrm  Ú
CheckpointÚfrom_directory)rU  r”  r  r1  rç  ru  Útemp_checkpoint_dirr3  s   &&&&    rÍ   ra  ÚTrainer._report_to_hp_searchí  sr  € ð ×!Ñ!Ò)¨Uª]ÙØ—,‘,“.ˆØ×/Ñ/°Ó8ˆŒØ×!Ñ!¤_×%;Ñ%;Ô;Ûä�u˜g×&Ò&¨u¯{©{×/NÑ/N×/PÒ/PØ—‘˜TŸ^™^¨TÔ2Ø×%Ñ%×'Ò'Ø×)Ñ)×6Ñ6°t·y±yÀ$Ç*Á*ÈdÏlÉlÔ[Ø ×,Ò,Ó.Ð.ñ (ñ 0QÑ&ð
 ×#Ñ#¤×':Ñ':Ô:Ûä×,Ò,×.Ô.Ð2EØ!�
Ø—<‘<×+×+Ð+Ø×.Ñ.Ð>QÐ.ÔRØ!$§¡×!4Ñ!4×!CÑ!CÐDWÓ!X�JØ'+§~¡~�˜Ñ$Ø—‘—‘ �Ô?÷ /Ñ.ñ ;÷ /×.Ð.ús   ÅBG!Ç!G2	c                ó$   <€ V ^8„  d   QhRS[ RR/# )r±   rå  rf  Nr)  )rË   rÌ   s   "€rÍ   rÎ   rÏ     s   ø€ ÷ 	añ 	a±Cð 	a¸Dñ 	arÐ   c                ó  € \         P                  P                  V\         RV P                  P
                   24      pV P                  VRR7       V P                  P                  '       Ed   V P                  P	                  4       V P                  P                  R&   V P                  P                  \         P                  P                  V\        4      4       \        P                  ! V P                  P!                  4       \         P                  P                  V\"        4      4       \        P                  ! V P$                  P!                  4       \         P                  P                  V\&        4      4       R# R# )z@Save a checkpoint during a Ray Tune hyperparameter search trial.r|  Tr}  r?   N)r:  r£  r0  rT   r=  r¾  r€  r³   r9  r<  rí   rŠ  r¤  rÃ   r¬  r+  r»  r½  rÆ   r¿  )rU  rå  rÓ   s   && rÍ   rî  ÚTrainer._tune_save_checkpoint  sî   € ä—W‘W—\‘\ .Ô5JÐ4KÈ1ÈTÏZÉZ×McÑMcÐLdÐ2eÓfˆ
Ø�‰˜
°4ˆÔ8Ø�9‰9× × Ñ à>B¿l¹l×>PÑ>PÓ>RˆD�J‰J×)Ñ)Ð*:Ñ;Ø�J‰J×#Ñ#¤B§G¡G§L¡L°Ô=OÓ$PÔQÜ�JŠJ�t—~‘~×0Ñ0Ó2´B·G±G·L±LÀÌ^Ó4\Ô]Ü�JŠJ�t×(Ñ(×3Ñ3Ó5´r·w±w·|±|ÀJÔP^Ó7_Ö`ñ !rÐ   c                óD   <€ V ^8„  d   QhRS[ S[,          S[,          RR/# ©r±   r8  rf  N©rÈ   r>   )rË   rÌ   s   "€rÍ   rÎ   rÏ     s&   ø€ ÷ 	5ñ 	5¡T©/Õ%:¹_Õ%Lð 	5ÐQUñ 	5rÐ   c                ó<   € V P                   P                  V4       R# )a7  
Add a callback to the current list of [`~transformers.TrainerCallback`].

Args:
   callback (`type` or [`~transformers.TrainerCallback]`):
       A [`~transformers.TrainerCallback`] class or an instance of a [`~transformers.TrainerCallback`]. In the
       first case, will instantiate a member of that class.
N)r2  r3  ©rU  r8  s   &&rÍ   r3  ÚTrainer.add_callback  s   € ð 	×Ñ×*Ñ*¨8Ö4rÐ   c                óT   <€ V ^8„  d   QhRS[ S[,          S[,          RS[R,          /# r÷  rø  )rË   rÌ   s   "€rÍ   rÎ   rÏ      s,   ø€ ÷ <ñ <¡T©/Õ%:¹_Õ%Lð <ÑQ`ÐcgÕQgñ <rÐ   c                ó8   € V P                   P                  V4      # )a  
Remove a callback from the current list of [`~transformers.TrainerCallback`] and returns it.

If the callback is not found, returns `None` (and no error is raised).

Args:
   callback (`type` or [`~transformers.TrainerCallback]`):
       A [`~transformers.TrainerCallback`] class or an instance of a [`~transformers.TrainerCallback`]. In the
       first case, will pop the first member of that class found in the list of callbacks.

Returns:
    [`~transformers.TrainerCallback`]: The callback removed, if found.
)r2  Úpop_callbackrú  s   &&rÍ   rþ  ÚTrainer.pop_callback   s   € ð ×$Ñ$×1Ñ1°(Ó;Ð;rÐ   c                óD   <€ V ^8„  d   QhRS[ S[,          S[,          RR/# r÷  rø  )rË   rÌ   s   "€rÍ   rÎ   rÏ   0  s&   ø€ ÷ 	8ñ 	8©©_Õ(=ÁÕ(Oð 	8ÐTXñ 	8rÐ   c                ó<   € V P                   P                  V4       R# )a^  
Remove a callback from the current list of [`~transformers.TrainerCallback`].

Args:
   callback (`type` or [`~transformers.TrainerCallback]`):
       A [`~transformers.TrainerCallback`] class or an instance of a [`~transformers.TrainerCallback`]. In the
       first case, will remove the first member of that class found in the list of callbacks.
N)r2  r>  rú  s   &&rÍ   r>  ÚTrainer.remove_callback0  s   € ð 	×Ñ×-Ñ-¨hÖ7rÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  ©rö  )rË   rÌ   s   "€rÍ   rÎ   rÏ   =  s   ø€ ÷ 2ñ 2¡tñ 2rÐ   c                ó4   € V P                   P                  ^ 8H  # )zˆ
Whether or not this process is the local (e.g., on one machine if training in a distributed fashion on several
machines) main process.
)r³   Úlocal_process_indexr×  s   &rÍ   rë   ÚTrainer.is_local_process_zero=  s   € ð
 �y‰y×,Ñ,°Ñ1Ð1rÐ   c                ó    <€ V ^8„  d   QhRS[ /# r†  r  )rË   rÌ   s   "€rÍ   rÎ   rÏ   D  s   ø€ ÷ 	,ñ 	,¡tñ 	,rÐ   c                ó„   € \        4       '       d   \        P                  ! 4       ^ 8H  # V P                  P                  ^ 8H  # )z§
Whether or not this process is the global main process (when training in a distributed fashion on several
machines, this is only going to be `True` for one process).
)r‰   ro  r  r³   r  r×  s   &rÍ   rì   ÚTrainer.is_world_process_zeroD  s2   € ô #×$Ò$Ü—8’8“: ‘?Ð"Ø�y‰y×&Ñ&¨!Ñ+Ð+rÐ   c                óR   <€ V ^8„  d   QhRS[ P                  RS[P                  RR/# )r±   r²   r
  rf  N)r   r¿   rÃ   r
  )rË   rÌ   s   "€rÍ   rÎ   rÏ   O  s*   ø€ ÷ 
 ñ 
 ©2¯9©9ð 
 ¹e¿l¹lð 
 Ètñ 
 rÐ   c                ó  € \        VRR4      e   \        P                  R4       R# VP                  V4      pV P                  P
                  \        P                  8X  d'   \        VR4      '       d   VP                  4        R# R# R# )zJMove the model to the specified device, re-tying weights on XLA if needed.rÔ   NzZThe model is already on multiple devices. Skipping the move to device specified in `args`.rK  )
r  rõ   rq  r=  r³   r  rs   ÚTPUr  rK  )rU  r²   r
  s   &&&rÍ   r  ÚTrainer._move_model_to_deviceO  sl   € ä�5˜/¨4Ó0Ò<Ü�N‰NØlôñ Ø—‘˜Ó ˆà�9‰9×"Ñ"¤l×&6Ñ&6Ô6¼7À5È-×;XÒ;XØ×ÑÖñ <YÑ6rÐ   )9r¡  rF  rÝ  rÅ  rÂ  rB  r#  rû   rC  rÄ  rÃ  rE  rÜ  r  r³   r2  r€   r¹   rº   rÊ  r<  rA  ró  r´   rã   r¶   rÁ  r?  r@  rÉ  r6  r  r  r  rS  rI  r>  r  r"  r(  rÆ   r²   r  r¸   r  r  r�  r*  ræ  r+  r½   r  r¾   r·   r€  r=  rµ   ©NN)NNNNNNNNNNr  NNrÙ   )NFN)NNN)NNNNN)FN)T)TN)NNrÜ  )Nrè  )F)NF)	NNNNNNNNN)zEnd of trainingTNN)NNé   ÚminimizeNN)er  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Útrainer_pt_utilsr©   rª   r«   r¬   r­   r®   r¯   rb  r,  r¥  rù   rØ  rã  ré  rò  rÕ  rÖ  râ  r&  r  r  rD  rB  rC  ÚstaticmethodrQ  rN  r�  r©  r¥  r¼  r½  rË  rÍ  rü  r?  r>  rY  r
  rò  rt  rŒ  r:  r9  r»  r´  rµ  rÁ  rÀ  rß  rº  r  r  r  rÿ  r   rA  r!  rÉ  r)  ri  rh  r‰  r‡  rˆ  r¡  r(  rð  rã  rä  rÖ  rï  r€  rV  r'  r&  r   r8  rš  r7  r‹  r/  rÒ  r   rž  ra  rî  r3  rþ  r>  rë   rì   r  Ú__static_attributes__Ú__classdictcell__)rÌ   s   @rÍ   r¨   r¨   û   s×  ø‡ € ñ[÷|÷ ñ ÷~7ò ~7÷@Pð P÷d9ð 9÷vjxð jx÷\
ð 
÷(%
ò %
÷N
ð 
÷$Kð K÷0ò 0÷d0ò 0÷>ð ÷:\ð \÷ !;ò !;÷F'ò '÷$	Eð 	E÷Jò J÷X!ò !ð< ÷ñ ó ð÷<
 ð 
 ÷ð ÷<kò k÷Z[Mò [M÷z>ð >ò>`'òDc
òJ/H÷bE!ò E!÷NW;ò W;÷r
ð 
÷(ò (÷0^ò 0^÷f1ð 1÷"<"ð <"÷|ð ÷$ð ÷\.ð \.÷|D
ð D
÷LYð Y÷$ð ÷ð ÷ð ÷ ò  òD@ò*_òB]ô	÷bò b÷HMuò Mu÷^;tò ;t÷zg&ò g&÷Rò ÷@ð ÷&Cð C÷J$"ð $"÷L1ið 1i÷f@1ð @1÷D1ð 1÷.=ò =÷Bhð h÷T+_ð +_÷Zf5ð f5÷P5ð 5÷6%9ð %9÷Nð ÷$8[ò 8[÷t%Lò %L÷R_ò _÷0	"ð 	"÷ð ÷*%ò %÷$Hhò Hh÷TP
ò P
÷dC9ð C9÷J4ð 4÷Oò O÷bò ÷42ð 42÷l@ð @÷6	að 	a÷	5ð 	5÷<ð <÷ 	8ð 	8÷2ð 2÷	,ð 	,÷
 ö 
 rÐ   r¨   )rÃ   r�  (  r  r¦  rÂ  r*  rÛ   r²  r¶  r:  r§  r,  r¸  rì  rÀ  r%  Úcollections.abcr   r   r   r   Úpathlibr   Útypingr   r	   Úintegrationsr
   rŸ  rP  Úsafetensors.torchrë  rÃ   Útorch.distributedÚdistributedrà  Úhuggingface_hubr   r   Ú	packagingr   r   Útorch.utils.datar   r   r   r   r   r+  r   Úconfiguration_utilsr   Údata.data_collatorr   r   r   Údebug_utilsr   r   Ú!feature_extraction_sequence_utilsr   Úfeature_extraction_utilsr   rÒ  r   r   Úimage_processing_utilsr   Úintegrations.deepspeedr    r!   r"   r#   r$   Úintegrations.fsdpr%   r&   Úintegrations.ligerr'   Úintegrations.neftuner(   r)   Úintegrations.peftr*   Úintegrations.tpur+   r,   r-   Úloss.loss_utilsr.   r/   Ú	modelcardr0   Úmodeling_utilsr1   r2   Úmodels.auto.modeling_autor3   r4   Úoptimizationr5   r6   Úprocessing_utilsr7   Útokenization_utils_baser8   Útrainer_callbackr9   r:   r;   r<   r=   r>   r?   r@   Útrainer_optimizerrA   rB   rC   rD   r  rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   Útrainer_utilsrT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   Útraining_argsrr   rs   rt   r}  ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   Úutils.import_utilsr�   Úutils.quantization_configr‘   r-  r5  Úutils.notebookr’   r  Útorch_xla.core.xla_modelÚcoreÚ	xla_modelr  Útorch_xla.debug.metricsrZ  r1  r  Útorch_xla.runtimeÚruntimerK  Ú	torch_xlaÚXLA_VERSIONr1  rJ  Útorch_xla.distributed.spmdÚspmdrM  Ú!smdistributed.modelparallel.torchÚmodelparallelro  r“   r”   r•   rŽ  r–   r�  r—   r˜   Úaccelerate.stater™   rž  rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   Úaccelerate.utils.memoryr£   r¤   rç  Ú
get_loggerr  rõ   rd  r¤  r½  rÎ  r"  r¿  rÔ  r¨   rg  rÐ   rÍ   Ú<module>rM     s~  ðñó Û Û Û Û Û Û 	Û Û Û 
Û Û Û ß 7Ñ 7Ý Ý ß %õ
ó Û Û Ý  ß 1Ý Ý ß cÕ cå Ý 1ß \Ñ \ß <Ý GÝ <ß `Ý 6÷õ ÷ MÝ 2ß FÝ /ß [Ñ [ß :Ý &ß 9÷÷ 2Ý ,Ý <÷	÷ 	ó 	÷ó ÷÷ ÷ ÷ ñ ÷"÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷@ KÑ J÷÷ ÷ ÷ ÷ ÷ ÷ ñ õ: )Ý 9ð )Ð)Ð Ø,Ð á×ÒÝ8à 8Ðá×ÒÛá×Òß)Ð)ß)Ð)Ý"Ý4à$Ÿ]›]¨;Ó7¸7¿=»=ÐI_Ó;`Ñ`Ðßß/Ð/øà"Ðñ ×Òß3Ð3ç[Ñ[á×ÒÝá×Òß:Ý1÷
÷ 
õ 
õ ;á×ÒÝ>÷ Ûà	×	Ó	˜HÓ	%€ð )Ð Ø)Ð Ø�Ø�Ø$Ñ Ø�Ø&�ñ 
ðô÷XA ð XA óóXA rÐ   