




import argparse
from argparse import Namespace

import torch
from torch import nn

from transformers import XGLMConfig, XGLMForCausalLM

def 			_SCREAMING_SNAKE_CASE			(							lowercase	:       Any     ):


      '''simple docstring'''



      lowerCamelCase_		     =    [
          'decoder.version',
          'decoder.output_projection.weight',
          '_float_tensor',
          'decoder.embed_positions._float_tensor',
      ]
      for k in ignore_keys:
            state_dict.pop(lowercase	,							lowercase     )

def 			_SCREAMING_SNAKE_CASE			(							lowercase	:       Optional[int]     ):


      '''simple docstring'''



      lowerCamelCase_     ,				lowerCamelCase_		     =    emb.weight.shape
      lowerCamelCase_		     =    nn.Linear(lowercase	,							lowercase	,							bias=lowercase     )
      lowerCamelCase_		     =    emb.weight.data
      return lin_layer

def 			_SCREAMING_SNAKE_CASE			(							lowercase	:       Dict     ):


      '''simple docstring'''



      lowerCamelCase_		     =    torch.load(lowercase	,							map_location='cpu'     )
      lowerCamelCase_		     =    Namespace(**checkpoint['cfg']['model']     )
      lowerCamelCase_		     =    checkpoint['model']
      remove_ignore_keys_(lowercase     )
      lowerCamelCase_		     =    state_dict['decoder.embed_tokens.weight'].shape[0]

      lowerCamelCase_		     =    {key.replace('decoder'	,							'model'     ): val for key, val in state_dict.items()}

      lowerCamelCase_		     =    XGLMConfig(
          vocab_size=lowercase	,							max_position_embeddings=args.max_target_positions	,							num_layers=args.decoder_layers	,							attention_heads=args.decoder_attention_heads	,							ffn_dim=args.decoder_ffn_embed_dim	,							d_model=args.decoder_embed_dim	,							layerdrop=args.decoder_layerdrop	,							dropout=args.dropout	,							attention_dropout=args.attention_dropout	,							activation_dropout=args.activation_dropout	,							activation_function='gelu'	,							scale_embedding=not args.no_scale_embedding	,							tie_word_embeddings=args.share_decoder_input_output_embed	,							)

      lowerCamelCase_		     =    XGLMForCausalLM(lowercase     )
      lowerCamelCase_		     =    model.load_state_dict(lowercase	,							strict=lowercase     )
      print(lowercase     )
      lowerCamelCase_		     =    make_linear_from_emb(model.model.embed_tokens     )

      return model


if __name__ == "__main__":
 lowerCamelCase				:		Tuple     =   argparse.ArgumentParser()
 # Required parameters
 parser.add_argument("fairseq_path", type=str, help="path to a model.pt on local filesystem.")
 parser.add_argument("pytorch_dump_folder_path", default=None, type=str, help="Path to the output PyTorch model.")
 lowerCamelCase				:		List[str]     =   parser.parse_args()
 lowerCamelCase				:		Union[str, Any]     =   convert_fairseq_xglm_checkpoint_from_disk(args.fairseq_path)
 model.save_pretrained(args.pytorch_dump_folder_path)









def 			_SCREAMING_SNAKE_CASE			(							lowercase	:       float	,							lowercase	:       list[float]     ):


      '''simple docstring'''



      if discount_rate < 0:
            raise ValueError('Discount rate cannot be negative'     )
      if not cash_flows:
            raise ValueError('Cash flows list cannot be empty'     )
      lowerCamelCase_		     =    sum(
          cash_flow / ((1 + discount_rate) ** i) for i, cash_flow in enumerate(lowercase     )     )
      return round(lowercase	,							ndigits=2     )


if __name__ == "__main__":
 import doctest

 doctest.testmod()



