
    bidW                        d Z ddlZddlmZ ddlmZ ddlmZ ddlZddl	Z	ddl
mZmZ ddlmZ ddlmZ d	d
lmZ d	dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d	dl#m$Z$ d	dl%m&Z&m'Z'm(Z(m)Z) eeeeeeeee e!ei eee"edZ* e)j+        e,          Z-dZ.i ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/Z/g d0Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6e G d7 d8                      Z7d9 Z8dAd;Z9d< Z:d= Z;d> Z<g d?Z=d@ Z>dS )Bz'Configuration base class and utilities.    N)	dataclass)Path)Any)is_offline_mode
model_info)OfflineModeIsEnabled)HFValidationError   )__version__),MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES!MODEL_FOR_CAUSAL_LM_MAPPING_NAMESMODEL_FOR_CTC_MAPPING_NAMES,MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES*MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES*MODEL_FOR_IMAGE_TEXT_TO_TEXT_MAPPING_NAMES!MODEL_FOR_MASKED_LM_MAPPING_NAMES(MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES*MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES,MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES/MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES(MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES0MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING_NAMES,MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES6MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING_NAMES)ParallelMode)is_datasets_availableis_tokenizers_availableis_torch_availablelogging)text-generationimage-classificationimage-segmentation	fill-maskobject-detectionquestion-answeringtext2text-generationtext-classificationtable-question-answeringtoken-classificationaudio-classificationautomatic-speech-recognitionzzero-shot-image-classificationzimage-text-to-textz
<!-- This model card has been generated automatically according to the information the Trainer had access to. You
should probably proofread and complete it, then remove this comment. -->
r#   zMasked Language Modelingr!   zImage Classificationr"   zImage Segmentationzmultiple-choicezMultiple Choicer$   zObject Detectionr%   zQuestion AnsweringsummarizationSummarizationr(   zTable Question Answeringr'   zText Classificationr    zCausal Language Modelingr&   z&Sequence-to-sequence Language Modelingr)   zToken ClassificationtranslationTranslationzzero-shot-classificationzZero Shot Classificationr+   zAutomatic Speech Recognitionr*   zAudio Classification)accuracybleuf1matthews_correlationpearsonr	precisionrecallrouge	sacrebleu	spearmanrwerc                 >    | g S t          | t                    r| gS | S N)
isinstancestr)objs    Q/root/projects/butler/venv/lib/python3.11/site-packages/transformers/modelcard.py_listifyrA   s   s*    
{		C		 u
    c                     || S t          |t                    r|g}d |D             }t          |          dk    r| S || |<   | S )Nc                     g | ]}||S r<    .0vs     r@   
<listcomp>z*_insert_values_as_list.<locals>.<listcomp>   s    111A1=a===rB   r   )r=   r>   len)metadatanamevaluess      r@   _insert_values_as_listrN   |   s\    ~&# 11111F
6{{aHTNOrB   c                    | i S i }| D ]z}|                                                     dd          t          v r,|||                                                     dd          <   ]|                                 dk    r||d<   {|S )N _rouge1r7   )lowerreplaceMETRIC_TAGS)eval_resultsresultkeys      r@   #infer_metric_tags_from_eval_resultsrY      s    	F " "99;;sC((K7747F399;;&&sC0011YY[[H$$!F7OMrB   c                     || S || |<   | S r<   rE   )rK   rL   values      r@   _insert_valuer\      s    }HTNOrB   c                 V    t                      sdS ddlm}m} t	          | ||f          S )NFr   )DatasetIterableDataset)r   datasetsr^   r_   r=   )datasetr^   r_   s      r@   is_hf_datasetrb      sB     "" u11111111g9:::rB   c                     g }|                                  D ]F}t          |t          t          f          r|t          |          z  }1|                    |           G|S r<   )rM   r=   tuplelistappend)mappingrW   rH   s      r@   _get_mapping_valuesrh      sb    F^^  a%'' 	d1ggFFMM!MrB   c                   
   e Zd ZU eed<   dZeee         z  dz  ed<   dZedz  ed<   dZeee         z  dz  ed<   dZ	edz  ed<   dZ
