class_docstr: Final Arch of DLRM - simple MLP over OverArch.
  
  Args:
      in_features (int): size of the input.
      layer_sizes (List[int]): sizes of the layers of the `OverArch`.
      device (Optional[torch.device]): default compute device.
  
  Example::
  
      B = 20
      D = 3
      over_arch = OverArch(10, [5, 1])
      logits = over_arch(torch.rand((B, 10)))
class_docstr_tok: ["Final","Arch","of","DLRM","-","simple","MLP","over","OverArch",".","Args",":","in_features","(","int",")",":","size","of","the","input",".","layer_sizes","(","List","[","int","]",")",":","sizes","of","the","layers","of","the","`","OverArch","`",".","device","(","Optional","[","torch.device","]",")",":","default","compute","device",".","Example",":",":","B","=","20","D","=","3","over_arch","=","OverArch","(","10",",","[","5",",","1","]",")","logits","=","over_arch","(","torch.rand","(","(","B",",","10",")",")",")"]
docstr: Args:
      features (torch.Tensor):
  
  Returns:
      torch.Tensor: size B X layer_sizes[-1]
docstr_tok: ["Args",":","features","(","torch.Tensor",")",":","Returns",":","torch.Tensor",":","size","B","X","layer_sizes","[","-1","]"]
code: def forward(self, features: torch.Tensor) -> torch.Tensor:
      """
      Args:
          features (torch.Tensor):
  
      Returns:
          torch.Tensor: size B X layer_sizes[-1]
      """
      return self.model(features)
  
imports: from typing import Dict, List, Optional, Tuple
  import torch
  from torch import nn
  from torchrec.datasets.utils import Batch
  from torchrec.modules.crossnet import LowRankCrossNet
  from torchrec.modules.embedding_modules import EmbeddingBagCollection
  from torchrec.modules.mlp import MLP
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor, KeyedTensor
label_desc: Use image node_id 2 for calling the OverArch obj's underlying member method code with example usage: obj.forward(features) and returns: self