import{s as Jt,o as Tt,n as jt}from"../chunks/scheduler.37c15a92.js";import{S as Ut,i as xt,g as d,s as m,r as j,A as $t,h as f,f as a,c as p,j as Mt,u as U,x as w,k as et,y as wt,a as c,v as x,t as b,b as dt,d as g,w as $,p as ft}from"../chunks/index.2bf4358c.js";import{T as Ct}from"../chunks/Tip.363c041f.js";import{C as I}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as kt}from"../chunks/CourseFloatingBanner.06521e8b.js";import{F as vt}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Zt}from"../chunks/Heading.8ada512a.js";function _t(M){let n,r;return n=new kt({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(){j(n.$$.fragment)},l(e){U(n.$$.fragment,e)},m(e,h){x(n,e,h),r=!0},i(e){r||(g(n.$$.fragment,e),r=!0)},o(e){b(n.$$.fragment,e),r=!1},d(e){$(n,e)}}}function Wt(M){let n,r;return n=new kt({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(){j(n.$$.fragment)},l(e){U(n.$$.fragment,e)},m(e,h){x(n,e,h),r=!0},i(e){r||(g(n.$$.fragment,e),r=!0)},o(e){b(n.$$.fragment,e),r=!1},d(e){$(n,e)}}}function Vt(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,o,y;return n=new I({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}}),o=new I({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(){j(n.$$.fragment),r=m(),e=d("p"),e.innerHTML=h,u=m(),j(o.$$.fragment)},l(s){U(n.$$.fragment,s),r=p(s),e=f(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-k4y9ei"&&(e.innerHTML=h),u=p(s),U(o.$$.fragment,s)},m(s,i){x(n,s,i),c(s,r,i),c(s,e,i),c(s,u,i),x(o,s,i),y=!0},i(s){y||(g(n.$$.fragment,s),g(o.$$.fragment,s),y=!0)},o(s){b(n.$$.fragment,s),b(o.$$.fragment,s),y=!1},d(s){s&&(a(r),a(e),a(u)),$(n,s),$(o,s)}}}function Nt(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,o,y;return n=new I({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}}),o=new I({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(){j(n.$$.fragment),r=m(),e=d("p"),e.innerHTML=h,u=m(),j(o.$$.fragment)},l(s){U(n.$$.fragment,s),r=p(s),e=f(s,"P",{"data-svelte-h":!0}),w(e)!=="svelte-qkh53m"&&(e.innerHTML=h),u=p(s),U(o.$$.fragment,s)},m(s,i){x(n,s,i),c(s,r,i),c(s,e,i),c(s,u,i),x(o,s,i),y=!0},i(s){y||(g(n.$$.fragment,s),g(o.$$.fragment,s),y=!0)},o(s){b(n.$$.fragment,s),b(o.$$.fragment,s),y=!1},d(s){s&&(a(r),a(e),a(u)),$(n,s),$(o,s)}}}function zt(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=d("p"),n.textContent=r},l(e){n=f(e,"P",{"data-svelte-h":!0}),w(n)!=="svelte-8lu4gm"&&(n.textContent=r)},m(e,h){c(e,n,h)},p:jt,d(e){e&&a(n)}}}function Et(M){let n,r,e,h,u,o,y,s,i,k,G,_,lt="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.",X,W,at="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.",S,C,ct='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',R,V,rt="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>:",L,N,H,z,q,E,it="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:",D,v,ot='<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%"/>',P,Q,mt="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:",K,J,T,Y,Z,O,A,tt;u=new vt({props:{fw:M[0]}}),y=new Zt({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 pt=[Wt,_t],B=[];function ht(t,l){return t[0]==="pt"?0:1}i=ht(M),k=B[i]=pt[i](M),N=new I({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 I({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 ut=[Nt,Vt],F=[];function yt(t,l){return t[0]==="pt"?0:1}return J=yt(M),T=F[J]=ut[J](M),Z=new Ct({props:{$$slots:{default:[zt]},$$scope:{ctx:M}}}),{c(){n=d("meta"),r=m(),e=d("p"),h=m(),j(u.$$.fragment),o=m(),j(y.$$.fragment),s=m(),k.c(),G=m(),_=d("p"),_.textContent=lt,X=m(),W=d("p"),W.textContent=at,S=m(),C=d("div"),C.innerHTML=ct,R=m(),V=d("p"),V.innerHTML=rt,L=m(),j(N.$$.fragment),H=m(),j(z.$$.fragment),q=m(),E=d("p"),E.innerHTML=it,D=m(),v=d("div"),v.innerHTML=ot,P=m(),Q=d("p"),Q.textContent=mt,K=m(),T.c(),Y=m(),j(Z.$$.fragment),O=m(),A=d("p"),this.h()},l(t){const l=$t("svelte-u9bgzb",document.head);n=f(l,"META",{name:!0,content:!0}),l.forEach(a),r=p(t),e=f(t,"P",{}),Mt(e).forEach(a),h=p(t),U(u.$$.fragment,t),o=p(t),U(y.$$.fragment,t),s=p(t),k.l(t),G=p(t),_=f(t,"P",{"data-svelte-h":!0}),w(_)!=="svelte-vk12yw"&&(_.textContent=lt),X=p(t),W=f(t,"P",{"data-svelte-h":!0}),w(W)!=="svelte-1phub02"&&(W.textContent=at),S=p(t),C=f(t,"DIV",{class:!0,"data-svelte-h":!0}),w(C)!=="svelte-5d1oum"&&(C.innerHTML=ct),R=p(t),V=f(t,"P",{"data-svelte-h":!0}),w(V)!=="svelte-a8p0dn"&&(V.innerHTML=rt),L=p(t),U(N.$$.fragment,t),H=p(t),U(z.$$.fragment,t),q=p(t),E=f(t,"P",{"data-svelte-h":!0}),w(E)!=="svelte-1h5qcny"&&(E.innerHTML=it),D=p(t),v=f(t,"DIV",{class:!0,"data-svelte-h":!0}),w(v)!=="svelte-13iokc9"&&(v.innerHTML=ot),P=p(t),Q=f(t,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-1u57jxy"&&(Q.textContent=mt),K=p(t),T.l(t),Y=p(t),U(Z.$$.fragment,t),O=p(t),A=f(t,"P",{}),Mt(A).forEach(a),this.h()},h(){et(n,"name","hf:doc:metadata"),et(n,"content",Qt),et(C,"class","flex justify-center"),et(v,"class","flex justify-center")},m(t,l){wt(document.head,n),c(t,r,l),c(t,e,l),c(t,h,l),x(u,t,l),c(t,o,l),x(y,t,l),c(t,s,l),B[i].m(t,l),c(t,G,l),c(t,_,l),c(t,X,l),c(t,W,l),c(t,S,l),c(t,C,l),c(t,R,l),c(t,V,l),c(t,L,l),x(N,t,l),c(t,H,l),x(z,t,l),c(t,q,l),c(t,E,l),c(t,D,l),c(t,v,l),c(t,P,l),c(t,Q,l),c(t,K,l),F[J].m(t,l),c(t,Y,l),x(Z,t,l),c(t,O,l),c(t,A,l),tt=!0},p(t,[l]){const bt={};l&1&&(bt.fw=t[0]),u.$set(bt);let nt=i;i=ht(t),i!==nt&&(ft(),b(B[nt],1,1,()=>{B[nt]=null}),dt(),k=B[i],k||(k=B[i]=pt[i](t),k.c()),g(k,1),k.m(G.parentNode,G));let st=J;J=yt(t),J!==st&&(ft(),b(F[st],1,1,()=>{F[st]=null}),dt(),T=F[J],T||(T=F[J]=ut[J](t),T.c()),g(T,1),T.m(Y.parentNode,Y));const gt={};l&2&&(gt.$$scope={dirty:l,ctx:t}),Z.$set(gt)},i(t){tt||(g(u.$$.fragment,t),g(y.$$.fragment,t),g(k),g(N.$$.fragment,t),g(z.$$.fragment,t),g(T),g(Z.$$.fragment,t),tt=!0)},o(t){b(u.$$.fragment,t),b(y.$$.fragment,t),b(k),b(N.$$.fragment,t),b(z.$$.fragment,t),b(T),b(Z.$$.fragment,t),tt=!1},d(t){t&&(a(r),a(e),a(h),a(o),a(s),a(G),a(_),a(X),a(W),a(S),a(C),a(R),a(V),a(L),a(H),a(q),a(E),a(D),a(v),a(P),a(Q),a(K),a(Y),a(O),a(A)),a(n),$(u,t),$(y,t),B[i].d(t),$(N,t),$(z,t),F[J].d(t),$(Z,t)}}}const Qt='{"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 Bt(M,n,r){let e="pt";return Tt(()=>{const h=new URLSearchParams(window.location.search);r(0,e=h.get("fw")||"pt")}),[e]}class Rt extends Ut{constructor(n){super(),xt(this,n,Bt,Et,Jt,{})}}export{Rt as component};
