class_docstr: KDPM2DiscreteScheduler with ancestral sampling is inspired by the DPMSolver2 and Algorithm 2 from the [Elucidating
  the Design Space of Diffusion-Based Generative Models](https://huggingface.co/papers/2206.00364) paper.
  
  This model inherits from [`SchedulerMixin`] and [`ConfigMixin`]. Check the superclass documentation for the generic
  methods the library implements for all schedulers such as loading and saving.
  
  Args:
      num_train_timesteps (`int`, defaults to 1000):
          The number of diffusion steps to train the model.
      beta_start (`float`, defaults to 0.00085):
          The starting `beta` value of inference.
      beta_end (`float`, defaults to 0.012):
          The final `beta` value.
      beta_schedule (`str`, defaults to `"linear"`):
          The beta schedule, a mapping from a beta range to a sequence of betas for stepping the model. Choose from
          `linear` or `scaled_linear`.
      trained_betas (`np.ndarray`, *optional*):
          Pass an array of betas directly to the constructor to bypass `beta_start` and `beta_end`.
      use_karras_sigmas (`bool`, *optional*, defaults to `False`):
          Whether to use Karras sigmas for step sizes in the noise schedule during the sampling process. If `True`,
          the sigmas are determined according to a sequence of noise levels {σi}.
      prediction_type (`str`, defaults to `epsilon`, *optional*):
          Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process),
          `sample` (directly predicts the noisy sample`) or `v_prediction` (see section 2.4 of [Imagen
          Video](https://imagen.research.google/video/paper.pdf) paper).
      timestep_spacing (`str`, defaults to `"linspace"`):
          The way the timesteps should be scaled. Refer to Table 2 of the [Common Diffusion Noise Schedules and
          Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) for more information.
      steps_offset (`int`, defaults to 0):
          An offset added to the inference steps. You can use a combination of `offset=1` and
          `set_alpha_to_one=False` to make the last step use step 0 for the previous alpha product like in Stable
          Diffusion.
docstr: Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
  current timestep.
  
  Args:
      sample (`torch.FloatTensor`):
          The input sample.
      timestep (`int`, *optional*):
          The current timestep in the diffusion chain.
  
  Returns:
      `torch.FloatTensor`:
          A scaled input sample.
docstr_tok: ["Ensures","interchangeability","with","schedulers","that","need","to","scale","the","denoising","model","input","depending","on","the","current","timestep",".","Args",":","sample","(","`","torch.FloatTensor","`",")",":","The","input","sample",".","timestep","(","`","int","`",",","*","optional","*",")",":","The","current","timestep","in","the","diffusion","chain",".","Returns",":","`","torch.FloatTensor","`",":","A","scaled","input","sample","."]
code: def scale_model_input(
      self,
      sample: torch.FloatTensor,
      timestep: Union[float, torch.FloatTensor],
  ) -> torch.FloatTensor:
      """
      Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
      current timestep.
  
      Args:
          sample (`torch.FloatTensor`):
              The input sample.
          timestep (`int`, *optional*):
              The current timestep in the diffusion chain.
  
      Returns:
          `torch.FloatTensor`:
              A scaled input sample.
      """
      if self.step_index is None:
          self._init_step_index(timestep)
  
      if self.state_in_first_order:
          sigma = self.sigmas[self.step_index]
      else:
          sigma = self.sigmas_interpol[self.step_index - 1]
  
      sample = sample / ((sigma**2 + 1) ** 0.5)
      return sample
  
imports: import math
  from collections import defaultdict
  from typing import List, Optional, Tuple, Union
  import numpy
  import torch
  from ..configuration_utils import ConfigMixin, register_to_config
  from ..utils.torch_utils import randn_tensor
  from .scheduling_utils import KarrasDiffusionSchedulers, SchedulerMixin, SchedulerOutput
label_desc: Use image node_id 5 for calling the KDPM2AncestralDiscreteScheduler obj's underlying member method code with example usage: obj.scale_model_input(sample, timestep) and returns: sample