Buckets:
| import{s as _e,n as Ne,o as Ve}from"../chunks/scheduler.c38028ba.js";import{S as Re,i as xe,g as o,s,r as p,A as Qe,h as y,f as t,c as n,j as ve,u as M,x as w,k as ke,y as Ee,a,v as i,d as c,t as r,w as m}from"../chunks/index.6df1961f.js";import{C as J}from"../chunks/CodeBlock.85c468cd.js";import{H as F,E as Fe}from"../chunks/EditOnGithub.fa45e999.js";function He(he){let j,S,H,K,d,L,T,ue='مع تزايد حجم النماذج اللغوية، برز التوازي كأحد الاستراتيجيات لتدريب نماذج أكبر على أجهزة محدودة وتسريع عملية التدريب بمقدار كبير. أنشأنا في Hugging Face، قمنا بإنشاء مكتبة <a href="https://huggingface.co/docs/accelerate" rel="nofollow">Accelerate</a> لمساعدة المستخدمين على تدريب أي نموذج من Transformers بسهولة على أي نوع من الإعدادات الموزعة، سواء كان ذلك على عدة وحدات معالجة رسومات (GPUs) على جهاز واحد أو على عدة وحدات معالجة رسومات موزعة على عدة أجهزة. في هذا الدليل، تعلم كيفية تخصيص حلقة تدريب PyTorch الأصلية لتمكين التدريب في بيئة موزعة.',P,U,q,f,Ce="ابدأ بتثبيت 🤗 Accelerate:",D,b,O,$,Ie="ثم قم باستيراد وإنشاء كائن <code>Accelerator</code>. سيقوم <code>Accelerator</code> تلقائيًا باكتشاف نوع الإعداد الموزع الخاص بك وتهيئة جميع المكونات اللازمة للتدريب. لن تحتاج إلى وضع نموذجك على جهاز بشكل معين.",ee,h,le,u,te,C,Be="الخطوة التالية هي تمرير جميع كائنات التدريب ذات الصلة إلى دالة الإعداد <code>prepare</code>. ويشمل ذلك DataLoaders للتدريب والتقييم، ونموذجًا ومُحَسِّنً المعاملات (optimizer):",ae,I,se,B,ne,Z,Ze="الإضافة الأخيرة هي استبدال الدالة المعتادة <code>loss.backward()</code> في حلقة التدريب الخاصة بك بدالة <code>backward</code> في 🤗 Accelerate:",pe,g,Me,A,ge="كما يمكنك أن ترى في الكود التالي، فأنت بحاجة فقط إلى إضافة أربعة أسطر من الكود إلى حلقة التدريب الخاصة بك لتمكين التدريب الموزع!",ie,W,ce,X,re,G,Ae="بمجرد إضافة أسطر الكود ذات الصلة، قم بتشغيل التدريب الخاص بك في أحد النصوص أو الدفاتر مثل Colaboratory.",me,Y,oe,v,We="إذا كنت تشغل التدريب الخاص بك من نص برمجي، فقم بتشغيل الأمر التالي لإنشاء وحفظ ملف تكوين:",ye,k,we,_,Xe="ثم قم بتشغيل التدريب الخاص بك باستخدام:",je,N,Je,V,de,R,Ge="يمكن أيضًا تشغيل 🤗 Accelerate في دفاتر إذا كنت تخطط لاستخدام وحدات معالجة الرسوميات (TPUs) في Colaboratory. قم بتغليف كل الكود المسؤول عن التدريب في دالة، ومررها إلى <code>notebook_launcher</code>:",Te,x,Ue,Q,Ye='للحصول على مزيد من المعلومات حول 🤗 Accelerate وميزاته الغنية، يرجى الرجوع إلى <a href="https://huggingface.co/docs/accelerate" rel="nofollow">الوثائق</a>.',fe,E,be,z,$e;return d=new F({props:{title:"التدريب الموزع باستخدام 🤗 Accelerate",local:"التدريب-الموزع-باستخدام--accelerate",headingTag:"h1"}}),U=new F({props:{title:"الإعداد",local:"الإعداد",headingTag:"h2"}}),b=new J({props:{code:"cGlwJTIwaW5zdGFsbCUyMGFjY2VsZXJhdGU=",highlighted:"pip install accelerate",wrap:!1}}),h=new J({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQSUwQWFjY2VsZXJhdG9yJTIwJTNEJTIwQWNjZWxlcmF0b3IoKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> Accelerator | |
| <span class="hljs-meta">>>> </span>accelerator = Accelerator()`,wrap:!1}}),u=new F({props:{title:"الاستعداد للتسريع",local:"الاستعداد-للتسريع",headingTag:"h2"}}),I=new J({props:{code:"dHJhaW5fZGF0YWxvYWRlciUyQyUyMGV2YWxfZGF0YWxvYWRlciUyQyUyMG1vZGVsJTJDJTIwb3B0aW1pemVyJTIwJTNEJTIwYWNjZWxlcmF0b3IucHJlcGFyZSglMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhbG9hZGVyJTJDJTIwZXZhbF9kYXRhbG9hZGVyJTJDJTIwbW9kZWwlMkMlMjBvcHRpbWl6ZXIlMEEp",highlighted:`<span class="hljs-meta">>>> </span>train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare( | |
| <span class="hljs-meta">... </span> train_dataloader, eval_dataloader, model, optimizer | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),B=new F({props:{title:"الخلفي Backward",local:"الخلفي-backward",headingTag:"h2"}}),g=new J({props:{code:"Zm9yJTIwZXBvY2glMjBpbiUyMHJhbmdlKG51bV9lcG9jaHMpJTNBJTBBJTIwJTIwJTIwJTIwZm9yJTIwYmF0Y2glMjBpbiUyMHRyYWluX2RhdGFsb2FkZXIlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWNjZWxlcmF0b3IuYmFja3dhcmQobG9zcyklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuc3RlcCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbHJfc2NoZWR1bGVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplci56ZXJvX2dyYWQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByb2dyZXNzX2Jhci51cGRhdGUoMSk=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_epochs): | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_dataloader: | |
| <span class="hljs-meta">... </span> outputs = model(**batch) | |
| <span class="hljs-meta">... </span> loss = outputs.loss | |
| <span class="hljs-meta">... </span> accelerator.backward(loss) | |
| <span class="hljs-meta">... </span> optimizer.step() | |
| <span class="hljs-meta">... </span> lr_scheduler.step() | |
| <span class="hljs-meta">... </span> optimizer.zero_grad() | |
| <span class="hljs-meta">... </span> progress_bar.update(<span class="hljs-number">1</span>)`,wrap:!1}}),W=new J({props:{code:"JTJCJTIwZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQSUyMCUyMGZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBBZGFtVyUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMkMlMjBnZXRfc2NoZWR1bGVyJTBBJTBBJTJCJTIwYWNjZWxlcmF0b3IlMjAlM0QlMjBBY2NlbGVyYXRvcigpJTBBJTBBJTIwJTIwbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50JTJDJTIwbnVtX2xhYmVscyUzRDIpJTBBJTIwJTIwb3B0aW1pemVyJTIwJTNEJTIwQWRhbVcobW9kZWwucGFyYW1ldGVycygpJTJDJTIwbHIlM0QzZS01KSUwQSUwQS0lMjBkZXZpY2UlMjAlM0QlMjB0b3JjaC5kZXZpY2UoJTIyY3VkYSUyMiklMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwdG9yY2guZGV2aWNlKCUyMmNwdSUyMiklMEEtJTIwbW9kZWwudG8oZGV2aWNlKSUwQSUwQSUyQiUyMHRyYWluX2RhdGFsb2FkZXIlMkMlMjBldmFsX2RhdGFsb2FkZXIlMkMlMjBtb2RlbCUyQyUyMG9wdGltaXplciUyMCUzRCUyMGFjY2VsZXJhdG9yLnByZXBhcmUoJTBBJTJCJTIwJTIwJTIwJTIwJTIwdHJhaW5fZGF0YWxvYWRlciUyQyUyMGV2YWxfZGF0YWxvYWRlciUyQyUyMG1vZGVsJTJDJTIwb3B0aW1pemVyJTBBJTJCJTIwKSUwQSUwQSUyMCUyMG51bV9lcG9jaHMlMjAlM0QlMjAzJTBBJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTIwJTNEJTIwbnVtX2Vwb2NocyUyMColMjBsZW4odHJhaW5fZGF0YWxvYWRlciklMEElMjAlMjBscl9zY2hlZHVsZXIlMjAlM0QlMjBnZXRfc2NoZWR1bGVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMmxpbmVhciUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplciUzRG9wdGltaXplciUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMG51bV93YXJtdXBfc3RlcHMlM0QwJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTNEbnVtX3RyYWluaW5nX3N0ZXBzJTBBJTIwJTIwKSUwQSUwQSUyMCUyMHByb2dyZXNzX2JhciUyMCUzRCUyMHRxZG0ocmFuZ2UobnVtX3RyYWluaW5nX3N0ZXBzKSklMEElMEElMjAlMjBtb2RlbC50cmFpbigpJTBBJTIwJTIwZm9yJTIwZXBvY2glMjBpbiUyMHJhbmdlKG51bV9lcG9jaHMpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwZm9yJTIwYmF0Y2glMjBpbiUyMHRyYWluX2RhdGFsb2FkZXIlM0ElMEEtJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBLSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3MuYmFja3dhcmQoKSUwQSUyQiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjY2VsZXJhdG9yLmJhY2t3YXJkKGxvc3MpJTBBb3B0aW1pemVyLnN0ZXAoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxyX3NjaGVkdWxlci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvcHRpbWl6ZXIuemVyb19ncmFkKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcm9ncmVzc19iYXIudXBkYXRlKDEp",highlighted:`<span class="hljs-addition">+ from accelerate import Accelerator</span> | |
| from transformers import AdamW, AutoModelForSequenceClassification, get_scheduler | |
| <span class="hljs-addition">+ accelerator = Accelerator()</span> | |
| model = AutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=2) | |
| optimizer = AdamW(model.parameters(), lr=3e-5) | |
| <span class="hljs-deletion">- device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")</span> | |
| <span class="hljs-deletion">- model.to(device)</span> | |
| <span class="hljs-addition">+ train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(</span> | |
| <span class="hljs-addition">+ train_dataloader, eval_dataloader, model, optimizer</span> | |
| <span class="hljs-addition">+ )</span> | |
| num_epochs = 3 | |
| num_training_steps = num_epochs * len(train_dataloader) | |
| lr_scheduler = get_scheduler( | |
| "linear", | |
| optimizer=optimizer, | |
| num_warmup_steps=0, | |
| num_training_steps=num_training_steps | |
| ) | |
| progress_bar = tqdm(range(num_training_steps)) | |
| model.train() | |
| for epoch in range(num_epochs): | |
| for batch in train_dataloader: | |
| <span class="hljs-deletion">- batch = {k: v.to(device) for k, v in batch.items()}</span> | |
| outputs = model(**batch) | |
| loss = outputs.loss | |
| <span class="hljs-deletion">- loss.backward()</span> | |
| <span class="hljs-addition">+ accelerator.backward(loss)</span> | |
| optimizer.step() | |
| lr_scheduler.step() | |
| optimizer.zero_grad() | |
| progress_bar.update(1)`,wrap:!1}}),X=new F({props:{title:"تدريب",local:"تدريب",headingTag:"h2"}}),Y=new F({props:{title:"التدريب باستخدام نص برمجي",local:"التدريب-باستخدام-نص-برمجي",headingTag:"h3"}}),k=new J({props:{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZw==",highlighted:"accelerate config",wrap:!1}}),N=new J({props:{code:"YWNjZWxlcmF0ZSUyMGxhdW5jaCUyMHRyYWluLnB5",highlighted:"accelerate launch train.py",wrap:!1}}),V=new F({props:{title:"التدريب باستخدام دفتر ملاحظات",local:"التدريب-باستخدام-دفتر-ملاحظات",headingTag:"h3"}}),x=new J({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBub3RlYm9va19sYXVuY2hlciUwQSUwQW5vdGVib29rX2xhdW5jaGVyKHRyYWluaW5nX2Z1bmN0aW9uKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> notebook_launcher | |
| <span class="hljs-meta">>>> </span>notebook_launcher(training_function)`,wrap:!1}}),E=new Fe({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ar/accelerate.md"}}),{c(){j=o("meta"),S=s(),H=o("p"),K=s(),p(d.$$.fragment),L=s(),T=o("p"),T.innerHTML=ue,P=s(),p(U.$$.fragment),q=s(),f=o("p"),f.textContent=Ce,D=s(),p(b.$$.fragment),O=s(),$=o("p"),$.innerHTML=Ie,ee=s(),p(h.$$.fragment),le=s(),p(u.$$.fragment),te=s(),C=o("p"),C.innerHTML=Be,ae=s(),p(I.$$.fragment),se=s(),p(B.$$.fragment),ne=s(),Z=o("p"),Z.innerHTML=Ze,pe=s(),p(g.$$.fragment),Me=s(),A=o("p"),A.textContent=ge,ie=s(),p(W.$$.fragment),ce=s(),p(X.$$.fragment),re=s(),G=o("p"),G.textContent=Ae,me=s(),p(Y.$$.fragment),oe=s(),v=o("p"),v.textContent=We,ye=s(),p(k.$$.fragment),we=s(),_=o("p"),_.textContent=Xe,je=s(),p(N.$$.fragment),Je=s(),p(V.$$.fragment),de=s(),R=o("p"),R.innerHTML=Ge,Te=s(),p(x.$$.fragment),Ue=s(),Q=o("p"),Q.innerHTML=Ye,fe=s(),p(E.$$.fragment),be=s(),z=o("p"),this.h()},l(e){const l=Qe("svelte-u9bgzb",document.head);j=y(l,"META",{name:!0,content:!0}),l.forEach(t),S=n(e),H=y(e,"P",{}),ve(H).forEach(t),K=n(e),M(d.$$.fragment,e),L=n(e),T=y(e,"P",{"data-svelte-h":!0}),w(T)!=="svelte-zt2lri"&&(T.innerHTML=ue),P=n(e),M(U.$$.fragment,e),q=n(e),f=y(e,"P",{"data-svelte-h":!0}),w(f)!=="svelte-he6q4s"&&(f.textContent=Ce),D=n(e),M(b.$$.fragment,e),O=n(e),$=y(e,"P",{"data-svelte-h":!0}),w($)!=="svelte-nozm56"&&($.innerHTML=Ie),ee=n(e),M(h.$$.fragment,e),le=n(e),M(u.$$.fragment,e),te=n(e),C=y(e,"P",{"data-svelte-h":!0}),w(C)!=="svelte-k3117i"&&(C.innerHTML=Be),ae=n(e),M(I.$$.fragment,e),se=n(e),M(B.$$.fragment,e),ne=n(e),Z=y(e,"P",{"data-svelte-h":!0}),w(Z)!=="svelte-14zuo6z"&&(Z.innerHTML=Ze),pe=n(e),M(g.$$.fragment,e),Me=n(e),A=y(e,"P",{"data-svelte-h":!0}),w(A)!=="svelte-k436wv"&&(A.textContent=ge),ie=n(e),M(W.$$.fragment,e),ce=n(e),M(X.$$.fragment,e),re=n(e),G=y(e,"P",{"data-svelte-h":!0}),w(G)!=="svelte-107auai"&&(G.textContent=Ae),me=n(e),M(Y.$$.fragment,e),oe=n(e),v=y(e,"P",{"data-svelte-h":!0}),w(v)!=="svelte-eoop0m"&&(v.textContent=We),ye=n(e),M(k.$$.fragment,e),we=n(e),_=y(e,"P",{"data-svelte-h":!0}),w(_)!=="svelte-xb8cc3"&&(_.textContent=Xe),je=n(e),M(N.$$.fragment,e),Je=n(e),M(V.$$.fragment,e),de=n(e),R=y(e,"P",{"data-svelte-h":!0}),w(R)!=="svelte-14j7hha"&&(R.innerHTML=Ge),Te=n(e),M(x.$$.fragment,e),Ue=n(e),Q=y(e,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-bs6b2i"&&(Q.innerHTML=Ye),fe=n(e),M(E.$$.fragment,e),be=n(e),z=y(e,"P",{}),ve(z).forEach(t),this.h()},h(){ke(j,"name","hf:doc:metadata"),ke(j,"content",ze)},m(e,l){Ee(document.head,j),a(e,S,l),a(e,H,l),a(e,K,l),i(d,e,l),a(e,L,l),a(e,T,l),a(e,P,l),i(U,e,l),a(e,q,l),a(e,f,l),a(e,D,l),i(b,e,l),a(e,O,l),a(e,$,l),a(e,ee,l),i(h,e,l),a(e,le,l),i(u,e,l),a(e,te,l),a(e,C,l),a(e,ae,l),i(I,e,l),a(e,se,l),i(B,e,l),a(e,ne,l),a(e,Z,l),a(e,pe,l),i(g,e,l),a(e,Me,l),a(e,A,l),a(e,ie,l),i(W,e,l),a(e,ce,l),i(X,e,l),a(e,re,l),a(e,G,l),a(e,me,l),i(Y,e,l),a(e,oe,l),a(e,v,l),a(e,ye,l),i(k,e,l),a(e,we,l),a(e,_,l),a(e,je,l),i(N,e,l),a(e,Je,l),i(V,e,l),a(e,de,l),a(e,R,l),a(e,Te,l),i(x,e,l),a(e,Ue,l),a(e,Q,l),a(e,fe,l),i(E,e,l),a(e,be,l),a(e,z,l),$e=!0},p:Ne,i(e){$e||(c(d.$$.fragment,e),c(U.$$.fragment,e),c(b.$$.fragment,e),c(h.$$.fragment,e),c(u.$$.fragment,e),c(I.$$.fragment,e),c(B.$$.fragment,e),c(g.$$.fragment,e),c(W.$$.fragment,e),c(X.$$.fragment,e),c(Y.$$.fragment,e),c(k.$$.fragment,e),c(N.$$.fragment,e),c(V.$$.fragment,e),c(x.$$.fragment,e),c(E.$$.fragment,e),$e=!0)},o(e){r(d.$$.fragment,e),r(U.$$.fragment,e),r(b.$$.fragment,e),r(h.$$.fragment,e),r(u.$$.fragment,e),r(I.$$.fragment,e),r(B.$$.fragment,e),r(g.$$.fragment,e),r(W.$$.fragment,e),r(X.$$.fragment,e),r(Y.$$.fragment,e),r(k.$$.fragment,e),r(N.$$.fragment,e),r(V.$$.fragment,e),r(x.$$.fragment,e),r(E.$$.fragment,e),$e=!1},d(e){e&&(t(S),t(H),t(K),t(L),t(T),t(P),t(q),t(f),t(D),t(O),t($),t(ee),t(le),t(te),t(C),t(ae),t(se),t(ne),t(Z),t(pe),t(Me),t(A),t(ie),t(ce),t(re),t(G),t(me),t(oe),t(v),t(ye),t(we),t(_),t(je),t(Je),t(de),t(R),t(Te),t(Ue),t(Q),t(fe),t(be),t(z)),t(j),m(d,e),m(U,e),m(b,e),m(h,e),m(u,e),m(I,e),m(B,e),m(g,e),m(W,e),m(X,e),m(Y,e),m(k,e),m(N,e),m(V,e),m(x,e),m(E,e)}}}const ze='{"title":"التدريب الموزع باستخدام 🤗 Accelerate","local":"التدريب-الموزع-باستخدام--accelerate","sections":[{"title":"الإعداد","local":"الإعداد","sections":[],"depth":2},{"title":"الاستعداد للتسريع","local":"الاستعداد-للتسريع","sections":[],"depth":2},{"title":"الخلفي Backward","local":"الخلفي-backward","sections":[],"depth":2},{"title":"تدريب","local":"تدريب","sections":[{"title":"التدريب باستخدام نص برمجي","local":"التدريب-باستخدام-نص-برمجي","sections":[],"depth":3},{"title":"التدريب باستخدام دفتر ملاحظات","local":"التدريب-باستخدام-دفتر-ملاحظات","sections":[],"depth":3}],"depth":2}],"depth":1}';function Se(he){return Ve(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class De extends Re{constructor(j){super(),xe(this,j,Se,He,_e,{})}}export{De as component}; | |
Xet Storage Details
- Size:
- 16.5 kB
- Xet hash:
- f652a95e21ab25c5ac0c5fca01552de8855a91556bcc3fdcc0a70da973333e14
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.