




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 						__A						(      __lowerCamelCase				,     __lowerCamelCase				,     __lowerCamelCase       ) ->			Optional[Any]:
	# Construct model
	if openai_config_file == "":
		a									=				OpenAIGPTConfig()
	else:
		a									=				OpenAIGPTConfig.from_json_file(__lowerCamelCase       )
	a									=				OpenAIGPTModel(__lowerCamelCase       )

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

	# Save pytorch-model
	a									=				pytorch_dump_folder_path + """/""" + WEIGHTS_NAME
	a									=				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__":
		__UpperCamelCase   :			Dict          = 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."
		    ),
		)
		__UpperCamelCase   :			int          = parser.parse_args()
		convert_openai_checkpoint_to_pytorch(
		    args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
		)







import operator as op


__UpperCamelCase   :			Optional[Any]          = "scaler.pt"
__UpperCamelCase   :			Optional[Any]          = "pytorch_model"
__UpperCamelCase   :			str          = "random_states"
__UpperCamelCase   :			Optional[int]          = "optimizer"
__UpperCamelCase   :			Optional[int]          = "scheduler"
__UpperCamelCase   :			str          = "pytorch_model.bin"
__UpperCamelCase   :			List[str]          = "pytorch_model.bin.index.json"
__UpperCamelCase   :			List[str]          = "model.safetensors"
__UpperCamelCase   :			Optional[int]          = "model.safetensors.index.json"
__UpperCamelCase   :			List[str]          = "1.10.2"
__UpperCamelCase   :			Dict          = "py38"
__UpperCamelCase   :			List[str]          = "4.17.0"
__UpperCamelCase   :			Any          = ["ml.p3.16xlarge", "ml.p3dn.24xlarge", "ml.p4dn.24xlarge"]
__UpperCamelCase   :			Any          = ["FULL_SHARD", "SHARD_GRAD_OP", "NO_SHARD", "HYBRID_SHARD", "HYBRID_SHARD_ZERO2"]
__UpperCamelCase   :			int          = ["TRANSFORMER_BASED_WRAP", "SIZE_BASED_WRAP", "NO_WRAP"]
__UpperCamelCase   :			Dict          = ["BACKWARD_PRE", "BACKWARD_POST", "NO_PREFETCH"]
__UpperCamelCase   :			str          = ["FULL_STATE_DICT", "LOCAL_STATE_DICT", "SHARDED_STATE_DICT"]
__UpperCamelCase   :			List[Any]          = "2.0.1"
__UpperCamelCase   :			int          = ["pdsh", "standard", "openmpi", "mvapich"]
__UpperCamelCase   :			List[str]          = ["default", "reduce-overhead", "max-autotune"]

__UpperCamelCase   :			List[Any]          = {">": op.gt, ">=": op.ge, "==": op.eq, "!=": op.ne, "<=": op.le, "<": op.lt}

# These are the args for `torch.distributed.launch` for pytorch < 1.9
__UpperCamelCase   :			List[Any]          = [
    "nnodes",
    "nproc_per_node",
    "rdzv_backend",
    "rdzv_endpoint",
    "rdzv_id",
    "rdzv_conf",
    "standalone",
    "max_restarts",
    "monitor_interval",
    "start_method",
    "role",
    "module",
    "m",
    "no_python",
    "run_path",
    "log_dir",
    "r",
    "redirects",
    "t",
    "tee",
    "node_rank",
    "master_addr",
    "master_port",
]

__UpperCamelCase   :			List[str]          = ["DEEPSPEED", "MULTI_GPU", "FSDP", "MEGATRON_LM"]
__UpperCamelCase   :			int          = ["DEEPSPEED", "MULTI_XPU", "FSDP"]

