Buckets:

rtrm's picture
download
raw
15.7 kB
import{s as at,n as pt,o as ut}from"../chunks/scheduler.5c93273d.js";import{S as ft,i as mt,g as a,s as n,r as f,m as Mt,A as rt,h as p,f as l,c as s,j as st,u as m,x as u,n as yt,k as c,y as ot,a as i,v as M,d as r,t as y,w as o}from"../chunks/index.e43dd92b.js";import{C as He}from"../chunks/CodeBlock.6896320e.js";import{H as k,E as ct}from"../chunks/getInferenceSnippets.7d64e4c6.js";function Tt(De){let T,O,q,ee,v,te,Z,Xe='<a href="https://github.com/xdit-project/xDiT" rel="nofollow">xDiT</a> 是一个推理引擎,专为大规模并行部署扩散变换器(DiTs)而设计。xDiT 提供了一套用于扩散模型的高效并行方法,以及 GPU 内核加速。',le,_,Se='xDiT 支持四种并行方法,包括<a href="https://huggingface.co/papers/2405.07719" rel="nofollow">统一序列并行</a>、<a href="https://huggingface.co/papers/2405.14430" rel="nofollow">PipeFusion</a>、CFG 并行和数据并行。xDiT 中的这四种并行方法可以以混合方式配置,优化通信模式以最适合底层网络硬件。',ie,b,Fe="与并行化正交的优化侧重于加速单个 GPU 的性能。除了利用知名的注意力优化库外,我们还利用编译加速技术,如 torch.compile 和 onediff。",ne,I,Qe="xDiT 的概述如下所示。",se,U,We='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/methods/xdit_overview.png"/>',ae,j,pe,$,Le="以下是一个使用 xDiT 加速 Diffusers 模型推理的示例。",ue,V,fe,G,Re="如您所见,我们只需要使用 xDiT 中的 xFuserArgs 来获取配置参数,并将这些参数与来自 Diffusers 库的管道对象一起传递给 xDiTParallel,即可完成对 Diffusers 中特定管道的并行化。",me,B,Ae=`xDiT 运行时参数可以在命令行中使用 <code>-h</code> 查看,您可以参考此<a href="https://github.com/xdit-project/xDiT?tab=readme-ov-file#2-usage" rel="nofollow">使用</a>示例以获取更多详细信息。
ils。`,Me,H,Ne="xDiT 需要使用 torchrun 启动,以支持其多节点、多 GPU 并行能力。例如,以下命令可用于 8-GPU 并行推理:",re,D,ye,X,oe,S,Ee='在 xDiT 中支持 Diffusers 模型的一个子集,例如 Flux.1、Stable Diffusion 3 等。最新支持的模型可以在<a href="https://github.com/xdit-project/xDiT?tab=readme-ov-file#-supported-dits" rel="nofollow">这里</a>找到。',ce,F,Te,Q,Pe="我们在不同机器上测试了各种模型,以下是一些基准数据。",Ue,W,de,d,ze='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/flux/Flux-2k-L40.png"/>',we,w,Ye='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/flux/Flux-2K-A100.png"/>',Ce,L,Je,C,ke='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/sd3/L40-SD3.png"/>',ge,J,qe='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/sd3/A100-SD3.png"/>',xe,R,he,g,Ke='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/hunuyuandit/L40-HunyuanDiT.png"/>',ve,x,Oe='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/hunuyuandit/V100-HunyuanDiT.png"/>',Ze,h,et='<img src="https://huggingface.co/datasets/xDiT/documentation-images/resolve/main/performance/hunuyuandit/T4-HunyuanDiT.png"/>',_e,A,tt='更详细的性能指标可以在我们的 <a href="https://github.com/xdit-project/xDiT?tab=readme-ov-file#perf" rel="nofollow">GitHub 页面</a> 上找到。',be,N,Ie,E,lt='<a href="https://github.com/xdit-project/xDiT" rel="nofollow">xDiT-project</a>',je,P,it='<a href="https://huggingface.co/papers/2405.07719" rel="nofollow">USP: A Unified Sequence Parallelism Approach for Long Context Generative AI</a>',$e,z,nt='<a href="https://huggingface.co/papers/2405.14430" rel="nofollow">PipeFusion: Displaced Patch Pipeline Parallelism for Inference of Diffusion Transformer Models</a>',Ve,Y,Ge,K,Be;return v=new k({props:{title:"xDiT",local:"xdit",headingTag:"h1"}}),j=new He({props:{code:"cGlwJTIwaW5zdGFsbCUyMHhmdXNlcg==",highlighted:"pip install xfuser",wrap:!1}}),V=new He({props:{code:"JTIwaW1wb3J0JTIwdG9yY2glMEElMjBmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwU3RhYmxlRGlmZnVzaW9uM1BpcGVsaW5lJTBBJTBBJTIwZnJvbSUyMHhmdXNlciUyMGltcG9ydCUyMHhGdXNlckFyZ3MlMkMlMjB4RGlUUGFyYWxsZWwlMEElMjBmcm9tJTIweGZ1c2VyLmNvbmZpZyUyMGltcG9ydCUyMEZsZXhpYmxlQXJndW1lbnRQYXJzZXIlMEElMjBmcm9tJTIweGZ1c2VyLmNvcmUuZGlzdHJpYnV0ZWQlMjBpbXBvcnQlMjBnZXRfd29ybGRfZ3JvdXAlMEElMEElMjBkZWYlMjBtYWluKCklM0ElMEElMkIlMjAlMjAlMjAlMjBwYXJzZXIlMjAlM0QlMjBGbGV4aWJsZUFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uJTNEJTIyeEZ1c2VyJTIwQXJndW1lbnRzJTIyKSUwQSUyQiUyMCUyMCUyMCUyMGFyZ3MlMjAlM0QlMjB4RnVzZXJBcmdzLmFkZF9jbGlfYXJncyhwYXJzZXIpLnBhcnNlX2FyZ3MoKSUwQSUyQiUyMCUyMCUyMCUyMGVuZ2luZV9hcmdzJTIwJTNEJTIweEZ1c2VyQXJncy5mcm9tX2NsaV9hcmdzKGFyZ3MpJTBBJTJCJTIwJTIwJTIwJTIwZW5naW5lX2NvbmZpZyUyQyUyMGlucHV0X2NvbmZpZyUyMCUzRCUyMGVuZ2luZV9hcmdzLmNyZWF0ZV9jb25maWcoKSUwQSUwQSUyMCUyMCUyMCUyMCUyMGxvY2FsX3JhbmslMjAlM0QlMjBnZXRfd29ybGRfZ3JvdXAoKS5sb2NhbF9yYW5rJTBBJTIwJTIwJTIwJTIwJTIwcGlwZSUyMCUzRCUyMFN0YWJsZURpZmZ1c2lvbjNQaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcHJldHJhaW5lZF9tb2RlbF9uYW1lX29yX3BhdGglM0RlbmdpbmVfY29uZmlnLm1vZGVsX2NvbmZpZy5tb2RlbCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUwQSUyMCUyMCUyMCUyMCUyMCkudG8oZiUyMmN1ZGElM0ElN0Jsb2NhbF9yYW5rJTdEJTIyKSUwQSUyMCUyMCUyMCUyMCUwQSUyMyUyMCVFNSU5QyVBOCVFOCVCRiU5OSVFOSU4NyU4QyVFNSVBRiVCOSVFNyVBRSVBMSVFOSU4MSU5MyVFOCVCRiU5QiVFOCVBMSU4QyVFNCVCQiVCQiVFNCVCRCU5NSVFNiU5MyU4RCVFNCVCRCU5QyUwQSUwQSUyQiUyMCUyMCUyMCUyMHBpcGUlMjAlM0QlMjB4RGlUUGFyYWxsZWwocGlwZSUyQyUyMGVuZ2luZV9jb25maWclMkMlMjBpbnB1dF9jb25maWcpJTBBJTBBJTIwJTIwJTIwJTIwJTIwcGlwZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBoZWlnaHQlM0RpbnB1dF9jb25maWcuaGVpZ2h0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2lkdGglM0RpbnB1dF9jb25maWcuaGVpZ2h0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcHJvbXB0JTNEaW5wdXRfY29uZmlnLnByb21wdCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0RpbnB1dF9jb25maWcubnVtX2luZmVyZW5jZV9zdGVwcyUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG91dHB1dF90eXBlJTNEaW5wdXRfY29uZmlnLm91dHB1dF90eXBlJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2VuZXJhdG9yJTNEdG9yY2guR2VuZXJhdG9yKGRldmljZSUzRCUyMmN1ZGElMjIpLm1hbnVhbF9zZWVkKGlucHV0X2NvbmZpZy5zZWVkKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCklMEElMEElMkIlMjAlMjAlMjAlMjBpZiUyMGlucHV0X2NvbmZpZy5vdXRwdXRfdHlwZSUyMCUzRCUzRCUyMCUyMnBpbCUyMiUzQSUwQSUyQiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBpcGUuc2F2ZSglMjJyZXN1bHRzJTIyJTJDJTIwJTIyc3RhYmxlX2RpZmZ1c2lvbl8zJTIyKSUwQSUwQWlmJTIwX19uYW1lX18lMjAlM0QlM0QlMjAlMjJfX21haW5fXyUyMiUzQSUwQSUyMCUyMCUyMCUyMG1haW4oKQ==",highlighted:` import torch
from diffusers import StableDiffusion3Pipeline
from xfuser import xFuserArgs, xDiTParallel
from xfuser.config import FlexibleArgumentParser
from xfuser.core.distributed import get_world_group
def main():
<span class="hljs-addition">+ parser = FlexibleArgumentParser(description=&quot;xFuser Arguments&quot;)</span>
<span class="hljs-addition">+ args = xFuserArgs.add_cli_args(parser).parse_args()</span>
<span class="hljs-addition">+ engine_args = xFuserArgs.from_cli_args(args)</span>
<span class="hljs-addition">+ engine_config, input_config = engine_args.create_config()</span>
local_rank = get_world_group().local_rank
pipe = StableDiffusion3Pipeline.from_pretrained(
pretrained_model_name_or_path=engine_config.model_config.model,
torch_dtype=torch.float16,
).to(f&quot;cuda:{local_rank}&quot;)
# 在这里对管道进行任何操作
<span class="hljs-addition">+ pipe = xDiTParallel(pipe, engine_config, input_config)</span>
pipe(
height=input_config.height,
width=input_config.height,
prompt=input_config.prompt,
num_inference_steps=input_config.num_inference_steps,
output_type=input_config.output_type,
generator=torch.Generator(device=&quot;cuda&quot;).manual_seed(input_config.seed),
)
<span class="hljs-addition">+ if input_config.output_type == &quot;pil&quot;:</span>
<span class="hljs-addition">+ pipe.save(&quot;results&quot;, &quot;stable_diffusion_3&quot;)</span>
if __name__ == &quot;__main__&quot;:
main()`,wrap:!1}}),D=new He({props:{code:"dG9yY2hydW4lMjAtLW5wcm9jX3Blcl9ub2RlJTNEOCUyMC4lMkZpbmZlcmVuY2UucHklMjAtLW1vZGVsJTIwbW9kZWxzJTJGRkxVWC4xLWRldiUyMC0tZGF0YV9wYXJhbGxlbF9kZWdyZWUlMjAyJTIwLS11bHlzc2VzX2RlZ3JlZSUyMDIlMjAtLXJpbmdfZGVncmVlJTIwMiUyMC0tcHJvbXB0JTIwJTIyQSUyMHNub3d5JTIwbW91bnRhaW4lMjIlMjAlMjJBJTIwc21hbGwlMjBkb2clMjIlMjAtLW51bV9pbmZlcmVuY2Vfc3RlcHMlMjA1MA==",highlighted:'torchrun --nproc_per_node=8 ./inference.py --model models/FLUX.1-dev --data_parallel_degree 2 --ulysses_degree 2 --ring_degree 2 --prompt <span class="hljs-string">&quot;A snowy mountain&quot;</span> <span class="hljs-string">&quot;A small dog&quot;</span> --num_inference_steps 50',wrap:!1}}),X=new k({props:{title:"支持的模型",local:"支持的模型",headingTag:"h2"}}),F=new k({props:{title:"基准测试",local:"基准测试",headingTag:"h2"}}),W=new k({props:{title:"Flux.1-schnell",local:"flux1-schnell",headingTag:"h3"}}),L=new k({props:{title:"Stable Diffusion 3",local:"stable-diffusion-3",headingTag:"h3"}}),R=new k({props:{title:"HunyuanDiT",local:"hunyuandit",headingTag:"h3"}}),N=new k({props:{title:"参考文献",local:"参考文献",headingTag:"h2"}}),Y=new ct({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/optimization/xdit.md"}}),{c(){T=a("meta"),O=n(),q=a("p"),ee=n(),f(v.$$.fragment),te=n(),Z=a("p"),Z.innerHTML=Xe,le=n(),_=a("p"),_.innerHTML=Se,ie=n(),b=a("p"),b.textContent=Fe,ne=n(),I=a("p"),I.textContent=Qe,se=n(),U=a("div"),U.innerHTML=We,ae=Mt(`
您可以使用以下命令安装 xDiT:
`),f(j.$$.fragment),pe=n(),$=a("p"),$.textContent=Le,ue=n(),f(V.$$.fragment),fe=n(),G=a("p"),G.textContent=Re,me=n(),B=a("p"),B.innerHTML=Ae,Me=n(),H=a("p"),H.textContent=Ne,re=n(),f(D.$$.fragment),ye=n(),f(X.$$.fragment),oe=n(),S=a("p"),S.innerHTML=Ee,ce=n(),f(F.$$.fragment),Te=n(),Q=a("p"),Q.textContent=Pe,Ue=n(),f(W.$$.fragment),de=n(),d=a("div"),d.innerHTML=ze,we=n(),w=a("div"),w.innerHTML=Ye,Ce=n(),f(L.$$.fragment),Je=n(),C=a("div"),C.innerHTML=ke,ge=n(),J=a("div"),J.innerHTML=qe,xe=n(),f(R.$$.fragment),he=n(),g=a("div"),g.innerHTML=Ke,ve=n(),x=a("div"),x.innerHTML=Oe,Ze=n(),h=a("div"),h.innerHTML=et,_e=n(),A=a("p"),A.innerHTML=tt,be=n(),f(N.$$.fragment),Ie=n(),E=a("p"),E.innerHTML=lt,je=n(),P=a("p"),P.innerHTML=it,$e=n(),z=a("p"),z.innerHTML=nt,Ve=n(),f(Y.$$.fragment),Ge=n(),K=a("p"),this.h()},l(e){const t=rt("svelte-u9bgzb",document.head);T=p(t,"META",{name:!0,content:!0}),t.forEach(l),O=s(e),q=p(e,"P",{}),st(q).forEach(l),ee=s(e),m(v.$$.fragment,e),te=s(e),Z=p(e,"P",{"data-svelte-h":!0}),u(Z)!=="svelte-1svyjti"&&(Z.innerHTML=Xe),le=s(e),_=p(e,"P",{"data-svelte-h":!0}),u(_)!=="svelte-9m2vqr"&&(_.innerHTML=Se),ie=s(e),b=p(e,"P",{"data-svelte-h":!0}),u(b)!=="svelte-13qghg"&&(b.textContent=Fe),ne=s(e),I=p(e,"P",{"data-svelte-h":!0}),u(I)!=="svelte-c43u88"&&(I.textContent=Qe),se=s(e),U=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(U)!=="svelte-1jymm8y"&&(U.innerHTML=We),ae=yt(e,`
您可以使用以下命令安装 xDiT:
`),m(j.$$.fragment,e),pe=s(e),$=p(e,"P",{"data-svelte-h":!0}),u($)!=="svelte-1u9bmj0"&&($.textContent=Le),ue=s(e),m(V.$$.fragment,e),fe=s(e),G=p(e,"P",{"data-svelte-h":!0}),u(G)!=="svelte-1y848ni"&&(G.textContent=Re),me=s(e),B=p(e,"P",{"data-svelte-h":!0}),u(B)!=="svelte-1sp2tgw"&&(B.innerHTML=Ae),Me=s(e),H=p(e,"P",{"data-svelte-h":!0}),u(H)!=="svelte-1few9ai"&&(H.textContent=Ne),re=s(e),m(D.$$.fragment,e),ye=s(e),m(X.$$.fragment,e),oe=s(e),S=p(e,"P",{"data-svelte-h":!0}),u(S)!=="svelte-meap7h"&&(S.innerHTML=Ee),ce=s(e),m(F.$$.fragment,e),Te=s(e),Q=p(e,"P",{"data-svelte-h":!0}),u(Q)!=="svelte-ys34n"&&(Q.textContent=Pe),Ue=s(e),m(W.$$.fragment,e),de=s(e),d=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(d)!=="svelte-ysqez7"&&(d.innerHTML=ze),we=s(e),w=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(w)!=="svelte-195epjt"&&(w.innerHTML=Ye),Ce=s(e),m(L.$$.fragment,e),Je=s(e),C=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(C)!=="svelte-6afexp"&&(C.innerHTML=ke),ge=s(e),J=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(J)!=="svelte-1ju6xid"&&(J.innerHTML=qe),xe=s(e),m(R.$$.fragment,e),he=s(e),g=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(g)!=="svelte-1wq76oc"&&(g.innerHTML=Ke),ve=s(e),x=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(x)!=="svelte-c4plsv"&&(x.innerHTML=Oe),Ze=s(e),h=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(h)!=="svelte-srcu1c"&&(h.innerHTML=et),_e=s(e),A=p(e,"P",{"data-svelte-h":!0}),u(A)!=="svelte-1120ksj"&&(A.innerHTML=tt),be=s(e),m(N.$$.fragment,e),Ie=s(e),E=p(e,"P",{"data-svelte-h":!0}),u(E)!=="svelte-1tn43qd"&&(E.innerHTML=lt),je=s(e),P=p(e,"P",{"data-svelte-h":!0}),u(P)!=="svelte-5nrl9w"&&(P.innerHTML=it),$e=s(e),z=p(e,"P",{"data-svelte-h":!0}),u(z)!=="svelte-fllf4"&&(z.innerHTML=nt),Ve=s(e),m(Y.$$.fragment,e),Ge=s(e),K=p(e,"P",{}),st(K).forEach(l),this.h()},h(){c(T,"name","hf:doc:metadata"),c(T,"content",Ut),c(U,"class","flex justify-center"),c(d,"class","flex justify-center"),c(w,"class","flex justify-center"),c(C,"class","flex justify-center"),c(J,"class","flex justify-center"),c(g,"class","flex justify-center"),c(x,"class","flex justify-center"),c(h,"class","flex justify-center")},m(e,t){ot(document.head,T),i(e,O,t),i(e,q,t),i(e,ee,t),M(v,e,t),i(e,te,t),i(e,Z,t),i(e,le,t),i(e,_,t),i(e,ie,t),i(e,b,t),i(e,ne,t),i(e,I,t),i(e,se,t),i(e,U,t),i(e,ae,t),M(j,e,t),i(e,pe,t),i(e,$,t),i(e,ue,t),M(V,e,t),i(e,fe,t),i(e,G,t),i(e,me,t),i(e,B,t),i(e,Me,t),i(e,H,t),i(e,re,t),M(D,e,t),i(e,ye,t),M(X,e,t),i(e,oe,t),i(e,S,t),i(e,ce,t),M(F,e,t),i(e,Te,t),i(e,Q,t),i(e,Ue,t),M(W,e,t),i(e,de,t),i(e,d,t),i(e,we,t),i(e,w,t),i(e,Ce,t),M(L,e,t),i(e,Je,t),i(e,C,t),i(e,ge,t),i(e,J,t),i(e,xe,t),M(R,e,t),i(e,he,t),i(e,g,t),i(e,ve,t),i(e,x,t),i(e,Ze,t),i(e,h,t),i(e,_e,t),i(e,A,t),i(e,be,t),M(N,e,t),i(e,Ie,t),i(e,E,t),i(e,je,t),i(e,P,t),i(e,$e,t),i(e,z,t),i(e,Ve,t),M(Y,e,t),i(e,Ge,t),i(e,K,t),Be=!0},p:pt,i(e){Be||(r(v.$$.fragment,e),r(j.$$.fragment,e),r(V.$$.fragment,e),r(D.$$.fragment,e),r(X.$$.fragment,e),r(F.$$.fragment,e),r(W.$$.fragment,e),r(L.$$.fragment,e),r(R.$$.fragment,e),r(N.$$.fragment,e),r(Y.$$.fragment,e),Be=!0)},o(e){y(v.$$.fragment,e),y(j.$$.fragment,e),y(V.$$.fragment,e),y(D.$$.fragment,e),y(X.$$.fragment,e),y(F.$$.fragment,e),y(W.$$.fragment,e),y(L.$$.fragment,e),y(R.$$.fragment,e),y(N.$$.fragment,e),y(Y.$$.fragment,e),Be=!1},d(e){e&&(l(O),l(q),l(ee),l(te),l(Z),l(le),l(_),l(ie),l(b),l(ne),l(I),l(se),l(U),l(ae),l(pe),l($),l(ue),l(fe),l(G),l(me),l(B),l(Me),l(H),l(re),l(ye),l(oe),l(S),l(ce),l(Te),l(Q),l(Ue),l(de),l(d),l(we),l(w),l(Ce),l(Je),l(C),l(ge),l(J),l(xe),l(he),l(g),l(ve),l(x),l(Ze),l(h),l(_e),l(A),l(be),l(Ie),l(E),l(je),l(P),l($e),l(z),l(Ve),l(Ge),l(K)),l(T),o(v,e),o(j,e),o(V,e),o(D,e),o(X,e),o(F,e),o(W,e),o(L,e),o(R,e),o(N,e),o(Y,e)}}}const Ut='{"title":"xDiT","local":"xdit","sections":[{"title":"支持的模型","local":"支持的模型","sections":[],"depth":2},{"title":"基准测试","local":"基准测试","sections":[{"title":"Flux.1-schnell","local":"flux1-schnell","sections":[],"depth":3},{"title":"Stable Diffusion 3","local":"stable-diffusion-3","sections":[],"depth":3},{"title":"HunyuanDiT","local":"hunyuandit","sections":[],"depth":3}],"depth":2},{"title":"参考文献","local":"参考文献","sections":[],"depth":2}],"depth":1}';function dt(De){return ut(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class xt extends ft{constructor(T){super(),mt(this,T,dt,Tt,at,{})}}export{xt as component};

Xet Storage Details

Size:
15.7 kB
·
Xet hash:
d0ef601f0fbb4633629d9ee2573a7b1ef3053585e6b8f93c456c1839bc37fa8b

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