code: 
  
  
  '''simple docstring'''
  
  
  
  
  
  import argparse
  
  import torch
  from torch import nn
  
  from transformers import PLBartConfig, PLBartForConditionalGeneration, PLBartForSequenceClassification
  
  
  
  
  
  
  
  def  _lowerCamelCase(			lowercase__			)		->			Optional[Any]:
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		__lowercase=    [
  		    'encoder.version',
  		    'decoder.version',
  		    'model.encoder.version',
  		    'model.decoder.version',
  		    '_float_tensor',
  		    'decoder.output_projection.weight',
  		]
  		for k in ignore_keys:
  				state_dict.pop(lowercase__     ,				lowercase__			)
  
  
  
  
  
  
  
  def  _lowerCamelCase(			lowercase__			)		->			Any:
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		__lowercase,							__lowercase=    emb.weight.shape
  		__lowercase=    nn.Linear(lowercase__     ,				lowercase__     ,				bias=lowercase__			)
  		__lowercase=    emb.weight.data
  		return lin_layer
  
  
  
  
  
  
  
  def  _lowerCamelCase(			lowercase__     ,				lowercase__="uclanlp/plbart-base"     ,				lowercase__=False     ,				lowercase__=False			)		->			Optional[int]:
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		__lowercase=    torch.load(lowercase__     ,				map_location='cpu'			)['model']
  		remove_ignore_keys_(lowercase__			)
  		__lowercase=    state_dict['encoder.embed_tokens.weight'].shape[0]
  
  		__lowercase=    PLBartConfig.from_pretrained(lowercase__     ,				vocab_size=lowercase__			)
  
  		__lowercase=    state_dict['decoder.embed_tokens.weight']
  		if not classification:
  				__lowercase=    PLBartForConditionalGeneration(lowercase__			)
  				model.model.load_state_dict(lowercase__			)
  				if finetuned:
  						__lowercase=    make_linear_from_emb(model.model.shared			)
  
  		else:
  				__lowercase=    {}
  				for key, value in state_dict.copy().items():
  						if key.startswith('classification_heads.sentence_classification_head'			):
  								__lowercase=    value
  								state_dict.pop(lowercase__			)
  				__lowercase=    PLBartForSequenceClassification(lowercase__			)
  				model.model.load_state_dict(lowercase__			)
  				model.classification_head.load_state_dict(lowercase__			)
  
  		return model
  
  
  if __name__ == "__main__":
  	lowerCAmelCase					 =	argparse.ArgumentParser()
  	# Required parameters
  	parser.add_argument('''fairseq_path''', type=str, help='''model.pt on local filesystem.''')
  	parser.add_argument('''pytorch_dump_folder_path''', default=None, type=str, help='''Path to the output PyTorch model.''')
  	parser.add_argument(
  	    '''--hf_config''',
  	    default='''uclanlp/plbart-base''',
  	    type=str,
  	    help='''Which huggingface architecture to use: plbart-base''',
  	)
  	parser.add_argument('''--finetuned''', action='''store_true''', help='''whether the model is a fine-tuned checkpoint''')
  	parser.add_argument(
  	    '''--classification''', action='''store_true''', help='''whether the model is a classification checkpoint'''
  	)
  	lowerCAmelCase					 =	parser.parse_args()
  	lowerCAmelCase					 =	convert_fairseq_plbart_checkpoint_from_disk(
  	    args.fairseq_path,
  	    hf_config_path=args.hf_config,
  	    finetuned=args.finetuned,
  	    classification=args.classification,
  	)
  	model.save_pretrained(args.pytorch_dump_folder_path)
  
  
  
  
  
  
  
