o
    Zh                     @   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   L/var/www/auris/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   Z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/convertingzLoading model )	r   Z
get_loggerZ_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)NZalbertr   ) convert_tf_checkpoint_to_pytorchZbertZfunnelZt5Zgpt)$convert_openai_checkpoint_to_pytorchZgpt2)"convert_gpt2_checkpoint_to_pytorchZxlnet)#convert_xlnet_checkpoint_to_pytorchZxlm)!convert_xlm_checkpoint_to_pytorchZlxmert)$convert_lxmert_checkpoint_to_pytorchZrembert)(convert_rembert_tf_checkpoint_to_pytorchzU--model_type should be selected in the list [bert, gpt, gpt2, t5, xlnet, xlm, lxmert])r    Z>models.albert.convert_albert_original_tf_checkpoint_to_pytorchr'   ImportErrorIMPORT_ERROR_MESSAGEr!   r#   r"   Z:models.bert.convert_bert_original_tf_checkpoint_to_pytorchZ>models.funnel.convert_funnel_original_tf_checkpoint_to_pytorchZ6models.t5.convert_t5_original_tf_checkpoint_to_pytorchZ>models.openai.convert_openai_original_tf_checkpoint_to_pytorchr(   Z:models.gpt2.convert_gpt2_original_tf_checkpoint_to_pytorchr)   Z<models.xlnet.convert_xlnet_original_tf_checkpoint_to_pytorchr*   r$   Z=models.xlm.convert_xlm_original_pytorch_checkpoint_to_pytorchr+   Z>models.lxmert.convert_lxmert_original_tf_checkpoint_to_pytorchr,   Z7models.rembert.convert_rembert_tf_checkpoint_to_pytorchr-   
ValueError)r%   r'   r(   r)   r*   r+   r,   r-   r   r   r   runU   sr   






zConvertCommand.runN)	__name__
__module____qualname__staticmethodr   r   r   r&   r1   r   r   r   r   r	   &   s    
r	   N)
argparser   r   utilsr   r   r   r   r/   r	   r   r   r   r   <module>   s   