




'''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   lowercase__(			__UpperCamelCase:					List[str]      ,__UpperCamelCase:					Any      ,__UpperCamelCase:					Optional[Any]    ):

      """simple docstring"""






      if openai_config_file == "":
            SCREAMING_SNAKE_CASE   :      Tuple    					=						OpenAIGPTConfig()
      else:
            SCREAMING_SNAKE_CASE   :      int    					=						OpenAIGPTConfig.from_json_file(__UpperCamelCase    )
      SCREAMING_SNAKE_CASE   :      Optional[int]    					=						OpenAIGPTModel(__UpperCamelCase    )

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

      # Save pytorch-model
      SCREAMING_SNAKE_CASE   :      int    					=						pytorch_dump_folder_path + '/' + WEIGHTS_NAME
      SCREAMING_SNAKE_CASE   :      Tuple    					=						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__":
      UpperCamelCase_    	=				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_    	=				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   lowercase__(			__UpperCamelCase:					int = 1_00_00_00    ):

      """simple docstring"""






      SCREAMING_SNAKE_CASE   :      Tuple    					=						[i - 1 for i in range(limit + 1    )]

      for i in range(2      ,limit + 1    ):
            if phi[i] == i - 1:
                  for j in range(2 * i      ,limit + 1      ,__UpperCamelCase    ):
                        phi[j] -= phi[j] // i

      return sum(phi[2 : limit + 1]    )


if __name__ == "__main__":
      print(solution())


