





import argparse

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


logging.set_verbosity_info()


def     SCREAMING_SNAKE_CASE			(      lowerCAmelCase    ,       lowerCAmelCase    ,       lowerCAmelCase    ,       lowerCAmelCase					):
       # Initialise PyTorch model
       _UpperCamelCase              =						BigBirdConfig.from_json_file(lowerCAmelCase					)
       print(f'''Building PyTorch model from configuration: {config}'''					)

       if is_trivia_qa:
              _UpperCamelCase              =						BigBirdForQuestionAnswering(lowerCAmelCase					)
       else:
              _UpperCamelCase              =						BigBirdForPreTraining(lowerCAmelCase					)

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

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


if __name__ == "__main__":
       lowercase    : List[str]    	=  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."""
       )
       lowercase    : 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     SCREAMING_SNAKE_CASE			(      lowerCAmelCase					):
       _UpperCamelCase              =						0
       for ch in input_str:
              _UpperCamelCase              =						ord(lowerCAmelCase					)
              _UpperCamelCase              =						pow(2    ,       lowerCAmelCase					)

              # If we already turned on bit for current character's unicode
              if bitmap >> ch_unicode & 1 == 1:
                     return False
              bitmap |= ch_bit_index_on
       return True


if __name__ == "__main__":
       import doctest

       doctest.testmod()






