Buckets:
| import{s as Ht,c as ce,u as de,g as he,d as Me,e as $e,f as Lt,o as ye,n as Y}from"../chunks/scheduler.852ec091.js";import{S as St,i as Xt,g as U,s as h,h as T,j as Mt,f as n,c as M,k as X,a as i,d as g,t as _,z as be,m as we,n as Ue,y as Dt,B as Te,o as Ce,e as oe,p as ge,b as Je,r as v,A as _e,u as j,x as J,v as R,w as x}from"../chunks/index.28275fd3.js";import{T as mt}from"../chunks/Tip.9f398c59.js";import{C as V}from"../chunks/CodeBlock.c3366071.js";import{H as ft,E as ve}from"../chunks/EditOnGithub.582011f0.js";import{e as re}from"../chunks/each.e59479a4.js";import{w as je}from"../chunks/index.268e315a.js";const dt=je({});function Re(d,e){const o=new URL(window.location.href),l=new URLSearchParams(o.search);l.set(d,e),o.search=l.toString(),history.replaceState(null,"",o.toString())}function xe(d){const e=new URL(window.location.href);return new URLSearchParams(e.search).get(d)}function pe(d,e,o){const l=d.slice();return l[7]=e[o],l}function fe(d){let e,o=d[7]+"",l,s,r,f,m;function c(){return d[6](d[7])}return{c(){e=U("div"),l=we(o),s=h(),this.h()},l(u){e=T(u,"DIV",{class:!0});var a=Mt(e);l=Ue(a,o),s=M(a),a.forEach(n),this.h()},h(){X(e,"class",r="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(d[2][d[0]]===d[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))},m(u,a){i(u,e,a),Dt(e,l),Dt(e,s),f||(m=Te(e,"click",c),f=!0)},p(u,a){d=u,a&2&&o!==(o=d[7]+"")&&Ce(l,o),a&7&&r!==(r="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd "+(d[2][d[0]]===d[7]?"border-gray-800 bg-black dark:bg-gray-700 text-white":"text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm"))&&X(e,"class",r)},d(u){u&&n(e),f=!1,m()}}}function ke(d){let e,o,l,s,r=re(d[1]),f=[];for(let u=0;u<r.length;u+=1)f[u]=fe(pe(d,r,u));const m=d[5].default,c=ce(m,d,d[4],null);return{c(){e=U("div");for(let u=0;u<f.length;u+=1)f[u].c();o=h(),l=U("div"),c&&c.c(),this.h()},l(u){e=T(u,"DIV",{class:!0});var a=Mt(e);for(let C=0;C<f.length;C+=1)f[C].l(a);a.forEach(n),o=M(u),l=T(u,"DIV",{class:!0});var $=Mt(l);c&&c.l($),$.forEach(n),this.h()},h(){X(e,"class","flex space-x-2 items-center my-1.5 mr-8 h-7 !pl-0 -mx-3 md:mx-0"),X(l,"class","language-select")},m(u,a){i(u,e,a);for(let $=0;$<f.length;$+=1)f[$]&&f[$].m(e,null);i(u,o,a),i(u,l,a),c&&c.m(l,null),s=!0},p(u,[a]){if(a&15){r=re(u[1]);let $;for($=0;$<r.length;$+=1){const C=pe(u,r,$);f[$]?f[$].p(C,a):(f[$]=fe(C),f[$].c(),f[$].m(e,null))}for(;$<f.length;$+=1)f[$].d(1);f.length=r.length}c&&c.p&&(!s||a&16)&&de(c,m,u,u[4],s?Me(m,u[4],a,null):he(u[4]),null)},i(u){s||(g(c,u),s=!0)},o(u){_(c,u),s=!1},d(u){u&&(n(e),n(o),n(l)),be(f,u),c&&c.d(u)}}}function Ie(d,e,o){let l;$e(d,dt,a=>o(2,l=a));let{$$slots:s={},$$scope:r}=e,{id:f}=e,{options:m}=e;Lt(dt,l[f]=m[0],l);function c(a){Lt(dt,l[f]=a,l),Re(f,a)}ye(()=>{const a=xe(f);a&&m.includes(a)&&Lt(dt,l[f]=a,l)});const u=a=>c(a);return d.$$set=a=>{"id"in a&&o(0,f=a.id),"options"in a&&o(1,m=a.options),"$$scope"in a&&o(4,r=a.$$scope)},[f,m,l,c,r,s,u]}class me extends St{constructor(e){super(),Xt(this,e,Ie,ke,Ht,{id:0,options:1})}}function ue(d){let e;const o=d[4].default,l=ce(o,d,d[3],null);return{c(){l&&l.c()},l(s){l&&l.l(s)},m(s,r){l&&l.m(s,r),e=!0},p(s,r){l&&l.p&&(!e||r&8)&&de(l,o,s,s[3],e?Me(o,s[3],r,null):he(s[3]),null)},i(s){e||(g(l,s),e=!0)},o(s){_(l,s),e=!1},d(s){l&&l.d(s)}}}function Ge(d){let e,o,l=d[2][d[0]]===d[1]&&ue(d);return{c(){l&&l.c(),e=oe()},l(s){l&&l.l(s),e=oe()},m(s,r){l&&l.m(s,r),i(s,e,r),o=!0},p(s,[r]){s[2][s[0]]===s[1]?l?(l.p(s,r),r&7&&g(l,1)):(l=ue(s),l.c(),g(l,1),l.m(e.parentNode,e)):l&&(ge(),_(l,1,1,()=>{l=null}),Je())},i(s){o||(g(l),o=!0)},o(s){_(l),o=!1},d(s){s&&n(e),l&&l.d(s)}}}function Be(d,e,o){let l;$e(d,dt,c=>o(2,l=c));let{$$slots:s={},$$scope:r}=e,{id:f}=e,{option:m}=e;return d.$$set=c=>{"id"in c&&o(0,f=c.id),"option"in c&&o(1,m=c.option),"$$scope"in c&&o(3,r=c.$$scope)},[f,m,l,r,s]}class ht extends St{constructor(e){super(),Xt(this,e,Be,Ge,Ht,{id:0,option:1})}}function Ae(d){let e,o='MacOS support is still a work in progress! Subscribe to this <a href="https://github.com/TimDettmers/bitsandbytes/issues/1020" rel="nofollow">issue</a> to get notified about discussions and to track the integration progress.';return{c(){e=U("p"),e.innerHTML=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-9rmqp2"&&(e.innerHTML=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function Ee(d){let e,o="bitsandbytes >= 0.39.1 no longer includes Kepler binaries in pip installations. This requires manual compilation, and you should follow the general steps and use <code>cuda11x_nomatmul_kepler</code> for Kepler-targeted compilation.";return{c(){e=U("p"),e.innerHTML=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-13h63kz"&&(e.innerHTML=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function Ve(d){let e,o="If you have multiple versions of CUDA installed or installed it in a non-standard location, please refer to CMake CUDA documentation for how to configure the CUDA compiler.";return{c(){e=U("p"),e.textContent=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-raeog1"&&(e.textContent=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function We(d){let e,o="To compile from source, you need CMake >= <strong>3.22.1</strong> and Python >= <strong>3.8</strong> installed. Make sure you have a compiler installed to compile C++ (gcc, make, headers, etc.). For example, to install a compiler and CMake on Ubuntu:",l,s,r,f,m='You should also install CUDA Toolkit by following the <a href="https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html" rel="nofollow">NVIDIA CUDA Installation Guide for Linux</a> guide from NVIDIA. The current expected CUDA Toolkit version is <strong>11.1+</strong> and it is recommended to install <strong>GCC >= 7.3</strong> and required to have at least <strong>GCC >= 6</strong>.',c,u,a="Refer to the following table if you’re using another CUDA Toolkit version.",$,C,b="<thead><tr><th>CUDA Toolkit</th> <th>GCC</th></tr></thead> <tbody><tr><td>>= 11.4.1</td> <td>>= 11</td></tr> <tr><td>>= 12.0</td> <td>>= 12</td></tr> <tr><td>>= 12.4</td> <td>>= 13</td></tr></tbody>",k,I,W="Now to install the bitsandbytes package from source, run the following commands:",E,w,B,A,P;return s=new V({props:{code:"YXB0LWdldCUyMGluc3RhbGwlMjAteSUyMGJ1aWxkLWVzc2VudGlhbCUyMGNtYWtl",highlighted:"apt-get install -y build-essential cmake",wrap:!1}}),w=new V({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZUaW1EZXR0bWVycyUyRmJpdHNhbmRieXRlcy5naXQlMjAlMjYlMjYlMjBjZCUyMGJpdHNhbmRieXRlcyUyRiUwQXBpcCUyMGluc3RhbGwlMjAtciUyMHJlcXVpcmVtZW50cy1kZXYudHh0JTBBY21ha2UlMjAtRENPTVBVVEVfQkFDS0VORCUzRGN1ZGElMjAtUyUyMC4lMEFtYWtlJTBBcGlwJTIwaW5zdGFsbCUyMC1lJTIwLiUyMCUyMCUyMCUyMyUyMCU2MC1lJTYwJTIwZm9yJTIwJTIyZWRpdGFibGUlMjIlMjBpbnN0YWxsJTJDJTIwd2hlbiUyMGRldmVsb3BpbmclMjBCTkIlMjAob3RoZXJ3aXNlJTIwbGVhdmUlMjB0aGF0JTIwb3V0KQ==",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/TimDettmers/bitsandbytes.git && <span class="hljs-built_in">cd</span> bitsandbytes/ | |
| pip install -r requirements-dev.txt | |
| cmake -DCOMPUTE_BACKEND=cuda -S . | |
| make | |
| pip install -e . <span class="hljs-comment"># \`-e\` for "editable" install, when developing BNB (otherwise leave that out)</span>`,wrap:!1}}),A=new mt({props:{warning:!1,$$slots:{default:[Ve]},$$scope:{ctx:d}}}),{c(){e=U("p"),e.innerHTML=o,l=h(),v(s.$$.fragment),r=h(),f=U("p"),f.innerHTML=m,c=h(),u=U("p"),u.textContent=a,$=h(),C=U("table"),C.innerHTML=b,k=h(),I=U("p"),I.textContent=W,E=h(),v(w.$$.fragment),B=h(),v(A.$$.fragment)},l(y){e=T(y,"P",{"data-svelte-h":!0}),J(e)!=="svelte-29yf67"&&(e.innerHTML=o),l=M(y),j(s.$$.fragment,y),r=M(y),f=T(y,"P",{"data-svelte-h":!0}),J(f)!=="svelte-gmjw5q"&&(f.innerHTML=m),c=M(y),u=T(y,"P",{"data-svelte-h":!0}),J(u)!=="svelte-1agbdv5"&&(u.textContent=a),$=M(y),C=T(y,"TABLE",{"data-svelte-h":!0}),J(C)!=="svelte-1nj1xe4"&&(C.innerHTML=b),k=M(y),I=T(y,"P",{"data-svelte-h":!0}),J(I)!=="svelte-1fitvy1"&&(I.textContent=W),E=M(y),j(w.$$.fragment,y),B=M(y),j(A.$$.fragment,y)},m(y,G){i(y,e,G),i(y,l,G),R(s,y,G),i(y,r,G),i(y,f,G),i(y,c,G),i(y,u,G),i(y,$,G),i(y,C,G),i(y,k,G),i(y,I,G),i(y,E,G),R(w,y,G),i(y,B,G),R(A,y,G),P=!0},p(y,G){const ut={};G&2&&(ut.$$scope={dirty:G,ctx:y}),A.$set(ut)},i(y){P||(g(s.$$.fragment,y),g(w.$$.fragment,y),g(A.$$.fragment,y),P=!0)},o(y){_(s.$$.fragment,y),_(w.$$.fragment,y),_(A.$$.fragment,y),P=!1},d(y){y&&(n(e),n(l),n(r),n(f),n(c),n(u),n($),n(C),n(k),n(I),n(E),n(B)),x(s,y),x(w,y),x(A,y)}}}function Ne(d){let e,o="Windows systems require Visual Studio with C++ support as well as an installation of the CUDA SDK.",l,s,r='To compile from source, you need CMake >= <strong>3.22.1</strong> and Python >= <strong>3.8</strong> installed. You should also install CUDA Toolkit by following the <a href="https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html" rel="nofollow">CUDA Installation Guide for Windows</a> guide from NVIDIA.',f,m,c="Refer to the following table if you’re using another CUDA Toolkit version.",u,a,$="<thead><tr><th>CUDA Toolkit</th> <th>MSVC</th></tr></thead> <tbody><tr><td>>= 11.6</td> <td>19.30+ (VS2022)</td></tr></tbody>",C,b,k,I,W='Big thanks to <a href="https://github.com/wkpark" rel="nofollow">wkpark</a>, <a href="https://github.com/Jamezo97" rel="nofollow">Jamezo97</a>, <a href="https://github.com/rickardp" rel="nofollow">rickardp</a>, <a href="https://github.com/akx" rel="nofollow">akx</a> for their amazing contributions to make bitsandbytes compatible with Windows.',E;return b=new V({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZUaW1EZXR0bWVycyUyRmJpdHNhbmRieXRlcy5naXQlMjAlMjYlMjYlMjBjZCUyMGJpdHNhbmRieXRlcyUyRiUwQXBpcCUyMGluc3RhbGwlMjAtciUyMHJlcXVpcmVtZW50cy1kZXYudHh0JTBBY21ha2UlMjAtRENPTVBVVEVfQkFDS0VORCUzRGN1ZGElMjAtUyUyMC4lMEFjbWFrZSUyMC0tYnVpbGQlMjAuJTIwLS1jb25maWclMjBSZWxlYXNlJTBBcGlwJTIwaW5zdGFsbCUyMC1lJTIwLiUyMCUyMCUyMCUyMyUyMCU2MC1lJTYwJTIwZm9yJTIwJTIyZWRpdGFibGUlMjIlMjBpbnN0YWxsJTJDJTIwd2hlbiUyMGRldmVsb3BpbmclMjBCTkIlMjAob3RoZXJ3aXNlJTIwbGVhdmUlMjB0aGF0JTIwb3V0KQ==",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/TimDettmers/bitsandbytes.git && <span class="hljs-built_in">cd</span> bitsandbytes/ | |
| pip install -r requirements-dev.txt | |
| cmake -DCOMPUTE_BACKEND=cuda -S . | |
| cmake --build . --config Release | |
| pip install -e . <span class="hljs-comment"># \`-e\` for "editable" install, when developing BNB (otherwise leave that out)</span>`,wrap:!1}}),{c(){e=U("p"),e.textContent=o,l=h(),s=U("p"),s.innerHTML=r,f=h(),m=U("p"),m.textContent=c,u=h(),a=U("table"),a.innerHTML=$,C=h(),v(b.$$.fragment),k=h(),I=U("p"),I.innerHTML=W},l(w){e=T(w,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1ngyk0s"&&(e.textContent=o),l=M(w),s=T(w,"P",{"data-svelte-h":!0}),J(s)!=="svelte-9zb6iz"&&(s.innerHTML=r),f=M(w),m=T(w,"P",{"data-svelte-h":!0}),J(m)!=="svelte-1agbdv5"&&(m.textContent=c),u=M(w),a=T(w,"TABLE",{"data-svelte-h":!0}),J(a)!=="svelte-1nj7txn"&&(a.innerHTML=$),C=M(w),j(b.$$.fragment,w),k=M(w),I=T(w,"P",{"data-svelte-h":!0}),J(I)!=="svelte-e0ivb"&&(I.innerHTML=W)},m(w,B){i(w,e,B),i(w,l,B),i(w,s,B),i(w,f,B),i(w,m,B),i(w,u,B),i(w,a,B),i(w,C,B),R(b,w,B),i(w,k,B),i(w,I,B),E=!0},p:Y,i(w){E||(g(b.$$.fragment,w),E=!0)},o(w){_(b.$$.fragment,w),E=!1},d(w){w&&(n(e),n(l),n(s),n(f),n(m),n(u),n(a),n(C),n(k),n(I)),x(b,w)}}}function Ze(d){let e,o,l,s;return e=new ht({props:{id:"source",option:"Linux",$$slots:{default:[We]},$$scope:{ctx:d}}}),l=new ht({props:{id:"source",option:"Windows",$$slots:{default:[Ne]},$$scope:{ctx:d}}}),{c(){v(e.$$.fragment),o=h(),v(l.$$.fragment)},l(r){j(e.$$.fragment,r),o=M(r),j(l.$$.fragment,r)},m(r,f){R(e,r,f),i(r,o,f),R(l,r,f),s=!0},p(r,f){const m={};f&2&&(m.$$scope={dirty:f,ctx:r}),e.$set(m);const c={};f&2&&(c.$$scope={dirty:f,ctx:r}),l.$set(c)},i(r){s||(g(e.$$.fragment,r),g(l.$$.fragment,r),s=!0)},o(r){_(e.$$.fragment,r),_(l.$$.fragment,r),s=!1},d(r){r&&n(o),x(e,r),x(l,r)}}}function Le(d){let e,o="It is recommended to add the following lines to the <code>.bashrc</code> file to make them permanent.";return{c(){e=U("p"),e.innerHTML=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-143buxs"&&(e.innerHTML=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function De(d){let e,o='If you already installed ROCm and PyTorch, skip Docker steps below and please check that the torch version matches your ROCm install. To install torch for a specific ROCm version, please refer to step 3 of wheels install in <a href="https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/3rd-party/pytorch-install.html#using-wheels-package" rel="nofollow">Installing PyTorch for ROCm</a> guide.';return{c(){e=U("p"),e.innerHTML=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-gpylt6"&&(e.innerHTML=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function He(d){let e,o,l,s="bitsandbytes is fully supported from ROCm 6.1 onwards (currently in alpha release).",r,f,m,c,u;return e=new ft({props:{title:"AMD GPU",local:"amd-gpu",headingTag:"h3"}}),f=new mt({props:{warning:!1,$$slots:{default:[De]},$$scope:{ctx:d}}}),c=new V({props:{code:"JTIzJTIwQ3JlYXRlJTIwYSUyMGRvY2tlciUyMGNvbnRhaW5lciUyMHdpdGglMjBsYXRlc3QlMjBweXRvcmNoLiUyMEl0JTIwY29tZXMlMjB3aXRoJTIwUk9DbSUyMGFuZCUyMHB5dG9yY2glMjBwcmVpbnN0YWxsZWQlMEFkb2NrZXIlMjBwdWxsJTIwcm9jbSUyRnB5dG9yY2glM0FsYXRlc3QlMEFkb2NrZXIlMjBydW4lMjAtaXQlMjAtLWRldmljZSUzRCUyRmRldiUyRmtmZCUyMC0tZGV2aWNlJTNEJTJGZGV2JTJGZHJpJTIwLS1ncm91cC1hZGQlMjB2aWRlbyUyMHJvY20lMkZweXRvcmNoJTNBbGF0ZXN0JTBBJTBBJTIzJTIwQ2xvbmUlMjBiaXRzYW5kYnl0ZXMlMjByZXBvJTJDJTIwUk9DbSUyMGJhY2tlbmQlMjBpcyUyMGN1cnJlbnRseSUyMGVuYWJsZWQlMjBvbiUyMG11bHRpLWJhY2tlbmQtcmVmYWN0b3IlMjBicmFuY2glMEFnaXQlMjBjbG9uZSUyMC0tZGVwdGglMjAxJTIwLWIlMjBtdWx0aS1iYWNrZW5kLXJlZmFjdG9yJTIwaHR0cHMlM0ElMkYlMkZnaXRodWIuY29tJTJGVGltRGV0dG1lcnMlMkZiaXRzYW5kYnl0ZXMuZ2l0JTIwJTI2JTI2JTIwY2QlMjBiaXRzYW5kYnl0ZXMlMkYlMEElMEElMjMlMjBJbnN0YWxsJTIwZGVwZW5kZW5jaWVzJTBBcGlwJTIwaW5zdGFsbCUyMC1yJTIwcmVxdWlyZW1lbnRzLWRldi50eHQlMEElMEElMjMlMjBDb21waWxlJTIwJTI2JTIwaW5zdGFsbCUwQWFwdC1nZXQlMjBpbnN0YWxsJTIwLXklMjBidWlsZC1lc3NlbnRpYWwlMjBjbWFrZSUyMCUyMCUyMyUyMGluc3RhbGwlMjBidWlsZCUyMHRvb2xzJTIwZGVwZW5kZW5jaWVzJTJDJTIwdW5sZXNzJTIwcHJlc2VudCUwQWNtYWtlJTIwLURDT01QVVRFX0JBQ0tFTkQlM0RoaXAlMjAtUyUyMC4lMjAlMjAlMjMlMjBVc2UlMjAtREJOQl9ST0NNX0FSQ0glM0QlMjJnZng5MGElM0JnZng5NDIlMjIlMjB0byUyMHRhcmdldCUyMHNwZWNpZmljJTIwZ3B1JTIwYXJjaCUwQW1ha2UlMEFwaXAlMjBpbnN0YWxsJTIwLWUlMjAuJTIwJTIwJTIwJTIzJTIwJTYwLWUlNjAlMjBmb3IlMjAlMjJlZGl0YWJsZSUyMiUyMGluc3RhbGwlMkMlMjB3aGVuJTIwZGV2ZWxvcGluZyUyMEJOQiUyMChvdGhlcndpc2UlMjBsZWF2ZSUyMHRoYXQlMjBvdXQp",highlighted:`<span class="hljs-comment"># Create a docker container with latest pytorch. It comes with ROCm and pytorch preinstalled</span> | |
| docker pull rocm/pytorch:latest | |
| docker run -it --device=/dev/kfd --device=/dev/dri --group-add video rocm/pytorch:latest | |
| <span class="hljs-comment"># Clone bitsandbytes repo, ROCm backend is currently enabled on multi-backend-refactor branch</span> | |
| git <span class="hljs-built_in">clone</span> --depth 1 -b multi-backend-refactor https://github.com/TimDettmers/bitsandbytes.git && <span class="hljs-built_in">cd</span> bitsandbytes/ | |
| <span class="hljs-comment"># Install dependencies</span> | |
| pip install -r requirements-dev.txt | |
| <span class="hljs-comment"># Compile & install</span> | |
| apt-get install -y build-essential cmake <span class="hljs-comment"># install build tools dependencies, unless present</span> | |
| cmake -DCOMPUTE_BACKEND=hip -S . <span class="hljs-comment"># Use -DBNB_ROCM_ARCH="gfx90a;gfx942" to target specific gpu arch</span> | |
| make | |
| pip install -e . <span class="hljs-comment"># \`-e\` for "editable" install, when developing BNB (otherwise leave that out)</span>`,wrap:!1}}),{c(){v(e.$$.fragment),o=h(),l=U("p"),l.textContent=s,r=h(),v(f.$$.fragment),m=h(),v(c.$$.fragment)},l(a){j(e.$$.fragment,a),o=M(a),l=T(a,"P",{"data-svelte-h":!0}),J(l)!=="svelte-1fw7vjl"&&(l.textContent=s),r=M(a),j(f.$$.fragment,a),m=M(a),j(c.$$.fragment,a)},m(a,$){R(e,a,$),i(a,o,$),i(a,l,$),i(a,r,$),R(f,a,$),i(a,m,$),R(c,a,$),u=!0},p(a,$){const C={};$&2&&(C.$$scope={dirty:$,ctx:a}),f.$set(C)},i(a){u||(g(e.$$.fragment,a),g(f.$$.fragment,a),g(c.$$.fragment,a),u=!0)},o(a){_(e.$$.fragment,a),_(f.$$.fragment,a),_(c.$$.fragment,a),u=!1},d(a){a&&(n(o),n(l),n(r),n(m)),x(e,a),x(f,a),x(c,a)}}}function Se(d){let e,o="Intel CPU backend only supports building from source; for now, please follow the instructions below.";return{c(){e=U("p"),e.textContent=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-11im0db"&&(e.textContent=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function Xe(d){let e,o,l,s,r,f="Similar to the CUDA case, you can compile bitsandbytes from source for Linux and Windows systems.",m,c,u='The below commands are for Linux. For installing on Windows, please adapt the below commands according to the same pattern as described <a href="#compile">the section above on compiling from source under the Windows tab</a>.',a,$,C;return e=new ft({props:{title:"Intel CPU",local:"intel-cpu",headingTag:"h3"}}),l=new mt({props:{warning:!1,$$slots:{default:[Se]},$$scope:{ctx:d}}}),$=new V({props:{code:"Z2l0JTIwY2xvbmUlMjAtLWRlcHRoJTIwMSUyMC1iJTIwbXVsdGktYmFja2VuZC1yZWZhY3RvciUyMGh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRlRpbURldHRtZXJzJTJGYml0c2FuZGJ5dGVzLmdpdCUyMCUyNiUyNiUyMGNkJTIwYml0c2FuZGJ5dGVzJTJGJTBBcGlwJTIwaW5zdGFsbCUyMGludGVsX2V4dGVuc2lvbl9mb3JfcHl0b3JjaCUwQXBpcCUyMGluc3RhbGwlMjAtciUyMHJlcXVpcmVtZW50cy1kZXYudHh0JTBBY21ha2UlMjAtRENPTVBVVEVfQkFDS0VORCUzRGNwdSUyMC1TJTIwLiUwQW1ha2UlMEFwaXAlMjBpbnN0YWxsJTIwLWUlMjAuJTIwJTIwJTIwJTIzJTIwJTYwLWUlNjAlMjBmb3IlMjAlMjJlZGl0YWJsZSUyMiUyMGluc3RhbGwlMkMlMjB3aGVuJTIwZGV2ZWxvcGluZyUyMEJOQiUyMChvdGhlcndpc2UlMjBsZWF2ZSUyMHRoYXQlMjBvdXQp",highlighted:`git clone --depth <span class="hljs-number">1</span> -b multi-backend-refactor https:<span class="hljs-regexp">//gi</span>thub.com<span class="hljs-regexp">/TimDettmers/</span>bitsandbytes.git && cd bitsandbytes/ | |
| pip install intel_extension_for_pytorch | |
| pip install -r requirements-dev.txt | |
| cmake -DCOMPUTE_BACKEND=cpu -S . | |
| make | |
| pip install -e . <span class="hljs-comment"># \`-e\` for "editable" install, when developing BNB (otherwise leave that out)</span>`,wrap:!1}}),{c(){v(e.$$.fragment),o=h(),v(l.$$.fragment),s=h(),r=U("p"),r.textContent=f,m=h(),c=U("p"),c.innerHTML=u,a=h(),v($.$$.fragment)},l(b){j(e.$$.fragment,b),o=M(b),j(l.$$.fragment,b),s=M(b),r=T(b,"P",{"data-svelte-h":!0}),J(r)!=="svelte-xkgho"&&(r.textContent=f),m=M(b),c=T(b,"P",{"data-svelte-h":!0}),J(c)!=="svelte-1k0m04z"&&(c.innerHTML=u),a=M(b),j($.$$.fragment,b)},m(b,k){R(e,b,k),i(b,o,k),R(l,b,k),i(b,s,k),i(b,r,k),i(b,m,k),i(b,c,k),i(b,a,k),R($,b,k),C=!0},p(b,k){const I={};k&2&&(I.$$scope={dirty:k,ctx:b}),l.$set(I)},i(b){C||(g(e.$$.fragment,b),g(l.$$.fragment,b),g($.$$.fragment,b),C=!0)},o(b){_(e.$$.fragment,b),_(l.$$.fragment,b),_($.$$.fragment,b),C=!1},d(b){b&&(n(o),n(s),n(r),n(m),n(c),n(a)),x(e,b),x(l,b),x($,b)}}}function Ye(d){let e,o="WIP";return{c(){e=U("p"),e.textContent=o},l(l){e=T(l,"P",{"data-svelte-h":!0}),J(e)!=="svelte-1kg89us"&&(e.textContent=o)},m(l,s){i(l,e,s)},p:Y,d(l){l&&n(e)}}}function Pe(d){let e,o,l,s,r,f;return e=new ht({props:{id:"backend",option:"AMD ROCm",$$slots:{default:[He]},$$scope:{ctx:d}}}),l=new ht({props:{id:"backend",option:"Intel CPU + GPU",$$slots:{default:[Xe]},$$scope:{ctx:d}}}),r=new ht({props:{id:"backend",option:"Apple Silicon (MPS)",$$slots:{default:[Ye]},$$scope:{ctx:d}}}),{c(){v(e.$$.fragment),o=h(),v(l.$$.fragment),s=h(),v(r.$$.fragment)},l(m){j(e.$$.fragment,m),o=M(m),j(l.$$.fragment,m),s=M(m),j(r.$$.fragment,m)},m(m,c){R(e,m,c),i(m,o,c),R(l,m,c),i(m,s,c),R(r,m,c),f=!0},p(m,c){const u={};c&2&&(u.$$scope={dirty:c,ctx:m}),e.$set(u);const a={};c&2&&(a.$$scope={dirty:c,ctx:m}),l.$set(a);const $={};c&2&&($.$$scope={dirty:c,ctx:m}),r.$set($)},i(m){f||(g(e.$$.fragment,m),g(l.$$.fragment,m),g(r.$$.fragment,m),f=!0)},o(m){_(e.$$.fragment,m),_(l.$$.fragment,m),_(r.$$.fragment,m),f=!1},d(m){m&&(n(o),n(s)),x(e,m),x(l,m),x(r,m)}}}function Qe(d){let e,o,l,s,r,f,m,c,u,a='bitsandbytes is only supported on CUDA GPUs for CUDA versions <strong>11.0 - 12.5</strong>. However, there’s a multi-backend effort under way which is currently in alpha release, check <a href="#multi-backend">the respective section below in case you’re interested to help us with early feedback</a>.',$,C,b="The latest version of bitsandbytes builds on:",k,I,W="<thead><tr><th>OS</th> <th>CUDA</th> <th>Compiler</th></tr></thead> <tbody><tr><td>Linux</td> <td>11.7 - 12.3</td> <td>GCC 11.4</td></tr> <tr><td></td> <td>12.4+</td> <td>GCC 13.2</td></tr> <tr><td>Windows</td> <td>11.7 - 12.4</td> <td>MSVC 19.38+ (VS2022 17.8.0+)</td></tr></tbody>",E,w,B,A,P="For Linux systems, make sure your hardware meets the following requirements to use bitsandbytes features.",y,G,ut="<thead><tr><th><strong>Feature</strong></th> <th><strong>Hardware requirement</strong></th></tr></thead> <tbody><tr><td>LLM.int8()</td> <td>NVIDIA Turing (RTX 20 series, T4) or Ampere (RTX 30 series, A4-A100) GPUs</td></tr> <tr><td>8-bit optimizers/quantization</td> <td>NVIDIA Kepler (GTX 780 or newer)</td></tr></tbody>",$t,N,yt,Q,Yt="To install from PyPI.",bt,F,wt,z,Ut,O,Pt="For Linux and Windows systems, you can compile bitsandbytes from source. Installing from source allows for more build options with different CMake configurations.",Tt,Z,Ct,q,gt,K,Qt="Some bitsandbytes features may need a newer CUDA version than the one currently supported by PyTorch binaries from Conda and pip. In this case, you should follow these instructions to load a precompiled bitsandbytes binary.",Jt,tt,Ft="<li>Determine the path of the CUDA version you want to use. Common paths include:</li>",_t,et,zt="<li><code>/usr/local/cuda</code></li> <li><code>/usr/local/cuda-XX.X</code> where <code>XX.X</code> is the CUDA version number</li>",vt,lt,Ot="Then locally install the CUDA version you need with this script from bitsandbytes:",jt,nt,Rt,L,qt="<li>Set the environment variables <code>BNB_CUDA_VERSION</code> and <code>LD_LIBRARY_PATH</code> by manually overriding the CUDA version installed by PyTorch.</li>",xt,D,kt,st,It,it,Kt="For example, to use a local install path:",Gt,at,Bt,H,te="<li>Now when you launch bitsandbytes with these environment variables, the PyTorch CUDA version is overridden by the new CUDA version (in this example, version 11.7) and a different bitsandbytes library is loaded.</li>",At,ot,Et,rt,ee="Please follow these steps to install bitsandbytes with device-specific backend support other than CUDA:",Vt,S,Wt,pt,Nt,ct,Zt;return r=new ft({props:{title:"Installation",local:"installation",headingTag:"h1"}}),m=new ft({props:{title:"CUDA",local:"cuda",headingTag:"h2"}}),w=new mt({props:{warning:!1,$$slots:{default:[Ae]},$$scope:{ctx:d}}}),N=new mt({props:{warning:!0,$$slots:{default:[Ee]},$$scope:{ctx:d}}}),F=new V({props:{code:"cGlwJTIwaW5zdGFsbCUyMGJpdHNhbmRieXRlcw==",highlighted:"pip install bitsandbytes",wrap:!1}}),z=new ft({props:{title:"Compile from source",local:"compile",headingTag:"h3"}}),Z=new me({props:{id:"source",options:["Linux","Windows"],$$slots:{default:[Ze]},$$scope:{ctx:d}}}),q=new ft({props:{title:"PyTorch CUDA versions",local:"pytorch-cuda-versions",headingTag:"h3"}}),nt=new V({props:{code:"d2dldCUyMGh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRlRpbURldHRtZXJzJTJGYml0c2FuZGJ5dGVzJTJGbWFpbiUyRmluc3RhbGxfY3VkYS5zaCUwQSUyMyUyMFN5bnRheCUyMGN1ZGFfaW5zdGFsbCUyMENVREFfVkVSU0lPTiUyMElOU1RBTExfUFJFRklYJTIwRVhQT1JUX1RPX0JBU0glMEElMjMlMjAlMjAlMjBDVURBX1ZFUlNJT04lMjBpbiUyMCU3QjExMCUyQyUyMDExMSUyQyUyMDExMiUyQyUyMDExMyUyQyUyMDExNCUyQyUyMDExNSUyQyUyMDExNiUyQyUyMDExNyUyQyUyMDExOCUyQyUyMDEyMCUyQyUyMDEyMSUyQyUyMDEyMiUyQyUyMDEyMyUyQyUyMDEyNCUyQyUyMDEyNSU3RCUwQSUyMyUyMCUyMCUyMEVYUE9SVF9UT19CQVNIJTIwaW4lMjAlN0IwJTJDJTIwMSU3RCUyMHdpdGglMjAwJTNERmFsc2UlMjBhbmQlMjAxJTNEVHJ1ZSUwQSUwQSUyMyUyMEZvciUyMGV4YW1wbGUlMkMlMjB0aGUlMjBmb2xsb3dpbmclMjBpbnN0YWxscyUyMENVREElMjAxMS43JTIwdG8lMjB+JTJGbG9jYWwlMkZjdWRhLTExLjclMjBhbmQlMjBleHBvcnRzJTIwdGhlJTIwcGF0aCUyMHRvJTIweW91ciUyMC5iYXNocmMlMEElMEFiYXNoJTIwaW5zdGFsbF9jdWRhLnNoJTIwMTE3JTIwfiUyRmxvY2FsJTIwMQ==",highlighted:`wget https://raw.githubusercontent.com/TimDettmers/bitsandbytes/main/install_cuda.sh | |
| <span class="hljs-comment"># Syntax cuda_install CUDA_VERSION INSTALL_PREFIX EXPORT_TO_BASH</span> | |
| <span class="hljs-comment"># CUDA_VERSION in {110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125}</span> | |
| <span class="hljs-comment"># EXPORT_TO_BASH in {0, 1} with 0=False and 1=True</span> | |
| <span class="hljs-comment"># For example, the following installs CUDA 11.7 to ~/local/cuda-11.7 and exports the path to your .bashrc</span> | |
| bash install_cuda.sh 117 ~/local 1`,wrap:!1}}),D=new mt({props:{warning:!1,$$slots:{default:[Le]},$$scope:{ctx:d}}}),st=new V({props:{code:"ZXhwb3J0JTIwQk5CX0NVREFfVkVSU0lPTiUzRCUzQ1ZFUlNJT04lM0UlMEFleHBvcnQlMjBMRF9MSUJSQVJZX1BBVEglM0QlMjRMRF9MSUJSQVJZX1BBVEglM0ElM0NQQVRIJTNF",highlighted:`<span class="hljs-built_in">export</span> BNB_CUDA_VERSION=<VERSION> | |
| <span class="hljs-built_in">export</span> LD_LIBRARY_PATH=<span class="hljs-variable">$LD_LIBRARY_PATH</span>:<PATH>`,wrap:!1}}),at=new V({props:{code:"ZXhwb3J0JTIwQk5CX0NVREFfVkVSU0lPTiUzRDExNyUwQWV4cG9ydCUyMExEX0xJQlJBUllfUEFUSCUzRCUyNExEX0xJQlJBUllfUEFUSCUzQSUyRmhvbWUlMkZZT1VSX1VTRVJOQU1FJTJGbG9jYWwlMkZjdWRhLTExLjc=",highlighted:`<span class="hljs-built_in">export</span> BNB_CUDA_VERSION=117 | |
| <span class="hljs-built_in">export</span> LD_LIBRARY_PATH=<span class="hljs-variable">$LD_LIBRARY_PATH</span>:/home/YOUR_USERNAME/local/cuda-11.7`,wrap:!1}}),ot=new ft({props:{title:"Multi-backend preview release compilation",local:"multi-backend",headingTag:"h2"}}),S=new me({props:{id:"backend",options:["AMD ROCm","Intel CPU + GPU","Apple Silicon (MPS)"],$$slots:{default:[Pe]},$$scope:{ctx:d}}}),pt=new ve({props:{source:"https://github.com/bitsandbytes-foundation/bitsandbytes/blob/main/docs/source/installation.mdx"}}),{c(){e=U("meta"),o=h(),l=U("p"),s=h(),v(r.$$.fragment),f=h(),v(m.$$.fragment),c=h(),u=U("p"),u.innerHTML=a,$=h(),C=U("p"),C.textContent=b,k=h(),I=U("table"),I.innerHTML=W,E=h(),v(w.$$.fragment),B=h(),A=U("p"),A.textContent=P,y=h(),G=U("table"),G.innerHTML=ut,$t=h(),v(N.$$.fragment),yt=h(),Q=U("p"),Q.textContent=Yt,bt=h(),v(F.$$.fragment),wt=h(),v(z.$$.fragment),Ut=h(),O=U("p"),O.textContent=Pt,Tt=h(),v(Z.$$.fragment),Ct=h(),v(q.$$.fragment),gt=h(),K=U("p"),K.textContent=Qt,Jt=h(),tt=U("ol"),tt.innerHTML=Ft,_t=h(),et=U("ul"),et.innerHTML=zt,vt=h(),lt=U("p"),lt.textContent=Ot,jt=h(),v(nt.$$.fragment),Rt=h(),L=U("ol"),L.innerHTML=qt,xt=h(),v(D.$$.fragment),kt=h(),v(st.$$.fragment),It=h(),it=U("p"),it.textContent=Kt,Gt=h(),v(at.$$.fragment),Bt=h(),H=U("ol"),H.innerHTML=te,At=h(),v(ot.$$.fragment),Et=h(),rt=U("p"),rt.textContent=ee,Vt=h(),v(S.$$.fragment),Wt=h(),v(pt.$$.fragment),Nt=h(),ct=U("p"),this.h()},l(t){const p=_e("svelte-u9bgzb",document.head);e=T(p,"META",{name:!0,content:!0}),p.forEach(n),o=M(t),l=T(t,"P",{}),Mt(l).forEach(n),s=M(t),j(r.$$.fragment,t),f=M(t),j(m.$$.fragment,t),c=M(t),u=T(t,"P",{"data-svelte-h":!0}),J(u)!=="svelte-7byvg1"&&(u.innerHTML=a),$=M(t),C=T(t,"P",{"data-svelte-h":!0}),J(C)!=="svelte-1dpd6j"&&(C.textContent=b),k=M(t),I=T(t,"TABLE",{"data-svelte-h":!0}),J(I)!=="svelte-jwkomo"&&(I.innerHTML=W),E=M(t),j(w.$$.fragment,t),B=M(t),A=T(t,"P",{"data-svelte-h":!0}),J(A)!=="svelte-1hx87c4"&&(A.textContent=P),y=M(t),G=T(t,"TABLE",{"data-svelte-h":!0}),J(G)!=="svelte-fkifbv"&&(G.innerHTML=ut),$t=M(t),j(N.$$.fragment,t),yt=M(t),Q=T(t,"P",{"data-svelte-h":!0}),J(Q)!=="svelte-16utcew"&&(Q.textContent=Yt),bt=M(t),j(F.$$.fragment,t),wt=M(t),j(z.$$.fragment,t),Ut=M(t),O=T(t,"P",{"data-svelte-h":!0}),J(O)!=="svelte-wtvn8j"&&(O.textContent=Pt),Tt=M(t),j(Z.$$.fragment,t),Ct=M(t),j(q.$$.fragment,t),gt=M(t),K=T(t,"P",{"data-svelte-h":!0}),J(K)!=="svelte-n0pdc4"&&(K.textContent=Qt),Jt=M(t),tt=T(t,"OL",{"data-svelte-h":!0}),J(tt)!=="svelte-w9mxyz"&&(tt.innerHTML=Ft),_t=M(t),et=T(t,"UL",{"data-svelte-h":!0}),J(et)!=="svelte-r36v8e"&&(et.innerHTML=zt),vt=M(t),lt=T(t,"P",{"data-svelte-h":!0}),J(lt)!=="svelte-1dhvzk8"&&(lt.textContent=Ot),jt=M(t),j(nt.$$.fragment,t),Rt=M(t),L=T(t,"OL",{start:!0,"data-svelte-h":!0}),J(L)!=="svelte-y8zpl2"&&(L.innerHTML=qt),xt=M(t),j(D.$$.fragment,t),kt=M(t),j(st.$$.fragment,t),It=M(t),it=T(t,"P",{"data-svelte-h":!0}),J(it)!=="svelte-wx07f3"&&(it.textContent=Kt),Gt=M(t),j(at.$$.fragment,t),Bt=M(t),H=T(t,"OL",{start:!0,"data-svelte-h":!0}),J(H)!=="svelte-lfqu8"&&(H.innerHTML=te),At=M(t),j(ot.$$.fragment,t),Et=M(t),rt=T(t,"P",{"data-svelte-h":!0}),J(rt)!=="svelte-y9jz2l"&&(rt.textContent=ee),Vt=M(t),j(S.$$.fragment,t),Wt=M(t),j(pt.$$.fragment,t),Nt=M(t),ct=T(t,"P",{}),Mt(ct).forEach(n),this.h()},h(){X(e,"name","hf:doc:metadata"),X(e,"content",Fe),X(L,"start","2"),X(H,"start","3")},m(t,p){Dt(document.head,e),i(t,o,p),i(t,l,p),i(t,s,p),R(r,t,p),i(t,f,p),R(m,t,p),i(t,c,p),i(t,u,p),i(t,$,p),i(t,C,p),i(t,k,p),i(t,I,p),i(t,E,p),R(w,t,p),i(t,B,p),i(t,A,p),i(t,y,p),i(t,G,p),i(t,$t,p),R(N,t,p),i(t,yt,p),i(t,Q,p),i(t,bt,p),R(F,t,p),i(t,wt,p),R(z,t,p),i(t,Ut,p),i(t,O,p),i(t,Tt,p),R(Z,t,p),i(t,Ct,p),R(q,t,p),i(t,gt,p),i(t,K,p),i(t,Jt,p),i(t,tt,p),i(t,_t,p),i(t,et,p),i(t,vt,p),i(t,lt,p),i(t,jt,p),R(nt,t,p),i(t,Rt,p),i(t,L,p),i(t,xt,p),R(D,t,p),i(t,kt,p),R(st,t,p),i(t,It,p),i(t,it,p),i(t,Gt,p),R(at,t,p),i(t,Bt,p),i(t,H,p),i(t,At,p),R(ot,t,p),i(t,Et,p),i(t,rt,p),i(t,Vt,p),R(S,t,p),i(t,Wt,p),R(pt,t,p),i(t,Nt,p),i(t,ct,p),Zt=!0},p(t,[p]){const le={};p&2&&(le.$$scope={dirty:p,ctx:t}),w.$set(le);const ne={};p&2&&(ne.$$scope={dirty:p,ctx:t}),N.$set(ne);const se={};p&2&&(se.$$scope={dirty:p,ctx:t}),Z.$set(se);const ie={};p&2&&(ie.$$scope={dirty:p,ctx:t}),D.$set(ie);const ae={};p&2&&(ae.$$scope={dirty:p,ctx:t}),S.$set(ae)},i(t){Zt||(g(r.$$.fragment,t),g(m.$$.fragment,t),g(w.$$.fragment,t),g(N.$$.fragment,t),g(F.$$.fragment,t),g(z.$$.fragment,t),g(Z.$$.fragment,t),g(q.$$.fragment,t),g(nt.$$.fragment,t),g(D.$$.fragment,t),g(st.$$.fragment,t),g(at.$$.fragment,t),g(ot.$$.fragment,t),g(S.$$.fragment,t),g(pt.$$.fragment,t),Zt=!0)},o(t){_(r.$$.fragment,t),_(m.$$.fragment,t),_(w.$$.fragment,t),_(N.$$.fragment,t),_(F.$$.fragment,t),_(z.$$.fragment,t),_(Z.$$.fragment,t),_(q.$$.fragment,t),_(nt.$$.fragment,t),_(D.$$.fragment,t),_(st.$$.fragment,t),_(at.$$.fragment,t),_(ot.$$.fragment,t),_(S.$$.fragment,t),_(pt.$$.fragment,t),Zt=!1},d(t){t&&(n(o),n(l),n(s),n(f),n(c),n(u),n($),n(C),n(k),n(I),n(E),n(B),n(A),n(y),n(G),n($t),n(yt),n(Q),n(bt),n(wt),n(Ut),n(O),n(Tt),n(Ct),n(gt),n(K),n(Jt),n(tt),n(_t),n(et),n(vt),n(lt),n(jt),n(Rt),n(L),n(xt),n(kt),n(It),n(it),n(Gt),n(Bt),n(H),n(At),n(Et),n(rt),n(Vt),n(Wt),n(Nt),n(ct)),n(e),x(r,t),x(m,t),x(w,t),x(N,t),x(F,t),x(z,t),x(Z,t),x(q,t),x(nt,t),x(D,t),x(st,t),x(at,t),x(ot,t),x(S,t),x(pt,t)}}}const Fe='{"title":"Installation","local":"installation","sections":[{"title":"CUDA","local":"cuda","sections":[{"title":"Compile from source","local":"compile","sections":[],"depth":3},{"title":"PyTorch CUDA versions","local":"pytorch-cuda-versions","sections":[],"depth":3}],"depth":2},{"title":"Multi-backend preview release compilation","local":"multi-backend","sections":[{"title":"AMD GPU","local":"amd-gpu","sections":[],"depth":3},{"title":"Intel CPU","local":"intel-cpu","sections":[],"depth":3}],"depth":2}],"depth":1}';function ze(d){return ye(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class sl extends St{constructor(e){super(),Xt(this,e,ze,Qe,Ht,{})}}export{sl as component}; | |
Xet Storage Details
- Size:
- 31.7 kB
- Xet hash:
- 8a55e2d95f7e99db8228de29971d5e59268cefd1a0954c2a85a015c60cd2f681
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.