Buckets:
| # DPMSolverSinglestepScheduler | |
| `DPMSolverSinglestepScheduler` es un programador de un solo paso de [DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps](https://huggingface.co/papers/2206.00927) y [DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models](https://huggingface.co/papers/2211.01095) de Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li y Jun Zhu. | |
| DPMSolver (y la versión mejorada DPMSolver++) es un solver de alto orden dedicado y rápido para ecuaciones diferenciales ordinarias de difusión, con garantía de orden de convergencia. Empíricamente, el muestreo con DPMSolver de solo 20 pasos puede generar muestras de alta calidad, y puede generar muestras bastante buenas incluso en 10 pasos. | |
| La implementación original se puede encontrar en [LuChengTHU/dpm-solver](https://github.com/LuChengTHU/dpm-solver). | |
| ## Consejos | |
| Se recomienda establecer `solver_order` en 2 para la muestreo con guía, y `solver_order=3` para el muestreo incondicional. | |
| El umbral dinámico de [Imagen](https://huggingface.co/papers/2205.11487) es compatible, y para los modelos de difusión en el espacio de píxeles, puedes establecer tanto `algorithm_type="dpmsolver++"` como `thresholding=True` para usar el umbral dinámico. Este método de umbral no es adecuado para los modelos de difusión en el espacio latente, como Stable Diffusion. | |
| ## DPMSolverSinglestepScheduler[[diffusers.DPMSolverSinglestepScheduler]] | |
| #### diffusers.DPMSolverSinglestepScheduler[[diffusers.DPMSolverSinglestepScheduler]] | |
| ```python | |
| diffusers.DPMSolverSinglestepScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: typing.Literal['linear', 'scaled_linear', 'squaredcos_cap_v2'] = 'linear', trained_betas: numpy.ndarray | list[float] | None = None, solver_order: int = 2, prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction', 'flow_prediction'] = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, sample_max_value: float = 1.0, algorithm_type: typing.Literal['dpmsolver', 'dpmsolver++', 'sde-dpmsolver++'] = 'dpmsolver++', solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint', lower_order_final: bool = False, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, use_flow_sigmas: bool = False, flow_shift: float = 1.0, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero', lambda_min_clipped: float = -inf, variance_type: typing.Optional[typing.Literal['learned', 'learned_range']] = None, use_dynamic_shifting: bool = False, time_shift_type: typing.Literal['exponential'] = 'exponential') | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L88) | |
| **Parámetros:** | |
| num_train_timesteps (`int`, por defecto `1000`) : El número de pasos de difusión para entrenar el modelo. | |
| beta_start (`float`, por defecto `0.0001`) : El valor inicial de `beta` para la inferencia. | |
| beta_end (`float`, por defecto `0.02`) : El valor final de `beta`. | |
| beta_schedule (`"linear"`, `"scaled_linear"` o `"squaredcos_cap_v2"`, por defecto `"linear"`) : El programa de betas, una función que mapea un rango de betas a una secuencia de betas para dar pasos al modelo. Elija entre `linear`, `scaled_linear` o `squaredcos_cap_v2`. | |
| trained_betas (`np.ndarray` o `list[float]`, *opcional*) : Pasa un array de betas directamente al constructor para omitir `beta_start` y `beta_end`. | |
| solver_order (`int`, por defecto `2`) : El orden de DPMSolver, que puede ser `1` o `2` o `3`. Se recomienda usar `solver_order=2` para muestreo guiado y `solver_order=3` para muestreo incondicional. | |
| prediction_type (`"epsilon"`, `"sample"`, `"v_prediction"`, or `"flow_prediction"`, defaults to `"epsilon"`) : Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process), `sample` (directly predicts the noisy sample`), `v_prediction` (see section 2.4 of [Imagen Video](https://huggingface.co/papers/2210.02303) paper), or `flow_prediction`. | |
| thresholding (`bool`, por defecto `False`) : Si se debe utilizar el método de "umbral dinámico". No es adecuado para modelos de difusión en el espacio latente, como Stable Diffusion. | |
| dynamic_thresholding_ratio (`float`, por defecto `0.995`) : La proporción para el método de umbral dinámico. Solo es válido cuando `thresholding=True`. | |
| sample_max_value (`float`, por defecto `1.0`) : El valor de umbral para el umbral dinámico. Válido solo cuando `thresholding=True` y `algorithm_type="dpmsolver++"`. | |
| algorithm_type (`"dpmsolver"`, `"dpmsolver++"` o `"sde-dpmsolver++"`, por defecto `"dpmsolver++"`) : Tipo de algoritmo para el solver; puede ser `dpmsolver`, `dpmsolver++` o `sde-dpmsolver++`. El tipo `dpmsolver` implementa los algoritmos del artículo [DPMSolver](https://huggingface.co/papers/2206.00927), y el tipo `dpmsolver++` implementa los algoritmos del artículo [DPMSolver++](https://huggingface.co/papers/2211.01095). Se recomienda usar `dpmsolver++` o `sde-dpmsolver++` con `solver_order=2` para muestreo guiado, como en Stable Diffusion. | |
| solver_type (`"midpoint"` o `"heun"`, por defecto `"midpoint"`) : Tipo de solver para el solver de segundo orden; puede ser `midpoint` o `heun`. El tipo de solver afecta ligeramente a la calidad de la muestra, especialmente con un número pequeño de pasos. Se recomienda usar solvers de `midpoint`. | |
| lower_order_final (`bool`, por defecto `False`) : Si se deben usar solvers de orden inferior en los pasos finales. Solo es válido para < 15 pasos de inferencia. Esto puede estabilizar el muestreo de DPMSolver para pasos < 15, especialmente para pasos <= 10. | |
| use_karras_sigmas (`bool`, *opcional*, valor predeterminado `False`) : Si se deben usar sigmas de Karras para los tamaños de paso en el plan de ruido durante el proceso de muestreo. Si es `True`, los sigmas se determinan según una secuencia de niveles de ruido {σi}. | |
| use_exponential_sigmas (`bool`, *opcional*, valor predeterminado `False`) : Si se deben usar sigmas exponenciales para los tamaños de paso en el plan de ruido durante el proceso de muestreo. | |
| use_beta_sigmas (`bool`, *opcional*, valor predeterminado `False`) : Si se deben usar sigmas beta para los tamaños de paso en el plan de ruido durante el proceso de muestreo. Consulte [Beta Sampling is All You Need](https://huggingface.co/papers/2407.12173) para obtener más información. | |
| use_flow_sigmas (`bool`, *opcional*, valor predeterminado `False`) : Si se deben usar sigmas de flujo para los tamaños de paso en el plan de ruido durante el proceso de muestreo. | |
| flow_shift (`float`, *opcional*, valor predeterminado `1.0`) : El parámetro de desplazamiento de flujo para modelos basados en flujo. | |
| final_sigmas_type (`"zero"` o `"sigma_min"`, *opcional*, valor predeterminado `"zero"`) : El valor final de `sigma` para el programa de ruido durante el proceso de muestreo. Si es `"sigma_min"`, el sigma final es el mismo que el último sigma del programa de entrenamiento. Si es `"zero"`, el sigma final se establece en 0. | |
| lambda_min_clipped (`float`, por defecto `-inf`) : Umbral de recorte para el valor mínimo de `lambda(t)` para la estabilidad numérica. Esto es crítico para el plan de ruido coseno (`squaredcos_cap_v2`). | |
| variance_type (`"learned"` o `"learned_range"`, *opcional*) : Establecer en `"learned"` o `"learned_range"` para modelos de difusión que predicen la varianza. Si se establece, la salida del modelo contiene la varianza gaussiana predicha. | |
| use_dynamic_shifting (`bool`, por defecto `False`) : Si se debe usar un desplazamiento dinámico para el plan de ruido. | |
| time_shift_type (`"exponential"`, por defecto `"exponential"`) : El tipo de desplazamiento temporal a aplicar. | |
| `DPMSolverSinglestepScheduler` es un solver de alto orden dedicado y rápido para ecuaciones diferenciales ordinarias de difusión. | |
| Este modelo hereda de [SchedulerMixin](/docs/diffusers/main/es/api/schedulers/overview#diffusers.SchedulerMixin) y [ConfigMixin](/docs/diffusers/main/es/api/configuration#diffusers.ConfigMixin). Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los programadores, como la carga y el guardado. | |
| #### add_noise[[diffusers.DPMSolverSinglestepScheduler.add_noise]] | |
| ```python | |
| add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L1277) | |
| **Parámetros:** | |
| original_samples (`torch.Tensor`) : Las muestras originales sin ruido. | |
| noise (`torch.Tensor`) : El ruido que se añadirá a las muestras. | |
| timesteps (`torch.IntTensor`) : Los pasos de tiempo en los que se debe añadir ruido a las muestras. | |
| **Devuelve:** `torch.Tensor` | |
| Las muestras ruidosas. | |
| Añade ruido a las muestras originales según el programa de ruido en los pasos de tiempo especificados. | |
| #### convert_model_output[[diffusers.DPMSolverSinglestepScheduler.convert_model_output]] | |
| ```python | |
| convert_model_output(model_output: Tensor, *args, sample: typing.Optional[torch.Tensor] = None, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L666) | |
| **Parámetros:** | |
| model_output (`torch.Tensor`) : La salida directa del modelo de difusión aprendido. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| **Devuelve:** `torch.Tensor` | |
| La salida del modelo convertido. | |
| Convierta la salida del modelo al tipo correspondiente que necesita el algoritmo DPMSolver/DPMSolver++. DPM-Solver está diseñado para discretizar una integral del modelo de predicción de ruido, y DPM-Solver++ está diseñado para discretizar una integral del modelo de predicción de datos. | |
| > [!TIP] > El algoritmo y el tipo de modelo están desacoplados. Puedes usar DPMSolver o DPMSolver++ para ambos | |
| ruido > predicción y modelos de predicción de datos. | |
| #### dpm_solver_first_order_update[[diffusers.DPMSolverSinglestepScheduler.dpm_solver_first_order_update]] | |
| ```python | |
| dpm_solver_first_order_update(model_output: Tensor, *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L762) | |
| **Parámetros:** | |
| model_output (`torch.Tensor`) : La salida directa del modelo de difusión aprendido. | |
| timestep (`int`) : El paso de tiempo discreto actual en la cadena de difusión. | |
| prev_timestep (`int`) : El paso de tiempo discreto anterior en la cadena de difusión. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| noise (`torch.Tensor`, *opcional*) : Ruido aleatorio utilizado por las variantes de resolventor estocástico (`sde-*`). Es obligatorio cuando `algorithm_type` se establece en una de ellas y no se utiliza en caso contrario. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver de primer orden (equivalente a DDIM). | |
| #### get_order_list[[diffusers.DPMSolverSinglestepScheduler.get_order_list]] | |
| ```python | |
| get_order_list(num_inference_steps: int) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L253) | |
| **Parámetros:** | |
| num_inference_steps (`int`) : El número de pasos de difusión utilizados al generar muestras con un modelo preentrenado. | |
| **Devuelve:** `list[int]` | |
| La lista de órdenes del solver para cada paso de tiempo. | |
| Calcula el orden del solver en cada paso de tiempo. | |
| #### index_for_timestep[[diffusers.DPMSolverSinglestepScheduler.index_for_timestep]] | |
| ```python | |
| index_for_timestep(timestep: typing.Union[int, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L1135) | |
| **Parámetros:** | |
| timestep (`int` o `torch.Tensor`) : El paso de tiempo para el que se debe encontrar el índice. | |
| schedule_timesteps (`torch.Tensor`, *opcional*) : El calendario de pasos de tiempo en el que buscar. Si es `None`, usa `self.timesteps`. | |
| **Devuelve:** `int` | |
| El índice del paso de tiempo en la programación. | |
| Encuentra el índice para un paso de tiempo dado en la programación. | |
| #### scale_model_input[[diffusers.DPMSolverSinglestepScheduler.scale_model_input]] | |
| ```python | |
| scale_model_input(sample: Tensor, *args, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L1261) | |
| **Parámetros:** | |
| sample (`torch.Tensor`) : La muestra de entrada. | |
| **Devuelve:** `torch.Tensor` | |
| Una muestra de entrada escalada. | |
| Garantiza la interoperabilidad con los programadores que necesitan escalar la entrada del modelo de desruido en función del paso temporal actual. | |
| #### set_begin_index[[diffusers.DPMSolverSinglestepScheduler.set_begin_index]] | |
| ```python | |
| set_begin_index(begin_index: int = 0) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L320) | |
| **Parámetros:** | |
| begin_index (`int`, por defecto `0`) : El índice inicial del programador. | |
| Establece el índice inicial para el programador. Esta función debe ejecutarse desde la tubería antes de la inferencia. | |
| #### set_timesteps[[diffusers.DPMSolverSinglestepScheduler.set_timesteps]] | |
| ```python | |
| set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, mu: float | None = None, timesteps: list[int] | None = None) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L330) | |
| **Parámetros:** | |
| num_inference_steps (`int`, *opcional*) : El número de pasos de difusión utilizados al generar muestras con un modelo preentrenado. | |
| device (`str` o `torch.device`, *opcional*) : El dispositivo al que deben moverse los pasos de tiempo. Si es `None`, los pasos de tiempo no se mueven. | |
| mu (`float`, *opcional*) : Exponente para el desplazamiento dinámico del tiempo. Requiere `use_dynamic_shifting` y un `time_shift_type` de `"exponential"`; cuando se pasa, `flow_shift` se establece en `exp(mu)`. | |
| timesteps (`list[int]`, *opcional*) : Pasos de tiempo personalizados para admitir un espaciado arbitrario entre los pasos de tiempo. Si es `None`, se utiliza la estrategia de espaciado de pasos de tiempo por defecto, que es un espaciado igual entre los pasos de tiempo. Si se pasa `timesteps`, `num_inference_steps` debe ser `None`. | |
| Establece los pasos discretos utilizados para la cadena de difusión (para ejecutarse antes de la inferencia). | |
| #### singlestep_dpm_solver_second_order_update[[diffusers.DPMSolverSinglestepScheduler.singlestep_dpm_solver_second_order_update]] | |
| ```python | |
| singlestep_dpm_solver_second_order_update(model_output_list: list[torch.Tensor], *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L829) | |
| **Parámetros:** | |
| model_output_list (`list[torch.Tensor]`) : Las salidas directas del modelo de difusión aprendido en los pasos de tiempo actuales y posteriores. | |
| timestep (`int`) : El paso de tiempo discreto actual y posterior en la cadena de difusión. | |
| prev_timestep (`int`) : El paso de tiempo discreto anterior en la cadena de difusión. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| noise (`torch.Tensor`, *opcional*) : Ruido aleatorio utilizado por las variantes de resolventor estocástico (`sde-*`). Es obligatorio cuando `algorithm_type` se establece en una de ellas y no se utiliza en caso contrario. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver de un solo paso de segundo orden que calcula la solución en el tiempo `prev_timestep` a partir del tiempo `timestep_list[-2]`. | |
| #### singlestep_dpm_solver_third_order_update[[diffusers.DPMSolverSinglestepScheduler.singlestep_dpm_solver_third_order_update]] | |
| ```python | |
| singlestep_dpm_solver_third_order_update(model_output_list: list[torch.Tensor], *args, sample: typing.Optional[torch.Tensor] = None, noise: typing.Optional[torch.Tensor] = None, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L943) | |
| **Parámetros:** | |
| model_output_list (`list[torch.Tensor]`) : Las salidas directas del modelo de difusión aprendido en los pasos de tiempo actuales y posteriores. | |
| timestep (`int`) : El paso de tiempo discreto actual y posterior en la cadena de difusión. | |
| prev_timestep (`int`) : El paso de tiempo discreto anterior en la cadena de difusión. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| noise (`torch.Tensor`, *opcional*) : Ruido aleatorio utilizado por las variantes de resolventor estocástico (`sde-*`). Es obligatorio cuando `algorithm_type` se establece en una de ellas y no se utiliza en caso contrario. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver de un solo paso de tercer orden que calcula la solución en el tiempo `prev_timestep` a partir del tiempo `timestep_list[-3]`. | |
| #### singlestep_dpm_solver_update[[diffusers.DPMSolverSinglestepScheduler.singlestep_dpm_solver_update]] | |
| ```python | |
| singlestep_dpm_solver_update(model_output_list: list[torch.Tensor], *args, sample: typing.Optional[torch.Tensor] = None, order: int = None, noise: typing.Optional[torch.Tensor] = None, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L1068) | |
| **Parámetros:** | |
| model_output_list (`list[torch.Tensor]`) : Las salidas directas del modelo de difusión aprendido en los pasos de tiempo actuales y posteriores. | |
| timestep (`int`) : El paso de tiempo discreto actual y posterior en la cadena de difusión. | |
| prev_timestep (`int`) : El paso de tiempo discreto anterior en la cadena de difusión. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| order (`int`) : El orden del solver en este paso. | |
| noise (`torch.Tensor`, *opcional*) : Ruido aleatorio utilizado por las variantes de resolventor estocástico (`sde-*`). Es obligatorio cuando `algorithm_type` se establece en una de ellas y no se utiliza en caso contrario. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver de un solo paso. | |
| #### paso[[diffusers.DPMSolverSinglestepScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_singlestep.py#L1188) | |
| **Parámetros:** | |
| model_output (`torch.Tensor`) : La salida directa del modelo de difusión aprendido. | |
| timestep (`int` o `torch.Tensor`) : El paso de tiempo discreto actual en la cadena de difusión. | |
| sample (`torch.Tensor`) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| generator (`torch.Generator`, *opcional*) : Un generador de números aleatorios para muestreo estocástico. | |
| return_dict (`bool`, por defecto `True`) : Si se devuelve un [SchedulerOutput](/docs/diffusers/main/es/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) o un `tuple`. | |
| **Devuelve:** [SchedulerOutput](/docs/diffusers/main/es/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput) o `tuple` | |
| If return_dict es `True`, se devuelve [SchedulerOutput](/docs/diffusers/main/es/api/schedulers/ipndm#diffusers.schedulers.scheduling_utils.SchedulerOutput); en caso contrario, se devuelve una tupla cuyo primer elemento es el tensor de muestras. | |
| Predice la muestra del paso de tiempo anterior invirtiendo el SDE. Esta función propaga la muestra con el DPMSolver de un solo paso. | |
| ## SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]] | |
| #### diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]] | |
| ```python | |
| diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_utils.py#L66) | |
| **Parámetros:** | |
| prev_sample (`torch.Tensor` de forma `(batch_size, num_channels, height, width)` para imágenes) : Muestra `(x_{t-1})` calculada del paso de tiempo anterior. `prev_sample` debe usarse como entrada del modelo en la siguiente iteración del bucle de desruido. | |
| Clase base para la salida de la función `step` de un programador. | |
Xet Storage Details
- Size:
- 21.2 kB
- Xet hash:
- 6997b5e3f0edecc8dd6f670fed49955fb122d7c834f2c9b335a768c7a981af03
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.