
import argparse

import pytorch_lightning as pl
import torch
from torch import nn

from transformers import LongformerForQuestionAnswering, LongformerModel





class 				UpperCAmelCase (    pl.LightningModule    ):




	'''simple docstring'''





	def __init__(			self   :					List[str]				,A   :					Union[str, Any]					):
					super().__init__()
					__A       =					model
					__A       =					2
					__A       =					nn.Linear(self.model.config.hidden_size				,self.num_labels					)







	def 							UpperCamelCase_    (			self   :					List[Any]					):
					pass





def 		UpperCAmelCase     (      a_						,  a_						,  a_		)						->      Dict:







				"""simple docstring"""



				__A       =					LongformerModel.from_pretrained(a_		)
				__A       =					LightningModel(a_		)

				__A       =					torch.load(a_						,  map_location=torch.device("cpu"		)		)
				lightning_model.load_state_dict(ckpt["state_dict"]		)

				# init longformer question answering model
				__A       =					LongformerForQuestionAnswering.from_pretrained(a_		)

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

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


if __name__ == "__main__":
					SCREAMING_SNAKE_CASE				:List[Any]									=							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.'
					)
					SCREAMING_SNAKE_CASE				: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
					)







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a__: List[Any]							   =						{
    'configuration_x_clip': [
        'XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XCLIPConfig',
        'XCLIPTextConfig',
        'XCLIPVisionConfig',
    ],
    'processing_x_clip': ['XCLIPProcessor'],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a__: Any							   =						[
           'XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST',
           'XCLIPModel',
           'XCLIPPreTrainedModel',
           'XCLIPTextModel',
           'XCLIPVisionModel',
       ]

if TYPE_CHECKING:
       from .configuration_x_clip import (
           XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
           XCLIPConfig,
           XCLIPTextConfig,
           XCLIPVisionConfig,
       )
       from .processing_x_clip import XCLIPProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_x_clip import (
                  XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  XCLIPModel,
                  XCLIPPreTrainedModel,
                  XCLIPTextModel,
                  XCLIPVisionModel,
              )

else:
       import sys

       a__: Optional[Any]							   =						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)





