Buckets:

rtrm's picture
download
raw
16.8 kB
import{s as jt,o as Ut,n as xt}from"../chunks/scheduler.37c15a92.js";import{S as $t,i as wt,g as f,s as o,r as k,A as vt,h as d,f as a,c as m,j as dt,u as J,x as w,k as st,y as Ct,a as c,v as T,t as y,b as kt,d as g,w as j,p as Jt}from"../chunks/index.2bf4358c.js";import{T as Zt}from"../chunks/Tip.363c041f.js";import{C as A}from"../chunks/CodeBlock.4e987730.js";import{C as Tt}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{F as _t}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Wt,E as Vt}from"../chunks/getInferenceSnippets.24b50994.js";function Nt(M){let n,r;return n=new Tt({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/vi/chapter4/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter4/section2_tf.ipynb"}]}}),{c(){k(n.$$.fragment)},l(e){J(n.$$.fragment,e)},m(e,h){T(n,e,h),r=!0},i(e){r||(g(n.$$.fragment,e),r=!0)},o(e){y(n.$$.fragment,e),r=!1},d(e){j(n,e)}}}function zt(M){let n,r;return n=new Tt({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/vi/chapter4/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter4/section2_pt.ipynb"}]}}),{c(){k(n.$$.fragment)},l(e){J(n.$$.fragment,e)},m(e,h){T(n,e,h),r=!0},i(e){r||(g(n.$$.fragment,e),r=!0)},o(e){y(n.$$.fragment,e),r=!1},d(e){j(n,e)}}}function Et(M){let n,r,e,h='Tuy nhiên, chúng tôi khuyên bạn nên sử dụng <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>TFAuto*</code> classes</a> vì đây là của kiến trúc thiết kế-bất khả tri. Trong khi đoạn mã trước đó giới hạn người dùng ở các checkpoint chỉ có thể tải được trong kiến trúc CamemBERT, việc sử dụng các lớp <code>TFAuto*</code> giúp việc chuyển đổi các checkpoint trở nên đơn giản:',u,p,b;return n=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMFRGQ2FtZW1iZXJ0Rm9yTWFza2VkTE0lMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBDYW1lbWJlcnRUb2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwVEZDYW1lbWJlcnRGb3JNYXNrZWRMTS5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, TFCamembertForMaskedLM
tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFCamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),p=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFAutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){k(n.$$.fragment),r=o(),e=f("p"),e.innerHTML=h,u=o(),k(p.$$.fragment)},l(s){J(n.$$.fragment,s),r=m(s),e=d(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-k4y9ei"&&(e.innerHTML=h),u=m(s),J(p.$$.fragment,s)},m(s,i){T(n,s,i),c(s,r,i),c(s,e,i),c(s,u,i),T(p,s,i),b=!0},i(s){b||(g(n.$$.fragment,s),g(p.$$.fragment,s),b=!0)},o(s){y(n.$$.fragment,s),y(p.$$.fragment,s),b=!1},d(s){s&&(a(r),a(e),a(u)),j(n,s),j(p,s)}}}function Qt(M){let n,r,e,h='Tuy nhiên, chúng tôi khuyên bạn nên sử dụng <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>Auto*</code> classes</a> vì đây là của kiến trúc thiết kế-bất khả tri. Trong khi đoạn mã trước đó giới hạn người dùng ở các checkpoint chỉ có thể tải được trong kiến trúc CamemBERT, việc sử dụng các lớp <code>Auto*</code> giúp việc chuyển đổi các checkpoint trở nên đơn giản:',u,p,b;return n=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMENhbWVtYmVydEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQ2FtZW1iZXJ0VG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMiklMEFtb2RlbCUyMCUzRCUyMENhbWVtYmVydEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, CamembertForMaskedLM
tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = CamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),p=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JNYXNrZWRMTSUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = AutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){k(n.$$.fragment),r=o(),e=f("p"),e.innerHTML=h,u=o(),k(p.$$.fragment)},l(s){J(n.$$.fragment,s),r=m(s),e=d(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-qkh53m"&&(e.innerHTML=h),u=m(s),J(p.$$.fragment,s)},m(s,i){T(n,s,i),c(s,r,i),c(s,e,i),c(s,u,i),T(p,s,i),b=!0},i(s){b||(g(n.$$.fragment,s),g(p.$$.fragment,s),b=!0)},o(s){y(n.$$.fragment,s),y(p.$$.fragment,s),b=!1},d(s){s&&(a(r),a(e),a(u)),j(n,s),j(p,s)}}}function Bt(M){let n,r="Khi sử dụng một mô hình được huấn luyện trước, hãy đảm bảo kiểm tra xem nó được huấn luyện như thế nào, dựa trên tập dữ liệu nào, các giới hạn và độ sai lệch của nó. Tất cả thông tin này phải được ghi trên thẻ mô hình của nó.";return{c(){n=f("p"),n.textContent=r},l(e){n=d(e,"P",{"data-svelte-h":!0}),w(n)!=="svelte-8lu4gm"&&(n.textContent=r)},m(e,h){c(e,n,h)},p:xt,d(e){e&&a(n)}}}function Ft(M){let n,r,e,h,u,p,b,s,i,U,Y,_,ct="Model Hub làm cho việc chọn mô hình thích hợp trở nên đơn giản, vì vậy việc sử dụng mô hình đó trong bất kỳ thư viện nào dưới đây có thể được thực hiện trong một vài dòng mã. Hãy cùng xem cách thực sự sử dụng một trong những mô hình này và cách đóng góp lại cho cộng đồng.",S,W,rt="Giả sử chúng tôi đang tìm kiếm một mô hình cho tiếng Pháp có thể thực hiện tác vụ diền vào phần bị che đi.",R,v,it='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',L,V,ot="Chúng tôi chọn checkpoint <code>camembert-base</code> để dùng thử. Từ <code>camembert-base</code> là tất cả những gì chúng ta cần để bắt đầu sử dụng nó! Như bạn đã thấy trong các chương trước, chúng ta có thể khởi tạo nó bằng cách sử dụng hàm <code>pipeline()</code>:",H,N,q,z,D,E,mt="Như bạn có thể thấy, việc tải một mô hình trong một pipeline cực kỳ đơn giản. Điều duy nhất bạn cần chú ý là checkpoint đã chọn có phù hợp với tác vụ mà nó sẽ được sử dụng hay không. Ví dụ: ở đây chúng tôi đang tải checkpoint <code>camembert-base</code> trong pipeline <code>fill-mask</code>, điều này hoàn toàn ổn. Nhưng nếu chúng tôi tải checkpoint này trong pipeline phân loại văn bản, kết quả sẽ không có ý nghĩa gì vì phần đầu của <code>camembert-base</code> không phù hợp với tác vụ này! Chúng tôi khuyên bạn nên sử dụng công cụ chọn tác vụ trong giao diện Hugging Face Hub để chọn các checkpoint thích hợp:",P,C,pt='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/tasks.png" alt="The task selector on the web interface." width="80%"/>',K,Q,ht="Bạn cũng có thể khởi tạo checkpoint bằng cách sử dụng kiến trúc mô hình trực tiếp:",O,x,$,I,Z,tt,B,et,X,nt;u=new _t({props:{fw:M[0]}}),b=new Wt({props:{title:"Sử dụng các mô hình huấn luyện trước",local:"sử-dụng-các-mô-hình-huấn-luyện-trước",headingTag:"h1"}});const ut=[zt,Nt],F=[];function bt(t,l){return t[0]==="pt"?0:1}i=bt(M),U=F[i]=ut[i](M),N=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2FtZW1iZXJ0X2ZpbGxfbWFzayUyMCUzRCUyMHBpcGVsaW5lKCUyMmZpbGwtbWFzayUyMiUyQyUyMG1vZGVsJTNEJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBcmVzdWx0cyUyMCUzRCUyMGNhbWVtYmVydF9maWxsX21hc2soJTIyTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjAlM0NtYXNrJTNFJTIwJTNBKSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline
camembert_fill_mask = pipeline(<span class="hljs-string">&quot;fill-mask&quot;</span>, model=<span class="hljs-string">&quot;camembert-base&quot;</span>)
results = camembert_fill_mask(<span class="hljs-string">&quot;Le camembert est &lt;mask&gt; :)&quot;</span>)`,wrap:!1}}),z=new A({props:{code:"JTVCJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGQlQzMlQTlsaWNpZXV4JTIwJTNBKSclMkMlMjAnc2NvcmUnJTNBJTIwMC40OTA5MTAwNTMyNTMxNzM4MyUyQyUyMCd0b2tlbiclM0ElMjA3MjAwJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZCVDMyVBOWxpY2lldXgnJTdEJTJDJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGV4Y2VsbGVudCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMTA1NTY5NzQyNjE5OTkxMyUyQyUyMCd0b2tlbiclM0ElMjAyMTgzJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZXhjZWxsZW50JyU3RCUyQyUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBzdWNjdWxlbnQlMjAlM0EpJyUyQyUyMCdzY29yZSclM0ElMjAwLjAzNDUzMzEzMTg2NzY0NzE3JTJDJTIwJ3Rva2VuJyUzQSUyMDI2MjAyJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnc3VjY3VsZW50JyU3RCUyQyUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBtZWlsbGV1ciUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMzMDMxNDExNDY4OTgyNyUyQyUyMCd0b2tlbiclM0ElMjA1MjglMkMlMjAndG9rZW5fc3RyJyUzQSUyMCdtZWlsbGV1ciclN0QlMkMlMEElMjAlMjAlN0Inc2VxdWVuY2UnJTNBJTIwJ0xlJTIwY2FtZW1iZXJ0JTIwZXN0JTIwcGFyZmFpdCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMwMDc2NTAxODkxMDE2OTYlMkMlMjAndG9rZW4nJTNBJTIwMTY1NCUyQyUyMCd0b2tlbl9zdHInJTNBJTIwJ3BhcmZhaXQnJTdEJTBBJTVE",highlighted:`[
{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est délicieux :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.49091005325317383</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">7200</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;délicieux&#x27;</span>},
{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est excellent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.1055697426199913</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">2183</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;excellent&#x27;</span>},
{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est succulent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03453313186764717</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">26202</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;succulent&#x27;</span>},
{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est meilleur :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.0330314114689827</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">528</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;meilleur&#x27;</span>},
{<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est parfait :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03007650189101696</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">1654</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;parfait&#x27;</span>}
]`,wrap:!1}});const yt=[Qt,Et],G=[];function gt(t,l){return t[0]==="pt"?0:1}return x=gt(M),$=G[x]=yt[x](M),Z=new Zt({props:{$$slots:{default:[Bt]},$$scope:{ctx:M}}}),B=new Vt({props:{source:"https://github.com/huggingface/course/blob/main/chapters/vi/chapter4/2.mdx"}}),{c(){n=f("meta"),r=o(),e=f("p"),h=o(),k(u.$$.fragment),p=o(),k(b.$$.fragment),s=o(),U.c(),Y=o(),_=f("p"),_.textContent=ct,S=o(),W=f("p"),W.textContent=rt,R=o(),v=f("div"),v.innerHTML=it,L=o(),V=f("p"),V.innerHTML=ot,H=o(),k(N.$$.fragment),q=o(),k(z.$$.fragment),D=o(),E=f("p"),E.innerHTML=mt,P=o(),C=f("div"),C.innerHTML=pt,K=o(),Q=f("p"),Q.textContent=ht,O=o(),$.c(),I=o(),k(Z.$$.fragment),tt=o(),k(B.$$.fragment),et=o(),X=f("p"),this.h()},l(t){const l=vt("svelte-u9bgzb",document.head);n=d(l,"META",{name:!0,content:!0}),l.forEach(a),r=m(t),e=d(t,"P",{}),dt(e).forEach(a),h=m(t),J(u.$$.fragment,t),p=m(t),J(b.$$.fragment,t),s=m(t),U.l(t),Y=m(t),_=d(t,"P",{"data-svelte-h":!0}),w(_)!=="svelte-vk12yw"&&(_.textContent=ct),S=m(t),W=d(t,"P",{"data-svelte-h":!0}),w(W)!=="svelte-1phub02"&&(W.textContent=rt),R=m(t),v=d(t,"DIV",{class:!0,"data-svelte-h":!0}),w(v)!=="svelte-5d1oum"&&(v.innerHTML=it),L=m(t),V=d(t,"P",{"data-svelte-h":!0}),w(V)!=="svelte-a8p0dn"&&(V.innerHTML=ot),H=m(t),J(N.$$.fragment,t),q=m(t),J(z.$$.fragment,t),D=m(t),E=d(t,"P",{"data-svelte-h":!0}),w(E)!=="svelte-1h5qcny"&&(E.innerHTML=mt),P=m(t),C=d(t,"DIV",{class:!0,"data-svelte-h":!0}),w(C)!=="svelte-13iokc9"&&(C.innerHTML=pt),K=m(t),Q=d(t,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-1u57jxy"&&(Q.textContent=ht),O=m(t),$.l(t),I=m(t),J(Z.$$.fragment,t),tt=m(t),J(B.$$.fragment,t),et=m(t),X=d(t,"P",{}),dt(X).forEach(a),this.h()},h(){st(n,"name","hf:doc:metadata"),st(n,"content",Gt),st(v,"class","flex justify-center"),st(C,"class","flex justify-center")},m(t,l){Ct(document.head,n),c(t,r,l),c(t,e,l),c(t,h,l),T(u,t,l),c(t,p,l),T(b,t,l),c(t,s,l),F[i].m(t,l),c(t,Y,l),c(t,_,l),c(t,S,l),c(t,W,l),c(t,R,l),c(t,v,l),c(t,L,l),c(t,V,l),c(t,H,l),T(N,t,l),c(t,q,l),T(z,t,l),c(t,D,l),c(t,E,l),c(t,P,l),c(t,C,l),c(t,K,l),c(t,Q,l),c(t,O,l),G[x].m(t,l),c(t,I,l),T(Z,t,l),c(t,tt,l),T(B,t,l),c(t,et,l),c(t,X,l),nt=!0},p(t,[l]){const Mt={};l&1&&(Mt.fw=t[0]),u.$set(Mt);let lt=i;i=bt(t),i!==lt&&(Jt(),y(F[lt],1,1,()=>{F[lt]=null}),kt(),U=F[i],U||(U=F[i]=ut[i](t),U.c()),g(U,1),U.m(Y.parentNode,Y));let at=x;x=gt(t),x!==at&&(Jt(),y(G[at],1,1,()=>{G[at]=null}),kt(),$=G[x],$||($=G[x]=yt[x](t),$.c()),g($,1),$.m(I.parentNode,I));const ft={};l&2&&(ft.$$scope={dirty:l,ctx:t}),Z.$set(ft)},i(t){nt||(g(u.$$.fragment,t),g(b.$$.fragment,t),g(U),g(N.$$.fragment,t),g(z.$$.fragment,t),g($),g(Z.$$.fragment,t),g(B.$$.fragment,t),nt=!0)},o(t){y(u.$$.fragment,t),y(b.$$.fragment,t),y(U),y(N.$$.fragment,t),y(z.$$.fragment,t),y($),y(Z.$$.fragment,t),y(B.$$.fragment,t),nt=!1},d(t){t&&(a(r),a(e),a(h),a(p),a(s),a(Y),a(_),a(S),a(W),a(R),a(v),a(L),a(V),a(H),a(q),a(D),a(E),a(P),a(C),a(K),a(Q),a(O),a(I),a(tt),a(et),a(X)),a(n),j(u,t),j(b,t),F[i].d(t),j(N,t),j(z,t),G[x].d(t),j(Z,t),j(B,t)}}}const Gt='{"title":"Sử dụng các mô hình huấn luyện trước","local":"sử-dụng-các-mô-hình-huấn-luyện-trước","sections":[],"depth":1}';function Yt(M,n,r){let e="pt";return Ut(()=>{const h=new URLSearchParams(window.location.search);r(0,e=h.get("fw")||"pt")}),[e]}class qt extends $t{constructor(n){super(),wt(this,n,Yt,Ft,jt,{})}}export{qt as component};

Xet Storage Details

Size:
16.8 kB
·
Xet hash:
2a85caddfb6850de649f979899d11b186bb1ce8ffb26071da61605fa571739b2

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