eee         z  dz  ed<   dZeee         z  dz  ed<   dZeee         z  dz  ed	<   dZeee         z  dz  ed
<   dZeeef         dz  ed<   dZeeef         dz  ed<   dZee         dz  ed<   dZeeef         dz  ed<   dZedz  ed<   d Zd Zd Zd Ze	 	 	 	 	 	 	 	 	 	 dd            ZdS )TrainingSummary
model_nameNlanguagelicensetagsfinetuned_fromtasksra   dataset_tagsdataset_argsdataset_metadatarV   
eval_lineshyperparameterstrainersourcec                 J   | j         t                      s| j        t          | j                  dk    rn	 t	          | j                  }|j        D ]&}|                    d          r|dd          | _         'd S # t          j        t          t          f$ r Y d S w xY wd S d S d S d S )Nr   zlicense:   )rm   r   ro   rJ   r   rn   
startswithhttpx	HTTPErrorr	   r   )selfinfotags      r@   __post_init__zTrainingSummary.__post_init__   s     L #%% !#/D'((1,,!$"5669 / /C~~j11 /'*122w/ / O%68LM    !   //,,s   AA: :BBc                    d| j         i}t          | j                  }t          | j                  }t          | j                  }t          | j                  }t          |          t          |          k     r&|d gt          |          t          |          z
  z  z   }t          t          ||                    t          t          ||                    }t          t          ||                    }d t          | j	                  D             }	g |d<   t          |	          dk    rt                    dk    r|gS t          |	          dk    rd d i}	t                    dk    rd d ifd|	D             }
|
D ]\  }}i }||	|         |d|d<   |?|
                    |i           }|         |d||d<   ||         ||         |d         d	<   t          |          dk    rIg |d
<   |                                D ]/\  }}|d
                             ||| j        |         d           0d|v r$d|v r d
|v r|d                             |           t                              d|            |gS )NrL   c                 <    i | ]}|t           v |t           |         S rE   )TASK_TAG_TO_NAME_MAPPING)rG   tasks     r@   
<dictcomp>z6TrainingSummary.create_model_index.<locals>.<dictcomp>   s3     
 
 
59UY]uUuUuD*40UuUuUurB   resultsr   c                 "    g | ]}D ]}||fS rE   rE   )rG   task_tagds_tagdataset_mappings      r@   rI   z6TrainingSummary.create_model_index.<locals>.<listcomp>   s-    kkkH[jkkQWh/kkkkrB   )rL   typer   ra   argsmetrics)rL   r   r[   zLDropping the following result as it does not have all the necessary fields:
)rk   rA   ra   rq   rr   rs   rJ   dictziprp   getitemsrf   rV   loggerr~   )r}   metric_mappingmodel_indexdataset_namesrq   rr   rs   dataset_arg_mappingdataset_metadata_mappingtask_mappingall_possibilitiesr   r   rW   rK   
metric_tagmetric_namer   s                    @r@   create_model_indexz"TrainingSummary.create_model_index   s   t/ !.. 122 122#D$9::|s<0000'4&C4E4ELHYHY4Y*ZZLs<??@@"3|\#B#BCC#'L:J(K(K#L#L 
 
=Edj=Q=Q
 
 
 "$I|!!c/&:&:a&?&?= |!! $<L1$$#TlO lkkkkkk 1 	v 	vHfF#*6x*@(!S!Sv!377CC+F3"% % %y!
 'v.:0CF0KF9%f->""Q&&$&y!/=/C/C/E/E  +J9%,,$/$.%)%6{%C     I$7$7I<O<OI&--f5555tlrttuuuu}rB   c                 2   t          | j                  }i }t          |dd          }t          |d| j                  }t          |d| j                  }| j        Ht          | j        t                    r.t          | j                  dk    rt          |d| j                  }t          |d| j
                  }t          |d| j                  }t          |d	t          |                                                    }|                     |          |d
