import{s as Xo,o as zo,n as Ro}from"../chunks/scheduler.cc52f4b9.js";import{S as Ao,i as Yo,e as m,s as o,c as y,h as Qo,a,d as l,b as p,f as Lo,g as _,j as f,k as W,l as Eo,m as n,n as g,o as M,u as ee,t as d,p as $,q as So,r as Fo,v as te}from"../chunks/index.85964560.js";import{T as No}from"../chunks/Tip.72f3abad.js";import{C as Po,H as re,E as qo}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.4cab8d21.js";import{Y as Ei}from"../chunks/Youtube.2feacd03.js";import{C as U}from"../chunks/CodeBlock.b43b1e5c.js";import{C as Vo}from"../chunks/CourseFloatingBanner.d24cbe55.js";import{F as Do}from"../chunks/FrameworkSwitchCourse.17523e75.js";function Ko(h){let i,r;return i=new Vo({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter4/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter4/section3_tf.ipynb"}]}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function Oo(h){let i,r;return i=new Vo({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter4/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter4/section3_pt.ipynb"}]}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function ep(h){let i,r;return i=new Ei({props:{id:"pUh5cGmNV8Y"}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function tp(h){let i,r;return i=new Ei({props:{id:"Zh0FfmVrKX0"}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function lp(h){let i,r="ถ้าคุณใช้ Keras ในเทรนโมเดล วิธีที่ง่ายที่สุดที่จะอัพโหลดมันขึ้นสู่ Hub คือการผ่านค่าตัวแปร <code>PushToHubCallback</code> เข้าไป เมื่อคุณเรียกใช้ <code>model.fit()</code>:",s,c,T,u,w="ต่อจากนั้นคุณควรเพิ่ม <code>callbacks=[callback]</code> ไปในตอนที่คุณเรียก <code>model.fit()</code> ตัว callback นี้จะทำการอัพโหลดโมเดลของคุณขึ้นสู่ Hub ในทุกๆครั้งที่มันถูกบันทึก (ในที่นี้คือ ทุกๆรอบการเทรน (epoch)) ใน repository และ namespace ของคุณ repository นั้นจะถูกตั้งชื่อให้เหมือนกับโฟลเดอร์ output ที่คุณเลือก (ในที่นี้คือ <code>bert-finetuned-mrpc</code>) แต่คุณสามารถเลือกชื่ออื่นได้โดยการใช้ <code>hub_model_id = &quot;ชื่ออื่น&quot;</code>",C,v,J="สำหรับการอัพโหลดโมเดลของคุณเข้าสู่องค์กรที่คุณเป็นสมาชิกนั้น คุณสามารถทำได้โดย เพียงแค่ผ่านตัวแปล <code>hub_model_id = &quot;องค์กร_ของคุณ/ชื่อ_repo_ของคุณ&quot;</code> เข้าไป",Z;return c=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFB1c2hUb0h1YkNhbGxiYWNrJTBBJTBBY2FsbGJhY2slMjAlM0QlMjBQdXNoVG9IdWJDYWxsYmFjayglMEElMjAlMjAlMjAlMjAlMjJiZXJ0LWZpbmV0dW5lZC1tcnBjJTIyJTJDJTIwc2F2ZV9zdHJhdGVneSUzRCUyMmVwb2NoJTIyJTJDJTIwdG9rZW5pemVyJTNEdG9rZW5pemVyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> PushToHubCallback

callback = PushToHubCallback(
    <span class="hljs-string">&quot;bert-finetuned-mrpc&quot;</span>, save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>, tokenizer=tokenizer
)`,wrap:!1}}),{c(){i=m("p"),i.innerHTML=r,s=o(),y(c.$$.fragment),T=o(),u=m("p"),u.innerHTML=w,C=o(),v=m("p"),v.innerHTML=J},l(b){i=a(b,"P",{"data-svelte-h":!0}),f(i)!=="svelte-gohn8j"&&(i.innerHTML=r),s=p(b),_(c.$$.fragment,b),T=p(b),u=a(b,"P",{"data-svelte-h":!0}),f(u)!=="svelte-1k325en"&&(u.innerHTML=w),C=p(b),v=a(b,"P",{"data-svelte-h":!0}),f(v)!=="svelte-7jffnw"&&(v.innerHTML=J)},m(b,k){n(b,i,k),n(b,s,k),g(c,b,k),n(b,T,k),n(b,u,k),n(b,C,k),n(b,v,k),Z=!0},i(b){Z||(d(c.$$.fragment,b),Z=!0)},o(b){M(c.$$.fragment,b),Z=!1},d(b){b&&(l(i),l(s),l(T),l(u),l(C),l(v)),$(c,b)}}}function np(h){let i,r="ถ้าคุณเคยได้ลองใช้งาน <code>Trainer</code> API ในการเทรนโมเดลมาบ้างแล้ว วิธีที่ง่ายที่สุดที่จะอัพโหลดขึ้นไปสู่ Hub คือการตั้ง <code>push_to_hub=True</code> ตอนที่คุณกำหนด <code>TrainingArguments</code>:",s,c,T,u,w="เมื่อคุณเรียกใช้ <code>trainer.train()</code> ตัว <code>Trainer</code> จะทำการอัพโหลดโมเดลของคุณขึ้นสู่ Hub ในทุกๆครั้งที่มันถูกบันทึก (ในที่นี้คือ ทุกๆรอบการเทรน (epoch)) ใน repository และ namespace ของคุณ repository นั้นจะถูกตั้งชื่อให้เหมือนกับโฟลเดอร์ output ที่คุณเลือก (ในที่นี้คือ <code>bert-finetuned-mrpc</code>) แต่คุณสามารถเลือกชื่ออื่นได้โดยการใช้ <code>hub_model_id = &quot;ชื่ออื่น&quot;</code>",C,v,J="สำหรับการอัพโหลดโมเดลของคุณเข้าสู่องค์กรที่คุณเป็นสมาชิกนั้น คุณสามารถทำได้โดย เพียงแค่ผ่านตัวแปล <code>hub_model_id = &quot;องค์กร_ของคุณ/ชื่อ_repo_ของคุณ&quot;</code> เข้าไป",Z,b,k="เมื่อการเทรนของคุณเสร็จสิ้น คุณควรที่จะใช้ <code>trainer.push_to_hub()</code> อีกครั้งเป็นครั้งสุดท้าย เพื่ออัพโหลดโมเดลเวอร์ชั่นล่าสุดของคุณ มันจะสร้างการ์ดโมเดล (model card) ที่มีข้อมูลเมตา (metadata) ที่เกี่ยวข้อง เช่น รายงาน hyperparameters ที่ใช้ และผลลัพธ์ของการประเมินผล (evaluation result) ให้คุณด้วย! ต่อไปนี้เป็นตัวอย่างของเนื้อหาที่คุณเจอได้ในการ์ดโมเดล:",B,H,me='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/model_card.png" alt="An example of an auto-generated model card." width="100%"/>',x;return c=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMCUyMmJlcnQtZmluZXR1bmVkLW1ycGMlMjIlMkMlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMjBwdXNoX3RvX2h1YiUzRFRydWUlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

training_args = TrainingArguments(
    <span class="hljs-string">&quot;bert-finetuned-mrpc&quot;</span>, save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>, push_to_hub=<span class="hljs-literal">True</span>
)`,wrap:!1}}),{c(){i=m("p"),i.innerHTML=r,s=o(),y(c.$$.fragment),T=o(),u=m("p"),u.innerHTML=w,C=o(),v=m("p"),v.innerHTML=J,Z=o(),b=m("p"),b.innerHTML=k,B=o(),H=m("div"),H.innerHTML=me,this.h()},l(j){i=a(j,"P",{"data-svelte-h":!0}),f(i)!=="svelte-4q6ikf"&&(i.innerHTML=r),s=p(j),_(c.$$.fragment,j),T=p(j),u=a(j,"P",{"data-svelte-h":!0}),f(u)!=="svelte-zmx9r1"&&(u.innerHTML=w),C=p(j),v=a(j,"P",{"data-svelte-h":!0}),f(v)!=="svelte-7jffnw"&&(v.innerHTML=J),Z=p(j),b=a(j,"P",{"data-svelte-h":!0}),f(b)!=="svelte-1gfuffk"&&(b.innerHTML=k),B=p(j),H=a(j,"DIV",{class:!0,"data-svelte-h":!0}),f(H)!=="svelte-1lhrimn"&&(H.innerHTML=me),this.h()},h(){W(H,"class","flex justify-center")},m(j,G){n(j,i,G),n(j,s,G),g(c,j,G),n(j,T,G),n(j,u,G),n(j,C,G),n(j,v,G),n(j,Z,G),n(j,b,G),n(j,B,G),n(j,H,G),x=!0},i(j){x||(d(c.$$.fragment,j),x=!0)},o(j){M(c.$$.fragment,j),x=!1},d(j){j&&(l(i),l(s),l(T),l(u),l(C),l(v),l(Z),l(b),l(B),l(H)),$(c,j)}}}function ip(h){let i,r;return i=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMkMlMjBBdXRvVG9rZW5pemVyJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmNhbWVtYmVydC1iYXNlJTIyJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = <span class="hljs-string">&quot;camembert-base&quot;</span>

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function sp(h){let i,r;return i=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJjYW1lbWJlcnQtYmFzZSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM, AutoTokenizer

checkpoint = <span class="hljs-string">&quot;camembert-base&quot;</span>

model = AutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function op(h){let i,r='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model_tf.png" alt="Dummy model containing both the tokenizer and model files." width="80%"/>';return{c(){i=m("div"),i.innerHTML=r,this.h()},l(s){i=a(s,"DIV",{class:!0,"data-svelte-h":!0}),f(i)!=="svelte-5a3kk0"&&(i.innerHTML=r),this.h()},h(){W(i,"class","flex justify-center")},m(s,c){n(s,i,c)},d(s){s&&l(i)}}}function pp(h){let i,r='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model.png" alt="Dummy model containing both the tokenizer and model files." width="80%"/>';return{c(){i=m("div"),i.innerHTML=r,this.h()},l(s){i=a(s,"DIV",{class:!0,"data-svelte-h":!0}),f(i)!=="svelte-19u1vyv"&&(i.innerHTML=r),this.h()},h(){W(i,"class","flex justify-center")},m(s,c){n(s,i,c)},d(s){s&&l(i)}}}function rp(h){let i,r="✏️ <strong>ทดลองใช้ได้เลย!</strong> นำโมเดลและ tokenizer ที่เกี่ยวข้องกับ <code>bert-base-cased</code> checkpoint และอัพโหลดขึ้นไปบน repo ใน namespace ของคุณด้วยคำสั่ง <code>push_to_hub()</code> จากนั้นลองตรวจสอบดูว่า repo ปรากฏออกมาในรูปแบบที่สมควรจะเป็นบนหน้าของคุณ ก่อนที่จะลบมันออกไป";return{c(){i=m("p"),i.innerHTML=r},l(s){i=a(s,"P",{"data-svelte-h":!0}),f(i)!=="svelte-61jy1"&&(i.innerHTML=r)},m(s,c){n(s,i,c)},p:Ro,d(s){s&&l(i)}}}function mp(h){let i,r;return i=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMkMlMjBBdXRvVG9rZW5pemVyJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmNhbWVtYmVydC1iYXNlJTIyJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBJTIzJTIwRG8lMjB3aGF0ZXZlciUyMHdpdGglMjB0aGUlMjBtb2RlbCUyQyUyMHRyYWluJTIwaXQlMkMlMjBmaW5lLXR1bmUlMjBpdC4uLiUwQSUwQW1vZGVsLnNhdmVfcHJldHJhaW5lZCglMjIlM0NwYXRoX3RvX2R1bW15X2ZvbGRlciUzRSUyMiklMEF0b2tlbml6ZXIuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = <span class="hljs-string">&quot;camembert-base&quot;</span>

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

<span class="hljs-comment"># Do whatever with the model, train it, fine-tune it...</span>

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function ap(h){let i,r;return i=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJjYW1lbWJlcnQtYmFzZSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEElMjMlMjBEbyUyMHdoYXRldmVyJTIwd2l0aCUyMHRoZSUyMG1vZGVsJTJDJTIwdHJhaW4lMjBpdCUyQyUyMGZpbmUtdHVuZSUyMGl0Li4uJTBBJTBBbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKSUwQXRva2VuaXplci5zYXZlX3ByZXRyYWluZWQoJTIyJTNDcGF0aF90b19kdW1teV9mb2xkZXIlM0UlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM, AutoTokenizer

checkpoint = <span class="hljs-string">&quot;camembert-base&quot;</span>

model = AutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

<span class="hljs-comment"># Do whatever with the model, train it, fine-tune it...</span>

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function fp(h){let i,r,s,c="ถ้าคุณดูที่ขนาดของไฟล์ (อย่างเช่น ใช้คำสั่ง <code>ls -lh</code>) คุณควรจะเห็นได้ว่าไฟล์ model state dict (<em>t5_model.h5</em>) มีขนาดที่โดดมาก นั่นคือมากกว่า 400 MB",T;return i=new U({props:{code:"Y29uZmlnLmpzb24lMjAlMjBSRUFETUUubWQlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUyMCUyMHNwZWNpYWxfdG9rZW5zX21hcC5qc29uJTIwJTIwdGZfbW9kZWwuaDUlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAlMjB0b2tlbml6ZXIuanNvbg==",highlighted:"config.json  README.md  sentencepiece.bpe.model  special_tokens_map.json  tf_model.h5  tokenizer_config.json  tokenizer.json",wrap:!1}}),{c(){y(i.$$.fragment),r=o(),s=m("p"),s.innerHTML=c},l(u){_(i.$$.fragment,u),r=p(u),s=a(u,"P",{"data-svelte-h":!0}),f(s)!=="svelte-147jrfz"&&(s.innerHTML=c)},m(u,w){g(i,u,w),n(u,r,w),n(u,s,w),T=!0},i(u){T||(d(i.$$.fragment,u),T=!0)},o(u){M(i.$$.fragment,u),T=!1},d(u){u&&(l(r),l(s)),$(i,u)}}}function up(h){let i,r,s,c="ถ้าคุณดูที่ขนาดของไฟล์ (อย่างเช่น ใช้คำสั่ง <code>ls -lh</code>) คุณควรจะเห็นได้ว่าไฟล์ model state dict (<em>pytorch_model.bin</em>) มีขนาดที่โดดมาก นั่นคือมากกว่า 400 MB",T;return i=new U({props:{code:"Y29uZmlnLmpzb24lMjAlMjBweXRvcmNoX21vZGVsLmJpbiUyMCUyMFJFQURNRS5tZCUyMCUyMHNlbnRlbmNlcGllY2UuYnBlLm1vZGVsJTIwJTIwc3BlY2lhbF90b2tlbnNfbWFwLmpzb24lMjB0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAlMjB0b2tlbml6ZXIuanNvbg==",highlighted:"config.json  pytorch_model.bin  README.md  sentencepiece.bpe.model  special_tokens_map.json tokenizer_config.json  tokenizer.json",wrap:!1}}),{c(){y(i.$$.fragment),r=o(),s=m("p"),s.innerHTML=c},l(u){_(i.$$.fragment,u),r=p(u),s=a(u,"P",{"data-svelte-h":!0}),f(s)!=="svelte-kiz7ar"&&(s.innerHTML=c)},m(u,w){g(i,u,w),n(u,r,w),n(u,s,w),T=!0},i(u){T||(d(i.$$.fragment,u),T=!0)},o(u){M(i.$$.fragment,u),T=!1},d(u){u&&(l(r),l(s)),$(i,u)}}}function cp(h){let i;return{c(){i=So("✏️ ตอนที่สร้าง repository จาก web interface ไฟล์ *.gitattributes* ถูกตั้งค่าอย่างอัตโนมัติเพื่อให้พิจารณาไฟล์บางประเภท เช่น *.bin* และ *.h5* ว่าเป็นไฟล์ขนาดใหญ่ และ git-lfs จะติดตามไฟล์เหล่านั้นโดยคุณไม่จำเป็นต้องตั้งค่าอะไรเลย")},l(r){i=Fo(r,"✏️ ตอนที่สร้าง repository จาก web interface ไฟล์ *.gitattributes* ถูกตั้งค่าอย่างอัตโนมัติเพื่อให้พิจารณาไฟล์บางประเภท เช่น *.bin* และ *.h5* ว่าเป็นไฟล์ขนาดใหญ่ และ git-lfs จะติดตามไฟล์เหล่านั้นโดยคุณไม่จำเป็นต้องตั้งค่าอะไรเลย")},m(r,s){n(r,i,s)},d(r){r&&l(i)}}}function Mp(h){let i,r;return i=new U({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBWW91ciUyMGJyYW5jaCUyMGlzJTIwdXAlMjB0byUyMGRhdGUlMjB3aXRoJTIwJ29yaWdpbiUyRm1haW4nLiUwQSUwQUNoYW5nZXMlMjB0byUyMGJlJTIwY29tbWl0dGVkJTNBJTBBJTIwJTIwKHVzZSUyMCUyMmdpdCUyMHJlc3RvcmUlMjAtLXN0YWdlZCUyMCUzQ2ZpbGUlM0UuLi4lMjIlMjB0byUyMHVuc3RhZ2UpJTBBJTIwJTIwbW9kaWZpZWQlM0ElMjAlMjAlMjAuZ2l0YXR0cmlidXRlcyUwQSUyMCUyMCUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBjb25maWcuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0Zl9tb2RlbC5oNSUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXIuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`On branch main
Your branch is up to <span class="hljs-built_in">date</span> with <span class="hljs-string">&#x27;origin/main&#x27;</span>.

Changes to be committed:
  (use <span class="hljs-string">&quot;git restore --staged &lt;file&gt;...&quot;</span> to unstage)
  modified:   .gitattributes
  	new file:   config.json
	new file:   sentencepiece.bpe.model
	new file:   special_tokens_map.json
	new file:   tf_model.h5
	new file:   tokenizer.json
	new file:   tokenizer_config.json`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function dp(h){let i,r;return i=new U({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBWW91ciUyMGJyYW5jaCUyMGlzJTIwdXAlMjB0byUyMGRhdGUlMjB3aXRoJTIwJ29yaWdpbiUyRm1haW4nLiUwQSUwQUNoYW5nZXMlMjB0byUyMGJlJTIwY29tbWl0dGVkJTNBJTBBJTIwJTIwKHVzZSUyMCUyMmdpdCUyMHJlc3RvcmUlMjAtLXN0YWdlZCUyMCUzQ2ZpbGUlM0UuLi4lMjIlMjB0byUyMHVuc3RhZ2UpJTBBJTIwJTIwbW9kaWZpZWQlM0ElMjAlMjAlMjAuZ2l0YXR0cmlidXRlcyUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBjb25maWcuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBweXRvcmNoX21vZGVsLmJpbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXIuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`On branch main
Your branch is up to <span class="hljs-built_in">date</span> with <span class="hljs-string">&#x27;origin/main&#x27;</span>.

Changes to be committed:
  (use <span class="hljs-string">&quot;git restore --staged &lt;file&gt;...&quot;</span> to unstage)
  modified:   .gitattributes
	new file:   config.json
	new file:   pytorch_model.bin
	new file:   sentencepiece.bpe.model
	new file:   special_tokens_map.json
	new file:   tokenizer.json
	new file:   tokenizer_config.json`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function bp(h){let i,r,s,c="เราสามารถเห็นได้ว่าทุกไฟล์มี <code>Git</code> เป็นตัวจัดการ (handler) ยกเว้น <em>t5_model.h5</em> ซึ่งเป็น <code>LFS</code> เยี่ยม!",T;return i=new U({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBT2JqZWN0cyUyMHRvJTIwYmUlMjBwdXNoZWQlMjB0byUyMG9yaWdpbiUyRm1haW4lM0ElMEElMEElMEFPYmplY3RzJTIwdG8lMjBiZSUyMGNvbW1pdHRlZCUzQSUwQSUwQSUwOWNvbmZpZy5qc29uJTIwKEdpdCUzQSUyMGJjMjBmZjIpJTBBJTA5c2VudGVuY2VwaWVjZS5icGUubW9kZWwlMjAoTEZTJTNBJTIwOTg4YmM1YSklMEElMDlzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUyMChHaXQlM0ElMjBjYjIzOTMxKSUwQSUwOXRmX21vZGVsLmg1JTIwKExGUyUzQSUyMDg2ZmNlMjkpJTBBJTA5dG9rZW5pemVyLmpzb24lMjAoR2l0JTNBJTIwODUxZmYzZSklMEElMDl0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAoR2l0JTNBJTIwZjBmNzc4MyklMEElMEFPYmplY3RzJTIwbm90JTIwc3RhZ2VkJTIwZm9yJTIwY29tbWl0JTNBJTBBJTBB",highlighted:`On branch main
Objects to be pushed to origin/main:


Objects to be committed:

	config.json (Git: bc20ff2)
	sentencepiece.bpe.model (LFS: 988bc5a)
	special_tokens_map.json (Git: cb23931)
	tf_model.h5 (LFS: 86fce29)
	tokenizer.json (Git: 851ff3e)
	tokenizer_config.json (Git: f0f7783)

Objects not staged <span class="hljs-keyword">for</span> commit:

`,wrap:!1}}),{c(){y(i.$$.fragment),r=o(),s=m("p"),s.innerHTML=c},l(u){_(i.$$.fragment,u),r=p(u),s=a(u,"P",{"data-svelte-h":!0}),f(s)!=="svelte-1w6rnis"&&(s.innerHTML=c)},m(u,w){g(i,u,w),n(u,r,w),n(u,s,w),T=!0},i(u){T||(d(i.$$.fragment,u),T=!0)},o(u){M(i.$$.fragment,u),T=!1},d(u){u&&(l(r),l(s)),$(i,u)}}}function yp(h){let i,r,s,c="เราสามารถเห็นได้ว่าทุกไฟล์มี <code>Git</code> เป็นตัวจัดการ (handler) ยกเว้น <em>pytorch_model.bin</em> และ <em>sentencepiece.bpe.model</em> ซึ่งเป็น <code>LFS</code> เยี่ยม!",T;return i=new U({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBT2JqZWN0cyUyMHRvJTIwYmUlMjBwdXNoZWQlMjB0byUyMG9yaWdpbiUyRm1haW4lM0ElMEElMEElMEFPYmplY3RzJTIwdG8lMjBiZSUyMGNvbW1pdHRlZCUzQSUwQSUwQSUwOWNvbmZpZy5qc29uJTIwKEdpdCUzQSUyMGJjMjBmZjIpJTBBJTA5cHl0b3JjaF9tb2RlbC5iaW4lMjAoTEZTJTNBJTIwMzU2ODZjMiklMEElMDlzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUyMChMRlMlM0ElMjA5ODhiYzVhKSUwQSUwOXNwZWNpYWxfdG9rZW5zX21hcC5qc29uJTIwKEdpdCUzQSUyMGNiMjM5MzEpJTBBJTA5dG9rZW5pemVyLmpzb24lMjAoR2l0JTNBJTIwODUxZmYzZSklMEElMDl0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAoR2l0JTNBJTIwZjBmNzc4MyklMEElMEFPYmplY3RzJTIwbm90JTIwc3RhZ2VkJTIwZm9yJTIwY29tbWl0JTNBJTBBJTBB",highlighted:`On branch main
Objects to be pushed to origin/main:


Objects to be committed:

	config.json (Git: bc20ff2)
	pytorch_model.bin (LFS: 35686c2)
	sentencepiece.bpe.model (LFS: 988bc5a)
	special_tokens_map.json (Git: cb23931)
	tokenizer.json (Git: 851ff3e)
	tokenizer_config.json (Git: f0f7783)

Objects not staged <span class="hljs-keyword">for</span> commit:

`,wrap:!1}}),{c(){y(i.$$.fragment),r=o(),s=m("p"),s.innerHTML=c},l(u){_(i.$$.fragment,u),r=p(u),s=a(u,"P",{"data-svelte-h":!0}),f(s)!=="svelte-1yvmnty"&&(s.innerHTML=c)},m(u,w){g(i,u,w),n(u,r,w),n(u,s,w),T=!0},i(u){T||(d(i.$$.fragment,u),T=!0)},o(u){M(i.$$.fragment,u),T=!1},d(u){u&&(l(r),l(s)),$(i,u)}}}function _p(h){let i,r;return i=new U({props:{code:"JTVCbWFpbiUyMGIwOGFhYjElNUQlMjBGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUwQSUyMDYlMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAzNiUyMGluc2VydGlvbnMoJTJCKSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBjb25maWcuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0Zl9tb2RlbC5oNSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXIuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`[main b08aab1] First model version
 6 files changed, 36 insertions(+)
 create mode 100644 config.json
 create mode 100644 sentencepiece.bpe.model
 create mode 100644 special_tokens_map.json
 create mode 100644 tf_model.h5
 create mode 100644 tokenizer.json
 create mode 100644 tokenizer_config.json`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function gp(h){let i,r;return i=new U({props:{code:"JTVCbWFpbiUyMGIwOGFhYjElNUQlMjBGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUwQSUyMDclMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAyOTAyNyUyMGluc2VydGlvbnMoJTJCKSUwQSUyMCUyMDYlMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAzNiUyMGluc2VydGlvbnMoJTJCKSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBjb25maWcuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBweXRvcmNoX21vZGVsLmJpbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXIuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`[main b08aab1] First model version
 7 files changed, 29027 insertions(+)
  6 files changed, 36 insertions(+)
 create mode 100644 config.json
 create mode 100644 pytorch_model.bin
 create mode 100644 sentencepiece.bpe.model
 create mode 100644 special_tokens_map.json
 create mode 100644 tokenizer.json
 create mode 100644 tokenizer_config.json`,wrap:!1}}),{c(){y(i.$$.fragment)},l(s){_(i.$$.fragment,s)},m(s,c){g(i,s,c),r=!0},i(s){r||(d(i.$$.fragment,s),r=!0)},o(s){M(i.$$.fragment,s),r=!1},d(s){$(i,s)}}}function $p(h){let i,r="ถ้าเราดูที่ model repository เมื่อโค้ดทำงานเสร็จแล้ว เราจะเห็นทุกไฟล์ที่เพิ่งถูกเพิ่มเข้าไปอยู่ในนั้น:",s,c,T='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model_tf.png" alt="The &#39;Files and versions&#39; tab now contains all the recently uploaded files." width="80%"/>',u,w,C="UI ช่วยให้คุณสามารถสำรวจไฟล์โมเดลและ commits และดูความแตกต่างของแต่ละ commit ได้:",v,J,Z='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffstf.gif" alt="The diff introduced by the recent commit." width="80%"/>';return{c(){i=m("p"),i.textContent=r,s=o(),c=m("div"),c.innerHTML=T,u=o(),w=m("p"),w.textContent=C,v=o(),J=m("div"),J.innerHTML=Z,this.h()},l(b){i=a(b,"P",{"data-svelte-h":!0}),f(i)!=="svelte-1vnrfhu"&&(i.textContent=r),s=p(b),c=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(c)!=="svelte-tz4fi2"&&(c.innerHTML=T),u=p(b),w=a(b,"P",{"data-svelte-h":!0}),f(w)!=="svelte-1hb0s3p"&&(w.textContent=C),v=p(b),J=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(J)!=="svelte-2jd8bj"&&(J.innerHTML=Z),this.h()},h(){W(c,"class","flex justify-center"),W(J,"class","flex justify-center")},m(b,k){n(b,i,k),n(b,s,k),n(b,c,k),n(b,u,k),n(b,w,k),n(b,v,k),n(b,J,k)},d(b){b&&(l(i),l(s),l(c),l(u),l(w),l(v),l(J))}}}function hp(h){let i,r="ถ้าเราดูที่ model repository เมื่อโค้ดทำงานเสร็จแล้ว เราจะเห็นทุกไฟล์ที่เพิ่งถูกเพิ่มเข้าไปอยู่ในนั้น:",s,c,T='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model.png" alt="The &#39;Files and versions&#39; tab now contains all the recently uploaded files." width="80%"/>',u,w,C="UI ช่วยให้คุณสามารถสำรวจไฟล์โมเดลและ commits และดูความแตกต่างของแต่ละ commit ได้:",v,J,Z='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffs.gif" alt="The diff introduced by the recent commit." width="80%"/>';return{c(){i=m("p"),i.textContent=r,s=o(),c=m("div"),c.innerHTML=T,u=o(),w=m("p"),w.textContent=C,v=o(),J=m("div"),J.innerHTML=Z,this.h()},l(b){i=a(b,"P",{"data-svelte-h":!0}),f(i)!=="svelte-1vnrfhu"&&(i.textContent=r),s=p(b),c=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(c)!=="svelte-1v39mjb"&&(c.innerHTML=T),u=p(b),w=a(b,"P",{"data-svelte-h":!0}),f(w)!=="svelte-1hb0s3p"&&(w.textContent=C),v=p(b),J=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(J)!=="svelte-1g561m5"&&(J.innerHTML=Z),this.h()},h(){W(c,"class","flex justify-center"),W(J,"class","flex justify-center")},m(b,k){n(b,i,k),n(b,s,k),n(b,c,k),n(b,u,k),n(b,w,k),n(b,v,k),n(b,J,k)},d(b){b&&(l(i),l(s),l(c),l(u),l(w),l(v),l(J))}}}function wp(h){let i,r,s,c,T,u,w,C,v,J,Z,b,k,B,H="ในขั้นตอนข้างล่างต่อไปนี้ เราจะมาดูวิธีที่ง่ายที่สุดในการแบ่งปันโมเดลที่ผ่านการเทรนมาแล้วบน 🤗 Hub มีเครื่องมือและสิ่งอำนวยความสะดวกมากมายที่ทำให้การแบ่งปันและอัพเดตโมเดลโดยตรงบน Hub เป็นเรื่องง่าย ซึ่งนั่นคือสิ่งที่เราจะมาสำรวจกันต่อจากนี้",me,x,j,G,Si="เราส่งเสริมให้ผู้ใช้ทุกคนที่เทรนโมเดลช่วยมีส่วนร่วมโดยการแบ่งปันโมเดลเหล่านั้นให้กับชุมชน การแบ่งปันโมเดลนั้นสามารถช่วยเหลือผู้อื่นได้ ช่วยลดเวลาและทรัพยากรในการประมวลผล และช่วยให้เข้าถึงไฟล์ผลลัพธ์จากการเทรน (artifacts) ที่เป็นประโยชน์ได้ แม้ว่าจะเป็นโมเดลที่ถูกเทรนมากับชุดข้อมูลที่เฉพาะเจาะจงมากก็ตาม ในทางเดียวกันนั้นคุณก็ได้รับประโยชน์จากงานที่คนอื่นได้ทำเช่นกัน!",Jl,ae,Fi="มี 3 วิธีที่สามารถใช้สร้าง model repositories ใหม่ได้:",Zl,fe,Pi="<li>ใช้ <code>push_to_hub</code> API</li> <li>ใช้ <code>huggingface_hub</code> Python library</li> <li>ใช้ web interface</li>",Cl,ue,qi="เมื่อคุณได้สร้าง repository แล้ว คุณสามารถอัพโหลดไฟล์ต่างๆเข้าไปได้ผ่าน git และ git-lfs ในส่วนถัดไปเราจะพาคุณมาดูขั้นตอนการสร้าง model repositories และการอัพโหลดไฟล์ต่างๆเข้าไป",Gl,ce,Wl,I,L,yl,Me,Di="วิธีที่ง่ายที่สุดในการอัพโหลดไฟล์ขึ้นไปสู่ Hub คือการใช้ <code>push_to_hub</code> API",Bl,de,Ki='ก่อนจะไปกันต่อ คุณจะต้องสร้างโทเค็นสำหรับรับรองความน่าเชื่อถือ (authentication token) เพื่อให้ <code>huggingface_hub</code> API รู้ว่าคุณคือใครและคุณมีสิทธิ์ในการเขียน (write access) ใน namespaces อะไรบ้าง ในตอนนี้ให้คุณทำให้มั่นใจว่าคุณอยู่ใน environment ที่คุณได้ทำการติดตั้ง <code>transformers</code> เอาไว้แล้ว (ดู <a href="/course/chapter0">ติดตั้งโปรแกรม</a>) ถ้าคุณกำลังอยู่ใน notebook คุณสามารถใช้งานคำสั่งต่อไปนี้ในการเข้าสู่ระบบได้เลย:',xl,be,Hl,ye,Oi="สำหรับใน terminal คนสามารถรัน:",Il,_e,Ll,ge,es='ในทั้งสองกรณี คุณควรจะถูกให้กรอก username และ password ซึ่งเป็นชุดเดียวกันกับที่คุณใช้ในการ login เข้าสู่ Hub ถ้าหากคุณยังไม่มีโปรไฟล์ Hub คุณสามารถสร้างได้ <a href="https://huggingface.co/join" rel="nofollow">ที่นี่</a>',Nl,$e,ts="เยี่ยม! ตอนนี้คุณมี authentication token เก็บเอาไว้ใน cache folder ของคุณแล้ว มาเริ่มสร้าง repositories กันเถอะ!",Vl,N,V,_l,he,ls="ในระดับล่างลงไปนั้น การเข้าถึง Model Hub สามารถทำได้โดยตรงจาก objects ประเภท models, tokenizers และconfiguration ผ่านคำสั่ง <code>push_to_hub()</code> คำสั่งนี้จะจัดการทั้งการสร้าง repository และการดันไฟล์โมเดลและ tokenizer ขึ้นสู่ repository โดยตรง ไม่มีความจำเป็นที่จะต้องทำอะไรด้วยตนเองเลย ไม่เหมือนกับ API ที่เราจะได้เห็นข้างล่างนี้",Xl,we,ns="เพื่อให้เห็นภาพมากขึ้นว่ามันทำงานอย่างไร เรามาเริ่มสร้างโมเดลและ tokenizer ตัวแรกกันเถอะ:",zl,X,z,gl,Te,is="ถึงจุดนี้คุณสามารถทำอะไรก็ได้กับมันตามที่คุณต้องการ ไม่ว่าจะเป็นการเพิ่ม tokens ไปใน tokenizer, การเทรนโมเดล, การ fine-tune โมเดล หลังจากที่คุณพอใจกับผลลัพธ์ของโมเดล, weights และ tokenizer แล้ว คุณสามารถเรียกใช้คำสั่ง <code>push_to_hub()</code> ที่มีอยู่ในตัว <code>model</code> object ได้โดยตรง",Rl,Ue,Al,je,ss=`ขั้นตอนนี้จะสร้าง repository ใหม่ชื่อ <code>dummy-model</code> ในโปรไฟล์ของคุณ และเติมมันด้วยไฟล์โมเดลต่างๆของคุณ
ทำแบบเดียวกันนี้กับ tokenizer นั่นจะทำให้ไฟล์ทั้งหมดอยู่บน repository นี้:`,Yl,ve,Ql,ke,os="ถ้าคุณสังกัดองค์กร คุณสามารถระบุชื่อขององค์กรใน <code>organization</code> argument เพื่ออัพโหลดเข้าไปใน namespace ขององค์กร:",El,Je,Sl,Ze,ps="ถ้าคุณต้องการที่จะใช้งานโทเค็นของ Hugging Face โดยเฉพาะเจาะจง คุณสามารถระบุมันไปในคำสั่ง <code>push_to_hub()</code> ได้เช่นกัน:",Fl,Ce,Pl,Ge,rs='ในตอนนี้ให้คุณมุ่งหน้าไปที่ Model Hub เพื่อหาโมเดลที่คุณเพิ่งได้อัพโหลดไป: <em><a href="https://huggingface.co/%E0%B8%8A%E0%B8%B7%E0%B9%88%E0%B8%AD-user-%E0%B8%AB%E0%B8%A3%E0%B8%B7%E0%B8%AD-organization/dummy-model" rel="nofollow">https://huggingface.co/ชื่อ-user-หรือ-organization/dummy-model</a></em>',ql,We,ms="คลิกไปที่แท็บ “Files and versions” และคุณควรจะเห็นไฟล์แบบในภาพข้างล่างนี้:",Dl,$l,le,Kl,Be,as='อย่างที่คุณได้เห็น คำสั่ง <code>push_to_hub()</code> สามารถรับ arguments ได้มากมาย ทำให้สามารถอัพไฟล์ไปยัง repository หรือ namespace ขององค์กรแบบเจาะจง หรือใช้งานโทเค็น API ที่ต่างกันได้ เราแนะนำให้คุณลองเปิดดูรายละเอียดของคำสั่งนี้ได้โดยตรงที่ <a href="https://huggingface.co/transformers/model_sharing.html" rel="nofollow">🤗 Transformers documentation</a> เพื่อจะได้เข้าใจมากขึ้นว่าคำสั่งนี้สามารถทำอะไรได้บ้าง',Ol,xe,fs='คำสั่ง <code>push_to_hub()</code> ได้รับการหนุนหลังโดย <a href="https://github.com/huggingface/huggingface_hub" rel="nofollow"><code>huggingface_hub</code></a> Python package ซึ่งให้ API โดยตรงไปสู่ Hugging Face Hub มันถูกบูรณาการเข้ากับ 🤗 Transformers และ machine learning libraries อื่นๆอีกหลายอันด้วย เช่น <a href="https://github.com/allenai/allennlp" rel="nofollow"><code>allenlp</code></a> แม้ว่าเราเจาะจงแค่การบูรณาการกับ 🤗 Transformers ในบทนี้ แต่การบูรณาการกับการใช้โค้ดของคุณเองหรือ library อื่นนั้นเรียบง่ายมาก',en,He,us="ข้ามไปส่วนสุดท้ายเพื่อดูวิธีการอัพโหลดไฟล์ขึ้นไปบน repository ที่คุณสร้างขึ้นมาใหม่!",tn,Ie,ln,Le,cs=`<code>huggingface_hub</code> Python library คือ package หนึ่งที่บรรจุชุดเครื่องมือสำหรับ hub ของโมเดลและชุดข้อมูล มันมีคำสั่งและคลาสที่เรียบง่ายไว้สำหรับงานทั่วไปอย่าง
การดึงข้อมูลเกี่ยวกับ repositories บน hub และการจัดการมัน มันมี API ง่ายๆที่สามารถทำงานบน git เพื่อที่จะจัดการเนื้อหาของ repositories เหล่านั้นและบูรณาการเข้ากับ Hub
ในงานโปรเจคและ libraries ของคุณ`,nn,Ne,Ms="คล้ายคลึงกับการใช้ <code>push_to_hub</code> API คุณจำเป็นจะต้องมีโทเค็น API เก็บไว้ใน cache ของคุณ เพื่อที่จะมีมันได้ คุณจะต้องใช้คำสั่ง <code>login</code> จาก CLI อย่างที่เราเคยกล่าวถึงไปแล้วในส่วนก่อนหน้านี้ (ย้ำอีกครั้ง ทำให้มั่นใจว่าคุณใส่เครื่องหมาย <code>!</code> ไว้ข้างหน้าคำสั่งถ้าคุณกำลังรันใน Google Colab):",sn,Ve,on,Xe,ds="<code>huggingface_hub</code> package บรรจุคำสั่งและคลาสซึ่งเป็นประโยชน์สำหรับจุดประสงค์ของเราเอาไว้หลายอย่าง อย่างแรก มีคำสั่งจำนวนหนึ่งที่ใช้จัดการกับการสร้าง, การลบ และการจัดการอื่นๆของ repository",pn,ze,rn,Re,bs="มากไปกว่านั้น มันยังมี <code>Repository</code> class ที่ทรงพลังมากๆไว้จัดการกับ local repository เราจะมาสำรวจคำสั่งเหล่านี้และคลาสนั้นกันในอีกส่วนไม่ไกลข้างหน้า เพื่อที่จะได้เข้าใจวิธีการนำมันมาใช้",mn,Ae,ys="คำสั่ง <code>create_repo</code> สามารถใช้ในการสร้าง repository ใหม่บน hub ได้",an,Ye,fn,Qe,_s="โค้ดนี้จะสร้าง repository ชื่อ <code>dummy-model</code> ใน namespace ของคุณ ถ้าคนชอบ คุณสามารถระบุอย่างเจาะจงไปได้ว่า repository นี้เป็นขององค์กรไหน โดยการใช้ <code>organization</code> argument:",un,Ee,cn,Se,gs=`โค้ดนี้จะสร้าง repository ชื่อ <code>dummy-model</code> ใน namespace ของ <code>huggingface</code>  สมมุติว่าคุณเป็นคนขององค์กรนั้น
Arguments อื่นที่อาจจะเป็นประโยชน์:`,Mn,Fe,$s="<li><code>private</code> ใช้ในการระบุว่าคนอื่นควรเห็น repository นี้ได้หรือไม่</li> <li><code>token</code> ใช้ในกรณีที่คุณอยากจะแทนที่โทเค็นที่ถูกเก็บเอาไว้ใน cache ของคุณด้วยอีกโทเค็นที่ให้ไว้</li> <li><code>repo_type</code> ใช้ในกรณีที่คุณอยากจะสร้าง <code>dataset</code> หรือ <code>space</code> แทนที่จะเป็นโมเดล ค่าที่รับได้คือ <code>&quot;dataset&quot;</code> และ <code>&quot;space&quot;</code></li>",dn,Pe,hs="เมื่อ repository ถูกสร้างขึ้นมาแล้ว เราสามารถเพิ่มไฟล์ไปในนั้นได้! ข้ามไปส่วนถัดไปเพื่อดูสามวิธีในการทำสิ่งนี้",bn,qe,yn,De,ws="web interface บรรจุเครื่องมือมากมายที่ใช้จัดการ repositories โดยตรงใน Hub ด้วยการใช้งาน web interface คุณสามารถสร้าง repositories, เพิ่มไฟล์ (รวมถึงไฟล์ขนาดใหญ่ด้วย!), สำรวจโมเดลต่างๆ, แสดงผลความแตกต่าง และอื่นๆอีกมากมายได้อย่างง่ายดาย",_n,Ke,Ts='สร้าง repository ใหม่ได้โดยการไปที่ <a href="https://huggingface.co/new" rel="nofollow">huggingface.co/new</a>:',gn,ne,Us='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/new_model.png" alt="Page showcasing the model used for the creation of a new model repository." width="80%"/>',$n,Oe,js="ขั้นแรก ระบุเจ้าของของ repository ซึ่งสามารถเป็นคุณเองหรือองค์กรใดๆที่คุณเกี่ยวข้องด้วย ถ้าคุณเลือกองค์กร โมเดลจะถูกนำไปขึ้นบนหน้าขององค์กรด้วย และสมาชิกทุกคนขององค์กรนั้นจะมีสิทธิ์ในการมีส่วนร่วมกับ repository นี้",hn,et,vs="ถัดไป ใส่ชื่อโมเดลของคุณ ซึ่งจะเหมือนกับชื่อของ repository ก็ได้ และสุดท้าย คุณสามารถระบุได้ว่าคุณต้องการให้โมเดลของคุณเป็นสาธารณะหรือส่วนบุคคล โมเดลส่วนบุคคลนั้นจะถูกซ่อนจากมุมมองสาธารณะ",wn,tt,ks="หลังจากที่คุณสร้าง model repository ของคุณแล้ว คุณควรจะเห็นหน้าแบบนี้:",Tn,ie,Js='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/empty_model.png" alt="An empty model page after creating a new repository." width="80%"/>',Un,lt,Zs="นี่คือที่ที่โมเดลของคุณจะถูก host เอาไว้ สำหรับการเริ่มปรับแต่งเพิ่มเติมนั้น คุณสามารถเพิ่มไฟล์ README ได้โดยตรงจาก web interface",jn,se,Cs='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/dummy_model.png" alt="The README file showing the Markdown capabilities." width="80%"/>',vn,nt,Gs="ไฟล์ README อยู่ในรูปแบบของ Markdown — สามารถปรับแต่งมันแบบจัดเต็มได้เลย! ในส่วนที่สามของบทนี้ถูกอุทิศให้กับการสร้างการ์ดโมเดล (model card) ซึ่งนี่เป็นส่วนที่สำคัญเป็นอันดับหนึ่งในการสร้างคุณค่าให้โมเดลของคุณ เพราะว่ามันจะเป็นสิ่งที่ใช้บอกคนอื่นว่าโมเดลของคุณทำอะไรได้บ้าง",kn,it,Ws="ถ้าคุณดูที่แท็บ “Files and versions” คุณจะเห็นว่ามันยังไม่มีไฟล์อะไรมากมายเลย — แค่ไฟล์ <em>README.md</em> ที่คุณเพิ่งได้สร้างและไฟล์ <em>.gitattributes</em> สำหรับไว้ติดตามไฟล์ขนาดใหญ่",Jn,oe,Bs='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/files.png" alt="The &#39;Files and versions&#39; tab only shows the .gitattributes and README.md files." width="80%"/>',Zn,st,xs="ต่อไปเราจะมาดูวิธีการเพิ่มไฟล์ใหม่กัน",Cn,ot,Gn,pt,Hs='ระบบที่ใช้จัดการไฟล์บน Hugging Face Hub มีพื้นฐานมาจาก git สำหรับไฟล์ทั่วไป และ git-lfs (ย่อมาจาก <a href="https://git-lfs.github.com/" rel="nofollow">Git Large File Storage</a>) สำหรับไฟล์ที่ใหญ่ขึ้น',Wn,rt,Is="ในส่วนถัดไปนี้ เราจะพามาดูสามวิธีในการอัพโหลดไฟล์ต่างๆไปบน Hub: ผ่าน <code>huggingface_hub</code> และ ผ่านคำสั่ง git ต่างๆ",Bn,mt,xn,at,Ls=`การใช้ <code>upload_file</code> ไม่จำเป็นต้องมี git และ git-lfs ติดตั้งอยู่บนระบบของคุณ มันดันไฟล์โดยตรงไปสู่ 🤗 Hub โดยใช้ HTTP POST requests ข้อจำกัดของแนวทางนี้คือมันไม่สามารถรองรับไฟล์ที่มีขนาดมากกว่า 5GB ได้
ถ้าไฟล์ของคุณมีขนาดใหญ่กว่า 5GB โปรดทำตามอีกสองขั้นตอนที่ระบุรายละเอียดไว้ด้านล่าง`,Hn,ft,Ns="API สามารถถูกใช้แบบนี้ได้:",In,ut,Ln,ct,Vs=`โค้ดนี้จะทำการอัพโหลดไฟล์ <code>config.json</code> ที่อยู่ใน <code>&lt;path_to_file&gt;</code> ไปสู่รากของ repository โดยใช้ชื่อ <code>config.json</code> ไปสู่ <code>dummy-model</code> repository
Arguments อื่นที่อาจจะเป็นประโยชน์:`,Nn,Mt,Xs="<li><code>token</code> ใช้ในกรณีที่คุณอยากจะแทนที่โทเค็นที่ถูกเก็บเอาไว้ใน cache ของคุณด้วยอีกโทเค็นที่ให้ไว้</li> <li><code>repo_type</code> ใช้ในกรณีที่คุณอยากจะสร้าง <code>dataset</code> หรือ <code>space</code> แทนที่จะเป็นโมเดล ค่าที่รับได้คือ <code>&quot;dataset&quot;</code> และ <code>&quot;space&quot;</code></li>",Vn,dt,Xn,bt,zs="คลาส <code>Repository</code> จัดการ local repository ในลักษณะคล้าย git มันเอาปัญหาส่วนมากที่ผู้คนมักเจอเวลาใช้ git ออกเพื่อจัดสรรทุกฟีเจอร์ทุกอย่างที่เราจำเป็นต้องใช้",zn,yt,Rs='การใช้คลาสนี้จำเป็นต้องติดตั้ง git และ git-lfs ดังนั้นคุณควรทำให้มั่นใจว่าคุณได้ติดตั้ง git-lfs แล้ว (ดู <a href="https://git-lfs.github.com/" rel="nofollow">ที่นี่</a> สำหรับขั้นตอนการติดตั้ง) และตั้งค่าให้เสร็จก่อนที่คุณจะเริ่มไปต่อ',Rn,_t,As="เพื่อที่จะเริ่มเล่นกับ repository ที่เราเพิ่งจะได้สร้างกัน เราสามารถเริ่มตั้งต้นมันไปใน local folder ได้โดยการโคลน (clone) remote repository:",An,gt,Yn,$t,Ys="โค้ดนี้จะสร้างโฟลเดอร์ <code>&lt;path_to_dummy_folder&gt;</code> ในไดเรกทอรีที่คุณทำงานอยู่ (working directory) โฟลเดอร์นี้เก็บไฟล์ <code>.gitattributes</code> เอาไว้เพียงไฟล์เดียวเพราะว่ามันเป็นไฟล์เดียวที่จะถูกสร้างเมื่อมีการสร้าง repository ตั้งต้นด้วยคำสั่ง <code>create_repo</code>",Qn,ht,Qs="จากจุดนี้เป็นต้นไป เราสามารถใช้คำสั่ง git แบบดั่งเดิมต่างๆได้:",En,wt,Sn,Tt,Es='และอื่นๆอีก! เราแนะนำให้ลองไปดูที่หนังสืออ้างอิง (documentation) ของ <code>Repository</code> ซึ่งเข้าถึงได้จาก <a href="https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management" rel="nofollow">ที่นี่</a> สำหรับภาพรวมของคำสั่งทั้งหมดที่ใช้ได้',Fn,Ut,Ss="ณ ปัจจุบัน เรามีโมเดลและ tokenizer ซึ่งเราต้องการที่จะดันขึ้นสู่ hub แล้ว เราได้โคลน repository มาอย่างเสร็จสมบูรณ์ ดังนั้นเราสามารถเก็บไฟล์ต่างๆไว้ใน repository นั้นได้แล้ว",Pn,jt,Fs="อันดับแรกเราต้องทำให้มั่นใจว่า local clone ของเรานั้นเป็นปัจจุบัน ซึ่งทำได้โดยการดึง (pull) การเปลี่ยนแปลงใหม่ล่าสุดเข้ามา:",qn,vt,Dn,kt,Ps="เมื่อโค้ดทำงานเสร็จแล้ว เราเก็บไฟล์โมเดลและ tokenizer:",Kn,Jt,On,Zt,qs="ที่ <code>&lt;path_to_dummy_folder&gt;</code> ตอนนี้มีไฟล์โมเดลและ tokenizer ทั้งหมดแล้ว เราจะทำตาม workflow ของ git ทั่วไปโดยการ เพิ่มไฟล์ไปยัง staging area, ทำการ commit และดัน (push) ไฟล์เหล่านั้นสู่ hub:",ei,Ct,ti,Gt,Ds="ขอแสดงความยินดีด้วย! คุณเพิ่งได้ทำการดันไฟล์ชุดแรกของคุณสู่ hub",li,Wt,ni,Bt,Ks="แนวทางนี้เป็นแนวทางที่ตรงๆมากสำหรับทำการอัพโหลดไฟล์ นั่นคือเราจะใช้ git และ git-lfs โดยตรง ส่วนที่ยากส่วนใหญ่ถูกในออกไปในแนวทางก่อนๆ แต่มันมีข้อแม้บางอย่างกับขั้นตอนแต่ไปนี้ ดังนั้นเราจะทำตามการใช้งานแบบที่ซับซ้อนขึ้นกว่าปกติ",ii,xt,Os='การใช้งานต่อจากนี้จำเป็นต้องติดตั้ง git และ git-lfs ดังนั้นคุณควรทำให้มั่นใจว่าคุณได้ติดตั้ง git-lfs แล้ว (ดู <a href="https://git-lfs.github.com/" rel="nofollow">ที่นี่</a> สำหรับขั้นตอนการติดตั้ง) และตั้งค่าให้เสร็จก่อนที่คุณจะเริ่มไปต่อ',si,Ht,eo="เริ่มแรกโดยการเริ่มต้นสร้าง git-lfs:",oi,It,pi,Lt,ri,Nt,to="เมื่อโค้ดทำงานเสร็จแล้ว ขั้นตอนแรกคือการโคลน model repository ของคุณ:",mi,Vt,ai,Xt,lo="username ของฉันคือ <code>lysandre</code> และฉันใช้ <code>dummy</code> เป็นชื่อโมเดล ดังนั้นสำหรับฉันแล้ว คำสั่งจะมีหน้าตาประมาณแบบนี้:",fi,zt,ui,Rt,no="ตอนนี้ฉันมีโฟลเดอร์ชื่อ <em>dummy</em> ในไดเรกทอรีที่ฉันทำงานอยู่ (working directory) ฉันสามารถ <code>cd</code> เข้าไปในโฟลเดอร์และดูว่ามีอะไรข้างในบ้าง:",ci,At,Mi,Yt,di,Qt,io="ถ้าคุณสร้าง repository ด้วยการใช้คำสั่ง <code>create_repo</code> ของ Hugging Face Hub โฟลเดอร์นี้ควรจะมีไฟล์ <code>.gitattributes</code> ถูกซ่อนอยู่ด้วย ถ้าคุณทำตามขั้นตอนในส่วนก่อนหน้านี้ในการสร้าง repository โดยใช้ web interface ในโฟลเดอร์นี้ควรจะมี <em>README.md</em> หนึ่งไฟล์มาพร้อมกับไฟล์ <code>.gitattributes</code> ที่ถูกซ่อนอยู่ อย่างที่แสดงให้เห็นนี้",bi,Et,so="การเพิ่มไฟล์หนึ่งไฟล์ที่มีขนาดปกติ เช่น ไฟล์สำหรับกำหนดค่า (configuration file), ไฟล์สำหรับเก็บคำศัพท์ (vocabulary file) หรือโดยง่ายๆแล้วไฟล์อะไรก็ตามที่มีขนาดน้อยกว่าสองสาม megabytes สามารถทำได้ด้วยการทำแบบที่ทำปกติกับระบบที่พึ่งพา git อย่างไรก็ตามไฟล์ที่ใหญ่กว่านั้นจะต้องถูกลงทะเบียนผ่าน git-lfs เพื่อที่จะดันไฟล์เหล่านั้นขึ้นสู่ <em>huggingface.co</em> ได้",yi,St,oo="กลับไปหา Python กันสักหน่อยเพื่อจะสร้างโมเดลและ tokenizer ที่เราต้องการจะ commit ไปสู่ repository จำลองของเรา",_i,R,A,hl,Ft,po="ถึงตอนนี้เราได้ทำการบันทึกไฟล์จากโมเดลและ tokenizer บางส่วนแล้ว ลองไปดูโฟลเดอร์ <em>dummy</em> อีกรอบกันเถอะ:",gi,Pt,$i,Y,Q,wl,pe,hi,qt,ro="ต่อไปเราจะทำต่อโดยการทำแบบที่เราทำกับ Git repositories ดั้งเดิม เราสามารถเพิ่มไฟล์ทั้งหมดไปยัง staging environment ของ Git ได้ด้วยการใช้คำสั่ง <code>git add</code>:",wi,Dt,Ti,Kt,mo="เราสามารถดูได้ว่าไฟล์ที่อยู่ในสถานะ staged มีอะไรบ้าง:",Ui,Ot,ji,E,S,Tl,el,ao="ในแบบเดียวกัน เราสามารถทำให้มั่นใจได้ว่า git-lfs กำลังติดตามไฟล์ที่ถูกต้องอยู่ ได้โดยการใช้คำสั่ง status:",vi,tl,ki,F,P,Ul,ll,fo="มาทำขั้นตอนสุดท้ายต่อกันเถอะ ทำการ commit และดัน (push) ขึ้นสู่ <em>huggingface.co</em> remote repository:",Ji,nl,Zi,q,D,jl,il,uo="การดันไฟล์นั้นอาจจะใช้เวลาสักหน่อย ขึ้นอยู่กับความเร็วของการเชื่อมต่ออินเทอร์เน็ตและขนาดไฟล์ของคุณ:",Ci,sl,Gi,ol,Wi,vl,pl,Bi,kl,xi;T=new Do({props:{fw:h[0]}}),w=new Po({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),v=new re({props:{title:"การแบ่งปันโมเดลที่ผ่านการเทรนมาแล้ว (pretrained models)",local:"การแบงปนโมเดลทผานการเทรนมาแลว-pretrained-models",headingTag:"h1"}});const co=[Oo,Ko],rl=[];function Mo(e,t){return e[0]==="pt"?0:1}Z=Mo(h),b=rl[Z]=co[Z](h),x=new Ei({props:{id:"9yY3RB_GSPM"}}),ce=new re({props:{title:"ใช้ push_to_hub API",local:"ใช-pushtohub-api",headingTag:"h2"}});const bo=[tp,ep],ml=[];function yo(e,t){return e[0]==="pt"?0:1}I=yo(h),L=ml[I]=bo[I](h),be=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),_e=new U({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}});const _o=[np,lp],al=[];function go(e,t){return e[0]==="pt"?0:1}N=go(h),V=al[N]=_o[N](h);const $o=[sp,ip],fl=[];function ho(e,t){return e[0]==="pt"?0:1}X=ho(h),z=fl[X]=$o[X](h),Ue=new U({props:{code:"bW9kZWwucHVzaF90b19odWIoJTIyZHVtbXktbW9kZWwlMjIp",highlighted:'model.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),ve=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),Je=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIp",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>)',wrap:!1}}),Ce=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIlMkMlMjB1c2VfYXV0aF90b2tlbiUzRCUyMiUzQ1RPS0VOJTNFJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>, use_auth_token=<span class="hljs-string">&quot;&lt;TOKEN&gt;&quot;</span>)',wrap:!1}});function wo(e,t){return e[0]==="pt"?pp:op}let Hi=wo(h),K=Hi(h);le=new No({props:{$$slots:{default:[rp]},$$scope:{ctx:h}}}),Ie=new re({props:{title:"ใช้ huggingface_hub Python library",local:"ใช-huggingfacehub-python-library",headingTag:"h2"}}),Ve=new U({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}}),ze=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMCglMEElMjAlMjAlMjAlMjAlMjMlMjBVc2VyJTIwbWFuYWdlbWVudCUwQSUyMCUyMCUyMCUyMGxvZ2luJTJDJTBBJTIwJTIwJTIwJTIwbG9nb3V0JTJDJTBBJTIwJTIwJTIwJTIwd2hvYW1pJTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwUmVwb3NpdG9yeSUyMGNyZWF0aW9uJTIwYW5kJTIwbWFuYWdlbWVudCUwQSUyMCUyMCUyMCUyMGNyZWF0ZV9yZXBvJTJDJTBBJTIwJTIwJTIwJTIwZGVsZXRlX3JlcG8lMkMlMEElMjAlMjAlMjAlMjB1cGRhdGVfcmVwb192aXNpYmlsaXR5JTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwQW5kJTIwc29tZSUyMG1ldGhvZHMlMjB0byUyMHJldHJpZXZlJTJGY2hhbmdlJTIwaW5mb3JtYXRpb24lMjBhYm91dCUyMHRoZSUyMGNvbnRlbnQlMEElMjAlMjAlMjAlMjBsaXN0X21vZGVscyUyQyUwQSUyMCUyMCUyMCUyMGxpc3RfZGF0YXNldHMlMkMlMEElMjAlMjAlMjAlMjBsaXN0X21ldHJpY3MlMkMlMEElMjAlMjAlMjAlMjBsaXN0X3JlcG9fZmlsZXMlMkMlMEElMjAlMjAlMjAlMjB1cGxvYWRfZmlsZSUyQyUwQSUyMCUyMCUyMCUyMGRlbGV0ZV9maWxlJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> (
    <span class="hljs-comment"># User management</span>
    login,
    logout,
    whoami,

    <span class="hljs-comment"># Repository creation and management</span>
    create_repo,
    delete_repo,
    update_repo_visibility,

    <span class="hljs-comment"># And some methods to retrieve/change information about the content</span>
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`,wrap:!1}}),Ye=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGNyZWF0ZV9yZXBvJTBBJTBBY3JlYXRlX3JlcG8oJTIyZHVtbXktbW9kZWwlMjIp",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> create_repo

create_repo(<span class="hljs-string">&quot;dummy-model&quot;</span>)`,wrap:!1}}),Ee=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGNyZWF0ZV9yZXBvJTBBJTBBY3JlYXRlX3JlcG8oJTIyZHVtbXktbW9kZWwlMjIlMkMlMjBvcmdhbml6YXRpb24lM0QlMjJodWdnaW5nZmFjZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> create_repo

create_repo(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>)`,wrap:!1}}),qe=new re({props:{title:"ใช้ web interface",local:"ใช-web-interface",headingTag:"h2"}}),ot=new re({props:{title:"การอัพโหลดไฟล์โมเดลต่างๆ",local:"การอพโหลดไฟลโมเดลตางๆ",headingTag:"h2"}}),mt=new re({props:{title:"แนวทางแบบใช้ upload_file",local:"แนวทางแบบใช-uploadfile",headingTag:"h3"}}),ut=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMHVwbG9hZF9maWxlJTBBJTBBdXBsb2FkX2ZpbGUoJTBBJTIwJTIwJTIwJTIwJTIyJTNDcGF0aF90b19maWxlJTNFJTJGY29uZmlnLmpzb24lMjIlMkMlMEElMjAlMjAlMjAlMjBwYXRoX2luX3JlcG8lM0QlMjJjb25maWcuanNvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMHJlcG9faWQlM0QlMjIlM0NuYW1lc3BhY2UlM0UlMkZkdW1teS1tb2RlbCUyMiUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> upload_file

upload_file(
    <span class="hljs-string">&quot;&lt;path_to_file&gt;/config.json&quot;</span>,
    path_in_repo=<span class="hljs-string">&quot;config.json&quot;</span>,
    repo_id=<span class="hljs-string">&quot;&lt;namespace&gt;/dummy-model&quot;</span>,
)`,wrap:!1}}),dt=new re({props:{title:"คลาส Repository",local:"คลาส-repository",headingTag:"h3"}}),gt=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMFJlcG9zaXRvcnklMEElMEFyZXBvJTIwJTNEJTIwUmVwb3NpdG9yeSglMjIlM0NwYXRoX3RvX2R1bW15X2ZvbGRlciUzRSUyMiUyQyUyMGNsb25lX2Zyb20lM0QlMjIlM0NuYW1lc3BhY2UlM0UlMkZkdW1teS1tb2RlbCUyMik=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> Repository

repo = Repository(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>, clone_from=<span class="hljs-string">&quot;&lt;namespace&gt;/dummy-model&quot;</span>)`,wrap:!1}}),wt=new U({props:{code:"cmVwby5naXRfcHVsbCgpJTBBcmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoKSUwQXJlcG8uZ2l0X3B1c2goKSUwQXJlcG8uZ2l0X3RhZygp",highlighted:`repo.git_pull()
repo.git_add()
repo.git_commit()
repo.git_push()
repo.git_tag()`,wrap:!1}}),vt=new U({props:{code:"cmVwby5naXRfcHVsbCgp",highlighted:"repo.git_pull()",wrap:!1}}),Jt=new U({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKSUwQXRva2VuaXplci5zYXZlX3ByZXRyYWluZWQoJTIyJTNDcGF0aF90b19kdW1teV9mb2xkZXIlM0UlMjIp",highlighted:`model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),Ct=new U({props:{code:"cmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoJTIyQWRkJTIwbW9kZWwlMjBhbmQlMjB0b2tlbml6ZXIlMjBmaWxlcyUyMiklMEFyZXBvLmdpdF9wdXNoKCk=",highlighted:`repo.git_add()
repo.git_commit(<span class="hljs-string">&quot;Add model and tokenizer files&quot;</span>)
repo.git_push()`,wrap:!1}}),Wt=new re({props:{title:"แนวทางแบบใช้ git",local:"แนวทางแบบใช-git",headingTag:"h3"}}),It=new U({props:{code:"Z2l0JTIwbGZzJTIwaW5zdGFsbA==",highlighted:"git lfs install",wrap:!1}}),Lt=new U({props:{code:"VXBkYXRlZCUyMGdpdCUyMGhvb2tzLiUwQUdpdCUyMExGUyUyMGluaXRpYWxpemVkLg==",highlighted:`Updated git hooks.
Git LFS initialized.`,wrap:!1}}),Vt=new U({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGJTNDbmFtZXNwYWNlJTNFJTJGJTNDeW91ci1tb2RlbC1pZCUzRQ==",highlighted:'git <span class="hljs-built_in">clone</span> https://huggingface.co/&lt;namespace&gt;/&lt;your-model-id&gt;',wrap:!1}}),zt=new U({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGbHlzYW5kcmUlMkZkdW1teQ==",highlighted:'git clone https:<span class="hljs-regexp">//</span>huggingface.co<span class="hljs-regexp">/lysandre/</span>dummy',wrap:!1}}),At=new U({props:{code:"Y2QlMjBkdW1teSUyMCUyNiUyNiUyMGxz",highlighted:'<span class="hljs-built_in">cd</span> dummy &amp;&amp; <span class="hljs-built_in">ls</span>',wrap:!1}}),Yt=new U({props:{code:"UkVBRE1FLm1k",highlighted:"README.md",wrap:!1}});const To=[ap,mp],ul=[];function Uo(e,t){return e[0]==="pt"?0:1}R=Uo(h),A=ul[R]=To[R](h),Pt=new U({props:{code:"bHM=",highlighted:'<span class="hljs-built_in">ls</span>',wrap:!1}});const jo=[up,fp],cl=[];function vo(e,t){return e[0]==="pt"?0:1}Y=vo(h),Q=cl[Y]=jo[Y](h),pe=new No({props:{$$slots:{default:[cp]},$$scope:{ctx:h}}}),Dt=new U({props:{code:"Z2l0JTIwYWRkJTIwLg==",highlighted:"git add .",wrap:!1}}),Ot=new U({props:{code:"Z2l0JTIwc3RhdHVz",highlighted:"git status",wrap:!1}});const ko=[dp,Mp],Ml=[];function Jo(e,t){return e[0]==="pt"?0:1}E=Jo(h),S=Ml[E]=ko[E](h),tl=new U({props:{code:"Z2l0JTIwbGZzJTIwc3RhdHVz",highlighted:"git lfs status",wrap:!1}});const Zo=[yp,bp],dl=[];function Co(e,t){return e[0]==="pt"?0:1}F=Co(h),P=dl[F]=Zo[F](h),nl=new U({props:{code:"Z2l0JTIwY29tbWl0JTIwLW0lMjAlMjJGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUyMg==",highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>',wrap:!1}});const Go=[gp,_p],bl=[];function Wo(e,t){return e[0]==="pt"?0:1}q=Wo(h),D=bl[q]=Go[q](h),sl=new U({props:{code:"Z2l0JTIwcHVzaA==",highlighted:"git push",wrap:!1}}),ol=new U({props:{code:"VXBsb2FkaW5nJTIwTEZTJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCgxJTJGMSklMkMlMjA0MzMlMjBNQiUyMCU3QyUyMDEuMyUyME1CJTJGcyUyQyUyMGRvbmUuJTBBRW51bWVyYXRpbmclMjBvYmplY3RzJTNBJTIwMTElMkMlMjBkb25lLiUwQUNvdW50aW5nJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCgxMSUyRjExKSUyQyUyMGRvbmUuJTBBRGVsdGElMjBjb21wcmVzc2lvbiUyMHVzaW5nJTIwdXAlMjB0byUyMDEyJTIwdGhyZWFkcyUwQUNvbXByZXNzaW5nJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCg5JTJGOSklMkMlMjBkb25lLiUwQVdyaXRpbmclMjBvYmplY3RzJTNBJTIwMTAwJTI1JTIwKDklMkY5KSUyQyUyMDI4OC4yNyUyMEtpQiUyMCU3QyUyMDYuMjclMjBNaUIlMkZzJTJDJTIwZG9uZS4lMEFUb3RhbCUyMDklMjAoZGVsdGElMjAxKSUyQyUyMHJldXNlZCUyMDAlMjAoZGVsdGElMjAwKSUyQyUyMHBhY2stcmV1c2VkJTIwMCUwQVRvJTIwaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmx5c2FuZHJlJTJGZHVtbXklMEElMjAlMjAlMjA4OTFiNDFkLi5iMDhhYWIxJTIwJTIwbWFpbiUyMC0lM0UlMjBtYWlu",highlighted:`Uploading LFS objects: 100% (1/1), 433 MB | 1.3 MB/s, <span class="hljs-keyword">done</span>.
Enumerating objects: 11, <span class="hljs-keyword">done</span>.
Counting objects: 100% (11/11), <span class="hljs-keyword">done</span>.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), <span class="hljs-keyword">done</span>.
Writing objects: 100% (9/9), 288.27 KiB | 6.27 MiB/s, <span class="hljs-keyword">done</span>.
Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
To https://huggingface.co/lysandre/dummy
   891b41d..b08aab1  main -&gt; main`,wrap:!1}});function Bo(e,t){return e[0]==="pt"?hp:$p}let Ii=Bo(h),O=Ii(h);return pl=new qo({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter4/3.mdx"}}),{c(){i=m("meta"),r=o(),s=m("p"),c=o(),y(T.$$.fragment),u=o(),y(w.$$.fragment),C=o(),y(v.$$.fragment),J=o(),b.c(),k=o(),B=m("p"),B.textContent=H,me=o(),y(x.$$.fragment),j=o(),G=m("p"),G.textContent=Si,Jl=o(),ae=m("p"),ae.textContent=Fi,Zl=o(),fe=m("ul"),fe.innerHTML=Pi,Cl=o(),ue=m("p"),ue.textContent=qi,Gl=o(),y(ce.$$.fragment),Wl=o(),L.c(),yl=o(),Me=m("p"),Me.innerHTML=Di,Bl=o(),de=m("p"),de.innerHTML=Ki,xl=o(),y(be.$$.fragment),Hl=o(),ye=m("p"),ye.textContent=Oi,Il=o(),y(_e.$$.fragment),Ll=o(),ge=m("p"),ge.innerHTML=es,Nl=o(),$e=m("p"),$e.textContent=ts,Vl=o(),V.c(),_l=o(),he=m("p"),he.innerHTML=ls,Xl=o(),we=m("p"),we.textContent=ns,zl=o(),z.c(),gl=o(),Te=m("p"),Te.innerHTML=is,Rl=o(),y(Ue.$$.fragment),Al=o(),je=m("p"),je.innerHTML=ss,Yl=o(),y(ve.$$.fragment),Ql=o(),ke=m("p"),ke.innerHTML=os,El=o(),y(Je.$$.fragment),Sl=o(),Ze=m("p"),Ze.innerHTML=ps,Fl=o(),y(Ce.$$.fragment),Pl=o(),Ge=m("p"),Ge.innerHTML=rs,ql=o(),We=m("p"),We.textContent=ms,Dl=o(),K.c(),$l=o(),y(le.$$.fragment),Kl=o(),Be=m("p"),Be.innerHTML=as,Ol=o(),xe=m("p"),xe.innerHTML=fs,en=o(),He=m("p"),He.textContent=us,tn=o(),y(Ie.$$.fragment),ln=o(),Le=m("p"),Le.innerHTML=cs,nn=o(),Ne=m("p"),Ne.innerHTML=Ms,sn=o(),y(Ve.$$.fragment),on=o(),Xe=m("p"),Xe.innerHTML=ds,pn=o(),y(ze.$$.fragment),rn=o(),Re=m("p"),Re.innerHTML=bs,mn=o(),Ae=m("p"),Ae.innerHTML=ys,an=o(),y(Ye.$$.fragment),fn=o(),Qe=m("p"),Qe.innerHTML=_s,un=o(),y(Ee.$$.fragment),cn=o(),Se=m("p"),Se.innerHTML=gs,Mn=o(),Fe=m("ul"),Fe.innerHTML=$s,dn=o(),Pe=m("p"),Pe.textContent=hs,bn=o(),y(qe.$$.fragment),yn=o(),De=m("p"),De.textContent=ws,_n=o(),Ke=m("p"),Ke.innerHTML=Ts,gn=o(),ne=m("div"),ne.innerHTML=Us,$n=o(),Oe=m("p"),Oe.textContent=js,hn=o(),et=m("p"),et.textContent=vs,wn=o(),tt=m("p"),tt.textContent=ks,Tn=o(),ie=m("div"),ie.innerHTML=Js,Un=o(),lt=m("p"),lt.textContent=Zs,jn=o(),se=m("div"),se.innerHTML=Cs,vn=o(),nt=m("p"),nt.textContent=Gs,kn=o(),it=m("p"),it.innerHTML=Ws,Jn=o(),oe=m("div"),oe.innerHTML=Bs,Zn=o(),st=m("p"),st.textContent=xs,Cn=o(),y(ot.$$.fragment),Gn=o(),pt=m("p"),pt.innerHTML=Hs,Wn=o(),rt=m("p"),rt.innerHTML=Is,Bn=o(),y(mt.$$.fragment),xn=o(),at=m("p"),at.innerHTML=Ls,Hn=o(),ft=m("p"),ft.textContent=Ns,In=o(),y(ut.$$.fragment),Ln=o(),ct=m("p"),ct.innerHTML=Vs,Nn=o(),Mt=m("ul"),Mt.innerHTML=Xs,Vn=o(),y(dt.$$.fragment),Xn=o(),bt=m("p"),bt.innerHTML=zs,zn=o(),yt=m("p"),yt.innerHTML=Rs,Rn=o(),_t=m("p"),_t.textContent=As,An=o(),y(gt.$$.fragment),Yn=o(),$t=m("p"),$t.innerHTML=Ys,Qn=o(),ht=m("p"),ht.textContent=Qs,En=o(),y(wt.$$.fragment),Sn=o(),Tt=m("p"),Tt.innerHTML=Es,Fn=o(),Ut=m("p"),Ut.textContent=Ss,Pn=o(),jt=m("p"),jt.textContent=Fs,qn=o(),y(vt.$$.fragment),Dn=o(),kt=m("p"),kt.textContent=Ps,Kn=o(),y(Jt.$$.fragment),On=o(),Zt=m("p"),Zt.innerHTML=qs,ei=o(),y(Ct.$$.fragment),ti=o(),Gt=m("p"),Gt.textContent=Ds,li=o(),y(Wt.$$.fragment),ni=o(),Bt=m("p"),Bt.textContent=Ks,ii=o(),xt=m("p"),xt.innerHTML=Os,si=o(),Ht=m("p"),Ht.textContent=eo,oi=o(),y(It.$$.fragment),pi=o(),y(Lt.$$.fragment),ri=o(),Nt=m("p"),Nt.textContent=to,mi=o(),y(Vt.$$.fragment),ai=o(),Xt=m("p"),Xt.innerHTML=lo,fi=o(),y(zt.$$.fragment),ui=o(),Rt=m("p"),Rt.innerHTML=no,ci=o(),y(At.$$.fragment),Mi=o(),y(Yt.$$.fragment),di=o(),Qt=m("p"),Qt.innerHTML=io,bi=o(),Et=m("p"),Et.innerHTML=so,yi=o(),St=m("p"),St.textContent=oo,_i=o(),A.c(),hl=o(),Ft=m("p"),Ft.innerHTML=po,gi=o(),y(Pt.$$.fragment),$i=o(),Q.c(),wl=o(),y(pe.$$.fragment),hi=o(),qt=m("p"),qt.innerHTML=ro,wi=o(),y(Dt.$$.fragment),Ti=o(),Kt=m("p"),Kt.textContent=mo,Ui=o(),y(Ot.$$.fragment),ji=o(),S.c(),Tl=o(),el=m("p"),el.textContent=ao,vi=o(),y(tl.$$.fragment),ki=o(),P.c(),Ul=o(),ll=m("p"),ll.innerHTML=fo,Ji=o(),y(nl.$$.fragment),Zi=o(),D.c(),jl=o(),il=m("p"),il.textContent=uo,Ci=o(),y(sl.$$.fragment),Gi=o(),y(ol.$$.fragment),Wi=o(),O.c(),vl=o(),y(pl.$$.fragment),Bi=o(),kl=m("p"),this.h()},l(e){const t=Qo("svelte-u9bgzb",document.head);i=a(t,"META",{name:!0,content:!0}),t.forEach(l),r=p(e),s=a(e,"P",{}),Lo(s).forEach(l),c=p(e),_(T.$$.fragment,e),u=p(e),_(w.$$.fragment,e),C=p(e),_(v.$$.fragment,e),J=p(e),b.l(e),k=p(e),B=a(e,"P",{"data-svelte-h":!0}),f(B)!=="svelte-q4l2bw"&&(B.textContent=H),me=p(e),_(x.$$.fragment,e),j=p(e),G=a(e,"P",{"data-svelte-h":!0}),f(G)!=="svelte-1ghkmqt"&&(G.textContent=Si),Jl=p(e),ae=a(e,"P",{"data-svelte-h":!0}),f(ae)!=="svelte-srkmsj"&&(ae.textContent=Fi),Zl=p(e),fe=a(e,"UL",{"data-svelte-h":!0}),f(fe)!=="svelte-15rocxx"&&(fe.innerHTML=Pi),Cl=p(e),ue=a(e,"P",{"data-svelte-h":!0}),f(ue)!=="svelte-1bjp40d"&&(ue.textContent=qi),Gl=p(e),_(ce.$$.fragment,e),Wl=p(e),L.l(e),yl=p(e),Me=a(e,"P",{"data-svelte-h":!0}),f(Me)!=="svelte-1gv70fn"&&(Me.innerHTML=Di),Bl=p(e),de=a(e,"P",{"data-svelte-h":!0}),f(de)!=="svelte-1v7xpvh"&&(de.innerHTML=Ki),xl=p(e),_(be.$$.fragment,e),Hl=p(e),ye=a(e,"P",{"data-svelte-h":!0}),f(ye)!=="svelte-1ie86o4"&&(ye.textContent=Oi),Il=p(e),_(_e.$$.fragment,e),Ll=p(e),ge=a(e,"P",{"data-svelte-h":!0}),f(ge)!=="svelte-gbvhw2"&&(ge.innerHTML=es),Nl=p(e),$e=a(e,"P",{"data-svelte-h":!0}),f($e)!=="svelte-ueggq2"&&($e.textContent=ts),Vl=p(e),V.l(e),_l=p(e),he=a(e,"P",{"data-svelte-h":!0}),f(he)!=="svelte-11viki4"&&(he.innerHTML=ls),Xl=p(e),we=a(e,"P",{"data-svelte-h":!0}),f(we)!=="svelte-8nf739"&&(we.textContent=ns),zl=p(e),z.l(e),gl=p(e),Te=a(e,"P",{"data-svelte-h":!0}),f(Te)!=="svelte-4pakls"&&(Te.innerHTML=is),Rl=p(e),_(Ue.$$.fragment,e),Al=p(e),je=a(e,"P",{"data-svelte-h":!0}),f(je)!=="svelte-1huaa7d"&&(je.innerHTML=ss),Yl=p(e),_(ve.$$.fragment,e),Ql=p(e),ke=a(e,"P",{"data-svelte-h":!0}),f(ke)!=="svelte-3f1hmi"&&(ke.innerHTML=os),El=p(e),_(Je.$$.fragment,e),Sl=p(e),Ze=a(e,"P",{"data-svelte-h":!0}),f(Ze)!=="svelte-jcytt"&&(Ze.innerHTML=ps),Fl=p(e),_(Ce.$$.fragment,e),Pl=p(e),Ge=a(e,"P",{"data-svelte-h":!0}),f(Ge)!=="svelte-woivds"&&(Ge.innerHTML=rs),ql=p(e),We=a(e,"P",{"data-svelte-h":!0}),f(We)!=="svelte-uojcqu"&&(We.textContent=ms),Dl=p(e),K.l(e),$l=p(e),_(le.$$.fragment,e),Kl=p(e),Be=a(e,"P",{"data-svelte-h":!0}),f(Be)!=="svelte-p11xk9"&&(Be.innerHTML=as),Ol=p(e),xe=a(e,"P",{"data-svelte-h":!0}),f(xe)!=="svelte-10gh4tt"&&(xe.innerHTML=fs),en=p(e),He=a(e,"P",{"data-svelte-h":!0}),f(He)!=="svelte-148ettj"&&(He.textContent=us),tn=p(e),_(Ie.$$.fragment,e),ln=p(e),Le=a(e,"P",{"data-svelte-h":!0}),f(Le)!=="svelte-1ck62zn"&&(Le.innerHTML=cs),nn=p(e),Ne=a(e,"P",{"data-svelte-h":!0}),f(Ne)!=="svelte-g98md6"&&(Ne.innerHTML=Ms),sn=p(e),_(Ve.$$.fragment,e),on=p(e),Xe=a(e,"P",{"data-svelte-h":!0}),f(Xe)!=="svelte-1d2i9jw"&&(Xe.innerHTML=ds),pn=p(e),_(ze.$$.fragment,e),rn=p(e),Re=a(e,"P",{"data-svelte-h":!0}),f(Re)!=="svelte-7dd6iy"&&(Re.innerHTML=bs),mn=p(e),Ae=a(e,"P",{"data-svelte-h":!0}),f(Ae)!=="svelte-10xk9n6"&&(Ae.innerHTML=ys),an=p(e),_(Ye.$$.fragment,e),fn=p(e),Qe=a(e,"P",{"data-svelte-h":!0}),f(Qe)!=="svelte-u5z3to"&&(Qe.innerHTML=_s),un=p(e),_(Ee.$$.fragment,e),cn=p(e),Se=a(e,"P",{"data-svelte-h":!0}),f(Se)!=="svelte-n1dghd"&&(Se.innerHTML=gs),Mn=p(e),Fe=a(e,"UL",{"data-svelte-h":!0}),f(Fe)!=="svelte-3g7ul4"&&(Fe.innerHTML=$s),dn=p(e),Pe=a(e,"P",{"data-svelte-h":!0}),f(Pe)!=="svelte-ywvx05"&&(Pe.textContent=hs),bn=p(e),_(qe.$$.fragment,e),yn=p(e),De=a(e,"P",{"data-svelte-h":!0}),f(De)!=="svelte-1uzvd84"&&(De.textContent=ws),_n=p(e),Ke=a(e,"P",{"data-svelte-h":!0}),f(Ke)!=="svelte-4ex5u"&&(Ke.innerHTML=Ts),gn=p(e),ne=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(ne)!=="svelte-4qsgxt"&&(ne.innerHTML=Us),$n=p(e),Oe=a(e,"P",{"data-svelte-h":!0}),f(Oe)!=="svelte-1xwu1yh"&&(Oe.textContent=js),hn=p(e),et=a(e,"P",{"data-svelte-h":!0}),f(et)!=="svelte-111h1qv"&&(et.textContent=vs),wn=p(e),tt=a(e,"P",{"data-svelte-h":!0}),f(tt)!=="svelte-17lkx6e"&&(tt.textContent=ks),Tn=p(e),ie=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(ie)!=="svelte-1xh6nig"&&(ie.innerHTML=Js),Un=p(e),lt=a(e,"P",{"data-svelte-h":!0}),f(lt)!=="svelte-1rfxu5j"&&(lt.textContent=Zs),jn=p(e),se=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(se)!=="svelte-1jm8l0p"&&(se.innerHTML=Cs),vn=p(e),nt=a(e,"P",{"data-svelte-h":!0}),f(nt)!=="svelte-15stfpn"&&(nt.textContent=Gs),kn=p(e),it=a(e,"P",{"data-svelte-h":!0}),f(it)!=="svelte-117s3lp"&&(it.innerHTML=Ws),Jn=p(e),oe=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(oe)!=="svelte-1kuf5jc"&&(oe.innerHTML=Bs),Zn=p(e),st=a(e,"P",{"data-svelte-h":!0}),f(st)!=="svelte-v7tka5"&&(st.textContent=xs),Cn=p(e),_(ot.$$.fragment,e),Gn=p(e),pt=a(e,"P",{"data-svelte-h":!0}),f(pt)!=="svelte-18wxjag"&&(pt.innerHTML=Hs),Wn=p(e),rt=a(e,"P",{"data-svelte-h":!0}),f(rt)!=="svelte-snihi"&&(rt.innerHTML=Is),Bn=p(e),_(mt.$$.fragment,e),xn=p(e),at=a(e,"P",{"data-svelte-h":!0}),f(at)!=="svelte-11nx6k8"&&(at.innerHTML=Ls),Hn=p(e),ft=a(e,"P",{"data-svelte-h":!0}),f(ft)!=="svelte-rjusj"&&(ft.textContent=Ns),In=p(e),_(ut.$$.fragment,e),Ln=p(e),ct=a(e,"P",{"data-svelte-h":!0}),f(ct)!=="svelte-1na2tzz"&&(ct.innerHTML=Vs),Nn=p(e),Mt=a(e,"UL",{"data-svelte-h":!0}),f(Mt)!=="svelte-j0jwp7"&&(Mt.innerHTML=Xs),Vn=p(e),_(dt.$$.fragment,e),Xn=p(e),bt=a(e,"P",{"data-svelte-h":!0}),f(bt)!=="svelte-v3i98v"&&(bt.innerHTML=zs),zn=p(e),yt=a(e,"P",{"data-svelte-h":!0}),f(yt)!=="svelte-1xiw8xn"&&(yt.innerHTML=Rs),Rn=p(e),_t=a(e,"P",{"data-svelte-h":!0}),f(_t)!=="svelte-aa6xdx"&&(_t.textContent=As),An=p(e),_(gt.$$.fragment,e),Yn=p(e),$t=a(e,"P",{"data-svelte-h":!0}),f($t)!=="svelte-kvrbfp"&&($t.innerHTML=Ys),Qn=p(e),ht=a(e,"P",{"data-svelte-h":!0}),f(ht)!=="svelte-ji2296"&&(ht.textContent=Qs),En=p(e),_(wt.$$.fragment,e),Sn=p(e),Tt=a(e,"P",{"data-svelte-h":!0}),f(Tt)!=="svelte-icveem"&&(Tt.innerHTML=Es),Fn=p(e),Ut=a(e,"P",{"data-svelte-h":!0}),f(Ut)!=="svelte-13fpry9"&&(Ut.textContent=Ss),Pn=p(e),jt=a(e,"P",{"data-svelte-h":!0}),f(jt)!=="svelte-14d584i"&&(jt.textContent=Fs),qn=p(e),_(vt.$$.fragment,e),Dn=p(e),kt=a(e,"P",{"data-svelte-h":!0}),f(kt)!=="svelte-zyb9su"&&(kt.textContent=Ps),Kn=p(e),_(Jt.$$.fragment,e),On=p(e),Zt=a(e,"P",{"data-svelte-h":!0}),f(Zt)!=="svelte-iam5ee"&&(Zt.innerHTML=qs),ei=p(e),_(Ct.$$.fragment,e),ti=p(e),Gt=a(e,"P",{"data-svelte-h":!0}),f(Gt)!=="svelte-lmrpnf"&&(Gt.textContent=Ds),li=p(e),_(Wt.$$.fragment,e),ni=p(e),Bt=a(e,"P",{"data-svelte-h":!0}),f(Bt)!=="svelte-1yicavc"&&(Bt.textContent=Ks),ii=p(e),xt=a(e,"P",{"data-svelte-h":!0}),f(xt)!=="svelte-18i5017"&&(xt.innerHTML=Os),si=p(e),Ht=a(e,"P",{"data-svelte-h":!0}),f(Ht)!=="svelte-xzb0ej"&&(Ht.textContent=eo),oi=p(e),_(It.$$.fragment,e),pi=p(e),_(Lt.$$.fragment,e),ri=p(e),Nt=a(e,"P",{"data-svelte-h":!0}),f(Nt)!=="svelte-g38fkp"&&(Nt.textContent=to),mi=p(e),_(Vt.$$.fragment,e),ai=p(e),Xt=a(e,"P",{"data-svelte-h":!0}),f(Xt)!=="svelte-17djtfn"&&(Xt.innerHTML=lo),fi=p(e),_(zt.$$.fragment,e),ui=p(e),Rt=a(e,"P",{"data-svelte-h":!0}),f(Rt)!=="svelte-1dbqziv"&&(Rt.innerHTML=no),ci=p(e),_(At.$$.fragment,e),Mi=p(e),_(Yt.$$.fragment,e),di=p(e),Qt=a(e,"P",{"data-svelte-h":!0}),f(Qt)!=="svelte-zlspfv"&&(Qt.innerHTML=io),bi=p(e),Et=a(e,"P",{"data-svelte-h":!0}),f(Et)!=="svelte-5ryrtz"&&(Et.innerHTML=so),yi=p(e),St=a(e,"P",{"data-svelte-h":!0}),f(St)!=="svelte-1k1j974"&&(St.textContent=oo),_i=p(e),A.l(e),hl=p(e),Ft=a(e,"P",{"data-svelte-h":!0}),f(Ft)!=="svelte-1qkg12p"&&(Ft.innerHTML=po),gi=p(e),_(Pt.$$.fragment,e),$i=p(e),Q.l(e),wl=p(e),_(pe.$$.fragment,e),hi=p(e),qt=a(e,"P",{"data-svelte-h":!0}),f(qt)!=="svelte-1jnekpr"&&(qt.innerHTML=ro),wi=p(e),_(Dt.$$.fragment,e),Ti=p(e),Kt=a(e,"P",{"data-svelte-h":!0}),f(Kt)!=="svelte-clti1z"&&(Kt.textContent=mo),Ui=p(e),_(Ot.$$.fragment,e),ji=p(e),S.l(e),Tl=p(e),el=a(e,"P",{"data-svelte-h":!0}),f(el)!=="svelte-g6oj6q"&&(el.textContent=ao),vi=p(e),_(tl.$$.fragment,e),ki=p(e),P.l(e),Ul=p(e),ll=a(e,"P",{"data-svelte-h":!0}),f(ll)!=="svelte-1dmkq8n"&&(ll.innerHTML=fo),Ji=p(e),_(nl.$$.fragment,e),Zi=p(e),D.l(e),jl=p(e),il=a(e,"P",{"data-svelte-h":!0}),f(il)!=="svelte-1l0w2ea"&&(il.textContent=uo),Ci=p(e),_(sl.$$.fragment,e),Gi=p(e),_(ol.$$.fragment,e),Wi=p(e),O.l(e),vl=p(e),_(pl.$$.fragment,e),Bi=p(e),kl=a(e,"P",{}),Lo(kl).forEach(l),this.h()},h(){W(i,"name","hf:doc:metadata"),W(i,"content",Tp),W(ne,"class","flex justify-center"),W(ie,"class","flex justify-center"),W(se,"class","flex justify-center"),W(oe,"class","flex justify-center")},m(e,t){Eo(document.head,i),n(e,r,t),n(e,s,t),n(e,c,t),g(T,e,t),n(e,u,t),g(w,e,t),n(e,C,t),g(v,e,t),n(e,J,t),rl[Z].m(e,t),n(e,k,t),n(e,B,t),n(e,me,t),g(x,e,t),n(e,j,t),n(e,G,t),n(e,Jl,t),n(e,ae,t),n(e,Zl,t),n(e,fe,t),n(e,Cl,t),n(e,ue,t),n(e,Gl,t),g(ce,e,t),n(e,Wl,t),ml[I].m(e,t),n(e,yl,t),n(e,Me,t),n(e,Bl,t),n(e,de,t),n(e,xl,t),g(be,e,t),n(e,Hl,t),n(e,ye,t),n(e,Il,t),g(_e,e,t),n(e,Ll,t),n(e,ge,t),n(e,Nl,t),n(e,$e,t),n(e,Vl,t),al[N].m(e,t),n(e,_l,t),n(e,he,t),n(e,Xl,t),n(e,we,t),n(e,zl,t),fl[X].m(e,t),n(e,gl,t),n(e,Te,t),n(e,Rl,t),g(Ue,e,t),n(e,Al,t),n(e,je,t),n(e,Yl,t),g(ve,e,t),n(e,Ql,t),n(e,ke,t),n(e,El,t),g(Je,e,t),n(e,Sl,t),n(e,Ze,t),n(e,Fl,t),g(Ce,e,t),n(e,Pl,t),n(e,Ge,t),n(e,ql,t),n(e,We,t),n(e,Dl,t),K.m(e,t),n(e,$l,t),g(le,e,t),n(e,Kl,t),n(e,Be,t),n(e,Ol,t),n(e,xe,t),n(e,en,t),n(e,He,t),n(e,tn,t),g(Ie,e,t),n(e,ln,t),n(e,Le,t),n(e,nn,t),n(e,Ne,t),n(e,sn,t),g(Ve,e,t),n(e,on,t),n(e,Xe,t),n(e,pn,t),g(ze,e,t),n(e,rn,t),n(e,Re,t),n(e,mn,t),n(e,Ae,t),n(e,an,t),g(Ye,e,t),n(e,fn,t),n(e,Qe,t),n(e,un,t),g(Ee,e,t),n(e,cn,t),n(e,Se,t),n(e,Mn,t),n(e,Fe,t),n(e,dn,t),n(e,Pe,t),n(e,bn,t),g(qe,e,t),n(e,yn,t),n(e,De,t),n(e,_n,t),n(e,Ke,t),n(e,gn,t),n(e,ne,t),n(e,$n,t),n(e,Oe,t),n(e,hn,t),n(e,et,t),n(e,wn,t),n(e,tt,t),n(e,Tn,t),n(e,ie,t),n(e,Un,t),n(e,lt,t),n(e,jn,t),n(e,se,t),n(e,vn,t),n(e,nt,t),n(e,kn,t),n(e,it,t),n(e,Jn,t),n(e,oe,t),n(e,Zn,t),n(e,st,t),n(e,Cn,t),g(ot,e,t),n(e,Gn,t),n(e,pt,t),n(e,Wn,t),n(e,rt,t),n(e,Bn,t),g(mt,e,t),n(e,xn,t),n(e,at,t),n(e,Hn,t),n(e,ft,t),n(e,In,t),g(ut,e,t),n(e,Ln,t),n(e,ct,t),n(e,Nn,t),n(e,Mt,t),n(e,Vn,t),g(dt,e,t),n(e,Xn,t),n(e,bt,t),n(e,zn,t),n(e,yt,t),n(e,Rn,t),n(e,_t,t),n(e,An,t),g(gt,e,t),n(e,Yn,t),n(e,$t,t),n(e,Qn,t),n(e,ht,t),n(e,En,t),g(wt,e,t),n(e,Sn,t),n(e,Tt,t),n(e,Fn,t),n(e,Ut,t),n(e,Pn,t),n(e,jt,t),n(e,qn,t),g(vt,e,t),n(e,Dn,t),n(e,kt,t),n(e,Kn,t),g(Jt,e,t),n(e,On,t),n(e,Zt,t),n(e,ei,t),g(Ct,e,t),n(e,ti,t),n(e,Gt,t),n(e,li,t),g(Wt,e,t),n(e,ni,t),n(e,Bt,t),n(e,ii,t),n(e,xt,t),n(e,si,t),n(e,Ht,t),n(e,oi,t),g(It,e,t),n(e,pi,t),g(Lt,e,t),n(e,ri,t),n(e,Nt,t),n(e,mi,t),g(Vt,e,t),n(e,ai,t),n(e,Xt,t),n(e,fi,t),g(zt,e,t),n(e,ui,t),n(e,Rt,t),n(e,ci,t),g(At,e,t),n(e,Mi,t),g(Yt,e,t),n(e,di,t),n(e,Qt,t),n(e,bi,t),n(e,Et,t),n(e,yi,t),n(e,St,t),n(e,_i,t),ul[R].m(e,t),n(e,hl,t),n(e,Ft,t),n(e,gi,t),g(Pt,e,t),n(e,$i,t),cl[Y].m(e,t),n(e,wl,t),g(pe,e,t),n(e,hi,t),n(e,qt,t),n(e,wi,t),g(Dt,e,t),n(e,Ti,t),n(e,Kt,t),n(e,Ui,t),g(Ot,e,t),n(e,ji,t),Ml[E].m(e,t),n(e,Tl,t),n(e,el,t),n(e,vi,t),g(tl,e,t),n(e,ki,t),dl[F].m(e,t),n(e,Ul,t),n(e,ll,t),n(e,Ji,t),g(nl,e,t),n(e,Zi,t),bl[q].m(e,t),n(e,jl,t),n(e,il,t),n(e,Ci,t),g(sl,e,t),n(e,Gi,t),g(ol,e,t),n(e,Wi,t),O.m(e,t),n(e,vl,t),g(pl,e,t),n(e,Bi,t),n(e,kl,t),xi=!0},p(e,[t]){const xo={};t&1&&(xo.fw=e[0]),T.$set(xo);let Li=Z;Z=Mo(e),Z!==Li&&(te(),M(rl[Li],1,1,()=>{rl[Li]=null}),ee(),b=rl[Z],b||(b=rl[Z]=co[Z](e),b.c()),d(b,1),b.m(k.parentNode,k));let Ni=I;I=yo(e),I!==Ni&&(te(),M(ml[Ni],1,1,()=>{ml[Ni]=null}),ee(),L=ml[I],L||(L=ml[I]=bo[I](e),L.c()),d(L,1),L.m(yl.parentNode,yl));let Vi=N;N=go(e),N!==Vi&&(te(),M(al[Vi],1,1,()=>{al[Vi]=null}),ee(),V=al[N],V||(V=al[N]=_o[N](e),V.c()),d(V,1),V.m(_l.parentNode,_l));let Xi=X;X=ho(e),X!==Xi&&(te(),M(fl[Xi],1,1,()=>{fl[Xi]=null}),ee(),z=fl[X],z||(z=fl[X]=$o[X](e),z.c()),d(z,1),z.m(gl.parentNode,gl)),Hi!==(Hi=wo(e))&&(K.d(1),K=Hi(e),K&&(K.c(),K.m($l.parentNode,$l)));const Ho={};t&2&&(Ho.$$scope={dirty:t,ctx:e}),le.$set(Ho);let zi=R;R=Uo(e),R!==zi&&(te(),M(ul[zi],1,1,()=>{ul[zi]=null}),ee(),A=ul[R],A||(A=ul[R]=To[R](e),A.c()),d(A,1),A.m(hl.parentNode,hl));let Ri=Y;Y=vo(e),Y!==Ri&&(te(),M(cl[Ri],1,1,()=>{cl[Ri]=null}),ee(),Q=cl[Y],Q||(Q=cl[Y]=jo[Y](e),Q.c()),d(Q,1),Q.m(wl.parentNode,wl));const Io={};t&2&&(Io.$$scope={dirty:t,ctx:e}),pe.$set(Io);let Ai=E;E=Jo(e),E!==Ai&&(te(),M(Ml[Ai],1,1,()=>{Ml[Ai]=null}),ee(),S=Ml[E],S||(S=Ml[E]=ko[E](e),S.c()),d(S,1),S.m(Tl.parentNode,Tl));let Yi=F;F=Co(e),F!==Yi&&(te(),M(dl[Yi],1,1,()=>{dl[Yi]=null}),ee(),P=dl[F],P||(P=dl[F]=Zo[F](e),P.c()),d(P,1),P.m(Ul.parentNode,Ul));let Qi=q;q=Wo(e),q!==Qi&&(te(),M(bl[Qi],1,1,()=>{bl[Qi]=null}),ee(),D=bl[q],D||(D=bl[q]=Go[q](e),D.c()),d(D,1),D.m(jl.parentNode,jl)),Ii!==(Ii=Bo(e))&&(O.d(1),O=Ii(e),O&&(O.c(),O.m(vl.parentNode,vl)))},i(e){xi||(d(T.$$.fragment,e),d(w.$$.fragment,e),d(v.$$.fragment,e),d(b),d(x.$$.fragment,e),d(ce.$$.fragment,e),d(L),d(be.$$.fragment,e),d(_e.$$.fragment,e),d(V),d(z),d(Ue.$$.fragment,e),d(ve.$$.fragment,e),d(Je.$$.fragment,e),d(Ce.$$.fragment,e),d(le.$$.fragment,e),d(Ie.$$.fragment,e),d(Ve.$$.fragment,e),d(ze.$$.fragment,e),d(Ye.$$.fragment,e),d(Ee.$$.fragment,e),d(qe.$$.fragment,e),d(ot.$$.fragment,e),d(mt.$$.fragment,e),d(ut.$$.fragment,e),d(dt.$$.fragment,e),d(gt.$$.fragment,e),d(wt.$$.fragment,e),d(vt.$$.fragment,e),d(Jt.$$.fragment,e),d(Ct.$$.fragment,e),d(Wt.$$.fragment,e),d(It.$$.fragment,e),d(Lt.$$.fragment,e),d(Vt.$$.fragment,e),d(zt.$$.fragment,e),d(At.$$.fragment,e),d(Yt.$$.fragment,e),d(A),d(Pt.$$.fragment,e),d(Q),d(pe.$$.fragment,e),d(Dt.$$.fragment,e),d(Ot.$$.fragment,e),d(S),d(tl.$$.fragment,e),d(P),d(nl.$$.fragment,e),d(D),d(sl.$$.fragment,e),d(ol.$$.fragment,e),d(pl.$$.fragment,e),xi=!0)},o(e){M(T.$$.fragment,e),M(w.$$.fragment,e),M(v.$$.fragment,e),M(b),M(x.$$.fragment,e),M(ce.$$.fragment,e),M(L),M(be.$$.fragment,e),M(_e.$$.fragment,e),M(V),M(z),M(Ue.$$.fragment,e),M(ve.$$.fragment,e),M(Je.$$.fragment,e),M(Ce.$$.fragment,e),M(le.$$.fragment,e),M(Ie.$$.fragment,e),M(Ve.$$.fragment,e),M(ze.$$.fragment,e),M(Ye.$$.fragment,e),M(Ee.$$.fragment,e),M(qe.$$.fragment,e),M(ot.$$.fragment,e),M(mt.$$.fragment,e),M(ut.$$.fragment,e),M(dt.$$.fragment,e),M(gt.$$.fragment,e),M(wt.$$.fragment,e),M(vt.$$.fragment,e),M(Jt.$$.fragment,e),M(Ct.$$.fragment,e),M(Wt.$$.fragment,e),M(It.$$.fragment,e),M(Lt.$$.fragment,e),M(Vt.$$.fragment,e),M(zt.$$.fragment,e),M(At.$$.fragment,e),M(Yt.$$.fragment,e),M(A),M(Pt.$$.fragment,e),M(Q),M(pe.$$.fragment,e),M(Dt.$$.fragment,e),M(Ot.$$.fragment,e),M(S),M(tl.$$.fragment,e),M(P),M(nl.$$.fragment,e),M(D),M(sl.$$.fragment,e),M(ol.$$.fragment,e),M(pl.$$.fragment,e),xi=!1},d(e){e&&(l(r),l(s),l(c),l(u),l(C),l(J),l(k),l(B),l(me),l(j),l(G),l(Jl),l(ae),l(Zl),l(fe),l(Cl),l(ue),l(Gl),l(Wl),l(yl),l(Me),l(Bl),l(de),l(xl),l(Hl),l(ye),l(Il),l(Ll),l(ge),l(Nl),l($e),l(Vl),l(_l),l(he),l(Xl),l(we),l(zl),l(gl),l(Te),l(Rl),l(Al),l(je),l(Yl),l(Ql),l(ke),l(El),l(Sl),l(Ze),l(Fl),l(Pl),l(Ge),l(ql),l(We),l(Dl),l($l),l(Kl),l(Be),l(Ol),l(xe),l(en),l(He),l(tn),l(ln),l(Le),l(nn),l(Ne),l(sn),l(on),l(Xe),l(pn),l(rn),l(Re),l(mn),l(Ae),l(an),l(fn),l(Qe),l(un),l(cn),l(Se),l(Mn),l(Fe),l(dn),l(Pe),l(bn),l(yn),l(De),l(_n),l(Ke),l(gn),l(ne),l($n),l(Oe),l(hn),l(et),l(wn),l(tt),l(Tn),l(ie),l(Un),l(lt),l(jn),l(se),l(vn),l(nt),l(kn),l(it),l(Jn),l(oe),l(Zn),l(st),l(Cn),l(Gn),l(pt),l(Wn),l(rt),l(Bn),l(xn),l(at),l(Hn),l(ft),l(In),l(Ln),l(ct),l(Nn),l(Mt),l(Vn),l(Xn),l(bt),l(zn),l(yt),l(Rn),l(_t),l(An),l(Yn),l($t),l(Qn),l(ht),l(En),l(Sn),l(Tt),l(Fn),l(Ut),l(Pn),l(jt),l(qn),l(Dn),l(kt),l(Kn),l(On),l(Zt),l(ei),l(ti),l(Gt),l(li),l(ni),l(Bt),l(ii),l(xt),l(si),l(Ht),l(oi),l(pi),l(ri),l(Nt),l(mi),l(ai),l(Xt),l(fi),l(ui),l(Rt),l(ci),l(Mi),l(di),l(Qt),l(bi),l(Et),l(yi),l(St),l(_i),l(hl),l(Ft),l(gi),l($i),l(wl),l(hi),l(qt),l(wi),l(Ti),l(Kt),l(Ui),l(ji),l(Tl),l(el),l(vi),l(ki),l(Ul),l(ll),l(Ji),l(Zi),l(jl),l(il),l(Ci),l(Gi),l(Wi),l(vl),l(Bi),l(kl)),l(i),$(T,e),$(w,e),$(v,e),rl[Z].d(e),$(x,e),$(ce,e),ml[I].d(e),$(be,e),$(_e,e),al[N].d(e),fl[X].d(e),$(Ue,e),$(ve,e),$(Je,e),$(Ce,e),K.d(e),$(le,e),$(Ie,e),$(Ve,e),$(ze,e),$(Ye,e),$(Ee,e),$(qe,e),$(ot,e),$(mt,e),$(ut,e),$(dt,e),$(gt,e),$(wt,e),$(vt,e),$(Jt,e),$(Ct,e),$(Wt,e),$(It,e),$(Lt,e),$(Vt,e),$(zt,e),$(At,e),$(Yt,e),ul[R].d(e),$(Pt,e),cl[Y].d(e),$(pe,e),$(Dt,e),$(Ot,e),Ml[E].d(e),$(tl,e),dl[F].d(e),$(nl,e),bl[q].d(e),$(sl,e),$(ol,e),O.d(e),$(pl,e)}}}const Tp='{"title":"การแบ่งปันโมเดลที่ผ่านการเทรนมาแล้ว (pretrained models)","local":"การแบงปนโมเดลทผานการเทรนมาแลว-pretrained-models","sections":[{"title":"ใช้ push_to_hub API","local":"ใช-pushtohub-api","sections":[],"depth":2},{"title":"ใช้ huggingface_hub Python library","local":"ใช-huggingfacehub-python-library","sections":[],"depth":2},{"title":"ใช้ web interface","local":"ใช-web-interface","sections":[],"depth":2},{"title":"การอัพโหลดไฟล์โมเดลต่างๆ","local":"การอพโหลดไฟลโมเดลตางๆ","sections":[{"title":"แนวทางแบบใช้ upload_file","local":"แนวทางแบบใช-uploadfile","sections":[],"depth":3},{"title":"คลาส Repository","local":"คลาส-repository","sections":[],"depth":3},{"title":"แนวทางแบบใช้ git","local":"แนวทางแบบใช-git","sections":[],"depth":3}],"depth":2}],"depth":1}';function Up(h,i,r){let s="pt";return zo(()=>{const c=new URLSearchParams(window.location.search);r(0,s=c.get("fw")||"pt")}),[s]}class Bp extends Ao{constructor(i){super(),Yo(this,i,Up,wp,Xo,{})}}export{Bp as component};
