import{s as bl,o as dl}from"../chunks/scheduler.37c15a92.js";import{S as Ml,i as $l,g as _,s as p,r as M,A as yl,h as b,f as r,c,j as fl,u as $,x as d,k as ml,y as Tl,a as o,v as y,t as f,b as he,d as m,w as T,p as je}from"../chunks/index.7cb9c9b8.js";import{Y as ul}from"../chunks/Youtube.8666c400.js";import{C as J}from"../chunks/CodeBlock.a6d3f852.js";import{C as _l}from"../chunks/CourseFloatingBanner.2c4a7381.js";import{F as kl}from"../chunks/FrameworkSwitchCourse.97630871.js";import{H as Re}from"../chunks/Heading.d3928e2a.js";function wl(u){let l,s;return l=new _l({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_tf.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Jl(u){let l,s;return l=new _l({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter2/section3_pt.ipynb"}]}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function gl(u){let l,s;return l=new ul({props:{id:"d3JVgghSOew"}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function hl(u){let l,s;return l=new ul({props:{id:"AhChOFRegn4"}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function jl(u){let l,s="このセクションでは、モデルの作成と使用について詳しく見ていきます。ここでは、チェックポイントから任意のモデルをインスタンス化する際に便利な <code>TFAutoModel</code> クラスを使用します。",t,i,k="<code>TFAutoModel</code> クラスとその関連クラスは、実際にはライブラリで利用可能な様々なモデルに対する単純なラッパーです。このクラスは、チェックポイントに適したモデルのアーキテクチャを自動的に推測し、そのアーキテクチャを持つモデルをインスタンス化することができる賢いラッパーです。";return{c(){l=_("p"),l.innerHTML=s,t=p(),i=_("p"),i.innerHTML=k},l(a){l=b(a,"P",{"data-svelte-h":!0}),d(l)!=="svelte-rp3hpa"&&(l.innerHTML=s),t=c(a),i=b(a,"P",{"data-svelte-h":!0}),d(i)!=="svelte-qwczry"&&(i.innerHTML=k)},m(a,w){o(a,l,w),o(a,t,w),o(a,i,w)},d(a){a&&(r(l),r(t),r(i))}}}function Cl(u){let l,s="このセクションでは、モデルの作成と使用について詳しく見ていきます。ここでは、チェックポイントから任意のモデルをインスタンス化する際に便利な <code>AutoModel</code> クラスを使用します。",t,i,k="<code>AutoModel</code> クラスとその関連クラスは、実際にはライブラリで利用可能な様々なモデルを覆うシンプルなラッパーです。このクラスは、チェックポイントに適したモデルのアーキテクチャを自動的に推測し、そのアーキテクチャを持つモデルをインスタンス化することができる賢いラッパーです。";return{c(){l=_("p"),l.innerHTML=s,t=p(),i=_("p"),i.innerHTML=k},l(a){l=b(a,"P",{"data-svelte-h":!0}),d(l)!=="svelte-1lh35hk"&&(l.innerHTML=s),t=c(a),i=b(a,"P",{"data-svelte-h":!0}),d(i)!=="svelte-af36ph"&&(i.innerHTML=k)},m(a,w){o(a,l,w),o(a,t,w),o(a,i,w)},d(a){a&&(r(l),r(t),r(i))}}}function vl(u){let l,s;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwY29uZmlnJTBBY29uZmlnJTIwJTNEJTIwQmVydENvbmZpZygpJTBBJTBBJTIzJTIwQnVpbGRpbmclMjB0aGUlMjBtb2RlbCUyMGZyb20lMjB0aGUlMjBjb25maWclMEFtb2RlbCUyMCUzRCUyMFRGQmVydE1vZGVsKGNvbmZpZyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = TFBertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Zl(u){let l,s;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEElMjMlMjBCdWlsZGluZyUyMHRoZSUyMGNvbmZpZyUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwbW9kZWwlMjBmcm9tJTIwdGhlJTIwY29uZmlnJTBBbW9kZWwlMjAlM0QlMjBCZXJ0TW9kZWwoY29uZmlnKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = BertModel(config)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Bl(u){let l,s;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQW1vZGVsJTIwJTNEJTIwVEZCZXJ0TW9kZWwoY29uZmlnKSUwQSUwQSUyMyUyME1vZGVsJTIwaXMlMjByYW5kb21seSUyMGluaXRpYWxpemVkIQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Ul(u){let l,s;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEFjb25maWclMjAlM0QlMjBCZXJ0Q29uZmlnKCklMEFtb2RlbCUyMCUzRCUyMEJlcnRNb2RlbChjb25maWcpJTBBJTBBJTIzJTIwTW9kZWwlMjBpcyUyMHJhbmRvbWx5JTIwaW5pdGlhbGl6ZWQh",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Wl(u){let l,s,t,i="先ほど見たように、 <code>TFBertModel</code> を同等のクラスである <code>TFAutoModel</code> に置き換えることができます。チェックポイントに依存しないコードを生成するため、今後はこの方法をとります。あるチェックポイントで動作するコードは、別のチェックポイントでもシームレスに動作するはずです。これはアーキテクチャが異なっていても、チェックポイントが同様のタスク (例えばセンチメント分析タスク) に対して学習されたものである限り、当てはまります。",k;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQmVydE1vZGVsJTBBJTBBbW9kZWwlMjAlM0QlMjBURkJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyYmVydC1iYXNlLWNhc2VkJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFBertModel

model = TFBertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),s=p(),t=_("p"),t.innerHTML=i},l(a){$(l.$$.fragment,a),s=c(a),t=b(a,"P",{"data-svelte-h":!0}),d(t)!=="svelte-jkzvh7"&&(t.innerHTML=i)},m(a,w){y(l,a,w),o(a,s,w),o(a,t,w),k=!0},i(a){k||(m(l.$$.fragment,a),k=!0)},o(a){f(l.$$.fragment,a),k=!1},d(a){a&&(r(s),r(t)),T(l,a)}}}function El(u){let l,s,t,i="先ほど見たように、 <code>BertModel</code> を同等のクラスである <code>AutoModel</code> に置き換えることができます。チェックポイントに依存しないコードを生成するため、今後はこの方法をとります。あるチェックポイントで動作するコードは、別のチェックポイントでもシームレスに動作するはずです。これはアーキテクチャが異なっていても、チェックポイントが同様のタスク (例えばセンチメント分析タスク) に対して学習されたものである限り、当てはまります。",k;return l=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUwQSUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel

model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){M(l.$$.fragment),s=p(),t=_("p"),t.innerHTML=i},l(a){$(l.$$.fragment,a),s=c(a),t=b(a,"P",{"data-svelte-h":!0}),d(t)!=="svelte-oj1k5z"&&(t.innerHTML=i)},m(a,w){y(l,a,w),o(a,s,w),o(a,t,w),k=!0},i(a){k||(m(l.$$.fragment,a),k=!0)},o(a){f(l.$$.fragment,a),k=!1},d(a){a&&(r(s),r(t)),T(l,a)}}}function Il(u){let l,s;return l=new J({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHRmX21vZGVsLmg1",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>tf_model.h5`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function xl(u){let l,s;return l=new J({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHB5dG9yY2hfbW9kZWwuYmlu",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>pytorch_model.<span class="hljs-keyword">bin</span>`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Rl(u){let l,s="<em>tf_model.h5</em>ファイルは<em>state dictionary</em>として知られており、すべてのモデルの重みが含まれています。この2つのファイルは密接に関係しています。設定はモデルのアーキテクチャを知るために必要であり、モデルの重みはモデルのパラメータです。";return{c(){l=_("p"),l.innerHTML=s},l(t){l=b(t,"P",{"data-svelte-h":!0}),d(l)!=="svelte-peffor"&&(l.innerHTML=s)},m(t,i){o(t,l,i)},d(t){t&&r(l)}}}function Hl(u){let l,s="<em>pytorch_model.bin</em> ファイルは <em>state dictionary</em> として知られており、モデルのすべての重みが含まれています。この2つのファイルは密接に関係しています。コンフィギュレーションはモデルのアーキテクチャを知るために必要であり、モデルの重みはモデルのパラメータです。";return{c(){l=_("p"),l.innerHTML=s},l(t){l=b(t,"P",{"data-svelte-h":!0}),d(l)!=="svelte-1fgyf49"&&(l.innerHTML=s)},m(t,i){o(t,l,i)},d(t){t&&r(l)}}}function Vl(u){let l,s;return l=new J({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0Zi5jb25zdGFudChlbmNvZGVkX3NlcXVlbmNlcyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

model_inputs = tf.constant(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Gl(u){let l,s;return l=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW5jb2RlZF9zZXF1ZW5jZXMp",highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`,wrap:!1}}),{c(){M(l.$$.fragment)},l(t){$(l.$$.fragment,t)},m(t,i){y(l,t,i),s=!0},i(t){s||(m(l.$$.fragment,t),s=!0)},o(t){f(l.$$.fragment,t),s=!1},d(t){T(l,t)}}}function Nl(u){let l,s,t,i,k,a,w,Ve,g,h,Ce,j,C,ve,Ze,N,Ct="しかし、使用したいモデルの種類がわかっている場合は、そのアーキテクチャを定義するクラスを直接使用することができます。BERTモデルでこれがどのように機能するかを見てみましょう。",Ge,z,Ne,Q,vt="BERTモデルを初期化するために最初にしなければならないことは、コンフィギュレーションオブジェクトをロードすることです。",ze,v,Z,Be,L,Zt="コンフィギュレーションには、モデルを構築するために使用される多くの属性が含まれています。",Qe,A,Le,F,Ae,X,Bt="我々は、これらの属性のすべてが何をするかまだ見ていませんが、そのうちのいくつかを認識する必要があります: <code>hidden_​​size</code> 属性は <code>hidden_​​states</code> ベクトルのサイズを定義し、<code>num_hidden_​​layers</code> は Transformer モデルが持つレイヤーの数を定義します。",Fe,Y,Xe,P,Ut="デフォルトのコンフィギュレーション(設定)からモデルを作成すると、ランダムな値で初期化されます。",Ye,B,U,Ue,S,Wt='この状態でもモデルは使えますが、意味不明な出力になってしまうので、まず学習させる必要があります。手元のタスクに対して一からモデルを学習させることもできますが、<a href="/course/chapter1">第1章</a>で見たように、長い時間と多くのデータを必要とし、環境負荷も無視できないものになるでしょう。無駄な努力や重複を避けるためには、既に学習済みのモデルを共有・再利用できることが必須です。',Pe,q,Et="既に学習済みのTransformerモデルをロードするのは簡単です。<code>from_pretrained()</code> メソッドを使ってこれを行うことができます。",Se,W,E,We,D,It='上記のコードサンプルでは <code>BertConfig</code> を使用せず、代わりに <code>bert-base-cased</code> を介して事前に学習されたモデルをロードしています。これはBERTの作者自身によって学習されたモデルのチェックポイントです。これについての詳細はその<a href="https://huggingface.co/bert-base-cased" rel="nofollow">モデルカード</a>に記載されています。',qe,K,xt="このモデルは現在、チェックポイントのすべての重みで初期化されています。これは訓練されたタスクの推論に直接使用することができ、また、新しいタスクでファインチューニングすることができます。ゼロからではなく、事前に学習させた重みを用いて学習させることで、迅速に良い結果を得ることができます。",De,O,Rt="重みはダウンロードされ、キャッシュフォルダ（デフォルトは <em>~/.cache/huggingface/transformers</em> ）に保存されます（将来 <code>from_pretrained()</code> メソッドを呼び出したときに再ダウンロードされないようにするため）。環境変数 <code>HF_HOME</code> を設定することで、キャッシュフォルダをカスタマイズすることができます。",Ke,ee,Ht='モデルをロードするために使用される識別子は、BERTアーキテクチャと互換性がある限り、モデルハブ上の任意のモデルの識別子を使用することができます。利用可能なBERTチェックポイントの全リストは、<a href="https://huggingface.co/models?filter=bert" rel="nofollow">ここ</a>で確認できます。',Oe,te,et,le,Vt="モデルの保存はロードするのと同じくらい簡単で、<code>from_pretrained()</code> メソッドに類似した <code>save_pretrained()</code> メソッドを使用します。",tt,ne,lt,se,Gt="これにより、2つのファイルがディスクに保存されます。",nt,I,x,Ee,re,Nt="<em>config.json</em> ファイルを見てみると、モデルアーキテクチャを構築するために必要な属性がわかると思います。このファイルには、チェックポイントがどこで発生したのか、最後にチェックポイントを保存したときに使用していた🤗 Transformersのバージョンなどのメタデータも含まれています。",st,Ie,oe,rt,ie,zt="さて、モデルをロードして保存する方法がわかったので、それを使って予測をしてみましょう。トランスフォーマーモデルは数値、つまりトークナイザが生成する数値だけを処理することができます。しかし、トークナイザについて説明する前に、モデルがどのような入力を受け入れるかを探ってみましょう。",ot,ae,Qt="トークナイザは入力を適切なフレームワークのテンソルにキャストすることを引き受けてくれますが、何が起こっているかを理解するために、入力をモデルに送る前に行わなければならないことを簡単に見てみましょう。",it,pe,Lt="例えば、いくつかの文があるとします。",at,ce,pt,fe,At="トークナイザはこれらを一般に<em>入力ID</em>と呼ばれる語彙のインデックスに変換します。各文は今は数字の羅列です。その結果、出力は次のようになります。",ct,me,ft,ue,Ft="これはエンコードされた文のリストであり、リストのリストです。テンソルは長方形の形しか受け付けません（行列を考えてみましょう）。この「配列」はすでに矩形であるので、テンソルに変換するのは簡単です。",mt,R,H,xe,_e,ut,be,Xt="モデルでテンソルを使うのは非常に簡単で、モデルの呼び出し時に入力として渡すだけです。",_t,de,bt,Me,Yt=`このモデルは多くの異なる引数を受け付けますが、必要なのは入力IDだけです。他の引数が何をするのか、いつ必要なのかは後で説明します。
しかし、まずはTransformerモデルが理解できる入力を構築するトークナイザを詳しく見る必要があります。`,dt,He,Mt;k=new kl({props:{fw:u[0]}}),w=new Re({props:{title:"モデル",local:"モデル",headingTag:"h1"}});const Pt=[Jl,wl],$e=[];function St(e,n){return e[0]==="pt"?0:1}g=St(u),h=$e[g]=Pt[g](u);const qt=[hl,gl],ye=[];function Dt(e,n){return e[0]==="pt"?0:1}j=Dt(u),C=ye[j]=qt[j](u);function Kt(e,n){return e[0]==="pt"?Cl:jl}let $t=Kt(u),V=$t(u);z=new Re({props:{title:"トランスフォーマーモデルを作成する",local:"トランスフォーマーモデルを作成する",headingTag:"h2"}});const Ot=[Zl,vl],Te=[];function el(e,n){return e[0]==="pt"?0:1}v=el(u),Z=Te[v]=Ot[v](u),A=new J({props:{code:"cHJpbnQoY29uZmlnKQ==",highlighted:'<span class="hljs-built_in">print</span>(config)',wrap:!1}}),F=new J({props:{code:"QmVydENvbmZpZyUyMCU3QiUwQSUyMCUyMCU1Qi4uLiU1RCUwQSUyMCUyMCUyMmhpZGRlbl9zaXplJTIyJTNBJTIwNzY4JTJDJTBBJTIwJTIwJTIyaW50ZXJtZWRpYXRlX3NpemUlMjIlM0ElMjAzMDcyJTJDJTBBJTIwJTIwJTIybWF4X3Bvc2l0aW9uX2VtYmVkZGluZ3MlMjIlM0ElMjA1MTIlMkMlMEElMjAlMjAlMjJudW1fYXR0ZW50aW9uX2hlYWRzJTIyJTNBJTIwMTIlMkMlMEElMjAlMjAlMjJudW1faGlkZGVuX2xheWVycyUyMiUzQSUyMDEyJTJDJTBBJTIwJTIwJTVCLi4uJTVEJTBBJTdE",highlighted:`BertConfig {
  [...]
  <span class="hljs-string">&quot;hidden_size&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;intermediate_size&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;num_attention_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;num_hidden_layers&quot;</span>: <span class="hljs-number">12</span>,
  [...]
}`,wrap:!1}}),Y=new Re({props:{title:"さまざまなローディング方法",local:"さまざまなローディング方法",headingTag:"h3"}});const tl=[Ul,Bl],ke=[];function ll(e,n){return e[0]==="pt"?0:1}B=ll(u),U=ke[B]=tl[B](u);const nl=[El,Wl],we=[];function sl(e,n){return e[0]==="pt"?0:1}W=sl(u),E=we[W]=nl[W](u),te=new Re({props:{title:"保存方法",local:"保存方法",headingTag:"h3"}}),ne=new J({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMmRpcmVjdG9yeV9vbl9teV9jb21wdXRlciUyMik=",highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)',wrap:!1}});const rl=[xl,Il],Je=[];function ol(e,n){return e[0]==="pt"?0:1}I=ol(u),x=Je[I]=rl[I](u);function il(e,n){return e[0]==="pt"?Hl:Rl}let yt=il(u),G=yt(u);oe=new Re({props:{title:"推論のためのトランスフォーマーモデルの使用",local:"推論のためのトランスフォーマーモデルの使用",headingTag:"h2"}}),ce=new J({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySGVsbG8hJTIyJTJDJTIwJTIyQ29vbC4lMjIlMkMlMjAlMjJOaWNlISUyMiU1RA==",highlighted:'sequences = [<span class="hljs-string">&quot;Hello!&quot;</span>, <span class="hljs-string">&quot;Cool.&quot;</span>, <span class="hljs-string">&quot;Nice!&quot;</span>]',wrap:!1}}),me=new J({props:{code:"ZW5jb2RlZF9zZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjA3NTkyJTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMTAxJTJDJTIwNDY1OCUyQyUyMDEwMTIlMkMlMjAxMDIlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjAzODM1JTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTVE",highlighted:`encoded_sequences = [
    [<span class="hljs-number">101</span>, <span class="hljs-number">7592</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">4658</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">3835</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
]`,wrap:!1}});const al=[Gl,Vl],ge=[];function pl(e,n){return e[0]==="pt"?0:1}return R=pl(u),H=ge[R]=al[R](u),_e=new Re({props:{title:"モデルの入力としてのテンソルの使用",local:"モデルの入力としてのテンソルの使用",headingTag:"h3"}}),de=new J({props:{code:"b3V0cHV0JTIwJTNEJTIwbW9kZWwobW9kZWxfaW5wdXRzKQ==",highlighted:"output = model(model_inputs)",wrap:!1}}),{c(){l=_("meta"),s=p(),t=_("p"),i=p(),M(k.$$.fragment),a=p(),M(w.$$.fragment),Ve=p(),h.c(),Ce=p(),C.c(),ve=p(),V.c(),Ze=p(),N=_("p"),N.textContent=Ct,Ge=p(),M(z.$$.fragment),Ne=p(),Q=_("p"),Q.textContent=vt,ze=p(),Z.c(),Be=p(),L=_("p"),L.textContent=Zt,Qe=p(),M(A.$$.fragment),Le=p(),M(F.$$.fragment),Ae=p(),X=_("p"),X.innerHTML=Bt,Fe=p(),M(Y.$$.fragment),Xe=p(),P=_("p"),P.textContent=Ut,Ye=p(),U.c(),Ue=p(),S=_("p"),S.innerHTML=Wt,Pe=p(),q=_("p"),q.innerHTML=Et,Se=p(),E.c(),We=p(),D=_("p"),D.innerHTML=It,qe=p(),K=_("p"),K.textContent=xt,De=p(),O=_("p"),O.innerHTML=Rt,Ke=p(),ee=_("p"),ee.innerHTML=Ht,Oe=p(),M(te.$$.fragment),et=p(),le=_("p"),le.innerHTML=Vt,tt=p(),M(ne.$$.fragment),lt=p(),se=_("p"),se.textContent=Gt,nt=p(),x.c(),Ee=p(),re=_("p"),re.innerHTML=Nt,st=p(),G.c(),Ie=p(),M(oe.$$.fragment),rt=p(),ie=_("p"),ie.textContent=zt,ot=p(),ae=_("p"),ae.textContent=Qt,it=p(),pe=_("p"),pe.textContent=Lt,at=p(),M(ce.$$.fragment),pt=p(),fe=_("p"),fe.innerHTML=At,ct=p(),M(me.$$.fragment),ft=p(),ue=_("p"),ue.textContent=Ft,mt=p(),H.c(),xe=p(),M(_e.$$.fragment),ut=p(),be=_("p"),be.textContent=Xt,_t=p(),M(de.$$.fragment),bt=p(),Me=_("p"),Me.textContent=Yt,dt=p(),He=_("p"),this.h()},l(e){const n=yl("svelte-u9bgzb",document.head);l=b(n,"META",{name:!0,content:!0}),n.forEach(r),s=c(e),t=b(e,"P",{}),fl(t).forEach(r),i=c(e),$(k.$$.fragment,e),a=c(e),$(w.$$.fragment,e),Ve=c(e),h.l(e),Ce=c(e),C.l(e),ve=c(e),V.l(e),Ze=c(e),N=b(e,"P",{"data-svelte-h":!0}),d(N)!=="svelte-1b2b4r0"&&(N.textContent=Ct),Ge=c(e),$(z.$$.fragment,e),Ne=c(e),Q=b(e,"P",{"data-svelte-h":!0}),d(Q)!=="svelte-bt4ex9"&&(Q.textContent=vt),ze=c(e),Z.l(e),Be=c(e),L=b(e,"P",{"data-svelte-h":!0}),d(L)!=="svelte-iqsxll"&&(L.textContent=Zt),Qe=c(e),$(A.$$.fragment,e),Le=c(e),$(F.$$.fragment,e),Ae=c(e),X=b(e,"P",{"data-svelte-h":!0}),d(X)!=="svelte-1idjgja"&&(X.innerHTML=Bt),Fe=c(e),$(Y.$$.fragment,e),Xe=c(e),P=b(e,"P",{"data-svelte-h":!0}),d(P)!=="svelte-19zulca"&&(P.textContent=Ut),Ye=c(e),U.l(e),Ue=c(e),S=b(e,"P",{"data-svelte-h":!0}),d(S)!=="svelte-8ey5b2"&&(S.innerHTML=Wt),Pe=c(e),q=b(e,"P",{"data-svelte-h":!0}),d(q)!=="svelte-ezbjkd"&&(q.innerHTML=Et),Se=c(e),E.l(e),We=c(e),D=b(e,"P",{"data-svelte-h":!0}),d(D)!=="svelte-1tgzrgv"&&(D.innerHTML=It),qe=c(e),K=b(e,"P",{"data-svelte-h":!0}),d(K)!=="svelte-6iw1by"&&(K.textContent=xt),De=c(e),O=b(e,"P",{"data-svelte-h":!0}),d(O)!=="svelte-jo3vr8"&&(O.innerHTML=Rt),Ke=c(e),ee=b(e,"P",{"data-svelte-h":!0}),d(ee)!=="svelte-1pdt9z"&&(ee.innerHTML=Ht),Oe=c(e),$(te.$$.fragment,e),et=c(e),le=b(e,"P",{"data-svelte-h":!0}),d(le)!=="svelte-1wpooyu"&&(le.innerHTML=Vt),tt=c(e),$(ne.$$.fragment,e),lt=c(e),se=b(e,"P",{"data-svelte-h":!0}),d(se)!=="svelte-1pb3vmo"&&(se.textContent=Gt),nt=c(e),x.l(e),Ee=c(e),re=b(e,"P",{"data-svelte-h":!0}),d(re)!=="svelte-1njuu5t"&&(re.innerHTML=Nt),st=c(e),G.l(e),Ie=c(e),$(oe.$$.fragment,e),rt=c(e),ie=b(e,"P",{"data-svelte-h":!0}),d(ie)!=="svelte-w3hy8e"&&(ie.textContent=zt),ot=c(e),ae=b(e,"P",{"data-svelte-h":!0}),d(ae)!=="svelte-2g8gjm"&&(ae.textContent=Qt),it=c(e),pe=b(e,"P",{"data-svelte-h":!0}),d(pe)!=="svelte-8t1nuk"&&(pe.textContent=Lt),at=c(e),$(ce.$$.fragment,e),pt=c(e),fe=b(e,"P",{"data-svelte-h":!0}),d(fe)!=="svelte-1azh592"&&(fe.innerHTML=At),ct=c(e),$(me.$$.fragment,e),ft=c(e),ue=b(e,"P",{"data-svelte-h":!0}),d(ue)!=="svelte-ghuus7"&&(ue.textContent=Ft),mt=c(e),H.l(e),xe=c(e),$(_e.$$.fragment,e),ut=c(e),be=b(e,"P",{"data-svelte-h":!0}),d(be)!=="svelte-8czuu3"&&(be.textContent=Xt),_t=c(e),$(de.$$.fragment,e),bt=c(e),Me=b(e,"P",{"data-svelte-h":!0}),d(Me)!=="svelte-bcnn37"&&(Me.textContent=Yt),dt=c(e),He=b(e,"P",{}),fl(He).forEach(r),this.h()},h(){ml(l,"name","hf:doc:metadata"),ml(l,"content",zl)},m(e,n){Tl(document.head,l),o(e,s,n),o(e,t,n),o(e,i,n),y(k,e,n),o(e,a,n),y(w,e,n),o(e,Ve,n),$e[g].m(e,n),o(e,Ce,n),ye[j].m(e,n),o(e,ve,n),V.m(e,n),o(e,Ze,n),o(e,N,n),o(e,Ge,n),y(z,e,n),o(e,Ne,n),o(e,Q,n),o(e,ze,n),Te[v].m(e,n),o(e,Be,n),o(e,L,n),o(e,Qe,n),y(A,e,n),o(e,Le,n),y(F,e,n),o(e,Ae,n),o(e,X,n),o(e,Fe,n),y(Y,e,n),o(e,Xe,n),o(e,P,n),o(e,Ye,n),ke[B].m(e,n),o(e,Ue,n),o(e,S,n),o(e,Pe,n),o(e,q,n),o(e,Se,n),we[W].m(e,n),o(e,We,n),o(e,D,n),o(e,qe,n),o(e,K,n),o(e,De,n),o(e,O,n),o(e,Ke,n),o(e,ee,n),o(e,Oe,n),y(te,e,n),o(e,et,n),o(e,le,n),o(e,tt,n),y(ne,e,n),o(e,lt,n),o(e,se,n),o(e,nt,n),Je[I].m(e,n),o(e,Ee,n),o(e,re,n),o(e,st,n),G.m(e,n),o(e,Ie,n),y(oe,e,n),o(e,rt,n),o(e,ie,n),o(e,ot,n),o(e,ae,n),o(e,it,n),o(e,pe,n),o(e,at,n),y(ce,e,n),o(e,pt,n),o(e,fe,n),o(e,ct,n),y(me,e,n),o(e,ft,n),o(e,ue,n),o(e,mt,n),ge[R].m(e,n),o(e,xe,n),y(_e,e,n),o(e,ut,n),o(e,be,n),o(e,_t,n),y(de,e,n),o(e,bt,n),o(e,Me,n),o(e,dt,n),o(e,He,n),Mt=!0},p(e,[n]){const cl={};n&1&&(cl.fw=e[0]),k.$set(cl);let Tt=g;g=St(e),g!==Tt&&(je(),f($e[Tt],1,1,()=>{$e[Tt]=null}),he(),h=$e[g],h||(h=$e[g]=Pt[g](e),h.c()),m(h,1),h.m(Ce.parentNode,Ce));let kt=j;j=Dt(e),j!==kt&&(je(),f(ye[kt],1,1,()=>{ye[kt]=null}),he(),C=ye[j],C||(C=ye[j]=qt[j](e),C.c()),m(C,1),C.m(ve.parentNode,ve)),$t!==($t=Kt(e))&&(V.d(1),V=$t(e),V&&(V.c(),V.m(Ze.parentNode,Ze)));let wt=v;v=el(e),v!==wt&&(je(),f(Te[wt],1,1,()=>{Te[wt]=null}),he(),Z=Te[v],Z||(Z=Te[v]=Ot[v](e),Z.c()),m(Z,1),Z.m(Be.parentNode,Be));let Jt=B;B=ll(e),B!==Jt&&(je(),f(ke[Jt],1,1,()=>{ke[Jt]=null}),he(),U=ke[B],U||(U=ke[B]=tl[B](e),U.c()),m(U,1),U.m(Ue.parentNode,Ue));let gt=W;W=sl(e),W!==gt&&(je(),f(we[gt],1,1,()=>{we[gt]=null}),he(),E=we[W],E||(E=we[W]=nl[W](e),E.c()),m(E,1),E.m(We.parentNode,We));let ht=I;I=ol(e),I!==ht&&(je(),f(Je[ht],1,1,()=>{Je[ht]=null}),he(),x=Je[I],x||(x=Je[I]=rl[I](e),x.c()),m(x,1),x.m(Ee.parentNode,Ee)),yt!==(yt=il(e))&&(G.d(1),G=yt(e),G&&(G.c(),G.m(Ie.parentNode,Ie)));let jt=R;R=pl(e),R!==jt&&(je(),f(ge[jt],1,1,()=>{ge[jt]=null}),he(),H=ge[R],H||(H=ge[R]=al[R](e),H.c()),m(H,1),H.m(xe.parentNode,xe))},i(e){Mt||(m(k.$$.fragment,e),m(w.$$.fragment,e),m(h),m(C),m(z.$$.fragment,e),m(Z),m(A.$$.fragment,e),m(F.$$.fragment,e),m(Y.$$.fragment,e),m(U),m(E),m(te.$$.fragment,e),m(ne.$$.fragment,e),m(x),m(oe.$$.fragment,e),m(ce.$$.fragment,e),m(me.$$.fragment,e),m(H),m(_e.$$.fragment,e),m(de.$$.fragment,e),Mt=!0)},o(e){f(k.$$.fragment,e),f(w.$$.fragment,e),f(h),f(C),f(z.$$.fragment,e),f(Z),f(A.$$.fragment,e),f(F.$$.fragment,e),f(Y.$$.fragment,e),f(U),f(E),f(te.$$.fragment,e),f(ne.$$.fragment,e),f(x),f(oe.$$.fragment,e),f(ce.$$.fragment,e),f(me.$$.fragment,e),f(H),f(_e.$$.fragment,e),f(de.$$.fragment,e),Mt=!1},d(e){e&&(r(s),r(t),r(i),r(a),r(Ve),r(Ce),r(ve),r(Ze),r(N),r(Ge),r(Ne),r(Q),r(ze),r(Be),r(L),r(Qe),r(Le),r(Ae),r(X),r(Fe),r(Xe),r(P),r(Ye),r(Ue),r(S),r(Pe),r(q),r(Se),r(We),r(D),r(qe),r(K),r(De),r(O),r(Ke),r(ee),r(Oe),r(et),r(le),r(tt),r(lt),r(se),r(nt),r(Ee),r(re),r(st),r(Ie),r(rt),r(ie),r(ot),r(ae),r(it),r(pe),r(at),r(pt),r(fe),r(ct),r(ft),r(ue),r(mt),r(xe),r(ut),r(be),r(_t),r(bt),r(Me),r(dt),r(He)),r(l),T(k,e),T(w,e),$e[g].d(e),ye[j].d(e),V.d(e),T(z,e),Te[v].d(e),T(A,e),T(F,e),T(Y,e),ke[B].d(e),we[W].d(e),T(te,e),T(ne,e),Je[I].d(e),G.d(e),T(oe,e),T(ce,e),T(me,e),ge[R].d(e),T(_e,e),T(de,e)}}}const zl='{"title":"モデル","local":"モデル","sections":[{"title":"トランスフォーマーモデルを作成する","local":"トランスフォーマーモデルを作成する","sections":[{"title":"さまざまなローディング方法","local":"さまざまなローディング方法","sections":[],"depth":3},{"title":"保存方法","local":"保存方法","sections":[],"depth":3}],"depth":2},{"title":"推論のためのトランスフォーマーモデルの使用","local":"推論のためのトランスフォーマーモデルの使用","sections":[{"title":"モデルの入力としてのテンソルの使用","local":"モデルの入力としてのテンソルの使用","sections":[],"depth":3}],"depth":2}],"depth":1}';function Ql(u,l,s){let t="pt";return dl(()=>{const i=new URLSearchParams(window.location.search);s(0,t=i.get("fw")||"pt")}),[t]}class ql extends Ml{constructor(l){super(),$l(this,l,Ql,Nl,bl,{})}}export{ql as component};