<   |S )Nlibrary_nametransformersrl   rm   r   
base_modelrn   r`   r   zmodel-index)rY   rV   r\   rN   rl   rm   ro   r=   r>   rJ   rn   rq   re   keysr   )r}   r   rK   s      r@   create_metadatazTrainingSummary.create_metadata  s    <T=NOO >>JJ)(JNN 9dlCC*z$:Ms/S/S*X[\`\oXpXpstXtXt$X|T=PQQH)(FDIFF)(J@QRR)(ItNDWDWDYDY?Z?Z[["&"9"9."I"IrB   c                    d}t          j        |                                 d          }t          |          dk    rd| d}| j        dk    r
|t
          z  }|d| j         dz  }| j        |d	z  }n|d
| j         d| j         dz  }| j        2t          | j        t                    rt          | j                  dk    r|dz  }nt          | j        t                    r|d| j         dz  }nt          | j        t          t          f          r-t          | j                  dk    r|d| j        d          dz  }nA|d                    d | j        d d         D                       d| j        d          dz   z  }| j        >|dz  }|d                    d | j                                        D                       z  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }| j        D|dz  }|d                    d | j                                        D                       z  }|dz  }n|d z  }| j        !|d!z  }|t%          | j                  z  }|dz  }|d"z  }|d#t&           dz  }| j        dk    r t)                      rdd l}|d$|j         dz  }t-                      rdd l}|d%|j         dz  }t1                      rdd l}|d&|j         dz  }|S )'N F)	sort_keysr   z---
rv   z
# z

z'This model was trained from scratch on z'This model is a fine-tuned version of [z](https://huggingface.co/z) on zan unknown dataset.the z	 dataset.r
   z, c                     g | ]}d | S )r   rE   )rG   dss     r@   rI   z1TrainingSummary.to_model_card.<locals>.<listcomp><  s    GGGr{b{{GGGrB   z	 and the z
 datasets.z:
It achieves the following results on the evaluation set:

c                 >    g | ]\  }}d | dt          |           S z- z: _maybe_roundrG   rL   r[   s      r@   rI   z1TrainingSummary.to_model_card.<locals>.<listcomp>A  s6    $u$u$uKDRW%G$%G%G,u2E2E%G%G$u$u$urB   z/
## Model description

More information needed
z9
## Intended uses & limitations

More information needed
z:
## Training and evaluation data

More information needed
z
## Training procedure
z
### Training hyperparameters
z:
The following hyperparameters were used during training:
c                 $    g | ]\  }}d | d| S r   rE   r   s      r@   rI   z1TrainingSummary.to_model_card.<locals>.<listcomp>L  s-    $j$j$jkdE%9$%9%9%%9%9$j$j$jrB   z
More information needed
z
### Training results

z
### Framework versions

z- Transformers z
- Pytorch z- Datasets z- Tokenizers )yamldumpr   rJ   rw   AUTOGENERATED_TRAINER_COMMENTrk   ro   ra   r=   re   r>   rd   joinrV   r   ru   rt   make_markdown_tabler   r   torchr   r`   r   
tokenizers)r}   
model_cardrK   r   r`   r   s         r@   to_model_cardzTrainingSummary.to_model_card  s   
9T1133uEEEx==10000J ;)##77J2T_2222
&CCJJ^(^ ^CGCV^ ^ ^J
 <Jt|T$B$Bs4<GXGX\]G]G]//JJ$,,, <T\<<<<

DL5$-88 S=N=NRS=S=S?T\!_????

IIGGT\#2#5FGGGHHKsW[WcdfWgKsKsKss
 (XXJ$))$u$u[_[l[r[r[t[t$u$u$uvvvJd
KK
UU
VV
11
88
+XXJ$))$j$jTMaMgMgMiMi$j$j$jkkkJ$JJ77J?&66J-do>>>J$J44
77777
;)##(:(<(<#LLL<u'8<<<<J "" 	AOOO@(<@@@@J"$$ 	ED**@DDDDJrB   c                    |j         |j         n|j        }t          |          r?|||	9|j        }|dvr.|	|j        t          |j                  dg}	||g}||j        g}|
||}
|Yt          |j        j	        d          r?t          j                            |j        j	        j                  s|j        j	        j        }|C|j        j        j        }t                                           D ]\  }}|t%          |          v r|}|t'          |j        j                  j        }t/          |          dk    r|}|dg}n9t1          |t
                    r|dk    r|dg}nd|vr|                    d           t5          |j        j                  \  }}}t;          |          } | |||||||
|||	|||          S )N)csvjsonpandasparquettext)configsplit_name_or_pathr   generated_from_trainer)rl   rm   rn   rk   ro   rp   ra   rq   rr   rs   rV   rt   ru   )eval_datasettrain_datasetrb   builder_nameconfig_namer>   r   hasattrmodelr   ospathisdirr   	__class____name__TASK_MAPPINGr   rh   r   r   
output_dirrL   rJ   r=   rf   parse_log_historystatelog_history$extract_hyperparameters_from_trainer)clsrv   rl   rm   rn   rk   ro   rp   rq   rs   ra   rr   one_datasetdefault_tagmodel_class_namer   rg   rQ   rt   rV   ru   s                        r@   from_trainerzTrainingSummary.from_trainerh  s/     /6.B.Ng**T[Ti%% 		=<+?<CW[k[s%2K"NNN#+3>3JUXYdYjUkUk(l(l'm$'$/=L'$/$;#<L?|7"G ",o>> #GMM'-"6"DEE # %]1?N =&}6?!-!3!3!5!5 ! !g#':7'C'CCC Egl566;Jz??a'J <,-DDc"" 	2t/G'G'G23DD%T11KK0111&78Q&R&R#:|>wGGs!)%%-%!+
 
 
 	
rB   )
NNNNNNNNNN)r   
__module____qualname__r>   __annotations__rl   re   rm   rn   ro   rp   ra   rq   rr   rs   r   r   rV   floatrt   ru   rw   r   r   r   r   classmethodr   rE   rB   r@   rj   rj      s        OOO'+HcDIo$+++GS4Z#'D#S	/D
 '''!%NC$J%%%$(E3c?T!(((&*GS49_t#***+/L#S	/D(///+/L#S	/D(///.2d38nt+222,0L$sEz"T)000#'JS	D '''-1OT#s(^d*111"FC$J"""   = = =~   H H HT  K
 K
 K
 [K
 K
 K
rB   rj   c                 \   d}|t          |           k     r,d| |         vr"|dz  }|t          |           k     r
d| |         v"|t          |           k    r=|dz  }|dk    rd| |         vr|dz  }|dk    r
d| |         v|dk    rdd| |         fS dS | |         }g }d}t          |          D ]F}d| |         v r| |         d         }d| |         v r | |                                         }|                    d	d          }|                    d
d          }|                    dd          }	|                    dd          }|                    dd          }|                    dd          }|||	d}
|                                D ]R\  }}|dk    r||
d<   |                    d          }d                    d |dd         D                       }||
|<   S|                    |
           Ht          |           dz
  }|dk    rd| |         vr|dz  }|dk    r
d| |         v|dk    rwi }| |                                         D ]U\  }}|                    d          }|dvr7d                    d |                    d          D                       }|||<   V|||fS ||dfS )zd
    Parse the `log_history` of a Trainer to get the intermediate and final evaluation results.
    r   train_runtimer
   	eval_lossN)NNNzNo logloss
total_flosepochstepeval_runtimeeval_samples_per_secondeval_steps_per_second)zTraining LossEpochStepzValidation LossrQ   rP   c                 6    g | ]}|                                 S rE   
capitalizerG   parts     r@   rI   z%parse_log_history.<locals>.<listcomp>  s"    $N$N$N4T__%6%6$N$N$NrB   eval_)runtimesamples_per_secondsteps_per_secondr   r   c                 6    g | ]}|                                 S rE   r   r   s     r@   rI   z%parse_log_history.<locals>.<listcomp>  s"    +Y+Y+Y$DOO,=,=+Y+Y+YrB   )	rJ   rangecopypopr   r   r   rf   removeprefix)r   idx	train_loglinestraining_lossir   rQ   r   r   rM   krH   splitsrL   rV   rX   r[   camel_cased_keys                      r@   r   r     s<    C
K  
 
 _K<L%L%Lq K  
 
 _K<L%L%L c+qQhh;k#.>>>1HC Qhh;k#.>>> !88{3///## C IEM3ZZ ! ![^##'N62M+a.((!!n))++GL$//AKK..E;;vt,,DND11A5t<<A3T::A'4udSSF % %1##01F,--WWS\\F88$N$N6!"":$N$N$NOOD#$F4LLLL   
k

Q
C
(({+c*:::q (({+c*::: Qww%c*0022 	6 	6JC""7++C```"%((+Y+Y#))TW..+Y+Y+Y"Z"Z05_-%--%%%rB      c                 2   t          | t                    rtt          t          |                               d                    dk    rAt          t          |                               d          d                   |k    r| d| dS t          |           S )N.r
   f)r=   r   rJ   r>   r   )rH   decimalss     r@   r   r     s    !U #CFFLL$5$5 6 6 : :s3q66<<PSCTCTUVCW?X?X[c?c?c"h"""""q66MrB   c                 f    d t          | |          D             }d                    |          dz   S )Nc                 P    g | ]#\  }}d | d|t          |          z
  dz   z  z   $S )z| rP   r
   )rJ   )rG   rH   ws      r@   rI   z'_regular_table_line.<locals>.<listcomp>  s:    ___tq!aC1s1vv:>$::___rB   r   |
)r   r   )rM   
col_widthsvalues_with_spaces      r@   _regular_table_liner    s9    __s6S]G^G^___77$%%--rB   c                 J    d | D             }d                     |          dz   S )Nc                 $    g | ]}d d|z  z   dz   S )z|:-:rE   )rG   r  s     r@   rI   z&_second_table_line.<locals>.<listcomp>  s%    777qdS1Wns"777rB   r   r	  )r   )r
  rM   s     r@   _second_table_liner    s*    77J777F776??U""rB   c           	         | t          |           dk    rdS d | d         D             }| D ]a}|                                D ]J\  }}||         t          t          |                    k     rt          t          |                    ||<   Kbt          t	          | d                                                   t	          |                                                    }|t          t	          |                                                    z  }| D ]P}|t          d |                                D             t	          |                                                    z  }Q|S )zC
    Create a nice Markdown table from the results in `lines`.
    Nr   r   c                 H    i | ]}|t          t          |                     S rE   )rJ   r>   )rG   rX   s     r@   r   z'make_markdown_table.<locals>.<dictcomp>	  s&    999#s3s88}}999rB   c                 ,    g | ]}t          |          S rE   r   rF   s     r@   rI   z'make_markdown_table.<locals>.<listcomp>  s    %M%M%M!l1oo%M%M%MrB   )rJ   r   r   r  re   r   rM   r  )r   r
  linerX   r[   tables         r@   r   r     sT    }E

