class_docstr: Wrapper around the loss of IBOT (https://arxiv.org/pdf/2111.07832.pdf)
  
  Allows to feed the correct configuration to IBOTCriterion class (below)
  which implement the IBOT loss entirely decoupled from VISSL
code: def forward(
      self, output: List[List[torch.Tensor]], target: torch.Tensor
  ):
      error_message = (
          "Two outputs expected: student global and local views"
      )
      assert len(output) == 2, error_message
      student_global_out, student_local_out = output
      teacher_global_out = self.teacher_output
      student_mask = target
  
      error_message = (
          "Two outputs expected: class tokens and patch tokens"
      )
      assert len(student_global_out) == 2, error_message
      assert len(teacher_global_out) == 2, error_message
  
      # Change the shape of the student mask to fit the need for
      # the iBOT official criterion: list of tensors of shape (B, H, W)
      student_mask_list = list(
          student_mask.chunk(self.num_global_crops)
      )
  
      # Compute the loss and its sub-components (returns a dict)
      loss = self.criterion(
          student_global_out,
          teacher_global_out,
          student_local_cls=student_local_out[0],
          student_mask=student_mask_list,
          epoch=self.current_epoch,
      )
  
      # Computing additional statistics
      loss["acc_cls"] = self._extract_cls_token_accuracy(
          student_global_out[0], teacher_global_out[0]
      )
      loss["acc_ptc"] = self._extract_ptc_token_accuracy(
          student_global_out[1], teacher_global_out[1], student_mask
      )
  
      # Return the enriched loss
      return loss
  
imports: import logging
  import pprint
  from typing import List
  import numpy
  import torch
  import torch.distributed
  import torch.nn
  import torch.nn.functional
  from classy_vision.losses import ClassyLoss, register_loss
  from fairscale.nn import FullyShardedDataParallel
  from vissl.config import AttrDict
  from vissl.models.model_helpers import get_no_ddp_model
  from vissl.utils.distributed_utils import concat_all_gather
label_desc: Use image node_id 6 for calling the IBOTLoss obj's underlying member method code with example usage: obj.forward(output, target) and returns: loss