Buckets:
| import{s as Ce,n as $e,o as Me}from"../chunks/scheduler.8c3d61f6.js";import{S as Le,i as Se,g as a,s as r,r as u,A as we,h as d,f as t,c as i,j as E,u as f,x as N,k,y as n,a as l,v as m,d as h,t as g,w as _}from"../chunks/index.da70eac4.js";import{D as R}from"../chunks/Docstring.fa488882.js";import{H as fe,E as Te}from"../chunks/index.dfbaf638.js";function De(me){let p,G,A,U,C,j,$,J,M,he=`Multistep and onestep scheduler (Algorithm 3) introduced alongside latent consistency models in the paper <a href="https://arxiv.org/abs/2310.04378" rel="nofollow">Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference</a> by Simian Luo, Yiqin Tan, Longbo Huang, Jian Li, and Hang Zhao. | |
| This scheduler should be able to generate good samples from <a href="/docs/diffusers/pr_11415/en/api/pipelines/latent_consistency_models#diffusers.LatentConsistencyModelPipeline">LatentConsistencyModelPipeline</a> in 1-8 steps.`,Y,L,Z,s,S,se,q,ge=`<code>LCMScheduler</code> extends the denoising procedure introduced in denoising diffusion probabilistic models (DDPMs) with | |
| non-Markovian guidance.`,oe,H,_e=`This model inherits from <a href="/docs/diffusers/pr_11415/en/api/schedulers/overview#diffusers.SchedulerMixin">SchedulerMixin</a> and <a href="/docs/diffusers/pr_11415/en/api/configuration#diffusers.ConfigMixin">ConfigMixin</a>. <a href="/docs/diffusers/pr_11415/en/api/configuration#diffusers.ConfigMixin">~ConfigMixin</a> takes care of storing all config | |
| attributes that are passed in the scheduler’s <code>__init__</code> function, such as <code>num_train_timesteps</code>. They can be | |
| accessed via <code>scheduler.config.num_train_timesteps</code>. <a href="/docs/diffusers/pr_11415/en/api/schedulers/overview#diffusers.SchedulerMixin">SchedulerMixin</a> provides general loading and saving | |
| functionality via the <a href="/docs/diffusers/pr_11415/en/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained">SchedulerMixin.save_pretrained()</a> and <a href="/docs/diffusers/pr_11415/en/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained">from_pretrained()</a> functions.`,re,b,w,ie,O,be=`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the | |
| current timestep.`,ae,v,T,de,V,ve="Sets the begin index for the scheduler. This function should be run from pipeline before the inference.",ce,x,D,le,z,xe="Sets the discrete timesteps used for the diffusion chain (to be run before inference).",pe,y,P,ue,F,ye=`Predict the sample from the previous timestep by reversing the SDE. This function propagates the diffusion | |
| process from the learned model outputs (most often the predicted noise).`,B,I,K,W,Q;return C=new fe({props:{title:"Latent Consistency Model Multistep Scheduler",local:"latent-consistency-model-multistep-scheduler",headingTag:"h1"}}),$=new fe({props:{title:"Overview",local:"overview",headingTag:"h2"}}),L=new fe({props:{title:"LCMScheduler",local:"diffusers.LCMScheduler",headingTag:"h2"}}),S=new R({props:{name:"class diffusers.LCMScheduler",anchor:"diffusers.LCMScheduler",parameters:[{name:"num_train_timesteps",val:": int = 1000"},{name:"beta_start",val:": float = 0.00085"},{name:"beta_end",val:": float = 0.012"},{name:"beta_schedule",val:": str = 'scaled_linear'"},{name:"trained_betas",val:": typing.Union[numpy.ndarray, typing.List[float], NoneType] = None"},{name:"original_inference_steps",val:": int = 50"},{name:"clip_sample",val:": bool = False"},{name:"clip_sample_range",val:": float = 1.0"},{name:"set_alpha_to_one",val:": bool = True"},{name:"steps_offset",val:": int = 0"},{name:"prediction_type",val:": str = 'epsilon'"},{name:"thresholding",val:": bool = False"},{name:"dynamic_thresholding_ratio",val:": float = 0.995"},{name:"sample_max_value",val:": float = 1.0"},{name:"timestep_spacing",val:": str = 'leading'"},{name:"timestep_scaling",val:": float = 10.0"},{name:"rescale_betas_zero_snr",val:": bool = False"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.num_train_timesteps",description:`<strong>num_train_timesteps</strong> (<code>int</code>, defaults to 1000) — | |
| The number of diffusion steps to train the model.`,name:"num_train_timesteps"},{anchor:"diffusers.LCMScheduler.beta_start",description:`<strong>beta_start</strong> (<code>float</code>, defaults to 0.0001) — | |
| The starting <code>beta</code> value of inference.`,name:"beta_start"},{anchor:"diffusers.LCMScheduler.beta_end",description:`<strong>beta_end</strong> (<code>float</code>, defaults to 0.02) — | |
| The final <code>beta</code> value.`,name:"beta_end"},{anchor:"diffusers.LCMScheduler.beta_schedule",description:`<strong>beta_schedule</strong> (<code>str</code>, defaults to <code>"linear"</code>) — | |
| The beta schedule, a mapping from a beta range to a sequence of betas for stepping the model. Choose from | |
| <code>linear</code>, <code>scaled_linear</code>, or <code>squaredcos_cap_v2</code>.`,name:"beta_schedule"},{anchor:"diffusers.LCMScheduler.trained_betas",description:`<strong>trained_betas</strong> (<code>np.ndarray</code>, <em>optional</em>) — | |
| Pass an array of betas directly to the constructor to bypass <code>beta_start</code> and <code>beta_end</code>.`,name:"trained_betas"},{anchor:"diffusers.LCMScheduler.original_inference_steps",description:`<strong>original_inference_steps</strong> (<code>int</code>, <em>optional</em>, defaults to 50) — | |
| The default number of inference steps used to generate a linearly-spaced timestep schedule, from which we | |
| will ultimately take <code>num_inference_steps</code> evenly spaced timesteps to form the final timestep schedule.`,name:"original_inference_steps"},{anchor:"diffusers.LCMScheduler.clip_sample",description:`<strong>clip_sample</strong> (<code>bool</code>, defaults to <code>True</code>) — | |
| Clip the predicted sample for numerical stability.`,name:"clip_sample"},{anchor:"diffusers.LCMScheduler.clip_sample_range",description:`<strong>clip_sample_range</strong> (<code>float</code>, defaults to 1.0) — | |
| The maximum magnitude for sample clipping. Valid only when <code>clip_sample=True</code>.`,name:"clip_sample_range"},{anchor:"diffusers.LCMScheduler.set_alpha_to_one",description:`<strong>set_alpha_to_one</strong> (<code>bool</code>, defaults to <code>True</code>) — | |
| Each diffusion step uses the alphas product value at that step and at the previous one. For the final step | |
| there is no previous alpha. When this option is <code>True</code> the previous alpha product is fixed to <code>1</code>, | |
| otherwise it uses the alpha value at step 0.`,name:"set_alpha_to_one"},{anchor:"diffusers.LCMScheduler.steps_offset",description:`<strong>steps_offset</strong> (<code>int</code>, defaults to 0) — | |
| An offset added to the inference steps, as required by some model families.`,name:"steps_offset"},{anchor:"diffusers.LCMScheduler.prediction_type",description:`<strong>prediction_type</strong> (<code>str</code>, defaults to <code>epsilon</code>, <em>optional</em>) — | |
| Prediction type of the scheduler function; can be <code>epsilon</code> (predicts the noise of the diffusion process), | |
| <code>sample</code> (directly predicts the noisy sample<code>) or </code>v_prediction\` (see section 2.4 of <a href="https://imagen.research.google/video/paper.pdf" rel="nofollow">Imagen | |
| Video</a> paper).`,name:"prediction_type"},{anchor:"diffusers.LCMScheduler.thresholding",description:`<strong>thresholding</strong> (<code>bool</code>, defaults to <code>False</code>) — | |
| Whether to use the “dynamic thresholding” method. This is unsuitable for latent-space diffusion models such | |
| as Stable Diffusion.`,name:"thresholding"},{anchor:"diffusers.LCMScheduler.dynamic_thresholding_ratio",description:`<strong>dynamic_thresholding_ratio</strong> (<code>float</code>, defaults to 0.995) — | |
| The ratio for the dynamic thresholding method. Valid only when <code>thresholding=True</code>.`,name:"dynamic_thresholding_ratio"},{anchor:"diffusers.LCMScheduler.sample_max_value",description:`<strong>sample_max_value</strong> (<code>float</code>, defaults to 1.0) — | |
| The threshold value for dynamic thresholding. Valid only when <code>thresholding=True</code>.`,name:"sample_max_value"},{anchor:"diffusers.LCMScheduler.timestep_spacing",description:`<strong>timestep_spacing</strong> (<code>str</code>, defaults to <code>"leading"</code>) — | |
| The way the timesteps should be scaled. Refer to Table 2 of the <a href="https://huggingface.co/papers/2305.08891" rel="nofollow">Common Diffusion Noise Schedules and | |
| Sample Steps are Flawed</a> for more information.`,name:"timestep_spacing"},{anchor:"diffusers.LCMScheduler.timestep_scaling",description:`<strong>timestep_scaling</strong> (<code>float</code>, defaults to 10.0) — | |
| The factor the timesteps will be multiplied by when calculating the consistency model boundary conditions | |
| <code>c_skip</code> and <code>c_out</code>. Increasing this will decrease the approximation error (although the approximation | |
| error at the default of <code>10.0</code> is already pretty small).`,name:"timestep_scaling"},{anchor:"diffusers.LCMScheduler.rescale_betas_zero_snr",description:`<strong>rescale_betas_zero_snr</strong> (<code>bool</code>, defaults to <code>False</code>) — | |
| Whether to rescale the betas to have zero terminal SNR. This enables the model to generate very bright and | |
| dark samples instead of limiting it to samples with medium brightness. Loosely related to | |
| <a href="https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506" rel="nofollow"><code>--offset_noise</code></a>.`,name:"rescale_betas_zero_snr"}],source:"https://github.com/huggingface/diffusers/blob/vr_11415/src/diffusers/schedulers/scheduling_lcm.py#L134"}}),w=new R({props:{name:"scale_model_input",anchor:"diffusers.LCMScheduler.scale_model_input",parameters:[{name:"sample",val:": Tensor"},{name:"timestep",val:": typing.Optional[int] = None"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.scale_model_input.sample",description:`<strong>sample</strong> (<code>torch.Tensor</code>) — | |
| The input sample.`,name:"sample"},{anchor:"diffusers.LCMScheduler.scale_model_input.timestep",description:`<strong>timestep</strong> (<code>int</code>, <em>optional</em>) — | |
| The current timestep in the diffusion chain.`,name:"timestep"}],source:"https://github.com/huggingface/diffusers/blob/vr_11415/src/diffusers/schedulers/scheduling_lcm.py#L299",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>A scaled input sample.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>torch.Tensor</code></p> | |
| `}}),T=new R({props:{name:"set_begin_index",anchor:"diffusers.LCMScheduler.set_begin_index",parameters:[{name:"begin_index",val:": int = 0"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.set_begin_index.begin_index",description:`<strong>begin_index</strong> (<code>int</code>) — | |
| The begin index for the scheduler.`,name:"begin_index"}],source:"https://github.com/huggingface/diffusers/blob/vr_11415/src/diffusers/schedulers/scheduling_lcm.py#L289"}}),D=new R({props:{name:"set_timesteps",anchor:"diffusers.LCMScheduler.set_timesteps",parameters:[{name:"num_inference_steps",val:": typing.Optional[int] = None"},{name:"device",val:": typing.Union[str, torch.device] = None"},{name:"original_inference_steps",val:": typing.Optional[int] = None"},{name:"timesteps",val:": typing.Optional[typing.List[int]] = None"},{name:"strength",val:": int = 1.0"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.set_timesteps.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>, <em>optional</em>) — | |
| The number of diffusion steps used when generating samples with a pre-trained model. If used, | |
| <code>timesteps</code> must be <code>None</code>.`,name:"num_inference_steps"},{anchor:"diffusers.LCMScheduler.set_timesteps.device",description:`<strong>device</strong> (<code>str</code> or <code>torch.device</code>, <em>optional</em>) — | |
| The device to which the timesteps should be moved to. If <code>None</code>, the timesteps are not moved.`,name:"device"},{anchor:"diffusers.LCMScheduler.set_timesteps.original_inference_steps",description:`<strong>original_inference_steps</strong> (<code>int</code>, <em>optional</em>) — | |
| The original number of inference steps, which will be used to generate a linearly-spaced timestep | |
| schedule (which is different from the standard <code>diffusers</code> implementation). We will then take | |
| <code>num_inference_steps</code> timesteps from this schedule, evenly spaced in terms of indices, and use that as | |
| our final timestep schedule. If not set, this will default to the <code>original_inference_steps</code> attribute.`,name:"original_inference_steps"},{anchor:"diffusers.LCMScheduler.set_timesteps.timesteps",description:`<strong>timesteps</strong> (<code>List[int]</code>, <em>optional</em>) — | |
| Custom timesteps used to support arbitrary spacing between timesteps. If <code>None</code>, then the default | |
| timestep spacing strategy of equal spacing between timesteps on the training/distillation timestep | |
| schedule is used. If <code>timesteps</code> is passed, <code>num_inference_steps</code> must be <code>None</code>.`,name:"timesteps"}],source:"https://github.com/huggingface/diffusers/blob/vr_11415/src/diffusers/schedulers/scheduling_lcm.py#L349"}}),P=new R({props:{name:"step",anchor:"diffusers.LCMScheduler.step",parameters:[{name:"model_output",val:": Tensor"},{name:"timestep",val:": int"},{name:"sample",val:": Tensor"},{name:"generator",val:": typing.Optional[torch._C.Generator] = None"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.step.model_output",description:`<strong>model_output</strong> (<code>torch.Tensor</code>) — | |
| The direct output from learned diffusion model.`,name:"model_output"},{anchor:"diffusers.LCMScheduler.step.timestep",description:`<strong>timestep</strong> (<code>float</code>) — | |
| The current discrete timestep in the diffusion chain.`,name:"timestep"},{anchor:"diffusers.LCMScheduler.step.sample",description:`<strong>sample</strong> (<code>torch.Tensor</code>) — | |
| A current instance of a sample created by the diffusion process.`,name:"sample"},{anchor:"diffusers.LCMScheduler.step.generator",description:`<strong>generator</strong> (<code>torch.Generator</code>, <em>optional</em>) — | |
| A random number generator.`,name:"generator"},{anchor:"diffusers.LCMScheduler.step.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) — | |
| Whether or not to return a <code>LCMSchedulerOutput</code> or <code>tuple</code>.`,name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/vr_11415/src/diffusers/schedulers/scheduling_lcm.py#L497",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>If return_dict is <code>True</code>, <code>LCMSchedulerOutput</code> is returned, otherwise a | |
| tuple is returned where the first element is the sample tensor.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>~schedulers.scheduling_utils.LCMSchedulerOutput</code> or <code>tuple</code></p> | |
| `}}),I=new Te({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/schedulers/lcm.md"}}),{c(){p=a("meta"),G=r(),A=a("p"),U=r(),u(C.$$.fragment),j=r(),u($.$$.fragment),J=r(),M=a("p"),M.innerHTML=he,Y=r(),u(L.$$.fragment),Z=r(),s=a("div"),u(S.$$.fragment),se=r(),q=a("p"),q.innerHTML=ge,oe=r(),H=a("p"),H.innerHTML=_e,re=r(),b=a("div"),u(w.$$.fragment),ie=r(),O=a("p"),O.textContent=be,ae=r(),v=a("div"),u(T.$$.fragment),de=r(),V=a("p"),V.textContent=ve,ce=r(),x=a("div"),u(D.$$.fragment),le=r(),z=a("p"),z.textContent=xe,pe=r(),y=a("div"),u(P.$$.fragment),ue=r(),F=a("p"),F.textContent=ye,B=r(),u(I.$$.fragment),K=r(),W=a("p"),this.h()},l(e){const o=we("svelte-u9bgzb",document.head);p=d(o,"META",{name:!0,content:!0}),o.forEach(t),G=i(e),A=d(e,"P",{}),E(A).forEach(t),U=i(e),f(C.$$.fragment,e),j=i(e),f($.$$.fragment,e),J=i(e),M=d(e,"P",{"data-svelte-h":!0}),N(M)!=="svelte-1fek2ys"&&(M.innerHTML=he),Y=i(e),f(L.$$.fragment,e),Z=i(e),s=d(e,"DIV",{class:!0});var c=E(s);f(S.$$.fragment,c),se=i(c),q=d(c,"P",{"data-svelte-h":!0}),N(q)!=="svelte-1cn3gww"&&(q.innerHTML=ge),oe=i(c),H=d(c,"P",{"data-svelte-h":!0}),N(H)!=="svelte-23nnf4"&&(H.innerHTML=_e),re=i(c),b=d(c,"DIV",{class:!0});var X=E(b);f(w.$$.fragment,X),ie=i(X),O=d(X,"P",{"data-svelte-h":!0}),N(O)!=="svelte-1rkfgpx"&&(O.textContent=be),X.forEach(t),ae=i(c),v=d(c,"DIV",{class:!0});var ee=E(v);f(T.$$.fragment,ee),de=i(ee),V=d(ee,"P",{"data-svelte-h":!0}),N(V)!=="svelte-1k141rk"&&(V.textContent=ve),ee.forEach(t),ce=i(c),x=d(c,"DIV",{class:!0});var te=E(x);f(D.$$.fragment,te),le=i(te),z=d(te,"P",{"data-svelte-h":!0}),N(z)!=="svelte-1vzm9q"&&(z.textContent=xe),te.forEach(t),pe=i(c),y=d(c,"DIV",{class:!0});var ne=E(y);f(P.$$.fragment,ne),ue=i(ne),F=d(ne,"P",{"data-svelte-h":!0}),N(F)!=="svelte-hi84tp"&&(F.textContent=ye),ne.forEach(t),c.forEach(t),B=i(e),f(I.$$.fragment,e),K=i(e),W=d(e,"P",{}),E(W).forEach(t),this.h()},h(){k(p,"name","hf:doc:metadata"),k(p,"content",Pe),k(b,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),k(v,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),k(x,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),k(y,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),k(s,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,o){n(document.head,p),l(e,G,o),l(e,A,o),l(e,U,o),m(C,e,o),l(e,j,o),m($,e,o),l(e,J,o),l(e,M,o),l(e,Y,o),m(L,e,o),l(e,Z,o),l(e,s,o),m(S,s,null),n(s,se),n(s,q),n(s,oe),n(s,H),n(s,re),n(s,b),m(w,b,null),n(b,ie),n(b,O),n(s,ae),n(s,v),m(T,v,null),n(v,de),n(v,V),n(s,ce),n(s,x),m(D,x,null),n(x,le),n(x,z),n(s,pe),n(s,y),m(P,y,null),n(y,ue),n(y,F),l(e,B,o),m(I,e,o),l(e,K,o),l(e,W,o),Q=!0},p:$e,i(e){Q||(h(C.$$.fragment,e),h($.$$.fragment,e),h(L.$$.fragment,e),h(S.$$.fragment,e),h(w.$$.fragment,e),h(T.$$.fragment,e),h(D.$$.fragment,e),h(P.$$.fragment,e),h(I.$$.fragment,e),Q=!0)},o(e){g(C.$$.fragment,e),g($.$$.fragment,e),g(L.$$.fragment,e),g(S.$$.fragment,e),g(w.$$.fragment,e),g(T.$$.fragment,e),g(D.$$.fragment,e),g(P.$$.fragment,e),g(I.$$.fragment,e),Q=!1},d(e){e&&(t(G),t(A),t(U),t(j),t(J),t(M),t(Y),t(Z),t(s),t(B),t(K),t(W)),t(p),_(C,e),_($,e),_(L,e),_(S),_(w),_(T),_(D),_(P),_(I,e)}}}const Pe='{"title":"Latent Consistency Model Multistep Scheduler","local":"latent-consistency-model-multistep-scheduler","sections":[{"title":"Overview","local":"overview","sections":[],"depth":2},{"title":"LCMScheduler","local":"diffusers.LCMScheduler","sections":[],"depth":2}],"depth":1}';function Ie(me){return Me(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class He extends Le{constructor(p){super(),Se(this,p,Ie,De,Ce,{})}}export{He as component}; | |
Xet Storage Details
- Size:
- 19.3 kB
- Xet hash:
- 307f12e5d5eb8a08c4715efde7528f4885ffa7d4b1c156dc4f243ef51143a956
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.