code: def step(
      self,
      model_output: Union[paddle.Tensor, np.ndarray],
      timestep: int,
      sample: Union[paddle.Tensor, np.ndarray],
      order: int = 4,
  ):
      sigma = self.sigmas[timestep]
  
      # 1. compute predicted original sample (x_0) from sigma-scaled predicted noise
      pred_original_sample = sample - sigma * model_output
  
      # 2. Convert to an ODE derivative
      derivative = (sample - pred_original_sample) / sigma
      self.derivatives.append(derivative)
      if len(self.derivatives) > order:
          self.derivatives.pop(0)
  
      # 3. Compute linear multistep coefficients
      order = min(timestep + 1, order)
      lms_coeffs = [
          self.get_lms_coefficient(order, timestep, curr_order)
          for curr_order in range(order)
      ]
  
      # 4. Compute previous sample based on the derivatives path
      prev_sample = sample + sum(
          coeff * derivative
          for coeff, derivative in zip(
              lms_coeffs, reversed(self.derivatives)
          )
      )
  
      return {"prev_sample": prev_sample}
  
file_path: PaddleHub/modules/image/text_to_image/stable_diffusion_inpainting/diffusers/schedulers/scheduling_lms_discrete.py
imports: from typing import Union
  import numpy
  import paddle
  from scipy import integrate
  from ..configuration_utils import ConfigMixin
  from ..configuration_utils import register_to_config
  from .scheduling_utils import SchedulerMixin
label_desc: Use image node_id 4 for calling the LMSDiscreteScheduler obj's underlying member method code with example usage: obj.step(model_output, timestep, sample, order) and returns: dict