





'''simple docstring'''




import argparse
import os

import torch

from transformers import (
    XLNetConfig,
    XLNetForQuestionAnswering,
    XLNetForSequenceClassification,
    XLNetLMHeadModel,
    load_tf_weights_in_xlnet,
)
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


_SCREAMING_SNAKE_CASE							     =			{
    "cola": 2,
    "mnli": 3,
    "mrpc": 2,
    "sst-2": 2,
    "sts-b": 1,
    "qqp": 2,
    "qnli": 2,
    "rte": 2,
    "wnli": 2,
}


logging.set_verbosity_info()





def 	__lowerCamelCase			(      __lowerCAmelCase       :							Dict      ,    __lowerCAmelCase       :							int      ,    __lowerCAmelCase       :							List[Any]      ,    __lowerCAmelCase       :							Union[str, Any]=None		)		->  List[str]:
   # Initialise PyTorch model
   snake_case 						=   XLNetConfig.from_json_file(__lowerCAmelCase		)

   snake_case 						=   finetuning_task.lower() if finetuning_task is not None else """"""
   if finetuning_task in GLUE_TASKS_NUM_LABELS:
      print(F'''Building PyTorch XLNetForSequenceClassification model from configuration: {config}'''		)
      snake_case 						=   finetuning_task
      snake_case 						=   GLUE_TASKS_NUM_LABELS[finetuning_task]
      snake_case 						=   XLNetForSequenceClassification(__lowerCAmelCase		)
   elif "squad" in finetuning_task:
      snake_case 						=   finetuning_task
      snake_case 						=   XLNetForQuestionAnswering(__lowerCAmelCase		)
   else:
      snake_case 						=   XLNetLMHeadModel(__lowerCAmelCase		)

   # Load weights from tf checkpoint
   load_tf_weights_in_xlnet(__lowerCAmelCase      ,    __lowerCAmelCase      ,    __lowerCAmelCase		)

   # Save pytorch-model
   snake_case 						=   os.path.join(__lowerCAmelCase      ,    __lowerCAmelCase		)
   snake_case 						=   os.path.join(__lowerCAmelCase      ,    __lowerCAmelCase		)
   print(F'''Save PyTorch model to {os.path.abspath(__lowerCAmelCase		)}'''		)
   torch.save(model.state_dict()      ,    __lowerCAmelCase		)
   print(F'''Save configuration file to {os.path.abspath(__lowerCAmelCase		)}'''		)
   with open(__lowerCAmelCase      ,    """w"""      ,    encoding="""utf-8"""		) as f:
      f.write(config.to_json_string()		)


if __name__ == "__main__":
 _SCREAMING_SNAKE_CASE							     =			argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     "--tf_checkpoint_path", default=None, type=str, required=True, help="Path to the TensorFlow checkpoint path."
 )
 parser.add_argument(
     "--xlnet_config_file",
     default=None,
     type=str,
     required=True,
     help=(
         "The config json file corresponding to the pre-trained XLNet model. \n"
         "This specifies the model architecture."
     ),
 )
 parser.add_argument(
     "--pytorch_dump_folder_path",
     default=None,
     type=str,
     required=True,
     help="Path to the folder to store the PyTorch model or dataset/vocab.",
 )
 parser.add_argument(
     "--finetuning_task",
     default=None,
     type=str,
     help="Name of a task on which the XLNet TensorFlow model was fine-tuned",
 )
 _SCREAMING_SNAKE_CASE							     =			parser.parse_args()
 print(args)

 convert_xlnet_checkpoint_to_pytorch(
     args.tf_checkpoint_path, args.xlnet_config_file, args.pytorch_dump_folder_path, args.finetuning_task
 )








'''simple docstring'''




import logging

from transformers.configuration_utils import PretrainedConfig


_SCREAMING_SNAKE_CASE							     =			logging.getLogger(__name__)
class 			_lowerCAmelCase		(			A__	):






     """simple docstring"""






     snake_case_						      =   "masked_bert"



     def __init__(   self							:			Any   ,       __snake_case							:			Optional[Any]=3_05_22   ,       __snake_case							:			List[Any]=7_68   ,       __snake_case							:			int=12   ,       __snake_case							:			List[str]=12   ,       __snake_case							:			int=30_72   ,       __snake_case							:			Optional[int]="gelu"   ,       __snake_case							:			Any=0.1   ,       __snake_case							:			Tuple=0.1   ,       __snake_case							:			List[str]=5_12   ,       __snake_case							:			Tuple=2   ,       __snake_case							:			Tuple=0.02   ,       __snake_case							:			Tuple=1e-12   ,       __snake_case							:			Union[str, Any]=0   ,       __snake_case							:			int="topK"   ,       __snake_case							:			int="constant"   ,       __snake_case							:			List[str]=0.0   ,       **__snake_case							:			Any   ,       )->	Union[str, Any]:
        super().__init__(pad_token_id=__snake_case   ,       **__snake_case						)

        snake_case 						=   vocab_size
        snake_case 						=   hidden_size
        snake_case 						=   num_hidden_layers
        snake_case 						=   num_attention_heads
        snake_case 						=   hidden_act
        snake_case 						=   intermediate_size
        snake_case 						=   hidden_dropout_prob
        snake_case 						=   attention_probs_dropout_prob
        snake_case 						=   max_position_embeddings
        snake_case 						=   type_vocab_size
        snake_case 						=   initializer_range
        snake_case 						=   layer_norm_eps
        snake_case 						=   pruning_method
        snake_case 						=   mask_init
        snake_case 						=   mask_scale

