code: def make_model(
      src_vocab,
      tgt_vocab,
      N=6,
      dim_model=512,
      dim_ff=2048,
      h=8,
      dropout=0.1,
      universal=False,
  ):
      if universal:
          return make_universal_model(
              src_vocab, tgt_vocab, dim_model, dim_ff, h, dropout
          )
      c = copy.deepcopy
      attn = MultiHeadAttention(h, dim_model)
      ff = PositionwiseFeedForward(dim_model, dim_ff)
      pos_enc = PositionalEncoding(dim_model, dropout)
  
      encoder = Encoder(
          EncoderLayer(dim_model, c(attn), c(ff), dropout), N
      )
      decoder = Decoder(
          DecoderLayer(dim_model, c(attn), c(attn), c(ff), dropout), N
      )
      src_embed = Embeddings(src_vocab, dim_model)
      tgt_embed = Embeddings(tgt_vocab, dim_model)
      generator = Generator(dim_model, tgt_vocab)
      model = Transformer(
          encoder,
          decoder,
          src_embed,
          tgt_embed,
          pos_enc,
          generator,
          h,
          dim_model // h,
      )
      # xavier init
      for p in model.parameters():
          if p.dim() > 1:
              INIT.xavier_uniform_(p)
      return model
  
imports: from .config import *
  from .act import *
  from .attention import *
  from .viz import *
  from .layers import *
  from .functions import *
  from .embedding import *
  import threading
  import dgl.function
  import torch
  import torch.nn.init
label_desc: Use image node_id 1 for calling a global function with example usage: make_model(src_vocab, tgt_vocab, N, dim_model, dim_ff, h, dropout, universal) and returns: model, make_universal_model