






import argparse

from transformers import BigBirdConfig, BigBirdForPreTraining, BigBirdForQuestionAnswering, load_tf_weights_in_big_bird
from transformers.utils import logging


logging.set_verbosity_info()


def 				snake_case__							(							UpperCAmelCase							:  Union[str, Any]    ,			UpperCAmelCase							:  str    ,			UpperCAmelCase							:  Dict    ,			UpperCAmelCase							:  Optional[int]       ):
    # Initialise PyTorch model
    lowerCAmelCase__   :Any      							=				BigBirdConfig.from_json_file(UpperCAmelCase       )
    print(F'''Building PyTorch model from configuration: {config}'''       )

    if is_trivia_qa:
        lowerCAmelCase__   :int      							=				BigBirdForQuestionAnswering(UpperCAmelCase       )
    else:
        lowerCAmelCase__   :Dict      							=				BigBirdForPreTraining(UpperCAmelCase       )

    # Load weights from tf checkpoint
    load_tf_weights_in_big_bird(UpperCAmelCase    ,			UpperCAmelCase    ,			is_trivia_qa=UpperCAmelCase       )

    # Save pytorch-model
    print(F'''Save PyTorch model to {pytorch_dump_path}'''       )
    model.save_pretrained(UpperCAmelCase       )


if __name__ == "__main__":
 _a    :   Tuple        =			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(
     """--big_bird_config_file""",
     default=None,
     type=str,
     required=True,
     help=(
         """The config json file corresponding to the pre-trained BERT 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."""
 )
 parser.add_argument(
     """--is_trivia_qa""", action="""store_true""", help="""Whether to convert a model with a trivia_qa head."""
 )
 _a    :   str        =			parser.parse_args()
 convert_tf_checkpoint_to_pytorch(
     args.tf_checkpoint_path, args.big_bird_config_file, args.pytorch_dump_path, args.is_trivia_qa
 )











def 				snake_case__							(							UpperCAmelCase							:  str       ):
    return "".join(chr(ord(UpperCAmelCase       ) - 3_2       ) if "a" <= char <= "z" else char for char in word       )


if __name__ == "__main__":
 from doctest import testmod

 testmod()



