code: def __init__(self, config: AttrDict):
      super().__init__(config)
      # Ensure pytorch AMP type if mixed precision is on.
      if config["MODEL"]["FSDP_CONFIG"]["mixed_precision"]:
          if not (
              config["MODEL"]["AMP_PARAMS"]["USE_AMP"]
              and config["MODEL"]["AMP_PARAMS"]["AMP_TYPE"] == "pytorch"
          ):
              raise ValueError(
                  "FSDP's mixed precision requires pytorch AMP"
              )
  
file_path: vissl/vissl/trainer/train_fsdp_task.py
imports: import logging
  from classy_vision.generic.distributed_util import get_cuda_device_index, is_distributed_training_run
  from classy_vision.tasks import register_task
  from fairscale.nn.data_parallel import FullyShardedDataParallel
  from vissl.config import AttrDict
  from vissl.trainer.train_task import SelfSupervisionTask
  from vissl.utils.fsdp_utils import fsdp_wrapper, is_valid_fsdp_model
  from vissl.utils.misc import is_fairscale_sharded_available
label_desc: Use image node_id 1 to create a new SelfSupervisionFSDPTask object from inherited base classes: SelfSupervisionTask with example: obj = SelfSupervisionFSDPTask(config)