
    eTh                         S SK r S SKJrJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJr  \
" 5       (       d  \" 5       (       d  \" S	5      eS
rS
rS\4S jr " S S\5      rg)    N)ArgumentParser	Namespace   )%SingleSentenceClassificationProcessor)TextClassificationPipeline)is_tf_availableis_torch_availablelogging   )BaseTransformersCLICommandzRAt least one of PyTorch or TensorFlow 2.0+ should be installed to use CLI trainingFargsc                     [        U 5      $ )zt
Factory function used to instantiate training command from provided command line arguments.

Returns: TrainCommand
)TrainCommand)r   s    S/var/www/auris/envauris/lib/python3.13/site-packages/transformers/commands/train.pytrain_command_factoryr       s         c                   L    \ rS rSr\S\4S j5       rS\4S jrS r	S r
S rS	rg
)r   )   parserc                    U R                  SSS9nUR                  S[        SSS9  UR                  S[        S	S
S9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  SSSS9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  S[        S S!S9  UR                  S"[        S#S$S9  UR                  S%[        S&S'S9  UR                  S([        S)S*S9  UR                  S+[        S,S-S9  UR                  S.[        S/S0S9  UR                  [        S19  g2)3z
Register this command to argparse so it's available for the transformer-cli

Args:
    parser: Root parser to register command-specific arguments
trainz$CLI tool to train a model on a task.)helpz--train_dataTzcpath to train (and optionally evaluation) dataset as a csv with tab separated labels and sentences.)typerequiredr   z--column_labelr   z3Column of the dataset csv file with example labels.)r   defaultr   z--column_textr   z2Column of the dataset csv file with example texts.z--column_idr   z0Column of the dataset csv file with example ids.z--skip_first_row
store_truez-Skip the first row of the csv file (headers).)actionr   z--validation_data zpath to validation dataset.z--validation_splitg?z^if validation dataset is not provided, fraction of train dataset to use as validation dataset.z--outputz./z path to saved the trained model.z--tasktext_classificationzTask to train the model on.z--modelzgoogle-bert/bert-base-uncasedz%Model's name or path to stored model.z--train_batch_size    zBatch size for training.z--valid_batch_size@   zBatch size for validation.z--learning_rategiUMu>zLearning rate.z--adam_epsilong:0yE>zEpsilon for Adam optimizer.)funcN)
add_parseradd_argumentstrintfloatset_defaultsr   )r   train_parsers     r   register_subcommand TrainCommand.register_subcommand*   s    ((7](^!!v	 	" 	
 	!!38m 	" 	
 	!!#q7k 	" 	
 	!!Q5g 	" 	
 	!!|:i 	" 	
 	!!"5CRo!p!! q	 	" 	
 	!!*3Km!n!!3(=Da 	" 	
 	!!C)HOv 	" 	
 	!!"6S"Sm!n!!"6S"So!p!!"3%Td!e!!"2Tq!r!!'<!=r   r   c                    [         R                  " S5      U l        [        5       (       a  SOSU l        [
        R                  " UR                  SS9  UR                  U l        UR                  U l        UR                  U l	        UR                  U l
        U R                  R                  SUR                   SUR                   35        UR                  S:X  a&  [        R                  " UR                  5      U l        O,UR                  S	:X  a  ["        eUR                  S
:X  a  ["        eU R                  R                  SUR$                   35        [&        R(                  " UR$                  UR                  UR                  UR                  UR*                  S9U l        S U l        UR0                  (       aw  U R                  R                  SUR0                   35        [&        R(                  " UR0                  UR                  UR                  UR                  UR*                  S9U l        UR2                  U l        UR4                  U l        UR6                  U l        UR8                  U l        UR:                  U l        g )Nztransformers/trainingtftorchT)exist_okzLoading z pipeline for r   token_classificationquestion_answeringzLoading dataset from )column_labelcolumn_text	column_idskip_first_rowz Loading validation dataset from )r
   
get_loggerloggerr   	frameworkosmakedirsoutputr2   r3   r4   infotaskmodelr   from_pretrainedpipelineNotImplementedError
train_data	Processorcreate_from_csvr5   train_datasetvalid_datasetvalidation_datavalidation_splittrain_batch_sizevalid_batch_sizelearning_rateadam_epsilon)selfr   s     r   __init__TrainCommand.__init__]   s   (()@A!0!2!2
DKK$/kk --++8DII;nTZZLIJ99--6FFtzzRDMYY00%%YY..%%00ABC&66OO**((nn..
 "KK?@T@T?UVW!*!:!:$$!.. ,,..#22"D !% 5 5 $ 5 5 $ 5 5!// --r   c                 b    U R                   S:X  a  U R                  5       $ U R                  5       $ )Nr-   )r8   run_tf	run_torchrM   s    r   runTrainCommand.run   s'    >>T!;;= ~~r   c                     [         e)N)rA   rS   s    r   rR   TrainCommand.run_torch   s    !!r   c           
         U R                   R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  S9  U R                   R                  U R                  5        g )N)rG   rH   rK   rL   rI   rJ   )r@   fitrE   rF   rH   rK   rL   rI   rJ   save_pretrainedr;   rS   s    r   rQ   TrainCommand.run_tf   sp     ..!22,,**!22!22 	 	
 	%%dkk2r   )rL   r4   r2   r3   r8   rK   r7   r;   r@   rI   rE   rJ   rF   rH   N)__name__
__module____qualname____firstlineno__staticmethodr   r*   r   rN   rT   rR   rQ   __static_attributes__ r   r   r   r   )   s8    0>N 0> 0>d+.Y +.Z 
"3r   r   )r9   argparser   r   datar   rC   	pipelinesr   utilsr   r	   r
   r   r   RuntimeErrorUSE_XLAUSE_AMPr   r   rb   r   r   <module>rj      sc    
 . E 2 @ @ ( !3!5!5
k
ll 
	 u3- u3r   