
    g                         d dl Z d dlmZmZ ddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZ  e
            s e            s ed	          d
Zd
ZdefdZ G d de          ZdS )    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                      t          |           S )z
    Factory function used to instantiate training command from provided command line arguments.

    Returns: TrainCommand
    )TrainCommand)r   s    W/var/www/html/ai-engine/env/lib/python3.11/site-packages/transformers/commands/train.pytrain_command_factoryr       s         c                   H    e Zd Zedefd            ZdefdZd Zd Z	d Z
dS )	r   parserc                    |                      dd          }|                    dt          dd           |                    dt          d	d
           |                    dt          dd           |                    dt          dd           |                    ddd           |                    dt          dd           |                    dt          dd           |                    dt          dd           |                    dt          d d!           |                    d"t          d#d$           |                    d%t          d&d'           |                    d(t          d)d*           |                    d+t          d,d-           |                    d.t          d/d0           |                    t          1           d2S )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_subcommandz TrainCommand.register_subcommand*   s@    ((7](^^!!v	 	" 	
 	
 	
 	!!38m 	" 	
 	
 	
 	!!#q7k 	" 	
 	
 	
 	!!Q5g 	" 	
 	
 	
 	!!|:i 	" 	
 	
 	
 	!!"5CRo!ppp!! q	 	" 	
 	
 	
 	!!*3Km!nnn!!3(=Da 	" 	
 	
 	
 	!!C)HOv 	" 	
 	
 	
 	!!"6S"Sm!nnn!!"6S"So!ppp!!"3%Td!eee!!"2Tq!rrr!!'<!=====r   r   c                    t          j        d          | _        t                      rdnd| _        t          j        |j        d           |j        | _        |j        | _        |j	        | _	        |j
        | _
        | j                            d|j         d|j                    |j        dk    rt          j        |j                  | _        n$|j        d	k    rt"          |j        d
k    rt"          | j                            d|j                    t'          j        |j        |j        |j	        |j
        |j                  | _        d | _        |j        rY| j                            d|j                    t'          j        |j        |j        |j	        |j
        |j                  | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d S )Nztransformers-cli/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outputr0   r1   r2   infotaskmodelr   from_pretrainedpipelineNotImplementedError
train_data	Processorcreate_from_csvr3   train_datasetvalid_datasetvalidation_datavalidation_splittrain_batch_sizevalid_batch_sizelearning_rateadam_epsilon)selfr   s     r   __init__zTrainCommand.__init__]   s   ()DEE!0!2!2?
DK$////k -+IDIIITZIIJJJ9---6FtzRRDMMY000%%Y...%%BBBCCC&6O*(n.
 
 
 " 	KV@TVVWWW!*!:$!. ,.#2" " "D !% 5 $ 5 $ 5!/ -r   c                 h    | j         dk    r|                                 S |                                 S )Nr+   )r6   run_tf	run_torchrK   s    r   runzTrainCommand.run   s-    >T!!;;== ~~r   c                     t           )N)r?   rP   s    r   rO   zTrainCommand.run_torch   s    !!r   c           	          | j                             | j        | j        | j        | j        | j        | j        | j                   | j         	                    | j
                   d S )N)rE   rF   rI   rJ   rG   rH   )r>   fitrC   rD   rF   rI   rJ   rG   rH   save_pretrainedr9   rP   s    r   rN   zTrainCommand.run_tf   sk     .!2,*!2!2 	 	
 	
 	
 	%%dk22222r   N)__name__
__module____qualname__staticmethodr   r)   r   rL   rQ   rO   rN    r   r   r   r   )   s        0>N 0> 0> 0> \0>d+.Y +. +. +. +.Z     
" " "3 3 3 3 3r   r   )r7   argparser   r   datar   rA   	pipelinesr   utilsr   r	   r
   r   r   RuntimeErrorUSE_XLAUSE_AMPr   r   rZ   r   r   <module>rb      s   
			 . . . . . . . . E E E E E E 2 2 2 2 2 2 @ @ @ @ @ @ @ @ @ @ ( ( ( ( ( (  m!3!3!5!5 m
,k
l
ll 
	    u3 u3 u3 u3 u3- u3 u3 u3 u3 u3r   