

import logging
from dataclasses import dataclass, field
from typing import Optional

from seqaseq_trainer import arg_to_scheduler

from transformers import TrainingArguments


UpperCamelCase__		 =     logging.getLogger(__name__)

@dataclass
class     __snake_case    (				UpperCamelCase__  ):
       """simple docstring"""







       __SCREAMING_SNAKE_CASE				    =							field(
           default=0.0			,	metadata={"help": "The label smoothing epsilon to apply (if not zero)."}  )
       __SCREAMING_SNAKE_CASE				    =							field(default=UpperCamelCase__			,	metadata={"help": "Whether to SortishSamler or not."}  )
       __SCREAMING_SNAKE_CASE				    =							field(
           default=UpperCamelCase__			,	metadata={"help": "Whether to use generate to calculate generative metrics (ROUGE, BLEU)."}  )
       __SCREAMING_SNAKE_CASE				    =							field(default=UpperCamelCase__			,	metadata={"help": "whether to use adafactor"}  )
       __SCREAMING_SNAKE_CASE				    =							field(
           default=UpperCamelCase__			,	metadata={"help": "Encoder layer dropout probability. Goes into model.config."}  )
       __SCREAMING_SNAKE_CASE				    =							field(
           default=UpperCamelCase__			,	metadata={"help": "Decoder layer dropout probability. Goes into model.config."}  )
       __SCREAMING_SNAKE_CASE				    =							field(default=UpperCamelCase__			,	metadata={"help": "Dropout probability. Goes into model.config."}  )
       __SCREAMING_SNAKE_CASE				    =							field(
           default=UpperCamelCase__			,	metadata={"help": "Attention dropout probability. Goes into model.config."}  )
       __SCREAMING_SNAKE_CASE				    =							field(
           default="linear"			,	metadata={"help": f"Which lr scheduler to use. Selected in {sorted(arg_to_scheduler.keys()  )}"}			,	)








import argparse

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


logging.set_verbosity_info()


def       UpperCamelCase__(			UpperCamelCase__     :			Any					,	UpperCamelCase__     :			Optional[Any]					,	UpperCamelCase__     :			Dict					,	UpperCamelCase__     :			int    )->Union[str, Any]:
       # Initialise PyTorch model
       A__		   =		BigBirdConfig.from_json_file(UpperCamelCase__    )
       print(f"Building PyTorch model from configuration: {config}"    )

       if is_trivia_qa:
              A__		   =		BigBirdForQuestionAnswering(UpperCamelCase__    )
       else:
              A__		   =		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__: Optional[int]							   =						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__: Tuple							   =						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
       )





