Buckets:
| # DPMSolverMultistepScheduler | |
| `DPMSolverMultistepScheduler` es un programador multipaso 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. | |
| ## 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. En los modelos de difusión en el espacio de píxeles, puedes establecer tanto `algorithm_type="dpmsolver++"` como `thresholding=True` para utilizar 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. | |
| La variante SDE de DPMSolver y DPM-Solver++ también se admite, pero solo para los solvers de primer y segundo orden. Se trata de un solver SDE rápido para la SDE de difusión inversa. Se recomienda utilizar el solver de segundo orden `sde-dpmsolver++`. | |
| ## DPMSolverMultistepScheduler[[diffusers.DPMSolverMultistepScheduler]] | |
| #### diffusers.DPMSolverMultistepScheduler[[diffusers.DPMSolverMultistepScheduler]] | |
| ```python | |
| diffusers.DPMSolverMultistepScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.0001, beta_end: float = 0.02, beta_schedule: str = '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', 'sde-dpmsolver++'] = 'dpmsolver++', solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint', lower_order_final: bool = True, euler_at_final: bool = False, use_karras_sigmas: bool = False, use_exponential_sigmas: bool = False, use_beta_sigmas: bool = False, use_lu_lambdas: 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, timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace', steps_offset: int = 0, rescale_betas_zero_snr: bool = False, 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_multistep.py#L123) | |
| **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. | |
| trained_betas (`np.ndarray`, *opcional*) : Pasa un array de betas directamente al constructor para omitir `beta_start` y `beta_end`. | |
| solver_order (`int`, valor predeterminado 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"` o `"flow_prediction"`, por defecto `"epsilon"`) : Tipo de predicción de la función del programador. `epsilon` predice el ruido del proceso de difusión, `sample` predice directamente la muestra con ruido, `v_prediction` predice la velocidad (ver la sección 2.4 del artículo [Imagen Video](https://huggingface.co/papers/2210.02303)) y `flow_prediction` predice el flujo. | |
| 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++"`, `"sde-dpmsolver"` o `"sde-dpmsolver++"`, por defecto `"dpmsolver++"`) : Tipo de algoritmo para el solver. 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. 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 `midpoint`. | |
| lower_order_final (`bool`, por defecto `True`) : 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. | |
| euler_at_final (`bool`, por defecto `False`) : Si se debe utilizar el método de Euler en el paso final. Es un equilibrio entre la estabilidad numérica y la riqueza de detalle. Esto puede estabilizar el muestreo de la variante SDE de DPMSolver para un número pequeño de pasos de inferencia, pero a veces puede resultar en un desenfoque. | |
| 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_lu_lambdas (`bool`, *opcional*, valor predeterminado `False`) : Si se debe usar el uniform-logSNR para los tamaños de paso propuestos por el DPM-Solver de Lu en el plan de ruido durante el proceso de muestreo. Si es `True`, las sigmas y los pasos de tiempo se determinan según una secuencia de `lambda(t)`. | |
| 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 valor de desplazamiento para la programación de pasos de tiempo para flow matching. | |
| 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. | |
| timestep_spacing (`"linspace"`, `"leading"` o `"trailing"`, por defecto `"linspace"`) : La forma en que se deben escalar los timesteps. Consulte la Tabla 2 de [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) para obtener más información. | |
| steps_offset (`int`, valor predeterminado 0) : Un desplazamiento que se suma a los pasos de inferencia, tal como lo requieren algunas familias de modelos. | |
| rescale_betas_zero_snr (`bool`, por defecto `False`) : Si se deben reescalar los betas para tener un SNR terminal cero. Esto permite al modelo generar muestras muy brillantes y oscuras en lugar de limitarlo a muestras con un brillo medio. Relacionado de forma laxa con [`--offset_noise`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506). | |
| use_dynamic_shifting (`bool`, por defecto `False`) : Si se debe usar un desplazamiento dinámico para la programación de pasos de tiempo. | |
| time_shift_type (`"exponential"`, por defecto `"exponential"`) : El tipo de desplazamiento temporal que se aplica al usar desplazamiento dinámico. | |
| `DPMSolverMultistepScheduler` 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.DPMSolverMultistepScheduler.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_multistep.py#L1303) | |
| **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.DPMSolverMultistepScheduler.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_multistep.py#L749) | |
| **Parámetros:** | |
| model_output (`torch.Tensor`) : La salida directa del modelo de difusión aprendido. | |
| sample (`torch.Tensor`, *opcional*) : 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.DPMSolverMultistepScheduler.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_multistep.py#L847) | |
| **Parámetros:** | |
| model_output (`torch.Tensor`) : La salida directa del modelo de difusión aprendido. | |
| sample (`torch.Tensor`, *opcional*) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| noise (`torch.Tensor`, *opcional*) : El tensor de ruido. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver de primer orden (equivalente a DDIM). | |
| #### index_for_timestep[[diffusers.DPMSolverMultistepScheduler.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_multistep.py#L1144) | |
| **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. | |
| #### multistep_dpm_solver_second_order_update[[diffusers.DPMSolverMultistepScheduler.multistep_dpm_solver_second_order_update]] | |
| ```python | |
| multistep_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_multistep.py#L921) | |
| **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. | |
| sample (`torch.Tensor`, *opcional*) : 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 multipaso de segundo orden. | |
| #### multistep_dpm_solver_third_order_update[[diffusers.DPMSolverMultistepScheduler.multistep_dpm_solver_third_order_update]] | |
| ```python | |
| multistep_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_multistep.py#L1047) | |
| **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. | |
| sample (`torch.Tensor`, *opcional*) : Una instancia actual de una muestra creada por el proceso de difusión. | |
| noise (`torch.Tensor`, *opcional*) : El tensor de ruido. | |
| **Devuelve:** `torch.Tensor` | |
| El tensor de muestra en el paso de tiempo anterior. | |
| Un paso para el DPMSolver multipaso de tercer orden. | |
| #### scale_model_input[[diffusers.DPMSolverMultistepScheduler.scale_model_input]] | |
| ```python | |
| scale_model_input(sample: Tensor, *args, **kwargs) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py#L1288) | |
| **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.DPMSolverMultistepScheduler.set_begin_index]] | |
| ```python | |
| set_begin_index(begin_index: int = 0) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py#L357) | |
| **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.DPMSolverMultistepScheduler.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_multistep.py#L367) | |
| **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 una programación de pasos de tiempo arbitraria. Si es `None`, los pasos de tiempo se generarán en función del atributo `timestep_spacing`. Si se pasa `timesteps`, `num_inference_steps` y `sigmas` deben ser `None`, y el atributo `timestep_spacing` se ignorará. | |
| Establece los pasos discretos utilizados para la cadena de difusión (para ejecutarse antes de la inferencia). | |
| #### paso[[diffusers.DPMSolverMultistepScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: Tensor, generator: typing.Optional[torch.Generator] = None, variance_noise: typing.Optional[torch.Tensor] = None, return_dict: bool = True) | |
| ``` | |
| [Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_dpmsolver_multistep.py#L1196) | |
| **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. | |
| variance_noise (`torch.Tensor`, *opcional*) : Alternativa a generar ruido con `generator` proporcionando directamente el ruido para la varianza en sí. Útil para métodos como `LEdits++`. | |
| 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` | |
| Si `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 la EDE. Esta función propaga la muestra con el DPMSolver de múltiples pasos. | |
| ## 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:
- 20.3 kB
- Xet hash:
- be8abacbba944e5ff27faf51b73914050efbb1f34c10d006741f0c6991fac14d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.