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
docstr: Return the state dictionary for the loss:
  - For DDP model, we rely on the default implementation of PyTorch
  - For FSDP model, we only return a shard of the teacher model and
    each rank will do the same, limiting memory consumption
docstr_tok: ["Return","the","state","dictionary","for","the","loss",":","-","For","DDP","model",",","we","rely","on","the","default","implementation","of","PyTorch","-","For","FSDP","model",",","we","only","return","a","shard","of","the","teacher","model","and","each","rank","will","do","the","same",",","limiting","memory","consumption"]
code: def state_dict(self, destination=None, prefix="", keep_vars=False):
      """
      Return the state dictionary for the loss:
      - For DDP model, we rely on the default implementation of PyTorch
      - For FSDP model, we only return a shard of the teacher model and
        each rank will do the same, limiting memory consumption
      """
      if isinstance(self.momentum_teacher, FullyShardedDataParallel):
          return {
              "criterion": self.criterion.state_dict(),
              "teacher": self.momentum_teacher.local_state_dict(),
              "teacher_meta": self.momentum_teacher.local_metadata_dict(),
          }
      else:
          return {
              "criterion": self.criterion.state_dict(),
              "teacher": self.momentum_teacher.state_dict(),
          }
  
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 4 for calling the IBOTLoss obj's underlying member method code with example usage: obj.state_dict(destination, prefix, keep_vars) and returns: dict, dict