L iddlZddlmZmZddlmZddlmZddl m Z m Z m Z ddl mZe se sed d Zd Zd efd ZGd deZy)N)ArgumentParser Namespace)%SingleSentenceClassificationProcessor)TextClassificationPipeline)is_tf_availableis_torch_availablelogging)BaseTransformersCLICommandzRAt least one of PyTorch or TensorFlow 2.0+ should be installed to use CLI trainingFargsct|S)z Factory function used to instantiate training command from provided command line arguments. Returns: TrainCommand ) TrainCommand)r s a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/transformers/commands/train.pytrain_command_factoryr s  c@eZdZedefdZdefdZdZdZ dZ y) rparserc|jdd}|jdtdd|jdtd d |jd td d |jdtdd |jddd|jdtdd |jdtdd |jdtdd |jdtd d! |jd"td#d$ |jd%td&d' |jd(td)d* |jd+td,d- |jd.td/d0 |j t 1y2)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.)typerequiredrz--column_labelrz3Column of the dataset csv file with example labels.)rdefaultrz --column_textr z2Column of the dataset csv file with example texts.z --column_idrz0Column of the dataset csv file with example ids.z--skip_first_row store_truez-Skip the first row of the csv file (headers).)actionrz--validation_datazpath 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--tasktext_classificationzTask to train the model on.z--modelzgoogle-bert/bert-base-uncasedz%Model's name or path to stored model.z--train_batch_size zBatch size for training.z--valid_batch_size@zBatch size for validation.z--learning_rategiUMu>zLearning rate.z--adam_epsilong:0yE>zEpsilon for Adam optimizer.)funcN) add_parser add_argumentstrintfloat set_defaultsr)r train_parsers rregister_subcommandz TrainCommand.register_subcommand*s((7](^ !! v " !! 38m "  !! #q7k "  !! Q5g "  !! |:i "  !!"5CRo!p!! q "  !!*3Km!n!! 3(=Da "  !! C)HOv "  !!"6S"Sm!n!!"6S"So!p!!"3%Td!e!!"2Tq!r!!'<!=rr ctjd|_trdnd|_t j |jd|j|_|j|_|j|_ |j|_ |jjd|jd|j|jdk(r%tj|j|_n*|jd k(rt"|jd k(rt"|jjd |j$t'j(|j$|j|j|j|j* |_d|_|j0ry|jjd |j0t'j(|j0|j|j|j|j* |_|j2|_|j4|_|j6|_|j8|_|j:|_y)Nztransformers/trainingtftorchT)exist_okzLoading z pipeline for rtoken_classificationquestion_answeringzLoading dataset from ) column_label column_text column_idskip_first_rowz Loading validation dataset from )r get_loggerloggerr frameworkosmakedirsoutputr0r1r2infotaskmodelrfrom_pretrainedpipelineNotImplementedError train_data Processorcreate_from_csvr3 train_dataset valid_datasetvalidation_datavalidation_splittrain_batch_sizevalid_batch_size learning_rate adam_epsilon)selfr s r__init__zTrainCommand.__init__]s(()@A !0!2 DKK$/kk  --++ 8DII;nTZZLIJ 99- -6FFtzzRDM YY0 0% % YY. .% % 00ABC&66 OO**((nn..  "    KK  ?@T@T?UV W!*!:!:$$!.. ,,..#22 "D !% 5 5 $ 5 5 $ 5 5!// --rc`|jdk(r|jS|jS)Nr+)r6run_tf run_torchrKs rrunzTrainCommand.runs' >>T !;;= ~~rct)N)r?rPs rrOzTrainCommand.run_torchs!!rc |jj|j|j|j|j |j |j|j|jj|jy)N)rErFrIrJrGrH) r>fitrCrDrFrIrJrGrHsave_pretrainedr9rPs rrNzTrainCommand.run_tfsp     ..!22,,**!22!22   %%dkk2rN) __name__ __module__ __qualname__ staticmethodrr)rrLrQrOrNrrrr)s80>N0>0>d+.Y+.Z " 3rr)r7argparserrdatarrA pipelinesrutilsrr r rr RuntimeErrorUSE_XLAUSE_AMPrrrZrrrbs] .E2@@(!3!5 k ll   u3-u3r