

"""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 				snake_case_(_UpperCamelCase			,	_UpperCamelCase			,	_UpperCamelCase					)							->     Optional[int]:



  """simple docstring"""






  if gpta_config_file == "":
    _snake_case						=							GPTaConfig()
  else:
    _snake_case						=							GPTaConfig.from_json_file(_UpperCamelCase					)
  _snake_case						=							GPTaModel(_UpperCamelCase					)

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

  # Save pytorch-model
  _snake_case						=							pytorch_dump_folder_path + '''/''' + WEIGHTS_NAME
  _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__":
 __A      		=     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.'''
     ),
 )
 __A      		=     parser.parse_args()
 convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)




def 				snake_case_(_UpperCamelCase			,	_UpperCamelCase					)							->     str:



  """simple docstring"""






  if a < 0 or b < 0:
    raise ValueError('''the value of both inputs must be positive'''					)
  _snake_case						=							str(bin(_UpperCamelCase					)					)[2:]  # remove the leading "0b"
  _snake_case						=							str(bin(_UpperCamelCase					)					)[2:]
  _snake_case						=							max(len(_UpperCamelCase					)			,	len(_UpperCamelCase					)					)
  return "0b" + "".join(
      str(int('''1''' in (char_a, char_b)					)					)
      for char_a, char_b in zip(a_binary.zfill(_UpperCamelCase					)			,	b_binary.zfill(_UpperCamelCase					)					)					)


if __name__ == "__main__":
 import doctest

 doctest.testmod()