ar99a999J ; ;**,, 	; 	;JC#\%%8%8!9!999"%l5&9&9":":
3	;  U1X]]__ 5 5tJ<M<M<O<O7P7PQQE	Z%6%6%8%8 9 9:::E j j$%M%Mt{{}}%M%M%MtT^TeTeTgTgOhOhiiiLrB   )learning_ratetrain_batch_sizeeval_batch_sizeseedc           
      D     fdt           D             } j        j        t          j        t          j        fvr0 j        j        t          j        k    rdn j        j        j        |d<    j        j        dk    r j        j        |d<    j        j	        dk    r j        j	        |d<    j        j
         j        j        z   j        j	        z  }||d         k    r||d<    j        j         j        j        z  }||d	         k    r||d
<    j        j        rz j        j        } j        j        r j        j        nd}d|                                v r3d| d j        j         d j        j         d j        j         d| 
|d<   nd| d| |d<    j        j        j        |d<    j        j        dk    r j        j        |d<    j        j        dk    r j        j        |d<   n j        j        |d<    j        j        rd|d<    j        j        dk    r j        j        |d<   |S )Nc                 <    i | ]}|t          j        |          S rE   )getattrr   )rG   r   rv   s     r@   r   z8extract_hyperparameters_from_trainer.<locals>.<dictcomp>  s'    PPPqq'',22PPPrB   z	multi-GPUdistributed_typer
   num_devicesgradient_accumulation_stepsr  total_train_batch_sizer  total_eval_batch_sizez!No additional optimizer argumentsadamzUse z with betas=(,z) and epsilon=z and optimizer_args=	optimizerz and the args are:
