code: def __init__(
      self,
      work_cls: Type["LightningWork"],
      cloud_compute: "CloudCompute",
      num_nodes: int,
      *work_args: Any,
      **work_kwargs: Any,
  ) -> None:
      assert issubclass(work_cls, _FabricWorkProtocol)
  
      # Note: Private way to modify the work run executor
      # Probably exposed to the users in the future if needed.
      work_cls._run_executor_cls = _FabricRunExecutor
  
      super().__init__(
          work_cls,
          *work_args,
          num_nodes=num_nodes,
          cloud_compute=cloud_compute,
          **work_kwargs,
      )
  
file_path: pytorch-lightning/src/lightning/app/components/multi_node/fabric.py
imports: import importlib
  import os
  import warnings
  from dataclasses import dataclass
  from typing import Any, Callable, Protocol, Type, runtime_checkable
  from lightning.app.components.multi_node.base import MultiNode
  from lightning.app.components.multi_node.pytorch_spawn import _PyTorchSpawnRunExecutor
  from lightning.app.core.work import LightningWork
  from lightning.app.utilities.packaging.cloud_compute import CloudCompute
  from lightning.app.utilities.tracer import Tracer
label_desc: Use image node_id 1 to create a new FabricMultiNode object from inherited base classes: MultiNode with example: obj = FabricMultiNode(work_cls, cloud_compute, num_nodes)