docstr: Build a new model instance.
docstr_tok: ["Build","a","new","model","instance","."]
code: def build_model(cls, args, task):
      """Build a new model instance."""
      # make sure that all args are properly defaulted (in case there are any new ones)
      base_architecture(args)
  
      def load_pretrained_embedding_from_file(
          embed_path, dictionary, embed_dim
      ):
          num_embeddings = len(dictionary)
          padding_idx = dictionary.pad()
          embed_tokens = Embedding(
              num_embeddings, embed_dim, padding_idx
          )
          embed_dict = utils.parse_embedding(embed_path)
          utils.print_embed_overlap(embed_dict, dictionary)
          return utils.load_embedding(
              embed_dict, dictionary, embed_tokens
          )
  
      pretrained_encoder_embed = None
      if args.encoder_embed_path:
          pretrained_encoder_embed = (
              load_pretrained_embedding_from_file(
                  args.encoder_embed_path,
                  task.source_dictionary,
                  args.encoder_embed_dim,
              )
          )
      pretrained_decoder_embed = None
      if args.decoder_embed_path:
          pretrained_decoder_embed = (
              load_pretrained_embedding_from_file(
                  args.decoder_embed_path,
                  task.target_dictionary,
                  args.decoder_embed_dim,
              )
          )
  
      num_langs = task.num_tasks if hasattr(task, "num_tasks") else 0
  
      encoder = LSTMEncoder(
          dictionary=task.source_dictionary,
          embed_dim=args.encoder_embed_dim,
          hidden_size=args.encoder_hidden_size,
          num_layers=args.encoder_layers,
          dropout_in=args.encoder_dropout_in,
          dropout_out=args.encoder_dropout_out,
          bidirectional=args.encoder_bidirectional,
          pretrained_embed=pretrained_encoder_embed,
          fixed_embeddings=args.fixed_embeddings,
      )
      decoder = LSTMDecoder(
          dictionary=task.target_dictionary,
          embed_dim=args.decoder_embed_dim,
          hidden_size=args.decoder_hidden_size,
          out_embed_dim=args.decoder_out_embed_dim,
          num_layers=args.decoder_layers,
          dropout_in=args.decoder_dropout_in,
          dropout_out=args.decoder_dropout_out,
          zero_init=options.eval_bool(args.decoder_zero_init),
          encoder_embed_dim=args.encoder_embed_dim,
          encoder_output_units=encoder.output_units,
          pretrained_embed=pretrained_decoder_embed,
          num_langs=num_langs,
          lang_embed_dim=args.decoder_lang_embed_dim,
      )
      return cls(encoder, decoder)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import options, utils
  from fairseq.models import FairseqEncoder, FairseqIncrementalDecoder, FairseqEncoderDecoderModel, register_model, register_model_architecture
label_desc: Use image node_id 4 for calling the LSTMModel obj's underlying member method code with example usage: obj.build_model(cls, args, task) and returns: cls, utils