






"""simple docstring"""

import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()






def _lowerCAmelCase	(  __lowerCamelCase:List[str] ,						__lowerCamelCase:int ,						__lowerCamelCase:Union[str, Any]   ):

						'''simple docstring'''






						if openai_config_file == "":
												__magic_name__            =     OpenAIGPTConfig()
						else:
												__magic_name__            =     OpenAIGPTConfig.from_json_file(__lowerCamelCase   )
						__magic_name__            =     OpenAIGPTModel(__lowerCamelCase   )

						# Load weights from numpy
						load_tf_weights_in_openai_gpt(__lowerCamelCase ,						__lowerCamelCase ,						__lowerCamelCase   )

						# Save pytorch-model
						__magic_name__            =     pytorch_dump_folder_path + "/" + WEIGHTS_NAME
						__magic_name__            =     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__":
			lowercase    			=       argparse.ArgumentParser()
			# Required parameters
			parser.add_argument(
			    '''--openai_checkpoint_folder_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(
			    '''--openai_config_file''',
			    default='''''',
			    type=str,
			    help=(
			        '''An optional config json file corresponding to the pre-trained OpenAI model. \n'''
			        '''This specifies the model architecture.'''
			    ),
			)
			lowercase    			=       parser.parse_args()
			convert_openai_checkpoint_to_pytorch(
			    args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
			)











"""simple docstring"""

def _lowerCAmelCase	(  __lowerCamelCase:int   ):

						'''simple docstring'''






						if number < 0:
												raise ValueError("number must not be negative"   )
						return number & (number - 1) == 0


if __name__ == "__main__":
			import doctest

			doctest.testmod()



