Buckets:
| import{s as fe,n as me,o as he}from"../chunks/scheduler.182ea377.js";import{S as ge,i as _e,g as a,s as r,r as C,A as ve,h as d,f as t,c as i,j as q,u as S,x as E,k as H,y as o,a as l,v as L,d as $,t as w,w as T}from"../chunks/index.abf12888.js";import{D as B}from"../chunks/Docstring.93f6f462.js";import{H as re}from"../chunks/Heading.16916d63.js";function be(ie){let p,z,k,V,h,A,g,W,_,ae=`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/v0.26.2/en/api/pipelines/latent_consistency_models#diffusers.LatentConsistencyModelPipeline">LatentConsistencyModelPipeline</a> in 1-8 steps.`,R,v,U,s,b,K,D,de=`<code>LCMScheduler</code> extends the denoising procedure introduced in denoising diffusion probabilistic models (DDPMs) with | |
| non-Markovian guidance.`,Q,P,ce=`This model inherits from <a href="/docs/diffusers/v0.26.2/en/api/schedulers/overview#diffusers.SchedulerMixin">SchedulerMixin</a> and <a href="/docs/diffusers/v0.26.2/en/api/configuration#diffusers.ConfigMixin">ConfigMixin</a>. <a href="/docs/diffusers/v0.26.2/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/v0.26.2/en/api/schedulers/overview#diffusers.SchedulerMixin">SchedulerMixin</a> provides general loading and saving | |
| functionality via the <a href="/docs/diffusers/v0.26.2/en/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained">SchedulerMixin.save_pretrained()</a> and <a href="/docs/diffusers/v0.26.2/en/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained">from_pretrained()</a> functions.`,X,u,x,ee,F,le=`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the | |
| current timestep.`,te,f,M,se,I,pe="Sets the discrete timesteps used for the diffusion chain (to be run before inference).",ne,m,y,oe,N,ue=`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).`,Y,O,j;return h=new re({props:{title:"Latent Consistency Model Multistep Scheduler",local:"latent-consistency-model-multistep-scheduler",headingTag:"h1"}}),g=new re({props:{title:"Overview",local:"overview",headingTag:"h2"}}),v=new re({props:{title:"LCMScheduler",local:"diffusers.LCMScheduler",headingTag:"h2"}}),b=new B({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:": Union = 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. You can use a combination of <code>offset=1</code> and | |
| <code>set_alpha_to_one=False</code> to make the last step use step 0 for the previous alpha product like in Stable | |
| Diffusion.`,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/v0.26.2/src/diffusers/schedulers/scheduling_lcm.py#L134"}}),x=new B({props:{name:"scale_model_input",anchor:"diffusers.LCMScheduler.scale_model_input",parameters:[{name:"sample",val:": FloatTensor"},{name:"timestep",val:": Optional = None"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.scale_model_input.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</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/v0.26.2/src/diffusers/schedulers/scheduling_lcm.py#L276",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.FloatTensor</code></p> | |
| `}}),M=new B({props:{name:"set_timesteps",anchor:"diffusers.LCMScheduler.set_timesteps",parameters:[{name:"num_inference_steps",val:": Optional = None"},{name:"device",val:": Union = None"},{name:"original_inference_steps",val:": Optional = None"},{name:"timesteps",val:": Optional = 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/v0.26.2/src/diffusers/schedulers/scheduling_lcm.py#L326"}}),y=new B({props:{name:"step",anchor:"diffusers.LCMScheduler.step",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": int"},{name:"sample",val:": FloatTensor"},{name:"generator",val:": Optional = None"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.LCMScheduler.step.model_output",description:`<strong>model_output</strong> (<code>torch.FloatTensor</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.FloatTensor</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/v0.26.2/src/diffusers/schedulers/scheduling_lcm.py#L474",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> | |
| `}}),{c(){p=a("meta"),z=r(),k=a("p"),V=r(),C(h.$$.fragment),A=r(),C(g.$$.fragment),W=r(),_=a("p"),_.innerHTML=ae,R=r(),C(v.$$.fragment),U=r(),s=a("div"),C(b.$$.fragment),K=r(),D=a("p"),D.innerHTML=de,Q=r(),P=a("p"),P.innerHTML=ce,X=r(),u=a("div"),C(x.$$.fragment),ee=r(),F=a("p"),F.textContent=le,te=r(),f=a("div"),C(M.$$.fragment),se=r(),I=a("p"),I.textContent=pe,ne=r(),m=a("div"),C(y.$$.fragment),oe=r(),N=a("p"),N.textContent=ue,Y=r(),O=a("p"),this.h()},l(e){const n=ve("svelte-u9bgzb",document.head);p=d(n,"META",{name:!0,content:!0}),n.forEach(t),z=i(e),k=d(e,"P",{}),q(k).forEach(t),V=i(e),S(h.$$.fragment,e),A=i(e),S(g.$$.fragment,e),W=i(e),_=d(e,"P",{"data-svelte-h":!0}),E(_)!=="svelte-157mqql"&&(_.innerHTML=ae),R=i(e),S(v.$$.fragment,e),U=i(e),s=d(e,"DIV",{class:!0});var c=q(s);S(b.$$.fragment,c),K=i(c),D=d(c,"P",{"data-svelte-h":!0}),E(D)!=="svelte-1cn3gww"&&(D.innerHTML=de),Q=i(c),P=d(c,"P",{"data-svelte-h":!0}),E(P)!=="svelte-1xc0752"&&(P.innerHTML=ce),X=i(c),u=d(c,"DIV",{class:!0});var G=q(u);S(x.$$.fragment,G),ee=i(G),F=d(G,"P",{"data-svelte-h":!0}),E(F)!=="svelte-1rkfgpx"&&(F.textContent=le),G.forEach(t),te=i(c),f=d(c,"DIV",{class:!0});var J=q(f);S(M.$$.fragment,J),se=i(J),I=d(J,"P",{"data-svelte-h":!0}),E(I)!=="svelte-1vzm9q"&&(I.textContent=pe),J.forEach(t),ne=i(c),m=d(c,"DIV",{class:!0});var Z=q(m);S(y.$$.fragment,Z),oe=i(Z),N=d(Z,"P",{"data-svelte-h":!0}),E(N)!=="svelte-hi84tp"&&(N.textContent=ue),Z.forEach(t),c.forEach(t),Y=i(e),O=d(e,"P",{}),q(O).forEach(t),this.h()},h(){H(p,"name","hf:doc:metadata"),H(p,"content",xe),H(u,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),H(f,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),H(m,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),H(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,n){o(document.head,p),l(e,z,n),l(e,k,n),l(e,V,n),L(h,e,n),l(e,A,n),L(g,e,n),l(e,W,n),l(e,_,n),l(e,R,n),L(v,e,n),l(e,U,n),l(e,s,n),L(b,s,null),o(s,K),o(s,D),o(s,Q),o(s,P),o(s,X),o(s,u),L(x,u,null),o(u,ee),o(u,F),o(s,te),o(s,f),L(M,f,null),o(f,se),o(f,I),o(s,ne),o(s,m),L(y,m,null),o(m,oe),o(m,N),l(e,Y,n),l(e,O,n),j=!0},p:me,i(e){j||($(h.$$.fragment,e),$(g.$$.fragment,e),$(v.$$.fragment,e),$(b.$$.fragment,e),$(x.$$.fragment,e),$(M.$$.fragment,e),$(y.$$.fragment,e),j=!0)},o(e){w(h.$$.fragment,e),w(g.$$.fragment,e),w(v.$$.fragment,e),w(b.$$.fragment,e),w(x.$$.fragment,e),w(M.$$.fragment,e),w(y.$$.fragment,e),j=!1},d(e){e&&(t(z),t(k),t(V),t(A),t(W),t(_),t(R),t(U),t(s),t(Y),t(O)),t(p),T(h,e),T(g,e),T(v,e),T(b),T(x),T(M),T(y)}}}const xe='{"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 Me(ie){return he(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class $e extends ge{constructor(p){super(),_e(this,p,Me,be,fe,{})}}export{$e as component}; | |
Xet Storage Details
- Size:
- 18 kB
- Xet hash:
- 11af73dc72c920c1bc2aeec3b8fb1c7cec8b4a41bc373db1962b21a8e37baf4a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.