




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 :     str				,							lowerCamelCase__ :     Union[str, Any]				)    ->						str:
													"""simple docstring"""


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






						def     UpperCAmelCase_      ( self :     int				)    ->						List[Any]:
													"""simple docstring"""


													pass







def 		_A(       UpperCamelCase__							:			str				,       UpperCamelCase__							:			str				,       UpperCamelCase__							:			str				)    -> Union[str, Any]:
							'''simple docstring'''


							__lowercase      =    LongformerModel.from_pretrained(UpperCamelCase__				)
							__lowercase      =    LightningModel(UpperCamelCase__				)

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

							# init longformer question answering model
							__lowercase      =    LongformerForQuestionAnswering.from_pretrained(UpperCamelCase__				)

							# 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(UpperCamelCase__				)

							print(F'Conversion successful. Model saved under {pytorch_dump_folder_path}'				)


if __name__ == "__main__":
			UpperCAmelCase__				     = 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."
			)
			UpperCAmelCase__				     = parser.parse_args()
			convert_longformer_qa_checkpoint_to_pytorch(
			    args.longformer_model, args.longformer_question_answering_ckpt_path, args.pytorch_dump_folder_path
			)












from .glue import glue_convert_examples_to_features, glue_output_modes, glue_processors, glue_tasks_num_labels
from .squad import SquadExample, SquadFeatures, SquadVaProcessor, SquadVaProcessor, squad_convert_examples_to_features
from .utils import DataProcessor, InputExample, InputFeatures, SingleSentenceClassificationProcessor
from .xnli import xnli_output_modes, xnli_processors, xnli_tasks_num_labels






