




import argparse

import pytorch_lightning as pl
import torch
from torch import nn

from transformers import LongformerForQuestionAnswering, LongformerModel







class   A(						pl.LightningModule       ):



 '''simple docstring'''


 def __init__(    self :  Optional[int]						,							A_ :  Any  )       ->     Dict:

       """simple docstring"""






       super().__init__()
       lowerCamelCase_							=   model
       lowerCamelCase_							=   2
       lowerCamelCase_							=   nn.Linear(self.model.config.hidden_size						,							self.num_labels  )





 def     a__			(    self :  int  )       ->     List[str]:

       """simple docstring"""






       pass

def       _SCREAMING_SNAKE_CASE      (							lowercase     :	str     ,							lowercase     :	str     ,							lowercase     :	str					):


      '''simple docstring'''



      lowerCamelCase_							=   LongformerModel.from_pretrained(lowercase					)
      lowerCamelCase_							=   LightningModel(lowercase					)

      lowerCamelCase_							=   torch.load(lowercase     ,							map_location=torch.device('cpu'					)					)
      lightning_model.load_state_dict(ckpt['state_dict']					)

      # init longformer question answering model
      lowerCamelCase_							=   LongformerForQuestionAnswering.from_pretrained(lowercase					)

      # transfer weights
      longformer_for_qa.longformer.load_state_dict(lightning_model.model.state_dict()					)
      longformer_for_qa.qa_outputs.load_state_dict(lightning_model.qa_outputs.state_dict()					)
      longformer_for_qa.eval()

      # save model
      longformer_for_qa.save_pretrained(lowercase					)

      print(f"""Conversion successful. Model saved under {pytorch_dump_folder_path}"""					)


if __name__ == "__main__":
 lowerCamelCase    :		int			   =       argparse.ArgumentParser()
 # Required parameters
 parser.add_argument(
     "--longformer_model",
     default=None,
     type=str,
     required=True,
     help="model identifier of longformer. Should be either `longformer-base-4096` or `longformer-large-4096`.",
 )
 parser.add_argument(
     "--longformer_question_answering_ckpt_path",
     default=None,
     type=str,
     required=True,
     help="Path the official PyTorch Lightning Checkpoint.",
 )
 parser.add_argument(
     "--pytorch_dump_folder_path", default=None, type=str, required=True, help="Path to the output PyTorch model."
 )
 lowerCamelCase    :		Optional[Any]			   =       parser.parse_args()
 convert_longformer_qa_checkpoint_to_pytorch(
     args.longformer_model, args.longformer_question_answering_ckpt_path, args.pytorch_dump_folder_path
 )









def       _SCREAMING_SNAKE_CASE      (							lowercase     :	str     ,							lowercase     :	int					):


      '''simple docstring'''



      return [sentence[i : i + ngram_size] for i in range(len(lowercase					) - ngram_size + 1					)]


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

 testmod()



