import{s as Ys,o as Qs,n as me}from"../chunks/scheduler.9bc65507.js";import{S as qs,i as As,g as b,s as o,r as M,A as Ls,h as j,f as l,c as m,j as Fs,u,x as T,k as Ns,y as Ps,a,v as h,d as y,t as d,w as $,m as Es,n as Ss}from"../chunks/index.707bf1b6.js";import{T as bs}from"../chunks/Tip.c2ecdbf4.js";import{Y as zs}from"../chunks/Youtube.e1129c6f.js";import{C as R}from"../chunks/CodeBlock.54a9f38d.js";import{D as Ds}from"../chunks/DocNotebookDropdown.41f65cb5.js";import{F as js,M as ze}from"../chunks/Markdown.8ab98a13.js";import{H as Ne}from"../chunks/Heading.342b1fa6.js";function Ks(k){let t,c,s='<a href="../model_doc/bart">BART</a>, <a href="../model_doc/bigbird_pegasus">BigBird-Pegasus</a>, <a href="../model_doc/blenderbot">Blenderbot</a>, <a href="../model_doc/blenderbot-small">BlenderbotSmall</a>, <a href="../model_doc/encoder-decoder">Encoder decoder</a>, <a href="../model_doc/fsmt">FairSeq Machine-Translation</a>, <a href="../model_doc/gptsan-japanese">GPTSAN-japanese</a>, <a href="../model_doc/led">LED</a>, <a href="../model_doc/longt5">LongT5</a>, <a href="../model_doc/m2m_100">M2M100</a>, <a href="../model_doc/marian">Marian</a>, <a href="../model_doc/mbart">mBART</a>, <a href="../model_doc/mt5">MT5</a>, <a href="../model_doc/mvp">MVP</a>, <a href="../model_doc/nllb">NLLB</a>, <a href="../model_doc/nllb-moe">NLLB-MOE</a>, <a href="../model_doc/pegasus">Pegasus</a>, <a href="../model_doc/pegasus_x">PEGASUS-X</a>, <a href="../model_doc/plbart">PLBart</a>, <a href="../model_doc/prophetnet">ProphetNet</a>, <a href="../model_doc/switch_transformers">SwitchTransformers</a>, <a href="../model_doc/t5">T5</a>, <a href="../model_doc/umt5">UMT5</a>, <a href="../model_doc/xlm-prophetnet">XLM-ProphetNet</a>';return{c(){t=Es(`このチュートリアルで説明するタスクは、次のモデル アーキテクチャでサポートされています。

`),c=b("p"),c.innerHTML=s},l(i){t=Ss(i,`このチュートリアルで説明するタスクは、次のモデル アーキテクチャでサポートされています。

`),c=j(i,"P",{"data-svelte-h":!0}),T(c)!=="svelte-2s8ce4"&&(c.innerHTML=s)},m(i,g){a(i,t,g),a(i,c,g)},p:me,d(i){i&&(l(t),l(c))}}}function Os(k){let t,c;return t=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvclNlcTJTZXElMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yU2VxMlNlcSh0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMjBtb2RlbCUzRGNoZWNrcG9pbnQp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForSeq2Seq

<span class="hljs-meta">&gt;&gt;&gt; </span>data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer, model=checkpoint)`,wrap:!1}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p:me,i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function et(k){let t,c;return t=new ze({props:{$$slots:{default:[Os]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function st(k){let t,c;return t=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvclNlcTJTZXElMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yU2VxMlNlcSh0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMjBtb2RlbCUzRGNoZWNrcG9pbnQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForSeq2Seq

<span class="hljs-meta">&gt;&gt;&gt; </span>data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer, model=checkpoint, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)`,wrap:!1}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p:me,i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function tt(k){let t,c;return t=new ze({props:{$$slots:{default:[st]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function lt(k){let t,c='<a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Trainer">Trainer</a> を使用したモデルの微調整に慣れていない場合は、<a href="../training#train-with-pytorch-trainer">ここ</a> の基本的なチュートリアルをご覧ください。';return{c(){t=b("p"),t.innerHTML=c},l(s){t=j(s,"P",{"data-svelte-h":!0}),T(t)!=="svelte-1ubngji"&&(t.innerHTML=c)},m(s,i){a(s,t,i)},p:me,d(s){s&&l(t)}}}function at(k){let t,c,s,i='これでモデルのトレーニングを開始する準備が整いました。 <a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoModelForSeq2SeqLM">AutoModelForSeq2SeqLM</a> を使用して T5 をロードします。',g,Z,V,X,C="この時点で残っているステップは 3 つだけです。",B,U,I='<li><a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Seq2SeqTrainingArguments">Seq2SeqTrainingArguments</a> でトレーニング ハイパーパラメータを定義します。唯一の必須パラメータは、モデルの保存場所を指定する <code>output_dir</code> です。 <code>push_to_hub=True</code>を設定して、このモデルをハブにプッシュします (モデルをアップロードするには、Hugging Face にサインインする必要があります)。各エポックの終了時に、<a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Trainer">Trainer</a> は SacreBLEU メトリクスを評価し、トレーニング チェックポイントを保存します。</li> <li>トレーニング引数をモデル、データセット、トークナイザー、データ照合器、および <code>compute_metrics</code> 関数とともに <a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Seq2SeqTrainer">Seq2SeqTrainer</a> に渡します。</li> <li><a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Trainer.train">train()</a> を呼び出してモデルを微調整します。</li>',G,_,x,r,J='トレーニングが完了したら、 <a href="/docs/transformers/main/ja/main_classes/trainer#transformers.Trainer.push_to_hub">push_to_hub()</a> メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できるようにします。',F,H,W;return t=new bs({props:{$$slots:{default:[lt]},$$scope:{ctx:k}}}),Z=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcTJTZXFMTSUyQyUyMFNlcTJTZXFUcmFpbmluZ0FyZ3VtZW50cyUyQyUyMFNlcTJTZXFUcmFpbmVyJTBBJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXEyU2VxTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSeq2SeqLM, Seq2SeqTrainingArguments, Seq2SeqTrainer

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint)`,wrap:!1}}),_=new R({props:{code:"dHJhaW5pbmdfYXJncyUyMCUzRCUyMFNlcTJTZXFUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTNEJTIybXlfYXdlc29tZV9vcHVzX2Jvb2tzX21vZGVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9zdHJhdGVneSUzRCUyMmVwb2NoJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDJlLTUlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0QxNiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEMTYlMkMlMEElMjAlMjAlMjAlMjB3ZWlnaHRfZGVjYXklM0QwLjAxJTJDJTBBJTIwJTIwJTIwJTIwc2F2ZV90b3RhbF9saW1pdCUzRDMlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNEMiUyQyUwQSUyMCUyMCUyMCUyMHByZWRpY3Rfd2l0aF9nZW5lcmF0ZSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBmcDE2JTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSklMEElMEF0cmFpbmVyJTIwJTNEJTIwU2VxMlNlcVRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHRva2VuaXplZF9ib29rcyU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEdG9rZW5pemVkX2Jvb2tzJTVCJTIydGVzdCUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMHRva2VuaXplciUzRHRva2VuaXplciUyQyUwQSUyMCUyMCUyMCUyMGRhdGFfY29sbGF0b3IlM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwY29tcHV0ZV9tZXRyaWNzJTNEY29tcHV0ZV9tZXRyaWNzJTJDJTBBKSUwQSUwQXRyYWluZXIudHJhaW4oKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = Seq2SeqTrainingArguments(
<span class="hljs-meta">... </span>    output_dir=<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>,
<span class="hljs-meta">... </span>    eval_strategy=<span class="hljs-string">&quot;epoch&quot;</span>,
<span class="hljs-meta">... </span>    learning_rate=<span class="hljs-number">2e-5</span>,
<span class="hljs-meta">... </span>    per_device_train_batch_size=<span class="hljs-number">16</span>,
<span class="hljs-meta">... </span>    per_device_eval_batch_size=<span class="hljs-number">16</span>,
<span class="hljs-meta">... </span>    weight_decay=<span class="hljs-number">0.01</span>,
<span class="hljs-meta">... </span>    save_total_limit=<span class="hljs-number">3</span>,
<span class="hljs-meta">... </span>    num_train_epochs=<span class="hljs-number">2</span>,
<span class="hljs-meta">... </span>    predict_with_generate=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    fp16=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    push_to_hub=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Seq2SeqTrainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=tokenized_books[<span class="hljs-string">&quot;train&quot;</span>],
<span class="hljs-meta">... </span>    eval_dataset=tokenized_books[<span class="hljs-string">&quot;test&quot;</span>],
<span class="hljs-meta">... </span>    tokenizer=tokenizer,
<span class="hljs-meta">... </span>    data_collator=data_collator,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()`,wrap:!1}}),H=new R({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.push_to_hub()',wrap:!1}}),{c(){M(t.$$.fragment),c=o(),s=b("p"),s.innerHTML=i,g=o(),M(Z.$$.fragment),V=o(),X=b("p"),X.textContent=C,B=o(),U=b("ol"),U.innerHTML=I,G=o(),M(_.$$.fragment),x=o(),r=b("p"),r.innerHTML=J,F=o(),M(H.$$.fragment)},l(f){u(t.$$.fragment,f),c=m(f),s=j(f,"P",{"data-svelte-h":!0}),T(s)!=="svelte-tkyheg"&&(s.innerHTML=i),g=m(f),u(Z.$$.fragment,f),V=m(f),X=j(f,"P",{"data-svelte-h":!0}),T(X)!=="svelte-5p19xw"&&(X.textContent=C),B=m(f),U=j(f,"OL",{"data-svelte-h":!0}),T(U)!=="svelte-1ppvf04"&&(U.innerHTML=I),G=m(f),u(_.$$.fragment,f),x=m(f),r=j(f,"P",{"data-svelte-h":!0}),T(r)!=="svelte-ngexm3"&&(r.innerHTML=J),F=m(f),u(H.$$.fragment,f)},m(f,v){h(t,f,v),a(f,c,v),a(f,s,v),a(f,g,v),h(Z,f,v),a(f,V,v),a(f,X,v),a(f,B,v),a(f,U,v),a(f,G,v),h(_,f,v),a(f,x,v),a(f,r,v),a(f,F,v),h(H,f,v),W=!0},p(f,v){const N={};v&2&&(N.$$scope={dirty:v,ctx:f}),t.$set(N)},i(f){W||(y(t.$$.fragment,f),y(Z.$$.fragment,f),y(_.$$.fragment,f),y(H.$$.fragment,f),W=!0)},o(f){d(t.$$.fragment,f),d(Z.$$.fragment,f),d(_.$$.fragment,f),d(H.$$.fragment,f),W=!1},d(f){f&&(l(c),l(s),l(g),l(V),l(X),l(B),l(U),l(G),l(x),l(r),l(F)),$(t,f),$(Z,f),$(_,f),$(H,f)}}}function nt(k){let t,c;return t=new ze({props:{$$slots:{default:[at]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function pt(k){let t,c='Keras を使用したモデルの微調整に慣れていない場合は、<a href="../training#train-a-tensorflow-model-with-keras">こちら</a> の基本的なチュートリアルをご覧ください。';return{c(){t=b("p"),t.innerHTML=c},l(s){t=j(s,"P",{"data-svelte-h":!0}),T(t)!=="svelte-1jwo7q8"&&(t.innerHTML=c)},m(s,i){a(s,t,i)},p:me,d(s){s&&l(t)}}}function rt(k){let t,c,s,i,g,Z='次に、<a href="/docs/transformers/main/ja/model_doc/auto#transformers.TFAutoModelForSeq2SeqLM">TFAutoModelForSeq2SeqLM</a> を使用して T5 をロードできます。',V,X,C,B,U='<a href="/docs/transformers/main/ja/main_classes/model#transformers.TFPreTrainedModel.prepare_tf_dataset">prepare_tf_dataset()</a> を使用して、データセットを <code>tf.data.Dataset</code> 形式に変換します。',I,G,_,x,r='<a href="https://keras.io/api/models/model_training_apis/#compile-method" rel="nofollow"><code>compile</code></a> を使用してトレーニング用のモデルを設定します。 Transformers モデルにはすべてデフォルトのタスク関連の損失関数があるため、次の場合を除き、損失関数を指定する必要はないことに注意してください。',J,F,H,W,f='トレーニングを開始する前にセットアップする最後の 2 つのことは、予測から SacreBLEU メトリクスを計算し、モデルをハブにプッシュする方法を提供することです。どちらも <a href="../main_classes/keras_callbacks">Keras コールバック</a> を使用して行われます。',v,N,ce='<code>compute_metrics</code> 関数を <a href="/docs/transformers/main/ja/main_classes/keras_callbacks#transformers.KerasMetricCallback">KerasMetricCallback</a> に渡します。',z,E,S,se,ie='<a href="/docs/transformers/main/ja/main_classes/keras_callbacks#transformers.PushToHubCallback">PushToHubCallback</a> でモデルとトークナイザーをプッシュする場所を指定します。',Y,Q,q,A,te="次に、コールバックをまとめてバンドルします。",fe,L,P,D,le='ついに、モデルのトレーニングを開始する準備が整いました。トレーニングおよび検証データセット、エポック数、コールバックを指定して <a href="https://keras.io/api/models/model_training_apis/#fit-method" rel="nofollow"><code>fit</code></a> を呼び出し、モデルを微調整します。',Me,K,O,ee,ae="トレーニングが完了すると、モデルは自動的にハブにアップロードされ、誰でも使用できるようになります。",ue;return t=new bs({props:{$$slots:{default:[pt]},$$scope:{ctx:k}}}),s=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEFkYW1XZWlnaHREZWNheSUwQSUwQW9wdGltaXplciUyMCUzRCUyMEFkYW1XZWlnaHREZWNheShsZWFybmluZ19yYXRlJTNEMmUtNSUyQyUyMHdlaWdodF9kZWNheV9yYXRlJTNEMC4wMSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AdamWeightDecay

<span class="hljs-meta">&gt;&gt;&gt; </span>optimizer = AdamWeightDecay(learning_rate=<span class="hljs-number">2e-5</span>, weight_decay_rate=<span class="hljs-number">0.01</span>)`,wrap:!1}}),X=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxMlNlcUxNJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcTJTZXFMTS5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSeq2SeqLM

<span class="hljs-meta">&gt;&gt;&gt; </span>model = TFAutoModelForSeq2SeqLM.from_pretrained(checkpoint)`,wrap:!1}}),G=new R({props:{code:"dGZfdHJhaW5fc2V0JTIwJTNEJTIwbW9kZWwucHJlcGFyZV90Zl9kYXRhc2V0KCUwQSUyMCUyMCUyMCUyMHRva2VuaXplZF9ib29rcyU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwc2h1ZmZsZSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEMTYlMkMlMEElMjAlMjAlMjAlMjBjb2xsYXRlX2ZuJTNEZGF0YV9jb2xsYXRvciUyQyUwQSklMEElMEF0Zl90ZXN0X3NldCUyMCUzRCUyMG1vZGVsLnByZXBhcmVfdGZfZGF0YXNldCglMEElMjAlMjAlMjAlMjB0b2tlbml6ZWRfYm9va3MlNUIlMjJ0ZXN0JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwc2h1ZmZsZSUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwYmF0Y2hfc2l6ZSUzRDE2JTJDJTBBJTIwJTIwJTIwJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>tf_train_set = model.prepare_tf_dataset(
<span class="hljs-meta">... </span>    tokenized_books[<span class="hljs-string">&quot;train&quot;</span>],
<span class="hljs-meta">... </span>    shuffle=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    batch_size=<span class="hljs-number">16</span>,
<span class="hljs-meta">... </span>    collate_fn=data_collator,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>tf_test_set = model.prepare_tf_dataset(
<span class="hljs-meta">... </span>    tokenized_books[<span class="hljs-string">&quot;test&quot;</span>],
<span class="hljs-meta">... </span>    shuffle=<span class="hljs-literal">False</span>,
<span class="hljs-meta">... </span>    batch_size=<span class="hljs-number">16</span>,
<span class="hljs-meta">... </span>    collate_fn=data_collator,
<span class="hljs-meta">... </span>)`,wrap:!1}}),F=new R({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbC5jb21waWxlKG9wdGltaXplciUzRG9wdGltaXplciklMjAlMjAlMjMlMjBObyUyMGxvc3MlMjBhcmd1bWVudCE=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

<span class="hljs-meta">&gt;&gt;&gt; </span>model.<span class="hljs-built_in">compile</span>(optimizer=optimizer)  <span class="hljs-comment"># No loss argument!</span>`,wrap:!1}}),E=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5rZXJhc19jYWxsYmFja3MlMjBpbXBvcnQlMjBLZXJhc01ldHJpY0NhbGxiYWNrJTBBJTBBbWV0cmljX2NhbGxiYWNrJTIwJTNEJTIwS2VyYXNNZXRyaWNDYWxsYmFjayhtZXRyaWNfZm4lM0Rjb21wdXRlX21ldHJpY3MlMkMlMjBldmFsX2RhdGFzZXQlM0R0Zl92YWxpZGF0aW9uX3NldCk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers.keras_callbacks <span class="hljs-keyword">import</span> KerasMetricCallback

<span class="hljs-meta">&gt;&gt;&gt; </span>metric_callback = KerasMetricCallback(metric_fn=compute_metrics, eval_dataset=tf_validation_set)`,wrap:!1}}),Q=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5rZXJhc19jYWxsYmFja3MlMjBpbXBvcnQlMjBQdXNoVG9IdWJDYWxsYmFjayUwQSUwQXB1c2hfdG9faHViX2NhbGxiYWNrJTIwJTNEJTIwUHVzaFRvSHViQ2FsbGJhY2soJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMm15X2F3ZXNvbWVfb3B1c19ib29rc19tb2RlbCUyMiUyQyUwQSUyMCUyMCUyMCUyMHRva2VuaXplciUzRHRva2VuaXplciUyQyUwQSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers.keras_callbacks <span class="hljs-keyword">import</span> PushToHubCallback

<span class="hljs-meta">&gt;&gt;&gt; </span>push_to_hub_callback = PushToHubCallback(
<span class="hljs-meta">... </span>    output_dir=<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>,
<span class="hljs-meta">... </span>    tokenizer=tokenizer,
<span class="hljs-meta">... </span>)`,wrap:!1}}),L=new R({props:{code:"Y2FsbGJhY2tzJTIwJTNEJTIwJTVCbWV0cmljX2NhbGxiYWNrJTJDJTIwcHVzaF90b19odWJfY2FsbGJhY2slNUQ=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>callbacks = [metric_callback, push_to_hub_callback]',wrap:!1}}),K=new R({props:{code:"bW9kZWwuZml0KHglM0R0Zl90cmFpbl9zZXQlMkMlMjB2YWxpZGF0aW9uX2RhdGElM0R0Zl90ZXN0X3NldCUyQyUyMGVwb2NocyUzRDMlMkMlMjBjYWxsYmFja3MlM0RjYWxsYmFja3Mp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>model.fit(x=tf_train_set, validation_data=tf_test_set, epochs=<span class="hljs-number">3</span>, callbacks=callbacks)',wrap:!1}}),{c(){M(t.$$.fragment),c=Es(`
TensorFlow でモデルを微調整するには、オプティマイザー関数、学習率スケジュール、およびいくつかのトレーニング ハイパーパラメーターをセットアップすることから始めます。

	`),M(s.$$.fragment),i=o(),g=b("p"),g.innerHTML=Z,V=o(),M(X.$$.fragment),C=o(),B=b("p"),B.innerHTML=U,I=o(),M(G.$$.fragment),_=o(),x=b("p"),x.innerHTML=r,J=o(),M(F.$$.fragment),H=o(),W=b("p"),W.innerHTML=f,v=o(),N=b("p"),N.innerHTML=ce,z=o(),M(E.$$.fragment),S=o(),se=b("p"),se.innerHTML=ie,Y=o(),M(Q.$$.fragment),q=o(),A=b("p"),A.textContent=te,fe=o(),M(L.$$.fragment),P=o(),D=b("p"),D.innerHTML=le,Me=o(),M(K.$$.fragment),O=o(),ee=b("p"),ee.textContent=ae},l(p){u(t.$$.fragment,p),c=Ss(p,`
TensorFlow でモデルを微調整するには、オプティマイザー関数、学習率スケジュール、およびいくつかのトレーニング ハイパーパラメーターをセットアップすることから始めます。

	`),u(s.$$.fragment,p),i=m(p),g=j(p,"P",{"data-svelte-h":!0}),T(g)!=="svelte-16zhwz"&&(g.innerHTML=Z),V=m(p),u(X.$$.fragment,p),C=m(p),B=j(p,"P",{"data-svelte-h":!0}),T(B)!=="svelte-1mdvspu"&&(B.innerHTML=U),I=m(p),u(G.$$.fragment,p),_=m(p),x=j(p,"P",{"data-svelte-h":!0}),T(x)!=="svelte-1pd5few"&&(x.innerHTML=r),J=m(p),u(F.$$.fragment,p),H=m(p),W=j(p,"P",{"data-svelte-h":!0}),T(W)!=="svelte-nilt2w"&&(W.innerHTML=f),v=m(p),N=j(p,"P",{"data-svelte-h":!0}),T(N)!=="svelte-ht78yi"&&(N.innerHTML=ce),z=m(p),u(E.$$.fragment,p),S=m(p),se=j(p,"P",{"data-svelte-h":!0}),T(se)!=="svelte-1rwfgpb"&&(se.innerHTML=ie),Y=m(p),u(Q.$$.fragment,p),q=m(p),A=j(p,"P",{"data-svelte-h":!0}),T(A)!=="svelte-r16oc5"&&(A.textContent=te),fe=m(p),u(L.$$.fragment,p),P=m(p),D=j(p,"P",{"data-svelte-h":!0}),T(D)!=="svelte-ffgub5"&&(D.innerHTML=le),Me=m(p),u(K.$$.fragment,p),O=m(p),ee=j(p,"P",{"data-svelte-h":!0}),T(ee)!=="svelte-vh7z0v"&&(ee.textContent=ae)},m(p,w){h(t,p,w),a(p,c,w),h(s,p,w),a(p,i,w),a(p,g,w),a(p,V,w),h(X,p,w),a(p,C,w),a(p,B,w),a(p,I,w),h(G,p,w),a(p,_,w),a(p,x,w),a(p,J,w),h(F,p,w),a(p,H,w),a(p,W,w),a(p,v,w),a(p,N,w),a(p,z,w),h(E,p,w),a(p,S,w),a(p,se,w),a(p,Y,w),h(Q,p,w),a(p,q,w),a(p,A,w),a(p,fe,w),h(L,p,w),a(p,P,w),a(p,D,w),a(p,Me,w),h(K,p,w),a(p,O,w),a(p,ee,w),ue=!0},p(p,w){const he={};w&2&&(he.$$scope={dirty:w,ctx:p}),t.$set(he)},i(p){ue||(y(t.$$.fragment,p),y(s.$$.fragment,p),y(X.$$.fragment,p),y(G.$$.fragment,p),y(F.$$.fragment,p),y(E.$$.fragment,p),y(Q.$$.fragment,p),y(L.$$.fragment,p),y(K.$$.fragment,p),ue=!0)},o(p){d(t.$$.fragment,p),d(s.$$.fragment,p),d(X.$$.fragment,p),d(G.$$.fragment,p),d(F.$$.fragment,p),d(E.$$.fragment,p),d(Q.$$.fragment,p),d(L.$$.fragment,p),d(K.$$.fragment,p),ue=!1},d(p){p&&(l(c),l(i),l(g),l(V),l(C),l(B),l(I),l(_),l(x),l(J),l(H),l(W),l(v),l(N),l(z),l(S),l(se),l(Y),l(q),l(A),l(fe),l(P),l(D),l(Me),l(O),l(ee)),$(t,p),$(s,p),$(X,p),$(G,p),$(F,p),$(E,p),$(Q,p),$(L,p),$(K,p)}}}function ot(k){let t,c;return t=new ze({props:{$$slots:{default:[rt]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function mt(k){let t,c=`翻訳用にモデルを微調整する方法の詳細な例については、対応するドキュメントを参照してください。
<a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/translation.ipynb" rel="nofollow">PyTorch ノートブック</a>
または <a href="https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/translation-tf.ipynb" rel="nofollow">TensorFlow ノートブック</a>。`;return{c(){t=b("p"),t.innerHTML=c},l(s){t=j(s,"P",{"data-svelte-h":!0}),T(t)!=="svelte-64mea5"&&(t.innerHTML=c)},m(s,i){a(s,t,i)},p:me,d(s){s&&l(t)}}}function ct(k){let t,c="テキストをトークン化し、<code>input_ids</code> を PyTorch テンソルとして返します。",s,i,g,Z,V='<code>~transformers.generation_utils.GenerationMixin.generate</code> メソッドを使用して翻訳を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、<a href="../main_classes/text_generation">Text Generation</a> API を確認してください。',X,C,B,U,I="生成されたトークン ID をデコードしてテキストに戻します。",G,_,x;return i=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJteV9hd2Vzb21lX29wdXNfYm9va3NfbW9kZWwlMjIpJTBBaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHRleHQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKS5pbnB1dF9pZHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>inputs = tokenizer(text, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>).input_ids`,wrap:!1}}),C=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcTJTZXFMTSUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxMlNlcUxNLmZyb21fcHJldHJhaW5lZCglMjJteV9hd2Vzb21lX29wdXNfYm9va3NfbW9kZWwlMjIpJTBBb3V0cHV0cyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKGlucHV0cyUyQyUyMG1heF9uZXdfdG9rZW5zJTNENDAlMkMlMjBkb19zYW1wbGUlM0RUcnVlJTJDJTIwdG9wX2slM0QzMCUyQyUyMHRvcF9wJTNEMC45NSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSeq2SeqLM

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForSeq2SeqLM.from_pretrained(<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>outputs = model.generate(inputs, max_new_tokens=<span class="hljs-number">40</span>, do_sample=<span class="hljs-literal">True</span>, top_k=<span class="hljs-number">30</span>, top_p=<span class="hljs-number">0.95</span>)`,wrap:!1}}),_=new R({props:{code:"dG9rZW5pemVyLmRlY29kZShvdXRwdXRzJTVCMCU1RCUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.decode(outputs[<span class="hljs-number">0</span>], skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-string">&#x27;Les lignées partagent des ressources avec des bactéries enfixant l&#x27;</span>azote.<span class="hljs-string">&#x27;</span>`,wrap:!1}}),{c(){t=b("p"),t.innerHTML=c,s=o(),M(i.$$.fragment),g=o(),Z=b("p"),Z.innerHTML=V,X=o(),M(C.$$.fragment),B=o(),U=b("p"),U.textContent=I,G=o(),M(_.$$.fragment)},l(r){t=j(r,"P",{"data-svelte-h":!0}),T(t)!=="svelte-qm50cf"&&(t.innerHTML=c),s=m(r),u(i.$$.fragment,r),g=m(r),Z=j(r,"P",{"data-svelte-h":!0}),T(Z)!=="svelte-jb6yl8"&&(Z.innerHTML=V),X=m(r),u(C.$$.fragment,r),B=m(r),U=j(r,"P",{"data-svelte-h":!0}),T(U)!=="svelte-izrqac"&&(U.textContent=I),G=m(r),u(_.$$.fragment,r)},m(r,J){a(r,t,J),a(r,s,J),h(i,r,J),a(r,g,J),a(r,Z,J),a(r,X,J),h(C,r,J),a(r,B,J),a(r,U,J),a(r,G,J),h(_,r,J),x=!0},p:me,i(r){x||(y(i.$$.fragment,r),y(C.$$.fragment,r),y(_.$$.fragment,r),x=!0)},o(r){d(i.$$.fragment,r),d(C.$$.fragment,r),d(_.$$.fragment,r),x=!1},d(r){r&&(l(t),l(s),l(g),l(Z),l(X),l(B),l(U),l(G)),$(i,r),$(C,r),$(_,r)}}}function it(k){let t,c;return t=new ze({props:{$$slots:{default:[ct]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function ft(k){let t,c="<code>input_ids</code>を TensorFlow テンソルとして返します。 tensors:",s,i,g,Z,V='<code>~transformers.generation_tf_utils.TFGenerationMixin.generate</code> メソッドを使用して翻訳を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、<a href="../main_classes/text_generation">Text Generation</a> API を確認してください。',X,C,B,U,I="生成されたトークン ID をデコードしてテキストに戻します。",G,_,x;return i=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJteV9hd2Vzb21lX29wdXNfYm9va3NfbW9kZWwlMjIpJTBBaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHRleHQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKS5pbnB1dF9pZHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>inputs = tokenizer(text, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>).input_ids`,wrap:!1}}),C=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxMlNlcUxNJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcTJTZXFMTS5mcm9tX3ByZXRyYWluZWQoJTIybXlfYXdlc29tZV9vcHVzX2Jvb2tzX21vZGVsJTIyKSUwQW91dHB1dHMlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZShpbnB1dHMlMkMlMjBtYXhfbmV3X3Rva2VucyUzRDQwJTJDJTIwZG9fc2FtcGxlJTNEVHJ1ZSUyQyUyMHRvcF9rJTNEMzAlMkMlMjB0b3BfcCUzRDAuOTUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSeq2SeqLM

<span class="hljs-meta">&gt;&gt;&gt; </span>model = TFAutoModelForSeq2SeqLM.from_pretrained(<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>outputs = model.generate(inputs, max_new_tokens=<span class="hljs-number">40</span>, do_sample=<span class="hljs-literal">True</span>, top_k=<span class="hljs-number">30</span>, top_p=<span class="hljs-number">0.95</span>)`,wrap:!1}}),_=new R({props:{code:"dG9rZW5pemVyLmRlY29kZShvdXRwdXRzJTVCMCU1RCUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.decode(outputs[<span class="hljs-number">0</span>], skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-string">&#x27;Les lugumes partagent les ressources avec des bactéries fixatrices d&#x27;</span>azote.<span class="hljs-string">&#x27;</span>`,wrap:!1}}),{c(){t=b("p"),t.innerHTML=c,s=o(),M(i.$$.fragment),g=o(),Z=b("p"),Z.innerHTML=V,X=o(),M(C.$$.fragment),B=o(),U=b("p"),U.textContent=I,G=o(),M(_.$$.fragment)},l(r){t=j(r,"P",{"data-svelte-h":!0}),T(t)!=="svelte-258v67"&&(t.innerHTML=c),s=m(r),u(i.$$.fragment,r),g=m(r),Z=j(r,"P",{"data-svelte-h":!0}),T(Z)!=="svelte-18gmcr7"&&(Z.innerHTML=V),X=m(r),u(C.$$.fragment,r),B=m(r),U=j(r,"P",{"data-svelte-h":!0}),T(U)!=="svelte-izrqac"&&(U.textContent=I),G=m(r),u(_.$$.fragment,r)},m(r,J){a(r,t,J),a(r,s,J),h(i,r,J),a(r,g,J),a(r,Z,J),a(r,X,J),h(C,r,J),a(r,B,J),a(r,U,J),a(r,G,J),h(_,r,J),x=!0},p:me,i(r){x||(y(i.$$.fragment,r),y(C.$$.fragment,r),y(_.$$.fragment,r),x=!0)},o(r){d(i.$$.fragment,r),d(C.$$.fragment,r),d(_.$$.fragment,r),x=!1},d(r){r&&(l(t),l(s),l(g),l(Z),l(X),l(B),l(U),l(G)),$(i,r),$(C,r),$(_,r)}}}function Mt(k){let t,c;return t=new ze({props:{$$slots:{default:[ft]},$$scope:{ctx:k}}}),{c(){M(t.$$.fragment)},l(s){u(t.$$.fragment,s)},m(s,i){h(t,s,i),c=!0},p(s,i){const g={};i&2&&(g.$$scope={dirty:i,ctx:s}),t.$set(g)},i(s){c||(y(t.$$.fragment,s),c=!0)},o(s){d(t.$$.fragment,s),c=!1},d(s){$(t,s)}}}function ut(k){let t,c,s,i,g,Z,V,X,C,B,U,I="翻訳では、一連のテキストをある言語から別の言語に変換します。これは、シーケンス間問題として定式化できるいくつかのタスクの 1 つであり、翻訳や要約など、入力から何らかの出力を返すための強力なフレームワークです。翻訳システムは通常、異なる言語のテキスト間の翻訳に使用されますが、音声、またはテキストから音声への変換や音声からテキストへの変換など、音声間の組み合わせにも使用できます。",G,_,x="このガイドでは、次の方法を説明します。",r,J,F='<li><a href="https://huggingface.co/datasets/opus_books" rel="nofollow">OPUS Books</a> データセットの英語-フランス語サブセットの <a href="https://huggingface.co/google-t5/t5-small" rel="nofollow">T5</a> を微調整して、英語のテキストを次の形式に翻訳します。フランス語。</li> <li>微調整されたモデルを推論に使用します。</li>',H,W,f,v,N="始める前に、必要なライブラリがすべてインストールされていることを確認してください。",ce,z,E,S,se="モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。",ie,Y,Q,q,A,te,fe='まず、🤗 データセット ライブラリから <a href="https://huggingface.co/datasets/opus_books" rel="nofollow">OPUS Books</a> データセットの英語とフランス語のサブセットを読み込みます。',L,P,D,le,Me="<code>train_test_split</code> メソッドを使用して、データセットをトレイン セットとテスト セットに分割します。",K,O,ee,ae,ue="次に、例を見てみましょう。",p,w,he,ye,ws="<code>translation</code>: テキストの英語とフランス語の翻訳。",Se,de,Ye,$e,Qe,ge,Ts="次のステップでは、T5 トークナイザーをロードして英語とフランス語の言語ペアを処理します。",qe,be,Ae,je,Js="作成する前処理関数は次のことを行う必要があります。",Le,we,_s="<li>T5 がこれが翻訳タスクであることを認識できるように、入力の前にプロンプ​​トを付けます。複数の NLP タスクが可能な一部のモデルでは、特定のタスクのプロンプトが必要です。</li> <li>英語の語彙で事前トレーニングされたトークナイザーを使用してフランス語のテキストをトークン化することはできないため、入力 (英語) とターゲット (フランス語) を別々にトークン化します。</li> <li><code>max_length</code>パラメータで設定された最大長を超えないようにシーケンスを切り詰めます。</li>",Pe,Te,De,Je,Us="データセット全体に前処理関数を適用するには、🤗 Datasets <code>map</code> メソッドを使用します。 <code>batched=True</code> を設定してデータセットの複数の要素を一度に処理することで、<code>map</code> 関数を高速化できます。",Ke,_e,Oe,Ue,ks="次に、<code>DataCollat​​orForSeq2Seq</code> を使用してサンプルのバッチを作成します。データセット全体を最大長までパディングするのではなく、照合中にバッチ内の最長の長さまで文を <em>動的にパディング</em> する方が効率的です。",es,ne,ss,ke,ts,Ze,Zs='トレーニング中にメトリクスを含めると、多くの場合、モデルのパフォーマンスを評価するのに役立ちます。 🤗 <a href="https://huggingface.co/docs/evaluate/index" rel="nofollow">Evaluate</a> ライブラリを使用して、評価メソッドをすばやくロードできます。このタスクでは、<a href="https://huggingface.co/spaces/evaluate-metric/sacrebleu" rel="nofollow">SacreBLEU</a> メトリクスをロードします (🤗 Evaluate <a href="https://huggingface.co/docs/evaluate/a_quick_tour" rel="nofollow">クイック ツアー</a> を参照してください) ) メトリクスの読み込みと計算方法の詳細については、次を参照してください)。',ls,Ce,as,ve,Cs="次に、予測とラベルを <code>compute</code> に渡して SacreBLEU スコアを計算する関数を作成します。",ns,Re,ps,Xe,vs="これで<code>compute_metrics</code>関数の準備が整いました。トレーニングをセットアップするときにこの関数に戻ります。",rs,Be,os,pe,ms,re,cs,Ge,is,xe,Rs="モデルを微調整したので、それを推論に使用できるようになりました。",fs,Ve,Xs="別の言語に翻訳したいテキストを考え出します。 T5 の場合、作業中のタスクに応じて入力に接頭辞を付ける必要があります。英語からフランス語に翻訳する場合は、以下に示すように入力に接頭辞を付ける必要があります。",Ms,We,us,He,Bs='推論用に微調整されたモデルを試す最も簡単な方法は、それを <a href="/docs/transformers/main/ja/main_classes/pipelines#transformers.pipeline">pipeline()</a> で使用することです。モデルを使用して翻訳用の<code>pipeline</code>をインスタンス化し、テキストをそれに渡します。',hs,Ie,ys,Fe,Gs="必要に応じて、<code>pipeline</code>の結果を手動で複製することもできます。",ds,oe,$s,Ee,gs;return g=new Ne({props:{title:"Translation",local:"translation",headingTag:"h1"}}),V=new Ds({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/translation.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/translation.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/translation.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/translation.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/translation.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/translation.ipynb"}]}}),C=new zs({props:{id:"1JvfrvZgi6c"}}),W=new bs({props:{$$slots:{default:[Ks]},$$scope:{ctx:k}}}),z=new R({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwZXZhbHVhdGUlMjBzYWNyZWJsZXU=",highlighted:"pip install transformers datasets evaluate sacrebleu",wrap:!1}}),Y=new R({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

<span class="hljs-meta">&gt;&gt;&gt; </span>notebook_login()`,wrap:!1}}),q=new Ne({props:{title:"Load OPUS Books dataset",local:"load-opus-books-dataset",headingTag:"h2"}}),P=new R({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBYm9va3MlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIyb3B1c19ib29rcyUyMiUyQyUyMCUyMmVuLWZyJTIyKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

<span class="hljs-meta">&gt;&gt;&gt; </span>books = load_dataset(<span class="hljs-string">&quot;opus_books&quot;</span>, <span class="hljs-string">&quot;en-fr&quot;</span>)`,wrap:!1}}),O=new R({props:{code:"Ym9va3MlMjAlM0QlMjBib29rcyU1QiUyMnRyYWluJTIyJTVELnRyYWluX3Rlc3Rfc3BsaXQodGVzdF9zaXplJTNEMC4yKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>books = books[<span class="hljs-string">&quot;train&quot;</span>].train_test_split(test_size=<span class="hljs-number">0.2</span>)',wrap:!1}}),w=new R({props:{code:"Ym9va3MlNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQ=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>books[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]
{<span class="hljs-string">&#x27;id&#x27;</span>: <span class="hljs-string">&#x27;90560&#x27;</span>,
 <span class="hljs-string">&#x27;translation&#x27;</span>: {<span class="hljs-string">&#x27;en&#x27;</span>: <span class="hljs-string">&#x27;But this lofty plateau measured only a few fathoms, and soon we reentered Our Element.&#x27;</span>,
  <span class="hljs-string">&#x27;fr&#x27;</span>: <span class="hljs-string">&#x27;Mais ce plateau élevé ne mesurait que quelques toises, et bientôt nous fûmes rentrés dans notre élément.&#x27;</span>}}`,wrap:!1}}),de=new Ne({props:{title:"Preprocess",local:"preprocess",headingTag:"h2"}}),$e=new zs({props:{id:"XAR8jnZZuUs"}}),be=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZ29vZ2xlLXQ1JTJGdDUtc21hbGwlMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-meta">&gt;&gt;&gt; </span>checkpoint = <span class="hljs-string">&quot;google-t5/t5-small&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),Te=new R({props:{code:"c291cmNlX2xhbmclMjAlM0QlMjAlMjJlbiUyMiUwQXRhcmdldF9sYW5nJTIwJTNEJTIwJTIyZnIlMjIlMEFwcmVmaXglMjAlM0QlMjAlMjJ0cmFuc2xhdGUlMjBFbmdsaXNoJTIwdG8lMjBGcmVuY2glM0ElMjAlMjIlMEElMEElMEFkZWYlMjBwcmVwcm9jZXNzX2Z1bmN0aW9uKGV4YW1wbGVzKSUzQSUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMCU1QnByZWZpeCUyMCUyQiUyMGV4YW1wbGUlNUJzb3VyY2VfbGFuZyU1RCUyMGZvciUyMGV4YW1wbGUlMjBpbiUyMGV4YW1wbGVzJTVCJTIydHJhbnNsYXRpb24lMjIlNUQlNUQlMEElMjAlMjAlMjAlMjB0YXJnZXRzJTIwJTNEJTIwJTVCZXhhbXBsZSU1QnRhcmdldF9sYW5nJTVEJTIwZm9yJTIwZXhhbXBsZSUyMGluJTIwZXhhbXBsZXMlNUIlMjJ0cmFuc2xhdGlvbiUyMiU1RCU1RCUwQSUyMCUyMCUyMCUyMG1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihpbnB1dHMlMkMlMjB0ZXh0X3RhcmdldCUzRHRhcmdldHMlMkMlMjBtYXhfbGVuZ3RoJTNEMTI4JTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbW9kZWxfaW5wdXRz",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>source_lang = <span class="hljs-string">&quot;en&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>target_lang = <span class="hljs-string">&quot;fr&quot;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>prefix = <span class="hljs-string">&quot;translate English to French: &quot;</span>


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_function</span>(<span class="hljs-params">examples</span>):
<span class="hljs-meta">... </span>    inputs = [prefix + example[source_lang] <span class="hljs-keyword">for</span> example <span class="hljs-keyword">in</span> examples[<span class="hljs-string">&quot;translation&quot;</span>]]
<span class="hljs-meta">... </span>    targets = [example[target_lang] <span class="hljs-keyword">for</span> example <span class="hljs-keyword">in</span> examples[<span class="hljs-string">&quot;translation&quot;</span>]]
<span class="hljs-meta">... </span>    model_inputs = tokenizer(inputs, text_target=targets, max_length=<span class="hljs-number">128</span>, truncation=<span class="hljs-literal">True</span>)
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> model_inputs`,wrap:!1}}),_e=new R({props:{code:"dG9rZW5pemVkX2Jvb2tzJTIwJTNEJTIwYm9va3MubWFwKHByZXByb2Nlc3NfZnVuY3Rpb24lMkMlMjBiYXRjaGVkJTNEVHJ1ZSk=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>tokenized_books = books.<span class="hljs-built_in">map</span>(preprocess_function, batched=<span class="hljs-literal">True</span>)',wrap:!1}}),ne=new js({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[tt],pytorch:[et]},$$scope:{ctx:k}}}),ke=new Ne({props:{title:"Evaluate",local:"evaluate",headingTag:"h2"}}),Ce=new R({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMnNhY3JlYmxldSUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>metric = evaluate.load(<span class="hljs-string">&quot;sacrebleu&quot;</span>)`,wrap:!1}}),Re=new R({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwcG9zdHByb2Nlc3NfdGV4dChwcmVkcyUyQyUyMGxhYmVscyklM0ElMEElMjAlMjAlMjAlMjBwcmVkcyUyMCUzRCUyMCU1QnByZWQuc3RyaXAoKSUyMGZvciUyMHByZWQlMjBpbiUyMHByZWRzJTVEJTBBJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwJTVCJTVCbGFiZWwuc3RyaXAoKSU1RCUyMGZvciUyMGxhYmVsJTIwaW4lMjBsYWJlbHMlNUQlMEElMEElMjAlMjAlMjAlMjByZXR1cm4lMjBwcmVkcyUyQyUyMGxhYmVscyUwQSUwQSUwQWRlZiUyMGNvbXB1dGVfbWV0cmljcyhldmFsX3ByZWRzKSUzQSUwQSUyMCUyMCUyMCUyMHByZWRzJTJDJTIwbGFiZWxzJTIwJTNEJTIwZXZhbF9wcmVkcyUwQSUyMCUyMCUyMCUyMGlmJTIwaXNpbnN0YW5jZShwcmVkcyUyQyUyMHR1cGxlKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHByZWRzJTIwJTNEJTIwcHJlZHMlNUIwJTVEJTBBJTIwJTIwJTIwJTIwZGVjb2RlZF9wcmVkcyUyMCUzRCUyMHRva2VuaXplci5iYXRjaF9kZWNvZGUocHJlZHMlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklMEElMEElMjAlMjAlMjAlMjBsYWJlbHMlMjAlM0QlMjBucC53aGVyZShsYWJlbHMlMjAhJTNEJTIwLTEwMCUyQyUyMGxhYmVscyUyQyUyMHRva2VuaXplci5wYWRfdG9rZW5faWQpJTBBJTIwJTIwJTIwJTIwZGVjb2RlZF9sYWJlbHMlMjAlM0QlMjB0b2tlbml6ZXIuYmF0Y2hfZGVjb2RlKGxhYmVscyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSUwQSUwQSUyMCUyMCUyMCUyMGRlY29kZWRfcHJlZHMlMkMlMjBkZWNvZGVkX2xhYmVscyUyMCUzRCUyMHBvc3Rwcm9jZXNzX3RleHQoZGVjb2RlZF9wcmVkcyUyQyUyMGRlY29kZWRfbGFiZWxzKSUwQSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMG1ldHJpYy5jb21wdXRlKHByZWRpY3Rpb25zJTNEZGVjb2RlZF9wcmVkcyUyQyUyMHJlZmVyZW5jZXMlM0RkZWNvZGVkX2xhYmVscyklMEElMjAlMjAlMjAlMjByZXN1bHQlMjAlM0QlMjAlN0IlMjJibGV1JTIyJTNBJTIwcmVzdWx0JTVCJTIyc2NvcmUlMjIlNUQlN0QlMEElMEElMjAlMjAlMjAlMjBwcmVkaWN0aW9uX2xlbnMlMjAlM0QlMjAlNUJucC5jb3VudF9ub256ZXJvKHByZWQlMjAhJTNEJTIwdG9rZW5pemVyLnBhZF90b2tlbl9pZCklMjBmb3IlMjBwcmVkJTIwaW4lMjBwcmVkcyU1RCUwQSUyMCUyMCUyMCUyMHJlc3VsdCU1QiUyMmdlbl9sZW4lMjIlNUQlMjAlM0QlMjBucC5tZWFuKHByZWRpY3Rpb25fbGVucyklMEElMjAlMjAlMjAlMjByZXN1bHQlMjAlM0QlMjAlN0JrJTNBJTIwcm91bmQodiUyQyUyMDQpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMHJlc3VsdC5pdGVtcygpJTdEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwcmVzdWx0",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">postprocess_text</span>(<span class="hljs-params">preds, labels</span>):
<span class="hljs-meta">... </span>    preds = [pred.strip() <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> preds]
<span class="hljs-meta">... </span>    labels = [[label.strip()] <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> labels]

<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> preds, labels


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_preds</span>):
<span class="hljs-meta">... </span>    preds, labels = eval_preds
<span class="hljs-meta">... </span>    <span class="hljs-keyword">if</span> <span class="hljs-built_in">isinstance</span>(preds, <span class="hljs-built_in">tuple</span>):
<span class="hljs-meta">... </span>        preds = preds[<span class="hljs-number">0</span>]
<span class="hljs-meta">... </span>    decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=<span class="hljs-literal">True</span>)

<span class="hljs-meta">... </span>    labels = np.where(labels != -<span class="hljs-number">100</span>, labels, tokenizer.pad_token_id)
<span class="hljs-meta">... </span>    decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=<span class="hljs-literal">True</span>)

<span class="hljs-meta">... </span>    decoded_preds, decoded_labels = postprocess_text(decoded_preds, decoded_labels)

<span class="hljs-meta">... </span>    result = metric.compute(predictions=decoded_preds, references=decoded_labels)
<span class="hljs-meta">... </span>    result = {<span class="hljs-string">&quot;bleu&quot;</span>: result[<span class="hljs-string">&quot;score&quot;</span>]}

<span class="hljs-meta">... </span>    prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> preds]
<span class="hljs-meta">... </span>    result[<span class="hljs-string">&quot;gen_len&quot;</span>] = np.mean(prediction_lens)
<span class="hljs-meta">... </span>    result = {k: <span class="hljs-built_in">round</span>(v, <span class="hljs-number">4</span>) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> result.items()}
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> result`,wrap:!1}}),Be=new Ne({props:{title:"Train",local:"train",headingTag:"h2"}}),pe=new js({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[ot],pytorch:[nt]},$$scope:{ctx:k}}}),re=new bs({props:{$$slots:{default:[mt]},$$scope:{ctx:k}}}),Ge=new Ne({props:{title:"Inference",local:"inference",headingTag:"h2"}}),We=new R({props:{code:"dGV4dCUyMCUzRCUyMCUyMnRyYW5zbGF0ZSUyMEVuZ2xpc2glMjB0byUyMEZyZW5jaCUzQSUyMExlZ3VtZXMlMjBzaGFyZSUyMHJlc291cmNlcyUyMHdpdGglMjBuaXRyb2dlbi1maXhpbmclMjBiYWN0ZXJpYS4lMjI=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>text = <span class="hljs-string">&quot;translate English to French: Legumes share resources with nitrogen-fixing bacteria.&quot;</span>',wrap:!1}}),Ie=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdHJhbnNsYXRvciUyMCUzRCUyMHBpcGVsaW5lKCUyMnRyYW5zbGF0aW9uX3h4X3RvX3l5JTIyJTJDJTIwbW9kZWwlM0QlMjJteV9hd2Vzb21lX29wdXNfYm9va3NfbW9kZWwlMjIpJTBBdHJhbnNsYXRvcih0ZXh0KQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

<span class="hljs-comment"># Change \`xx\` to the language of the input and \`yy\` to the language of the desired output.</span>
<span class="hljs-comment"># Examples: &quot;en&quot; for English, &quot;fr&quot; for French, &quot;de&quot; for German, &quot;es&quot; for Spanish, &quot;zh&quot; for Chinese, etc; translation_en_to_fr translates English to French</span>
<span class="hljs-comment"># You can view all the lists of languages here - https://huggingface.co/languages</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>translator = pipeline(<span class="hljs-string">&quot;translation_xx_to_yy&quot;</span>, model=<span class="hljs-string">&quot;my_awesome_opus_books_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>translator(text)
[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&#x27;Legumes partagent des ressources avec des bactéries azotantes.&#x27;</span>}]`,wrap:!1}}),oe=new js({props:{pytorch:!0,tensorflow:!0,jax:!1,$$slots:{tensorflow:[Mt],pytorch:[it]},$$scope:{ctx:k}}}),{c(){t=b("meta"),c=o(),s=b("p"),i=o(),M(g.$$.fragment),Z=o(),M(V.$$.fragment),X=o(),M(C.$$.fragment),B=o(),U=b("p"),U.textContent=I,G=o(),_=b("p"),_.textContent=x,r=o(),J=b("ol"),J.innerHTML=F,H=o(),M(W.$$.fragment),f=o(),v=b("p"),v.textContent=N,ce=o(),M(z.$$.fragment),E=o(),S=b("p"),S.textContent=se,ie=o(),M(Y.$$.fragment),Q=o(),M(q.$$.fragment),A=o(),te=b("p"),te.innerHTML=fe,L=o(),M(P.$$.fragment),D=o(),le=b("p"),le.innerHTML=Me,K=o(),M(O.$$.fragment),ee=o(),ae=b("p"),ae.textContent=ue,p=o(),M(w.$$.fragment),he=o(),ye=b("p"),ye.innerHTML=ws,Se=o(),M(de.$$.fragment),Ye=o(),M($e.$$.fragment),Qe=o(),ge=b("p"),ge.textContent=Ts,qe=o(),M(be.$$.fragment),Ae=o(),je=b("p"),je.textContent=Js,Le=o(),we=b("ol"),we.innerHTML=_s,Pe=o(),M(Te.$$.fragment),De=o(),Je=b("p"),Je.innerHTML=Us,Ke=o(),M(_e.$$.fragment),Oe=o(),Ue=b("p"),Ue.innerHTML=ks,es=o(),M(ne.$$.fragment),ss=o(),M(ke.$$.fragment),ts=o(),Ze=b("p"),Ze.innerHTML=Zs,ls=o(),M(Ce.$$.fragment),as=o(),ve=b("p"),ve.innerHTML=Cs,ns=o(),M(Re.$$.fragment),ps=o(),Xe=b("p"),Xe.innerHTML=vs,rs=o(),M(Be.$$.fragment),os=o(),M(pe.$$.fragment),ms=o(),M(re.$$.fragment),cs=o(),M(Ge.$$.fragment),is=o(),xe=b("p"),xe.textContent=Rs,fs=o(),Ve=b("p"),Ve.textContent=Xs,Ms=o(),M(We.$$.fragment),us=o(),He=b("p"),He.innerHTML=Bs,hs=o(),M(Ie.$$.fragment),ys=o(),Fe=b("p"),Fe.innerHTML=Gs,ds=o(),M(oe.$$.fragment),$s=o(),Ee=b("p"),this.h()},l(e){const n=Ls("svelte-u9bgzb",document.head);t=j(n,"META",{name:!0,content:!0}),n.forEach(l),c=m(e),s=j(e,"P",{}),Fs(s).forEach(l),i=m(e),u(g.$$.fragment,e),Z=m(e),u(V.$$.fragment,e),X=m(e),u(C.$$.fragment,e),B=m(e),U=j(e,"P",{"data-svelte-h":!0}),T(U)!=="svelte-8icxqd"&&(U.textContent=I),G=m(e),_=j(e,"P",{"data-svelte-h":!0}),T(_)!=="svelte-w5jzhi"&&(_.textContent=x),r=m(e),J=j(e,"OL",{"data-svelte-h":!0}),T(J)!=="svelte-1ibteza"&&(J.innerHTML=F),H=m(e),u(W.$$.fragment,e),f=m(e),v=j(e,"P",{"data-svelte-h":!0}),T(v)!=="svelte-1lya3k8"&&(v.textContent=N),ce=m(e),u(z.$$.fragment,e),E=m(e),S=j(e,"P",{"data-svelte-h":!0}),T(S)!=="svelte-193zy02"&&(S.textContent=se),ie=m(e),u(Y.$$.fragment,e),Q=m(e),u(q.$$.fragment,e),A=m(e),te=j(e,"P",{"data-svelte-h":!0}),T(te)!=="svelte-uzg9sm"&&(te.innerHTML=fe),L=m(e),u(P.$$.fragment,e),D=m(e),le=j(e,"P",{"data-svelte-h":!0}),T(le)!=="svelte-1la4z0h"&&(le.innerHTML=Me),K=m(e),u(O.$$.fragment,e),ee=m(e),ae=j(e,"P",{"data-svelte-h":!0}),T(ae)!=="svelte-1r6oj5w"&&(ae.textContent=ue),p=m(e),u(w.$$.fragment,e),he=m(e),ye=j(e,"P",{"data-svelte-h":!0}),T(ye)!=="svelte-nv77ib"&&(ye.innerHTML=ws),Se=m(e),u(de.$$.fragment,e),Ye=m(e),u($e.$$.fragment,e),Qe=m(e),ge=j(e,"P",{"data-svelte-h":!0}),T(ge)!=="svelte-1u9up01"&&(ge.textContent=Ts),qe=m(e),u(be.$$.fragment,e),Ae=m(e),je=j(e,"P",{"data-svelte-h":!0}),T(je)!=="svelte-pmbrx1"&&(je.textContent=Js),Le=m(e),we=j(e,"OL",{"data-svelte-h":!0}),T(we)!=="svelte-1lzk21w"&&(we.innerHTML=_s),Pe=m(e),u(Te.$$.fragment,e),De=m(e),Je=j(e,"P",{"data-svelte-h":!0}),T(Je)!=="svelte-1rdkxip"&&(Je.innerHTML=Us),Ke=m(e),u(_e.$$.fragment,e),Oe=m(e),Ue=j(e,"P",{"data-svelte-h":!0}),T(Ue)!=="svelte-1uxhmr6"&&(Ue.innerHTML=ks),es=m(e),u(ne.$$.fragment,e),ss=m(e),u(ke.$$.fragment,e),ts=m(e),Ze=j(e,"P",{"data-svelte-h":!0}),T(Ze)!=="svelte-js2qj9"&&(Ze.innerHTML=Zs),ls=m(e),u(Ce.$$.fragment,e),as=m(e),ve=j(e,"P",{"data-svelte-h":!0}),T(ve)!=="svelte-1txbu5a"&&(ve.innerHTML=Cs),ns=m(e),u(Re.$$.fragment,e),ps=m(e),Xe=j(e,"P",{"data-svelte-h":!0}),T(Xe)!=="svelte-18cw5xr"&&(Xe.innerHTML=vs),rs=m(e),u(Be.$$.fragment,e),os=m(e),u(pe.$$.fragment,e),ms=m(e),u(re.$$.fragment,e),cs=m(e),u(Ge.$$.fragment,e),is=m(e),xe=j(e,"P",{"data-svelte-h":!0}),T(xe)!=="svelte-cyrfc8"&&(xe.textContent=Rs),fs=m(e),Ve=j(e,"P",{"data-svelte-h":!0}),T(Ve)!=="svelte-s3gdss"&&(Ve.textContent=Xs),Ms=m(e),u(We.$$.fragment,e),us=m(e),He=j(e,"P",{"data-svelte-h":!0}),T(He)!=="svelte-1kjanzo"&&(He.innerHTML=Bs),hs=m(e),u(Ie.$$.fragment,e),ys=m(e),Fe=j(e,"P",{"data-svelte-h":!0}),T(Fe)!=="svelte-p649vi"&&(Fe.innerHTML=Gs),ds=m(e),u(oe.$$.fragment,e),$s=m(e),Ee=j(e,"P",{}),Fs(Ee).forEach(l),this.h()},h(){Ns(t,"name","hf:doc:metadata"),Ns(t,"content",ht)},m(e,n){Ps(document.head,t),a(e,c,n),a(e,s,n),a(e,i,n),h(g,e,n),a(e,Z,n),h(V,e,n),a(e,X,n),h(C,e,n),a(e,B,n),a(e,U,n),a(e,G,n),a(e,_,n),a(e,r,n),a(e,J,n),a(e,H,n),h(W,e,n),a(e,f,n),a(e,v,n),a(e,ce,n),h(z,e,n),a(e,E,n),a(e,S,n),a(e,ie,n),h(Y,e,n),a(e,Q,n),h(q,e,n),a(e,A,n),a(e,te,n),a(e,L,n),h(P,e,n),a(e,D,n),a(e,le,n),a(e,K,n),h(O,e,n),a(e,ee,n),a(e,ae,n),a(e,p,n),h(w,e,n),a(e,he,n),a(e,ye,n),a(e,Se,n),h(de,e,n),a(e,Ye,n),h($e,e,n),a(e,Qe,n),a(e,ge,n),a(e,qe,n),h(be,e,n),a(e,Ae,n),a(e,je,n),a(e,Le,n),a(e,we,n),a(e,Pe,n),h(Te,e,n),a(e,De,n),a(e,Je,n),a(e,Ke,n),h(_e,e,n),a(e,Oe,n),a(e,Ue,n),a(e,es,n),h(ne,e,n),a(e,ss,n),h(ke,e,n),a(e,ts,n),a(e,Ze,n),a(e,ls,n),h(Ce,e,n),a(e,as,n),a(e,ve,n),a(e,ns,n),h(Re,e,n),a(e,ps,n),a(e,Xe,n),a(e,rs,n),h(Be,e,n),a(e,os,n),h(pe,e,n),a(e,ms,n),h(re,e,n),a(e,cs,n),h(Ge,e,n),a(e,is,n),a(e,xe,n),a(e,fs,n),a(e,Ve,n),a(e,Ms,n),h(We,e,n),a(e,us,n),a(e,He,n),a(e,hs,n),h(Ie,e,n),a(e,ys,n),a(e,Fe,n),a(e,ds,n),h(oe,e,n),a(e,$s,n),a(e,Ee,n),gs=!0},p(e,[n]){const xs={};n&2&&(xs.$$scope={dirty:n,ctx:e}),W.$set(xs);const Vs={};n&2&&(Vs.$$scope={dirty:n,ctx:e}),ne.$set(Vs);const Ws={};n&2&&(Ws.$$scope={dirty:n,ctx:e}),pe.$set(Ws);const Hs={};n&2&&(Hs.$$scope={dirty:n,ctx:e}),re.$set(Hs);const Is={};n&2&&(Is.$$scope={dirty:n,ctx:e}),oe.$set(Is)},i(e){gs||(y(g.$$.fragment,e),y(V.$$.fragment,e),y(C.$$.fragment,e),y(W.$$.fragment,e),y(z.$$.fragment,e),y(Y.$$.fragment,e),y(q.$$.fragment,e),y(P.$$.fragment,e),y(O.$$.fragment,e),y(w.$$.fragment,e),y(de.$$.fragment,e),y($e.$$.fragment,e),y(be.$$.fragment,e),y(Te.$$.fragment,e),y(_e.$$.fragment,e),y(ne.$$.fragment,e),y(ke.$$.fragment,e),y(Ce.$$.fragment,e),y(Re.$$.fragment,e),y(Be.$$.fragment,e),y(pe.$$.fragment,e),y(re.$$.fragment,e),y(Ge.$$.fragment,e),y(We.$$.fragment,e),y(Ie.$$.fragment,e),y(oe.$$.fragment,e),gs=!0)},o(e){d(g.$$.fragment,e),d(V.$$.fragment,e),d(C.$$.fragment,e),d(W.$$.fragment,e),d(z.$$.fragment,e),d(Y.$$.fragment,e),d(q.$$.fragment,e),d(P.$$.fragment,e),d(O.$$.fragment,e),d(w.$$.fragment,e),d(de.$$.fragment,e),d($e.$$.fragment,e),d(be.$$.fragment,e),d(Te.$$.fragment,e),d(_e.$$.fragment,e),d(ne.$$.fragment,e),d(ke.$$.fragment,e),d(Ce.$$.fragment,e),d(Re.$$.fragment,e),d(Be.$$.fragment,e),d(pe.$$.fragment,e),d(re.$$.fragment,e),d(Ge.$$.fragment,e),d(We.$$.fragment,e),d(Ie.$$.fragment,e),d(oe.$$.fragment,e),gs=!1},d(e){e&&(l(c),l(s),l(i),l(Z),l(X),l(B),l(U),l(G),l(_),l(r),l(J),l(H),l(f),l(v),l(ce),l(E),l(S),l(ie),l(Q),l(A),l(te),l(L),l(D),l(le),l(K),l(ee),l(ae),l(p),l(he),l(ye),l(Se),l(Ye),l(Qe),l(ge),l(qe),l(Ae),l(je),l(Le),l(we),l(Pe),l(De),l(Je),l(Ke),l(Oe),l(Ue),l(es),l(ss),l(ts),l(Ze),l(ls),l(as),l(ve),l(ns),l(ps),l(Xe),l(rs),l(os),l(ms),l(cs),l(is),l(xe),l(fs),l(Ve),l(Ms),l(us),l(He),l(hs),l(ys),l(Fe),l(ds),l($s),l(Ee)),l(t),$(g,e),$(V,e),$(C,e),$(W,e),$(z,e),$(Y,e),$(q,e),$(P,e),$(O,e),$(w,e),$(de,e),$($e,e),$(be,e),$(Te,e),$(_e,e),$(ne,e),$(ke,e),$(Ce,e),$(Re,e),$(Be,e),$(pe,e),$(re,e),$(Ge,e),$(We,e),$(Ie,e),$(oe,e)}}}const ht='{"title":"Translation","local":"translation","sections":[{"title":"Load OPUS Books dataset","local":"load-opus-books-dataset","sections":[],"depth":2},{"title":"Preprocess","local":"preprocess","sections":[],"depth":2},{"title":"Evaluate","local":"evaluate","sections":[],"depth":2},{"title":"Train","local":"train","sections":[],"depth":2},{"title":"Inference","local":"inference","sections":[],"depth":2}],"depth":1}';function yt(k){return Qs(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class _t extends qs{constructor(t){super(),As(this,t,yt,ut,Ys,{})}}export{_t as component};