style_context: 
  
  
  import unittest
  
  from transformers import is_torch_available
  from transformers.testing_utils import require_torch, slow, torch_device
  
  
  if is_torch_available():
  	import torch
  
  	from transformers import XLMProphetNetForConditionalGeneration, XLMProphetNetTokenizer
  
  
  
  
  
  @require_torch
  class    A					(     unittest.TestCase				):
  
  
  							@slow
  							def     _A (self      ):
  									__lowercase=    XLMProphetNetForConditionalGeneration.from_pretrained('microsoft/xprophetnet-large-wiki100-cased'      )
  									model.to(lowerCAmelCase      )
  
  									# encoder-decoder outputs
  									__lowercase=    torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(lowerCAmelCase      )
  									__lowercase=    torch.tensor(
  									    [[2, 2_5_0, 9_9_5_3, 3_4, 6_9_4_8_9, 1_6_2_0, 3_2, 1_1_8_4_2_4, 6_2_4, 2_1_0, 1_0_5, 2_9_1_3, 1_0_3_2, 3_5_1]]      ).to(lowerCAmelCase      )
  									__lowercase=    model(
  									    input_ids=lowerCAmelCase   ,       attention_mask=lowerCAmelCase   ,       encoder_outputs=lowerCAmelCase   ,       decoder_input_ids=lowerCAmelCase      )
  									__lowercase=    output[0]
  									__lowercase=    torch.Size((1, 1_4, 2_5_0_0_1_2)      )
  									self.assertEqual(output_predited_logis.shape   ,       lowerCAmelCase      )
  									__lowercase=    torch.tensor(
  									    [[[-6.39_86, -8.23_91, 12.51_89], [-6.32_89, -8.08_64, 12.62_11], [-6.24_18, -8.04_45, 12.79_68]]]      ).to(lowerCAmelCase      )
  									self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]   ,       lowerCAmelCase   ,       atol=1E-4      )      )
  
  									# encoder outputs
  									__lowercase=    model.prophetnet.encoder(lowerCAmelCase      )[0]
  									__lowercase=    torch.tensor(
  									    [[[-1.42_60, -0.76_28, 0.84_53], [-1.47_19, -0.13_91, 0.78_07], [-1.76_78, 0.01_14, 0.46_46]]]      ).to(lowerCAmelCase      )
  									__lowercase=    torch.Size((1, 4, 1_0_2_4)      )
  									self.assertEqual(encoder_outputs.shape   ,       lowerCAmelCase      )
  									self.assertTrue(torch.allclose(encoder_outputs[:, :3, :3]   ,       lowerCAmelCase   ,       atol=1E-4      )      )
  
  									# decoder outputs
  									__lowercase=    model.prophetnet.decoder(
  									    lowerCAmelCase   ,       encoder_hidden_states=lowerCAmelCase   ,       )
  									__lowercase=    decoder_outputs[1].view(1   ,       model.config.ngram   ,       1_4   ,       -1      )
  									__lowercase=    model.lm_head(lowerCAmelCase      )
  									__lowercase=    predicting_streams_logits[:, 0]
  									self.assertTrue(torch.allclose(next_first_stream_logits[:, :3, :3]   ,       lowerCAmelCase   ,       atol=1E-4      )      )
  
  
  							@slow
  							def     _A (self      ):
  									__lowercase=    XLMProphetNetForConditionalGeneration.from_pretrained(
  									    'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'      )
  									model.to(lowerCAmelCase      )
  
  									__lowercase=    torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(lowerCAmelCase      )
  									__lowercase=    torch.tensor(
  									    [[2, 2_5_0, 9_9_5_3, 3_4, 6_9_4_8_9, 1_6_2_0, 3_2, 1_1_8_4_2_4, 6_2_4, 2_1_0, 1_0_5, 2_9_1_3, 1_0_3_2, 3_5_1]]      ).to(lowerCAmelCase      )
  									__lowercase=    model(
  									    input_ids=lowerCAmelCase   ,       attention_mask=lowerCAmelCase   ,       encoder_outputs=lowerCAmelCase   ,       decoder_input_ids=lowerCAmelCase      )
  									__lowercase=    output[0]
  									__lowercase=    torch.Size((1, 1_4, 2_5_0_0_1_2)      )
  									self.assertEqual(output_predited_logis.shape   ,       lowerCAmelCase      )
  									# compare the actual values for a slice.
  									__lowercase=    torch.tensor(
  									    [[[-9.22_53, -9.71_73, -6.35_29], [-7.67_01, -9.01_45, -1.93_82], [-8.01_95, -7.00_04, -0.15_23]]]      ).to(lowerCAmelCase      )
  
  									self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]   ,       lowerCAmelCase   ,       atol=1E-4      )      )
  
  
  
  
  
  
  
  							@slow
  							def     _A (self      ):
  									__lowercase=    XLMProphetNetForConditionalGeneration.from_pretrained(
  									    'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'      )
  									model.to(lowerCAmelCase      )
  									__lowercase=    5_1_2
  
  									__lowercase=    XLMProphetNetTokenizer.from_pretrained('microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'      )
  
  									__lowercase=    (
  									    'Microsoft Corporation intends to officially end free support for the Windows 7 operating system after'
  									    ' January 14, 2020, according to the official portal of the organization. From that day, users of this'
  									    ' system will not be able to receive security updates, which could make their computers vulnerable to'
  									    ' cyber attacks.'
  									)
  									__lowercase=    (
  									    'орпорация Microsoft намерена официально прекратить бесплатную поддержку операционной системы Windows 7'
  									    ' после 14 января 2020 года, сообщается на официальном портале организации . С указанного дня пользователи'
  									    ' этой системы не смогут получать обновления безопасности, из-за чего их компьютеры могут стать уязвимыми'
  									    ' к кибератакам.'
  									)
  									__lowercase=    (
  									    '根据该组织的官方门户网站，微软公司打算在2020年1月14日之后正式终止对Windows 7操作系统的免费支持。从那时起，该系统的用户将无法接收安全更新，这可能会使他们的计算机容易受到网络攻击。'
  									)
  
  									__lowercase=    tokenizer(
  									    [EN_SENTENCE, RU_SENTENCE, ZH_SENTENCE]   ,       padding=lowerCAmelCase   ,       max_length=2_5_5   ,       return_tensors='pt'      ).input_ids
  									__lowercase=    input_ids.to(lowerCAmelCase      )
  
  									__lowercase=    model.generate(
  									    lowerCAmelCase   ,       num_beams=1_0   ,       length_penalty=1.0   ,       no_repeat_ngram_size=3   ,       early_stopping=lowerCAmelCase      )
  									__lowercase=    [tokenizer.decode(lowerCAmelCase   ,       skip_special_tokens=lowerCAmelCase      ) for g in summary_ids]
  									__lowercase=    'Microsoft to end Windows 7 free support after January 14, 2020'
  									__lowercase=    'Microsoft намерена прекратить бесплатную поддержку Windows 7 после 14 января 2020 года'
  									__lowercase=    '微软打算终止对Windows 7操作系统的免费支持'
  									self.assertListEqual(
  									    [EXPECTED_TITLE_EN, EXPECTED_TITLE_RU, EXPECTED_TITLE_ZH]   ,       lowerCAmelCase   ,       )
  
  									__lowercase=    model.generate(
  									    lowerCAmelCase   ,       num_beams=1   ,       length_penalty=1.0   ,       no_repeat_ngram_size=3   ,       early_stopping=lowerCAmelCase      )
  									__lowercase=    [
  									    tokenizer.convert_ids_to_tokens(lowerCAmelCase   ,       skip_special_tokens=lowerCAmelCase      ) for g in summary_ids_beama
  									]
  									__lowercase=    '▁Microsoft ▁to ▁end ▁free ▁support ▁for ▁Windows ▁7'.split(' '      )
  									__lowercase=    '▁Microsoft ▁намерен а ▁прекрати ть ▁бес плат ную ▁поддержку ▁Windows ▁7 ▁после ▁14 ▁января ▁2020 ▁года'.split(
  									    ' '      )
  									__lowercase=    '微软 公司 打算 终止 对 Windows ▁7 操作 系统的 免费 支持'.split(' '      )
  									self.assertListEqual(
  									    [EXPECTED_TITLE_EN_BEAM1_TOK, EXPECTED_TITLE_RU_BEAM1_TOK, EXPECTED_TITLE_ZH_BEAM1_TOK]   ,       lowerCAmelCase   ,       )
  
  
  
  
  
  
  