Ë
    S^(hÅ  ã                   óª   — 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y)é    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    úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/commands/train.pyÚtrain_command_factoryr       s   € ô ˜ÓÐó    c                   ó@   — e Zd Zedefd„«       Zdefd„Zd„ Zd„ Z	d„ Z
y)	r   Úparserc                 ó  — | j                  dd¬«      }|j                  dt        dd¬«       |j                  dt        d	d
¬«       |j                  dt        dd¬«       |j                  dt        dd¬«       |j                  ddd¬«       |j                  dt        dd¬«       |j                  dt        dd¬«       |j                  dt        dd¬«       |j                  dt        d d!¬«       |j                  d"t        d#d$¬«       |j                  d%t        d&d'¬«       |j                  d(t        d)d*¬«       |j                  d+t        d,d-¬«       |j                  d.t        d/d0¬«       |j                  t        ¬1«       y2)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:Œ0âŽyE>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ð 	"ô 	
ð 	×!Ñ!Ø¤#¨qÐ7kð 	"ô 	
ð 	×!Ñ!Ø¤¨QÐ5gð 	"ô 	
ð 	×!Ñ!Ø |Ð:ið 	"ô 	
ð 	×!Ñ!Ð"5¼CÈÐRoÐ!ÔpØ×!Ñ!Ø ÜØØqð	 	"ô 	
ð 	×!Ñ! *´3ÀÐKmÐ!Ônà×!Ñ!Øœ3Ð(=ÐDað 	"ô 	
ð 	×!Ñ!ØœCÐ)HÐOvð 	"ô 	
ð 	×!Ñ!Ð"6¼SÈ"ÐSmÐ!ÔnØ×!Ñ!Ð"6¼SÈ"ÐSoÐ!ÔpØ×!Ñ!Ð"3¼%ÈÐTdÐ!ÔeØ×!Ñ!Ð"2¼ÈÐTqÐ!ÔrØ×!Ñ!Ô'<Ð!Õ=r   r   c                 ó  — t        j                  d«      | _        t        «       rdnd| _        t        j                  |j                  d¬«       |j                  | _        |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                  j                  d|j$                  › �«       t'        j(                  |j$                  |j                  |j                  |j                  |j*                  ¬«      | _        d | _        |j0                  ry| j                  j                  d|j0                  › �«       t'        j(                  |j0                  |j                  |j                  |j                  |j*                  ¬«      | _        |j2                  | _        |j4                  | _        |j6                  | _        |j8                  | _        |j:                  | _        y )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ˆŒä!0Ô!2™¸ˆŒä
�‰�D—K‘K¨$Õ/Ø—k‘kˆŒà ×-Ñ-ˆÔØ×+Ñ+ˆÔØŸ™ˆŒà�‰×Ñ˜8 D§I¡I ;¨n¸T¿Z¹Z¸LÐIÔJØ�9‰9Ð-Ò-Ü6×FÑFÀtÇzÁzÓRˆD�MØ�Y‰YÐ0Ò0Ü%Ð%Ø�Y‰YÐ.Ò.Ü%Ð%à�‰×ÑÐ0°·±Ð0AÐBÔCÜ&×6Ñ6Ø�O‰OØ×*Ñ*Ø×(Ñ(Ø—n‘nØ×.Ñ.ô
ˆÔð "ˆÔØ×ÒØ�K‰K×ÑÐ?À×@TÑ@TÐ?UÐVÔWÜ!*×!:Ñ!:Ø×$Ñ$Ø!×.Ñ.Ø ×,Ñ,ØŸ.™.Ø#×2Ñ2ô"ˆDÔð !%× 5Ñ 5ˆÔØ $× 5Ñ 5ˆÔØ $× 5Ñ 5ˆÔØ!×/Ñ/ˆÔØ ×-Ñ-ˆÕr   c                 ó`   — | j                   dk(  r| j                  «       S | j                  «       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                   j                  | j                  «       y )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’   sp   € Ø�‰×ÑØ×ÑØ ×.Ñ.Ø!×2Ñ2Ø×,Ñ,Ø×*Ñ*Ø!×2Ñ2Ø!×2Ñ2ð 	ô 	
ð 	�‰×%Ñ% d§k¡kÕ2r   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r)   r   rL   rQ   rO   rN   © r   r   r   r   )   s8   „ Øð0> Nò 0>ó ð0>ðd+.˜Yó +.òZ ò
"ó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Ý 2ß @Ñ @Ý (ñ ÔÑ!3Ô!5Ù
ÐkÓ
lÐlð €Ø
€ð 	ó ôu3Ð-õ u3r   