code: def forward(
      self,
      emb,
      labels=None,
      indices_tuple=None,
      ref_emb=None,
      ref_labels=None,
      enqueue_mask=None,
  ):
      world_size = torch.distributed.get_world_size()
      common_args = [
          emb,
          labels,
          indices_tuple,
          ref_emb,
          ref_labels,
          world_size,
      ]
      if isinstance(self.loss, CrossBatchMemory):
          return self.forward_cross_batch(*common_args, enqueue_mask)
      return self.forward_regular_loss(*common_args)
  
imports: import torch
  from ..losses import BaseMetricLossFunction, CrossBatchMemory
  from ..miners import BaseMiner
  from ..utils import common_functions
  from ..utils import loss_and_miner_utils
label_desc: Use image node_id 2 for calling the DistributedLossWrapper obj's underlying member method code with example usage: obj.forward(emb, labels, indices_tuple, ref_emb, ref_labels, enqueue_mask) and returns: self, self