code: def run(
      self, *input_tensors: torch.Tensor
  ) -> Tuple[torch.Tensor, ...]:
      if self.device.type is DeviceType.GPU and not self._is_gpu_ready:
          self.set_model_on_gpu()
      if self.device.type is DeviceType.GPU:
          input_tensors = (
              t.to(self.device.to_torch_format()) for t in input_tensors
          )
      with torch.no_grad():
          res = self.model(*input_tensors)
          if not isinstance(res, tuple):
              res = res.to(self.device.to_torch_format())
              return (res,)
          return tuple(
              out.to(self.device.to_torch_format()) for out in res
          )
  
file_path: nebuly/optimization/nebullvm/nebullvm/operations/inference_learners/torchscript.py
imports: from pathlib import Path
  from typing import Tuple, Union, Optional, List
  from nebullvm.core.models import Device, DeviceType, ModelParams
  from nebullvm.operations.inference_learners.base import PytorchBaseInferenceLearner, LearnerMetadata
  from nebullvm.optional_modules.torch import torch, symbolic_trace, Module, ScriptModule, GraphModule
  from nebullvm.tools.transformations import MultiStageTransformation
label_desc: Use image node_id 2 for calling the TorchScriptInferenceLearner obj's underlying member method code with example usage: obj.run() and returns: tuple, res