import{s as ge,o as je}from"../chunks/scheduler.37c15a92.js";import{S as ke,i as Ue,g as h,s as i,r as k,A as xe,h as J,f as n,c as p,j as de,u as U,x as w,k as se,y as $e,a as c,v as x,t as y,b as he,d as f,w as $,m as we,n as _e,p as Je}from"../chunks/index.7cb9c9b8.js";import{T as Ce}from"../chunks/Tip.d10b3fc9.js";import{C as G}from"../chunks/CodeBlock.a6d3f852.js";import{C as Te}from"../chunks/CourseFloatingBanner.2c4a7381.js";import{F as Ze}from"../chunks/FrameworkSwitchCourse.97630871.js";import{H as We}from"../chunks/Heading.d3928e2a.js";function Ve(d){let t,r;return t=new Te({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/ja/chapter4/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ja/chapter4/section2_tf.ipynb"}]}}),{c(){k(t.$$.fragment)},l(l){U(t.$$.fragment,l)},m(l,M){x(t,l,M),r=!0},i(l){r||(f(t.$$.fragment,l),r=!0)},o(l){y(t.$$.fragment,l),r=!1},d(l){$(t,l)}}}function Ne(d){let t,r;return t=new Te({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/ja/chapter4/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ja/chapter4/section2_pt.ipynb"}]}}),{c(){k(t.$$.fragment)},l(l){U(t.$$.fragment,l)},m(l,M){x(t,l,M),r=!0},i(l){r||(f(t.$$.fragment,l),r=!0)},o(l){y(t.$$.fragment,l),r=!1},d(l){$(t,l)}}}function ve(d){let t,r,l,M='しかし、代わりに<a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>TFAuto*</code> classes</a>を使用することをお勧めします。これらは設計上、アーキテクチャに依存しないためです。先ほどのコードサンプルでは、CamemBERT アーキテクチャでロード可能なチェックポイントに限定していましたが、 <code>TFAuto*</code>クラスを使用すると、チェックポイントを簡単に切り替えることができます：',b,m,u;return t=new G({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}}),m=new G({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(t.$$.fragment),r=i(),l=h("p"),l.innerHTML=M,b=i(),k(m.$$.fragment)},l(s){U(t.$$.fragment,s),r=p(s),l=J(s,"P",{"data-svelte-h":!0}),w(l)!=="svelte-1pdtxl7"&&(l.innerHTML=M),b=p(s),U(m.$$.fragment,s)},m(s,o){x(t,s,o),c(s,r,o),c(s,l,o),c(s,b,o),x(m,s,o),u=!0},i(s){u||(f(t.$$.fragment,s),f(m.$$.fragment,s),u=!0)},o(s){y(t.$$.fragment,s),y(m.$$.fragment,s),u=!1},d(s){s&&(n(r),n(l),n(b)),$(t,s),$(m,s)}}}function ze(d){let t,r,l,M='しかし、代わりに<a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow"><code>Auto*</code> classes</a>を使用することをお勧めします。これらは設計上、（モデル）アーキテクチャに依存しないためです。先ほどのコードサンプルでは、CamemBERT アーキテクチャでロード可能なチェックポイントに限定していましたが、 <code>Auto*</code>クラスを使用すると、チェックポイントを簡単に切り替えることができます：',b,m,u;return t=new G({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}}),m=new G({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(t.$$.fragment),r=i(),l=h("p"),l.innerHTML=M,b=i(),k(m.$$.fragment)},l(s){U(t.$$.fragment,s),r=p(s),l=J(s,"P",{"data-svelte-h":!0}),w(l)!=="svelte-62nbsm"&&(l.innerHTML=M),b=p(s),U(m.$$.fragment,s)},m(s,o){x(t,s,o),c(s,r,o),c(s,l,o),c(s,b,o),x(m,s,o),u=!0},i(s){u||(f(t.$$.fragment,s),f(m.$$.fragment,s),u=!0)},o(s){y(t.$$.fragment,s),y(m.$$.fragment,s),u=!1},d(s){s&&(n(r),n(l),n(b)),$(t,s),$(m,s)}}}function Ee(d){let t;return{c(){t=we("学習済みのモデルを使う場合は、どのように学習したのか、どのデータセットで学習したのか、その限界と偏りを必ず確認すること。これらの情報はすべて、モデルカードに記載されています。")},l(r){t=_e(r,"学習済みのモデルを使う場合は、どのように学習したのか、どのデータセットで学習したのか、その限界と偏りを必ず確認すること。これらの情報はすべて、モデルカードに記載されています。")},m(r,l){c(r,t,l)},d(r){r&&n(t)}}}function Qe(d){let t,r,l,M,b,m,u,s,o,T,I,W,ae="モデルハブは適切なモデルを簡単に選択できるようにし、どのライブラリからでも数行のコードで使用できるようにします。では、実際にこれらのモデルをどのように使用し、どのようにコミュニティに貢献するかを見ていきましょう。",X,V,ne="例えば、マスクフィルを行えるフランス語のモデルを探しているとします。",S,_,re='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',R,N,ce="試しに<code>camembert-base</code>チェックポイントを選択してみましょう。camembert-base<code>という識別子があれば、すぐに使い始めることができます。これまでの章で見てきたように、 </code>pipeline()` 関数を使用してインスタンスを作成することができます：",L,v,q,z,H,E,oe="ご覧の通り、パイプライン内でのモデルのロードは非常に簡単です。唯一気をつけなければならないのは、選択したチェックポイントが使用するタスクに適しているかということです。例えば、ここでは<code>camembert-base</code>というチェックポイントを<code>fill-mask</code>というパイプラインでロードしていますが、これは全く問題ありません。しかし、このチェックポイントを<code>text-classification</code>パイプラインでロードしたとすると、<code>camembert-base</code>の「ヘッド」がこのタスクに適していないため、結果が意味をなさないことになります！適切なチェックポイントを選択するために、ハギングフェイスハブインタフェースにあるタスクセレクタを使用することをお勧めします：",D,C,me='<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,ie="また、モデル・アーキテクチャを直接使用して、チェックポイントをインスタンス化することもできます：",K,g,j,Y,Z,O,A,ee;b=new Ze({props:{fw:d[0]}}),u=new We({props:{title:"学習済みモデルを使う",local:"学習済みモデルを使う",headingTag:"h1"}});const pe=[Ne,Ve],B=[];function be(e,a){return e[0]==="pt"?0:1}o=be(d),T=B[o]=pe[o](d),v=new G({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 G({props:{code:"JTVCJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGQlQzMlQTlsaWNpZXV4JTIwJTNBKSclMkMlMjAnc2NvcmUnJTNBJTIwMC40OTA5MTAwNTMyNTMxNzM4MyUyQyUyMCd0b2tlbiclM0ElMjA3MjAwJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZCVDMyVBOWxpY2lldXgnJTdEJTJDJTIwJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGV4Y2VsbGVudCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMTA1NTY5NzQyNjE5OTkxMyUyQyUyMCd0b2tlbiclM0ElMjAyMTgzJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZXhjZWxsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBzdWNjdWxlbnQlMjAlM0EpJyUyQyUyMCdzY29yZSclM0ElMjAwLjAzNDUzMzEzMTg2NzY0NzE3JTJDJTIwJ3Rva2VuJyUzQSUyMDI2MjAyJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnc3VjY3VsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBtZWlsbGV1ciUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMzMDMxNDExNDY4OTgyNyUyQyUyMCd0b2tlbiclM0ElMjA1MjglMkMlMjAndG9rZW5fc3RyJyUzQSUyMCdtZWlsbGV1ciclN0QlMkMlMjAlMEElMjAlMjAlN0Inc2VxdWVuY2UnJTNBJTIwJ0xlJTIwY2FtZW1iZXJ0JTIwZXN0JTIwcGFyZmFpdCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMwMDc2NTAxODkxMDE2OTYlMkMlMjAndG9rZW4nJTNBJTIwMTY1NCUyQyUyMCd0b2tlbl9zdHInJTNBJTIwJ3BhcmZhaXQnJTdEJTBBJTVE",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 ue=[ze,ve],F=[];function Me(e,a){return e[0]==="pt"?0:1}return g=Me(d),j=F[g]=ue[g](d),Z=new Ce({props:{$$slots:{default:[Ee]},$$scope:{ctx:d}}}),{c(){t=h("meta"),r=i(),l=h("p"),M=i(),k(b.$$.fragment),m=i(),k(u.$$.fragment),s=i(),T.c(),I=i(),W=h("p"),W.textContent=ae,X=i(),V=h("p"),V.textContent=ne,S=i(),_=h("div"),_.innerHTML=re,R=i(),N=h("p"),N.innerHTML=ce,L=i(),k(v.$$.fragment),q=i(),k(z.$$.fragment),H=i(),E=h("p"),E.innerHTML=oe,D=i(),C=h("div"),C.innerHTML=me,P=i(),Q=h("p"),Q.textContent=ie,K=i(),j.c(),Y=i(),k(Z.$$.fragment),O=i(),A=h("p"),this.h()},l(e){const a=xe("svelte-u9bgzb",document.head);t=J(a,"META",{name:!0,content:!0}),a.forEach(n),r=p(e),l=J(e,"P",{}),de(l).forEach(n),M=p(e),U(b.$$.fragment,e),m=p(e),U(u.$$.fragment,e),s=p(e),T.l(e),I=p(e),W=J(e,"P",{"data-svelte-h":!0}),w(W)!=="svelte-oxnnbw"&&(W.textContent=ae),X=p(e),V=J(e,"P",{"data-svelte-h":!0}),w(V)!=="svelte-hbvc84"&&(V.textContent=ne),S=p(e),_=J(e,"DIV",{class:!0,"data-svelte-h":!0}),w(_)!=="svelte-4k6hvy"&&(_.innerHTML=re),R=p(e),N=J(e,"P",{"data-svelte-h":!0}),w(N)!=="svelte-1ym08wy"&&(N.innerHTML=ce),L=p(e),U(v.$$.fragment,e),q=p(e),U(z.$$.fragment,e),H=p(e),E=J(e,"P",{"data-svelte-h":!0}),w(E)!=="svelte-1c36soc"&&(E.innerHTML=oe),D=p(e),C=J(e,"DIV",{class:!0,"data-svelte-h":!0}),w(C)!=="svelte-1cl7xbt"&&(C.innerHTML=me),P=p(e),Q=J(e,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-wa29am"&&(Q.textContent=ie),K=p(e),j.l(e),Y=p(e),U(Z.$$.fragment,e),O=p(e),A=J(e,"P",{}),de(A).forEach(n),this.h()},h(){se(t,"name","hf:doc:metadata"),se(t,"content",Be),se(_,"class","flex justify-center"),se(C,"class","flex justify-center")},m(e,a){$e(document.head,t),c(e,r,a),c(e,l,a),c(e,M,a),x(b,e,a),c(e,m,a),x(u,e,a),c(e,s,a),B[o].m(e,a),c(e,I,a),c(e,W,a),c(e,X,a),c(e,V,a),c(e,S,a),c(e,_,a),c(e,R,a),c(e,N,a),c(e,L,a),x(v,e,a),c(e,q,a),x(z,e,a),c(e,H,a),c(e,E,a),c(e,D,a),c(e,C,a),c(e,P,a),c(e,Q,a),c(e,K,a),F[g].m(e,a),c(e,Y,a),x(Z,e,a),c(e,O,a),c(e,A,a),ee=!0},p(e,[a]){const ye={};a&1&&(ye.fw=e[0]),b.$set(ye);let te=o;o=be(e),o!==te&&(Je(),y(B[te],1,1,()=>{B[te]=null}),he(),T=B[o],T||(T=B[o]=pe[o](e),T.c()),f(T,1),T.m(I.parentNode,I));let le=g;g=Me(e),g!==le&&(Je(),y(F[le],1,1,()=>{F[le]=null}),he(),j=F[g],j||(j=F[g]=ue[g](e),j.c()),f(j,1),j.m(Y.parentNode,Y));const fe={};a&2&&(fe.$$scope={dirty:a,ctx:e}),Z.$set(fe)},i(e){ee||(f(b.$$.fragment,e),f(u.$$.fragment,e),f(T),f(v.$$.fragment,e),f(z.$$.fragment,e),f(j),f(Z.$$.fragment,e),ee=!0)},o(e){y(b.$$.fragment,e),y(u.$$.fragment,e),y(T),y(v.$$.fragment,e),y(z.$$.fragment,e),y(j),y(Z.$$.fragment,e),ee=!1},d(e){e&&(n(r),n(l),n(M),n(m),n(s),n(I),n(W),n(X),n(V),n(S),n(_),n(R),n(N),n(L),n(q),n(H),n(E),n(D),n(C),n(P),n(Q),n(K),n(Y),n(O),n(A)),n(t),$(b,e),$(u,e),B[o].d(e),$(v,e),$(z,e),F[g].d(e),$(Z,e)}}}const Be='{"title":"学習済みモデルを使う","local":"学習済みモデルを使う","sections":[],"depth":1}';function Fe(d,t,r){let l="pt";return je(()=>{const M=new URLSearchParams(window.location.search);r(0,l=M.get("fw")||"pt")}),[l]}class Le extends ke{constructor(t){super(),Ue(this,t,Fe,Qe,ge,{})}}export{Le as component};
