
import argparse

import torch

from transformers import GPTaConfig, GPTaModel, load_tf_weights_in_gpta
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()


def     UpperCAmelCase_  (						__lowerCAmelCase	,					__lowerCAmelCase	,					__lowerCAmelCase	) ->						Tuple:
    # Construct model
    if gpta_config_file == "":
        __lowercase		:			Tuple	    =       GPTaConfig()
    else:
        __lowercase		:			str	    =       GPTaConfig.from_json_file(__lowerCAmelCase	)
    __lowercase		:			Optional[int]	    =       GPTaModel(__lowerCAmelCase	)

    # Load weights from numpy
    load_tf_weights_in_gpta(__lowerCAmelCase	,					__lowerCAmelCase	,					__lowerCAmelCase	)

    # Save pytorch-model
    __lowercase		:			Union[str, Any]	    =       pytorch_dump_folder_path + '''/''' + WEIGHTS_NAME
    __lowercase		:			Dict	    =       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__":
 __lowerCAmelCase					:			str			      =		argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     "--gpt2_checkpoint_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(
     "--gpt2_config_file",
     default="",
     type=str,
     help=(
         "An optional config json file corresponding to the pre-trained OpenAI model. \n"
         "This specifies the model architecture."
     ),
 )
 __lowerCAmelCase					:			List[Any]			      =		parser.parse_args()
 convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)




from math import factorial

__lowerCAmelCase					:			Dict			      =		{str(d): factorial(d) for d in range(10)}


def     UpperCAmelCase_  (						__lowerCAmelCase	) ->						int:
    return sum(DIGIT_FACTORIAL[d] for d in str(__lowerCAmelCase	)	)


def     UpperCAmelCase_  (						) ->						int:
    __lowercase		:			int	    =       7 * factorial(9	) + 1
    return sum(i for i in range(3	,					__lowerCAmelCase	) if sum_of_digit_factorial(__lowerCAmelCase	) == i	)


if __name__ == "__main__":
 print(F'{solution() = }')


