






'''simple docstring'''





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      _lowerCamelCase	(						__A    :							Optional[Any]		,		__A    :							str		,		__A    :							List[str] )      ->					int:


    if gpta_config_file == "":
        _UpperCAmelCase				:      Optional[Any]			  =				GPTaConfig()
    else:
        _UpperCAmelCase				:      Dict			  =				GPTaConfig.from_json_file(_lowerCamelCase )
    _UpperCAmelCase				:      Optional[Any]			  =				GPTaModel(_lowerCamelCase )

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

    # Save pytorch-model
    _UpperCAmelCase				:      List[str]			  =				pytorch_dump_folder_path + "/" + WEIGHTS_NAME
    _UpperCAmelCase				:      int			  =				pytorch_dump_folder_path + "/" + CONFIG_NAME
    print(f'''Save PyTorch model to {pytorch_weights_dump_path}''' )
    torch.save(model.state_dict()		,		_lowerCamelCase )
    print(f'''Save configuration file to {pytorch_config_dump_path}''' )
    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(
      '--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.'
      ),
  )
  SCREAMING_SNAKE_CASE 							=						parser.parse_args()
  convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)












def      _lowerCamelCase	(						__A    :							int )      ->					bool:
    if not isinstance(__A		,		__A ):
        _UpperCAmelCase				:      Tuple			  =				f'''Input value of [number={number}] must be an integer'''
        raise TypeError(__A )
    if number < 0:
        return False
    _UpperCAmelCase				:      List[str]			  =				number * number
    while number > 0:
        if number % 10 != number_square % 10:
            return False
        number //= 10
        number_square //= 10
    return True


if __name__ == "__main__":
  import doctest

  doctest.testmod()




