class_docstr: Temporary fix for ClassyVision:
  - ClassyModel overrides via meta class the __setattr__ and __getattr__
    but the __delattr__ is not overridden
  - This leads to a crash when wrapping a model with FSDP because FSDP
    uses extensively setattr, getattr, hasattr and delattr
  - This also leads to asymmetries in which hasattr will return True but
    delattr will crash
class_docstr_tok: ["Temporary","fix","for","ClassyVision",":","-","ClassyModel","overrides","via","meta","class","the","__setattr__","and","__getattr__","but","the","__delattr__","is","not","overridden","-","This","leads","to","a","crash","when","wrapping","a","model","with","FSDP","because","FSDP","uses","extensively","setattr",",","getattr",",","hasattr","and","delattr","-","This","also","leads","to","asymmetries","in","which","hasattr","will","return","True","but","delattr","will","crash"]
code: def __delattr__(self, name):
      if name not in ["classy_model", "forward"] and hasattr(
          self, "classy_model"
      ):
          delattr(self.classy_model, name)
      else:
          super().__delattr__(name)
  
imports: import copy
  import logging
  from typing import Any, Dict, Iterable, List, Union
  import torch
  import torch.nn
  from classy_vision.models import ClassyModel, ClassyModelHeadExecutorWrapper
  from fairscale.nn.data_parallel import FullyShardedDataParallel
  from vissl.config import AttrDict
  from vissl.data.collators.collator_helper import MultiDimensionalTensor
  from vissl.models import register_model
  from vissl.models.heads import get_model_head, SwAVPrototypesHead
  from vissl.models.model_helpers import get_trunk_output_feature_names, is_feature_extractor_model
  from vissl.models.multiple_input_mapping import MultipleInputMapping
  from vissl.models.trunks import get_model_trunk
  from vissl.models.trunks.feature_extractor import FeatureExtractorModel
  from vissl.utils.checkpoint import CheckpointLoader, init_model_from_consolidated_weights, should_init_head_weights
  from vissl.utils.env import get_machine_local_and_dist_rank
  from vissl.utils.fsdp_utils import fsdp_recursive_reset_lazy_init
  from vissl.utils.misc import set_torch_seed
label_desc: Use image node_id 1 for calling the VisslClassyModelHeadExecutorWrapper obj's underlying member method code with example usage: obj.__delattr__(name) without return types