class_docstr: XCiT where blocks are wrapped by FSDP
class_docstr_tok: ["XCiT","where","blocks","are","wrapped","by","FSDP"]
code: def _create_cls_attn_blocks(self, norm_layer, depth: int = 2):
      blocks = []
      for i in range(self.depth):
          block = self._create_cls_attn_block(norm_layer, depth=i)
          if self.trunk_config.CHECKPOINT_ATTN_BLOCK:
              block = checkpoint_wrapper(block)
          block = fsdp_wrapper(block, **self.model_config.FSDP_CONFIG)
          blocks.append(block)
      return nn.ModuleList(blocks)
  
imports: import logging
  import math
  from functools import partial
  from typing import List, Optional
  import torch
  import torch.nn
  from fairscale.nn import checkpoint_wrapper
  from vissl.config import AttrDict
  from vissl.models.model_helpers import DropPath, to_2tuple, trunc_normal_
  from vissl.models.trunks import register_model_trunk
  from vissl.models.trunks.vision_transformer import Mlp
  from vissl.utils.fsdp_utils import fsdp_wrapper
  from vissl.utils.misc import set_torch_seed
label_desc: Use image node_id 2 for calling the XCiT_FSDP obj's underlying member method code with example usage: obj._create_cls_attn_blocks(norm_layer, depth) and returns: nn