o
    h                     @   sN   d dl mZmZ ddlmZ ddlmZ defddZd	ZG d
d deZ	dS )    )ArgumentParser	Namespace   )logging   )BaseTransformersCLICommandargsc                 C   s   t | j| j| j| j| jS )zx
    Factory function used to convert a model TF 1.0 checkpoint in a PyTorch checkpoint.

    Returns: ServeCommand
    )ConvertCommand
model_typetf_checkpointpytorch_dump_outputconfigfinetuning_task_name)r    r   q/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/transformers/commands/convert.pyconvert_command_factory   s   r   z
transformers can only be used from the commandline to convert TensorFlow models in PyTorch, In that case, it requires
TensorFlow to be installed. Please see https://www.tensorflow.org/install/ for installation instructions.
c                
   @   sD   e Zd ZedefddZdededededef
d	d
Zdd ZdS )r	   parserc                 C   sx   | j ddd}|jdtddd |jdtdd	d |jd
tddd |jdtddd |jdtddd |jtd dS )z
        Register this command to argparse so it's available for the transformer-cli

        Args:
            parser: Root parser to register command-specific arguments
        convertzcCLI tool to run convert model from original author checkpoints to Transformers PyTorch checkpoints.)helpz--model_typeTzModel's type.)typerequiredr   z--tf_checkpointz%TensorFlow checkpoint path or folder.z--pytorch_dump_outputz'Path to the PyTorch saved model output.z--config z"Configuration file path or folder.)r   defaultr   z--finetuning_task_nameNzEOptional fine-tuning task name if the TF model was a finetuned model.)func)
add_parseradd_argumentstrset_defaultsr   )r   train_parserr   r   r   register_subcommand'   s&   z"ConvertCommand.register_subcommandr
   r   r   r   r   c                 G   s@   t d| _| jd|  || _|| _|| _|| _|| _d S )Nztransformers-cli/convertingzLoading model )	r   
get_logger_loggerinfo_model_type_tf_checkpoint_pytorch_dump_output_config_finetuning_task_name)selfr
   r   r   r   r   r   r   r   r   __init__C   s   	
zConvertCommand.__init__c                 C   sj  | j dkr$zddlm} W n ty   ttw || j| j| j d S | j dkrHzddlm} W n ty<   ttw || j| j| j d S | j dkrlzddl	m} W n ty`   ttw || j| j| j d S | j dkrzddl
m} W n ty   ttw || j| j| j d S | j dkrddlm} || j| j| j d S | j d	krzdd
lm} W n ty   ttw || j| j| j d S | j dkrzddlm} W n ty   ttw || j| j| j| j d S | j dkrddlm} || j| j d S | j dkrddlm} || j| j d S | j dkr1ddlm} || j| j| j d S td)Nalbertr   ) convert_tf_checkpoint_to_pytorchbertfunnelt5gpt)$convert_openai_checkpoint_to_pytorchgpt2)"convert_gpt2_checkpoint_to_pytorchxlnet)#convert_xlnet_checkpoint_to_pytorchxlm)!convert_xlm_checkpoint_to_pytorchlxmert)$convert_lxmert_checkpoint_to_pytorchrembert)(convert_rembert_tf_checkpoint_to_pytorchzU--model_type should be selected in the list [bert, gpt, gpt2, t5, xlnet, xlm, lxmert])r#   >models.albert.convert_albert_original_tf_checkpoint_to_pytorchr+   ImportErrorIMPORT_ERROR_MESSAGEr$   r&   r%   :models.bert.convert_bert_original_tf_checkpoint_to_pytorch>models.funnel.convert_funnel_original_tf_checkpoint_to_pytorch6models.t5.convert_t5_original_tf_checkpoint_to_pytorch>models.openai.convert_openai_original_tf_checkpoint_to_pytorchr0   :models.gpt2.convert_gpt2_original_tf_checkpoint_to_pytorchr2   <models.xlnet.convert_xlnet_original_tf_checkpoint_to_pytorchr4   r'   =models.xlm.convert_xlm_original_pytorch_checkpoint_to_pytorchr6   >models.lxmert.convert_lxmert_original_tf_checkpoint_to_pytorchr8   7models.rembert.convert_rembert_tf_checkpoint_to_pytorchr:   
ValueError)r(   r+   r0   r2   r4   r6   r8   r:   r   r   r   runU   sr   






zConvertCommand.runN)	__name__
__module____qualname__staticmethodr   r   r   r)   rH   r   r   r   r   r	   &   s    
r	   N)
argparser   r   utilsr   r   r   r   r=   r	   r   r   r   r   <module>   s   