code: def prepare_data(self) -> None:
      if self.loader == "full":
          assert self.trainer is not None
          try:
              num_devices = self.trainer.num_devices
          except AttributeError:
              # PyTorch Lightning < 1.6 backward compatibility:
              num_devices = self.trainer.num_processes  # type: ignore
              num_gpus = self.trainer.num_gpus  # type: ignore
              num_devices = max(num_devices, num_gpus)
  
          if num_devices > 1:
              raise ValueError(
                  f"'{self.__class__.__name__}' with loader='full' requires "
                  f"training on a single device"
              )
      super().prepare_data()
  
imports: import copy
  import inspect
  import warnings
  from typing import Any, Dict, Optional, Tuple, Type, Union
  import torch
  from torch_geometric.data import Data, Dataset, HeteroData
  from torch_geometric.loader import DataLoader, LinkLoader, NodeLoader
  from torch_geometric.sampler import BaseSampler, NeighborSampler
  from torch_geometric.typing import InputEdges, InputNodes, OptTensor
label_desc: Use image node_id 3 for calling the LightningData obj's underlying member method code with example usage: obj.prepare_data() without return types