




import argparse

import torch

from transformers import GPTaConfig, GPTaModel, load_tf_weights_in_gpta
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	List[str]			,			__UpperCAmelCase						:	Tuple			,			__UpperCAmelCase						:	Any							)					-> List[Any]:
      # Construct model
      if gpta_config_file == "":
            SCREAMING_SNAKE_CASE_							=			GPTaConfig()
      else:
            SCREAMING_SNAKE_CASE_							=			GPTaConfig.from_json_file(__UpperCAmelCase							)
      SCREAMING_SNAKE_CASE_							=			GPTaModel(__UpperCAmelCase							)

      # Load weights from numpy
      load_tf_weights_in_gpta(__UpperCAmelCase			,			__UpperCAmelCase			,			__UpperCAmelCase							)

      # Save pytorch-model
      SCREAMING_SNAKE_CASE_							=			pytorch_dump_folder_path + '/' + WEIGHTS_NAME
      SCREAMING_SNAKE_CASE_							=			pytorch_dump_folder_path + '/' + CONFIG_NAME
      print(f"Save PyTorch model to {pytorch_weights_dump_path}"							)
      torch.save(model.state_dict()			,			__UpperCAmelCase							)
      print(f"Save configuration file to {pytorch_config_dump_path}"							)
      with open(__UpperCAmelCase			,			'w'			,			encoding='utf-8'							) as f:
            f.write(config.to_json_string()							)


if __name__ == "__main__":
   lowerCamelCase__ :   Dict					=							argparse.ArgumentParser()
   # Required parameters
   parser.add_argument(
       '--gpt2_checkpoint_path', default=None, type=str, required=True, help='Path to the TensorFlow checkpoint path.'
   )
   parser.add_argument(
       '--pytorch_dump_folder_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
   )
   parser.add_argument(
       '--gpt2_config_file',
       default='',
       type=str,
       help=(
           'An optional config json file corresponding to the pre-trained OpenAI model. \n'
           'This specifies the model architecture.'
       ),
   )
   lowerCamelCase__ :   List[str]					=							parser.parse_args()
   convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)





def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number | (1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number & ~(1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number ^ (1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> bool:
      return ((number >> position) & 1) == 1

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return int((number & (1 << position)) != 0							)


if __name__ == "__main__":
   import doctest

   doctest.testmod()