code: def __init__(
      self,
      width_list: list[int],
      depth_list: list[int],
      in_channels: int = 3,
      qkv_dim: int = 32,
      norm: str = "bn2d",
      act_func: str = "gelu",
  ) -> None:
      super().__init__()
  
      self.width_list = []
      stages = []
      # stage 0
      stage0 = [
          ConvLayer(
              in_channels=in_channels,
              out_channels=width_list[0],
              stride=2,
              norm=norm,
              act_func=act_func,
          )
      ]
      for _ in range(depth_list[0]):
          block = self.build_local_block(
              stage_id=0,
              in_channels=width_list[0],
              out_channels=width_list[0],
              stride=1,
              expand_ratio=1,
              norm=norm,
              act_func=act_func,
          )
          stage0.append(ResidualBlock(block, IdentityLayer()))
      in_channels = width_list[0]
      stages.append(OpSequential(stage0))
      self.width_list.append(in_channels)
  
      for stage_id, (w, d) in enumerate(
          zip(width_list[1:4], depth_list[1:4]), start=1
      ):
          stage = []
          for i in range(d + 1):
              stride = 2 if i == 0 else 1
              block = self.build_local_block(
                  stage_id=stage_id,
                  in_channels=in_channels,
                  out_channels=w,
                  stride=stride,
                  expand_ratio=4 if stride == 1 else 16,
                  norm=norm,
                  act_func=act_func,
                  fewer_norm=stage_id > 2,
              )
              block = ResidualBlock(
                  block, IdentityLayer() if stride == 1 else None
              )
              stage.append(block)
              in_channels = w
          stages.append(OpSequential(stage))
          self.width_list.append(in_channels)
  
      for stage_id, (w, d) in enumerate(
          zip(width_list[4:], depth_list[4:]), start=4
      ):
          stage = []
          block = self.build_local_block(
              stage_id=stage_id,
              in_channels=in_channels,
              out_channels=w,
              stride=2,
              expand_ratio=24,
              norm=norm,
              act_func=act_func,
              fewer_norm=True,
          )
          stage.append(ResidualBlock(block, None))
          in_channels = w
  
          for _ in range(d):
              stage.append(
                  EfficientViTBlock(
                      in_channels=in_channels,
                      dim=qkv_dim,
                      expand_ratio=6,
                      norm=norm,
                      act_func=act_func,
                  )
              )
          stages.append(OpSequential(stage))
          self.width_list.append(in_channels)
      self.stages = nn.ModuleList(stages)
  
imports: from __future__ import annotations
  from typing import Any
  import torch
  from torch import nn
  from kornia.contrib.models.efficient_vit.nn.ops import ConvLayer, DSConv, EfficientViTBlock, FusedMBConv, IdentityLayer, MBConv, OpSequential, ResBlock, ResidualBlock
  from kornia.contrib.models.efficient_vit.utils import build_kwargs_from_config
label_desc: Use image node_id 1 to create a new EfficientViTLargeBackbone object from inherited base classes: nn with example: obj = EfficientViTLargeBackbone(width_list, depth_list, in_channels, qkv_dim, norm, act_func)