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