






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_flax_available, is_torch_available


SCREAMING_SNAKE_CASE__   :      Dict				=		{
    """configuration_gpt_neo""": ["""GPT_NEO_PRETRAINED_CONFIG_ARCHIVE_MAP""", """GPTNeoConfig""", """GPTNeoOnnxConfig"""],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE__   :      Dict				=		[
					    """GPT_NEO_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """GPTNeoForCausalLM""",
					    """GPTNeoForQuestionAnswering""",
					    """GPTNeoForSequenceClassification""",
					    """GPTNeoForTokenClassification""",
					    """GPTNeoModel""",
					    """GPTNeoPreTrainedModel""",
					    """load_tf_weights_in_gpt_neo""",
					]

try:
					if not is_flax_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE__   :      Union[str, Any]				=		[
					    """FlaxGPTNeoForCausalLM""",
					    """FlaxGPTNeoModel""",
					    """FlaxGPTNeoPreTrainedModel""",
					]


if TYPE_CHECKING:
					from .configuration_gpt_neo import GPT_NEO_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTNeoConfig, GPTNeoOnnxConfig

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_gpt_neo import (
										    GPT_NEO_PRETRAINED_MODEL_ARCHIVE_LIST,
										    GPTNeoForCausalLM,
										    GPTNeoForQuestionAnswering,
										    GPTNeoForSequenceClassification,
										    GPTNeoForTokenClassification,
										    GPTNeoModel,
										    GPTNeoPreTrainedModel,
										    load_tf_weights_in_gpt_neo,
										)

					try:
										if not is_flax_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_flax_gpt_neo import FlaxGPTNeoForCausalLM, FlaxGPTNeoModel, FlaxGPTNeoPreTrainedModel


else:
					import sys

					SCREAMING_SNAKE_CASE__   :      List[str]				=		_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)














import argparse

import torch

from transformers import MobileBertConfig, MobileBertForPreTraining, load_tf_weights_in_mobilebert
from transformers.utils import logging


logging.set_verbosity_info()






def      _snake_case     (__lowercase     ,   __lowercase     ,   __lowercase):
   # Initialise PyTorch model
   UpperCamelCase_						=  MobileBertConfig.from_json_file(__lowercase)
   print(f"""Building PyTorch model from configuration: {config}""")
   UpperCamelCase_						=  MobileBertForPreTraining(__lowercase)
   # Load weights from tf checkpoint
   UpperCamelCase_						=  load_tf_weights_in_mobilebert(__lowercase     ,   __lowercase     ,   __lowercase)
   # Save pytorch-model
   print(f"""Save PyTorch model to {pytorch_dump_path}""")
   torch.save(model.state_dict()     ,   __lowercase)


if __name__ == "__main__":
 snake_case__   :						int													=   argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     """--tf_checkpoint_path""", default=None, type=str, required=True, help="""Path to the TensorFlow checkpoint path."""
 )
 parser.add_argument(
     """--mobilebert_config_file""",
     default=None,
     type=str,
     required=True,
     help=(
         """The config json file corresponding to the pre-trained MobileBERT model. \n"""
         """This specifies the model architecture."""
     ),
 )
 parser.add_argument(
     """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
 )
 snake_case__   :						Optional[Any]													=   parser.parse_args()
 convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.mobilebert_config_file, args.pytorch_dump_path)





