


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     UpperCamelCase_      (   A__ :       List[str]							,   A__ :       List[str]							,   A__ :       List[Any] ):
  '''simple docstring'''





  if openai_config_file == "":
    lowerCAmelCase_      :				int      =       OpenAIGPTConfig()
  else:
    lowerCAmelCase_      :				Tuple      =       OpenAIGPTConfig.from_json_file(A__ )
  lowerCAmelCase_      :				Optional[Any]      =       OpenAIGPTModel(A__ )

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

  # Save pytorch-model
  lowerCAmelCase_      :				List[Any]      =       pytorch_dump_folder_path + """/""" + WEIGHTS_NAME
  lowerCAmelCase_      :				int      =       pytorch_dump_folder_path + """/""" + CONFIG_NAME
  print(f'Save PyTorch model to {pytorch_weights_dump_path}' )
  torch.save(model.state_dict()							,   A__ )
  print(f'Save configuration file to {pytorch_config_dump_path}' )
  with open(A__							,   """w"""							,   encoding="""utf-8""" ) as f:
    f.write(config.to_json_string() )


if __name__ == "__main__":
  __A :  List[Any]    							=				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."
      ),
  )
  __A :  Any    							=				parser.parse_args()
  convert_openai_checkpoint_to_pytorch(
      args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
  )







'''simple docstring'''






from typing import List

from ...configuration_utils import PretrainedConfig
from ...utils import logging


__A :  Dict    							=				logging.get_logger(__name__)

__A :  int    							=				{
    "snap-research/efficientformer-l1-300": (
        "https://huggingface.co/snap-research/efficientformer-l1-300/resolve/main/config.json"
    ),
}






class        __snake_case	(       _SCREAMING_SNAKE_CASE):







    """simple docstring"""



    lowercase       			= 'efficientformer'

    def __init__(       self   :  Any   ,						lowerCamelCase   :  List[int] = [3, 2, 6, 4]   ,						lowerCamelCase   :  List[int] = [48, 96, 2_24, 4_48]   ,						lowerCamelCase   :  List[bool] = [True, True, True, True]   ,						lowerCamelCase   :  int = 4_48   ,						lowerCamelCase   :  int = 32   ,						lowerCamelCase   :  int = 4   ,						lowerCamelCase   :  int = 7   ,						lowerCamelCase   :  int = 5   ,						lowerCamelCase   :  int = 8   ,						lowerCamelCase   :  int = 4   ,						lowerCamelCase   :  float = 0.0   ,						lowerCamelCase   :  int = 16   ,						lowerCamelCase   :  int = 3   ,						lowerCamelCase   :  int = 3   ,						lowerCamelCase   :  int = 3   ,						lowerCamelCase   :  int = 2   ,						lowerCamelCase   :  int = 1   ,						lowerCamelCase   :  float = 0.0   ,						lowerCamelCase   :  int = 1   ,						lowerCamelCase   :  bool = True   ,						lowerCamelCase   :  bool = True   ,						lowerCamelCase   :  float = 1E-5   ,						lowerCamelCase   :  str = "gelu"   ,						lowerCamelCase   :  float = 0.02   ,						lowerCamelCase   :  float = 1E-12   ,						lowerCamelCase   :  int = 2_24   ,						lowerCamelCase   :  float = 1E-05   ,						**lowerCamelCase   :  int   ,						)       ->  None:
      super().__init__(**lowerCamelCase		)

      lowerCAmelCase_      :				List[str]      =       hidden_act
      lowerCAmelCase_      :				List[Any]      =       hidden_dropout_prob
      lowerCAmelCase_      :				Any      =       hidden_sizes
      lowerCAmelCase_      :				List[Any]      =       num_hidden_layers
      lowerCAmelCase_      :				Union[str, Any]      =       num_attention_heads
      lowerCAmelCase_      :				Tuple      =       initializer_range
      lowerCAmelCase_      :				Union[str, Any]      =       layer_norm_eps
      lowerCAmelCase_      :				int      =       patch_size
      lowerCAmelCase_      :				List[str]      =       num_channels
      lowerCAmelCase_      :				Dict      =       depths
      lowerCAmelCase_      :				int      =       mlp_expansion_ratio
      lowerCAmelCase_      :				Optional[Any]      =       downsamples
      lowerCAmelCase_      :				Union[str, Any]      =       dim
      lowerCAmelCase_      :				Union[str, Any]      =       key_dim
      lowerCAmelCase_      :				str      =       attention_ratio
      lowerCAmelCase_      :				Tuple      =       resolution
      lowerCAmelCase_      :				Optional[Any]      =       pool_size
      lowerCAmelCase_      :				str      =       downsample_patch_size
      lowerCAmelCase_      :				Dict      =       downsample_stride
      lowerCAmelCase_      :				str      =       downsample_pad
      lowerCAmelCase_      :				str      =       drop_path_rate
      lowerCAmelCase_      :				List[Any]      =       num_metaad_blocks
      lowerCAmelCase_      :				Tuple      =       distillation
      lowerCAmelCase_      :				Optional[Any]      =       use_layer_scale
      lowerCAmelCase_      :				Dict      =       layer_scale_init_value
      lowerCAmelCase_      :				Optional[Any]      =       image_size
      lowerCAmelCase_      :				Optional[Any]      =       batch_norm_eps



