Buckets:

rtrm's picture
download
raw
144 kB
import{s as yp,f as Mp,o as Jp,n as ql}from"../chunks/scheduler.37c15a92.js";import{S as mp,i as Tp,g as J,s as n,r as o,A as op,h as m,f as e,c as a,j as Kn,u as U,x as T,k as _l,y as Up,a as s,v as u,t as y,b as Es,d as c,w as j,p as Fs}from"../chunks/index.7cb9c9b8.js";import{T as ee}from"../chunks/Tip.d10b3fc9.js";import{Y as En}from"../chunks/Youtube.8666c400.js";import{C as h}from"../chunks/CodeBlock.abae2786.js";import{C as cp}from"../chunks/CourseFloatingBanner.df82c153.js";import{F as up}from"../chunks/FrameworkSwitchCourse.97630871.js";import{H as gl,E as jp}from"../chunks/getInferenceSnippets.a2135f3c.js";function wp(x){let p,b;return p=new cp({props:{chapter:7,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/chapter7/section4_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ja/chapter7/section4_tf.ipynb"}]}}),{c(){o(p.$$.fragment)},l(r){U(p.$$.fragment,r)},m(r,f){u(p,r,f),b=!0},i(r){b||(c(p.$$.fragment,r),b=!0)},o(r){y(p.$$.fragment,r),b=!1},d(r){j(p,r)}}}function dp(x){let p,b;return p=new cp({props:{chapter:7,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/chapter7/section4_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/ja/chapter7/section4_pt.ipynb"}]}}),{c(){o(p.$$.fragment)},l(r){U(p.$$.fragment,r)},m(r,f){u(p,r,f),b=!0},i(r){b||(c(p.$$.fragment,r),b=!0)},o(r){y(p.$$.fragment,r),b=!1},d(r){j(p,r)}}}function fp(x){let p,b="✏️ <strong>あなたの番です!</strong> フランス語でよく使われるもう1つの英単語は “email “です。学習データセットから、この単語を使った最初のサンプルを見つけてください。どのように翻訳されますか?同じ英文を学習済みモデルはどのように翻訳しているでしょうか?";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-60nrdy"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function bp(x){let p,b="💡 mBART、mBART-50、M2M100 などの多言語トークナイザーを使用している場合は、トークナイザーの <code>tokenizer.src_lang</code> と <code>tokenizer.tgt_lang</code> に入力元となる言語とターゲットとなる言語の正しい言語コード値を設定する必要があります。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-nv9kpa"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function hp(x){let p,b="💡 T5モデル(具体的には <code>t5-xxx</code> チェックポイントの1つ)を使用している場合、モデルはテキスト入力にタスクを示すプレフィックス、例えば <code>translate: English to French:</code> のような、タスクを示す接頭辞を持つテキスト入力であることを期待します。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-m71vux"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function Cp(x){let p,b="⚠️私達はターゲット文のアテンションマスクはモデルが期待していないので、注意を払っていません。その代わり、パディングトークンに対応するラベルに<code>-100</code>に設定し、損失計算で無視されるようにします。私達は動的パディングを使用するのでこの処理は後でデータコレーターが行います。しかし、ここでパディングを使用する場合は、パディングトークンに対応する全てのラベルを<code>-100</code>に設定するように前処理関数を適応させる必要があります。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-6xjxnu"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function Ip(x){let p,b,r,f="まず最初に、微調整を行うための実際のモデルが必要です。ここでは、通常の <code>AutoModel</code> API を使用します。",G,d,g,B,Z;return p=new gl({props:{title:"Kerasを使ったモデルの微調整",local:"kerasを使ったモデルの微調整",headingTag:"h2"}}),d=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxMlNlcUxNJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcTJTZXFMTS5mcm9tX3ByZXRyYWluZWQobW9kZWxfY2hlY2twb2ludCUyQyUyMGZyb21fcHQlM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSeq2SeqLM
model = TFAutoModelForSeq2SeqLM.from_pretrained(model_checkpoint, from_pt=<span class="hljs-literal">True</span>)`,wrap:!1}}),B=new ee({props:{warning:!1,$$slots:{default:[Zp]},$$scope:{ctx:x}}}),{c(){o(p.$$.fragment),b=n(),r=J("p"),r.innerHTML=f,G=n(),o(d.$$.fragment),g=n(),o(B.$$.fragment)},l(C){U(p.$$.fragment,C),b=a(C),r=m(C,"P",{"data-svelte-h":!0}),T(r)!=="svelte-1wt6wlz"&&(r.innerHTML=f),G=a(C),U(d.$$.fragment,C),g=a(C),U(B.$$.fragment,C)},m(C,I){u(p,C,I),s(C,b,I),s(C,r,I),s(C,G,I),u(d,C,I),s(C,g,I),u(B,C,I),Z=!0},i(C){Z||(c(p.$$.fragment,C),c(d.$$.fragment,C),c(B.$$.fragment,C),Z=!0)},o(C){y(p.$$.fragment,C),y(d.$$.fragment,C),y(B.$$.fragment,C),Z=!1},d(C){C&&(e(b),e(r),e(G),e(g)),j(p,C),j(d,C),j(B,C)}}}function $p(x){let p,b,r,f=`実際に <code>Trainer</code> を使用するコードは、これまでと同じですが、1つだけ少し変更点があります。
ここでは <a href="https://huggingface.co/transformers/main_classes/trainer.html#seq2seqtrainer" rel="nofollow"><code>Seq2SeqTrainer</code></a> を使用します。
これは <code>Trainer</code> のサブクラスであり、評価を適切に処理するためで、<code>generate()</code> メソッドを使用して入力から出力を予測します。詳細は、指標計算の話をするときに詳しく掘り下げます。`,G,d,g="まず最初に、微調整を行うための実際のモデルが必要です。ここでは、通常の <code>AutoModel</code> API を使用します。",B,Z,C;return p=new gl({props:{title:"Trainer API を用いてモデルを微調整する",local:"trainer-api-を用いてモデルを微調整する",headingTag:"h2"}}),Z=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcTJTZXFMTSUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxMlNlcUxNLmZyb21fcHJldHJhaW5lZChtb2RlbF9jaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSeq2SeqLM
model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)`,wrap:!1}}),{c(){o(p.$$.fragment),b=n(),r=J("p"),r.innerHTML=f,G=n(),d=J("p"),d.innerHTML=g,B=n(),o(Z.$$.fragment)},l(I){U(p.$$.fragment,I),b=a(I),r=m(I,"P",{"data-svelte-h":!0}),T(r)!=="svelte-1uc80sv"&&(r.innerHTML=f),G=a(I),d=m(I,"P",{"data-svelte-h":!0}),T(d)!=="svelte-1wt6wlz"&&(d.innerHTML=g),B=a(I),U(Z.$$.fragment,I)},m(I,R){u(p,I,R),s(I,b,R),s(I,r,R),s(I,G,R),s(I,d,R),s(I,B,R),u(Z,I,R),C=!0},i(I){C||(c(p.$$.fragment,I),c(Z.$$.fragment,I),C=!0)},o(I){y(p.$$.fragment,I),y(Z.$$.fragment,I),C=!1},d(I){I&&(e(b),e(r),e(G),e(d),e(B)),j(p,I),j(Z,I)}}}function Zp(x){let p,b=`💡 <code>Helsinki-NLP/opus-mt-en-fr</code>のチェックポイントにはPyTorch用の重みしかありません。
<code>from_pretrained()</code> メソッドで <code>from_pt=True</code> という引数を指定せずにモデルをロードしようとするとエラーが発生します。`,r,f,G=`<code>from_pt=True</code> を指定すると、ライブラリはPyTorch の重みを自動的にダウンロードし、変換します。
このように、🤗 Transformersではフレームワークの切り替えが非常に簡単です!`;return{c(){p=J("p"),p.innerHTML=b,r=n(),f=J("p"),f.innerHTML=G},l(d){p=m(d,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1rdudyl"&&(p.innerHTML=b),r=a(d),f=m(d,"P",{"data-svelte-h":!0}),T(f)!=="svelte-1go05y"&&(f.innerHTML=G)},m(d,g){s(d,p,g),s(d,r,g),s(d,f,g)},p:ql,d(d){d&&(e(p),e(r),e(f))}}}function _p(x){let p,b;return p=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvclNlcTJTZXElMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yU2VxMlNlcSh0b2tlbml6ZXIlMkMlMjBtb2RlbCUzRG1vZGVsJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJ0ZiUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForSeq2Seq
data_collator = DataCollatorForSeq2Seq(tokenizer, model=model, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)`,wrap:!1}}),{c(){o(p.$$.fragment)},l(r){U(p.$$.fragment,r)},m(r,f){u(p,r,f),b=!0},i(r){b||(c(p.$$.fragment,r),b=!0)},o(r){y(p.$$.fragment,r),b=!1},d(r){j(p,r)}}}function kp(x){let p,b;return p=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvclNlcTJTZXElMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yU2VxMlNlcSh0b2tlbml6ZXIlMkMlMjBtb2RlbCUzRG1vZGVsKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForSeq2Seq
data_collator = DataCollatorForSeq2Seq(tokenizer, model=model)`,wrap:!1}}),{c(){o(p.$$.fragment)},l(r){U(p.$$.fragment,r)},m(r,f){u(p,r,f),b=!0},i(r){b||(c(p.$$.fragment,r),b=!0)},o(r){y(p.$$.fragment,r),b=!1},d(r){j(p,r)}}}function Gp(x){let p,b="この <code>data_collator</code> を使って、各データセットを <code>tf.data.Dataset</code> に変換し、学習できるようにします。",r,f,G;return f=new h({props:{code:"dGZfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnRvX3RmX2RhdGFzZXQoJTBBJTIwJTIwJTIwJTIwY29sdW1ucyUzRCU1QiUyMmlucHV0X2lkcyUyMiUyQyUyMCUyMmF0dGVudGlvbl9tYXNrJTIyJTJDJTIwJTIybGFiZWxzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMEElMjAlMjAlMjAlMjBzaHVmZmxlJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGJhdGNoX3NpemUlM0QzMiUyQyUwQSklMEF0Zl9ldmFsX2RhdGFzZXQlMjAlM0QlMjB0b2tlbml6ZWRfZGF0YXNldHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVELnRvX3RmX2RhdGFzZXQoJTBBJTIwJTIwJTIwJTIwY29sdW1ucyUzRCU1QiUyMmlucHV0X2lkcyUyMiUyQyUyMCUyMmF0dGVudGlvbl9tYXNrJTIyJTJDJTIwJTIybGFiZWxzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMEElMjAlMjAlMjAlMjBzaHVmZmxlJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEMTYlMkMlMEEp",highlighted:`tf_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].to_tf_dataset(
columns=[<span class="hljs-string">&quot;input_ids&quot;</span>, <span class="hljs-string">&quot;attention_mask&quot;</span>, <span class="hljs-string">&quot;labels&quot;</span>],
collate_fn=data_collator,
shuffle=<span class="hljs-literal">True</span>,
batch_size=<span class="hljs-number">32</span>,
)
tf_eval_dataset = tokenized_datasets[<span class="hljs-string">&quot;validation&quot;</span>].to_tf_dataset(
columns=[<span class="hljs-string">&quot;input_ids&quot;</span>, <span class="hljs-string">&quot;attention_mask&quot;</span>, <span class="hljs-string">&quot;labels&quot;</span>],
collate_fn=data_collator,
shuffle=<span class="hljs-literal">False</span>,
batch_size=<span class="hljs-number">16</span>,
)`,wrap:!1}}),{c(){p=J("p"),p.innerHTML=b,r=n(),o(f.$$.fragment)},l(d){p=m(d,"P",{"data-svelte-h":!0}),T(p)!=="svelte-anvdkm"&&(p.innerHTML=b),r=a(d),U(f.$$.fragment,d)},m(d,g){s(d,p,g),s(d,r,g),u(f,d,g),G=!0},i(d){G||(c(f.$$.fragment,d),G=!0)},o(d){y(f.$$.fragment,d),G=!1},d(d){d&&(e(p),e(r)),j(f,d)}}}function gp(x){let p,b="この <code>data_collator</code> を <code>Seq2SeqTrainer</code> に渡します。次に、指標を見てみましょう。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1g7xidu"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},i:ql,o:ql,d(r){r&&e(p)}}}function rp(x){let p,b="<code>Seq2SeqTrainer</code> がスーパークラス <code>Trainer</code> に追加した機能は、評価や予測の際に <code>generate()</code> メソッドを使用することです。学習時には、モデルは <code>decoder_input_ids</code> を使用し、予測しようとするトークンの後ろのトークンを使用しないようにアテンションマスクをして、学習を高速化することができます。推論実行時には同様にこれらを使用することはできませんので、同じ設定でモデルを評価するのは良いアイデアです。",r,f,G='<a href="/course/ja/chapter1/6">第1章</a> で見たように、デコーダはトークンを1つずつ予測して推論を行います。🤗 Transformersでは <code>generate()</code> メソッドが裏で動いています。<code>Seq2SeqTrainer</code> では、 <code>predict_with_generate=True</code> を設定すると、この手法を使って評価を行うことができるようになります。';return{c(){p=J("p"),p.innerHTML=b,r=n(),f=J("p"),f.innerHTML=G},l(d){p=m(d,"P",{"data-svelte-h":!0}),T(p)!=="svelte-qgehxk"&&(p.innerHTML=b),r=a(d),f=m(d,"P",{"data-svelte-h":!0}),T(f)!=="svelte-1aff1yd"&&(f.innerHTML=G)},m(d,g){s(d,p,g),s(d,r,g),s(d,f,g)},d(d){d&&(e(p),e(r),e(f))}}}function xp(x){let p,b="モデルの出力を指標が使用できるテキストに変換するために、 <code>tokenizer.batch_decode()</code> メソッドを使用することにします。ラベルに含まれるすべての <code>-100</code> をクリーンアップする必要があります。(トークンナイザーはパディングトークンに対して自動的に同じことを行います)",r,f,G;return f=new h({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwY29tcHV0ZV9tZXRyaWNzKGV2YWxfcHJlZHMpJTNBJTBBJTIwJTIwJTIwJTIwcHJlZHMlMkMlMjBsYWJlbHMlMjAlM0QlMjBldmFsX3ByZWRzJTBBJTIwJTIwJTIwJTIwJTIzJTIwSW4lMjBjYXNlJTIwdGhlJTIwbW9kZWwlMjByZXR1cm5zJTIwbW9yZSUyMHRoYW4lMjB0aGUlMjBwcmVkaWN0aW9uJTIwbG9naXRzJTBBJTIwJTIwJTIwJTIwaWYlMjBpc2luc3RhbmNlKHByZWRzJTJDJTIwdHVwbGUpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcHJlZHMlMjAlM0QlMjBwcmVkcyU1QjAlNUQlMEElMEElMjAlMjAlMjAlMjBkZWNvZGVkX3ByZWRzJTIwJTNEJTIwdG9rZW5pemVyLmJhdGNoX2RlY29kZShwcmVkcyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMFJlcGxhY2UlMjAtMTAwcyUyMGluJTIwdGhlJTIwbGFiZWxzJTIwYXMlMjB3ZSUyMGNhbid0JTIwZGVjb2RlJTIwdGhlbSUwQSUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMG5wLndoZXJlKGxhYmVscyUyMCElM0QlMjAtMTAwJTJDJTIwbGFiZWxzJTJDJTIwdG9rZW5pemVyLnBhZF90b2tlbl9pZCklMEElMjAlMjAlMjAlMjBkZWNvZGVkX2xhYmVscyUyMCUzRCUyMHRva2VuaXplci5iYXRjaF9kZWNvZGUobGFiZWxzJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwU29tZSUyMHNpbXBsZSUyMHBvc3QtcHJvY2Vzc2luZyUwQSUyMCUyMCUyMCUyMGRlY29kZWRfcHJlZHMlMjAlM0QlMjAlNUJwcmVkLnN0cmlwKCklMjBmb3IlMjBwcmVkJTIwaW4lMjBkZWNvZGVkX3ByZWRzJTVEJTBBJTIwJTIwJTIwJTIwZGVjb2RlZF9sYWJlbHMlMjAlM0QlMjAlNUIlNUJsYWJlbC5zdHJpcCgpJTVEJTIwZm9yJTIwbGFiZWwlMjBpbiUyMGRlY29kZWRfbGFiZWxzJTVEJTBBJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RkZWNvZGVkX3ByZWRzJTJDJTIwcmVmZXJlbmNlcyUzRGRlY29kZWRfbGFiZWxzKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMmJsZXUlMjIlM0ElMjByZXN1bHQlNUIlMjJzY29yZSUyMiU1RCU3RA==",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_preds</span>):
preds, labels = eval_preds
<span class="hljs-comment"># In case the model returns more than the prediction logits</span>
<span class="hljs-keyword">if</span> <span class="hljs-built_in">isinstance</span>(preds, <span class="hljs-built_in">tuple</span>):
preds = preds[<span class="hljs-number">0</span>]
decoded_preds = tokenizer.batch_decode(preds, skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Replace -100s in the labels as we can&#x27;t decode them</span>
labels = np.where(labels != -<span class="hljs-number">100</span>, labels, tokenizer.pad_token_id)
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Some simple post-processing</span>
decoded_preds = [pred.strip() <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> decoded_preds]
decoded_labels = [[label.strip()] <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> decoded_labels]
result = metric.compute(predictions=decoded_preds, references=decoded_labels)
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;bleu&quot;</span>: result[<span class="hljs-string">&quot;score&quot;</span>]}`,wrap:!1}}),{c(){p=J("p"),p.innerHTML=b,r=n(),o(f.$$.fragment)},l(d){p=m(d,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1qwov29"&&(p.innerHTML=b),r=a(d),U(f.$$.fragment,d)},m(d,g){s(d,p,g),s(d,r,g),u(f,d,g),G=!0},i(d){G||(c(f.$$.fragment,d),G=!0)},o(d){y(f.$$.fragment,d),G=!1},d(d){d&&(e(p),e(r)),j(f,d)}}}function Bp(x){let p,b="モデルの出力を指標が使用できるテキストに変換するために、 <code>tokenizer.batch_decode()</code> メソッドを使用します。ラベルに含まれる <code>-100</code> をすべて削除する必要があります。トークナイザーはパディングトークンに対しても自動的に同じ処理を行います。",r,f,G="モデルとデータセットを受け取り、それに対して指標を計算する関数を定義しましょう。長いシーケンスの生成には時間がかかるので、検証セットをサブサンプリングして、時間がかからないようにします。",d,g,B;return g=new h({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwY29tcHV0ZV9tZXRyaWNzKCklM0ElMEElMjAlMjAlMjAlMjBhbGxfcHJlZHMlMjAlM0QlMjAlNUIlNUQlMEElMjAlMjAlMjAlMjBhbGxfbGFiZWxzJTIwJTNEJTIwJTVCJTVEJTBBJTIwJTIwJTIwJTIwc2FtcGxlZF9kYXRhc2V0JTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydmFsaWRhdGlvbiUyMiU1RC5zaHVmZmxlKCkuc2VsZWN0KHJhbmdlKDIwMCkpJTBBJTIwJTIwJTIwJTIwdGZfZ2VuZXJhdGVfZGF0YXNldCUyMCUzRCUyMHNhbXBsZWRfZGF0YXNldC50b190Zl9kYXRhc2V0KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbHVtbnMlM0QlNUIlMjJpbnB1dF9pZHMlMjIlMkMlMjAlMjJhdHRlbnRpb25fbWFzayUyMiUyQyUyMCUyMmxhYmVscyUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGNvbGxhdGVfZm4lM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2h1ZmZsZSUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2hfc2l6ZSUzRDQlMkMlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwZm9yJTIwYmF0Y2glMjBpbiUyMHRmX2dlbmVyYXRlX2RhdGFzZXQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmVkaWN0aW9ucyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0X2lkcyUzRGJhdGNoJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTJDJTIwYXR0ZW50aW9uX21hc2slM0RiYXRjaCU1QiUyMmF0dGVudGlvbl9tYXNrJTIyJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRlY29kZWRfcHJlZHMlMjAlM0QlMjB0b2tlbml6ZXIuYmF0Y2hfZGVjb2RlKHByZWRpY3Rpb25zJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQubnVtcHkoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMG5wLndoZXJlKGxhYmVscyUyMCElM0QlMjAtMTAwJTJDJTIwbGFiZWxzJTJDJTIwdG9rZW5pemVyLnBhZF90b2tlbl9pZCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkZWNvZGVkX2xhYmVscyUyMCUzRCUyMHRva2VuaXplci5iYXRjaF9kZWNvZGUobGFiZWxzJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVjb2RlZF9wcmVkcyUyMCUzRCUyMCU1QnByZWQuc3RyaXAoKSUyMGZvciUyMHByZWQlMjBpbiUyMGRlY29kZWRfcHJlZHMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkZWNvZGVkX2xhYmVscyUyMCUzRCUyMCU1QiU1QmxhYmVsLnN0cmlwKCklNUQlMjBmb3IlMjBsYWJlbCUyMGluJTIwZGVjb2RlZF9sYWJlbHMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhbGxfcHJlZHMuZXh0ZW5kKGRlY29kZWRfcHJlZHMpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYWxsX2xhYmVscy5leHRlbmQoZGVjb2RlZF9sYWJlbHMpJTBBJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RhbGxfcHJlZHMlMkMlMjByZWZlcmVuY2VzJTNEYWxsX2xhYmVscyklMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMjJibGV1JTIyJTNBJTIwcmVzdWx0JTVCJTIyc2NvcmUlMjIlNUQlN0Q=",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>():
all_preds = []
all_labels = []
sampled_dataset = tokenized_datasets[<span class="hljs-string">&quot;validation&quot;</span>].shuffle().select(<span class="hljs-built_in">range</span>(<span class="hljs-number">200</span>))
tf_generate_dataset = sampled_dataset.to_tf_dataset(
columns=[<span class="hljs-string">&quot;input_ids&quot;</span>, <span class="hljs-string">&quot;attention_mask&quot;</span>, <span class="hljs-string">&quot;labels&quot;</span>],
collate_fn=data_collator,
shuffle=<span class="hljs-literal">False</span>,
batch_size=<span class="hljs-number">4</span>,
)
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> tf_generate_dataset:
predictions = model.generate(
input_ids=batch[<span class="hljs-string">&quot;input_ids&quot;</span>], attention_mask=batch[<span class="hljs-string">&quot;attention_mask&quot;</span>]
)
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=<span class="hljs-literal">True</span>)
labels = batch[<span class="hljs-string">&quot;labels&quot;</span>].numpy()
labels = np.where(labels != -<span class="hljs-number">100</span>, labels, tokenizer.pad_token_id)
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=<span class="hljs-literal">True</span>)
decoded_preds = [pred.strip() <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> decoded_preds]
decoded_labels = [[label.strip()] <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> decoded_labels]
all_preds.extend(decoded_preds)
all_labels.extend(decoded_labels)
result = metric.compute(predictions=all_preds, references=all_labels)
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;bleu&quot;</span>: result[<span class="hljs-string">&quot;score&quot;</span>]}`,wrap:!1}}),{c(){p=J("p"),p.innerHTML=b,r=n(),f=J("p"),f.textContent=G,d=n(),o(g.$$.fragment)},l(Z){p=m(Z,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1c29lz6"&&(p.innerHTML=b),r=a(Z),f=m(Z,"P",{"data-svelte-h":!0}),T(f)!=="svelte-fog4ov"&&(f.textContent=G),d=a(Z),U(g.$$.fragment,Z)},m(Z,C){s(Z,p,C),s(Z,r,C),s(Z,f,C),s(Z,d,C),u(g,Z,C),B=!0},i(Z){B||(c(g.$$.fragment,Z),B=!0)},o(Z){y(g.$$.fragment,Z),B=!1},d(Z){Z&&(e(p),e(r),e(f),e(d)),j(g,Z)}}}function Wp(x){let p,b="これが完了したら、<code>Seq2SeqTrainingArguments</code> を定義することができます。<code>Trainer</code> と同様に、いくつかのフィールドを含む <code>TrainingArguments</code> のサブクラスを使用します。",r,f,G,d,g="通常のハイパーパラメータ(学習率、エポック数、バッチサイズ、重み減衰など)とは別に、前のセクションで見たものと比較して、いくつかの変更点があります。",B,Z,C="<li>評価には時間がかかるので、定期的な評価は設定しません。学習前と学習後に一度だけモデルを評価します。</li> <li>fp16=True` を設定し、最新の GPU を使っている際に学習を高速化しました。</li> <li>前述したように predict_with_generate=True` を設定します。</li> <li>各エポック終了時にモデルをハブにアップロードするために、<code>push_to_hub=True</code>を使用します。</li>",I,R,yl='なお、 <code>hub_model_id</code> 引数には、プッシュしたいリポジトリのフルネームを指定できます。(特に、組織にプッシュする場合は、この引数を使用する必要があります)。例えば、モデルを <a href="https://huggingface.co/huggingface-course" rel="nofollow"><code>huggingface-course</code> organization`</a> にプッシュする場合、<code>Seq2SeqTrainingArguments</code> に <code>hub_model_id=&quot;huggingface-course/marian-finetuned-kde4-en-to-fr&quot;</code> を追加しています。デフォルトでは、使用するリポジトリはあなたの名前空間内にあり、設定した出力ディレクトリにちなんだ名前になります。\nこの例では <code>&quot;sgugger/marian-finetuned-kde4-en-to-fr&quot;</code> となります。(このセクションの冒頭でリンクしたモデルです)',K,v,z,O,A="最後に、すべてを <code>Seq2SeqTrainer</code> に渡すだけです。",ll,N,H,el,Y="学習する前に、まずモデルが獲得するスコアを確認し、微調整によって事態を悪化させていないか再確認します。このコマンドは少し時間がかかるので、実行中にコーヒーを飲むとよいでしょう。",Jl,sl,Q,E,L,X,kl="BLEUスコアが39というのは悪くない結果で、このモデルがすでに英語の文章をフランス語に翻訳するのが得意であることを反映しています。",P,W,ml="次に学習ですが、これにも少し時間がかかります。",tl,V,F,nl,S="学習が行われている間、モデルが保存されるたびに(ここではエポックごとに)バックグラウンドでHubにアップロードされることに注意してください。このようにして、必要に応じて別のマシンで学習を再開することができます。",al,q,Tl="学習が完了したら、再びモデルを評価します。BLEUスコアに改善が見られることを期待しましょう。",w,k,xl,pl,wl,ul,ol="ほぼ14ポイントの改善です。素晴らしいことです。",Bl,Ml,Gl="最後に、<code>push_to_hub()</code> メソッドを使って、最新版のモデルをアップロードしていることを確認します。また、<code>Trainer</code>はすべての評価結果を含むモデルカードを起草し、アップロードします。このモデルカードには、モデルハブが推論デモ用のウィジェットを選ぶのに役立つメタデータが含まれています。通常はモデルクラスから正しいウィジェットを推論できるので何も言う必要はありませんが、今回は同じモデルクラスがあらゆるシーケンス間問題に使えるので、翻訳モデルであることを指定しています。",Il,D,Wl,rl,$l="このコマンドは、今行ったコミットの URL を返すので、それを検査したい場合は、このコマンドを使用します。",Rl,il,dl,fl,bl="この段階で、モデルハブ上の推論ウィジェットを使って、モデルをテストしたり、友人と共有したりすることができます。これで、翻訳タスクのモデルの微調整が完了しました。おめでとうございます!",hl,jl,Ul="もう少し深く学習ループを学びたい場合に、🤗 Accelerateを使って同じことをする方法を紹介します。",Zl;return f=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmluZ0FyZ3VtZW50cyUwQSUwQWFyZ3MlMjAlM0QlMjBTZXEyU2VxVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwZiUyMm1hcmlhbi1maW5ldHVuZWQta2RlNC1lbi10by1mciUyMiUyQyUwQSUyMCUyMCUyMCUyMGV2YWx1YXRpb25fc3RyYXRlZ3klM0QlMjJubyUyMiUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RyYXRlZ3klM0QlMjJlcG9jaCUyMiUyQyUwQSUyMCUyMCUyMCUyMGxlYXJuaW5nX3JhdGUlM0QyZS01JTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTNEMzIlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX2V2YWxfYmF0Y2hfc2l6ZSUzRDY0JTJDJTBBJTIwJTIwJTIwJTIwd2VpZ2h0X2RlY2F5JTNEMC4wMSUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfdG90YWxfbGltaXQlM0QzJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3RyYWluX2Vwb2NocyUzRDMlMkMlMEElMjAlMjAlMjAlMjBwcmVkaWN0X3dpdGhfZ2VuZXJhdGUlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwZnAxNiUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBwdXNoX3RvX2h1YiUzRFRydWUlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainingArguments
args = Seq2SeqTrainingArguments(
<span class="hljs-string">f&quot;marian-finetuned-kde4-en-to-fr&quot;</span>,
evaluation_strategy=<span class="hljs-string">&quot;no&quot;</span>,
save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>,
learning_rate=<span class="hljs-number">2e-5</span>,
per_device_train_batch_size=<span class="hljs-number">32</span>,
per_device_eval_batch_size=<span class="hljs-number">64</span>,
weight_decay=<span class="hljs-number">0.01</span>,
save_total_limit=<span class="hljs-number">3</span>,
num_train_epochs=<span class="hljs-number">3</span>,
predict_with_generate=<span class="hljs-literal">True</span>,
fp16=<span class="hljs-literal">True</span>,
push_to_hub=<span class="hljs-literal">True</span>,
)`,wrap:!1}}),v=new ee({props:{$$slots:{default:[Vp]},$$scope:{ctx:x}}}),N=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmVyJTBBJTBBdHJhaW5lciUyMCUzRCUyMFNlcTJTZXFUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwYXJncyUyQyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0R0b2tlbml6ZWRfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfZGF0YXNldCUzRHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnZhbGlkYXRpb24lMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBkYXRhX2NvbGxhdG9yJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMHRva2VuaXplciUzRHRva2VuaXplciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainer
trainer = Seq2SeqTrainer(
model,
args,
train_dataset=tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>],
eval_dataset=tokenized_datasets[<span class="hljs-string">&quot;validation&quot;</span>],
data_collator=data_collator,
tokenizer=tokenizer,
compute_metrics=compute_metrics,
)`,wrap:!1}}),sl=new h({props:{code:"dHJhaW5lci5ldmFsdWF0ZShtYXhfbGVuZ3RoJTNEbWF4X3RhcmdldF9sZW5ndGgp",highlighted:"trainer.evaluate(max_length=max_target_length)",wrap:!1}}),E=new h({props:{code:"JTdCJ2V2YWxfbG9zcyclM0ElMjAxLjY5NjQ0MDgxNTkyNTU5ODElMkMlMEElMjAnZXZhbF9ibGV1JyUzQSUyMDM5LjI2ODY1MDYxMDA3NjE2JTJDJTBBJTIwJ2V2YWxfcnVudGltZSclM0ElMjA5NjUuODg4NCUyQyUwQSUyMCdldmFsX3NhbXBsZXNfcGVyX3NlY29uZCclM0ElMjAyMS43NiUyQyUwQSUyMCdldmFsX3N0ZXBzX3Blcl9zZWNvbmQnJTNBJTIwMC4zNDElN0Q=",highlighted:`{<span class="hljs-string">&#x27;eval_loss&#x27;</span>: <span class="hljs-number">1.6964408159255981</span>,
<span class="hljs-string">&#x27;eval_bleu&#x27;</span>: <span class="hljs-number">39.26865061007616</span>,
<span class="hljs-string">&#x27;eval_runtime&#x27;</span>: <span class="hljs-number">965.8884</span>,
<span class="hljs-string">&#x27;eval_samples_per_second&#x27;</span>: <span class="hljs-number">21.76</span>,
<span class="hljs-string">&#x27;eval_steps_per_second&#x27;</span>: <span class="hljs-number">0.341</span>}`,wrap:!1}}),V=new h({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:"trainer.train()",wrap:!1}}),k=new h({props:{code:"dHJhaW5lci5ldmFsdWF0ZShtYXhfbGVuZ3RoJTNEbWF4X3RhcmdldF9sZW5ndGgp",highlighted:"trainer.evaluate(max_length=max_target_length)",wrap:!1}}),pl=new h({props:{code:"JTdCJ2V2YWxfbG9zcyclM0ElMjAwLjg1NTg1MDU3NzM1NDQzMTIlMkMlMEElMjAnZXZhbF9ibGV1JyUzQSUyMDUyLjk0MTYxMzM3Nzc1NTc2JTJDJTBBJTIwJ2V2YWxfcnVudGltZSclM0ElMjA3MTQuMjU3NiUyQyUwQSUyMCdldmFsX3NhbXBsZXNfcGVyX3NlY29uZCclM0ElMjAyOS40MjYlMkMlMEElMjAnZXZhbF9zdGVwc19wZXJfc2Vjb25kJyUzQSUyMDAuNDYxJTJDJTBBJTIwJ2Vwb2NoJyUzQSUyMDMuMCU3RA==",highlighted:`{<span class="hljs-string">&#x27;eval_loss&#x27;</span>: <span class="hljs-number">0.8558505773544312</span>,
<span class="hljs-string">&#x27;eval_bleu&#x27;</span>: <span class="hljs-number">52.94161337775576</span>,
<span class="hljs-string">&#x27;eval_runtime&#x27;</span>: <span class="hljs-number">714.2576</span>,
<span class="hljs-string">&#x27;eval_samples_per_second&#x27;</span>: <span class="hljs-number">29.426</span>,
<span class="hljs-string">&#x27;eval_steps_per_second&#x27;</span>: <span class="hljs-number">0.461</span>,
<span class="hljs-string">&#x27;epoch&#x27;</span>: <span class="hljs-number">3.0</span>}`,wrap:!1}}),D=new h({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yih0YWdzJTNEJTIydHJhbnNsYXRpb24lMjIlMkMlMjBjb21taXRfbWVzc2FnZSUzRCUyMlRyYWluaW5nJTIwY29tcGxldGUlMjIp",highlighted:'trainer.push_to_hub(tags=<span class="hljs-string">&quot;translation&quot;</span>, commit_message=<span class="hljs-string">&quot;Training complete&quot;</span>)',wrap:!1}}),il=new h({props:{code:"J2h0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZzZ3VnZ2VyJTJGbWFyaWFuLWZpbmV0dW5lZC1rZGU0LWVuLXRvLWZyJTJGY29tbWl0JTJGMzYwMWQ2MjFlM2JhYWUyYmM2M2QzMzExNDUyNTM1ZjhmNThmNmVmMyc=",highlighted:'<span class="hljs-string">&#x27;https://huggingface.co/sgugger/marian-finetuned-kde4-en-to-fr/commit/3601d621e3baae2bc63d3311452535f8f58f6ef3&#x27;</span>',wrap:!1}}),{c(){p=J("p"),p.innerHTML=b,r=n(),o(f.$$.fragment),G=n(),d=J("p"),d.textContent=g,B=n(),Z=J("ul"),Z.innerHTML=C,I=n(),R=J("p"),R.innerHTML=yl,K=n(),o(v.$$.fragment),z=n(),O=J("p"),O.innerHTML=A,ll=n(),o(N.$$.fragment),H=n(),el=J("p"),el.textContent=Y,Jl=n(),o(sl.$$.fragment),Q=n(),o(E.$$.fragment),L=n(),X=J("p"),X.textContent=kl,P=n(),W=J("p"),W.textContent=ml,tl=n(),o(V.$$.fragment),F=n(),nl=J("p"),nl.textContent=S,al=n(),q=J("p"),q.textContent=Tl,w=n(),o(k.$$.fragment),xl=n(),o(pl.$$.fragment),wl=n(),ul=J("p"),ul.textContent=ol,Bl=n(),Ml=J("p"),Ml.innerHTML=Gl,Il=n(),o(D.$$.fragment),Wl=n(),rl=J("p"),rl.textContent=$l,Rl=n(),o(il.$$.fragment),dl=n(),fl=J("p"),fl.textContent=bl,hl=n(),jl=J("p"),jl.textContent=Ul},l(i){p=m(i,"P",{"data-svelte-h":!0}),T(p)!=="svelte-v4zcu6"&&(p.innerHTML=b),r=a(i),U(f.$$.fragment,i),G=a(i),d=m(i,"P",{"data-svelte-h":!0}),T(d)!=="svelte-eribmo"&&(d.textContent=g),B=a(i),Z=m(i,"UL",{"data-svelte-h":!0}),T(Z)!=="svelte-c02m2a"&&(Z.innerHTML=C),I=a(i),R=m(i,"P",{"data-svelte-h":!0}),T(R)!=="svelte-z74noj"&&(R.innerHTML=yl),K=a(i),U(v.$$.fragment,i),z=a(i),O=m(i,"P",{"data-svelte-h":!0}),T(O)!=="svelte-1667224"&&(O.innerHTML=A),ll=a(i),U(N.$$.fragment,i),H=a(i),el=m(i,"P",{"data-svelte-h":!0}),T(el)!=="svelte-1ttk3kp"&&(el.textContent=Y),Jl=a(i),U(sl.$$.fragment,i),Q=a(i),U(E.$$.fragment,i),L=a(i),X=m(i,"P",{"data-svelte-h":!0}),T(X)!=="svelte-he05yv"&&(X.textContent=kl),P=a(i),W=m(i,"P",{"data-svelte-h":!0}),T(W)!=="svelte-moix1b"&&(W.textContent=ml),tl=a(i),U(V.$$.fragment,i),F=a(i),nl=m(i,"P",{"data-svelte-h":!0}),T(nl)!=="svelte-as74zy"&&(nl.textContent=S),al=a(i),q=m(i,"P",{"data-svelte-h":!0}),T(q)!=="svelte-1mpiw6d"&&(q.textContent=Tl),w=a(i),U(k.$$.fragment,i),xl=a(i),U(pl.$$.fragment,i),wl=a(i),ul=m(i,"P",{"data-svelte-h":!0}),T(ul)!=="svelte-n0dhlo"&&(ul.textContent=ol),Bl=a(i),Ml=m(i,"P",{"data-svelte-h":!0}),T(Ml)!=="svelte-ykpqaa"&&(Ml.innerHTML=Gl),Il=a(i),U(D.$$.fragment,i),Wl=a(i),rl=m(i,"P",{"data-svelte-h":!0}),T(rl)!=="svelte-nz50q"&&(rl.textContent=$l),Rl=a(i),U(il.$$.fragment,i),dl=a(i),fl=m(i,"P",{"data-svelte-h":!0}),T(fl)!=="svelte-1wh3ysc"&&(fl.textContent=bl),hl=a(i),jl=m(i,"P",{"data-svelte-h":!0}),T(jl)!=="svelte-jji1fz"&&(jl.textContent=Ul)},m(i,_){s(i,p,_),s(i,r,_),u(f,i,_),s(i,G,_),s(i,d,_),s(i,B,_),s(i,Z,_),s(i,I,_),s(i,R,_),s(i,K,_),u(v,i,_),s(i,z,_),s(i,O,_),s(i,ll,_),u(N,i,_),s(i,H,_),s(i,el,_),s(i,Jl,_),u(sl,i,_),s(i,Q,_),u(E,i,_),s(i,L,_),s(i,X,_),s(i,P,_),s(i,W,_),s(i,tl,_),u(V,i,_),s(i,F,_),s(i,nl,_),s(i,al,_),s(i,q,_),s(i,w,_),u(k,i,_),s(i,xl,_),u(pl,i,_),s(i,wl,_),s(i,ul,_),s(i,Bl,_),s(i,Ml,_),s(i,Il,_),u(D,i,_),s(i,Wl,_),s(i,rl,_),s(i,Rl,_),u(il,i,_),s(i,dl,_),s(i,fl,_),s(i,hl,_),s(i,jl,_),Zl=!0},i(i){Zl||(c(f.$$.fragment,i),c(v.$$.fragment,i),c(N.$$.fragment,i),c(sl.$$.fragment,i),c(E.$$.fragment,i),c(V.$$.fragment,i),c(k.$$.fragment,i),c(pl.$$.fragment,i),c(D.$$.fragment,i),c(il.$$.fragment,i),Zl=!0)},o(i){y(f.$$.fragment,i),y(v.$$.fragment,i),y(N.$$.fragment,i),y(sl.$$.fragment,i),y(E.$$.fragment,i),y(V.$$.fragment,i),y(k.$$.fragment,i),y(pl.$$.fragment,i),y(D.$$.fragment,i),y(il.$$.fragment,i),Zl=!1},d(i){i&&(e(p),e(r),e(G),e(d),e(B),e(Z),e(I),e(R),e(K),e(z),e(O),e(ll),e(H),e(el),e(Jl),e(Q),e(L),e(X),e(P),e(W),e(tl),e(F),e(nl),e(al),e(q),e(w),e(xl),e(wl),e(ul),e(Bl),e(Ml),e(Il),e(Wl),e(rl),e(Rl),e(dl),e(fl),e(hl),e(jl)),j(f,i),j(v,i),j(N,i),j(sl,i),j(E,i),j(V,i),j(k,i),j(pl,i),j(D,i),j(il,i)}}}function Rp(x){let p,b="その前に、何も学習していないモデルでどのような結果が得られるか見てみましょう。",r,f,G,d,g,B,Z="これが完了すると、モデルをコンパイルして学習するために必要なものをすべて準備することができます。",C,I,R="tf.keras.mixed_precision.set_global_policy(“mixed_float16”)` を使用していることに注意してください。これは、Kerasにfloat16を使用して学習するように指示します。これは、それをサポートするGPU(Nvidia RTX 20xx/V100またはそれ以降)で大幅なスピードアップを得ることができます。",yl,K,v,z,O='次に、<a href="/course/ja/chapter7/2">セクション2</a>で見たように、学習中にモデルをHubにアップロードするための<code>PushToHubCallback</code>を定義し、そのコールバックとしモデルを単純にフィトするようにします。',A,ll,N,H,el='なお、<code>hub_model_id</code> 引数でプッシュ先のリポジトリ名を指定することができます。(特に、組織にプッシュする場合はこの引数を使用する必要があります)。例えば、モデルを <a href="https://huggingface.co/huggingface-course" rel="nofollow"><code>huggingface-course</code> organization</a> にプッシュする場合、<code>Seq2SeqTrainingArguments</code> に <code>hub_model_id=&quot;huggingface-course/marian-finetuned-kde4-en-to-fr&quot;</code> を追加しています。',Y,Jl,sl="デフォルトでは、使用するリポジトリはあなたの名前空間内にあり、設定した出力ディレクトリの名前になります。ここでは <code>&quot;sgugger/marian-finetuned-kde4-en-to-fr&quot;</code> (このセクションの最初にリンクしたモデルです)となります。",Q,E,L,X,kl="最後に、トレーニングが終了した後の指標を見てみましょう。",P,W,ml,tl,V,F,nl="この段階で、モデルハブ上の推論ウィジェットを使って、モデルをテストしたり、友人と共有したりすることができます。これで、翻訳タスクのモデルの微調整が完了です。",S,al,q="おめでとうございます!",Tl;return f=new h({props:{code:"cHJpbnQoY29tcHV0ZV9tZXRyaWNzKCkp",highlighted:'<span class="hljs-built_in">print</span>(compute_metrics())',wrap:!1}}),d=new h({props:{code:"JTdCJ2JsZXUnJTNBJTIwMzMuMjY5ODM3MDE0NTQ3MzMlN0Q=",highlighted:'{&#x27;bleu&#x27;: <span class="hljs-number">33.26983701454733</span>}',wrap:!1}}),K=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGNyZWF0ZV9vcHRpbWl6ZXIlMEFmcm9tJTIwdHJhbnNmb3JtZXJzLmtlcmFzX2NhbGxiYWNrcyUyMGltcG9ydCUyMFB1c2hUb0h1YkNhbGxiYWNrJTBBaW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEElMjMlMjBUaGUlMjBudW1iZXIlMjBvZiUyMHRyYWluaW5nJTIwc3RlcHMlMjBpcyUyMHRoZSUyMG51bWJlciUyMG9mJTIwc2FtcGxlcyUyMGluJTIwdGhlJTIwZGF0YXNldCUyQyUyMGRpdmlkZWQlMjBieSUyMHRoZSUyMGJhdGNoJTIwc2l6ZSUyMHRoZW4lMjBtdWx0aXBsaWVkJTBBJTIzJTIwYnklMjB0aGUlMjB0b3RhbCUyMG51bWJlciUyMG9mJTIwZXBvY2hzLiUyME5vdGUlMjB0aGF0JTIwdGhlJTIwdGZfdHJhaW5fZGF0YXNldCUyMGhlcmUlMjBpcyUyMGElMjBiYXRjaGVkJTIwdGYuZGF0YS5EYXRhc2V0JTJDJTBBJTIzJTIwbm90JTIwdGhlJTIwb3JpZ2luYWwlMjBIdWdnaW5nJTIwRmFjZSUyMERhdGFzZXQlMkMlMjBzbyUyMGl0cyUyMGxlbigpJTIwaXMlMjBhbHJlYWR5JTIwbnVtX3NhbXBsZXMlMjAlMkYlMkYlMjBiYXRjaF9zaXplLiUwQW51bV9lcG9jaHMlMjAlM0QlMjAzJTBBbnVtX3RyYWluX3N0ZXBzJTIwJTNEJTIwbGVuKHRmX3RyYWluX2RhdGFzZXQpJTIwKiUyMG51bV9lcG9jaHMlMEElMEFvcHRpbWl6ZXIlMkMlMjBzY2hlZHVsZSUyMCUzRCUyMGNyZWF0ZV9vcHRpbWl6ZXIoJTBBJTIwJTIwJTIwJTIwaW5pdF9sciUzRDVlLTUlMkMlMEElMjAlMjAlMjAlMjBudW1fd2FybXVwX3N0ZXBzJTNEMCUyQyUwQSUyMCUyMCUyMCUyMG51bV90cmFpbl9zdGVwcyUzRG51bV90cmFpbl9zdGVwcyUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheV9yYXRlJTNEMC4wMSUyQyUwQSklMEFtb2RlbC5jb21waWxlKG9wdGltaXplciUzRG9wdGltaXplciklMEElMEElMjMlMjBUcmFpbiUyMGluJTIwbWl4ZWQtcHJlY2lzaW9uJTIwZmxvYXQxNiUwQXRmLmtlcmFzLm1peGVkX3ByZWNpc2lvbi5zZXRfZ2xvYmFsX3BvbGljeSglMjJtaXhlZF9mbG9hdDE2JTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> create_optimizer
<span class="hljs-keyword">from</span> transformers.keras_callbacks <span class="hljs-keyword">import</span> PushToHubCallback
<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-comment"># The number of training steps is the number of samples in the dataset, divided by the batch size then multiplied</span>
<span class="hljs-comment"># by the total number of epochs. Note that the tf_train_dataset here is a batched tf.data.Dataset,</span>
<span class="hljs-comment"># not the original Hugging Face Dataset, so its len() is already num_samples // batch_size.</span>
num_epochs = <span class="hljs-number">3</span>
num_train_steps = <span class="hljs-built_in">len</span>(tf_train_dataset) * num_epochs
optimizer, schedule = create_optimizer(
init_lr=<span class="hljs-number">5e-5</span>,
num_warmup_steps=<span class="hljs-number">0</span>,
num_train_steps=num_train_steps,
weight_decay_rate=<span class="hljs-number">0.01</span>,
)
model.<span class="hljs-built_in">compile</span>(optimizer=optimizer)
<span class="hljs-comment"># Train in mixed-precision float16</span>
tf.keras.mixed_precision.set_global_policy(<span class="hljs-string">&quot;mixed_float16&quot;</span>)`,wrap:!1}}),ll=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5rZXJhc19jYWxsYmFja3MlMjBpbXBvcnQlMjBQdXNoVG9IdWJDYWxsYmFjayUwQSUwQWNhbGxiYWNrJTIwJTNEJTIwUHVzaFRvSHViQ2FsbGJhY2soJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMm1hcmlhbi1maW5ldHVuZWQta2RlNC1lbi10by1mciUyMiUyQyUyMHRva2VuaXplciUzRHRva2VuaXplciUwQSklMEElMEFtb2RlbC5maXQoJTBBJTIwJTIwJTIwJTIwdGZfdHJhaW5fZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMHZhbGlkYXRpb25fZGF0YSUzRHRmX2V2YWxfZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMGNhbGxiYWNrcyUzRCU1QmNhbGxiYWNrJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXBvY2hzJTNEbnVtX2Vwb2NocyUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers.keras_callbacks <span class="hljs-keyword">import</span> PushToHubCallback
callback = PushToHubCallback(
output_dir=<span class="hljs-string">&quot;marian-finetuned-kde4-en-to-fr&quot;</span>, tokenizer=tokenizer
)
model.fit(
tf_train_dataset,
validation_data=tf_eval_dataset,
callbacks=[callback],
epochs=num_epochs,
)`,wrap:!1}}),E=new ee({props:{$$slots:{default:[Xp]},$$scope:{ctx:x}}}),W=new h({props:{code:"cHJpbnQoY29tcHV0ZV9tZXRyaWNzKCkp",highlighted:'<span class="hljs-built_in">print</span>(compute_metrics())',wrap:!1}}),tl=new h({props:{code:"JTdCJ2JsZXUnJTNBJTIwNTcuMzM0MDY2MjcxNTQ1ODY1JTdE",highlighted:'{&#x27;bleu&#x27;: <span class="hljs-number">57.334066271545865</span>}',wrap:!1}}),{c(){p=J("p"),p.textContent=b,r=n(),o(f.$$.fragment),G=n(),o(d.$$.fragment),g=n(),B=J("p"),B.textContent=Z,C=n(),I=J("p"),I.textContent=R,yl=n(),o(K.$$.fragment),v=n(),z=J("p"),z.innerHTML=O,A=n(),o(ll.$$.fragment),N=n(),H=J("p"),H.innerHTML=el,Y=n(),Jl=J("p"),Jl.innerHTML=sl,Q=n(),o(E.$$.fragment),L=n(),X=J("p"),X.textContent=kl,P=n(),o(W.$$.fragment),ml=n(),o(tl.$$.fragment),V=n(),F=J("p"),F.textContent=nl,S=n(),al=J("p"),al.textContent=q},l(w){p=m(w,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1mwbe34"&&(p.textContent=b),r=a(w),U(f.$$.fragment,w),G=a(w),U(d.$$.fragment,w),g=a(w),B=m(w,"P",{"data-svelte-h":!0}),T(B)!=="svelte-ewsjaj"&&(B.textContent=Z),C=a(w),I=m(w,"P",{"data-svelte-h":!0}),T(I)!=="svelte-ubb0m4"&&(I.textContent=R),yl=a(w),U(K.$$.fragment,w),v=a(w),z=m(w,"P",{"data-svelte-h":!0}),T(z)!=="svelte-tlsk7x"&&(z.innerHTML=O),A=a(w),U(ll.$$.fragment,w),N=a(w),H=m(w,"P",{"data-svelte-h":!0}),T(H)!=="svelte-dx0jpx"&&(H.innerHTML=el),Y=a(w),Jl=m(w,"P",{"data-svelte-h":!0}),T(Jl)!=="svelte-1ibit35"&&(Jl.innerHTML=sl),Q=a(w),U(E.$$.fragment,w),L=a(w),X=m(w,"P",{"data-svelte-h":!0}),T(X)!=="svelte-15q2via"&&(X.textContent=kl),P=a(w),U(W.$$.fragment,w),ml=a(w),U(tl.$$.fragment,w),V=a(w),F=m(w,"P",{"data-svelte-h":!0}),T(F)!=="svelte-1ly16a9"&&(F.textContent=nl),S=a(w),al=m(w,"P",{"data-svelte-h":!0}),T(al)!=="svelte-9856ky"&&(al.textContent=q)},m(w,k){s(w,p,k),s(w,r,k),u(f,w,k),s(w,G,k),u(d,w,k),s(w,g,k),s(w,B,k),s(w,C,k),s(w,I,k),s(w,yl,k),u(K,w,k),s(w,v,k),s(w,z,k),s(w,A,k),u(ll,w,k),s(w,N,k),s(w,H,k),s(w,Y,k),s(w,Jl,k),s(w,Q,k),u(E,w,k),s(w,L,k),s(w,X,k),s(w,P,k),u(W,w,k),s(w,ml,k),u(tl,w,k),s(w,V,k),s(w,F,k),s(w,S,k),s(w,al,k),Tl=!0},i(w){Tl||(c(f.$$.fragment,w),c(d.$$.fragment,w),c(K.$$.fragment,w),c(ll.$$.fragment,w),c(E.$$.fragment,w),c(W.$$.fragment,w),c(tl.$$.fragment,w),Tl=!0)},o(w){y(f.$$.fragment,w),y(d.$$.fragment,w),y(K.$$.fragment,w),y(ll.$$.fragment,w),y(E.$$.fragment,w),y(W.$$.fragment,w),y(tl.$$.fragment,w),Tl=!1},d(w){w&&(e(p),e(r),e(G),e(g),e(B),e(C),e(I),e(yl),e(v),e(z),e(A),e(N),e(H),e(Y),e(Jl),e(Q),e(L),e(X),e(P),e(ml),e(V),e(F),e(S),e(al)),j(f,w),j(d,w),j(K,w),j(ll,w),j(E,w),j(W,w),j(tl,w)}}}function Vp(x){let p,b="💡 出力先ディレクトリがすでに存在する場合は、プッシュしたいリポジトリのローカルクローンである必要があります。そうでない場合は、<code>Seq2SeqTrainer</code> を定義するときにエラーが発生するので、新しい名前を設定する必要があります。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1rszld3"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function Xp(x){let p,b="💡 使用している出力ディレクトリがすでに存在する場合、プッシュしたいリポジトリのローカルクローンである必要があります。そうでない場合は、<code>model.fit()</code> を呼び出すときにエラーが発生するので、新しい名前を設定する必要があります。";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-lsxh3a"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function ip(x){let p,b,r,f='それでは、必要な部分を簡単にカスタマイズできるように、トレーニングループの全体像を見てみましょう。これは、<a href="/course/ja/chapter7/2">セクション 2</a> と <a href="/course/chapter3/4">第3章</a> で行ったことと同じように見えます。',G,d,g,B,Z="何度か見たことがあるはずなので、かなり手短にコードを見ていきましょう。まず、データセットから <code>DataLoader</code> を構築します。データセットを <code>&quot;torch&quot;</code> フォーマットに設定し、PyTorchテンソルを取得します。",C,I,R,yl,K="次に、モデルの再定義を行います。これは、以前の微調整を継続するのではなく、再び学習済みモデルから開始することを確認するためです。",v,z,O,A,ll="それから、オプティマイザーが必要になります。",N,H,el,Y,Jl="これらのオブジェクトが揃ったら、それらを <code>accelerator.prepare()</code> メソッドに送ることができます。もし、ColabノートブックでTPUの学習をしたい場合は、このコードを全てトレーニング関数に移動する必要があります。そしてトレーニング関数は、<code>Accelerator</code>をインスタンス化するセルを実行しないようにします。",sl,Q,E,L,X="これで <code>train_dataloader</code> を <code>accelerator.prepare()</code> に送ったので、その長さを使って学習ステップ数を計算することができます。このメソッドは <code>DataLoader</code> の長さを変更するので、常にデータローダーを準備した後にこの操作を行う必要があることを忘れないでください。ここでは、学習率を0に近づける古典的な線形スケジュールを使用します。",kl,P,W,ml,tl="最後に、私たちのモデルをハブにプッシュするために、作業フォルダに <code>Repository</code> オブジェクトを作成する必要があります。まず、ハギングフェイスハブにログインしてください(まだログインしていない場合)。モデルに付与したいモデル ID からリポジトリ名を決定します。(<code>repo_name</code> は自由に置き換えてください。ユーザー名が含まれていればよく、これは関数 <code>get_full_repo_name()</code> が行うことです)",V,F,nl,S,al,q,Tl="そして、そのリポジトリをローカルフォルダーにクローンすることができます。すでに存在する場合は、このローカルフォルダーは作業中のリポジトリのクローンである必要があります。",w,k,xl,pl,wl="これで <code>repo.push_to_hub()</code> メソッドを呼び出すことで、<code>output_dir</code> に保存したものをアップロードできるようになりました。これにより、各エポック終了時に中間モデルをアップロードすることができます。",ul,ol,Bl,Ml,Gl="これで完全なトレーニングループを書く準備ができました。評価パートを簡略化するため、この<code>postprocess()</code>関数は予測値とラベルを受け取って、 <code>metric</code> オブジェクトが求める文字列のリストに変換します。",Il,D,Wl,rl,$l='学習ループは <a href="/course/ja/chapter7/2">セクション 2</a> や <a href="/course/ja/chapter3">第3章</a> のものとよく似ていますが、評価パートで少し違いがあります。では、その部分に注目してみましょう!',Rl,il,dl="まず、予測の計算には <code>generate()</code> メソッドを使用していますが、これはベースモデルに対するメソッドです。🤗 Accelerateが<code>prepare()</code> メソッドで作成したラップモデルではありません。これがまずモデルをアンラップしてから、このメソッドを呼び出している理由です。",fl,bl,hl='もう一つは、<a href="/course/ja/chapter7/2">トークン分類</a> のように、2つのプロセスで入力とラベルを異なる形状にパディングしている場合があるので、 <code>accelerator.pad_across_processes()</code> で予測値とラベルを同じ形状にしてから <code>gather()</code> メソッドを呼び出しています。もしこれを行わなければ、評価はエラーになるか、永遠にハングアップします。',jl,Ul,Zl,i,_,Vl,Sl='これが完了すると、<code>Seq2SeqTrainer</code>で学習したものとかなり似た結果を持つモデルができるはずです。このコードを使って学習させたものは <a href="https://huggingface.co/huggingface-course/marian-finetuned-kde4-en-to-fr-accelerate" rel="nofollow"><em>huggingface-course/marian-finetuned-kde4-en-to-fr-accelerate</em></a> で確認することができます。また、学習ループに手を加えたい場合は、上に示したコードを編集することで、直接実装することができます',Dl;return p=new gl({props:{title:"カスタムトレーニングループ",local:"カスタムトレーニングループ",headingTag:"h2"}}),d=new gl({props:{title:"トレーニングのためのすべての準備",local:"トレーニングのためのすべての準備",headingTag:"h3"}}),I=new h({props:{code:"ZnJvbSUyMHRvcmNoLnV0aWxzLmRhdGElMjBpbXBvcnQlMjBEYXRhTG9hZGVyJTBBJTBBdG9rZW5pemVkX2RhdGFzZXRzLnNldF9mb3JtYXQoJTIydG9yY2glMjIpJTBBdHJhaW5fZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoJTBBJTIwJTIwJTIwJTIwdG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBzaHVmZmxlJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGNvbGxhdGVfZm4lM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwYmF0Y2hfc2l6ZSUzRDglMkMlMEEpJTBBZXZhbF9kYXRhbG9hZGVyJTIwJTNEJTIwRGF0YUxvYWRlciglMEElMjAlMjAlMjAlMjB0b2tlbml6ZWRfZGF0YXNldHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVEJTJDJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMjBiYXRjaF9zaXplJTNEOCUwQSk=",highlighted:`<span class="hljs-keyword">from</span> torch.utils.data <span class="hljs-keyword">import</span> DataLoader
tokenized_datasets.set_format(<span class="hljs-string">&quot;torch&quot;</span>)
train_dataloader = DataLoader(
tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>],
shuffle=<span class="hljs-literal">True</span>,
collate_fn=data_collator,
batch_size=<span class="hljs-number">8</span>,
)
eval_dataloader = DataLoader(
tokenized_datasets[<span class="hljs-string">&quot;validation&quot;</span>], collate_fn=data_collator, batch_size=<span class="hljs-number">8</span>
)`,wrap:!1}}),z=new h({props:{code:"bW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXEyU2VxTE0uZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2NoZWNrcG9pbnQp",highlighted:"model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)",wrap:!1}}),H=new h({props:{code:"ZnJvbSUyMHRvcmNoLm9wdGltJTIwaW1wb3J0JTIwQWRhbVclMEElMEFvcHRpbWl6ZXIlMjAlM0QlMjBBZGFtVyhtb2RlbC5wYXJhbWV0ZXJzKCklMkMlMjBsciUzRDJlLTUp",highlighted:`<span class="hljs-keyword">from</span> torch.optim <span class="hljs-keyword">import</span> AdamW
optimizer = AdamW(model.parameters(), lr=<span class="hljs-number">2e-5</span>)`,wrap:!1}}),Q=new h({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUlMjBpbXBvcnQlMjBBY2NlbGVyYXRvciUwQSUwQWFjY2VsZXJhdG9yJTIwJTNEJTIwQWNjZWxlcmF0b3IoKSUwQW1vZGVsJTJDJTIwb3B0aW1pemVyJTJDJTIwdHJhaW5fZGF0YWxvYWRlciUyQyUyMGV2YWxfZGF0YWxvYWRlciUyMCUzRCUyMGFjY2VsZXJhdG9yLnByZXBhcmUoJTBBJTIwJTIwJTIwJTIwbW9kZWwlMkMlMjBvcHRpbWl6ZXIlMkMlMjB0cmFpbl9kYXRhbG9hZGVyJTJDJTIwZXZhbF9kYXRhbG9hZGVyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> accelerate <span class="hljs-keyword">import</span> Accelerator
accelerator = Accelerator()
model, optimizer, train_dataloader, eval_dataloader = accelerator.prepare(
model, optimizer, train_dataloader, eval_dataloader
)`,wrap:!1}}),P=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGdldF9zY2hlZHVsZXIlMEElMEFudW1fdHJhaW5fZXBvY2hzJTIwJTNEJTIwMyUwQW51bV91cGRhdGVfc3RlcHNfcGVyX2Vwb2NoJTIwJTNEJTIwbGVuKHRyYWluX2RhdGFsb2FkZXIpJTBBbnVtX3RyYWluaW5nX3N0ZXBzJTIwJTNEJTIwbnVtX3RyYWluX2Vwb2NocyUyMColMjBudW1fdXBkYXRlX3N0ZXBzX3Blcl9lcG9jaCUwQSUwQWxyX3NjaGVkdWxlciUyMCUzRCUyMGdldF9zY2hlZHVsZXIoJTBBJTIwJTIwJTIwJTIwJTIybGluZWFyJTIyJTJDJTBBJTIwJTIwJTIwJTIwb3B0aW1pemVyJTNEb3B0aW1pemVyJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3dhcm11cF9zdGVwcyUzRDAlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5pbmdfc3RlcHMlM0RudW1fdHJhaW5pbmdfc3RlcHMlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> get_scheduler
num_train_epochs = <span class="hljs-number">3</span>
num_update_steps_per_epoch = <span class="hljs-built_in">len</span>(train_dataloader)
num_training_steps = num_train_epochs * num_update_steps_per_epoch
lr_scheduler = get_scheduler(
<span class="hljs-string">&quot;linear&quot;</span>,
optimizer=optimizer,
num_warmup_steps=<span class="hljs-number">0</span>,
num_training_steps=num_training_steps,
)`,wrap:!1}}),F=new h({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMFJlcG9zaXRvcnklMkMlMjBnZXRfZnVsbF9yZXBvX25hbWUlMEElMEFtb2RlbF9uYW1lJTIwJTNEJTIwJTIybWFyaWFuLWZpbmV0dW5lZC1rZGU0LWVuLXRvLWZyLWFjY2VsZXJhdGUlMjIlMEFyZXBvX25hbWUlMjAlM0QlMjBnZXRfZnVsbF9yZXBvX25hbWUobW9kZWxfbmFtZSklMEFyZXBvX25hbWU=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> Repository, get_full_repo_name
model_name = <span class="hljs-string">&quot;marian-finetuned-kde4-en-to-fr-accelerate&quot;</span>
repo_name = get_full_repo_name(model_name)
repo_name`,wrap:!1}}),S=new h({props:{code:"J3NndWdnZXIlMkZtYXJpYW4tZmluZXR1bmVkLWtkZTQtZW4tdG8tZnItYWNjZWxlcmF0ZSc=",highlighted:'<span class="hljs-string">&#x27;sgugger/marian-finetuned-kde4-en-to-fr-accelerate&#x27;</span>',wrap:!1}}),k=new h({props:{code:"b3V0cHV0X2RpciUyMCUzRCUyMCUyMm1hcmlhbi1maW5ldHVuZWQta2RlNC1lbi10by1mci1hY2NlbGVyYXRlJTIyJTBBcmVwbyUyMCUzRCUyMFJlcG9zaXRvcnkob3V0cHV0X2RpciUyQyUyMGNsb25lX2Zyb20lM0RyZXBvX25hbWUp",highlighted:`output_dir = <span class="hljs-string">&quot;marian-finetuned-kde4-en-to-fr-accelerate&quot;</span>
repo = Repository(output_dir, clone_from=repo_name)`,wrap:!1}}),ol=new gl({props:{title:"トレーニングループ",local:"トレーニングループ",headingTag:"h3"}}),D=new h({props:{code:"ZGVmJTIwcG9zdHByb2Nlc3MocHJlZGljdGlvbnMlMkMlMjBsYWJlbHMpJTNBJTBBJTIwJTIwJTIwJTIwcHJlZGljdGlvbnMlMjAlM0QlMjBwcmVkaWN0aW9ucy5jcHUoKS5udW1weSgpJTBBJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwbGFiZWxzLmNwdSgpLm51bXB5KCklMEElMEElMjAlMjAlMjAlMjBkZWNvZGVkX3ByZWRzJTIwJTNEJTIwdG9rZW5pemVyLmJhdGNoX2RlY29kZShwcmVkaWN0aW9ucyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMFJlcGxhY2UlMjAtMTAwJTIwaW4lMjB0aGUlMjBsYWJlbHMlMjBhcyUyMHdlJTIwY2FuJ3QlMjBkZWNvZGUlMjB0aGVtLiUwQSUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMG5wLndoZXJlKGxhYmVscyUyMCElM0QlMjAtMTAwJTJDJTIwbGFiZWxzJTJDJTIwdG9rZW5pemVyLnBhZF90b2tlbl9pZCklMEElMjAlMjAlMjAlMjBkZWNvZGVkX2xhYmVscyUyMCUzRCUyMHRva2VuaXplci5iYXRjaF9kZWNvZGUobGFiZWxzJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwU29tZSUyMHNpbXBsZSUyMHBvc3QtcHJvY2Vzc2luZyUwQSUyMCUyMCUyMCUyMGRlY29kZWRfcHJlZHMlMjAlM0QlMjAlNUJwcmVkLnN0cmlwKCklMjBmb3IlMjBwcmVkJTIwaW4lMjBkZWNvZGVkX3ByZWRzJTVEJTBBJTIwJTIwJTIwJTIwZGVjb2RlZF9sYWJlbHMlMjAlM0QlMjAlNUIlNUJsYWJlbC5zdHJpcCgpJTVEJTIwZm9yJTIwbGFiZWwlMjBpbiUyMGRlY29kZWRfbGFiZWxzJTVEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZGVjb2RlZF9wcmVkcyUyQyUyMGRlY29kZWRfbGFiZWxz",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">postprocess</span>(<span class="hljs-params">predictions, labels</span>):
predictions = predictions.cpu().numpy()
labels = labels.cpu().numpy()
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Replace -100 in the labels as we can&#x27;t decode them.</span>
labels = np.where(labels != -<span class="hljs-number">100</span>, labels, tokenizer.pad_token_id)
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Some simple post-processing</span>
decoded_preds = [pred.strip() <span class="hljs-keyword">for</span> pred <span class="hljs-keyword">in</span> decoded_preds]
decoded_labels = [[label.strip()] <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> decoded_labels]
<span class="hljs-keyword">return</span> decoded_preds, decoded_labels`,wrap:!1}}),Ul=new h({props:{code:"ZnJvbSUyMHRxZG0uYXV0byUyMGltcG9ydCUyMHRxZG0lMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXByb2dyZXNzX2JhciUyMCUzRCUyMHRxZG0ocmFuZ2UobnVtX3RyYWluaW5nX3N0ZXBzKSklMEElMEFmb3IlMjBlcG9jaCUyMGluJTIwcmFuZ2UobnVtX3RyYWluX2Vwb2NocyklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBUcmFpbmluZyUwQSUyMCUyMCUyMCUyMG1vZGVsLnRyYWluKCklMEElMjAlMjAlMjAlMjBmb3IlMjBiYXRjaCUyMGluJTIwdHJhaW5fZGF0YWxvYWRlciUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG91dHB1dHMlMjAlM0QlMjBtb2RlbCgqKmJhdGNoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3MlMjAlM0QlMjBvdXRwdXRzLmxvc3MlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhY2NlbGVyYXRvci5iYWNrd2FyZChsb3NzKSUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBscl9zY2hlZHVsZXIuc3RlcCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnplcm9fZ3JhZCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcHJvZ3Jlc3NfYmFyLnVwZGF0ZSgxKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMEV2YWx1YXRpb24lMEElMjAlMjAlMjAlMjBtb2RlbC5ldmFsKCklMEElMjAlMjAlMjAlMjBmb3IlMjBiYXRjaCUyMGluJTIwdHFkbShldmFsX2RhdGFsb2FkZXIpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGdlbmVyYXRlZF90b2tlbnMlMjAlM0QlMjBhY2NlbGVyYXRvci51bndyYXBfbW9kZWwobW9kZWwpLmdlbmVyYXRlKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXR0ZW50aW9uX21hc2slM0RiYXRjaCU1QiUyMmF0dGVudGlvbl9tYXNrJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWF4X2xlbmd0aCUzRDEyOCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbHMlMjAlM0QlMjBiYXRjaCU1QiUyMmxhYmVscyUyMiU1RCUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyME5lY2Vzc2FyeSUyMHRvJTIwcGFkJTIwcHJlZGljdGlvbnMlMjBhbmQlMjBsYWJlbHMlMjBmb3IlMjBiZWluZyUyMGdhdGhlcmVkJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2VuZXJhdGVkX3Rva2VucyUyMCUzRCUyMGFjY2VsZXJhdG9yLnBhZF9hY3Jvc3NfcHJvY2Vzc2VzKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGdlbmVyYXRlZF90b2tlbnMlMkMlMjBkaW0lM0QxJTJDJTIwcGFkX2luZGV4JTNEdG9rZW5pemVyLnBhZF90b2tlbl9pZCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbHMlMjAlM0QlMjBhY2NlbGVyYXRvci5wYWRfYWNyb3NzX3Byb2Nlc3NlcyhsYWJlbHMlMkMlMjBkaW0lM0QxJTJDJTIwcGFkX2luZGV4JTNELTEwMCklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmVkaWN0aW9uc19nYXRoZXJlZCUyMCUzRCUyMGFjY2VsZXJhdG9yLmdhdGhlcihnZW5lcmF0ZWRfdG9rZW5zKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVsc19nYXRoZXJlZCUyMCUzRCUyMGFjY2VsZXJhdG9yLmdhdGhlcihsYWJlbHMpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVjb2RlZF9wcmVkcyUyQyUyMGRlY29kZWRfbGFiZWxzJTIwJTNEJTIwcG9zdHByb2Nlc3MocHJlZGljdGlvbnNfZ2F0aGVyZWQlMkMlMjBsYWJlbHNfZ2F0aGVyZWQpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWV0cmljLmFkZF9iYXRjaChwcmVkaWN0aW9ucyUzRGRlY29kZWRfcHJlZHMlMkMlMjByZWZlcmVuY2VzJTNEZGVjb2RlZF9sYWJlbHMpJTBBJTBBJTIwJTIwJTIwJTIwcmVzdWx0cyUyMCUzRCUyMG1ldHJpYy5jb21wdXRlKCklMEElMjAlMjAlMjAlMjBwcmludChmJTIyZXBvY2glMjAlN0JlcG9jaCU3RCUyQyUyMEJMRVUlMjBzY29yZSUzQSUyMCU3QnJlc3VsdHMlNUInc2NvcmUnJTVEJTNBLjJmJTdEJTIyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMFNhdmUlMjBhbmQlMjB1cGxvYWQlMEElMjAlMjAlMjAlMjBhY2NlbGVyYXRvci53YWl0X2Zvcl9ldmVyeW9uZSgpJTBBJTIwJTIwJTIwJTIwdW53cmFwcGVkX21vZGVsJTIwJTNEJTIwYWNjZWxlcmF0b3IudW53cmFwX21vZGVsKG1vZGVsKSUwQSUyMCUyMCUyMCUyMHVud3JhcHBlZF9tb2RlbC5zYXZlX3ByZXRyYWluZWQob3V0cHV0X2RpciUyQyUyMHNhdmVfZnVuY3Rpb24lM0RhY2NlbGVyYXRvci5zYXZlKSUwQSUyMCUyMCUyMCUyMGlmJTIwYWNjZWxlcmF0b3IuaXNfbWFpbl9wcm9jZXNzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdG9rZW5pemVyLnNhdmVfcHJldHJhaW5lZChvdXRwdXRfZGlyKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcG8ucHVzaF90b19odWIoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY29tbWl0X21lc3NhZ2UlM0RmJTIyVHJhaW5pbmclMjBpbiUyMHByb2dyZXNzJTIwZXBvY2glMjAlN0JlcG9jaCU3RCUyMiUyQyUyMGJsb2NraW5nJTNERmFsc2UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAp",highlighted:`<span class="hljs-keyword">from</span> tqdm.auto <span class="hljs-keyword">import</span> tqdm
<span class="hljs-keyword">import</span> torch
progress_bar = tqdm(<span class="hljs-built_in">range</span>(num_training_steps))
<span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_train_epochs):
<span class="hljs-comment"># Training</span>
model.train()
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_dataloader:
outputs = model(**batch)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
lr_scheduler.step()
optimizer.zero_grad()
progress_bar.update(<span class="hljs-number">1</span>)
<span class="hljs-comment"># Evaluation</span>
model.<span class="hljs-built_in">eval</span>()
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> tqdm(eval_dataloader):
<span class="hljs-keyword">with</span> torch.no_grad():
generated_tokens = accelerator.unwrap_model(model).generate(
batch[<span class="hljs-string">&quot;input_ids&quot;</span>],
attention_mask=batch[<span class="hljs-string">&quot;attention_mask&quot;</span>],
max_length=<span class="hljs-number">128</span>,
)
labels = batch[<span class="hljs-string">&quot;labels&quot;</span>]
<span class="hljs-comment"># Necessary to pad predictions and labels for being gathered</span>
generated_tokens = accelerator.pad_across_processes(
generated_tokens, dim=<span class="hljs-number">1</span>, pad_index=tokenizer.pad_token_id
)
labels = accelerator.pad_across_processes(labels, dim=<span class="hljs-number">1</span>, pad_index=-<span class="hljs-number">100</span>)
predictions_gathered = accelerator.gather(generated_tokens)
labels_gathered = accelerator.gather(labels)
decoded_preds, decoded_labels = postprocess(predictions_gathered, labels_gathered)
metric.add_batch(predictions=decoded_preds, references=decoded_labels)
results = metric.compute()
<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;epoch <span class="hljs-subst">{epoch}</span>, BLEU score: <span class="hljs-subst">{results[<span class="hljs-string">&#x27;score&#x27;</span>]:<span class="hljs-number">.2</span>f}</span>&quot;</span>)
<span class="hljs-comment"># Save and upload</span>
accelerator.wait_for_everyone()
unwrapped_model = accelerator.unwrap_model(model)
unwrapped_model.save_pretrained(output_dir, save_function=accelerator.save)
<span class="hljs-keyword">if</span> accelerator.is_main_process:
tokenizer.save_pretrained(output_dir)
repo.push_to_hub(
commit_message=<span class="hljs-string">f&quot;Training in progress epoch <span class="hljs-subst">{epoch}</span>&quot;</span>, blocking=<span class="hljs-literal">False</span>
)`,wrap:!1}}),i=new h({props:{code:"ZXBvY2glMjAwJTJDJTIwQkxFVSUyMHNjb3JlJTNBJTIwNTMuNDclMEFlcG9jaCUyMDElMkMlMjBCTEVVJTIwc2NvcmUlM0ElMjA1NC4yNCUwQWVwb2NoJTIwMiUyQyUyMEJMRVUlMjBzY29yZSUzQSUyMDU0LjQ0",highlighted:`epoch <span class="hljs-number">0</span>, BLEU score: <span class="hljs-number">53.47</span>
epoch <span class="hljs-number">1</span>, BLEU score: <span class="hljs-number">54.24</span>
epoch <span class="hljs-number">2</span>, BLEU score: <span class="hljs-number">54.44</span>`,wrap:!1}}),{c(){o(p.$$.fragment),b=n(),r=J("p"),r.innerHTML=f,G=n(),o(d.$$.fragment),g=n(),B=J("p"),B.innerHTML=Z,C=n(),o(I.$$.fragment),R=n(),yl=J("p"),yl.textContent=K,v=n(),o(z.$$.fragment),O=n(),A=J("p"),A.textContent=ll,N=n(),o(H.$$.fragment),el=n(),Y=J("p"),Y.innerHTML=Jl,sl=n(),o(Q.$$.fragment),E=n(),L=J("p"),L.innerHTML=X,kl=n(),o(P.$$.fragment),W=n(),ml=J("p"),ml.innerHTML=tl,V=n(),o(F.$$.fragment),nl=n(),o(S.$$.fragment),al=n(),q=J("p"),q.textContent=Tl,w=n(),o(k.$$.fragment),xl=n(),pl=J("p"),pl.innerHTML=wl,ul=n(),o(ol.$$.fragment),Bl=n(),Ml=J("p"),Ml.innerHTML=Gl,Il=n(),o(D.$$.fragment),Wl=n(),rl=J("p"),rl.innerHTML=$l,Rl=n(),il=J("p"),il.innerHTML=dl,fl=n(),bl=J("p"),bl.innerHTML=hl,jl=n(),o(Ul.$$.fragment),Zl=n(),o(i.$$.fragment),_=n(),Vl=J("p"),Vl.innerHTML=Sl},l(M){U(p.$$.fragment,M),b=a(M),r=m(M,"P",{"data-svelte-h":!0}),T(r)!=="svelte-15ms9e4"&&(r.innerHTML=f),G=a(M),U(d.$$.fragment,M),g=a(M),B=m(M,"P",{"data-svelte-h":!0}),T(B)!=="svelte-1cm2wav"&&(B.innerHTML=Z),C=a(M),U(I.$$.fragment,M),R=a(M),yl=m(M,"P",{"data-svelte-h":!0}),T(yl)!=="svelte-10rjxfw"&&(yl.textContent=K),v=a(M),U(z.$$.fragment,M),O=a(M),A=m(M,"P",{"data-svelte-h":!0}),T(A)!=="svelte-tof2w8"&&(A.textContent=ll),N=a(M),U(H.$$.fragment,M),el=a(M),Y=m(M,"P",{"data-svelte-h":!0}),T(Y)!=="svelte-1qehkq8"&&(Y.innerHTML=Jl),sl=a(M),U(Q.$$.fragment,M),E=a(M),L=m(M,"P",{"data-svelte-h":!0}),T(L)!=="svelte-1c67tji"&&(L.innerHTML=X),kl=a(M),U(P.$$.fragment,M),W=a(M),ml=m(M,"P",{"data-svelte-h":!0}),T(ml)!=="svelte-7zq4ng"&&(ml.innerHTML=tl),V=a(M),U(F.$$.fragment,M),nl=a(M),U(S.$$.fragment,M),al=a(M),q=m(M,"P",{"data-svelte-h":!0}),T(q)!=="svelte-1xt2eyl"&&(q.textContent=Tl),w=a(M),U(k.$$.fragment,M),xl=a(M),pl=m(M,"P",{"data-svelte-h":!0}),T(pl)!=="svelte-eo772a"&&(pl.innerHTML=wl),ul=a(M),U(ol.$$.fragment,M),Bl=a(M),Ml=m(M,"P",{"data-svelte-h":!0}),T(Ml)!=="svelte-ayklk0"&&(Ml.innerHTML=Gl),Il=a(M),U(D.$$.fragment,M),Wl=a(M),rl=m(M,"P",{"data-svelte-h":!0}),T(rl)!=="svelte-18udsr7"&&(rl.innerHTML=$l),Rl=a(M),il=m(M,"P",{"data-svelte-h":!0}),T(il)!=="svelte-15m9ktd"&&(il.innerHTML=dl),fl=a(M),bl=m(M,"P",{"data-svelte-h":!0}),T(bl)!=="svelte-6v3j5a"&&(bl.innerHTML=hl),jl=a(M),U(Ul.$$.fragment,M),Zl=a(M),U(i.$$.fragment,M),_=a(M),Vl=m(M,"P",{"data-svelte-h":!0}),T(Vl)!=="svelte-1iw9q1h"&&(Vl.innerHTML=Sl)},m(M,$){u(p,M,$),s(M,b,$),s(M,r,$),s(M,G,$),u(d,M,$),s(M,g,$),s(M,B,$),s(M,C,$),u(I,M,$),s(M,R,$),s(M,yl,$),s(M,v,$),u(z,M,$),s(M,O,$),s(M,A,$),s(M,N,$),u(H,M,$),s(M,el,$),s(M,Y,$),s(M,sl,$),u(Q,M,$),s(M,E,$),s(M,L,$),s(M,kl,$),u(P,M,$),s(M,W,$),s(M,ml,$),s(M,V,$),u(F,M,$),s(M,nl,$),u(S,M,$),s(M,al,$),s(M,q,$),s(M,w,$),u(k,M,$),s(M,xl,$),s(M,pl,$),s(M,ul,$),u(ol,M,$),s(M,Bl,$),s(M,Ml,$),s(M,Il,$),u(D,M,$),s(M,Wl,$),s(M,rl,$),s(M,Rl,$),s(M,il,$),s(M,fl,$),s(M,bl,$),s(M,jl,$),u(Ul,M,$),s(M,Zl,$),u(i,M,$),s(M,_,$),s(M,Vl,$),Dl=!0},i(M){Dl||(c(p.$$.fragment,M),c(d.$$.fragment,M),c(I.$$.fragment,M),c(z.$$.fragment,M),c(H.$$.fragment,M),c(Q.$$.fragment,M),c(P.$$.fragment,M),c(F.$$.fragment,M),c(S.$$.fragment,M),c(k.$$.fragment,M),c(ol.$$.fragment,M),c(D.$$.fragment,M),c(Ul.$$.fragment,M),c(i.$$.fragment,M),Dl=!0)},o(M){y(p.$$.fragment,M),y(d.$$.fragment,M),y(I.$$.fragment,M),y(z.$$.fragment,M),y(H.$$.fragment,M),y(Q.$$.fragment,M),y(P.$$.fragment,M),y(F.$$.fragment,M),y(S.$$.fragment,M),y(k.$$.fragment,M),y(ol.$$.fragment,M),y(D.$$.fragment,M),y(Ul.$$.fragment,M),y(i.$$.fragment,M),Dl=!1},d(M){M&&(e(b),e(r),e(G),e(g),e(B),e(C),e(R),e(yl),e(v),e(O),e(A),e(N),e(el),e(Y),e(sl),e(E),e(L),e(kl),e(W),e(ml),e(V),e(nl),e(al),e(q),e(w),e(xl),e(pl),e(ul),e(Bl),e(Ml),e(Il),e(Wl),e(rl),e(Rl),e(il),e(fl),e(bl),e(jl),e(Zl),e(_),e(Vl)),j(p,M),j(d,M),j(I,M),j(z,M),j(H,M),j(Q,M),j(P,M),j(F,M),j(S,M),j(k,M),j(ol,M),j(D,M),j(Ul,M),j(i,M)}}}function vp(x){let p,b="✏️ <strong>あなたの番です!</strong> 先ほど確認した「email」という単語が入ったサンプルでは、モデルは何を返すでしょうか?";return{c(){p=J("p"),p.innerHTML=b},l(r){p=m(r,"P",{"data-svelte-h":!0}),T(p)!=="svelte-1ux4ttr"&&(p.innerHTML=b)},m(r,f){s(r,p,f)},p:ql,d(r){r&&e(p)}}}function Np(x){let p,b,r,f,G,d,g,B,Z,C,I,R,yl='では、翻訳タスクに飛び込んでみましょう。これも<a href="/course/chapter1/ja/7">シーケンス間タスク</a>で、ある配列から別の配列へという定式化が可能な問題ということです。その意味では、この問題は<a href="/course/chapter7/ja/6">要約</a>にかなり近く、今回得る知識は、以下のような他のシーケンス間問題に適応させることができます。',K,v,z="<li><p><strong>スタイル転送</strong>: あるスタイルで書かれた文章を別のスタイルに<em>翻訳</em>するモデルの作成(例:フォーマルな文章からカジュアルな文章、シェイクスピア英語から現代英語など)</p></li> <li><p><strong>質問応答生成</strong>: 与えられた文脈に沿って、質問に対する答えを生成するモデルを作成する。</p></li>",O,A,ll,N,H='2言語(またはそれ以上)のテキストの十分な大きさのコーパスがあれば、<a href="/course/chapter7/ja/6">因果言語モデリング</a>で説明するように、新しい翻訳モデルをゼロから学習させることができます。しかし、mT5やmBARTのような多言語翻訳モデルを特定の言語ペアに合うように微調整したり、ある言語から別の言語への翻訳に特化したモデルを特定のコーパスに合うように微調整する方が、より速く翻訳モデルを作成できます。',el,Y,Jl='このセクションでは、(多くのHugging Face社員は両方の言語を話すため)英語からフランス語に翻訳するように事前に学習したMarianモデルを、<a href="https://huggingface.co/datasets/kde4" rel="nofollow">KDE4データセット</a>で微調整します。このデータセットは <a href="https://apps.kde.org/" rel="nofollow">KDE apps</a> のローカライズファイルのデータセットです。',sl,Q,E='私たちが使うモデルは、実際にKDE4データセットを含む<a href="https://opus.nlpl.eu/" rel="nofollow">Opus dataset</a> から取得したフランス語と英語のテキストの大規模なコーパスで事前学習されています。しかし、私たちが使う事前学習済みモデルは、事前学習中にそのデータを見ていたとしても、微調整の後、より良いバージョンを得ることができることが分かるでしょう。',L,X,kl="これが終われば、以下のような予測が可能なモデルが完成します。",P,W,ml,tl,V,F='<img class="block dark:hidden lg:w-3/5" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter7/modeleval-marian-finetuned-kde4-en-to-fr.png" alt="One-hot encoded labels for question answering."/> <img class="hidden dark:block lg:w-3/5" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter7/modeleval-marian-finetuned-kde4-en-to-fr-dark.png" alt="One-hot encoded labels for question answering."/>',nl,S,al='前のセクションと同様に、以下のコードで学習してハブにアップロードする実際のモデルを<a href="https://huggingface.co/huggingface-course/marian-finetuned-kde4-en-to-fr?text=This+plugin+allows+you+to+automatically+translate+web+pages+between+several+languages." rel="nofollow">ここ</a>で見つけ、その予測結果をダブルチェックする事ができます。',q,Tl,w,k,xl='翻訳モデルをゼロから調整・学習するためには、そのタスクに適したデータセットが必要です。前述したように、このセクションでは <a href="https://huggingface.co/datasets/kde4" rel="nofollow">KDE4 dataset</a> を使用しますが、翻訳したい2つの言語の文のペアがあれば、自分のデータを使用するようにコードを適応させることは非常に簡単です。カスタムデータを <code>Dataset</code> にロードする方法を思い出したい場合は、<a href="/course/ja/chapter5">5章</a> を参照してください。',pl,wl,ul,ol,Bl="いつものように、 <code>load_dataset()</code> 関数を使用してデータセットをダウンロードします。",Ml,Gl,Il,D,Wl='異なる言語のペアを扱いたい場合は、そのコードで指定することができます。このデータセットでは、全部で92の言語が利用できます。その<a href="https://huggingface.co/datasets/kde4" rel="nofollow">データセットカード</a>の言語タグを展開すると、すべての言語を見ることができます。',rl,$l,Rl,il,dl,fl="それでは、データセットを見てみましょう。",bl,hl,jl,Ul,Zl,i,_='210,173組の文がありますが、1回の分割で、独自の検証セットを作成する必要があります。<a href="/course/ja/chapter5">第5章</a> で見たように、 <code>Dataset</code> には <code>train_test_split()</code> メソッドがあり、これを利用して検証セットの作成を行うことができます。再現性を高めるためにシードを用意します。',Vl,Sl,Dl,M,$,se,On="以下のように <code>&quot;test&quot;</code> キーを <code>&quot;validation&quot;</code> に変更することができます。",et,te,st,ne,la="では、データセットの1つの要素を見てみましょう。",tt,ae,nt,pe,at,Me,ea=`必要な言語のペアで構成される2つの文の辞書を得ることができました。コンピュータサイエンスの専門用語を集めたこのデータセットの特殊性は、すべてフランス語で完全に翻訳されていることです。しかし、フランスのエンジニアは怠惰なので、コンピュータサイエンス特有の単語はほとんど英語単語のままで会話していることが多いです。例えば、“threads “という単語は、フランス語の文章、特に技術的な会話ではよく出てきますが、このデータセットでは、より正しい “fils de discussion “に翻訳しています。
しかし、このモデルは、より大きなフランス語と英語のコーパスで事前学習されているので、この単語をそのままにしておくという簡単な選択肢をとっています。`,pt,re,Mt,ie,rt,ce,sa=`この動作のもう一つの例は、「plugin」という単語で見ることができます。これは正式なフランス語の単語ではありませんが、ほとんどのフランス語を母国語とする人が理解でき、わざわざ翻訳する必要はありません。
KDE4データセットでは、この単語はより正式な「module d’extension」とフランス語で翻訳されています。`,it,ye,ct,Je,yt,me,ta="しかし、私達の事前学習済みモデルは、コンパクトで親しみやすい英単語に固執します。",Jt,Te,mt,oe,Tt,Ue,na="このようなデータセットの特殊性を、微調整したモデルが拾い上げてくれるかどうか、興味深いところです。(ネタバレ注意:拾ってくれます)",ot,ue,Ut,Ll,ut,je,jt,we,wt,de,aa="もうお分かりだと思いますが、テキストを全てトークンIDのセットに変換し、モデルが意味を理解できるようにする必要があります。このタスクのために、入力とターゲットの両方をトークン化する必要があります。最初のタスクは <code>tokenizer</code> オブジェクトを作成することです。",dt,fe,pa='先に述べたように、今回は英語からフランス語に翻訳するように事前学習したMarianモデルを使用します。もしこのコードを他の言語のペアで試す場合は、モデルのチェックポイントを適応させてください。<a href="https://huggingface.co/Helsinki-NLP" rel="nofollow">Helsinki-NLP</a> という組織が多言語で1000以上のモデルを提供しています。',ft,be,bt,he,Ma='また、<code>model_checkpoint</code> を <a href="https://huggingface.co/models" rel="nofollow">Hub</a> にある好きなモデルや、事前学習したモデルやトークナイザーを保存したローカルフォルダに置き換えることができます。',ht,Pl,Ct,Ce,ra="データの準備はとても簡単です。入力言語は通常通り処理しますが、ターゲット言語についてはトークナイザーをコンテキストマネージャー <code>as_target_tokenizer()</code> の中にラップする必要があります。",It,Ie,ia="Python のコンテキストマネージャーは <code>with</code> 文で導入され、2つの関連する操作をペアで実行するときに便利です。最も一般的な例は、ファイルを書き込んだり読み込んだりするときで、次のような命令の内部で実行されることがよくあります。",$t,$e,Zt,Ze,ca="上の例では、関連する2つの操作をペアとして実行することで、ファイルを開く動作と閉じる動作を実現しています。オープンされたファイル <code>f</code> に対応するオブジェクトは、 <code>with</code> の下にあるインデントされたブロックの中にのみ存在し、ファイルのオープンはそのブロックの前に、フェイルのクローズはブロックの最後に行われます。",_t,_e,ya="私達のケースでは、コンテキストマネージャー <code>as_target_tokenizer()</code> は、インデントされたブロックが実行される前にトークナイザーを出力言語 (ここではフランス語) に設定し、その後、入力言語 (ここでは英語) に設定しなおします。",kt,ke,Ja="つまり、サンプルの前処理は次のようになります。",Gt,Ge,gt,ge,ma="もし、コンテキスト・マネージャの内部でターゲット言語をトークン化する処理を忘れると、入力トークナイザーによってトークン化されてしまい、Marian モデルの場合、全くうまくいきません。",xt,xe,Bt,Be,Wt,We,Ta="このように、英語用のトークナイザーを使ってフランス語の文章を前処理すると、トークンの数が多くなります。トークナイザーはフランス語の単語を知らないからです(「discussion」のように英語と共通する単語は除きます)。",Rt,Re,oa="<code>inputs</code>と<code>targets</code>はどちらも通常のキー(入力ID、アテンションマスクなど)を持つ辞書なので、最後のステップは入力の中に <code>&quot;labels&quot;</code> キーを設定することです。これはデータセットに適用する前処理関数で行います。",Vt,Ve,Xt,Xe,Ua="入力と出力に同様な最大長を設定していることに注意してください。扱うテキストはかなり短いと思われるので、128を使用しています。",vt,Kl,Nt,Ol,Qt,ve,ua="これで、データセットのすべての分割に対して、この前処理を一度に適用することができるようになりました。",zt,Ne,At,Qe,ja="データの前処理が終わったので、次は学習済みモデルの微調整を行います!",Ht,Xl,vl,Ss,ze,wa="なお、今回は翻訳タスクで学習したモデルを使用しており、実際にすでに使用することができますので、重みの欠落や新たに初期化されたものについての警告は出ていません。",Yt,Ae,Et,He,da='動的バッチ処理用のパディングを行うために、データコレーターが必要になります。この場合、<a href="/course/ja/chapter3">第3章</a> のような <code>DataCollatorWithPadding</code> を使うわけにはいきません。',Ft,Ye,fa="なぜなら、それは入力(入力ID、アテンションマスク、トークンタイプID)だけをパディングするものだからです。私たちのラベルも、ラベルで遭遇する最大長にパディングされるべきです。そして、前述したように、これらのパディングされた値が損失計算で無視されるように、ラベルをパディングするために使用されるパディング値は、トークナイザーのパディングトークンではなく、<code>-100</code>であるべきです。",St,Ee,ba='これはすべて <a href="https://huggingface.co/transformers/main_classes/data_collator.html#datacollatorforseq2seq" rel="nofollow"><code>DataCollatorForSeq2Seq</code></a> によって行われます。<code>DataCollatorWithPadding</code> と同様に、入力の前処理に使用した <code>tokenizer</code> を受け取りますが、 <code>model</code> も受け取ります。これは、このデータコレーターがデコーダーの入力 ID を準備する役割も担うからです。この ID は、ラベルをシフトしたもので、先頭に特別なトークンが付加されています。このシフトはアーキテクチャによって若干異なるので、 <code>DataCollatorForSeq2Seq</code> は <code>model</code> オブジェクトを知っている必要があります。',qt,Nl,Ql,qs,Fe,ha="いくつかのサンプルでこれをテストする場合、トークナイザーのトレーニングセットから取得したサンプルのリストに対して呼び出すだけです。",Dt,Se,Lt,qe,Pt,De,Ca="ラベルがバッチの最大長になるように<code>-100</code> を使ってパディングされたことを確認できます。",Kt,Le,Ot,Pe,ln,Ke,Ia="また、デコーダーの入力IDを見ると、ラベルをシフトさせたものであることがわかります。",en,Oe,sn,ls,tn,es,$a="以下は、データセットの1番目と2番目の要素に対するラベルです。",nn,ss,an,ts,pn,zl,Al,Ds,ns,Mn,as,rn,Ls,ps,Za='翻訳に使われる伝統的な指標は、<a href="https://en.wikipedia.org/wiki/BLEU" rel="nofollow">BLEU score</a> です。これはKishore Papineniらによって、<a href="https://aclanthology.org/P02-1040.pdf" rel="nofollow">a 2002 article</a> で紹介された指標で、翻訳文がそのラベルにどれだけ近いかを評価するものです。',cn,Ms,_a="モデルの生成した出力文の明瞭度や文法的な正しさは測定しませんが、生成した出力に含まれるすべての単語がターゲットにも現れるように、統計的なルールを使用します。また、同じ単語の繰り返しが元文章にない場合はペナルティを与えるルール(モデルが「the the the the」のような文章を出力しないように)や、ターゲットより短い文章を出力するとペナルティを与えるルール(モデルが「the」のような文章を出力しないように)などがあります。",yn,rs,ka='BLEUの弱点は、テキストがすでにトークン化されていることを前提としているため、異なるトークナイザーを使用するモデル間でスコアを比較することが困難な点です。そこで、現在翻訳モデルのベンチマークとして最もよく使われているのが<a href="https://github.com/mjpost/sacrebleu" rel="nofollow">SacreBLEU</a>です。トークン化ステップを標準化することで、この弱点(およびその他の弱点)を解決しています。この指標を使うには、まずSacreBLEUライブラリをインストールする必要があります。',Jn,is,mn,cs,Ga='そして、<a href="/course/ja/chapter3">第3章</a> で行ったように <code>evaluate.load()</code> で読み込むことができるようになります。',Tn,ys,on,Js,ga="この指標はテキストを入力とターゲットとして受け取ります。同じ文でも複数の翻訳があることが多いので、複数の翻訳を受け入れるように設計されています。私たちが使っているデータセットは1つしか提供していませんが、NLPでは複数の文をラベルとして与えるデータセットが珍しくありません。つまり、予測は文のリストであるべきですが、その参照は文のリストのリストであるべきなのです。",Un,ms,xa="例をやってみましょう。",un,Ts,jn,os,wn,Us,Ba="この結果、BLEUスコアは46.75となりました。これはかなり良い結果です。",dn,us,Wa='参考までに、<a href="https://arxiv.org/pdf/1706.03762.pdf" rel="nofollow">“Attention Is All You Need” 論文</a> のオリジナルのTransformerモデルは、英語とフランス語間の同様の翻訳タスクでBLEUスコア41.8を達成しました!(<code>count</code>や<code>bp</code>などの個々の指標の詳細は<a href="https://github.com/mjpost/sacrebleu/blob/078c440168c6adc89ba75fe6d63f0d922d42bcfe/sacrebleu/metrics/bleu.py#L74" rel="nofollow">SacreBLEUリポジトリ</a>を参照してください)。',fn,js,Ra="一方、翻訳モデルからよく出てくる2つの悪いタイプの予測(単語の繰り返しが多い、または短すぎる)で試すと、かなり悪いBLEUスコアが得られます。",bn,ws,hn,ds,Cn,fs,In,bs,$n,hs,Va="スコアは0から100まであり、高ければ高いほど良いスコアです。",Zn,Hl,Yl,Ps,Cs,Xa="これで、モデルを微調整する準備が整いました!",_n,Is,kn,$s,va="最初のステップは、ハギング フェイスにログインして、結果をModel Hubにアップロードすることです。そのための便利な機能がノートブックにあります。",Gn,Zs,gn,_s,Na=`これは、ハギング フェイスのログイン情報を入力するウィジェットが表示されます。
ノートブックで作業していない場合は、ターミナルで次の行を入力するだけです。`,xn,ks,Bn,El,Fl,Ks,Os,Gs,Wn,gs,Qa="モデルハブで微調整したモデルを推論ウィジェットで使用する方法は既に紹介しました。パイプラインで使用する場合は、モデル識別子を指定します。",Rn,xs,Vn,Bs,Xn,Ws,za="予想通り、事前学習したモデルは、微調整したコーパスに知識を適応させ、英語の「threads」をそのままにせず、フランス語の正式なバージョンに翻訳するようになったのです。「plugin」についても同じです。",vn,Rs,Nn,Vs,Qn,Xs,Aa="ドメイン適応の好例がまた一つ増えましたね!",zn,le,An,vs,Hn,lt,Yn;G=new up({props:{fw:x[0]}}),g=new gl({props:{title:"翻訳",local:"翻訳",headingTag:"h1"}});const Ha=[dp,wp],Ns=[];function Ya(l,t){return l[0]==="pt"?0:1}Z=Ya(x),C=Ns[Z]=Ha[Z](x),A=new En({props:{id:"1JvfrvZgi6c"}}),Tl=new gl({props:{title:"データの準備",local:"データの準備",headingTag:"h2"}}),wl=new gl({props:{title:"KDE4データセット",local:"kde4データセット",headingTag:"h3"}}),Gl=new h({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBcmF3X2RhdGFzZXRzJTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMmtkZTQlMjIlMkMlMjBsYW5nMSUzRCUyMmVuJTIyJTJDJTIwbGFuZzIlM0QlMjJmciUyMik=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
raw_datasets = load_dataset(<span class="hljs-string">&quot;kde4&quot;</span>, lang1=<span class="hljs-string">&quot;en&quot;</span>, lang2=<span class="hljs-string">&quot;fr&quot;</span>)`,wrap:!1}}),hl=new h({props:{code:"cmF3X2RhdGFzZXRz",highlighted:"raw_datasets",wrap:!1}}),Ul=new h({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2lkJyUyQyUyMCd0cmFuc2xhdGlvbiclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDIxMDE3MyUwQSUyMCUyMCUyMCUyMCU3RCklMEElN0Qp",highlighted:`DatasetDict({
train: Dataset({
features: [<span class="hljs-string">&#x27;id&#x27;</span>, <span class="hljs-string">&#x27;translation&#x27;</span>],
num_rows: <span class="hljs-number">210173</span>
})
})`,wrap:!1}}),Sl=new h({props:{code:"c3BsaXRfZGF0YXNldHMlMjAlM0QlMjByYXdfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RC50cmFpbl90ZXN0X3NwbGl0KHRyYWluX3NpemUlM0QwLjklMkMlMjBzZWVkJTNEMjApJTBBc3BsaXRfZGF0YXNldHM=",highlighted:`split_datasets = raw_datasets[<span class="hljs-string">&quot;train&quot;</span>].train_test_split(train_size=<span class="hljs-number">0.9</span>, seed=<span class="hljs-number">20</span>)
split_datasets`,wrap:!1}}),M=new h({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2lkJyUyQyUyMCd0cmFuc2xhdGlvbiclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDE4OTE1NSUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB0ZXN0JTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidpZCclMkMlMjAndHJhbnNsYXRpb24nJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3Jvd3MlM0ElMjAyMTAxOCUwQSUyMCUyMCUyMCUyMCU3RCklMEElN0Qp",highlighted:`DatasetDict({
train: Dataset({
features: [<span class="hljs-string">&#x27;id&#x27;</span>, <span class="hljs-string">&#x27;translation&#x27;</span>],
num_rows: <span class="hljs-number">189155</span>
})
test: Dataset({
features: [<span class="hljs-string">&#x27;id&#x27;</span>, <span class="hljs-string">&#x27;translation&#x27;</span>],
num_rows: <span class="hljs-number">21018</span>
})
})`,wrap:!1}}),te=new h({props:{code:"c3BsaXRfZGF0YXNldHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVEJTIwJTNEJTIwc3BsaXRfZGF0YXNldHMucG9wKCUyMnRlc3QlMjIp",highlighted:'split_datasets[<span class="hljs-string">&quot;validation&quot;</span>] = split_datasets.pop(<span class="hljs-string">&quot;test&quot;</span>)',wrap:!1}}),ae=new h({props:{code:"c3BsaXRfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCU1QjElNUQlNUIlMjJ0cmFuc2xhdGlvbiUyMiU1RA==",highlighted:'split_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">1</span>][<span class="hljs-string">&quot;translation&quot;</span>]',wrap:!1}}),pe=new h({props:{code:"JTdCJ2VuJyUzQSUyMCdEZWZhdWx0JTIwdG8lMjBleHBhbmRlZCUyMHRocmVhZHMnJTJDJTBBJTIwJ2ZyJyUzQSUyMCdQYXIlMjBkJUMzJUE5ZmF1dCUyQyUyMGQlQzMlQTl2ZWxvcHBlciUyMGxlcyUyMGZpbHMlMjBkZSUyMGRpc2N1c3Npb24nJTdE",highlighted:`{<span class="hljs-string">&#x27;en&#x27;</span>: <span class="hljs-string">&#x27;Default to expanded threads&#x27;</span>,
<span class="hljs-string">&#x27;fr&#x27;</span>: <span class="hljs-string">&#x27;Par défaut, développer les fils de discussion&#x27;</span>}`,wrap:!1}}),re=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBbW9kZWxfY2hlY2twb2ludCUyMCUzRCUyMCUyMkhlbHNpbmtpLU5MUCUyRm9wdXMtbXQtZW4tZnIlMjIlMEF0cmFuc2xhdG9yJTIwJTNEJTIwcGlwZWxpbmUoJTIydHJhbnNsYXRpb24lMjIlMkMlMjBtb2RlbCUzRG1vZGVsX2NoZWNrcG9pbnQpJTBBdHJhbnNsYXRvciglMjJEZWZhdWx0JTIwdG8lMjBleHBhbmRlZCUyMHRocmVhZHMlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline
model_checkpoint = <span class="hljs-string">&quot;Helsinki-NLP/opus-mt-en-fr&quot;</span>
translator = pipeline(<span class="hljs-string">&quot;translation&quot;</span>, model=model_checkpoint)
translator(<span class="hljs-string">&quot;Default to expanded threads&quot;</span>)`,wrap:!1}}),ie=new h({props:{code:"JTVCJTdCJ3RyYW5zbGF0aW9uX3RleHQnJTNBJTIwJ1BhciUyMGQlQzMlQTlmYXV0JTIwcG91ciUyMGxlcyUyMHRocmVhZHMlMjAlQzMlQTlsYXJnaXMnJTdEJTVE",highlighted:'[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&#x27;Par défaut pour les threads élargis&#x27;</span>}]',wrap:!1}}),ye=new h({props:{code:"c3BsaXRfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCU1QjE3MiU1RCU1QiUyMnRyYW5zbGF0aW9uJTIyJTVE",highlighted:'split_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">172</span>][<span class="hljs-string">&quot;translation&quot;</span>]',wrap:!1}}),Je=new h({props:{code:"JTdCJ2VuJyUzQSUyMCdVbmFibGUlMjB0byUyMGltcG9ydCUyMCUyNTElMjB1c2luZyUyMHRoZSUyME9GWCUyMGltcG9ydGVyJTIwcGx1Z2luLiUyMFRoaXMlMjBmaWxlJTIwaXMlMjBub3QlMjB0aGUlMjBjb3JyZWN0JTIwZm9ybWF0LiclMkMlMEElMjAnZnInJTNBJTIwJTIySW1wb3NzaWJsZSUyMGQnaW1wb3J0ZXIlMjAlMjUxJTIwZW4lMjB1dGlsaXNhbnQlMjBsZSUyMG1vZHVsZSUyMGQnZXh0ZW5zaW9uJTIwZCdpbXBvcnRhdGlvbiUyME9GWC4lMjBDZSUyMGZpY2hpZXIlMjBuJ2ElMjBwYXMlMjB1biUyMGZvcm1hdCUyMGNvcnJlY3QuJTIyJTdE",highlighted:`{<span class="hljs-string">&#x27;en&#x27;</span>: <span class="hljs-string">&#x27;Unable to import %1 using the OFX importer plugin. This file is not the correct format.&#x27;</span>,
<span class="hljs-string">&#x27;fr&#x27;</span>: <span class="hljs-string">&quot;Impossible d&#x27;importer %1 en utilisant le module d&#x27;extension d&#x27;importation OFX. Ce fichier n&#x27;a pas un format correct.&quot;</span>}`,wrap:!1}}),Te=new h({props:{code:"dHJhbnNsYXRvciglMEElMjAlMjAlMjAlMjAlMjJVbmFibGUlMjB0byUyMGltcG9ydCUyMCUyNTElMjB1c2luZyUyMHRoZSUyME9GWCUyMGltcG9ydGVyJTIwcGx1Z2luLiUyMFRoaXMlMjBmaWxlJTIwaXMlMjBub3QlMjB0aGUlMjBjb3JyZWN0JTIwZm9ybWF0LiUyMiUwQSk=",highlighted:`translator(
<span class="hljs-string">&quot;Unable to import %1 using the OFX importer plugin. This file is not the correct format.&quot;</span>
)`,wrap:!1}}),oe=new h({props:{code:"JTVCJTdCJ3RyYW5zbGF0aW9uX3RleHQnJTNBJTIwJTIySW1wb3NzaWJsZSUyMGQnaW1wb3J0ZXIlMjAlMjUxJTIwZW4lMjB1dGlsaXNhbnQlMjBsZSUyMHBsdWdpbiUyMGQnaW1wb3J0YXRldXIlMjBPRlguJTIwQ2UlMjBmaWNoaWVyJTIwbidlc3QlMjBwYXMlMjBsZSUyMGJvbiUyMGZvcm1hdC4lMjIlN0QlNUQ=",highlighted:'[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&quot;Impossible d&#x27;importer %1 en utilisant le plugin d&#x27;importateur OFX. Ce fichier n&#x27;est pas le bon format.&quot;</span>}]',wrap:!1}}),ue=new En({props:{id:"0Oxphw4Q9fo"}}),Ll=new ee({props:{$$slots:{default:[fp]},$$scope:{ctx:x}}}),je=new gl({props:{title:"データを加工する",local:"データを加工する",headingTag:"h3"}}),we=new En({props:{id:"XAR8jnZZuUs"}}),be=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFtb2RlbF9jaGVja3BvaW50JTIwJTNEJTIwJTIySGVsc2lua2ktTkxQJTJGb3B1cy1tdC1lbi1mciUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2NoZWNrcG9pbnQlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
model_checkpoint = <span class="hljs-string">&quot;Helsinki-NLP/opus-mt-en-fr&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)`,wrap:!1}}),Pl=new ee({props:{$$slots:{default:[bp]},$$scope:{ctx:x}}}),$e=new h({props:{code:"d2l0aCUyMG9wZW4oZmlsZV9wYXRoKSUyMGFzJTIwZiUzQSUwQSUyMCUyMCUyMCUyMGNvbnRlbnQlMjAlM0QlMjBmLnJlYWQoKQ==",highlighted:`<span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(file_path) <span class="hljs-keyword">as</span> f:
content = f.<span class="hljs-built_in">read</span>()`,wrap:!1}}),Ge=new h({props:{code:"ZW5fc2VudGVuY2UlMjAlM0QlMjBzcGxpdF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCMSU1RCU1QiUyMnRyYW5zbGF0aW9uJTIyJTVEJTVCJTIyZW4lMjIlNUQlMEFmcl9zZW50ZW5jZSUyMCUzRCUyMHNwbGl0X2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlNUIxJTVEJTVCJTIydHJhbnNsYXRpb24lMjIlNUQlNUIlMjJmciUyMiU1RCUwQSUwQWlucHV0cyUyMCUzRCUyMHRva2VuaXplcihlbl9zZW50ZW5jZSklMEF3aXRoJTIwdG9rZW5pemVyLmFzX3RhcmdldF90b2tlbml6ZXIoKSUzQSUwQSUyMCUyMCUyMCUyMHRhcmdldHMlMjAlM0QlMjB0b2tlbml6ZXIoZnJfc2VudGVuY2Up",highlighted:`en_sentence = split_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">1</span>][<span class="hljs-string">&quot;translation&quot;</span>][<span class="hljs-string">&quot;en&quot;</span>]
fr_sentence = split_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">1</span>][<span class="hljs-string">&quot;translation&quot;</span>][<span class="hljs-string">&quot;fr&quot;</span>]
inputs = tokenizer(en_sentence)
<span class="hljs-keyword">with</span> tokenizer.as_target_tokenizer():
targets = tokenizer(fr_sentence)`,wrap:!1}}),xe=new h({props:{code:"d3JvbmdfdGFyZ2V0cyUyMCUzRCUyMHRva2VuaXplcihmcl9zZW50ZW5jZSklMEFwcmludCh0b2tlbml6ZXIuY29udmVydF9pZHNfdG9fdG9rZW5zKHdyb25nX3RhcmdldHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpKSUwQXByaW50KHRva2VuaXplci5jb252ZXJ0X2lkc190b190b2tlbnModGFyZ2V0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCkp",highlighted:`wrong_targets = tokenizer(fr_sentence)
<span class="hljs-built_in">print</span>(tokenizer.convert_ids_to_tokens(wrong_targets[<span class="hljs-string">&quot;input_ids&quot;</span>]))
<span class="hljs-built_in">print</span>(tokenizer.convert_ids_to_tokens(targets[<span class="hljs-string">&quot;input_ids&quot;</span>]))`,wrap:!1}}),Be=new h({props:{code:"JTVCJyVFMiU5NiU4MVBhciclMkMlMjAnJUUyJTk2JTgxZCVDMyVBOSclMkMlMjAnZiclMkMlMjAnYXV0JyUyQyUyMCclMkMnJTJDJTIwJyVFMiU5NiU4MWQlQzMlQTknJTJDJTIwJ3ZlJyUyQyUyMCdsb3AnJTJDJTIwJ3BlciclMkMlMjAnJUUyJTk2JTgxbGVzJyUyQyUyMCclRTIlOTYlODFmaWwnJTJDJTIwJ3MnJTJDJTIwJyVFMiU5NiU4MWRlJyUyQyUyMCclRTIlOTYlODFkaXNjdXNzaW9uJyUyQyUyMCclM0MlMkZzJTNFJyU1RCUwQSU1QiclRTIlOTYlODFQYXInJTJDJTIwJyVFMiU5NiU4MWQlQzMlQTlmYXV0JyUyQyUyMCclMkMnJTJDJTIwJyVFMiU5NiU4MWQlQzMlQTl2ZWxvcHBlciclMkMlMjAnJUUyJTk2JTgxbGVzJyUyQyUyMCclRTIlOTYlODFmaWxzJyUyQyUyMCclRTIlOTYlODFkZSclMkMlMjAnJUUyJTk2JTgxZGlzY3Vzc2lvbiclMkMlMjAnJTNDJTJGcyUzRSclNUQ=",highlighted:`[<span class="hljs-string">&#x27;▁Par&#x27;</span>, <span class="hljs-string">&#x27;▁dé&#x27;</span>, <span class="hljs-string">&#x27;f&#x27;</span>, <span class="hljs-string">&#x27;aut&#x27;</span>, <span class="hljs-string">&#x27;,&#x27;</span>, <span class="hljs-string">&#x27;▁dé&#x27;</span>, <span class="hljs-string">&#x27;ve&#x27;</span>, <span class="hljs-string">&#x27;lop&#x27;</span>, <span class="hljs-string">&#x27;per&#x27;</span>, <span class="hljs-string">&#x27;▁les&#x27;</span>, <span class="hljs-string">&#x27;▁fil&#x27;</span>, <span class="hljs-string">&#x27;s&#x27;</span>, <span class="hljs-string">&#x27;▁de&#x27;</span>, <span class="hljs-string">&#x27;▁discussion&#x27;</span>, <span class="hljs-string">&#x27;&lt;/s&gt;&#x27;</span>]
[<span class="hljs-string">&#x27;▁Par&#x27;</span>, <span class="hljs-string">&#x27;▁défaut&#x27;</span>, <span class="hljs-string">&#x27;,&#x27;</span>, <span class="hljs-string">&#x27;▁développer&#x27;</span>, <span class="hljs-string">&#x27;▁les&#x27;</span>, <span class="hljs-string">&#x27;▁fils&#x27;</span>, <span class="hljs-string">&#x27;▁de&#x27;</span>, <span class="hljs-string">&#x27;▁discussion&#x27;</span>, <span class="hljs-string">&#x27;&lt;/s&gt;&#x27;</span>]`,wrap:!1}}),Ve=new h({props:{code:"bWF4X2lucHV0X2xlbmd0aCUyMCUzRCUyMDEyOCUwQW1heF90YXJnZXRfbGVuZ3RoJTIwJTNEJTIwMTI4JTBBJTBBJTBBZGVmJTIwcHJlcHJvY2Vzc19mdW5jdGlvbihleGFtcGxlcyklM0ElMEElMjAlMjAlMjAlMjBpbnB1dHMlMjAlM0QlMjAlNUJleCU1QiUyMmVuJTIyJTVEJTIwZm9yJTIwZXglMjBpbiUyMGV4YW1wbGVzJTVCJTIydHJhbnNsYXRpb24lMjIlNUQlNUQlMEElMjAlMjAlMjAlMjB0YXJnZXRzJTIwJTNEJTIwJTVCZXglNUIlMjJmciUyMiU1RCUyMGZvciUyMGV4JTIwaW4lMjBleGFtcGxlcyU1QiUyMnRyYW5zbGF0aW9uJTIyJTVEJTVEJTBBJTIwJTIwJTIwJTIwbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKGlucHV0cyUyQyUyMG1heF9sZW5ndGglM0RtYXhfaW5wdXRfbGVuZ3RoJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwU2V0JTIwdXAlMjB0aGUlMjB0b2tlbml6ZXIlMjBmb3IlMjB0YXJnZXRzJTBBJTIwJTIwJTIwJTIwd2l0aCUyMHRva2VuaXplci5hc190YXJnZXRfdG9rZW5pemVyKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbHMlMjAlM0QlMjB0b2tlbml6ZXIodGFyZ2V0cyUyQyUyMG1heF9sZW5ndGglM0RtYXhfdGFyZ2V0X2xlbmd0aCUyQyUyMHRydW5jYXRpb24lM0RUcnVlKSUwQSUwQSUyMCUyMCUyMCUyMG1vZGVsX2lucHV0cyU1QiUyMmxhYmVscyUyMiU1RCUyMCUzRCUyMGxhYmVscyU1QiUyMmlucHV0X2lkcyUyMiU1RCUwQSUyMCUyMCUyMCUyMHJldHVybiUyMG1vZGVsX2lucHV0cw==",highlighted:`max_input_length = <span class="hljs-number">128</span>
max_target_length = <span class="hljs-number">128</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_function</span>(<span class="hljs-params">examples</span>):
inputs = [ex[<span class="hljs-string">&quot;en&quot;</span>] <span class="hljs-keyword">for</span> ex <span class="hljs-keyword">in</span> examples[<span class="hljs-string">&quot;translation&quot;</span>]]
targets = [ex[<span class="hljs-string">&quot;fr&quot;</span>] <span class="hljs-keyword">for</span> ex <span class="hljs-keyword">in</span> examples[<span class="hljs-string">&quot;translation&quot;</span>]]
model_inputs = tokenizer(inputs, max_length=max_input_length, truncation=<span class="hljs-literal">True</span>)
<span class="hljs-comment"># Set up the tokenizer for targets</span>
<span class="hljs-keyword">with</span> tokenizer.as_target_tokenizer():
labels = tokenizer(targets, max_length=max_target_length, truncation=<span class="hljs-literal">True</span>)
model_inputs[<span class="hljs-string">&quot;labels&quot;</span>] = labels[<span class="hljs-string">&quot;input_ids&quot;</span>]
<span class="hljs-keyword">return</span> model_inputs`,wrap:!1}}),Kl=new ee({props:{$$slots:{default:[hp]},$$scope:{ctx:x}}}),Ol=new ee({props:{warning:!0,$$slots:{default:[Cp]},$$scope:{ctx:x}}}),Ne=new h({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwc3BsaXRfZGF0YXNldHMubWFwKCUwQSUyMCUyMCUyMCUyMHByZXByb2Nlc3NfZnVuY3Rpb24lMkMlMEElMjAlMjAlMjAlMjBiYXRjaGVkJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHJlbW92ZV9jb2x1bW5zJTNEc3BsaXRfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RC5jb2x1bW5fbmFtZXMlMkMlMEEp",highlighted:`tokenized_datasets = split_datasets.<span class="hljs-built_in">map</span>(
preprocess_function,
batched=<span class="hljs-literal">True</span>,
remove_columns=split_datasets[<span class="hljs-string">&quot;train&quot;</span>].column_names,
)`,wrap:!1}});const Ea=[$p,Ip],Qs=[];function Fa(l,t){return l[0]==="pt"?0:1}Xl=Fa(x),vl=Qs[Xl]=Ea[Xl](x),Ae=new gl({props:{title:"データの照合",local:"データの照合",headingTag:"h3"}});const Sa=[kp,_p],zs=[];function qa(l,t){return l[0]==="pt"?0:1}Nl=qa(x),Ql=zs[Nl]=Sa[Nl](x),Se=new h({props:{code:"YmF0Y2glMjAlM0QlMjBkYXRhX2NvbGxhdG9yKCU1QnRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCaSU1RCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKDElMkMlMjAzKSU1RCklMEFiYXRjaC5rZXlzKCk=",highlighted:`batch = data_collator([tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>][i] <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">3</span>)])
batch.keys()`,wrap:!1}}),qe=new h({props:{code:"ZGljdF9rZXlzKCU1QidhdHRlbnRpb25fbWFzayclMkMlMjAnaW5wdXRfaWRzJyUyQyUyMCdsYWJlbHMnJTJDJTIwJ2RlY29kZXJfaW5wdXRfaWRzJyU1RCk=",highlighted:'dict_keys([<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;labels&#x27;</span>, <span class="hljs-string">&#x27;decoder_input_ids&#x27;</span>])',wrap:!1}}),Le=new h({props:{code:"YmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQ=",highlighted:'batch[<span class="hljs-string">&quot;labels&quot;</span>]',wrap:!1}}),Pe=new h({props:{code:"dGVuc29yKCU1QiU1QiUyMCUyMDU3NyUyQyUyMCUyMDU4OTElMkMlMjAlMjAlMjAlMjAlMjAyJTJDJTIwJTIwMzE4NCUyQyUyMCUyMCUyMCUyMDE2JTJDJTIwJTIwMjU0MiUyQyUyMCUyMCUyMCUyMCUyMDUlMkMlMjAlMjAxNzEwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMC0xMDAlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtMTAwJTJDJTIwJTIwLTEwMCUyQyUyMCUyMC0xMDAlMkMlMjAlMjAtMTAwJTJDJTIwJTIwLTEwMCUyQyUyMCUyMC0xMDAlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjAxMjExJTJDJTIwJTIwJTIwJTIwJTIwMyUyQyUyMCUyMCUyMCUyMDQ5JTJDJTIwJTIwOTQwOSUyQyUyMCUyMDEyMTElMkMlMjAlMjAlMjAlMjAlMjAzJTJDJTIwMjkxNDAlMkMlMjAlMjAlMjA4MTclMkMlMjAlMjAzMTI0JTJDJTIwJTIwJTIwODE3JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwNTUwJTJDJTIwJTIwNzAzMiUyQyUyMCUyMDU4MjElMkMlMjAlMjA3OTA3JTJDJTIwMTI2NDklMkMlMjAlMjAlMjAlMjAlMjAwJTVEJTVEKQ==",highlighted:`tensor([[ <span class="hljs-number">577</span>, <span class="hljs-number">5891</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3184</span>, <span class="hljs-number">16</span>, <span class="hljs-number">2542</span>, <span class="hljs-number">5</span>, <span class="hljs-number">1710</span>, <span class="hljs-number">0</span>, -<span class="hljs-number">100</span>,
-<span class="hljs-number">100</span>, -<span class="hljs-number">100</span>, -<span class="hljs-number">100</span>, -<span class="hljs-number">100</span>, -<span class="hljs-number">100</span>, -<span class="hljs-number">100</span>],
[ <span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">49</span>, <span class="hljs-number">9409</span>, <span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">29140</span>, <span class="hljs-number">817</span>, <span class="hljs-number">3124</span>, <span class="hljs-number">817</span>,
<span class="hljs-number">550</span>, <span class="hljs-number">7032</span>, <span class="hljs-number">5821</span>, <span class="hljs-number">7907</span>, <span class="hljs-number">12649</span>, <span class="hljs-number">0</span>]])`,wrap:!1}}),Oe=new h({props:{code:"YmF0Y2glNUIlMjJkZWNvZGVyX2lucHV0X2lkcyUyMiU1RA==",highlighted:'batch[<span class="hljs-string">&quot;decoder_input_ids&quot;</span>]',wrap:!1}}),ls=new h({props:{code:"dGVuc29yKCU1QiU1QjU5NTEzJTJDJTIwJTIwJTIwNTc3JTJDJTIwJTIwNTg5MSUyQyUyMCUyMCUyMCUyMCUyMDIlMkMlMjAlMjAzMTg0JTJDJTIwJTIwJTIwJTIwMTYlMkMlMjAlMjAyNTQyJTJDJTIwJTIwJTIwJTIwJTIwNSUyQyUyMCUyMDE3MTAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwNTk1MTMlMkMlMjA1OTUxMyUyQyUyMDU5NTEzJTJDJTIwNTk1MTMlMkMlMjA1OTUxMyUyQyUyMDU5NTEzJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCNTk1MTMlMkMlMjAlMjAxMjExJTJDJTIwJTIwJTIwJTIwJTIwMyUyQyUyMCUyMCUyMCUyMDQ5JTJDJTIwJTIwOTQwOSUyQyUyMCUyMDEyMTElMkMlMjAlMjAlMjAlMjAlMjAzJTJDJTIwMjkxNDAlMkMlMjAlMjAlMjA4MTclMkMlMjAlMjAzMTI0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwODE3JTJDJTIwJTIwJTIwNTUwJTJDJTIwJTIwNzAzMiUyQyUyMCUyMDU4MjElMkMlMjAlMjA3OTA3JTJDJTIwMTI2NDklNUQlNUQp",highlighted:`tensor([[<span class="hljs-number">59513</span>, <span class="hljs-number">577</span>, <span class="hljs-number">5891</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3184</span>, <span class="hljs-number">16</span>, <span class="hljs-number">2542</span>, <span class="hljs-number">5</span>, <span class="hljs-number">1710</span>, <span class="hljs-number">0</span>,
<span class="hljs-number">59513</span>, <span class="hljs-number">59513</span>, <span class="hljs-number">59513</span>, <span class="hljs-number">59513</span>, <span class="hljs-number">59513</span>, <span class="hljs-number">59513</span>],
[<span class="hljs-number">59513</span>, <span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">49</span>, <span class="hljs-number">9409</span>, <span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">29140</span>, <span class="hljs-number">817</span>, <span class="hljs-number">3124</span>,
<span class="hljs-number">817</span>, <span class="hljs-number">550</span>, <span class="hljs-number">7032</span>, <span class="hljs-number">5821</span>, <span class="hljs-number">7907</span>, <span class="hljs-number">12649</span>]])`,wrap:!1}}),ss=new h({props:{code:"Zm9yJTIwaSUyMGluJTIwcmFuZ2UoMSUyQyUyMDMpJTNBJTBBJTIwJTIwJTIwJTIwcHJpbnQodG9rZW5pemVkX2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlNUJpJTVEJTVCJTIybGFiZWxzJTIyJTVEKQ==",highlighted:`<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">3</span>):
<span class="hljs-built_in">print</span>(tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>][i][<span class="hljs-string">&quot;labels&quot;</span>])`,wrap:!1}}),ts=new h({props:{code:"JTVCNTc3JTJDJTIwNTg5MSUyQyUyMDIlMkMlMjAzMTg0JTJDJTIwMTYlMkMlMjAyNTQyJTJDJTIwNSUyQyUyMDE3MTAlMkMlMjAwJTVEJTBBJTVCMTIxMSUyQyUyMDMlMkMlMjA0OSUyQyUyMDk0MDklMkMlMjAxMjExJTJDJTIwMyUyQyUyMDI5MTQwJTJDJTIwODE3JTJDJTIwMzEyNCUyQyUyMDgxNyUyQyUyMDU1MCUyQyUyMDcwMzIlMkMlMjA1ODIxJTJDJTIwNzkwNyUyQyUyMDEyNjQ5JTJDJTIwMCU1RA==",highlighted:`[<span class="hljs-number">577</span>, <span class="hljs-number">5891</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3184</span>, <span class="hljs-number">16</span>, <span class="hljs-number">2542</span>, <span class="hljs-number">5</span>, <span class="hljs-number">1710</span>, <span class="hljs-number">0</span>]
[<span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">49</span>, <span class="hljs-number">9409</span>, <span class="hljs-number">1211</span>, <span class="hljs-number">3</span>, <span class="hljs-number">29140</span>, <span class="hljs-number">817</span>, <span class="hljs-number">3124</span>, <span class="hljs-number">817</span>, <span class="hljs-number">550</span>, <span class="hljs-number">7032</span>, <span class="hljs-number">5821</span>, <span class="hljs-number">7907</span>, <span class="hljs-number">12649</span>, <span class="hljs-number">0</span>]`,wrap:!1}});const Da=[gp,Gp],As=[];function La(l,t){return l[0]==="pt"?0:1}zl=La(x),Al=As[zl]=Da[zl](x),ns=new gl({props:{title:"指標",local:"指標",headingTag:"h3"}}),as=new En({props:{id:"M05L1DhFqcw"}});let Cl=x[0]==="pt"&&rp();is=new h({props:{code:"IXBpcCUyMGluc3RhbGwlMjBzYWNyZWJsZXU=",highlighted:"!pip install sacrebleu",wrap:!1}}),ys=new h({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMnNhY3JlYmxldSUyMik=",highlighted:`<span class="hljs-keyword">import</span> evaluate
metric = evaluate.load(<span class="hljs-string">&quot;sacrebleu&quot;</span>)`,wrap:!1}}),Ts=new h({props:{code:"cHJlZGljdGlvbnMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjJUaGlzJTIwcGx1Z2luJTIwbGV0cyUyMHlvdSUyMHRyYW5zbGF0ZSUyMHdlYiUyMHBhZ2VzJTIwYmV0d2VlbiUyMHNldmVyYWwlMjBsYW5ndWFnZXMlMjBhdXRvbWF0aWNhbGx5LiUyMiUwQSU1RCUwQXJlZmVyZW5jZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJUaGlzJTIwcGx1Z2luJTIwYWxsb3dzJTIweW91JTIwdG8lMjBhdXRvbWF0aWNhbGx5JTIwdHJhbnNsYXRlJTIwd2ViJTIwcGFnZXMlMjBiZXR3ZWVuJTIwc2V2ZXJhbCUyMGxhbmd1YWdlcy4lMjIlMEElMjAlMjAlMjAlMjAlNUQlMEElNUQlMEFtZXRyaWMuY29tcHV0ZShwcmVkaWN0aW9ucyUzRHByZWRpY3Rpb25zJTJDJTIwcmVmZXJlbmNlcyUzRHJlZmVyZW5jZXMp",highlighted:`predictions = [
<span class="hljs-string">&quot;This plugin lets you translate web pages between several languages automatically.&quot;</span>
]
references = [
[
<span class="hljs-string">&quot;This plugin allows you to automatically translate web pages between several languages.&quot;</span>
]
]
metric.compute(predictions=predictions, references=references)`,wrap:!1}}),os=new h({props:{code:"JTdCJ3Njb3JlJyUzQSUyMDQ2Ljc1MDQ2OTY4Mjk5MDE2NSUyQyUwQSUyMCdjb3VudHMnJTNBJTIwJTVCMTElMkMlMjA2JTJDJTIwNCUyQyUyMDMlNUQlMkMlMEElMjAndG90YWxzJyUzQSUyMCU1QjEyJTJDJTIwMTElMkMlMjAxMCUyQyUyMDklNUQlMkMlMEElMjAncHJlY2lzaW9ucyclM0ElMjAlNUI5MS42NyUyQyUyMDU0LjU0JTJDJTIwNDAuMCUyQyUyMDMzLjMzJTVEJTJDJTBBJTIwJ2JwJyUzQSUyMDAuOTIwMDQ0NDE0NjI5MzIzMyUyQyUwQSUyMCdzeXNfbGVuJyUzQSUyMDEyJTJDJTBBJTIwJ3JlZl9sZW4nJTNBJTIwMTMlN0Q=",highlighted:`{<span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">46.750469682990165</span>,
<span class="hljs-string">&#x27;counts&#x27;</span>: [<span class="hljs-number">11</span>, <span class="hljs-number">6</span>, <span class="hljs-number">4</span>, <span class="hljs-number">3</span>],
<span class="hljs-string">&#x27;totals&#x27;</span>: [<span class="hljs-number">12</span>, <span class="hljs-number">11</span>, <span class="hljs-number">10</span>, <span class="hljs-number">9</span>],
<span class="hljs-string">&#x27;precisions&#x27;</span>: [<span class="hljs-number">91.67</span>, <span class="hljs-number">54.54</span>, <span class="hljs-number">40.0</span>, <span class="hljs-number">33.33</span>],
<span class="hljs-string">&#x27;bp&#x27;</span>: <span class="hljs-number">0.9200444146293233</span>,
<span class="hljs-string">&#x27;sys_len&#x27;</span>: <span class="hljs-number">12</span>,
<span class="hljs-string">&#x27;ref_len&#x27;</span>: <span class="hljs-number">13</span>}`,wrap:!1}}),ws=new h({props:{code:"cHJlZGljdGlvbnMlMjAlM0QlMjAlNUIlMjJUaGlzJTIwVGhpcyUyMFRoaXMlMjBUaGlzJTIyJTVEJTBBcmVmZXJlbmNlcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlRoaXMlMjBwbHVnaW4lMjBhbGxvd3MlMjB5b3UlMjB0byUyMGF1dG9tYXRpY2FsbHklMjB0cmFuc2xhdGUlMjB3ZWIlMjBwYWdlcyUyMGJldHdlZW4lMjBzZXZlcmFsJTIwbGFuZ3VhZ2VzLiUyMiUwQSUyMCUyMCUyMCUyMCU1RCUwQSU1RCUwQW1ldHJpYy5jb21wdXRlKHByZWRpY3Rpb25zJTNEcHJlZGljdGlvbnMlMkMlMjByZWZlcmVuY2VzJTNEcmVmZXJlbmNlcyk=",highlighted:`predictions = [<span class="hljs-string">&quot;This This This This&quot;</span>]
references = [
[
<span class="hljs-string">&quot;This plugin allows you to automatically translate web pages between several languages.&quot;</span>
]
]
metric.compute(predictions=predictions, references=references)`,wrap:!1}}),ds=new h({props:{code:"JTdCJ3Njb3JlJyUzQSUyMDEuNjgzNjAyNjkzMTY3Njg5JTJDJTBBJTIwJ2NvdW50cyclM0ElMjAlNUIxJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTVEJTJDJTBBJTIwJ3RvdGFscyclM0ElMjAlNUI0JTJDJTIwMyUyQyUyMDIlMkMlMjAxJTVEJTJDJTBBJTIwJ3ByZWNpc2lvbnMnJTNBJTIwJTVCMjUuMCUyQyUyMDE2LjY3JTJDJTIwMTIuNSUyQyUyMDEyLjUlNUQlMkMlMEElMjAnYnAnJTNBJTIwMC4xMDUzOTkyMjQ1NjE4NjQzMyUyQyUwQSUyMCdzeXNfbGVuJyUzQSUyMDQlMkMlMEElMjAncmVmX2xlbiclM0ElMjAxMyU3RA==",highlighted:`{<span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">1.683602693167689</span>,
<span class="hljs-string">&#x27;counts&#x27;</span>: [<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>],
<span class="hljs-string">&#x27;totals&#x27;</span>: [<span class="hljs-number">4</span>, <span class="hljs-number">3</span>, <span class="hljs-number">2</span>, <span class="hljs-number">1</span>],
<span class="hljs-string">&#x27;precisions&#x27;</span>: [<span class="hljs-number">25.0</span>, <span class="hljs-number">16.67</span>, <span class="hljs-number">12.5</span>, <span class="hljs-number">12.5</span>],
<span class="hljs-string">&#x27;bp&#x27;</span>: <span class="hljs-number">0.10539922456186433</span>,
<span class="hljs-string">&#x27;sys_len&#x27;</span>: <span class="hljs-number">4</span>,
<span class="hljs-string">&#x27;ref_len&#x27;</span>: <span class="hljs-number">13</span>}`,wrap:!1}}),fs=new h({props:{code:"cHJlZGljdGlvbnMlMjAlM0QlMjAlNUIlMjJUaGlzJTIwcGx1Z2luJTIyJTVEJTBBcmVmZXJlbmNlcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMlRoaXMlMjBwbHVnaW4lMjBhbGxvd3MlMjB5b3UlMjB0byUyMGF1dG9tYXRpY2FsbHklMjB0cmFuc2xhdGUlMjB3ZWIlMjBwYWdlcyUyMGJldHdlZW4lMjBzZXZlcmFsJTIwbGFuZ3VhZ2VzLiUyMiUwQSUyMCUyMCUyMCUyMCU1RCUwQSU1RCUwQW1ldHJpYy5jb21wdXRlKHByZWRpY3Rpb25zJTNEcHJlZGljdGlvbnMlMkMlMjByZWZlcmVuY2VzJTNEcmVmZXJlbmNlcyk=",highlighted:`predictions = [<span class="hljs-string">&quot;This plugin&quot;</span>]
references = [
[
<span class="hljs-string">&quot;This plugin allows you to automatically translate web pages between several languages.&quot;</span>
]
]
metric.compute(predictions=predictions, references=references)`,wrap:!1}}),bs=new h({props:{code:"JTdCJ3Njb3JlJyUzQSUyMDAuMCUyQyUwQSUyMCdjb3VudHMnJTNBJTIwJTVCMiUyQyUyMDElMkMlMjAwJTJDJTIwMCU1RCUyQyUwQSUyMCd0b3RhbHMnJTNBJTIwJTVCMiUyQyUyMDElMkMlMjAwJTJDJTIwMCU1RCUyQyUwQSUyMCdwcmVjaXNpb25zJyUzQSUyMCU1QjEwMC4wJTJDJTIwMTAwLjAlMkMlMjAwLjAlMkMlMjAwLjAlNUQlMkMlMEElMjAnYnAnJTNBJTIwMC4wMDQwODY3NzE0Mzg0NjQwNjclMkMlMEElMjAnc3lzX2xlbiclM0ElMjAyJTJDJTBBJTIwJ3JlZl9sZW4nJTNBJTIwMTMlN0Q=",highlighted:`{<span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.0</span>,
<span class="hljs-string">&#x27;counts&#x27;</span>: [<span class="hljs-number">2</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>],
<span class="hljs-string">&#x27;totals&#x27;</span>: [<span class="hljs-number">2</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>],
<span class="hljs-string">&#x27;precisions&#x27;</span>: [<span class="hljs-number">100.0</span>, <span class="hljs-number">100.0</span>, <span class="hljs-number">0.0</span>, <span class="hljs-number">0.0</span>],
<span class="hljs-string">&#x27;bp&#x27;</span>: <span class="hljs-number">0.004086771438464067</span>,
<span class="hljs-string">&#x27;sys_len&#x27;</span>: <span class="hljs-number">2</span>,
<span class="hljs-string">&#x27;ref_len&#x27;</span>: <span class="hljs-number">13</span>}`,wrap:!1}});const Pa=[Bp,xp],Hs=[];function Ka(l,t){return l[0]==="tf"?0:1}Hl=Ka(x),Yl=Hs[Hl]=Pa[Hl](x),Is=new gl({props:{title:"モデルの微調整",local:"モデルの微調整",headingTag:"h3"}}),Zs=new h({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login
notebook_login()`,wrap:!1}}),ks=new h({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}});const Oa=[Rp,Wp],Ys=[];function lp(l,t){return l[0]==="tf"?0:1}El=lp(x),Fl=Ys[El]=Oa[El](x);let cl=x[0]==="pt"&&ip();return Gs=new gl({props:{title:"微調整したモデルを使う",local:"微調整したモデルを使う",headingTag:"h2"}}),xs=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBJTIzJTIwUmVwbGFjZSUyMHRoaXMlMjB3aXRoJTIweW91ciUyMG93biUyMGNoZWNrcG9pbnQlMEFtb2RlbF9jaGVja3BvaW50JTIwJTNEJTIwJTIyaHVnZ2luZ2ZhY2UtY291cnNlJTJGbWFyaWFuLWZpbmV0dW5lZC1rZGU0LWVuLXRvLWZyJTIyJTBBdHJhbnNsYXRvciUyMCUzRCUyMHBpcGVsaW5lKCUyMnRyYW5zbGF0aW9uJTIyJTJDJTIwbW9kZWwlM0Rtb2RlbF9jaGVja3BvaW50KSUwQXRyYW5zbGF0b3IoJTIyRGVmYXVsdCUyMHRvJTIwZXhwYW5kZWQlMjB0aHJlYWRzJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline
<span class="hljs-comment"># Replace this with your own checkpoint</span>
model_checkpoint = <span class="hljs-string">&quot;huggingface-course/marian-finetuned-kde4-en-to-fr&quot;</span>
translator = pipeline(<span class="hljs-string">&quot;translation&quot;</span>, model=model_checkpoint)
translator(<span class="hljs-string">&quot;Default to expanded threads&quot;</span>)`,wrap:!1}}),Bs=new h({props:{code:"JTVCJTdCJ3RyYW5zbGF0aW9uX3RleHQnJTNBJTIwJ1BhciUyMGQlQzMlQTlmYXV0JTJDJTIwZCVDMyVBOXZlbG9wcGVyJTIwbGVzJTIwZmlscyUyMGRlJTIwZGlzY3Vzc2lvbiclN0QlNUQ=",highlighted:'[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&#x27;Par défaut, développer les fils de discussion&#x27;</span>}]',wrap:!1}}),Rs=new h({props:{code:"dHJhbnNsYXRvciglMEElMjAlMjAlMjAlMjAlMjJVbmFibGUlMjB0byUyMGltcG9ydCUyMCUyNTElMjB1c2luZyUyMHRoZSUyME9GWCUyMGltcG9ydGVyJTIwcGx1Z2luLiUyMFRoaXMlMjBmaWxlJTIwaXMlMjBub3QlMjB0aGUlMjBjb3JyZWN0JTIwZm9ybWF0LiUyMiUwQSk=",highlighted:`translator(
<span class="hljs-string">&quot;Unable to import %1 using the OFX importer plugin. This file is not the correct format.&quot;</span>
)`,wrap:!1}}),Vs=new h({props:{code:"JTVCJTdCJ3RyYW5zbGF0aW9uX3RleHQnJTNBJTIwJTIySW1wb3NzaWJsZSUyMGQnaW1wb3J0ZXIlMjAlMjUxJTIwZW4lMjB1dGlsaXNhbnQlMjBsZSUyMG1vZHVsZSUyMGV4dGVybmUlMjBkJ2ltcG9ydGF0aW9uJTIwT0ZYLiUyMENlJTIwZmljaGllciUyMG4nZXN0JTIwcGFzJTIwbGUlMjBib24lMjBmb3JtYXQuJTIyJTdEJTVE",highlighted:'[{<span class="hljs-string">&#x27;translation_text&#x27;</span>: <span class="hljs-string">&quot;Impossible d&#x27;importer %1 en utilisant le module externe d&#x27;importation OFX. Ce fichier n&#x27;est pas le bon format.&quot;</span>}]',wrap:!1}}),le=new ee({props:{$$slots:{default:[vp]},$$scope:{ctx:x}}}),vs=new jp({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ja/chapter7/4.mdx"}}),{c(){p=J("meta"),b=n(),r=J("p"),f=n(),o(G.$$.fragment),d=n(),o(g.$$.fragment),B=n(),C.c(),I=n(),R=J("p"),R.innerHTML=yl,K=n(),v=J("ul"),v.innerHTML=z,O=n(),o(A.$$.fragment),ll=n(),N=J("p"),N.innerHTML=H,el=n(),Y=J("p"),Y.innerHTML=Jl,sl=n(),Q=J("p"),Q.innerHTML=E,L=n(),X=J("p"),X.textContent=kl,P=n(),W=J("iframe"),tl=n(),V=J("a"),V.innerHTML=F,nl=n(),S=J("p"),S.innerHTML=al,q=n(),o(Tl.$$.fragment),w=n(),k=J("p"),k.innerHTML=xl,pl=n(),o(wl.$$.fragment),ul=n(),ol=J("p"),ol.innerHTML=Bl,Ml=n(),o(Gl.$$.fragment),Il=n(),D=J("p"),D.innerHTML=Wl,rl=n(),$l=J("img"),il=n(),dl=J("p"),dl.textContent=fl,bl=n(),o(hl.$$.fragment),jl=n(),o(Ul.$$.fragment),Zl=n(),i=J("p"),i.innerHTML=_,Vl=n(),o(Sl.$$.fragment),Dl=n(),o(M.$$.fragment),$=n(),se=J("p"),se.innerHTML=On,et=n(),o(te.$$.fragment),st=n(),ne=J("p"),ne.textContent=la,tt=n(),o(ae.$$.fragment),nt=n(),o(pe.$$.fragment),at=n(),Me=J("p"),Me.textContent=ea,pt=n(),o(re.$$.fragment),Mt=n(),o(ie.$$.fragment),rt=n(),ce=J("p"),ce.textContent=sa,it=n(),o(ye.$$.fragment),ct=n(),o(Je.$$.fragment),yt=n(),me=J("p"),me.textContent=ta,Jt=n(),o(Te.$$.fragment),mt=n(),o(oe.$$.fragment),Tt=n(),Ue=J("p"),Ue.textContent=na,ot=n(),o(ue.$$.fragment),Ut=n(),o(Ll.$$.fragment),ut=n(),o(je.$$.fragment),jt=n(),o(we.$$.fragment),wt=n(),de=J("p"),de.innerHTML=aa,dt=n(),fe=J("p"),fe.innerHTML=pa,ft=n(),o(be.$$.fragment),bt=n(),he=J("p"),he.innerHTML=Ma,ht=n(),o(Pl.$$.fragment),Ct=n(),Ce=J("p"),Ce.innerHTML=ra,It=n(),Ie=J("p"),Ie.innerHTML=ia,$t=n(),o($e.$$.fragment),Zt=n(),Ze=J("p"),Ze.innerHTML=ca,_t=n(),_e=J("p"),_e.innerHTML=ya,kt=n(),ke=J("p"),ke.textContent=Ja,Gt=n(),o(Ge.$$.fragment),gt=n(),ge=J("p"),ge.textContent=ma,xt=n(),o(xe.$$.fragment),Bt=n(),o(Be.$$.fragment),Wt=n(),We=J("p"),We.textContent=Ta,Rt=n(),Re=J("p"),Re.innerHTML=oa,Vt=n(),o(Ve.$$.fragment),Xt=n(),Xe=J("p"),Xe.textContent=Ua,vt=n(),o(Kl.$$.fragment),Nt=n(),o(Ol.$$.fragment),Qt=n(),ve=J("p"),ve.textContent=ua,zt=n(),o(Ne.$$.fragment),At=n(),Qe=J("p"),Qe.textContent=ja,Ht=n(),vl.c(),Ss=n(),ze=J("p"),ze.textContent=wa,Yt=n(),o(Ae.$$.fragment),Et=n(),He=J("p"),He.innerHTML=da,Ft=n(),Ye=J("p"),Ye.innerHTML=fa,St=n(),Ee=J("p"),Ee.innerHTML=ba,qt=n(),Ql.c(),qs=n(),Fe=J("p"),Fe.textContent=ha,Dt=n(),o(Se.$$.fragment),Lt=n(),o(qe.$$.fragment),Pt=n(),De=J("p"),De.innerHTML=Ca,Kt=n(),o(Le.$$.fragment),Ot=n(),o(Pe.$$.fragment),ln=n(),Ke=J("p"),Ke.textContent=Ia,en=n(),o(Oe.$$.fragment),sn=n(),o(ls.$$.fragment),tn=n(),es=J("p"),es.textContent=$a,nn=n(),o(ss.$$.fragment),an=n(),o(ts.$$.fragment),pn=n(),Al.c(),Ds=n(),o(ns.$$.fragment),Mn=n(),o(as.$$.fragment),rn=n(),Cl&&Cl.c(),Ls=n(),ps=J("p"),ps.innerHTML=Za,cn=n(),Ms=J("p"),Ms.textContent=_a,yn=n(),rs=J("p"),rs.innerHTML=ka,Jn=n(),o(is.$$.fragment),mn=n(),cs=J("p"),cs.innerHTML=Ga,Tn=n(),o(ys.$$.fragment),on=n(),Js=J("p"),Js.textContent=ga,Un=n(),ms=J("p"),ms.textContent=xa,un=n(),o(Ts.$$.fragment),jn=n(),o(os.$$.fragment),wn=n(),Us=J("p"),Us.textContent=Ba,dn=n(),us=J("p"),us.innerHTML=Wa,fn=n(),js=J("p"),js.textContent=Ra,bn=n(),o(ws.$$.fragment),hn=n(),o(ds.$$.fragment),Cn=n(),o(fs.$$.fragment),In=n(),o(bs.$$.fragment),$n=n(),hs=J("p"),hs.textContent=Va,Zn=n(),Yl.c(),Ps=n(),Cs=J("p"),Cs.textContent=Xa,_n=n(),o(Is.$$.fragment),kn=n(),$s=J("p"),$s.textContent=va,Gn=n(),o(Zs.$$.fragment),gn=n(),_s=J("p"),_s.textContent=Na,xn=n(),o(ks.$$.fragment),Bn=n(),Fl.c(),Ks=n(),cl&&cl.c(),Os=n(),o(Gs.$$.fragment),Wn=n(),gs=J("p"),gs.textContent=Qa,Rn=n(),o(xs.$$.fragment),Vn=n(),o(Bs.$$.fragment),Xn=n(),Ws=J("p"),Ws.textContent=za,vn=n(),o(Rs.$$.fragment),Nn=n(),o(Vs.$$.fragment),Qn=n(),Xs=J("p"),Xs.textContent=Aa,zn=n(),o(le.$$.fragment),An=n(),o(vs.$$.fragment),Hn=n(),lt=J("p"),this.h()},l(l){const t=op("svelte-u9bgzb",document.head);p=m(t,"META",{name:!0,content:!0}),t.forEach(e),b=a(l),r=m(l,"P",{}),Kn(r).forEach(e),f=a(l),U(G.$$.fragment,l),d=a(l),U(g.$$.fragment,l),B=a(l),C.l(l),I=a(l),R=m(l,"P",{"data-svelte-h":!0}),T(R)!=="svelte-1awns0i"&&(R.innerHTML=yl),K=a(l),v=m(l,"UL",{"data-svelte-h":!0}),T(v)!=="svelte-hste9n"&&(v.innerHTML=z),O=a(l),U(A.$$.fragment,l),ll=a(l),N=m(l,"P",{"data-svelte-h":!0}),T(N)!=="svelte-n2yo3f"&&(N.innerHTML=H),el=a(l),Y=m(l,"P",{"data-svelte-h":!0}),T(Y)!=="svelte-1d05p8a"&&(Y.innerHTML=Jl),sl=a(l),Q=m(l,"P",{"data-svelte-h":!0}),T(Q)!=="svelte-xjezg3"&&(Q.innerHTML=E),L=a(l),X=m(l,"P",{"data-svelte-h":!0}),T(X)!=="svelte-1pske79"&&(X.textContent=kl),P=a(l),W=m(l,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),Kn(W).forEach(e),tl=a(l),V=m(l,"A",{class:!0,href:!0,"data-svelte-h":!0}),T(V)!=="svelte-1ifl6xg"&&(V.innerHTML=F),nl=a(l),S=m(l,"P",{"data-svelte-h":!0}),T(S)!=="svelte-1rh81ua"&&(S.innerHTML=al),q=a(l),U(Tl.$$.fragment,l),w=a(l),k=m(l,"P",{"data-svelte-h":!0}),T(k)!=="svelte-1rsaox9"&&(k.innerHTML=xl),pl=a(l),U(wl.$$.fragment,l),ul=a(l),ol=m(l,"P",{"data-svelte-h":!0}),T(ol)!=="svelte-5kgy88"&&(ol.innerHTML=Bl),Ml=a(l),U(Gl.$$.fragment,l),Il=a(l),D=m(l,"P",{"data-svelte-h":!0}),T(D)!=="svelte-1fz78la"&&(D.innerHTML=Wl),rl=a(l),$l=m(l,"IMG",{src:!0,alt:!0,width:!0}),il=a(l),dl=m(l,"P",{"data-svelte-h":!0}),T(dl)!=="svelte-3zr9e8"&&(dl.textContent=fl),bl=a(l),U(hl.$$.fragment,l),jl=a(l),U(Ul.$$.fragment,l),Zl=a(l),i=m(l,"P",{"data-svelte-h":!0}),T(i)!=="svelte-1hvi45a"&&(i.innerHTML=_),Vl=a(l),U(Sl.$$.fragment,l),Dl=a(l),U(M.$$.fragment,l),$=a(l),se=m(l,"P",{"data-svelte-h":!0}),T(se)!=="svelte-188g3t3"&&(se.innerHTML=On),et=a(l),U(te.$$.fragment,l),st=a(l),ne=m(l,"P",{"data-svelte-h":!0}),T(ne)!=="svelte-1gnakmp"&&(ne.textContent=la),tt=a(l),U(ae.$$.fragment,l),nt=a(l),U(pe.$$.fragment,l),at=a(l),Me=m(l,"P",{"data-svelte-h":!0}),T(Me)!=="svelte-3tzr6k"&&(Me.textContent=ea),pt=a(l),U(re.$$.fragment,l),Mt=a(l),U(ie.$$.fragment,l),rt=a(l),ce=m(l,"P",{"data-svelte-h":!0}),T(ce)!=="svelte-kszj1k"&&(ce.textContent=sa),it=a(l),U(ye.$$.fragment,l),ct=a(l),U(Je.$$.fragment,l),yt=a(l),me=m(l,"P",{"data-svelte-h":!0}),T(me)!=="svelte-23tlw5"&&(me.textContent=ta),Jt=a(l),U(Te.$$.fragment,l),mt=a(l),U(oe.$$.fragment,l),Tt=a(l),Ue=m(l,"P",{"data-svelte-h":!0}),T(Ue)!=="svelte-1km8gwe"&&(Ue.textContent=na),ot=a(l),U(ue.$$.fragment,l),Ut=a(l),U(Ll.$$.fragment,l),ut=a(l),U(je.$$.fragment,l),jt=a(l),U(we.$$.fragment,l),wt=a(l),de=m(l,"P",{"data-svelte-h":!0}),T(de)!=="svelte-1htz07v"&&(de.innerHTML=aa),dt=a(l),fe=m(l,"P",{"data-svelte-h":!0}),T(fe)!=="svelte-uukal0"&&(fe.innerHTML=pa),ft=a(l),U(be.$$.fragment,l),bt=a(l),he=m(l,"P",{"data-svelte-h":!0}),T(he)!=="svelte-1sbksia"&&(he.innerHTML=Ma),ht=a(l),U(Pl.$$.fragment,l),Ct=a(l),Ce=m(l,"P",{"data-svelte-h":!0}),T(Ce)!=="svelte-km4vcg"&&(Ce.innerHTML=ra),It=a(l),Ie=m(l,"P",{"data-svelte-h":!0}),T(Ie)!=="svelte-ax38xn"&&(Ie.innerHTML=ia),$t=a(l),U($e.$$.fragment,l),Zt=a(l),Ze=m(l,"P",{"data-svelte-h":!0}),T(Ze)!=="svelte-sy47wk"&&(Ze.innerHTML=ca),_t=a(l),_e=m(l,"P",{"data-svelte-h":!0}),T(_e)!=="svelte-14sys0h"&&(_e.innerHTML=ya),kt=a(l),ke=m(l,"P",{"data-svelte-h":!0}),T(ke)!=="svelte-1i0wt5a"&&(ke.textContent=Ja),Gt=a(l),U(Ge.$$.fragment,l),gt=a(l),ge=m(l,"P",{"data-svelte-h":!0}),T(ge)!=="svelte-810vj9"&&(ge.textContent=ma),xt=a(l),U(xe.$$.fragment,l),Bt=a(l),U(Be.$$.fragment,l),Wt=a(l),We=m(l,"P",{"data-svelte-h":!0}),T(We)!=="svelte-pq53zw"&&(We.textContent=Ta),Rt=a(l),Re=m(l,"P",{"data-svelte-h":!0}),T(Re)!=="svelte-1b6zx8r"&&(Re.innerHTML=oa),Vt=a(l),U(Ve.$$.fragment,l),Xt=a(l),Xe=m(l,"P",{"data-svelte-h":!0}),T(Xe)!=="svelte-d4w7ia"&&(Xe.textContent=Ua),vt=a(l),U(Kl.$$.fragment,l),Nt=a(l),U(Ol.$$.fragment,l),Qt=a(l),ve=m(l,"P",{"data-svelte-h":!0}),T(ve)!=="svelte-x19p8f"&&(ve.textContent=ua),zt=a(l),U(Ne.$$.fragment,l),At=a(l),Qe=m(l,"P",{"data-svelte-h":!0}),T(Qe)!=="svelte-50oary"&&(Qe.textContent=ja),Ht=a(l),vl.l(l),Ss=a(l),ze=m(l,"P",{"data-svelte-h":!0}),T(ze)!=="svelte-1a89qap"&&(ze.textContent=wa),Yt=a(l),U(Ae.$$.fragment,l),Et=a(l),He=m(l,"P",{"data-svelte-h":!0}),T(He)!=="svelte-1l049o0"&&(He.innerHTML=da),Ft=a(l),Ye=m(l,"P",{"data-svelte-h":!0}),T(Ye)!=="svelte-tsgri2"&&(Ye.innerHTML=fa),St=a(l),Ee=m(l,"P",{"data-svelte-h":!0}),T(Ee)!=="svelte-1owyq07"&&(Ee.innerHTML=ba),qt=a(l),Ql.l(l),qs=a(l),Fe=m(l,"P",{"data-svelte-h":!0}),T(Fe)!=="svelte-7j8f7m"&&(Fe.textContent=ha),Dt=a(l),U(Se.$$.fragment,l),Lt=a(l),U(qe.$$.fragment,l),Pt=a(l),De=m(l,"P",{"data-svelte-h":!0}),T(De)!=="svelte-n1cqoe"&&(De.innerHTML=Ca),Kt=a(l),U(Le.$$.fragment,l),Ot=a(l),U(Pe.$$.fragment,l),ln=a(l),Ke=m(l,"P",{"data-svelte-h":!0}),T(Ke)!=="svelte-ohffxq"&&(Ke.textContent=Ia),en=a(l),U(Oe.$$.fragment,l),sn=a(l),U(ls.$$.fragment,l),tn=a(l),es=m(l,"P",{"data-svelte-h":!0}),T(es)!=="svelte-ownzz6"&&(es.textContent=$a),nn=a(l),U(ss.$$.fragment,l),an=a(l),U(ts.$$.fragment,l),pn=a(l),Al.l(l),Ds=a(l),U(ns.$$.fragment,l),Mn=a(l),U(as.$$.fragment,l),rn=a(l),Cl&&Cl.l(l),Ls=a(l),ps=m(l,"P",{"data-svelte-h":!0}),T(ps)!=="svelte-syx1t5"&&(ps.innerHTML=Za),cn=a(l),Ms=m(l,"P",{"data-svelte-h":!0}),T(Ms)!=="svelte-sgtsp9"&&(Ms.textContent=_a),yn=a(l),rs=m(l,"P",{"data-svelte-h":!0}),T(rs)!=="svelte-unzipk"&&(rs.innerHTML=ka),Jn=a(l),U(is.$$.fragment,l),mn=a(l),cs=m(l,"P",{"data-svelte-h":!0}),T(cs)!=="svelte-jtfl6s"&&(cs.innerHTML=Ga),Tn=a(l),U(ys.$$.fragment,l),on=a(l),Js=m(l,"P",{"data-svelte-h":!0}),T(Js)!=="svelte-hokdk6"&&(Js.textContent=ga),Un=a(l),ms=m(l,"P",{"data-svelte-h":!0}),T(ms)!=="svelte-utm9f9"&&(ms.textContent=xa),un=a(l),U(Ts.$$.fragment,l),jn=a(l),U(os.$$.fragment,l),wn=a(l),Us=m(l,"P",{"data-svelte-h":!0}),T(Us)!=="svelte-2c83ul"&&(Us.textContent=Ba),dn=a(l),us=m(l,"P",{"data-svelte-h":!0}),T(us)!=="svelte-1e60e3p"&&(us.innerHTML=Wa),fn=a(l),js=m(l,"P",{"data-svelte-h":!0}),T(js)!=="svelte-g4ubz6"&&(js.textContent=Ra),bn=a(l),U(ws.$$.fragment,l),hn=a(l),U(ds.$$.fragment,l),Cn=a(l),U(fs.$$.fragment,l),In=a(l),U(bs.$$.fragment,l),$n=a(l),hs=m(l,"P",{"data-svelte-h":!0}),T(hs)!=="svelte-3jxwxq"&&(hs.textContent=Va),Zn=a(l),Yl.l(l),Ps=a(l),Cs=m(l,"P",{"data-svelte-h":!0}),T(Cs)!=="svelte-kkyuai"&&(Cs.textContent=Xa),_n=a(l),U(Is.$$.fragment,l),kn=a(l),$s=m(l,"P",{"data-svelte-h":!0}),T($s)!=="svelte-1h2ujxx"&&($s.textContent=va),Gn=a(l),U(Zs.$$.fragment,l),gn=a(l),_s=m(l,"P",{"data-svelte-h":!0}),T(_s)!=="svelte-ns97ta"&&(_s.textContent=Na),xn=a(l),U(ks.$$.fragment,l),Bn=a(l),Fl.l(l),Ks=a(l),cl&&cl.l(l),Os=a(l),U(Gs.$$.fragment,l),Wn=a(l),gs=m(l,"P",{"data-svelte-h":!0}),T(gs)!=="svelte-1ycpmnz"&&(gs.textContent=Qa),Rn=a(l),U(xs.$$.fragment,l),Vn=a(l),U(Bs.$$.fragment,l),Xn=a(l),Ws=m(l,"P",{"data-svelte-h":!0}),T(Ws)!=="svelte-165ddw4"&&(Ws.textContent=za),vn=a(l),U(Rs.$$.fragment,l),Nn=a(l),U(Vs.$$.fragment,l),Qn=a(l),Xs=m(l,"P",{"data-svelte-h":!0}),T(Xs)!=="svelte-1mtrw2q"&&(Xs.textContent=Aa),zn=a(l),U(le.$$.fragment,l),An=a(l),U(vs.$$.fragment,l),Hn=a(l),lt=m(l,"P",{}),Kn(lt).forEach(e),this.h()},h(){_l(p,"name","hf:doc:metadata"),_l(p,"content",Qp),Mp(W.src,ml="https://course-demos-marian-finetuned-kde4-en-to-fr.hf.space")||_l(W,"src",ml),_l(W,"frameborder","0"),_l(W,"height","350"),_l(W,"title","Gradio app"),_l(W,"class","block dark:hidden container p-0 flex-grow space-iframe"),_l(W,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),_l(W,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),_l(V,"class","flex justify-center"),_l(V,"href","/huggingface-course/marian-finetuned-kde4-en-to-fr"),Mp($l.src,Rl="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter7/language_tags.png")||_l($l,"src",Rl),_l($l,"alt","Language available for the KDE4 dataset."),_l($l,"width","100%")},m(l,t){Up(document.head,p),s(l,b,t),s(l,r,t),s(l,f,t),u(G,l,t),s(l,d,t),u(g,l,t),s(l,B,t),Ns[Z].m(l,t),s(l,I,t),s(l,R,t),s(l,K,t),s(l,v,t),s(l,O,t),u(A,l,t),s(l,ll,t),s(l,N,t),s(l,el,t),s(l,Y,t),s(l,sl,t),s(l,Q,t),s(l,L,t),s(l,X,t),s(l,P,t),s(l,W,t),s(l,tl,t),s(l,V,t),s(l,nl,t),s(l,S,t),s(l,q,t),u(Tl,l,t),s(l,w,t),s(l,k,t),s(l,pl,t),u(wl,l,t),s(l,ul,t),s(l,ol,t),s(l,Ml,t),u(Gl,l,t),s(l,Il,t),s(l,D,t),s(l,rl,t),s(l,$l,t),s(l,il,t),s(l,dl,t),s(l,bl,t),u(hl,l,t),s(l,jl,t),u(Ul,l,t),s(l,Zl,t),s(l,i,t),s(l,Vl,t),u(Sl,l,t),s(l,Dl,t),u(M,l,t),s(l,$,t),s(l,se,t),s(l,et,t),u(te,l,t),s(l,st,t),s(l,ne,t),s(l,tt,t),u(ae,l,t),s(l,nt,t),u(pe,l,t),s(l,at,t),s(l,Me,t),s(l,pt,t),u(re,l,t),s(l,Mt,t),u(ie,l,t),s(l,rt,t),s(l,ce,t),s(l,it,t),u(ye,l,t),s(l,ct,t),u(Je,l,t),s(l,yt,t),s(l,me,t),s(l,Jt,t),u(Te,l,t),s(l,mt,t),u(oe,l,t),s(l,Tt,t),s(l,Ue,t),s(l,ot,t),u(ue,l,t),s(l,Ut,t),u(Ll,l,t),s(l,ut,t),u(je,l,t),s(l,jt,t),u(we,l,t),s(l,wt,t),s(l,de,t),s(l,dt,t),s(l,fe,t),s(l,ft,t),u(be,l,t),s(l,bt,t),s(l,he,t),s(l,ht,t),u(Pl,l,t),s(l,Ct,t),s(l,Ce,t),s(l,It,t),s(l,Ie,t),s(l,$t,t),u($e,l,t),s(l,Zt,t),s(l,Ze,t),s(l,_t,t),s(l,_e,t),s(l,kt,t),s(l,ke,t),s(l,Gt,t),u(Ge,l,t),s(l,gt,t),s(l,ge,t),s(l,xt,t),u(xe,l,t),s(l,Bt,t),u(Be,l,t),s(l,Wt,t),s(l,We,t),s(l,Rt,t),s(l,Re,t),s(l,Vt,t),u(Ve,l,t),s(l,Xt,t),s(l,Xe,t),s(l,vt,t),u(Kl,l,t),s(l,Nt,t),u(Ol,l,t),s(l,Qt,t),s(l,ve,t),s(l,zt,t),u(Ne,l,t),s(l,At,t),s(l,Qe,t),s(l,Ht,t),Qs[Xl].m(l,t),s(l,Ss,t),s(l,ze,t),s(l,Yt,t),u(Ae,l,t),s(l,Et,t),s(l,He,t),s(l,Ft,t),s(l,Ye,t),s(l,St,t),s(l,Ee,t),s(l,qt,t),zs[Nl].m(l,t),s(l,qs,t),s(l,Fe,t),s(l,Dt,t),u(Se,l,t),s(l,Lt,t),u(qe,l,t),s(l,Pt,t),s(l,De,t),s(l,Kt,t),u(Le,l,t),s(l,Ot,t),u(Pe,l,t),s(l,ln,t),s(l,Ke,t),s(l,en,t),u(Oe,l,t),s(l,sn,t),u(ls,l,t),s(l,tn,t),s(l,es,t),s(l,nn,t),u(ss,l,t),s(l,an,t),u(ts,l,t),s(l,pn,t),As[zl].m(l,t),s(l,Ds,t),u(ns,l,t),s(l,Mn,t),u(as,l,t),s(l,rn,t),Cl&&Cl.m(l,t),s(l,Ls,t),s(l,ps,t),s(l,cn,t),s(l,Ms,t),s(l,yn,t),s(l,rs,t),s(l,Jn,t),u(is,l,t),s(l,mn,t),s(l,cs,t),s(l,Tn,t),u(ys,l,t),s(l,on,t),s(l,Js,t),s(l,Un,t),s(l,ms,t),s(l,un,t),u(Ts,l,t),s(l,jn,t),u(os,l,t),s(l,wn,t),s(l,Us,t),s(l,dn,t),s(l,us,t),s(l,fn,t),s(l,js,t),s(l,bn,t),u(ws,l,t),s(l,hn,t),u(ds,l,t),s(l,Cn,t),u(fs,l,t),s(l,In,t),u(bs,l,t),s(l,$n,t),s(l,hs,t),s(l,Zn,t),Hs[Hl].m(l,t),s(l,Ps,t),s(l,Cs,t),s(l,_n,t),u(Is,l,t),s(l,kn,t),s(l,$s,t),s(l,Gn,t),u(Zs,l,t),s(l,gn,t),s(l,_s,t),s(l,xn,t),u(ks,l,t),s(l,Bn,t),Ys[El].m(l,t),s(l,Ks,t),cl&&cl.m(l,t),s(l,Os,t),u(Gs,l,t),s(l,Wn,t),s(l,gs,t),s(l,Rn,t),u(xs,l,t),s(l,Vn,t),u(Bs,l,t),s(l,Xn,t),s(l,Ws,t),s(l,vn,t),u(Rs,l,t),s(l,Nn,t),u(Vs,l,t),s(l,Qn,t),s(l,Xs,t),s(l,zn,t),u(le,l,t),s(l,An,t),u(vs,l,t),s(l,Hn,t),s(l,lt,t),Yn=!0},p(l,[t]){const ep={};t&1&&(ep.fw=l[0]),G.$set(ep);let Fn=Z;Z=Ya(l),Z!==Fn&&(Fs(),y(Ns[Fn],1,1,()=>{Ns[Fn]=null}),Es(),C=Ns[Z],C||(C=Ns[Z]=Ha[Z](l),C.c()),c(C,1),C.m(I.parentNode,I));const sp={};t&2&&(sp.$$scope={dirty:t,ctx:l}),Ll.$set(sp);const tp={};t&2&&(tp.$$scope={dirty:t,ctx:l}),Pl.$set(tp);const np={};t&2&&(np.$$scope={dirty:t,ctx:l}),Kl.$set(np);const ap={};t&2&&(ap.$$scope={dirty:t,ctx:l}),Ol.$set(ap);let Sn=Xl;Xl=Fa(l),Xl!==Sn&&(Fs(),y(Qs[Sn],1,1,()=>{Qs[Sn]=null}),Es(),vl=Qs[Xl],vl||(vl=Qs[Xl]=Ea[Xl](l),vl.c()),c(vl,1),vl.m(Ss.parentNode,Ss));let qn=Nl;Nl=qa(l),Nl!==qn&&(Fs(),y(zs[qn],1,1,()=>{zs[qn]=null}),Es(),Ql=zs[Nl],Ql||(Ql=zs[Nl]=Sa[Nl](l),Ql.c()),c(Ql,1),Ql.m(qs.parentNode,qs));let Dn=zl;zl=La(l),zl!==Dn&&(Fs(),y(As[Dn],1,1,()=>{As[Dn]=null}),Es(),Al=As[zl],Al||(Al=As[zl]=Da[zl](l),Al.c()),c(Al,1),Al.m(Ds.parentNode,Ds)),l[0]==="pt"?Cl||(Cl=rp(),Cl.c(),Cl.m(Ls.parentNode,Ls)):Cl&&(Cl.d(1),Cl=null);let Ln=Hl;Hl=Ka(l),Hl!==Ln&&(Fs(),y(Hs[Ln],1,1,()=>{Hs[Ln]=null}),Es(),Yl=Hs[Hl],Yl||(Yl=Hs[Hl]=Pa[Hl](l),Yl.c()),c(Yl,1),Yl.m(Ps.parentNode,Ps));let Pn=El;El=lp(l),El!==Pn&&(Fs(),y(Ys[Pn],1,1,()=>{Ys[Pn]=null}),Es(),Fl=Ys[El],Fl||(Fl=Ys[El]=Oa[El](l),Fl.c()),c(Fl,1),Fl.m(Ks.parentNode,Ks)),l[0]==="pt"?cl?t&1&&c(cl,1):(cl=ip(),cl.c(),c(cl,1),cl.m(Os.parentNode,Os)):cl&&(Fs(),y(cl,1,1,()=>{cl=null}),Es());const pp={};t&2&&(pp.$$scope={dirty:t,ctx:l}),le.$set(pp)},i(l){Yn||(c(G.$$.fragment,l),c(g.$$.fragment,l),c(C),c(A.$$.fragment,l),c(Tl.$$.fragment,l),c(wl.$$.fragment,l),c(Gl.$$.fragment,l),c(hl.$$.fragment,l),c(Ul.$$.fragment,l),c(Sl.$$.fragment,l),c(M.$$.fragment,l),c(te.$$.fragment,l),c(ae.$$.fragment,l),c(pe.$$.fragment,l),c(re.$$.fragment,l),c(ie.$$.fragment,l),c(ye.$$.fragment,l),c(Je.$$.fragment,l),c(Te.$$.fragment,l),c(oe.$$.fragment,l),c(ue.$$.fragment,l),c(Ll.$$.fragment,l),c(je.$$.fragment,l),c(we.$$.fragment,l),c(be.$$.fragment,l),c(Pl.$$.fragment,l),c($e.$$.fragment,l),c(Ge.$$.fragment,l),c(xe.$$.fragment,l),c(Be.$$.fragment,l),c(Ve.$$.fragment,l),c(Kl.$$.fragment,l),c(Ol.$$.fragment,l),c(Ne.$$.fragment,l),c(vl),c(Ae.$$.fragment,l),c(Ql),c(Se.$$.fragment,l),c(qe.$$.fragment,l),c(Le.$$.fragment,l),c(Pe.$$.fragment,l),c(Oe.$$.fragment,l),c(ls.$$.fragment,l),c(ss.$$.fragment,l),c(ts.$$.fragment,l),c(Al),c(ns.$$.fragment,l),c(as.$$.fragment,l),c(is.$$.fragment,l),c(ys.$$.fragment,l),c(Ts.$$.fragment,l),c(os.$$.fragment,l),c(ws.$$.fragment,l),c(ds.$$.fragment,l),c(fs.$$.fragment,l),c(bs.$$.fragment,l),c(Yl),c(Is.$$.fragment,l),c(Zs.$$.fragment,l),c(ks.$$.fragment,l),c(Fl),c(cl),c(Gs.$$.fragment,l),c(xs.$$.fragment,l),c(Bs.$$.fragment,l),c(Rs.$$.fragment,l),c(Vs.$$.fragment,l),c(le.$$.fragment,l),c(vs.$$.fragment,l),Yn=!0)},o(l){y(G.$$.fragment,l),y(g.$$.fragment,l),y(C),y(A.$$.fragment,l),y(Tl.$$.fragment,l),y(wl.$$.fragment,l),y(Gl.$$.fragment,l),y(hl.$$.fragment,l),y(Ul.$$.fragment,l),y(Sl.$$.fragment,l),y(M.$$.fragment,l),y(te.$$.fragment,l),y(ae.$$.fragment,l),y(pe.$$.fragment,l),y(re.$$.fragment,l),y(ie.$$.fragment,l),y(ye.$$.fragment,l),y(Je.$$.fragment,l),y(Te.$$.fragment,l),y(oe.$$.fragment,l),y(ue.$$.fragment,l),y(Ll.$$.fragment,l),y(je.$$.fragment,l),y(we.$$.fragment,l),y(be.$$.fragment,l),y(Pl.$$.fragment,l),y($e.$$.fragment,l),y(Ge.$$.fragment,l),y(xe.$$.fragment,l),y(Be.$$.fragment,l),y(Ve.$$.fragment,l),y(Kl.$$.fragment,l),y(Ol.$$.fragment,l),y(Ne.$$.fragment,l),y(vl),y(Ae.$$.fragment,l),y(Ql),y(Se.$$.fragment,l),y(qe.$$.fragment,l),y(Le.$$.fragment,l),y(Pe.$$.fragment,l),y(Oe.$$.fragment,l),y(ls.$$.fragment,l),y(ss.$$.fragment,l),y(ts.$$.fragment,l),y(Al),y(ns.$$.fragment,l),y(as.$$.fragment,l),y(is.$$.fragment,l),y(ys.$$.fragment,l),y(Ts.$$.fragment,l),y(os.$$.fragment,l),y(ws.$$.fragment,l),y(ds.$$.fragment,l),y(fs.$$.fragment,l),y(bs.$$.fragment,l),y(Yl),y(Is.$$.fragment,l),y(Zs.$$.fragment,l),y(ks.$$.fragment,l),y(Fl),y(cl),y(Gs.$$.fragment,l),y(xs.$$.fragment,l),y(Bs.$$.fragment,l),y(Rs.$$.fragment,l),y(Vs.$$.fragment,l),y(le.$$.fragment,l),y(vs.$$.fragment,l),Yn=!1},d(l){l&&(e(b),e(r),e(f),e(d),e(B),e(I),e(R),e(K),e(v),e(O),e(ll),e(N),e(el),e(Y),e(sl),e(Q),e(L),e(X),e(P),e(W),e(tl),e(V),e(nl),e(S),e(q),e(w),e(k),e(pl),e(ul),e(ol),e(Ml),e(Il),e(D),e(rl),e($l),e(il),e(dl),e(bl),e(jl),e(Zl),e(i),e(Vl),e(Dl),e($),e(se),e(et),e(st),e(ne),e(tt),e(nt),e(at),e(Me),e(pt),e(Mt),e(rt),e(ce),e(it),e(ct),e(yt),e(me),e(Jt),e(mt),e(Tt),e(Ue),e(ot),e(Ut),e(ut),e(jt),e(wt),e(de),e(dt),e(fe),e(ft),e(bt),e(he),e(ht),e(Ct),e(Ce),e(It),e(Ie),e($t),e(Zt),e(Ze),e(_t),e(_e),e(kt),e(ke),e(Gt),e(gt),e(ge),e(xt),e(Bt),e(Wt),e(We),e(Rt),e(Re),e(Vt),e(Xt),e(Xe),e(vt),e(Nt),e(Qt),e(ve),e(zt),e(At),e(Qe),e(Ht),e(Ss),e(ze),e(Yt),e(Et),e(He),e(Ft),e(Ye),e(St),e(Ee),e(qt),e(qs),e(Fe),e(Dt),e(Lt),e(Pt),e(De),e(Kt),e(Ot),e(ln),e(Ke),e(en),e(sn),e(tn),e(es),e(nn),e(an),e(pn),e(Ds),e(Mn),e(rn),e(Ls),e(ps),e(cn),e(Ms),e(yn),e(rs),e(Jn),e(mn),e(cs),e(Tn),e(on),e(Js),e(Un),e(ms),e(un),e(jn),e(wn),e(Us),e(dn),e(us),e(fn),e(js),e(bn),e(hn),e(Cn),e(In),e($n),e(hs),e(Zn),e(Ps),e(Cs),e(_n),e(kn),e($s),e(Gn),e(gn),e(_s),e(xn),e(Bn),e(Ks),e(Os),e(Wn),e(gs),e(Rn),e(Vn),e(Xn),e(Ws),e(vn),e(Nn),e(Qn),e(Xs),e(zn),e(An),e(Hn),e(lt)),e(p),j(G,l),j(g,l),Ns[Z].d(l),j(A,l),j(Tl,l),j(wl,l),j(Gl,l),j(hl,l),j(Ul,l),j(Sl,l),j(M,l),j(te,l),j(ae,l),j(pe,l),j(re,l),j(ie,l),j(ye,l),j(Je,l),j(Te,l),j(oe,l),j(ue,l),j(Ll,l),j(je,l),j(we,l),j(be,l),j(Pl,l),j($e,l),j(Ge,l),j(xe,l),j(Be,l),j(Ve,l),j(Kl,l),j(Ol,l),j(Ne,l),Qs[Xl].d(l),j(Ae,l),zs[Nl].d(l),j(Se,l),j(qe,l),j(Le,l),j(Pe,l),j(Oe,l),j(ls,l),j(ss,l),j(ts,l),As[zl].d(l),j(ns,l),j(as,l),Cl&&Cl.d(l),j(is,l),j(ys,l),j(Ts,l),j(os,l),j(ws,l),j(ds,l),j(fs,l),j(bs,l),Hs[Hl].d(l),j(Is,l),j(Zs,l),j(ks,l),Ys[El].d(l),cl&&cl.d(l),j(Gs,l),j(xs,l),j(Bs,l),j(Rs,l),j(Vs,l),j(le,l),j(vs,l)}}}const Qp='{"title":"翻訳","local":"翻訳","sections":[{"title":"データの準備","local":"データの準備","sections":[{"title":"KDE4データセット","local":"kde4データセット","sections":[],"depth":3},{"title":"データを加工する","local":"データを加工する","sections":[],"depth":3}],"depth":2},{"title":"Trainer API を用いてモデルを微調整する","local":"trainer-api-を用いてモデルを微調整する","sections":[],"depth":2},{"title":"Kerasを使ったモデルの微調整","local":"kerasを使ったモデルの微調整","sections":[{"title":"データの照合","local":"データの照合","sections":[],"depth":3},{"title":"指標","local":"指標","sections":[],"depth":3},{"title":"モデルの微調整","local":"モデルの微調整","sections":[],"depth":3}],"depth":2},{"title":"カスタムトレーニングループ","local":"カスタムトレーニングループ","sections":[{"title":"トレーニングのためのすべての準備","local":"トレーニングのためのすべての準備","sections":[],"depth":3},{"title":"トレーニングループ","local":"トレーニングループ","sections":[],"depth":3}],"depth":2},{"title":"微調整したモデルを使う","local":"微調整したモデルを使う","sections":[],"depth":2}],"depth":1}';function zp(x,p,b){let r="pt";return Jp(()=>{const f=new URLSearchParams(window.location.search);b(0,r=f.get("fw")||"pt")}),[r]}class Lp extends mp{constructor(p){super(),Tp(this,p,zp,Np,yp,{})}}export{Lp as component};

Xet Storage Details

Size:
144 kB
·
Xet hash:
c2ef0ff8f1bcb392c113245527cf09e8f845aa2a5ccf2823bcc2439765efb2ac

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.