lr_scheduler_typeg        lr_scheduler_warmup_stepsr   training_steps
num_epochsz
Native AMPmixed_precision_traininglabel_smoothing_factor)_TRAINING_ARGS_KEYSr   parallel_moder   NOT_PARALLELNOT_DISTRIBUTEDDISTRIBUTEDr[   
world_sizer   r  r  optim
optim_argsrS   
adam_beta1
adam_beta2adam_epsilonr&  warmup_steps	max_stepsnum_train_epochsfp16r+  )rv   ru   r!  r"  optimizer_nameoptimizer_argss   `     r@   r   r     s   PPPP<OPPPO|!,*C\Ea)bbb"<59QQQKKW^WcWqWw 	*+ |"")0)@&|/!339@9a56 	%(??',Bjj  1C!DDD4J01#L87<;RR0A BBB3H/0| 
g +4;L4Kt00Qt^))++++\~ \ \GL4K \ \glNe \ \#L5\ \KY\ \ K((
 ,g.+f+fVd+f+fOK(+2<+I+OO'(| C''7>|7P34|##,3L,B())(/(E%| C6B23|*c114;L4W01rB   )r  )?__doc__r   dataclassesr   pathlibr   typingr   r{   r   huggingface_hubr   r   huggingface_hub.errorsr   huggingface_hub.utilsr	   r   r   models.auto.modeling_autor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   training_argsr   utilsr   r   r   r   r   
get_loggerr   r   r   r   rU   rA   rN   rY   r\   rb   rh   rj   r   r   r  r  r   r,  r   rE   rB   r@   <module>rH     s   . - 				 ! ! ! ! ! !               7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3                                       " ( ' ' ' ' '            9HD2@DHJ PHH$o'B$oFn$o&\D " 
	H	%	%! +2 . (	
 * . _  : 0 1 D 2 =  : #$B  2! (    	 	 		 	 	  ; ; ;   E
 E
 E
 E
 E
 E
 E
 E
P9& 9& 9&x   . . .
# # #
  &   / / / / /rB   