Buckets:

download
raw
23.4 kB
import{s as Vt,o as Xt,n as Lt}from"../chunks/scheduler.852ec091.js";import{S as Rt,i as Ht,g as s,s as a,r as d,A as Dt,h as m,f as e,c as o,j as x,u as c,x as S,k as w,y as r,a as n,v as b,d as _,t as g,w as h}from"../chunks/index.28275fd3.js";import{D as j}from"../chunks/Docstring.ee6c313e.js";import{C as Pt}from"../chunks/CodeBlock.c3366071.js";import{E as Yt}from"../chunks/ExampleCodeBlock.00f06ed4.js";import{H as nt,E as Qt}from"../chunks/EditOnGithub.582011f0.js";function qt(rt){let l,W="Example:",$,u,f;return u=new Pt({props:{code:"aW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBiaXRzYW5kYnl0ZXMlMjBhcyUyMGJuYiUwQSUwQW1uZyUyMCUzRCUyMGJuYi5vcHRpbS5HbG9iYWxPcHRpbU1hbmFnZXIuZ2V0X2luc3RhbmNlKCklMEElMEFtb2RlbCUyMCUzRCUyME15TW9kZWwoKSUwQW1uZy5yZWdpc3Rlcl9wYXJhbWV0ZXJzKG1vZGVsLnBhcmFtZXRlcnMoKSklMjAlMjMlMjAxLiUyMHJlZ2lzdGVyJTIwcGFyYW1ldGVycyUyMHdoaWxlJTIwc3RpbGwlMjBvbiUyMENQVSUwQSUwQW1vZGVsJTIwJTNEJTIwbW9kZWwuY3VkYSgpJTBBJTIzJTIwdXNlJTIwOC1iaXQlMjBvcHRpbWl6ZXIlMjBzdGF0ZXMlMjBmb3IlMjBhbGwlMjBwYXJhbWV0ZXJzJTBBYWRhbSUyMCUzRCUyMGJuYi5vcHRpbS5BZGFtKG1vZGVsLnBhcmFtZXRlcnMoKSUyQyUyMGxyJTNEMC4wMDElMkMlMjBvcHRpbV9iaXRzJTNEOCklMEElMEElMjMlMjAyLiUyMG92ZXJyaWRlJTNBJTIwdGhlJTIwcGFyYW1ldGVyJTIwbW9kZWwuZmMxLndlaWdodCUyMG5vdyUyMHVzZXMlMjAzMi1iaXQlMjBBZGFtJTBBbW5nLm92ZXJyaWRlX2NvbmZpZyhtb2RlbC5mYzEud2VpZ2h0JTJDJTIwJ29wdGltX2JpdHMnJTJDJTIwMzIp",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">import</span> bitsandbytes <span class="hljs-keyword">as</span> bnb
mng = bnb.optim.GlobalOptimManager.get_instance()
model = MyModel()
mng.register_parameters(model.parameters()) <span class="hljs-comment"># 1. register parameters while still on CPU</span>
model = model.cuda()
<span class="hljs-comment"># use 8-bit optimizer states for all parameters</span>
adam = bnb.optim.Adam(model.parameters(), lr=<span class="hljs-number">0.001</span>, optim_bits=<span class="hljs-number">8</span>)
<span class="hljs-comment"># 2. override: the parameter model.fc1.weight now uses 32-bit Adam</span>
mng.override_config(model.fc1.weight, <span class="hljs-string">&#x27;optim_bits&#x27;</span>, <span class="hljs-number">32</span>)`,wrap:!1}}),{c(){l=s("p"),l.textContent=W,$=a(),d(u.$$.fragment)},l(p){l=m(p,"P",{"data-svelte-h":!0}),S(l)!=="svelte-11lpom8"&&(l.textContent=W),$=o(p),c(u.$$.fragment,p)},m(p,v){n(p,l,v),n(p,$,v),b(u,p,v),f=!0},p:Lt,i(p){f||(_(u.$$.fragment,p),f=!0)},o(p){g(u.$$.fragment,p),f=!1},d(p){p&&(e(l),e($)),h(u,p)}}}function Kt(rt){let l,W,$,u,f,p,v,Wt='<a href="https://hf.co/papers/2110.02861" rel="nofollow">8-bit optimizers</a> reduce the memory footprint of 32-bit optimizers without any performance degradation which means you can train large models with many parameters faster. At the core of 8-bit optimizers is block-wise quantization which enables quantization accuracy, computational efficiency, and stability.',st,U,Ut="bitsandbytes provides 8-bit optimizers through the base <code>Optimizer8bit</code> class, and additionally provides <code>Optimizer2State</code> and <code>Optimizer1State</code> for 2-state (for example, <code>Adam</code>) and 1-state (for example, <code>Adagrad</code>) optimizers respectively. To provide custom optimizer hyperparameters, use the <code>GlobalOptimManager</code> class to configure the optimizer.",mt,Z,pt,O,B,wt,k,F,Ot,Q,Zt="Base 8-bit optimizer class.",lt,I,dt,M,N,Mt,C,A,Tt,q,Bt="Base 2-state update optimizer class.",ct,V,bt,T,X,St,G,L,kt,K,Ft="Base 1-state update optimizer class.",_t,R,gt,y,H,Ct,tt,It="A global optimizer manager for enabling custom optimizer configs.",Gt,z,D,Jt,et,Nt="Override initial optimizer config with specific hyperparameters.",Et,it,At=`The key-values of the optimizer config for the input parameters are overridden
This can be both, optimizer parameters like <code>betas</code> or <code>lr</code>, or it can be
8-bit specific parameters like <code>optim_bits</code> or <code>percentile_clipping</code>.`,jt,J,ht,P,ut,ot,ft;return f=new nt({props:{title:"Overview",local:"overview",headingTag:"h1"}}),Z=new nt({props:{title:"Optimizer8bit",local:"bitsandbytes.optim.optimizer.Optimizer8bit",headingTag:"h2"}}),B=new j({props:{name:"class bitsandbytes.optim.optimizer.Optimizer8bit",anchor:"bitsandbytes.optim.optimizer.Optimizer8bit",parameters:[{name:"params",val:""},{name:"defaults",val:""},{name:"optim_bits",val:" = 32"},{name:"is_paged",val:" = False"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L112"}}),F=new j({props:{name:"__init__",anchor:"bitsandbytes.optim.optimizer.Optimizer8bit.__init__",parameters:[{name:"params",val:""},{name:"defaults",val:""},{name:"optim_bits",val:" = 32"},{name:"is_paged",val:" = False"}],parametersDescription:[{anchor:"bitsandbytes.optim.optimizer.Optimizer8bit.__init__.params",description:`<strong>params</strong> (<code>torch.tensor</code>) &#x2014;
The input parameters to optimize.`,name:"params"},{anchor:"bitsandbytes.optim.optimizer.Optimizer8bit.__init__.optim_bits",description:`<strong>optim_bits</strong> (<code>int</code>, defaults to 32) &#x2014;
The number of bits of the optimizer state.`,name:"optim_bits"},{anchor:"bitsandbytes.optim.optimizer.Optimizer8bit.__init__.is_paged",description:`<strong>is_paged</strong> (<code>bool</code>, defaults to <code>False</code>) &#x2014;
Whether the optimizer is a paged optimizer or not.`,name:"is_paged"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L113"}}),I=new nt({props:{title:"Optimizer2State",local:"bitsandbytes.optim.optimizer.Optimizer2State",headingTag:"h2"}}),N=new j({props:{name:"class bitsandbytes.optim.optimizer.Optimizer2State",anchor:"bitsandbytes.optim.optimizer.Optimizer2State",parameters:[{name:"optimizer_name",val:""},{name:"params",val:""},{name:"lr",val:" = 0.001"},{name:"betas",val:" = (0.9, 0.999)"},{name:"eps",val:" = 1e-08"},{name:"weight_decay",val:" = 0.0"},{name:"optim_bits",val:" = 32"},{name:"args",val:" = None"},{name:"min_8bit_size",val:" = 4096"},{name:"percentile_clipping",val:" = 100"},{name:"block_wise",val:" = True"},{name:"max_unorm",val:" = 0.0"},{name:"skip_zeros",val:" = False"},{name:"is_paged",val:" = False"},{name:"alpha",val:" = 0.0"},{name:"t_alpha",val:": typing.Optional[int] = None"},{name:"t_beta3",val:": typing.Optional[int] = None"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L347"}}),A=new j({props:{name:"__init__",anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__",parameters:[{name:"optimizer_name",val:""},{name:"params",val:""},{name:"lr",val:" = 0.001"},{name:"betas",val:" = (0.9, 0.999)"},{name:"eps",val:" = 1e-08"},{name:"weight_decay",val:" = 0.0"},{name:"optim_bits",val:" = 32"},{name:"args",val:" = None"},{name:"min_8bit_size",val:" = 4096"},{name:"percentile_clipping",val:" = 100"},{name:"block_wise",val:" = True"},{name:"max_unorm",val:" = 0.0"},{name:"skip_zeros",val:" = False"},{name:"is_paged",val:" = False"},{name:"alpha",val:" = 0.0"},{name:"t_alpha",val:": typing.Optional[int] = None"},{name:"t_beta3",val:": typing.Optional[int] = None"}],parametersDescription:[{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.optimizer_name",description:`<strong>optimizer_name</strong> (<code>str</code>) &#x2014;
The name of the optimizer.`,name:"optimizer_name"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.params",description:`<strong>params</strong> (<code>torch.tensor</code>) &#x2014;
The input parameters to optimize.`,name:"params"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.lr",description:`<strong>lr</strong> (<code>float</code>, defaults to 1e-3) &#x2014;
The learning rate.`,name:"lr"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.betas",description:`<strong>betas</strong> (<code>tuple</code>, defaults to (0.9, 0.999)) &#x2014;
The beta values for the optimizer.`,name:"betas"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.eps",description:`<strong>eps</strong> (<code>float</code>, defaults to 1e-8) &#x2014;
The epsilon value for the optimizer.`,name:"eps"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.weight_decay",description:`<strong>weight_decay</strong> (<code>float</code>, defaults to 0.0) &#x2014;
The weight decay value for the optimizer.`,name:"weight_decay"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.optim_bits",description:`<strong>optim_bits</strong> (<code>int</code>, defaults to 32) &#x2014;
The number of bits of the optimizer state.`,name:"optim_bits"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.args",description:`<strong>args</strong> (<code>object</code>, defaults to <code>None</code>) &#x2014;
An object with additional arguments.`,name:"args"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.min_8bit_size",description:`<strong>min_8bit_size</strong> (<code>int</code>, defaults to 4096) &#x2014;
The minimum number of elements of the parameter tensors for 8-bit optimization.`,name:"min_8bit_size"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.percentile_clipping",description:`<strong>percentile_clipping</strong> (<code>int</code>, defaults to 100) &#x2014;
Adapts clipping threshold automatically by tracking the last 100 gradient norms and clipping the gradient at a certain percentile to improve stability.`,name:"percentile_clipping"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.block_wise",description:`<strong>block_wise</strong> (<code>bool</code>, defaults to <code>True</code>) &#x2014;
Whether to independently quantize each block of tensors to reduce outlier effects and improve stability.`,name:"block_wise"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.max_unorm",description:`<strong>max_unorm</strong> (<code>float</code>, defaults to 0.0) &#x2014;
The maximum value to normalize each block with.`,name:"max_unorm"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.skip_zeros",description:`<strong>skip_zeros</strong> (<code>bool</code>, defaults to <code>False</code>) &#x2014;
Whether to skip zero values for sparse gradients and models to ensure correct updates.`,name:"skip_zeros"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.is_paged",description:`<strong>is_paged</strong> (<code>bool</code>, defaults to <code>False</code>) &#x2014;
Whether the optimizer is a paged optimizer or not.`,name:"is_paged"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.alpha",description:`<strong>alpha</strong> (<code>float</code>, defaults to 0.0) &#x2014;
The alpha value for the AdEMAMix optimizer.`,name:"alpha"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.t_alpha",description:`<strong>t_alpha</strong> (<code>Optional[int]</code>, defaults to <code>None</code>) &#x2014;
Number of iterations for alpha scheduling with AdEMAMix.`,name:"t_alpha"},{anchor:"bitsandbytes.optim.optimizer.Optimizer2State.__init__.t_beta3",description:`<strong>t_beta3</strong> (<code>Optional[int]</code>, defaults to <code>None</code>) &#x2014;
Number of iterations for beta scheduling with AdEMAMix.`,name:"t_beta3"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L348"}}),V=new nt({props:{title:"Optimizer1State",local:"bitsandbytes.optim.optimizer.Optimizer1State",headingTag:"h2"}}),X=new j({props:{name:"class bitsandbytes.optim.optimizer.Optimizer1State",anchor:"bitsandbytes.optim.optimizer.Optimizer1State",parameters:[{name:"optimizer_name",val:""},{name:"params",val:""},{name:"lr",val:" = 0.001"},{name:"betas",val:" = (0.9, 0.0)"},{name:"eps",val:" = 1e-08"},{name:"weight_decay",val:" = 0.0"},{name:"optim_bits",val:" = 32"},{name:"args",val:" = None"},{name:"min_8bit_size",val:" = 4096"},{name:"percentile_clipping",val:" = 100"},{name:"block_wise",val:" = True"},{name:"max_unorm",val:" = 0.0"},{name:"skip_zeros",val:" = False"},{name:"is_paged",val:" = False"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L592"}}),L=new j({props:{name:"__init__",anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__",parameters:[{name:"optimizer_name",val:""},{name:"params",val:""},{name:"lr",val:" = 0.001"},{name:"betas",val:" = (0.9, 0.0)"},{name:"eps",val:" = 1e-08"},{name:"weight_decay",val:" = 0.0"},{name:"optim_bits",val:" = 32"},{name:"args",val:" = None"},{name:"min_8bit_size",val:" = 4096"},{name:"percentile_clipping",val:" = 100"},{name:"block_wise",val:" = True"},{name:"max_unorm",val:" = 0.0"},{name:"skip_zeros",val:" = False"},{name:"is_paged",val:" = False"}],parametersDescription:[{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.optimizer_name",description:`<strong>optimizer_name</strong> (<code>str</code>) &#x2014;
The name of the optimizer.`,name:"optimizer_name"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.params",description:`<strong>params</strong> (<code>torch.tensor</code>) &#x2014;
The input parameters to optimize.`,name:"params"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.lr",description:`<strong>lr</strong> (<code>float</code>, defaults to 1e-3) &#x2014;
The learning rate.`,name:"lr"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.betas",description:`<strong>betas</strong> (<code>tuple</code>, defaults to (0.9, 0.0)) &#x2014;
The beta values for the optimizer.`,name:"betas"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.eps",description:`<strong>eps</strong> (<code>float</code>, defaults to 1e-8) &#x2014;
The epsilon value for the optimizer.`,name:"eps"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.weight_decay",description:`<strong>weight_decay</strong> (<code>float</code>, defaults to 0.0) &#x2014;
The weight decay value for the optimizer.`,name:"weight_decay"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.optim_bits",description:`<strong>optim_bits</strong> (<code>int</code>, defaults to 32) &#x2014;
The number of bits of the optimizer state.`,name:"optim_bits"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.args",description:`<strong>args</strong> (<code>object</code>, defaults to <code>None</code>) &#x2014;
An object with additional arguments.`,name:"args"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.min_8bit_size",description:`<strong>min_8bit_size</strong> (<code>int</code>, defaults to 4096) &#x2014;
The minimum number of elements of the parameter tensors for 8-bit optimization.`,name:"min_8bit_size"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.percentile_clipping",description:`<strong>percentile_clipping</strong> (<code>int</code>, defaults to 100) &#x2014;
Adapts clipping threshold automatically by tracking the last 100 gradient norms and clipping the gradient at a certain percentile to improve stability.`,name:"percentile_clipping"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.block_wise",description:`<strong>block_wise</strong> (<code>bool</code>, defaults to <code>True</code>) &#x2014;
Whether to independently quantize each block of tensors to reduce outlier effects and improve stability.`,name:"block_wise"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.max_unorm",description:`<strong>max_unorm</strong> (<code>float</code>, defaults to 0.0) &#x2014;
The maximum value to normalize each block with.`,name:"max_unorm"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.skip_zeros",description:`<strong>skip_zeros</strong> (<code>bool</code>, defaults to <code>False</code>) &#x2014;
Whether to skip zero values for sparse gradients and models to ensure correct updates.`,name:"skip_zeros"},{anchor:"bitsandbytes.optim.optimizer.Optimizer1State.__init__.is_paged",description:`<strong>is_paged</strong> (<code>bool</code>, defaults to <code>False</code>) &#x2014;
Whether the optimizer is a paged optimizer or not.`,name:"is_paged"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L593"}}),R=new nt({props:{title:"Utilities",local:"bitsandbytes.optim.GlobalOptimManager",headingTag:"h2"}}),H=new j({props:{name:"class bitsandbytes.optim.GlobalOptimManager",anchor:"bitsandbytes.optim.GlobalOptimManager",parameters:[],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L21"}}),D=new j({props:{name:"override_config",anchor:"bitsandbytes.optim.GlobalOptimManager.override_config",parameters:[{name:"parameters",val:""},{name:"key",val:" = None"},{name:"value",val:" = None"},{name:"key_value_dict",val:" = None"}],parametersDescription:[{anchor:"bitsandbytes.optim.GlobalOptimManager.override_config.parameters",description:`<strong>parameters</strong> (<code>torch.Tensor</code> or <code>list(torch.Tensors)</code>) &#x2014;
The input parameters.`,name:"parameters"},{anchor:"bitsandbytes.optim.GlobalOptimManager.override_config.key",description:`<strong>key</strong> (<code>str</code>) &#x2014;
The hyperparamter to override.`,name:"key"},{anchor:"bitsandbytes.optim.GlobalOptimManager.override_config.value",description:`<strong>value</strong> &#x2014;
The hyperparameter values.`,name:"value"},{anchor:"bitsandbytes.optim.GlobalOptimManager.override_config.key_value_dict",description:`<strong>key_value_dict</strong> (<code>dict</code>) &#x2014;
A dictionary with multiple key-values to override.`,name:"key_value_dict"}],source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/vr_1431/bitsandbytes/optim/optimizer.py#L55"}}),J=new Yt({props:{anchor:"bitsandbytes.optim.GlobalOptimManager.override_config.example",$$slots:{default:[qt]},$$scope:{ctx:rt}}}),P=new Qt({props:{source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/main/docs/source/reference/optim/optim_overview.mdx"}}),{c(){l=s("meta"),W=a(),$=s("p"),u=a(),d(f.$$.fragment),p=a(),v=s("p"),v.innerHTML=Wt,st=a(),U=s("p"),U.innerHTML=Ut,mt=a(),d(Z.$$.fragment),pt=a(),O=s("div"),d(B.$$.fragment),wt=a(),k=s("div"),d(F.$$.fragment),Ot=a(),Q=s("p"),Q.textContent=Zt,lt=a(),d(I.$$.fragment),dt=a(),M=s("div"),d(N.$$.fragment),Mt=a(),C=s("div"),d(A.$$.fragment),Tt=a(),q=s("p"),q.textContent=Bt,ct=a(),d(V.$$.fragment),bt=a(),T=s("div"),d(X.$$.fragment),St=a(),G=s("div"),d(L.$$.fragment),kt=a(),K=s("p"),K.textContent=Ft,_t=a(),d(R.$$.fragment),gt=a(),y=s("div"),d(H.$$.fragment),Ct=a(),tt=s("p"),tt.textContent=It,Gt=a(),z=s("div"),d(D.$$.fragment),Jt=a(),et=s("p"),et.textContent=Nt,Et=a(),it=s("p"),it.innerHTML=At,jt=a(),d(J.$$.fragment),ht=a(),d(P.$$.fragment),ut=a(),ot=s("p"),this.h()},l(t){const i=Dt("svelte-u9bgzb",document.head);l=m(i,"META",{name:!0,content:!0}),i.forEach(e),W=o(t),$=m(t,"P",{}),x($).forEach(e),u=o(t),c(f.$$.fragment,t),p=o(t),v=m(t,"P",{"data-svelte-h":!0}),S(v)!=="svelte-blrrs1"&&(v.innerHTML=Wt),st=o(t),U=m(t,"P",{"data-svelte-h":!0}),S(U)!=="svelte-176x1ux"&&(U.innerHTML=Ut),mt=o(t),c(Z.$$.fragment,t),pt=o(t),O=m(t,"DIV",{class:!0});var Y=x(O);c(B.$$.fragment,Y),wt=o(Y),k=m(Y,"DIV",{class:!0});var zt=x(k);c(F.$$.fragment,zt),Ot=o(zt),Q=m(zt,"P",{"data-svelte-h":!0}),S(Q)!=="svelte-183isl2"&&(Q.textContent=Zt),zt.forEach(e),Y.forEach(e),lt=o(t),c(I.$$.fragment,t),dt=o(t),M=m(t,"DIV",{class:!0});var vt=x(M);c(N.$$.fragment,vt),Mt=o(vt),C=m(vt,"DIV",{class:!0});var yt=x(C);c(A.$$.fragment,yt),Tt=o(yt),q=m(yt,"P",{"data-svelte-h":!0}),S(q)!=="svelte-cu1pwl"&&(q.textContent=Bt),yt.forEach(e),vt.forEach(e),ct=o(t),c(V.$$.fragment,t),bt=o(t),T=m(t,"DIV",{class:!0});var $t=x(T);c(X.$$.fragment,$t),St=o($t),G=m($t,"DIV",{class:!0});var xt=x(G);c(L.$$.fragment,xt),kt=o(xt),K=m(xt,"P",{"data-svelte-h":!0}),S(K)!=="svelte-6q4esm"&&(K.textContent=Ft),xt.forEach(e),$t.forEach(e),_t=o(t),c(R.$$.fragment,t),gt=o(t),y=m(t,"DIV",{class:!0});var at=x(y);c(H.$$.fragment,at),Ct=o(at),tt=m(at,"P",{"data-svelte-h":!0}),S(tt)!=="svelte-16hgmyw"&&(tt.textContent=It),Gt=o(at),z=m(at,"DIV",{class:!0});var E=x(z);c(D.$$.fragment,E),Jt=o(E),et=m(E,"P",{"data-svelte-h":!0}),S(et)!=="svelte-1jb6me3"&&(et.textContent=Nt),Et=o(E),it=m(E,"P",{"data-svelte-h":!0}),S(it)!=="svelte-nnr78r"&&(it.innerHTML=At),jt=o(E),c(J.$$.fragment,E),E.forEach(e),at.forEach(e),ht=o(t),c(P.$$.fragment,t),ut=o(t),ot=m(t,"P",{}),x(ot).forEach(e),this.h()},h(){w(l,"name","hf:doc:metadata"),w(l,"content",te),w(k,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(O,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(C,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(M,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(G,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(T,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(z,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),w(y,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(t,i){r(document.head,l),n(t,W,i),n(t,$,i),n(t,u,i),b(f,t,i),n(t,p,i),n(t,v,i),n(t,st,i),n(t,U,i),n(t,mt,i),b(Z,t,i),n(t,pt,i),n(t,O,i),b(B,O,null),r(O,wt),r(O,k),b(F,k,null),r(k,Ot),r(k,Q),n(t,lt,i),b(I,t,i),n(t,dt,i),n(t,M,i),b(N,M,null),r(M,Mt),r(M,C),b(A,C,null),r(C,Tt),r(C,q),n(t,ct,i),b(V,t,i),n(t,bt,i),n(t,T,i),b(X,T,null),r(T,St),r(T,G),b(L,G,null),r(G,kt),r(G,K),n(t,_t,i),b(R,t,i),n(t,gt,i),n(t,y,i),b(H,y,null),r(y,Ct),r(y,tt),r(y,Gt),r(y,z),b(D,z,null),r(z,Jt),r(z,et),r(z,Et),r(z,it),r(z,jt),b(J,z,null),n(t,ht,i),b(P,t,i),n(t,ut,i),n(t,ot,i),ft=!0},p(t,[i]){const Y={};i&2&&(Y.$$scope={dirty:i,ctx:t}),J.$set(Y)},i(t){ft||(_(f.$$.fragment,t),_(Z.$$.fragment,t),_(B.$$.fragment,t),_(F.$$.fragment,t),_(I.$$.fragment,t),_(N.$$.fragment,t),_(A.$$.fragment,t),_(V.$$.fragment,t),_(X.$$.fragment,t),_(L.$$.fragment,t),_(R.$$.fragment,t),_(H.$$.fragment,t),_(D.$$.fragment,t),_(J.$$.fragment,t),_(P.$$.fragment,t),ft=!0)},o(t){g(f.$$.fragment,t),g(Z.$$.fragment,t),g(B.$$.fragment,t),g(F.$$.fragment,t),g(I.$$.fragment,t),g(N.$$.fragment,t),g(A.$$.fragment,t),g(V.$$.fragment,t),g(X.$$.fragment,t),g(L.$$.fragment,t),g(R.$$.fragment,t),g(H.$$.fragment,t),g(D.$$.fragment,t),g(J.$$.fragment,t),g(P.$$.fragment,t),ft=!1},d(t){t&&(e(W),e($),e(u),e(p),e(v),e(st),e(U),e(mt),e(pt),e(O),e(lt),e(dt),e(M),e(ct),e(bt),e(T),e(_t),e(gt),e(y),e(ht),e(ut),e(ot)),e(l),h(f,t),h(Z,t),h(B),h(F),h(I,t),h(N),h(A),h(V,t),h(X),h(L),h(R,t),h(H),h(D),h(J),h(P,t)}}}const te='{"title":"Overview","local":"overview","sections":[{"title":"Optimizer8bit","local":"bitsandbytes.optim.optimizer.Optimizer8bit","sections":[],"depth":2},{"title":"Optimizer2State","local":"bitsandbytes.optim.optimizer.Optimizer2State","sections":[],"depth":2},{"title":"Optimizer1State","local":"bitsandbytes.optim.optimizer.Optimizer1State","sections":[],"depth":2},{"title":"Utilities","local":"bitsandbytes.optim.GlobalOptimManager","sections":[],"depth":2}],"depth":1}';function ee(rt){return Xt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class me extends Rt{constructor(l){super(),Ht(this,l,ee,Kt,Vt,{})}}export{me as component};

Xet Storage Details

Size:
23.4 kB
·
Xet hash:
cd63493ca81e8512c4907c8dce08d308f00e6758c57d5144151207561796e82e

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.