import{S as zf,i as Jf,s as Bf,e as r,k as d,w,t as l,M as jf,c as s,d as t,m as h,a as o,x as S,h as n,b as i,G as e,g as c,y,q as D,o as $,B as T,v as Qf}from"../../../chunks/vendor-hf-doc-builder.js";import{T as Wf}from"../../../chunks/Tip-hf-doc-builder.js";import{D as lo}from"../../../chunks/Docstring-hf-doc-builder.js";import{I as ee}from"../../../chunks/IconCopyLink-hf-doc-builder.js";function Yf(yt){let m,M,v,b,P,_,x,N;return{c(){m=r("p"),M=l("It is required to be logged in ("),v=r("code"),b=l("huggingface-cli login"),P=l(") when you want to use private or "),_=r("a"),x=l(`gated
models`),N=l("."),this.h()},l(K){m=s(K,"P",{});var k=o(m);M=n(k,"It is required to be logged in ("),v=s(k,"CODE",{});var C=o(v);b=n(C,"huggingface-cli login"),C.forEach(t),P=n(k,") when you want to use private or "),_=s(k,"A",{href:!0,rel:!0});var Dt=o(_);x=n(Dt,`gated
models`),Dt.forEach(t),N=n(k,"."),k.forEach(t),this.h()},h(){i(_,"href","https://huggingface.co/docs/hub/models-gated#gated-models"),i(_,"rel","nofollow")},m(K,k){c(K,m,k),e(m,M),e(m,v),e(v,b),e(m,P),e(m,_),e(_,x),e(m,N)},d(K){K&&t(m)}}}function Xf(yt){let m,M,v,b,P;return{c(){m=r("p"),M=l("Activate the special "),v=r("a"),b=l("\u201Coffline-mode\u201D"),P=l(` to
use this method in a firewalled environment.`),this.h()},l(_){m=s(_,"P",{});var x=o(m);M=n(x,"Activate the special "),v=s(x,"A",{href:!0,rel:!0});var N=o(v);b=n(N,"\u201Coffline-mode\u201D"),N.forEach(t),P=n(x,` to
use this method in a firewalled environment.`),x.forEach(t),this.h()},h(){i(v,"href","https://huggingface.co/transformers/installation.html#offline-mode"),i(v,"rel","nofollow")},m(_,x){c(_,m,x),e(m,M),e(m,v),e(v,b),e(m,P)},d(_){_&&t(m)}}}function Zf(yt){let m,M,v,b,P,_,x,N,K,k,C,Dt,no,H,te,ir,ve,va,dr,_a,io,I,ga,hr,Ea,ba,fr,wa,Sa,ho,re,$t,ya,_e,cr,Da,$a,ur,Ta,xa,U,Aa,pr,Pa,ka,mr,Ma,Na,fo,F,se,vr,ge,Oa,_r,Ra,co,g,Ia,gr,La,Ga,Tt,qa,Va,xt,Ka,Ca,Er,Ha,Ua,At,Fa,Wa,br,za,Ja,uo,W,oe,wr,Ee,Ba,Sr,ja,po,Pt,Qa,mo,L,yr,Ya,Xa,Dr,Za,el,G,tl,kt,rl,sl,Mt,ol,al,$r,ll,vo,z,ae,Tr,be,nl,xr,il,_o,Nt,dl,go,le,Ar,we,Pr,hl,fl,kr,cl,ul,u,Se,Mr,Ot,pl,ml,Nr,ye,Or,vl,_l,De,Rr,Rt,gl,El,Ir,$e,Lr,bl,wl,Te,Gr,It,Sl,yl,qr,xe,Vr,Dl,$l,Ae,Kr,Lt,Tl,xl,Cr,Pe,Hr,Al,Pl,ke,Ur,Gt,kl,Ml,Fr,Me,Wr,Nl,Ol,Ne,zr,qt,Rl,Il,Jr,Oe,Br,Ll,Gl,Re,jr,Vt,ql,Vl,Qr,Ie,Yr,Kl,Cl,Le,Xr,Kt,Hl,Ul,Zr,Ge,es,Fl,Wl,qe,ts,Ct,zl,Jl,rs,Ve,ss,Bl,jl,Ke,os,Ht,Ql,Yl,as,Ce,ls,Xl,Zl,He,ns,Ut,en,tn,is,Ue,ds,rn,sn,Fe,hs,Ft,on,an,fs,We,cs,ln,nn,ze,us,Wt,dn,hn,ps,Je,ms,fn,cn,Be,vs,zt,un,pn,_s,je,gs,mn,vn,Qe,Es,Jt,_n,gn,bs,Ye,ws,En,bn,Xe,Ss,Bt,wn,Sn,ys,Ze,Ds,yn,Dn,et,$s,jt,$n,Tn,Ts,tt,xs,xn,An,rt,As,Qt,Pn,kn,Ps,st,ks,Mn,Nn,ot,Ms,Yt,On,Rn,Ns,at,Os,In,Ln,lt,Rs,Xt,Gn,qn,Is,nt,Ls,Vn,Eo,J,ne,Gs,it,Kn,qs,Cn,bo,Zt,Hn,wo,q,dt,Un,Vs,Fn,Wn,zn,ht,Jn,Ks,Bn,jn,Qn,Cs,Yn,So,ie,Xn,er,Zn,ei,yo,B,de,Hs,ft,ti,Us,ri,Do,E,ct,si,Fs,oi,ai,Ws,li,ni,zs,V,Js,ii,di,Bs,hi,fi,js,ci,ui,pi,O,ut,mi,Qs,vi,_i,he,gi,fe,Ei,ce,pt,bi,j,wi,Ys,Si,yi,tr,Di,$i,$o,Q,ue,Xs,mt,Ti,Zs,xi,To,Y,vt,Ai,eo,Pi,xo,X,pe,to,_t,ki,ro,Mi,Ao,gt,so,Ni,Oi,Po,rr,Ri,ko,Z,Et,Ii,oo,Li,Mo;return _=new ee({}),ve=new ee({}),ge=new ee({}),Ee=new ee({}),be=new ee({}),it=new ee({}),ft=new ee({}),ct=new lo({props:{name:"class diffusers.SchedulerMixin",anchor:"diffusers.SchedulerMixin",parameters:[],source:"https://github.com/huggingface/diffusers/blob/v0.17.1/src/diffusers/schedulers/scheduling_utils.py#L63"}}),ut=new lo({props:{name:"from_pretrained",anchor:"diffusers.SchedulerMixin.from_pretrained",parameters:[{name:"pretrained_model_name_or_path",val:": typing.Dict[str, typing.Any] = None"},{name:"subfolder",val:": typing.Optional[str] = None"},{name:"return_unused_kwargs",val:" = False"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.SchedulerMixin.from_pretrained.pretrained_model_name_or_path",description:`<strong>pretrained_model_name_or_path</strong> (<code>str</code> or <code>os.PathLike</code>, <em>optional</em>) &#x2014;
Can be either:</p>
<ul>
<li>A string, the <em>model id</em> of a model repo on huggingface.co. Valid model ids should have an
organization name, like <code>google/ddpm-celebahq-256</code>.</li>
<li>A path to a <em>directory</em> containing the schedluer configurations saved using
<a href="/docs/diffusers/v0.17.1/en/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained">save_pretrained()</a>, e.g., <code>./my_model_directory/</code>.</li>
</ul>`,name:"pretrained_model_name_or_path"},{anchor:"diffusers.SchedulerMixin.from_pretrained.subfolder",description:`<strong>subfolder</strong> (<code>str</code>, <em>optional</em>) &#x2014;
In case the relevant files are located inside a subfolder of the model repo (either remote in
huggingface.co or downloaded locally), you can specify the folder name here.`,name:"subfolder"},{anchor:"diffusers.SchedulerMixin.from_pretrained.return_unused_kwargs",description:`<strong>return_unused_kwargs</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether kwargs that are not consumed by the Python class should be returned or not.`,name:"return_unused_kwargs"},{anchor:"diffusers.SchedulerMixin.from_pretrained.cache_dir",description:`<strong>cache_dir</strong> (<code>Union[str, os.PathLike]</code>, <em>optional</em>) &#x2014;
Path to a directory in which a downloaded pretrained model configuration should be cached if the
standard cache should not be used.`,name:"cache_dir"},{anchor:"diffusers.SchedulerMixin.from_pretrained.force_download",description:`<strong>force_download</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether or not to force the (re-)download of the model weights and configuration files, overriding the
cached versions if they exist.`,name:"force_download"},{anchor:"diffusers.SchedulerMixin.from_pretrained.resume_download",description:`<strong>resume_download</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether or not to delete incompletely received files. Will attempt to resume the download if such a
file exists.`,name:"resume_download"},{anchor:"diffusers.SchedulerMixin.from_pretrained.proxies",description:`<strong>proxies</strong> (<code>Dict[str, str]</code>, <em>optional</em>) &#x2014;
A dictionary of proxy servers to use by protocol or endpoint, e.g., <code>{&apos;http&apos;: &apos;foo.bar:3128&apos;, &apos;http://hostname&apos;: &apos;foo.bar:4012&apos;}</code>. The proxies are used on each request.`,name:"proxies"},{anchor:"diffusers.SchedulerMixin.from_pretrained.output_loading_info(bool,",description:`<strong>output_loading_info(<code>bool</code>,</strong> <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.`,name:"output_loading_info(bool,"},{anchor:"diffusers.SchedulerMixin.from_pretrained.local_files_only(bool,",description:`<strong>local_files_only(<code>bool</code>,</strong> <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether or not to only look at local files (i.e., do not try to download the model).`,name:"local_files_only(bool,"},{anchor:"diffusers.SchedulerMixin.from_pretrained.use_auth_token",description:`<strong>use_auth_token</strong> (<code>str</code> or <em>bool</em>, <em>optional</em>) &#x2014;
The token to use as HTTP bearer authorization for remote files. If <code>True</code>, will use the token generated
when running <code>transformers-cli login</code> (stored in <code>~/.huggingface</code>).`,name:"use_auth_token"},{anchor:"diffusers.SchedulerMixin.from_pretrained.revision",description:`<strong>revision</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;main&quot;</code>) &#x2014;
The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a
git-based system for storing models and other artifacts on huggingface.co, so <code>revision</code> can be any
identifier allowed by git.`,name:"revision"}],source:"https://github.com/huggingface/diffusers/blob/v0.17.1/src/diffusers/schedulers/scheduling_utils.py#L77"}}),he=new Wf({props:{$$slots:{default:[Yf]},$$scope:{ctx:yt}}}),fe=new Wf({props:{$$slots:{default:[Xf]},$$scope:{ctx:yt}}}),pt=new lo({props:{name:"save_pretrained",anchor:"diffusers.SchedulerMixin.save_pretrained",parameters:[{name:"save_directory",val:": typing.Union[str, os.PathLike]"},{name:"push_to_hub",val:": bool = False"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.SchedulerMixin.save_pretrained.save_directory",description:`<strong>save_directory</strong> (<code>str</code> or <code>os.PathLike</code>) &#x2014;
Directory where the configuration JSON file will be saved (will be created if it does not exist).`,name:"save_directory"}],source:"https://github.com/huggingface/diffusers/blob/v0.17.1/src/diffusers/schedulers/scheduling_utils.py#L149"}}),mt=new ee({}),vt=new lo({props:{name:"class diffusers.schedulers.scheduling_utils.SchedulerOutput",anchor:"diffusers.schedulers.scheduling_utils.SchedulerOutput",parameters:[{name:"prev_sample",val:": FloatTensor"}],parametersDescription:[{anchor:"diffusers.schedulers.scheduling_utils.SchedulerOutput.prev_sample",description:`<strong>prev_sample</strong> (<code>torch.FloatTensor</code> of shape <code>(batch_size, num_channels, height, width)</code> for images) &#x2014;
Computed sample (x_{t-1}) of previous timestep. <code>prev_sample</code> should be used as next model input in the
denoising loop.`,name:"prev_sample"}],source:"https://github.com/huggingface/diffusers/blob/v0.17.1/src/diffusers/schedulers/scheduling_utils.py#L50"}}),_t=new ee({}),Et=new lo({props:{name:"class diffusers.schedulers.KarrasDiffusionSchedulers",anchor:"diffusers.schedulers.KarrasDiffusionSchedulers",parameters:[{name:"value",val:""},{name:"names",val:" = None"},{name:"module",val:" = None"},{name:"qualname",val:" = None"},{name:"type",val:" = None"},{name:"start",val:" = 1"}],source:"https://github.com/huggingface/diffusers/blob/v0.17.1/src/diffusers/schedulers/scheduling_utils.py#L32"}}),{c(){m=r("meta"),M=d(),v=r("h1"),b=r("a"),P=r("span"),w(_.$$.fragment),x=d(),N=r("span"),K=l("Schedulers"),k=d(),C=r("p"),Dt=l("Diffusers contains multiple pre-built schedule functions for the diffusion process."),no=d(),H=r("h2"),te=r("a"),ir=r("span"),w(ve.$$.fragment),va=d(),dr=r("span"),_a=l("What is a scheduler?"),io=d(),I=r("p"),ga=l("The schedule functions, denoted "),hr=r("em"),Ea=l("Schedulers"),ba=l(" in the library take in the output of a trained model, a sample which the diffusion process is iterating on, and a timestep to return a denoised sample. That\u2019s why schedulers may also be called "),fr=r("em"),wa=l("Samplers"),Sa=l(" in other diffusion models implementations."),ho=d(),re=r("ul"),$t=r("li"),ya=l("Schedulers define the methodology for iteratively adding noise to an image or for updating a sample based on model outputs."),_e=r("ul"),cr=r("li"),Da=l("adding noise in different manners represent the algorithmic processes to train a diffusion model by adding noise to images."),$a=d(),ur=r("li"),Ta=l("for inference, the scheduler defines how to update a sample based on an output from a pretrained model."),xa=d(),U=r("li"),Aa=l("Schedulers are often defined by a "),pr=r("em"),Pa=l("noise schedule"),ka=l(" and an "),mr=r("em"),Ma=l("update rule"),Na=l(" to solve the differential equation solution."),fo=d(),F=r("h3"),se=r("a"),vr=r("span"),w(ge.$$.fragment),Oa=d(),_r=r("span"),Ra=l("Discrete versus continuous schedulers"),co=d(),g=r("p"),Ia=l(`All schedulers take in a timestep to predict the updated version of the sample being diffused.
The timesteps dictate where in the diffusion process the step is, where data is generated by iterating forward in time and inference is executed by propagating backwards through timesteps.
Different algorithms use timesteps that can be discrete (accepting `),gr=r("code"),La=l("int"),Ga=l(" inputs), such as the "),Tt=r("a"),qa=l("DDPMScheduler"),Va=l(" or "),xt=r("a"),Ka=l("PNDMScheduler"),Ca=l(", or continuous (accepting "),Er=r("code"),Ha=l("float"),Ua=l(" inputs), such as the score-based schedulers "),At=r("a"),Fa=l("ScoreSdeVeScheduler"),Wa=l(" or "),br=r("code"),za=l("ScoreSdeVpScheduler"),Ja=l("."),uo=d(),W=r("h2"),oe=r("a"),wr=r("span"),w(Ee.$$.fragment),Ba=d(),Sr=r("span"),ja=l("Designing Re-usable schedulers"),po=d(),Pt=r("p"),Qa=l(`The core design principle between the schedule functions is to be model, system, and framework independent.
This allows for rapid experimentation and cleaner abstractions in the code, where the model prediction is separated from the sample update.
To this end, the design of schedulers is such that:`),mo=d(),L=r("ul"),yr=r("li"),Ya=l("Schedulers can be used interchangeably between diffusion models in inference to find the preferred trade-off between speed and generation quality."),Xa=d(),Dr=r("li"),Za=l("Schedulers are currently by default in PyTorch, but are designed to be framework independent (partial Jax support currently exists)."),el=d(),G=r("li"),tl=l("Many diffusion pipelines, such as "),kt=r("a"),rl=l("StableDiffusionPipeline"),sl=l(" and "),Mt=r("a"),ol=l("DiTPipeline"),al=l(" can use any of "),$r=r("code"),ll=l("KarrasDiffusionSchedulers"),vo=d(),z=r("h2"),ae=r("a"),Tr=r("span"),w(be.$$.fragment),nl=d(),xr=r("span"),il=l("Schedulers Summary"),_o=d(),Nt=r("p"),dl=l("The following table summarizes all officially supported schedulers, their corresponding paper"),go=d(),le=r("table"),Ar=r("thead"),we=r("tr"),Pr=r("th"),hl=l("Scheduler"),fl=d(),kr=r("th"),cl=l("Paper"),ul=d(),u=r("tbody"),Se=r("tr"),Mr=r("td"),Ot=r("a"),pl=l("ddim"),ml=d(),Nr=r("td"),ye=r("a"),Or=r("strong"),vl=l("Denoising Diffusion Implicit Models"),_l=d(),De=r("tr"),Rr=r("td"),Rt=r("a"),gl=l("ddim_inverse"),El=d(),Ir=r("td"),$e=r("a"),Lr=r("strong"),bl=l("Denoising Diffusion Implicit Models"),wl=d(),Te=r("tr"),Gr=r("td"),It=r("a"),Sl=l("ddpm"),yl=d(),qr=r("td"),xe=r("a"),Vr=r("strong"),Dl=l("Denoising Diffusion Probabilistic Models"),$l=d(),Ae=r("tr"),Kr=r("td"),Lt=r("a"),Tl=l("deis"),xl=d(),Cr=r("td"),Pe=r("a"),Hr=r("strong"),Al=l("DEISMultistepScheduler"),Pl=d(),ke=r("tr"),Ur=r("td"),Gt=r("a"),kl=l("singlestep_dpm_solver"),Ml=d(),Fr=r("td"),Me=r("a"),Wr=r("strong"),Nl=l("Singlestep DPM-Solver"),Ol=d(),Ne=r("tr"),zr=r("td"),qt=r("a"),Rl=l("multistep_dpm_solver"),Il=d(),Jr=r("td"),Oe=r("a"),Br=r("strong"),Ll=l("Multistep DPM-Solver"),Gl=d(),Re=r("tr"),jr=r("td"),Vt=r("a"),ql=l("heun"),Vl=d(),Qr=r("td"),Ie=r("a"),Yr=r("strong"),Kl=l("Heun scheduler inspired by Karras et. al paper"),Cl=d(),Le=r("tr"),Xr=r("td"),Kt=r("a"),Hl=l("dpm_discrete"),Ul=d(),Zr=r("td"),Ge=r("a"),es=r("strong"),Fl=l("DPM Discrete Scheduler inspired by Karras et. al paper"),Wl=d(),qe=r("tr"),ts=r("td"),Ct=r("a"),zl=l("dpm_discrete_ancestral"),Jl=d(),rs=r("td"),Ve=r("a"),ss=r("strong"),Bl=l("DPM Discrete Scheduler with ancestral sampling inspired by Karras et. al paper"),jl=d(),Ke=r("tr"),os=r("td"),Ht=r("a"),Ql=l("stochastic_karras_ve"),Yl=d(),as=r("td"),Ce=r("a"),ls=r("strong"),Xl=l("Variance exploding, stochastic sampling from Karras et. al"),Zl=d(),He=r("tr"),ns=r("td"),Ut=r("a"),en=l("lms_discrete"),tn=d(),is=r("td"),Ue=r("a"),ds=r("strong"),rn=l("Linear multistep scheduler for discrete beta schedules"),sn=d(),Fe=r("tr"),hs=r("td"),Ft=r("a"),on=l("pndm"),an=d(),fs=r("td"),We=r("a"),cs=r("strong"),ln=l("Pseudo numerical methods for diffusion models (PNDM)"),nn=d(),ze=r("tr"),us=r("td"),Wt=r("a"),dn=l("score_sde_ve"),hn=d(),ps=r("td"),Je=r("a"),ms=r("strong"),fn=l("variance exploding stochastic differential equation (VE-SDE) scheduler"),cn=d(),Be=r("tr"),vs=r("td"),zt=r("a"),un=l("ipndm"),pn=d(),_s=r("td"),je=r("a"),gs=r("strong"),mn=l("improved pseudo numerical methods for diffusion models (iPNDM)"),vn=d(),Qe=r("tr"),Es=r("td"),Jt=r("a"),_n=l("score_sde_vp"),gn=d(),bs=r("td"),Ye=r("a"),ws=r("strong"),En=l("Variance preserving stochastic differential equation (VP-SDE) scheduler"),bn=d(),Xe=r("tr"),Ss=r("td"),Bt=r("a"),wn=l("euler"),Sn=d(),ys=r("td"),Ze=r("a"),Ds=r("strong"),yn=l("Euler scheduler"),Dn=d(),et=r("tr"),$s=r("td"),jt=r("a"),$n=l("euler_ancestral"),Tn=d(),Ts=r("td"),tt=r("a"),xs=r("strong"),xn=l("Euler Ancestral scheduler"),An=d(),rt=r("tr"),As=r("td"),Qt=r("a"),Pn=l("vq_diffusion"),kn=d(),Ps=r("td"),st=r("a"),ks=r("strong"),Mn=l("VQDiffusionScheduler"),Nn=d(),ot=r("tr"),Ms=r("td"),Yt=r("a"),On=l("unipc"),Rn=d(),Ns=r("td"),at=r("a"),Os=r("strong"),In=l("UniPCMultistepScheduler"),Ln=d(),lt=r("tr"),Rs=r("td"),Xt=r("a"),Gn=l("repaint"),qn=d(),Is=r("td"),nt=r("a"),Ls=r("strong"),Vn=l("RePaint scheduler"),Eo=d(),J=r("h2"),ne=r("a"),Gs=r("span"),w(it.$$.fragment),Kn=d(),qs=r("span"),Cn=l("API"),bo=d(),Zt=r("p"),Hn=l("The core API for any new scheduler must follow a limited structure."),wo=d(),q=r("ul"),dt=r("li"),Un=l("Schedulers should provide one or more "),Vs=r("code"),Fn=l("def step(...)"),Wn=l(" functions that should be called to update the generated sample iteratively."),zn=d(),ht=r("li"),Jn=l("Schedulers should provide a "),Ks=r("code"),Bn=l("set_timesteps(...)"),jn=l(" method that configures the parameters of a schedule function for a specific inference task."),Qn=d(),Cs=r("li"),Yn=l("Schedulers should be framework-specific."),So=d(),ie=r("p"),Xn=l("The base class "),er=r("a"),Zn=l("SchedulerMixin"),ei=l(" implements low level utilities used by multiple schedulers."),yo=d(),B=r("h3"),de=r("a"),Hs=r("span"),w(ft.$$.fragment),ti=d(),Us=r("span"),ri=l("SchedulerMixin"),Do=d(),E=r("div"),w(ct.$$.fragment),si=d(),Fs=r("p"),oi=l("Mixin containing common functions for the schedulers."),ai=d(),Ws=r("p"),li=l("Class attributes:"),ni=d(),zs=r("ul"),V=r("li"),Js=r("strong"),ii=l("_compatibles"),di=l(" ("),Bs=r("code"),hi=l("List[str]"),fi=l(`) \u2014 A list of classes that are compatible with the parent class, so that
`),js=r("code"),ci=l("from_config"),ui=l(` can be used from a class different than the one used to save the config (should be overridden
by parent class).`),pi=d(),O=r("div"),w(ut.$$.fragment),mi=d(),Qs=r("p"),vi=l("Instantiate a Scheduler class from a pre-defined JSON configuration file inside a directory or Hub repo."),_i=d(),w(he.$$.fragment),gi=d(),w(fe.$$.fragment),Ei=d(),ce=r("div"),w(pt.$$.fragment),bi=d(),j=r("p"),wi=l("Save a scheduler configuration object to the directory "),Ys=r("code"),Si=l("save_directory"),yi=l(`, so that it can be re-loaded using the
`),tr=r("a"),Di=l("from_pretrained()"),$i=l(" class method."),$o=d(),Q=r("h3"),ue=r("a"),Xs=r("span"),w(mt.$$.fragment),Ti=d(),Zs=r("span"),xi=l("SchedulerOutput"),To=l("\n\nThe class `SchedulerOutput` contains the outputs from any schedulers `step(...)` call.\n"),Y=r("div"),w(vt.$$.fragment),Ai=d(),eo=r("p"),Pi=l("Base class for the scheduler\u2019s step function output."),xo=d(),X=r("h3"),pe=r("a"),to=r("span"),w(_t.$$.fragment),ki=d(),ro=r("span"),Mi=l("KarrasDiffusionSchedulers"),Ao=d(),gt=r("p"),so=r("code"),Ni=l("KarrasDiffusionSchedulers"),Oi=l(" encompasses the main generalization of schedulers in Diffusers. The schedulers in this class are distinguished, at a high level, by their noise sampling strategy; the type of network and scaling; and finally the training strategy or how the loss is weighed."),Po=d(),rr=r("p"),Ri=l("The different schedulers, depending on the type of ODE solver, fall into the above taxonomy and provide a good abstraction for the design of the main schedulers implemented in Diffusers. The schedulers in this class are given below:"),ko=d(),Z=r("div"),w(Et.$$.fragment),Ii=d(),oo=r("p"),Li=l("An enumeration."),this.h()},l(a){const f=jf('[data-svelte="svelte-1phssyn"]',document.head);m=s(f,"META",{name:!0,content:!0}),f.forEach(t),M=h(a),v=s(a,"H1",{class:!0});var bt=o(v);b=s(bt,"A",{id:!0,class:!0,href:!0});var ao=o(b);P=s(ao,"SPAN",{});var Vi=o(P);S(_.$$.fragment,Vi),Vi.forEach(t),ao.forEach(t),x=h(bt),N=s(bt,"SPAN",{});var Ki=o(N);K=n(Ki,"Schedulers"),Ki.forEach(t),bt.forEach(t),k=h(a),C=s(a,"P",{});var Ci=o(C);Dt=n(Ci,"Diffusers contains multiple pre-built schedule functions for the diffusion process."),Ci.forEach(t),no=h(a),H=s(a,"H2",{class:!0});var No=o(H);te=s(No,"A",{id:!0,class:!0,href:!0});var Hi=o(te);ir=s(Hi,"SPAN",{});var Ui=o(ir);S(ve.$$.fragment,Ui),Ui.forEach(t),Hi.forEach(t),va=h(No),dr=s(No,"SPAN",{});var Fi=o(dr);_a=n(Fi,"What is a scheduler?"),Fi.forEach(t),No.forEach(t),io=h(a),I=s(a,"P",{});var sr=o(I);ga=n(sr,"The schedule functions, denoted "),hr=s(sr,"EM",{});var Wi=o(hr);Ea=n(Wi,"Schedulers"),Wi.forEach(t),ba=n(sr," in the library take in the output of a trained model, a sample which the diffusion process is iterating on, and a timestep to return a denoised sample. That\u2019s why schedulers may also be called "),fr=s(sr,"EM",{});var zi=o(fr);wa=n(zi,"Samplers"),zi.forEach(t),Sa=n(sr," in other diffusion models implementations."),sr.forEach(t),ho=h(a),re=s(a,"UL",{});var Oo=o(re);$t=s(Oo,"LI",{});var Gi=o($t);ya=n(Gi,"Schedulers define the methodology for iteratively adding noise to an image or for updating a sample based on model outputs."),_e=s(Gi,"UL",{});var Ro=o(_e);cr=s(Ro,"LI",{});var Ji=o(cr);Da=n(Ji,"adding noise in different manners represent the algorithmic processes to train a diffusion model by adding noise to images."),Ji.forEach(t),$a=h(Ro),ur=s(Ro,"LI",{});var Bi=o(ur);Ta=n(Bi,"for inference, the scheduler defines how to update a sample based on an output from a pretrained model."),Bi.forEach(t),Ro.forEach(t),Gi.forEach(t),xa=h(Oo),U=s(Oo,"LI",{});var or=o(U);Aa=n(or,"Schedulers are often defined by a "),pr=s(or,"EM",{});var ji=o(pr);Pa=n(ji,"noise schedule"),ji.forEach(t),ka=n(or," and an "),mr=s(or,"EM",{});var Qi=o(mr);Ma=n(Qi,"update rule"),Qi.forEach(t),Na=n(or," to solve the differential equation solution."),or.forEach(t),Oo.forEach(t),fo=h(a),F=s(a,"H3",{class:!0});var Io=o(F);se=s(Io,"A",{id:!0,class:!0,href:!0});var Yi=o(se);vr=s(Yi,"SPAN",{});var Xi=o(vr);S(ge.$$.fragment,Xi),Xi.forEach(t),Yi.forEach(t),Oa=h(Io),_r=s(Io,"SPAN",{});var Zi=o(_r);Ra=n(Zi,"Discrete versus continuous schedulers"),Zi.forEach(t),Io.forEach(t),co=h(a),g=s(a,"P",{});var A=o(g);Ia=n(A,`All schedulers take in a timestep to predict the updated version of the sample being diffused.
The timesteps dictate where in the diffusion process the step is, where data is generated by iterating forward in time and inference is executed by propagating backwards through timesteps.
Different algorithms use timesteps that can be discrete (accepting `),gr=s(A,"CODE",{});var ed=o(gr);La=n(ed,"int"),ed.forEach(t),Ga=n(A," inputs), such as the "),Tt=s(A,"A",{href:!0});var td=o(Tt);qa=n(td,"DDPMScheduler"),td.forEach(t),Va=n(A," or "),xt=s(A,"A",{href:!0});var rd=o(xt);Ka=n(rd,"PNDMScheduler"),rd.forEach(t),Ca=n(A,", or continuous (accepting "),Er=s(A,"CODE",{});var sd=o(Er);Ha=n(sd,"float"),sd.forEach(t),Ua=n(A," inputs), such as the score-based schedulers "),At=s(A,"A",{href:!0});var od=o(At);Fa=n(od,"ScoreSdeVeScheduler"),od.forEach(t),Wa=n(A," or "),br=s(A,"CODE",{});var ad=o(br);za=n(ad,"ScoreSdeVpScheduler"),ad.forEach(t),Ja=n(A,"."),A.forEach(t),uo=h(a),W=s(a,"H2",{class:!0});var Lo=o(W);oe=s(Lo,"A",{id:!0,class:!0,href:!0});var ld=o(oe);wr=s(ld,"SPAN",{});var nd=o(wr);S(Ee.$$.fragment,nd),nd.forEach(t),ld.forEach(t),Ba=h(Lo),Sr=s(Lo,"SPAN",{});var id=o(Sr);ja=n(id,"Designing Re-usable schedulers"),id.forEach(t),Lo.forEach(t),po=h(a),Pt=s(a,"P",{});var dd=o(Pt);Qa=n(dd,`The core design principle between the schedule functions is to be model, system, and framework independent.
This allows for rapid experimentation and cleaner abstractions in the code, where the model prediction is separated from the sample update.
To this end, the design of schedulers is such that:`),dd.forEach(t),mo=h(a),L=s(a,"UL",{});var ar=o(L);yr=s(ar,"LI",{});var hd=o(yr);Ya=n(hd,"Schedulers can be used interchangeably between diffusion models in inference to find the preferred trade-off between speed and generation quality."),hd.forEach(t),Xa=h(ar),Dr=s(ar,"LI",{});var fd=o(Dr);Za=n(fd,"Schedulers are currently by default in PyTorch, but are designed to be framework independent (partial Jax support currently exists)."),fd.forEach(t),el=h(ar),G=s(ar,"LI",{});var wt=o(G);tl=n(wt,"Many diffusion pipelines, such as "),kt=s(wt,"A",{href:!0});var cd=o(kt);rl=n(cd,"StableDiffusionPipeline"),cd.forEach(t),sl=n(wt," and "),Mt=s(wt,"A",{href:!0});var ud=o(Mt);ol=n(ud,"DiTPipeline"),ud.forEach(t),al=n(wt," can use any of "),$r=s(wt,"CODE",{});var pd=o($r);ll=n(pd,"KarrasDiffusionSchedulers"),pd.forEach(t),wt.forEach(t),ar.forEach(t),vo=h(a),z=s(a,"H2",{class:!0});var Go=o(z);ae=s(Go,"A",{id:!0,class:!0,href:!0});var md=o(ae);Tr=s(md,"SPAN",{});var vd=o(Tr);S(be.$$.fragment,vd),vd.forEach(t),md.forEach(t),nl=h(Go),xr=s(Go,"SPAN",{});var _d=o(xr);il=n(_d,"Schedulers Summary"),_d.forEach(t),Go.forEach(t),_o=h(a),Nt=s(a,"P",{});var gd=o(Nt);dl=n(gd,"The following table summarizes all officially supported schedulers, their corresponding paper"),gd.forEach(t),go=h(a),le=s(a,"TABLE",{});var qo=o(le);Ar=s(qo,"THEAD",{});var Ed=o(Ar);we=s(Ed,"TR",{});var Vo=o(we);Pr=s(Vo,"TH",{});var bd=o(Pr);hl=n(bd,"Scheduler"),bd.forEach(t),fl=h(Vo),kr=s(Vo,"TH",{});var wd=o(kr);cl=n(wd,"Paper"),wd.forEach(t),Vo.forEach(t),Ed.forEach(t),ul=h(qo),u=s(qo,"TBODY",{});var p=o(u);Se=s(p,"TR",{});var Ko=o(Se);Mr=s(Ko,"TD",{});var Sd=o(Mr);Ot=s(Sd,"A",{href:!0});var yd=o(Ot);pl=n(yd,"ddim"),yd.forEach(t),Sd.forEach(t),ml=h(Ko),Nr=s(Ko,"TD",{});var Dd=o(Nr);ye=s(Dd,"A",{href:!0,rel:!0});var $d=o(ye);Or=s($d,"STRONG",{});var Td=o(Or);vl=n(Td,"Denoising Diffusion Implicit Models"),Td.forEach(t),$d.forEach(t),Dd.forEach(t),Ko.forEach(t),_l=h(p),De=s(p,"TR",{});var Co=o(De);Rr=s(Co,"TD",{});var xd=o(Rr);Rt=s(xd,"A",{href:!0});var Ad=o(Rt);gl=n(Ad,"ddim_inverse"),Ad.forEach(t),xd.forEach(t),El=h(Co),Ir=s(Co,"TD",{});var Pd=o(Ir);$e=s(Pd,"A",{href:!0,rel:!0});var kd=o($e);Lr=s(kd,"STRONG",{});var Md=o(Lr);bl=n(Md,"Denoising Diffusion Implicit Models"),Md.forEach(t),kd.forEach(t),Pd.forEach(t),Co.forEach(t),wl=h(p),Te=s(p,"TR",{});var Ho=o(Te);Gr=s(Ho,"TD",{});var Nd=o(Gr);It=s(Nd,"A",{href:!0});var Od=o(It);Sl=n(Od,"ddpm"),Od.forEach(t),Nd.forEach(t),yl=h(Ho),qr=s(Ho,"TD",{});var Rd=o(qr);xe=s(Rd,"A",{href:!0,rel:!0});var Id=o(xe);Vr=s(Id,"STRONG",{});var Ld=o(Vr);Dl=n(Ld,"Denoising Diffusion Probabilistic Models"),Ld.forEach(t),Id.forEach(t),Rd.forEach(t),Ho.forEach(t),$l=h(p),Ae=s(p,"TR",{});var Uo=o(Ae);Kr=s(Uo,"TD",{});var Gd=o(Kr);Lt=s(Gd,"A",{href:!0});var qd=o(Lt);Tl=n(qd,"deis"),qd.forEach(t),Gd.forEach(t),xl=h(Uo),Cr=s(Uo,"TD",{});var Vd=o(Cr);Pe=s(Vd,"A",{href:!0,rel:!0});var Kd=o(Pe);Hr=s(Kd,"STRONG",{});var Cd=o(Hr);Al=n(Cd,"DEISMultistepScheduler"),Cd.forEach(t),Kd.forEach(t),Vd.forEach(t),Uo.forEach(t),Pl=h(p),ke=s(p,"TR",{});var Fo=o(ke);Ur=s(Fo,"TD",{});var Hd=o(Ur);Gt=s(Hd,"A",{href:!0});var Ud=o(Gt);kl=n(Ud,"singlestep_dpm_solver"),Ud.forEach(t),Hd.forEach(t),Ml=h(Fo),Fr=s(Fo,"TD",{});var Fd=o(Fr);Me=s(Fd,"A",{href:!0,rel:!0});var Wd=o(Me);Wr=s(Wd,"STRONG",{});var zd=o(Wr);Nl=n(zd,"Singlestep DPM-Solver"),zd.forEach(t),Wd.forEach(t),Fd.forEach(t),Fo.forEach(t),Ol=h(p),Ne=s(p,"TR",{});var Wo=o(Ne);zr=s(Wo,"TD",{});var Jd=o(zr);qt=s(Jd,"A",{href:!0});var Bd=o(qt);Rl=n(Bd,"multistep_dpm_solver"),Bd.forEach(t),Jd.forEach(t),Il=h(Wo),Jr=s(Wo,"TD",{});var jd=o(Jr);Oe=s(jd,"A",{href:!0,rel:!0});var Qd=o(Oe);Br=s(Qd,"STRONG",{});var Yd=o(Br);Ll=n(Yd,"Multistep DPM-Solver"),Yd.forEach(t),Qd.forEach(t),jd.forEach(t),Wo.forEach(t),Gl=h(p),Re=s(p,"TR",{});var zo=o(Re);jr=s(zo,"TD",{});var Xd=o(jr);Vt=s(Xd,"A",{href:!0});var Zd=o(Vt);ql=n(Zd,"heun"),Zd.forEach(t),Xd.forEach(t),Vl=h(zo),Qr=s(zo,"TD",{});var eh=o(Qr);Ie=s(eh,"A",{href:!0,rel:!0});var th=o(Ie);Yr=s(th,"STRONG",{});var rh=o(Yr);Kl=n(rh,"Heun scheduler inspired by Karras et. al paper"),rh.forEach(t),th.forEach(t),eh.forEach(t),zo.forEach(t),Cl=h(p),Le=s(p,"TR",{});var Jo=o(Le);Xr=s(Jo,"TD",{});var sh=o(Xr);Kt=s(sh,"A",{href:!0});var oh=o(Kt);Hl=n(oh,"dpm_discrete"),oh.forEach(t),sh.forEach(t),Ul=h(Jo),Zr=s(Jo,"TD",{});var ah=o(Zr);Ge=s(ah,"A",{href:!0,rel:!0});var lh=o(Ge);es=s(lh,"STRONG",{});var nh=o(es);Fl=n(nh,"DPM Discrete Scheduler inspired by Karras et. al paper"),nh.forEach(t),lh.forEach(t),ah.forEach(t),Jo.forEach(t),Wl=h(p),qe=s(p,"TR",{});var Bo=o(qe);ts=s(Bo,"TD",{});var ih=o(ts);Ct=s(ih,"A",{href:!0});var dh=o(Ct);zl=n(dh,"dpm_discrete_ancestral"),dh.forEach(t),ih.forEach(t),Jl=h(Bo),rs=s(Bo,"TD",{});var hh=o(rs);Ve=s(hh,"A",{href:!0,rel:!0});var fh=o(Ve);ss=s(fh,"STRONG",{});var ch=o(ss);Bl=n(ch,"DPM Discrete Scheduler with ancestral sampling inspired by Karras et. al paper"),ch.forEach(t),fh.forEach(t),hh.forEach(t),Bo.forEach(t),jl=h(p),Ke=s(p,"TR",{});var jo=o(Ke);os=s(jo,"TD",{});var uh=o(os);Ht=s(uh,"A",{href:!0});var ph=o(Ht);Ql=n(ph,"stochastic_karras_ve"),ph.forEach(t),uh.forEach(t),Yl=h(jo),as=s(jo,"TD",{});var mh=o(as);Ce=s(mh,"A",{href:!0,rel:!0});var vh=o(Ce);ls=s(vh,"STRONG",{});var _h=o(ls);Xl=n(_h,"Variance exploding, stochastic sampling from Karras et. al"),_h.forEach(t),vh.forEach(t),mh.forEach(t),jo.forEach(t),Zl=h(p),He=s(p,"TR",{});var Qo=o(He);ns=s(Qo,"TD",{});var gh=o(ns);Ut=s(gh,"A",{href:!0});var Eh=o(Ut);en=n(Eh,"lms_discrete"),Eh.forEach(t),gh.forEach(t),tn=h(Qo),is=s(Qo,"TD",{});var bh=o(is);Ue=s(bh,"A",{href:!0,rel:!0});var wh=o(Ue);ds=s(wh,"STRONG",{});var Sh=o(ds);rn=n(Sh,"Linear multistep scheduler for discrete beta schedules"),Sh.forEach(t),wh.forEach(t),bh.forEach(t),Qo.forEach(t),sn=h(p),Fe=s(p,"TR",{});var Yo=o(Fe);hs=s(Yo,"TD",{});var yh=o(hs);Ft=s(yh,"A",{href:!0});var Dh=o(Ft);on=n(Dh,"pndm"),Dh.forEach(t),yh.forEach(t),an=h(Yo),fs=s(Yo,"TD",{});var $h=o(fs);We=s($h,"A",{href:!0,rel:!0});var Th=o(We);cs=s(Th,"STRONG",{});var xh=o(cs);ln=n(xh,"Pseudo numerical methods for diffusion models (PNDM)"),xh.forEach(t),Th.forEach(t),$h.forEach(t),Yo.forEach(t),nn=h(p),ze=s(p,"TR",{});var Xo=o(ze);us=s(Xo,"TD",{});var Ah=o(us);Wt=s(Ah,"A",{href:!0});var Ph=o(Wt);dn=n(Ph,"score_sde_ve"),Ph.forEach(t),Ah.forEach(t),hn=h(Xo),ps=s(Xo,"TD",{});var kh=o(ps);Je=s(kh,"A",{href:!0,rel:!0});var Mh=o(Je);ms=s(Mh,"STRONG",{});var Nh=o(ms);fn=n(Nh,"variance exploding stochastic differential equation (VE-SDE) scheduler"),Nh.forEach(t),Mh.forEach(t),kh.forEach(t),Xo.forEach(t),cn=h(p),Be=s(p,"TR",{});var Zo=o(Be);vs=s(Zo,"TD",{});var Oh=o(vs);zt=s(Oh,"A",{href:!0});var Rh=o(zt);un=n(Rh,"ipndm"),Rh.forEach(t),Oh.forEach(t),pn=h(Zo),_s=s(Zo,"TD",{});var Ih=o(_s);je=s(Ih,"A",{href:!0,rel:!0});var Lh=o(je);gs=s(Lh,"STRONG",{});var Gh=o(gs);mn=n(Gh,"improved pseudo numerical methods for diffusion models (iPNDM)"),Gh.forEach(t),Lh.forEach(t),Ih.forEach(t),Zo.forEach(t),vn=h(p),Qe=s(p,"TR",{});var ea=o(Qe);Es=s(ea,"TD",{});var qh=o(Es);Jt=s(qh,"A",{href:!0});var Vh=o(Jt);_n=n(Vh,"score_sde_vp"),Vh.forEach(t),qh.forEach(t),gn=h(ea),bs=s(ea,"TD",{});var Kh=o(bs);Ye=s(Kh,"A",{href:!0,rel:!0});var Ch=o(Ye);ws=s(Ch,"STRONG",{});var Hh=o(ws);En=n(Hh,"Variance preserving stochastic differential equation (VP-SDE) scheduler"),Hh.forEach(t),Ch.forEach(t),Kh.forEach(t),ea.forEach(t),bn=h(p),Xe=s(p,"TR",{});var ta=o(Xe);Ss=s(ta,"TD",{});var Uh=o(Ss);Bt=s(Uh,"A",{href:!0});var Fh=o(Bt);wn=n(Fh,"euler"),Fh.forEach(t),Uh.forEach(t),Sn=h(ta),ys=s(ta,"TD",{});var Wh=o(ys);Ze=s(Wh,"A",{href:!0,rel:!0});var zh=o(Ze);Ds=s(zh,"STRONG",{});var Jh=o(Ds);yn=n(Jh,"Euler scheduler"),Jh.forEach(t),zh.forEach(t),Wh.forEach(t),ta.forEach(t),Dn=h(p),et=s(p,"TR",{});var ra=o(et);$s=s(ra,"TD",{});var Bh=o($s);jt=s(Bh,"A",{href:!0});var jh=o(jt);$n=n(jh,"euler_ancestral"),jh.forEach(t),Bh.forEach(t),Tn=h(ra),Ts=s(ra,"TD",{});var Qh=o(Ts);tt=s(Qh,"A",{href:!0,rel:!0});var Yh=o(tt);xs=s(Yh,"STRONG",{});var Xh=o(xs);xn=n(Xh,"Euler Ancestral scheduler"),Xh.forEach(t),Yh.forEach(t),Qh.forEach(t),ra.forEach(t),An=h(p),rt=s(p,"TR",{});var sa=o(rt);As=s(sa,"TD",{});var Zh=o(As);Qt=s(Zh,"A",{href:!0});var ef=o(Qt);Pn=n(ef,"vq_diffusion"),ef.forEach(t),Zh.forEach(t),kn=h(sa),Ps=s(sa,"TD",{});var tf=o(Ps);st=s(tf,"A",{href:!0,rel:!0});var rf=o(st);ks=s(rf,"STRONG",{});var sf=o(ks);Mn=n(sf,"VQDiffusionScheduler"),sf.forEach(t),rf.forEach(t),tf.forEach(t),sa.forEach(t),Nn=h(p),ot=s(p,"TR",{});var oa=o(ot);Ms=s(oa,"TD",{});var of=o(Ms);Yt=s(of,"A",{href:!0});var af=o(Yt);On=n(af,"unipc"),af.forEach(t),of.forEach(t),Rn=h(oa),Ns=s(oa,"TD",{});var lf=o(Ns);at=s(lf,"A",{href:!0,rel:!0});var nf=o(at);Os=s(nf,"STRONG",{});var df=o(Os);In=n(df,"UniPCMultistepScheduler"),df.forEach(t),nf.forEach(t),lf.forEach(t),oa.forEach(t),Ln=h(p),lt=s(p,"TR",{});var aa=o(lt);Rs=s(aa,"TD",{});var hf=o(Rs);Xt=s(hf,"A",{href:!0});var ff=o(Xt);Gn=n(ff,"repaint"),ff.forEach(t),hf.forEach(t),qn=h(aa),Is=s(aa,"TD",{});var cf=o(Is);nt=s(cf,"A",{href:!0,rel:!0});var uf=o(nt);Ls=s(uf,"STRONG",{});var pf=o(Ls);Vn=n(pf,"RePaint scheduler"),pf.forEach(t),uf.forEach(t),cf.forEach(t),aa.forEach(t),p.forEach(t),qo.forEach(t),Eo=h(a),J=s(a,"H2",{class:!0});var la=o(J);ne=s(la,"A",{id:!0,class:!0,href:!0});var mf=o(ne);Gs=s(mf,"SPAN",{});var vf=o(Gs);S(it.$$.fragment,vf),vf.forEach(t),mf.forEach(t),Kn=h(la),qs=s(la,"SPAN",{});var _f=o(qs);Cn=n(_f,"API"),_f.forEach(t),la.forEach(t),bo=h(a),Zt=s(a,"P",{});var gf=o(Zt);Hn=n(gf,"The core API for any new scheduler must follow a limited structure."),gf.forEach(t),wo=h(a),q=s(a,"UL",{});var lr=o(q);dt=s(lr,"LI",{});var na=o(dt);Un=n(na,"Schedulers should provide one or more "),Vs=s(na,"CODE",{});var Ef=o(Vs);Fn=n(Ef,"def step(...)"),Ef.forEach(t),Wn=n(na," functions that should be called to update the generated sample iteratively."),na.forEach(t),zn=h(lr),ht=s(lr,"LI",{});var ia=o(ht);Jn=n(ia,"Schedulers should provide a "),Ks=s(ia,"CODE",{});var bf=o(Ks);Bn=n(bf,"set_timesteps(...)"),bf.forEach(t),jn=n(ia," method that configures the parameters of a schedule function for a specific inference task."),ia.forEach(t),Qn=h(lr),Cs=s(lr,"LI",{});var wf=o(Cs);Yn=n(wf,"Schedulers should be framework-specific."),wf.forEach(t),lr.forEach(t),So=h(a),ie=s(a,"P",{});var da=o(ie);Xn=n(da,"The base class "),er=s(da,"A",{href:!0});var Sf=o(er);Zn=n(Sf,"SchedulerMixin"),Sf.forEach(t),ei=n(da," implements low level utilities used by multiple schedulers."),da.forEach(t),yo=h(a),B=s(a,"H3",{class:!0});var ha=o(B);de=s(ha,"A",{id:!0,class:!0,href:!0});var yf=o(de);Hs=s(yf,"SPAN",{});var Df=o(Hs);S(ft.$$.fragment,Df),Df.forEach(t),yf.forEach(t),ti=h(ha),Us=s(ha,"SPAN",{});var $f=o(Us);ri=n($f,"SchedulerMixin"),$f.forEach(t),ha.forEach(t),Do=h(a),E=s(a,"DIV",{class:!0});var R=o(E);S(ct.$$.fragment,R),si=h(R),Fs=s(R,"P",{});var Tf=o(Fs);oi=n(Tf,"Mixin containing common functions for the schedulers."),Tf.forEach(t),ai=h(R),Ws=s(R,"P",{});var xf=o(Ws);li=n(xf,"Class attributes:"),xf.forEach(t),ni=h(R),zs=s(R,"UL",{});var Af=o(zs);V=s(Af,"LI",{});var St=o(V);Js=s(St,"STRONG",{});var Pf=o(Js);ii=n(Pf,"_compatibles"),Pf.forEach(t),di=n(St," ("),Bs=s(St,"CODE",{});var kf=o(Bs);hi=n(kf,"List[str]"),kf.forEach(t),fi=n(St,`) \u2014 A list of classes that are compatible with the parent class, so that
`),js=s(St,"CODE",{});var Mf=o(js);ci=n(Mf,"from_config"),Mf.forEach(t),ui=n(St,` can be used from a class different than the one used to save the config (should be overridden
by parent class).`),St.forEach(t),Af.forEach(t),pi=h(R),O=s(R,"DIV",{class:!0});var me=o(O);S(ut.$$.fragment,me),mi=h(me),Qs=s(me,"P",{});var Nf=o(Qs);vi=n(Nf,"Instantiate a Scheduler class from a pre-defined JSON configuration file inside a directory or Hub repo."),Nf.forEach(t),_i=h(me),S(he.$$.fragment,me),gi=h(me),S(fe.$$.fragment,me),me.forEach(t),Ei=h(R),ce=s(R,"DIV",{class:!0});var fa=o(ce);S(pt.$$.fragment,fa),bi=h(fa),j=s(fa,"P",{});var nr=o(j);wi=n(nr,"Save a scheduler configuration object to the directory "),Ys=s(nr,"CODE",{});var Of=o(Ys);Si=n(Of,"save_directory"),Of.forEach(t),yi=n(nr,`, so that it can be re-loaded using the
`),tr=s(nr,"A",{href:!0});var Rf=o(tr);Di=n(Rf,"from_pretrained()"),Rf.forEach(t),$i=n(nr," class method."),nr.forEach(t),fa.forEach(t),R.forEach(t),$o=h(a),Q=s(a,"H3",{class:!0});var ca=o(Q);ue=s(ca,"A",{id:!0,class:!0,href:!0});var If=o(ue);Xs=s(If,"SPAN",{});var Lf=o(Xs);S(mt.$$.fragment,Lf),Lf.forEach(t),If.forEach(t),Ti=h(ca),Zs=s(ca,"SPAN",{});var Gf=o(Zs);xi=n(Gf,"SchedulerOutput"),Gf.forEach(t),ca.forEach(t),To=n(a,"\n\nThe class `SchedulerOutput` contains the outputs from any schedulers `step(...)` call.\n"),Y=s(a,"DIV",{class:!0});var ua=o(Y);S(vt.$$.fragment,ua),Ai=h(ua),eo=s(ua,"P",{});var qf=o(eo);Pi=n(qf,"Base class for the scheduler\u2019s step function output."),qf.forEach(t),ua.forEach(t),xo=h(a),X=s(a,"H3",{class:!0});var pa=o(X);pe=s(pa,"A",{id:!0,class:!0,href:!0});var Vf=o(pe);to=s(Vf,"SPAN",{});var Kf=o(to);S(_t.$$.fragment,Kf),Kf.forEach(t),Vf.forEach(t),ki=h(pa),ro=s(pa,"SPAN",{});var Cf=o(ro);Mi=n(Cf,"KarrasDiffusionSchedulers"),Cf.forEach(t),pa.forEach(t),Ao=h(a),gt=s(a,"P",{});var qi=o(gt);so=s(qi,"CODE",{});var Hf=o(so);Ni=n(Hf,"KarrasDiffusionSchedulers"),Hf.forEach(t),Oi=n(qi," encompasses the main generalization of schedulers in Diffusers. The schedulers in this class are distinguished, at a high level, by their noise sampling strategy; the type of network and scaling; and finally the training strategy or how the loss is weighed."),qi.forEach(t),Po=h(a),rr=s(a,"P",{});var Uf=o(rr);Ri=n(Uf,"The different schedulers, depending on the type of ODE solver, fall into the above taxonomy and provide a good abstraction for the design of the main schedulers implemented in Diffusers. The schedulers in this class are given below:"),Uf.forEach(t),ko=h(a),Z=s(a,"DIV",{class:!0});var ma=o(Z);S(Et.$$.fragment,ma),Ii=h(ma),oo=s(ma,"P",{});var Ff=o(oo);Li=n(Ff,"An enumeration."),Ff.forEach(t),ma.forEach(t),this.h()},h(){i(m,"name","hf:doc:metadata"),i(m,"content",JSON.stringify(ec)),i(b,"id","schedulers"),i(b,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(b,"href","#schedulers"),i(v,"class","relative group"),i(te,"id","what-is-a-scheduler"),i(te,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(te,"href","#what-is-a-scheduler"),i(H,"class","relative group"),i(se,"id","discrete-versus-continuous-schedulers"),i(se,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(se,"href","#discrete-versus-continuous-schedulers"),i(F,"class","relative group"),i(Tt,"href","/docs/diffusers/v0.17.1/en/api/schedulers/ddpm#diffusers.DDPMScheduler"),i(xt,"href","/docs/diffusers/v0.17.1/en/api/schedulers/pndm#diffusers.PNDMScheduler"),i(At,"href","/docs/diffusers/v0.17.1/en/api/schedulers/score_sde_ve#diffusers.ScoreSdeVeScheduler"),i(oe,"id","designing-reusable-schedulers"),i(oe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(oe,"href","#designing-reusable-schedulers"),i(W,"class","relative group"),i(kt,"href","/docs/diffusers/v0.17.1/en/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline"),i(Mt,"href","/docs/diffusers/v0.17.1/en/api/pipelines/dit#diffusers.DiTPipeline"),i(ae,"id","schedulers-summary"),i(ae,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(ae,"href","#schedulers-summary"),i(z,"class","relative group"),i(Ot,"href","./ddim"),i(ye,"href","https://arxiv.org/abs/2010.02502"),i(ye,"rel","nofollow"),i(Rt,"href","./ddim_inverse"),i($e,"href","https://arxiv.org/abs/2010.02502"),i($e,"rel","nofollow"),i(It,"href","./ddpm"),i(xe,"href","https://arxiv.org/abs/2006.11239"),i(xe,"rel","nofollow"),i(Lt,"href","./deis"),i(Pe,"href","https://arxiv.org/abs/2204.13902"),i(Pe,"rel","nofollow"),i(Gt,"href","./singlestep_dpm_solver"),i(Me,"href","https://arxiv.org/abs/2206.00927"),i(Me,"rel","nofollow"),i(qt,"href","./multistep_dpm_solver"),i(Oe,"href","https://arxiv.org/abs/2206.00927"),i(Oe,"rel","nofollow"),i(Vt,"href","./heun"),i(Ie,"href","https://arxiv.org/abs/2206.00364"),i(Ie,"rel","nofollow"),i(Kt,"href","./dpm_discrete"),i(Ge,"href","https://arxiv.org/abs/2206.00364"),i(Ge,"rel","nofollow"),i(Ct,"href","./dpm_discrete_ancestral"),i(Ve,"href","https://arxiv.org/abs/2206.00364"),i(Ve,"rel","nofollow"),i(Ht,"href","./stochastic_karras_ve"),i(Ce,"href","https://arxiv.org/abs/2206.00364"),i(Ce,"rel","nofollow"),i(Ut,"href","./lms_discrete"),i(Ue,"href","https://arxiv.org/abs/2206.00364"),i(Ue,"rel","nofollow"),i(Ft,"href","./pndm"),i(We,"href","https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L181"),i(We,"rel","nofollow"),i(Wt,"href","./score_sde_ve"),i(Je,"href","https://arxiv.org/abs/2011.13456"),i(Je,"rel","nofollow"),i(zt,"href","./ipndm"),i(je,"href","https://github.com/crowsonkb/v-diffusion-pytorch/blob/987f8985e38208345c1959b0ea767a625831cc9b/diffusion/sampling.py#L296"),i(je,"rel","nofollow"),i(Jt,"href","./score_sde_vp"),i(Ye,"href","https://arxiv.org/abs/2011.13456"),i(Ye,"rel","nofollow"),i(Bt,"href","./euler"),i(Ze,"href","https://arxiv.org/abs/2206.00364"),i(Ze,"rel","nofollow"),i(jt,"href","./euler_ancestral"),i(tt,"href","https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L72"),i(tt,"rel","nofollow"),i(Qt,"href","./vq_diffusion"),i(st,"href","https://arxiv.org/abs/2111.14822"),i(st,"rel","nofollow"),i(Yt,"href","./unipc"),i(at,"href","https://arxiv.org/abs/2302.04867"),i(at,"rel","nofollow"),i(Xt,"href","./repaint"),i(nt,"href","https://arxiv.org/abs/2201.09865"),i(nt,"rel","nofollow"),i(ne,"id","api"),i(ne,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(ne,"href","#api"),i(J,"class","relative group"),i(er,"href","/docs/diffusers/v0.17.1/en/api/schedulers/overview#diffusers.SchedulerMixin"),i(de,"id","diffusers.SchedulerMixin"),i(de,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(de,"href","#diffusers.SchedulerMixin"),i(B,"class","relative group"),i(O,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(tr,"href","/docs/diffusers/v0.17.1/en/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained"),i(ce,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(E,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(ue,"id","diffusers.schedulers.scheduling_utils.SchedulerOutput"),i(ue,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(ue,"href","#diffusers.schedulers.scheduling_utils.SchedulerOutput"),i(Q,"class","relative group"),i(Y,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(pe,"id","diffusers.schedulers.KarrasDiffusionSchedulers"),i(pe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(pe,"href","#diffusers.schedulers.KarrasDiffusionSchedulers"),i(X,"class","relative group"),i(Z,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(a,f){e(document.head,m),c(a,M,f),c(a,v,f),e(v,b),e(b,P),y(_,P,null),e(v,x),e(v,N),e(N,K),c(a,k,f),c(a,C,f),e(C,Dt),c(a,no,f),c(a,H,f),e(H,te),e(te,ir),y(ve,ir,null),e(H,va),e(H,dr),e(dr,_a),c(a,io,f),c(a,I,f),e(I,ga),e(I,hr),e(hr,Ea),e(I,ba),e(I,fr),e(fr,wa),e(I,Sa),c(a,ho,f),c(a,re,f),e(re,$t),e($t,ya),e($t,_e),e(_e,cr),e(cr,Da),e(_e,$a),e(_e,ur),e(ur,Ta),e(re,xa),e(re,U),e(U,Aa),e(U,pr),e(pr,Pa),e(U,ka),e(U,mr),e(mr,Ma),e(U,Na),c(a,fo,f),c(a,F,f),e(F,se),e(se,vr),y(ge,vr,null),e(F,Oa),e(F,_r),e(_r,Ra),c(a,co,f),c(a,g,f),e(g,Ia),e(g,gr),e(gr,La),e(g,Ga),e(g,Tt),e(Tt,qa),e(g,Va),e(g,xt),e(xt,Ka),e(g,Ca),e(g,Er),e(Er,Ha),e(g,Ua),e(g,At),e(At,Fa),e(g,Wa),e(g,br),e(br,za),e(g,Ja),c(a,uo,f),c(a,W,f),e(W,oe),e(oe,wr),y(Ee,wr,null),e(W,Ba),e(W,Sr),e(Sr,ja),c(a,po,f),c(a,Pt,f),e(Pt,Qa),c(a,mo,f),c(a,L,f),e(L,yr),e(yr,Ya),e(L,Xa),e(L,Dr),e(Dr,Za),e(L,el),e(L,G),e(G,tl),e(G,kt),e(kt,rl),e(G,sl),e(G,Mt),e(Mt,ol),e(G,al),e(G,$r),e($r,ll),c(a,vo,f),c(a,z,f),e(z,ae),e(ae,Tr),y(be,Tr,null),e(z,nl),e(z,xr),e(xr,il),c(a,_o,f),c(a,Nt,f),e(Nt,dl),c(a,go,f),c(a,le,f),e(le,Ar),e(Ar,we),e(we,Pr),e(Pr,hl),e(we,fl),e(we,kr),e(kr,cl),e(le,ul),e(le,u),e(u,Se),e(Se,Mr),e(Mr,Ot),e(Ot,pl),e(Se,ml),e(Se,Nr),e(Nr,ye),e(ye,Or),e(Or,vl),e(u,_l),e(u,De),e(De,Rr),e(Rr,Rt),e(Rt,gl),e(De,El),e(De,Ir),e(Ir,$e),e($e,Lr),e(Lr,bl),e(u,wl),e(u,Te),e(Te,Gr),e(Gr,It),e(It,Sl),e(Te,yl),e(Te,qr),e(qr,xe),e(xe,Vr),e(Vr,Dl),e(u,$l),e(u,Ae),e(Ae,Kr),e(Kr,Lt),e(Lt,Tl),e(Ae,xl),e(Ae,Cr),e(Cr,Pe),e(Pe,Hr),e(Hr,Al),e(u,Pl),e(u,ke),e(ke,Ur),e(Ur,Gt),e(Gt,kl),e(ke,Ml),e(ke,Fr),e(Fr,Me),e(Me,Wr),e(Wr,Nl),e(u,Ol),e(u,Ne),e(Ne,zr),e(zr,qt),e(qt,Rl),e(Ne,Il),e(Ne,Jr),e(Jr,Oe),e(Oe,Br),e(Br,Ll),e(u,Gl),e(u,Re),e(Re,jr),e(jr,Vt),e(Vt,ql),e(Re,Vl),e(Re,Qr),e(Qr,Ie),e(Ie,Yr),e(Yr,Kl),e(u,Cl),e(u,Le),e(Le,Xr),e(Xr,Kt),e(Kt,Hl),e(Le,Ul),e(Le,Zr),e(Zr,Ge),e(Ge,es),e(es,Fl),e(u,Wl),e(u,qe),e(qe,ts),e(ts,Ct),e(Ct,zl),e(qe,Jl),e(qe,rs),e(rs,Ve),e(Ve,ss),e(ss,Bl),e(u,jl),e(u,Ke),e(Ke,os),e(os,Ht),e(Ht,Ql),e(Ke,Yl),e(Ke,as),e(as,Ce),e(Ce,ls),e(ls,Xl),e(u,Zl),e(u,He),e(He,ns),e(ns,Ut),e(Ut,en),e(He,tn),e(He,is),e(is,Ue),e(Ue,ds),e(ds,rn),e(u,sn),e(u,Fe),e(Fe,hs),e(hs,Ft),e(Ft,on),e(Fe,an),e(Fe,fs),e(fs,We),e(We,cs),e(cs,ln),e(u,nn),e(u,ze),e(ze,us),e(us,Wt),e(Wt,dn),e(ze,hn),e(ze,ps),e(ps,Je),e(Je,ms),e(ms,fn),e(u,cn),e(u,Be),e(Be,vs),e(vs,zt),e(zt,un),e(Be,pn),e(Be,_s),e(_s,je),e(je,gs),e(gs,mn),e(u,vn),e(u,Qe),e(Qe,Es),e(Es,Jt),e(Jt,_n),e(Qe,gn),e(Qe,bs),e(bs,Ye),e(Ye,ws),e(ws,En),e(u,bn),e(u,Xe),e(Xe,Ss),e(Ss,Bt),e(Bt,wn),e(Xe,Sn),e(Xe,ys),e(ys,Ze),e(Ze,Ds),e(Ds,yn),e(u,Dn),e(u,et),e(et,$s),e($s,jt),e(jt,$n),e(et,Tn),e(et,Ts),e(Ts,tt),e(tt,xs),e(xs,xn),e(u,An),e(u,rt),e(rt,As),e(As,Qt),e(Qt,Pn),e(rt,kn),e(rt,Ps),e(Ps,st),e(st,ks),e(ks,Mn),e(u,Nn),e(u,ot),e(ot,Ms),e(Ms,Yt),e(Yt,On),e(ot,Rn),e(ot,Ns),e(Ns,at),e(at,Os),e(Os,In),e(u,Ln),e(u,lt),e(lt,Rs),e(Rs,Xt),e(Xt,Gn),e(lt,qn),e(lt,Is),e(Is,nt),e(nt,Ls),e(Ls,Vn),c(a,Eo,f),c(a,J,f),e(J,ne),e(ne,Gs),y(it,Gs,null),e(J,Kn),e(J,qs),e(qs,Cn),c(a,bo,f),c(a,Zt,f),e(Zt,Hn),c(a,wo,f),c(a,q,f),e(q,dt),e(dt,Un),e(dt,Vs),e(Vs,Fn),e(dt,Wn),e(q,zn),e(q,ht),e(ht,Jn),e(ht,Ks),e(Ks,Bn),e(ht,jn),e(q,Qn),e(q,Cs),e(Cs,Yn),c(a,So,f),c(a,ie,f),e(ie,Xn),e(ie,er),e(er,Zn),e(ie,ei),c(a,yo,f),c(a,B,f),e(B,de),e(de,Hs),y(ft,Hs,null),e(B,ti),e(B,Us),e(Us,ri),c(a,Do,f),c(a,E,f),y(ct,E,null),e(E,si),e(E,Fs),e(Fs,oi),e(E,ai),e(E,Ws),e(Ws,li),e(E,ni),e(E,zs),e(zs,V),e(V,Js),e(Js,ii),e(V,di),e(V,Bs),e(Bs,hi),e(V,fi),e(V,js),e(js,ci),e(V,ui),e(E,pi),e(E,O),y(ut,O,null),e(O,mi),e(O,Qs),e(Qs,vi),e(O,_i),y(he,O,null),e(O,gi),y(fe,O,null),e(E,Ei),e(E,ce),y(pt,ce,null),e(ce,bi),e(ce,j),e(j,wi),e(j,Ys),e(Ys,Si),e(j,yi),e(j,tr),e(tr,Di),e(j,$i),c(a,$o,f),c(a,Q,f),e(Q,ue),e(ue,Xs),y(mt,Xs,null),e(Q,Ti),e(Q,Zs),e(Zs,xi),c(a,To,f),c(a,Y,f),y(vt,Y,null),e(Y,Ai),e(Y,eo),e(eo,Pi),c(a,xo,f),c(a,X,f),e(X,pe),e(pe,to),y(_t,to,null),e(X,ki),e(X,ro),e(ro,Mi),c(a,Ao,f),c(a,gt,f),e(gt,so),e(so,Ni),e(gt,Oi),c(a,Po,f),c(a,rr,f),e(rr,Ri),c(a,ko,f),c(a,Z,f),y(Et,Z,null),e(Z,Ii),e(Z,oo),e(oo,Li),Mo=!0},p(a,[f]){const bt={};f&2&&(bt.$$scope={dirty:f,ctx:a}),he.$set(bt);const ao={};f&2&&(ao.$$scope={dirty:f,ctx:a}),fe.$set(ao)},i(a){Mo||(D(_.$$.fragment,a),D(ve.$$.fragment,a),D(ge.$$.fragment,a),D(Ee.$$.fragment,a),D(be.$$.fragment,a),D(it.$$.fragment,a),D(ft.$$.fragment,a),D(ct.$$.fragment,a),D(ut.$$.fragment,a),D(he.$$.fragment,a),D(fe.$$.fragment,a),D(pt.$$.fragment,a),D(mt.$$.fragment,a),D(vt.$$.fragment,a),D(_t.$$.fragment,a),D(Et.$$.fragment,a),Mo=!0)},o(a){$(_.$$.fragment,a),$(ve.$$.fragment,a),$(ge.$$.fragment,a),$(Ee.$$.fragment,a),$(be.$$.fragment,a),$(it.$$.fragment,a),$(ft.$$.fragment,a),$(ct.$$.fragment,a),$(ut.$$.fragment,a),$(he.$$.fragment,a),$(fe.$$.fragment,a),$(pt.$$.fragment,a),$(mt.$$.fragment,a),$(vt.$$.fragment,a),$(_t.$$.fragment,a),$(Et.$$.fragment,a),Mo=!1},d(a){t(m),a&&t(M),a&&t(v),T(_),a&&t(k),a&&t(C),a&&t(no),a&&t(H),T(ve),a&&t(io),a&&t(I),a&&t(ho),a&&t(re),a&&t(fo),a&&t(F),T(ge),a&&t(co),a&&t(g),a&&t(uo),a&&t(W),T(Ee),a&&t(po),a&&t(Pt),a&&t(mo),a&&t(L),a&&t(vo),a&&t(z),T(be),a&&t(_o),a&&t(Nt),a&&t(go),a&&t(le),a&&t(Eo),a&&t(J),T(it),a&&t(bo),a&&t(Zt),a&&t(wo),a&&t(q),a&&t(So),a&&t(ie),a&&t(yo),a&&t(B),T(ft),a&&t(Do),a&&t(E),T(ct),T(ut),T(he),T(fe),T(pt),a&&t($o),a&&t(Q),T(mt),a&&t(To),a&&t(Y),T(vt),a&&t(xo),a&&t(X),T(_t),a&&t(Ao),a&&t(gt),a&&t(Po),a&&t(rr),a&&t(ko),a&&t(Z),T(Et)}}}const ec={local:"schedulers",sections:[{local:"what-is-a-scheduler",sections:[{local:"discrete-versus-continuous-schedulers",title:"Discrete versus continuous schedulers"}],title:"What is a scheduler?"},{local:"designing-reusable-schedulers",title:"Designing Re-usable schedulers"},{local:"schedulers-summary",title:"Schedulers Summary"},{local:"api",sections:[{local:"diffusers.SchedulerMixin",title:"SchedulerMixin"},{local:"diffusers.schedulers.scheduling_utils.SchedulerOutput",title:"SchedulerOutput"},{local:"diffusers.schedulers.KarrasDiffusionSchedulers",title:"KarrasDiffusionSchedulers"}],title:"API"}],title:"Schedulers"};function tc(yt){return Qf(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class lc extends zf{constructor(m){super();Jf(this,m,tc,Zf,Bf,{})}}export{lc as default,ec as metadata};
