






"""simple docstring"""

import argparse

import pytorch_lightning as pl
import torch
from torch import nn

from transformers import LongformerForQuestionAnswering, LongformerModel

class 						A_							(      pl.LightningModule  ):







				def __init__(							self							:						List[Any]						,    __lowerCamelCase							:						List[str]	)				->					Optional[Any]:
										super().__init__()
										__magic_name__     :   Any            =     model
										__magic_name__     :   Optional[Any]            =     2
										__magic_name__     :   Union[str, Any]            =     nn.Linear(self.model.config.hidden_size						,    self.num_labels	)







				def     _snake_case					(							self							:						Optional[Any]	)				->					Dict:
										pass






def _lowerCAmelCase	(  __lowerCamelCase:int ,						__lowerCamelCase:Union[str, Any] ,						__lowerCamelCase:Union[str, Any]   ):

						'''simple docstring'''






						__magic_name__     :   Union[str, Any]            =     LongformerModel.from_pretrained(__lowerCamelCase   )
						__magic_name__     :   Optional[Any]            =     LightningModel(__lowerCamelCase   )

						__magic_name__     :   Union[str, Any]            =     torch.load(__lowerCamelCase ,						map_location=torch.device("cpu"   )   )
						lightning_model.load_state_dict(ckpt["state_dict"]   )

						# init longformer question answering model
						__magic_name__     :   int            =     LongformerForQuestionAnswering.from_pretrained(__lowerCamelCase   )

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

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


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











"""simple docstring"""

def _lowerCAmelCase	(  __lowerCamelCase:int   ):

						'''simple docstring'''






						__magic_name__            =     n ** (1 / 3)
						return (val * val * val) == n


if __name__ == "__main__":
			print(perfect_cube(27))
			print(perfect_cube(4))



