import{s as Lo,o as Vo,n as Xo}from"../chunks/scheduler.37c15a92.js";import{S as zo,i as Ro,g as m,s as o,r as y,A as Ao,h as a,f as l,c as p,j as Ho,u as _,x as f,k as B,y as Yo,a as n,v as g,t as M,b as ee,d,w as h,m as Qo,n as Eo,p as te}from"../chunks/index.2bf4358c.js";import{T as Io}from"../chunks/Tip.363c041f.js";import{Y as Qi}from"../chunks/Youtube.1e50a667.js";import{C as U}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as No}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{F as So}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as re,E as Fo}from"../chunks/EditOnGithub.8916dc7c.js";function Po(w){let i,r;return i=new No({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){h(i,s)}}}function qo(w){let i,r;return i=new No({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){h(i,s)}}}function Do(w){let i,r;return i=new Qi({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){h(i,s)}}}function Ko(w){let i,r;return i=new Qi({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){h(i,s)}}}function Oo(w){let i,r="ถ้าคุณใช้ Keras ในเทรนโมเดล วิธีที่ง่ายที่สุดที่จะอัพโหลดมันขึ้นสู่ Hub คือการผ่านค่าตัวแปร <code>PushToHubCallback</code> เข้าไป เมื่อคุณเรียกใช้ <code>model.fit()</code>:",s,c,T,u,$="ต่อจากนั้นคุณควรเพิ่ม <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,j,v="สำหรับการอัพโหลดโมเดลของคุณเข้าสู่องค์กรที่คุณเป็นสมาชิกนั้น คุณสามารถทำได้โดย เพียงแค่ผ่านตัวแปล <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=$,C=o(),j=m("p"),j.innerHTML=v},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=$),C=p(b),j=a(b,"P",{"data-svelte-h":!0}),f(j)!=="svelte-7jffnw"&&(j.innerHTML=v)},m(b,J){n(b,i,J),n(b,s,J),g(c,b,J),n(b,T,J),n(b,u,J),n(b,C,J),n(b,j,J),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(j)),h(c,b)}}}function ep(w){let i,r="ถ้าคุณเคยได้ลองใช้งาน <code>Trainer</code> API ในการเทรนโมเดลมาบ้างแล้ว วิธีที่ง่ายที่สุดที่จะอัพโหลดขึ้นไปสู่ Hub คือการตั้ง <code>push_to_hub=True</code> ตอนที่คุณกำหนด <code>TrainingArguments</code>:",s,c,T,u,$="เมื่อคุณเรียกใช้ <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,j,v="สำหรับการอัพโหลดโมเดลของคุณเข้าสู่องค์กรที่คุณเป็นสมาชิกนั้น คุณสามารถทำได้โดย เพียงแค่ผ่านตัวแปล <code>hub_model_id = &quot;องค์กร_ของคุณ/ชื่อ_repo_ของคุณ&quot;</code> เข้าไป",Z,b,J="เมื่อการเทรนของคุณเสร็จสิ้น คุณควรที่จะใช้ <code>trainer.push_to_hub()</code> อีกครั้งเป็นครั้งสุดท้าย เพื่ออัพโหลดโมเดลเวอร์ชั่นล่าสุดของคุณ มันจะสร้างการ์ดโมเดล (model card) ที่มีข้อมูลเมตา (metadata) ที่เกี่ยวข้อง เช่น รายงาน hyperparameters ที่ใช้ และผลลัพธ์ของการประเมินผล (evaluation result) ให้คุณด้วย! ต่อไปนี้เป็นตัวอย่างของเนื้อหาที่คุณเจอได้ในการ์ดโมเดล:",D,G,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=$,C=o(),j=m("p"),j.innerHTML=v,Z=o(),b=m("p"),b.innerHTML=J,D=o(),G=m("div"),G.innerHTML=me,this.h()},l(k){i=a(k,"P",{"data-svelte-h":!0}),f(i)!=="svelte-4q6ikf"&&(i.innerHTML=r),s=p(k),_(c.$$.fragment,k),T=p(k),u=a(k,"P",{"data-svelte-h":!0}),f(u)!=="svelte-zmx9r1"&&(u.innerHTML=$),C=p(k),j=a(k,"P",{"data-svelte-h":!0}),f(j)!=="svelte-7jffnw"&&(j.innerHTML=v),Z=p(k),b=a(k,"P",{"data-svelte-h":!0}),f(b)!=="svelte-1gfuffk"&&(b.innerHTML=J),D=p(k),G=a(k,"DIV",{class:!0,"data-svelte-h":!0}),f(G)!=="svelte-1lhrimn"&&(G.innerHTML=me),this.h()},h(){B(G,"class","flex justify-center")},m(k,W){n(k,i,W),n(k,s,W),g(c,k,W),n(k,T,W),n(k,u,W),n(k,C,W),n(k,j,W),n(k,Z,W),n(k,b,W),n(k,D,W),n(k,G,W),x=!0},i(k){x||(d(c.$$.fragment,k),x=!0)},o(k){M(c.$$.fragment,k),x=!1},d(k){k&&(l(i),l(s),l(T),l(u),l(C),l(j),l(Z),l(b),l(D),l(G)),h(c,k)}}}function tp(w){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){h(i,s)}}}function lp(w){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){h(i,s)}}}function np(w){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(){B(i,"class","flex justify-center")},m(s,c){n(s,i,c)},d(s){s&&l(i)}}}function ip(w){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(){B(i,"class","flex justify-center")},m(s,c){n(s,i,c)},d(s){s&&l(i)}}}function sp(w){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:Xo,d(s){s&&l(i)}}}function op(w){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){h(i,s)}}}function pp(w){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){h(i,s)}}}function rp(w){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,$){g(i,u,$),n(u,r,$),n(u,s,$),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)),h(i,u)}}}function mp(w){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,$){g(i,u,$),n(u,r,$),n(u,s,$),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)),h(i,u)}}}function ap(w){let i;return{c(){i=Qo("✏️ ตอนที่สร้าง repository จาก web interface ไฟล์ *.gitattributes* ถูกตั้งค่าอย่างอัตโนมัติเพื่อให้พิจารณาไฟล์บางประเภท เช่น *.bin* และ *.h5* ว่าเป็นไฟล์ขนาดใหญ่ และ git-lfs จะติดตามไฟล์เหล่านั้นโดยคุณไม่จำเป็นต้องตั้งค่าอะไรเลย")},l(r){i=Eo(r,"✏️ ตอนที่สร้าง repository จาก web interface ไฟล์ *.gitattributes* ถูกตั้งค่าอย่างอัตโนมัติเพื่อให้พิจารณาไฟล์บางประเภท เช่น *.bin* และ *.h5* ว่าเป็นไฟล์ขนาดใหญ่ และ git-lfs จะติดตามไฟล์เหล่านั้นโดยคุณไม่จำเป็นต้องตั้งค่าอะไรเลย")},m(r,s){n(r,i,s)},d(r){r&&l(i)}}}function fp(w){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){h(i,s)}}}function up(w){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){h(i,s)}}}function cp(w){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,$){g(i,u,$),n(u,r,$),n(u,s,$),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)),h(i,u)}}}function Mp(w){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,$){g(i,u,$),n(u,r,$),n(u,s,$),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)),h(i,u)}}}function dp(w){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){h(i,s)}}}function bp(w){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){h(i,s)}}}function yp(w){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,$,C="UI ช่วยให้คุณสามารถสำรวจไฟล์โมเดลและ commits และดูความแตกต่างของแต่ละ commit ได้:",j,v,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(),$=m("p"),$.textContent=C,j=o(),v=m("div"),v.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),$=a(b,"P",{"data-svelte-h":!0}),f($)!=="svelte-1hb0s3p"&&($.textContent=C),j=p(b),v=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(v)!=="svelte-2jd8bj"&&(v.innerHTML=Z),this.h()},h(){B(c,"class","flex justify-center"),B(v,"class","flex justify-center")},m(b,J){n(b,i,J),n(b,s,J),n(b,c,J),n(b,u,J),n(b,$,J),n(b,j,J),n(b,v,J)},d(b){b&&(l(i),l(s),l(c),l(u),l($),l(j),l(v))}}}function _p(w){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,$,C="UI ช่วยให้คุณสามารถสำรวจไฟล์โมเดลและ commits และดูความแตกต่างของแต่ละ commit ได้:",j,v,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(),$=m("p"),$.textContent=C,j=o(),v=m("div"),v.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),$=a(b,"P",{"data-svelte-h":!0}),f($)!=="svelte-1hb0s3p"&&($.textContent=C),j=p(b),v=a(b,"DIV",{class:!0,"data-svelte-h":!0}),f(v)!=="svelte-1g561m5"&&(v.innerHTML=Z),this.h()},h(){B(c,"class","flex justify-center"),B(v,"class","flex justify-center")},m(b,J){n(b,i,J),n(b,s,J),n(b,c,J),n(b,u,J),n(b,$,J),n(b,j,J),n(b,v,J)},d(b){b&&(l(i),l(s),l(c),l(u),l($),l(j),l(v))}}}function gp(w){let i,r,s,c,T,u,$,C,j,v,Z,b,J="ในขั้นตอนข้างล่างต่อไปนี้ เราจะมาดูวิธีที่ง่ายที่สุดในการแบ่งปันโมเดลที่ผ่านการเทรนมาแล้วบน 🤗 Hub มีเครื่องมือและสิ่งอำนวยความสะดวกมากมายที่ทำให้การแบ่งปันและอัพเดตโมเดลโดยตรงบน Hub เป็นเรื่องง่าย ซึ่งนั่นคือสิ่งที่เราจะมาสำรวจกันต่อจากนี้",D,G,me,x,k="เราส่งเสริมให้ผู้ใช้ทุกคนที่เทรนโมเดลช่วยมีส่วนร่วมโดยการแบ่งปันโมเดลเหล่านั้นให้กับชุมชน การแบ่งปันโมเดลนั้นสามารถช่วยเหลือผู้อื่นได้ ช่วยลดเวลาและทรัพยากรในการประมวลผล และช่วยให้เข้าถึงไฟล์ผลลัพธ์จากการเทรน (artifacts) ที่เป็นประโยชน์ได้ แม้ว่าจะเป็นโมเดลที่ถูกเทรนมากับชุดข้อมูลที่เฉพาะเจาะจงมากก็ตาม ในทางเดียวกันนั้นคุณก็ได้รับประโยชน์จากงานที่คนอื่นได้ทำเช่นกัน!",W,ae,Ei="มี 3 วิธีที่สามารถใช้สร้าง model repositories ใหม่ได้:",Jl,fe,Si="<li>ใช้ <code>push_to_hub</code> API</li> <li>ใช้ <code>huggingface_hub</code> Python library</li> <li>ใช้ web interface</li>",Zl,ue,Fi="เมื่อคุณได้สร้าง repository แล้ว คุณสามารถอัพโหลดไฟล์ต่างๆเข้าไปได้ผ่าน git และ git-lfs ในส่วนถัดไปเราจะพาคุณมาดูขั้นตอนการสร้าง model repositories และการอัพโหลดไฟล์ต่างๆเข้าไป",Cl,ce,Gl,H,I,yl,Me,Pi="วิธีที่ง่ายที่สุดในการอัพโหลดไฟล์ขึ้นไปสู่ Hub คือการใช้ <code>push_to_hub</code> API",Wl,de,qi='ก่อนจะไปกันต่อ คุณจะต้องสร้างโทเค็นสำหรับรับรองความน่าเชื่อถือ (authentication token) เพื่อให้ <code>huggingface_hub</code> API รู้ว่าคุณคือใครและคุณมีสิทธิ์ในการเขียน (write access) ใน namespaces อะไรบ้าง ในตอนนี้ให้คุณทำให้มั่นใจว่าคุณอยู่ใน environment ที่คุณได้ทำการติดตั้ง <code>transformers</code> เอาไว้แล้ว (ดู <a href="/course/chapter0">ติดตั้งโปรแกรม</a>) ถ้าคุณกำลังอยู่ใน notebook คุณสามารถใช้งานคำสั่งต่อไปนี้ในการเข้าสู่ระบบได้เลย:',Bl,be,xl,ye,Di="สำหรับใน terminal คนสามารถรัน:",Hl,_e,Il,ge,Ki='ในทั้งสองกรณี คุณควรจะถูกให้กรอก username และ password ซึ่งเป็นชุดเดียวกันกับที่คุณใช้ในการ login เข้าสู่ Hub ถ้าหากคุณยังไม่มีโปรไฟล์ Hub คุณสามารถสร้างได้ <a href="https://huggingface.co/join" rel="nofollow">ที่นี่</a>',Nl,he,Oi="เยี่ยม! ตอนนี้คุณมี authentication token เก็บเอาไว้ใน cache folder ของคุณแล้ว มาเริ่มสร้าง repositories กันเถอะ!",Ll,N,L,_l,we,es="ในระดับล่างลงไปนั้น การเข้าถึง Model Hub สามารถทำได้โดยตรงจาก objects ประเภท models, tokenizers และconfiguration ผ่านคำสั่ง <code>push_to_hub()</code> คำสั่งนี้จะจัดการทั้งการสร้าง repository และการดันไฟล์โมเดลและ tokenizer ขึ้นสู่ repository โดยตรง ไม่มีความจำเป็นที่จะต้องทำอะไรด้วยตนเองเลย ไม่เหมือนกับ API ที่เราจะได้เห็นข้างล่างนี้",Vl,$e,ts="เพื่อให้เห็นภาพมากขึ้นว่ามันทำงานอย่างไร เรามาเริ่มสร้างโมเดลและ tokenizer ตัวแรกกันเถอะ:",Xl,V,X,gl,Te,ls="ถึงจุดนี้คุณสามารถทำอะไรก็ได้กับมันตามที่คุณต้องการ ไม่ว่าจะเป็นการเพิ่ม tokens ไปใน tokenizer, การเทรนโมเดล, การ fine-tune โมเดล หลังจากที่คุณพอใจกับผลลัพธ์ของโมเดล, weights และ tokenizer แล้ว คุณสามารถเรียกใช้คำสั่ง <code>push_to_hub()</code> ที่มีอยู่ในตัว <code>model</code> object ได้โดยตรง",zl,Ue,Rl,je,ns=`ขั้นตอนนี้จะสร้าง repository ใหม่ชื่อ <code>dummy-model</code> ในโปรไฟล์ของคุณ และเติมมันด้วยไฟล์โมเดลต่างๆของคุณ
ทำแบบเดียวกันนี้กับ tokenizer นั่นจะทำให้ไฟล์ทั้งหมดอยู่บน repository นี้:`,Al,ve,Yl,ke,is="ถ้าคุณสังกัดองค์กร คุณสามารถระบุชื่อขององค์กรใน <code>organization</code> argument เพื่ออัพโหลดเข้าไปใน namespace ขององค์กร:",Ql,Je,El,Ze,ss="ถ้าคุณต้องการที่จะใช้งานโทเค็นของ Hugging Face โดยเฉพาะเจาะจง คุณสามารถระบุมันไปในคำสั่ง <code>push_to_hub()</code> ได้เช่นกัน:",Sl,Ce,Fl,Ge,os='ในตอนนี้ให้คุณมุ่งหน้าไปที่ 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>',Pl,We,ps="คลิกไปที่แท็บ “Files and versions” และคุณควรจะเห็นไฟล์แบบในภาพข้างล่างนี้:",ql,hl,le,Dl,Be,rs='อย่างที่คุณได้เห็น คำสั่ง <code>push_to_hub()</code> สามารถรับ arguments ได้มากมาย ทำให้สามารถอัพไฟล์ไปยัง repository หรือ namespace ขององค์กรแบบเจาะจง หรือใช้งานโทเค็น API ที่ต่างกันได้ เราแนะนำให้คุณลองเปิดดูรายละเอียดของคำสั่งนี้ได้โดยตรงที่ <a href="https://huggingface.co/transformers/model_sharing.html" rel="nofollow">🤗 Transformers documentation</a> เพื่อจะได้เข้าใจมากขึ้นว่าคำสั่งนี้สามารถทำอะไรได้บ้าง',Kl,xe,ms='คำสั่ง <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 อื่นนั้นเรียบง่ายมาก',Ol,He,as="ข้ามไปส่วนสุดท้ายเพื่อดูวิธีการอัพโหลดไฟล์ขึ้นไปบน repository ที่คุณสร้างขึ้นมาใหม่!",en,Ie,tn,Ne,fs=`<code>huggingface_hub</code> Python library คือ package หนึ่งที่บรรจุชุดเครื่องมือสำหรับ hub ของโมเดลและชุดข้อมูล มันมีคำสั่งและคลาสที่เรียบง่ายไว้สำหรับงานทั่วไปอย่าง
การดึงข้อมูลเกี่ยวกับ repositories บน hub และการจัดการมัน มันมี API ง่ายๆที่สามารถทำงานบน git เพื่อที่จะจัดการเนื้อหาของ repositories เหล่านั้นและบูรณาการเข้ากับ Hub
ในงานโปรเจคและ libraries ของคุณ`,ln,Le,us="คล้ายคลึงกับการใช้ <code>push_to_hub</code> API คุณจำเป็นจะต้องมีโทเค็น API เก็บไว้ใน cache ของคุณ เพื่อที่จะมีมันได้ คุณจะต้องใช้คำสั่ง <code>login</code> จาก CLI อย่างที่เราเคยกล่าวถึงไปแล้วในส่วนก่อนหน้านี้ (ย้ำอีกครั้ง ทำให้มั่นใจว่าคุณใส่เครื่องหมาย <code>!</code> ไว้ข้างหน้าคำสั่งถ้าคุณกำลังรันใน Google Colab):",nn,Ve,sn,Xe,cs="<code>huggingface_hub</code> package บรรจุคำสั่งและคลาสซึ่งเป็นประโยชน์สำหรับจุดประสงค์ของเราเอาไว้หลายอย่าง อย่างแรก มีคำสั่งจำนวนหนึ่งที่ใช้จัดการกับการสร้าง, การลบ และการจัดการอื่นๆของ repository",on,ze,pn,Re,Ms="มากไปกว่านั้น มันยังมี <code>Repository</code> class ที่ทรงพลังมากๆไว้จัดการกับ local repository เราจะมาสำรวจคำสั่งเหล่านี้และคลาสนั้นกันในอีกส่วนไม่ไกลข้างหน้า เพื่อที่จะได้เข้าใจวิธีการนำมันมาใช้",rn,Ae,ds="คำสั่ง <code>create_repo</code> สามารถใช้ในการสร้าง repository ใหม่บน hub ได้",mn,Ye,an,Qe,bs="โค้ดนี้จะสร้าง repository ชื่อ <code>dummy-model</code> ใน namespace ของคุณ ถ้าคนชอบ คุณสามารถระบุอย่างเจาะจงไปได้ว่า repository นี้เป็นขององค์กรไหน โดยการใช้ <code>organization</code> argument:",fn,Ee,un,Se,ys=`โค้ดนี้จะสร้าง repository ชื่อ <code>dummy-model</code> ใน namespace ของ <code>huggingface</code>  สมมุติว่าคุณเป็นคนขององค์กรนั้น
Arguments อื่นที่อาจจะเป็นประโยชน์:`,cn,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>",Mn,Pe,gs="เมื่อ repository ถูกสร้างขึ้นมาแล้ว เราสามารถเพิ่มไฟล์ไปในนั้นได้! ข้ามไปส่วนถัดไปเพื่อดูสามวิธีในการทำสิ่งนี้",dn,qe,bn,De,hs="web interface บรรจุเครื่องมือมากมายที่ใช้จัดการ repositories โดยตรงใน Hub ด้วยการใช้งาน web interface คุณสามารถสร้าง repositories, เพิ่มไฟล์ (รวมถึงไฟล์ขนาดใหญ่ด้วย!), สำรวจโมเดลต่างๆ, แสดงผลความแตกต่าง และอื่นๆอีกมากมายได้อย่างง่ายดาย",yn,Ke,ws='สร้าง repository ใหม่ได้โดยการไปที่ <a href="https://huggingface.co/new" rel="nofollow">huggingface.co/new</a>:',_n,ne,$s='<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%"/>',gn,Oe,Ts="ขั้นแรก ระบุเจ้าของของ repository ซึ่งสามารถเป็นคุณเองหรือองค์กรใดๆที่คุณเกี่ยวข้องด้วย ถ้าคุณเลือกองค์กร โมเดลจะถูกนำไปขึ้นบนหน้าขององค์กรด้วย และสมาชิกทุกคนขององค์กรนั้นจะมีสิทธิ์ในการมีส่วนร่วมกับ repository นี้",hn,et,Us="ถัดไป ใส่ชื่อโมเดลของคุณ ซึ่งจะเหมือนกับชื่อของ repository ก็ได้ และสุดท้าย คุณสามารถระบุได้ว่าคุณต้องการให้โมเดลของคุณเป็นสาธารณะหรือส่วนบุคคล โมเดลส่วนบุคคลนั้นจะถูกซ่อนจากมุมมองสาธารณะ",wn,tt,js="หลังจากที่คุณสร้าง model repository ของคุณแล้ว คุณควรจะเห็นหน้าแบบนี้:",$n,ie,vs='<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%"/>',Tn,lt,ks="นี่คือที่ที่โมเดลของคุณจะถูก host เอาไว้ สำหรับการเริ่มปรับแต่งเพิ่มเติมนั้น คุณสามารถเพิ่มไฟล์ README ได้โดยตรงจาก web interface",Un,se,Js='<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%"/>',jn,nt,Zs="ไฟล์ README อยู่ในรูปแบบของ Markdown — สามารถปรับแต่งมันแบบจัดเต็มได้เลย! ในส่วนที่สามของบทนี้ถูกอุทิศให้กับการสร้างการ์ดโมเดล (model card) ซึ่งนี่เป็นส่วนที่สำคัญเป็นอันดับหนึ่งในการสร้างคุณค่าให้โมเดลของคุณ เพราะว่ามันจะเป็นสิ่งที่ใช้บอกคนอื่นว่าโมเดลของคุณทำอะไรได้บ้าง",vn,it,Cs="ถ้าคุณดูที่แท็บ “Files and versions” คุณจะเห็นว่ามันยังไม่มีไฟล์อะไรมากมายเลย — แค่ไฟล์ <em>README.md</em> ที่คุณเพิ่งได้สร้างและไฟล์ <em>.gitattributes</em> สำหรับไว้ติดตามไฟล์ขนาดใหญ่",kn,oe,Gs='<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%"/>',Jn,st,Ws="ต่อไปเราจะมาดูวิธีการเพิ่มไฟล์ใหม่กัน",Zn,ot,Cn,pt,Bs='ระบบที่ใช้จัดการไฟล์บน Hugging Face Hub มีพื้นฐานมาจาก git สำหรับไฟล์ทั่วไป และ git-lfs (ย่อมาจาก <a href="https://git-lfs.github.com/" rel="nofollow">Git Large File Storage</a>) สำหรับไฟล์ที่ใหญ่ขึ้น',Gn,rt,xs="ในส่วนถัดไปนี้ เราจะพามาดูสามวิธีในการอัพโหลดไฟล์ต่างๆไปบน Hub: ผ่าน <code>huggingface_hub</code> และ ผ่านคำสั่ง git ต่างๆ",Wn,mt,Bn,at,Hs=`การใช้ <code>upload_file</code> ไม่จำเป็นต้องมี git และ git-lfs ติดตั้งอยู่บนระบบของคุณ มันดันไฟล์โดยตรงไปสู่ 🤗 Hub โดยใช้ HTTP POST requests ข้อจำกัดของแนวทางนี้คือมันไม่สามารถรองรับไฟล์ที่มีขนาดมากกว่า 5GB ได้
ถ้าไฟล์ของคุณมีขนาดใหญ่กว่า 5GB โปรดทำตามอีกสองขั้นตอนที่ระบุรายละเอียดไว้ด้านล่าง`,xn,ft,Is="API สามารถถูกใช้แบบนี้ได้:",Hn,ut,In,ct,Ns=`โค้ดนี้จะทำการอัพโหลดไฟล์ <code>config.json</code> ที่อยู่ใน <code>&lt;path_to_file&gt;</code> ไปสู่รากของ repository โดยใช้ชื่อ <code>config.json</code> ไปสู่ <code>dummy-model</code> repository
Arguments อื่นที่อาจจะเป็นประโยชน์:`,Nn,Mt,Ls="<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>",Ln,dt,Vn,bt,Vs="คลาส <code>Repository</code> จัดการ local repository ในลักษณะคล้าย git มันเอาปัญหาส่วนมากที่ผู้คนมักเจอเวลาใช้ git ออกเพื่อจัดสรรทุกฟีเจอร์ทุกอย่างที่เราจำเป็นต้องใช้",Xn,yt,Xs='การใช้คลาสนี้จำเป็นต้องติดตั้ง git และ git-lfs ดังนั้นคุณควรทำให้มั่นใจว่าคุณได้ติดตั้ง git-lfs แล้ว (ดู <a href="https://git-lfs.github.com/" rel="nofollow">ที่นี่</a> สำหรับขั้นตอนการติดตั้ง) และตั้งค่าให้เสร็จก่อนที่คุณจะเริ่มไปต่อ',zn,_t,zs="เพื่อที่จะเริ่มเล่นกับ repository ที่เราเพิ่งจะได้สร้างกัน เราสามารถเริ่มตั้งต้นมันไปใน local folder ได้โดยการโคลน (clone) remote repository:",Rn,gt,An,ht,Rs="โค้ดนี้จะสร้างโฟลเดอร์ <code>&lt;path_to_dummy_folder&gt;</code> ในไดเรกทอรีที่คุณทำงานอยู่ (working directory) โฟลเดอร์นี้เก็บไฟล์ <code>.gitattributes</code> เอาไว้เพียงไฟล์เดียวเพราะว่ามันเป็นไฟล์เดียวที่จะถูกสร้างเมื่อมีการสร้าง repository ตั้งต้นด้วยคำสั่ง <code>create_repo</code>",Yn,wt,As="จากจุดนี้เป็นต้นไป เราสามารถใช้คำสั่ง git แบบดั่งเดิมต่างๆได้:",Qn,$t,En,Tt,Ys='และอื่นๆอีก! เราแนะนำให้ลองไปดูที่หนังสืออ้างอิง (documentation) ของ <code>Repository</code> ซึ่งเข้าถึงได้จาก <a href="https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management" rel="nofollow">ที่นี่</a> สำหรับภาพรวมของคำสั่งทั้งหมดที่ใช้ได้',Sn,Ut,Qs="ณ ปัจจุบัน เรามีโมเดลและ tokenizer ซึ่งเราต้องการที่จะดันขึ้นสู่ hub แล้ว เราได้โคลน repository มาอย่างเสร็จสมบูรณ์ ดังนั้นเราสามารถเก็บไฟล์ต่างๆไว้ใน repository นั้นได้แล้ว",Fn,jt,Es="อันดับแรกเราต้องทำให้มั่นใจว่า local clone ของเรานั้นเป็นปัจจุบัน ซึ่งทำได้โดยการดึง (pull) การเปลี่ยนแปลงใหม่ล่าสุดเข้ามา:",Pn,vt,qn,kt,Ss="เมื่อโค้ดทำงานเสร็จแล้ว เราเก็บไฟล์โมเดลและ tokenizer:",Dn,Jt,Kn,Zt,Fs="ที่ <code>&lt;path_to_dummy_folder&gt;</code> ตอนนี้มีไฟล์โมเดลและ tokenizer ทั้งหมดแล้ว เราจะทำตาม workflow ของ git ทั่วไปโดยการ เพิ่มไฟล์ไปยัง staging area, ทำการ commit และดัน (push) ไฟล์เหล่านั้นสู่ hub:",On,Ct,ei,Gt,Ps="ขอแสดงความยินดีด้วย! คุณเพิ่งได้ทำการดันไฟล์ชุดแรกของคุณสู่ hub",ti,Wt,li,Bt,qs="แนวทางนี้เป็นแนวทางที่ตรงๆมากสำหรับทำการอัพโหลดไฟล์ นั่นคือเราจะใช้ git และ git-lfs โดยตรง ส่วนที่ยากส่วนใหญ่ถูกในออกไปในแนวทางก่อนๆ แต่มันมีข้อแม้บางอย่างกับขั้นตอนแต่ไปนี้ ดังนั้นเราจะทำตามการใช้งานแบบที่ซับซ้อนขึ้นกว่าปกติ",ni,xt,Ds='การใช้งานต่อจากนี้จำเป็นต้องติดตั้ง git และ git-lfs ดังนั้นคุณควรทำให้มั่นใจว่าคุณได้ติดตั้ง git-lfs แล้ว (ดู <a href="https://git-lfs.github.com/" rel="nofollow">ที่นี่</a> สำหรับขั้นตอนการติดตั้ง) และตั้งค่าให้เสร็จก่อนที่คุณจะเริ่มไปต่อ',ii,Ht,Ks="เริ่มแรกโดยการเริ่มต้นสร้าง git-lfs:",si,It,oi,Nt,pi,Lt,Os="เมื่อโค้ดทำงานเสร็จแล้ว ขั้นตอนแรกคือการโคลน model repository ของคุณ:",ri,Vt,mi,Xt,eo="username ของฉันคือ <code>lysandre</code> และฉันใช้ <code>dummy</code> เป็นชื่อโมเดล ดังนั้นสำหรับฉันแล้ว คำสั่งจะมีหน้าตาประมาณแบบนี้:",ai,zt,fi,Rt,to="ตอนนี้ฉันมีโฟลเดอร์ชื่อ <em>dummy</em> ในไดเรกทอรีที่ฉันทำงานอยู่ (working directory) ฉันสามารถ <code>cd</code> เข้าไปในโฟลเดอร์และดูว่ามีอะไรข้างในบ้าง:",ui,At,ci,Yt,Mi,Qt,lo="ถ้าคุณสร้าง repository ด้วยการใช้คำสั่ง <code>create_repo</code> ของ Hugging Face Hub โฟลเดอร์นี้ควรจะมีไฟล์ <code>.gitattributes</code> ถูกซ่อนอยู่ด้วย ถ้าคุณทำตามขั้นตอนในส่วนก่อนหน้านี้ในการสร้าง repository โดยใช้ web interface ในโฟลเดอร์นี้ควรจะมี <em>README.md</em> หนึ่งไฟล์มาพร้อมกับไฟล์ <code>.gitattributes</code> ที่ถูกซ่อนอยู่ อย่างที่แสดงให้เห็นนี้",di,Et,no="การเพิ่มไฟล์หนึ่งไฟล์ที่มีขนาดปกติ เช่น ไฟล์สำหรับกำหนดค่า (configuration file), ไฟล์สำหรับเก็บคำศัพท์ (vocabulary file) หรือโดยง่ายๆแล้วไฟล์อะไรก็ตามที่มีขนาดน้อยกว่าสองสาม megabytes สามารถทำได้ด้วยการทำแบบที่ทำปกติกับระบบที่พึ่งพา git อย่างไรก็ตามไฟล์ที่ใหญ่กว่านั้นจะต้องถูกลงทะเบียนผ่าน git-lfs เพื่อที่จะดันไฟล์เหล่านั้นขึ้นสู่ <em>huggingface.co</em> ได้",bi,St,io="กลับไปหา Python กันสักหน่อยเพื่อจะสร้างโมเดลและ tokenizer ที่เราต้องการจะ commit ไปสู่ repository จำลองของเรา",yi,z,R,wl,Ft,so="ถึงตอนนี้เราได้ทำการบันทึกไฟล์จากโมเดลและ tokenizer บางส่วนแล้ว ลองไปดูโฟลเดอร์ <em>dummy</em> อีกรอบกันเถอะ:",_i,Pt,gi,A,Y,$l,pe,hi,qt,oo="ต่อไปเราจะทำต่อโดยการทำแบบที่เราทำกับ Git repositories ดั้งเดิม เราสามารถเพิ่มไฟล์ทั้งหมดไปยัง staging environment ของ Git ได้ด้วยการใช้คำสั่ง <code>git add</code>:",wi,Dt,$i,Kt,po="เราสามารถดูได้ว่าไฟล์ที่อยู่ในสถานะ staged มีอะไรบ้าง:",Ti,Ot,Ui,Q,E,Tl,el,ro="ในแบบเดียวกัน เราสามารถทำให้มั่นใจได้ว่า git-lfs กำลังติดตามไฟล์ที่ถูกต้องอยู่ ได้โดยการใช้คำสั่ง status:",ji,tl,vi,S,F,Ul,ll,mo="มาทำขั้นตอนสุดท้ายต่อกันเถอะ ทำการ commit และดัน (push) ขึ้นสู่ <em>huggingface.co</em> remote repository:",ki,nl,Ji,P,q,jl,il,ao="การดันไฟล์นั้นอาจจะใช้เวลาสักหน่อย ขึ้นอยู่กับความเร็วของการเชื่อมต่ออินเทอร์เน็ตและขนาดไฟล์ของคุณ:",Zi,sl,Ci,ol,Gi,vl,pl,Wi,kl,Bi;T=new So({props:{fw:w[0]}}),$=new re({props:{title:"การแบ่งปันโมเดลที่ผ่านการเทรนมาแล้ว (pretrained models)",local:"การแบงปนโมเดลทผานการเทรนมาแลว-pretrained-models",headingTag:"h1"}});const fo=[qo,Po],rl=[];function uo(e,t){return e[0]==="pt"?0:1}j=uo(w),v=rl[j]=fo[j](w),G=new Qi({props:{id:"9yY3RB_GSPM"}}),ce=new re({props:{title:"ใช้ push_to_hub API",local:"ใช-pushtohub-api",headingTag:"h2"}});const co=[Ko,Do],ml=[];function Mo(e,t){return e[0]==="pt"?0:1}H=Mo(w),I=ml[H]=co[H](w),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 bo=[ep,Oo],al=[];function yo(e,t){return e[0]==="pt"?0:1}N=yo(w),L=al[N]=bo[N](w);const _o=[lp,tp],fl=[];function go(e,t){return e[0]==="pt"?0:1}V=go(w),X=fl[V]=_o[V](w),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 ho(e,t){return e[0]==="pt"?ip:np}let xi=ho(w),K=xi(w);le=new Io({props:{$$slots:{default:[sp]},$$scope:{ctx:w}}}),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}}),$t=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}}),Nt=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 wo=[pp,op],ul=[];function $o(e,t){return e[0]==="pt"?0:1}z=$o(w),R=ul[z]=wo[z](w),Pt=new U({props:{code:"bHM=",highlighted:'<span class="hljs-built_in">ls</span>',wrap:!1}});const To=[mp,rp],cl=[];function Uo(e,t){return e[0]==="pt"?0:1}A=Uo(w),Y=cl[A]=To[A](w),pe=new Io({props:{$$slots:{default:[ap]},$$scope:{ctx:w}}}),Dt=new U({props:{code:"Z2l0JTIwYWRkJTIwLg==",highlighted:"git add .",wrap:!1}}),Ot=new U({props:{code:"Z2l0JTIwc3RhdHVz",highlighted:"git status",wrap:!1}});const jo=[up,fp],Ml=[];function vo(e,t){return e[0]==="pt"?0:1}Q=vo(w),E=Ml[Q]=jo[Q](w),tl=new U({props:{code:"Z2l0JTIwbGZzJTIwc3RhdHVz",highlighted:"git lfs status",wrap:!1}});const ko=[Mp,cp],dl=[];function Jo(e,t){return e[0]==="pt"?0:1}S=Jo(w),F=dl[S]=ko[S](w),nl=new U({props:{code:"Z2l0JTIwY29tbWl0JTIwLW0lMjAlMjJGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUyMg==",highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>',wrap:!1}});const Zo=[bp,dp],bl=[];function Co(e,t){return e[0]==="pt"?0:1}P=Co(w),q=bl[P]=Zo[P](w),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 Go(e,t){return e[0]==="pt"?_p:yp}let Hi=Go(w),O=Hi(w);return pl=new Fo({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($.$$.fragment),C=o(),v.c(),Z=o(),b=m("p"),b.textContent=J,D=o(),y(G.$$.fragment),me=o(),x=m("p"),x.textContent=k,W=o(),ae=m("p"),ae.textContent=Ei,Jl=o(),fe=m("ul"),fe.innerHTML=Si,Zl=o(),ue=m("p"),ue.textContent=Fi,Cl=o(),y(ce.$$.fragment),Gl=o(),I.c(),yl=o(),Me=m("p"),Me.innerHTML=Pi,Wl=o(),de=m("p"),de.innerHTML=qi,Bl=o(),y(be.$$.fragment),xl=o(),ye=m("p"),ye.textContent=Di,Hl=o(),y(_e.$$.fragment),Il=o(),ge=m("p"),ge.innerHTML=Ki,Nl=o(),he=m("p"),he.textContent=Oi,Ll=o(),L.c(),_l=o(),we=m("p"),we.innerHTML=es,Vl=o(),$e=m("p"),$e.textContent=ts,Xl=o(),X.c(),gl=o(),Te=m("p"),Te.innerHTML=ls,zl=o(),y(Ue.$$.fragment),Rl=o(),je=m("p"),je.innerHTML=ns,Al=o(),y(ve.$$.fragment),Yl=o(),ke=m("p"),ke.innerHTML=is,Ql=o(),y(Je.$$.fragment),El=o(),Ze=m("p"),Ze.innerHTML=ss,Sl=o(),y(Ce.$$.fragment),Fl=o(),Ge=m("p"),Ge.innerHTML=os,Pl=o(),We=m("p"),We.textContent=ps,ql=o(),K.c(),hl=o(),y(le.$$.fragment),Dl=o(),Be=m("p"),Be.innerHTML=rs,Kl=o(),xe=m("p"),xe.innerHTML=ms,Ol=o(),He=m("p"),He.textContent=as,en=o(),y(Ie.$$.fragment),tn=o(),Ne=m("p"),Ne.innerHTML=fs,ln=o(),Le=m("p"),Le.innerHTML=us,nn=o(),y(Ve.$$.fragment),sn=o(),Xe=m("p"),Xe.innerHTML=cs,on=o(),y(ze.$$.fragment),pn=o(),Re=m("p"),Re.innerHTML=Ms,rn=o(),Ae=m("p"),Ae.innerHTML=ds,mn=o(),y(Ye.$$.fragment),an=o(),Qe=m("p"),Qe.innerHTML=bs,fn=o(),y(Ee.$$.fragment),un=o(),Se=m("p"),Se.innerHTML=ys,cn=o(),Fe=m("ul"),Fe.innerHTML=_s,Mn=o(),Pe=m("p"),Pe.textContent=gs,dn=o(),y(qe.$$.fragment),bn=o(),De=m("p"),De.textContent=hs,yn=o(),Ke=m("p"),Ke.innerHTML=ws,_n=o(),ne=m("div"),ne.innerHTML=$s,gn=o(),Oe=m("p"),Oe.textContent=Ts,hn=o(),et=m("p"),et.textContent=Us,wn=o(),tt=m("p"),tt.textContent=js,$n=o(),ie=m("div"),ie.innerHTML=vs,Tn=o(),lt=m("p"),lt.textContent=ks,Un=o(),se=m("div"),se.innerHTML=Js,jn=o(),nt=m("p"),nt.textContent=Zs,vn=o(),it=m("p"),it.innerHTML=Cs,kn=o(),oe=m("div"),oe.innerHTML=Gs,Jn=o(),st=m("p"),st.textContent=Ws,Zn=o(),y(ot.$$.fragment),Cn=o(),pt=m("p"),pt.innerHTML=Bs,Gn=o(),rt=m("p"),rt.innerHTML=xs,Wn=o(),y(mt.$$.fragment),Bn=o(),at=m("p"),at.innerHTML=Hs,xn=o(),ft=m("p"),ft.textContent=Is,Hn=o(),y(ut.$$.fragment),In=o(),ct=m("p"),ct.innerHTML=Ns,Nn=o(),Mt=m("ul"),Mt.innerHTML=Ls,Ln=o(),y(dt.$$.fragment),Vn=o(),bt=m("p"),bt.innerHTML=Vs,Xn=o(),yt=m("p"),yt.innerHTML=Xs,zn=o(),_t=m("p"),_t.textContent=zs,Rn=o(),y(gt.$$.fragment),An=o(),ht=m("p"),ht.innerHTML=Rs,Yn=o(),wt=m("p"),wt.textContent=As,Qn=o(),y($t.$$.fragment),En=o(),Tt=m("p"),Tt.innerHTML=Ys,Sn=o(),Ut=m("p"),Ut.textContent=Qs,Fn=o(),jt=m("p"),jt.textContent=Es,Pn=o(),y(vt.$$.fragment),qn=o(),kt=m("p"),kt.textContent=Ss,Dn=o(),y(Jt.$$.fragment),Kn=o(),Zt=m("p"),Zt.innerHTML=Fs,On=o(),y(Ct.$$.fragment),ei=o(),Gt=m("p"),Gt.textContent=Ps,ti=o(),y(Wt.$$.fragment),li=o(),Bt=m("p"),Bt.textContent=qs,ni=o(),xt=m("p"),xt.innerHTML=Ds,ii=o(),Ht=m("p"),Ht.textContent=Ks,si=o(),y(It.$$.fragment),oi=o(),y(Nt.$$.fragment),pi=o(),Lt=m("p"),Lt.textContent=Os,ri=o(),y(Vt.$$.fragment),mi=o(),Xt=m("p"),Xt.innerHTML=eo,ai=o(),y(zt.$$.fragment),fi=o(),Rt=m("p"),Rt.innerHTML=to,ui=o(),y(At.$$.fragment),ci=o(),y(Yt.$$.fragment),Mi=o(),Qt=m("p"),Qt.innerHTML=lo,di=o(),Et=m("p"),Et.innerHTML=no,bi=o(),St=m("p"),St.textContent=io,yi=o(),R.c(),wl=o(),Ft=m("p"),Ft.innerHTML=so,_i=o(),y(Pt.$$.fragment),gi=o(),Y.c(),$l=o(),y(pe.$$.fragment),hi=o(),qt=m("p"),qt.innerHTML=oo,wi=o(),y(Dt.$$.fragment),$i=o(),Kt=m("p"),Kt.textContent=po,Ti=o(),y(Ot.$$.fragment),Ui=o(),E.c(),Tl=o(),el=m("p"),el.textContent=ro,ji=o(),y(tl.$$.fragment),vi=o(),F.c(),Ul=o(),ll=m("p"),ll.innerHTML=mo,ki=o(),y(nl.$$.fragment),Ji=o(),q.c(),jl=o(),il=m("p"),il.textContent=ao,Zi=o(),y(sl.$$.fragment),Ci=o(),y(ol.$$.fragment),Gi=o(),O.c(),vl=o(),y(pl.$$.fragment),Wi=o(),kl=m("p"),this.h()},l(e){const t=Ao("svelte-u9bgzb",document.head);i=a(t,"META",{name:!0,content:!0}),t.forEach(l),r=p(e),s=a(e,"P",{}),Ho(s).forEach(l),c=p(e),_(T.$$.fragment,e),u=p(e),_($.$$.fragment,e),C=p(e),v.l(e),Z=p(e),b=a(e,"P",{"data-svelte-h":!0}),f(b)!=="svelte-q4l2bw"&&(b.textContent=J),D=p(e),_(G.$$.fragment,e),me=p(e),x=a(e,"P",{"data-svelte-h":!0}),f(x)!=="svelte-1ghkmqt"&&(x.textContent=k),W=p(e),ae=a(e,"P",{"data-svelte-h":!0}),f(ae)!=="svelte-srkmsj"&&(ae.textContent=Ei),Jl=p(e),fe=a(e,"UL",{"data-svelte-h":!0}),f(fe)!=="svelte-15rocxx"&&(fe.innerHTML=Si),Zl=p(e),ue=a(e,"P",{"data-svelte-h":!0}),f(ue)!=="svelte-1bjp40d"&&(ue.textContent=Fi),Cl=p(e),_(ce.$$.fragment,e),Gl=p(e),I.l(e),yl=p(e),Me=a(e,"P",{"data-svelte-h":!0}),f(Me)!=="svelte-1gv70fn"&&(Me.innerHTML=Pi),Wl=p(e),de=a(e,"P",{"data-svelte-h":!0}),f(de)!=="svelte-1v7xpvh"&&(de.innerHTML=qi),Bl=p(e),_(be.$$.fragment,e),xl=p(e),ye=a(e,"P",{"data-svelte-h":!0}),f(ye)!=="svelte-1ie86o4"&&(ye.textContent=Di),Hl=p(e),_(_e.$$.fragment,e),Il=p(e),ge=a(e,"P",{"data-svelte-h":!0}),f(ge)!=="svelte-gbvhw2"&&(ge.innerHTML=Ki),Nl=p(e),he=a(e,"P",{"data-svelte-h":!0}),f(he)!=="svelte-ueggq2"&&(he.textContent=Oi),Ll=p(e),L.l(e),_l=p(e),we=a(e,"P",{"data-svelte-h":!0}),f(we)!=="svelte-11viki4"&&(we.innerHTML=es),Vl=p(e),$e=a(e,"P",{"data-svelte-h":!0}),f($e)!=="svelte-8nf739"&&($e.textContent=ts),Xl=p(e),X.l(e),gl=p(e),Te=a(e,"P",{"data-svelte-h":!0}),f(Te)!=="svelte-4pakls"&&(Te.innerHTML=ls),zl=p(e),_(Ue.$$.fragment,e),Rl=p(e),je=a(e,"P",{"data-svelte-h":!0}),f(je)!=="svelte-1huaa7d"&&(je.innerHTML=ns),Al=p(e),_(ve.$$.fragment,e),Yl=p(e),ke=a(e,"P",{"data-svelte-h":!0}),f(ke)!=="svelte-3f1hmi"&&(ke.innerHTML=is),Ql=p(e),_(Je.$$.fragment,e),El=p(e),Ze=a(e,"P",{"data-svelte-h":!0}),f(Ze)!=="svelte-jcytt"&&(Ze.innerHTML=ss),Sl=p(e),_(Ce.$$.fragment,e),Fl=p(e),Ge=a(e,"P",{"data-svelte-h":!0}),f(Ge)!=="svelte-woivds"&&(Ge.innerHTML=os),Pl=p(e),We=a(e,"P",{"data-svelte-h":!0}),f(We)!=="svelte-uojcqu"&&(We.textContent=ps),ql=p(e),K.l(e),hl=p(e),_(le.$$.fragment,e),Dl=p(e),Be=a(e,"P",{"data-svelte-h":!0}),f(Be)!=="svelte-p11xk9"&&(Be.innerHTML=rs),Kl=p(e),xe=a(e,"P",{"data-svelte-h":!0}),f(xe)!=="svelte-10gh4tt"&&(xe.innerHTML=ms),Ol=p(e),He=a(e,"P",{"data-svelte-h":!0}),f(He)!=="svelte-148ettj"&&(He.textContent=as),en=p(e),_(Ie.$$.fragment,e),tn=p(e),Ne=a(e,"P",{"data-svelte-h":!0}),f(Ne)!=="svelte-1ck62zn"&&(Ne.innerHTML=fs),ln=p(e),Le=a(e,"P",{"data-svelte-h":!0}),f(Le)!=="svelte-g98md6"&&(Le.innerHTML=us),nn=p(e),_(Ve.$$.fragment,e),sn=p(e),Xe=a(e,"P",{"data-svelte-h":!0}),f(Xe)!=="svelte-1d2i9jw"&&(Xe.innerHTML=cs),on=p(e),_(ze.$$.fragment,e),pn=p(e),Re=a(e,"P",{"data-svelte-h":!0}),f(Re)!=="svelte-7dd6iy"&&(Re.innerHTML=Ms),rn=p(e),Ae=a(e,"P",{"data-svelte-h":!0}),f(Ae)!=="svelte-10xk9n6"&&(Ae.innerHTML=ds),mn=p(e),_(Ye.$$.fragment,e),an=p(e),Qe=a(e,"P",{"data-svelte-h":!0}),f(Qe)!=="svelte-u5z3to"&&(Qe.innerHTML=bs),fn=p(e),_(Ee.$$.fragment,e),un=p(e),Se=a(e,"P",{"data-svelte-h":!0}),f(Se)!=="svelte-n1dghd"&&(Se.innerHTML=ys),cn=p(e),Fe=a(e,"UL",{"data-svelte-h":!0}),f(Fe)!=="svelte-3g7ul4"&&(Fe.innerHTML=_s),Mn=p(e),Pe=a(e,"P",{"data-svelte-h":!0}),f(Pe)!=="svelte-ywvx05"&&(Pe.textContent=gs),dn=p(e),_(qe.$$.fragment,e),bn=p(e),De=a(e,"P",{"data-svelte-h":!0}),f(De)!=="svelte-1uzvd84"&&(De.textContent=hs),yn=p(e),Ke=a(e,"P",{"data-svelte-h":!0}),f(Ke)!=="svelte-4ex5u"&&(Ke.innerHTML=ws),_n=p(e),ne=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(ne)!=="svelte-4qsgxt"&&(ne.innerHTML=$s),gn=p(e),Oe=a(e,"P",{"data-svelte-h":!0}),f(Oe)!=="svelte-1xwu1yh"&&(Oe.textContent=Ts),hn=p(e),et=a(e,"P",{"data-svelte-h":!0}),f(et)!=="svelte-111h1qv"&&(et.textContent=Us),wn=p(e),tt=a(e,"P",{"data-svelte-h":!0}),f(tt)!=="svelte-17lkx6e"&&(tt.textContent=js),$n=p(e),ie=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(ie)!=="svelte-1xh6nig"&&(ie.innerHTML=vs),Tn=p(e),lt=a(e,"P",{"data-svelte-h":!0}),f(lt)!=="svelte-1rfxu5j"&&(lt.textContent=ks),Un=p(e),se=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(se)!=="svelte-1jm8l0p"&&(se.innerHTML=Js),jn=p(e),nt=a(e,"P",{"data-svelte-h":!0}),f(nt)!=="svelte-15stfpn"&&(nt.textContent=Zs),vn=p(e),it=a(e,"P",{"data-svelte-h":!0}),f(it)!=="svelte-117s3lp"&&(it.innerHTML=Cs),kn=p(e),oe=a(e,"DIV",{class:!0,"data-svelte-h":!0}),f(oe)!=="svelte-1kuf5jc"&&(oe.innerHTML=Gs),Jn=p(e),st=a(e,"P",{"data-svelte-h":!0}),f(st)!=="svelte-v7tka5"&&(st.textContent=Ws),Zn=p(e),_(ot.$$.fragment,e),Cn=p(e),pt=a(e,"P",{"data-svelte-h":!0}),f(pt)!=="svelte-18wxjag"&&(pt.innerHTML=Bs),Gn=p(e),rt=a(e,"P",{"data-svelte-h":!0}),f(rt)!=="svelte-snihi"&&(rt.innerHTML=xs),Wn=p(e),_(mt.$$.fragment,e),Bn=p(e),at=a(e,"P",{"data-svelte-h":!0}),f(at)!=="svelte-11nx6k8"&&(at.innerHTML=Hs),xn=p(e),ft=a(e,"P",{"data-svelte-h":!0}),f(ft)!=="svelte-rjusj"&&(ft.textContent=Is),Hn=p(e),_(ut.$$.fragment,e),In=p(e),ct=a(e,"P",{"data-svelte-h":!0}),f(ct)!=="svelte-1na2tzz"&&(ct.innerHTML=Ns),Nn=p(e),Mt=a(e,"UL",{"data-svelte-h":!0}),f(Mt)!=="svelte-j0jwp7"&&(Mt.innerHTML=Ls),Ln=p(e),_(dt.$$.fragment,e),Vn=p(e),bt=a(e,"P",{"data-svelte-h":!0}),f(bt)!=="svelte-v3i98v"&&(bt.innerHTML=Vs),Xn=p(e),yt=a(e,"P",{"data-svelte-h":!0}),f(yt)!=="svelte-1xiw8xn"&&(yt.innerHTML=Xs),zn=p(e),_t=a(e,"P",{"data-svelte-h":!0}),f(_t)!=="svelte-aa6xdx"&&(_t.textContent=zs),Rn=p(e),_(gt.$$.fragment,e),An=p(e),ht=a(e,"P",{"data-svelte-h":!0}),f(ht)!=="svelte-kvrbfp"&&(ht.innerHTML=Rs),Yn=p(e),wt=a(e,"P",{"data-svelte-h":!0}),f(wt)!=="svelte-ji2296"&&(wt.textContent=As),Qn=p(e),_($t.$$.fragment,e),En=p(e),Tt=a(e,"P",{"data-svelte-h":!0}),f(Tt)!=="svelte-icveem"&&(Tt.innerHTML=Ys),Sn=p(e),Ut=a(e,"P",{"data-svelte-h":!0}),f(Ut)!=="svelte-13fpry9"&&(Ut.textContent=Qs),Fn=p(e),jt=a(e,"P",{"data-svelte-h":!0}),f(jt)!=="svelte-14d584i"&&(jt.textContent=Es),Pn=p(e),_(vt.$$.fragment,e),qn=p(e),kt=a(e,"P",{"data-svelte-h":!0}),f(kt)!=="svelte-zyb9su"&&(kt.textContent=Ss),Dn=p(e),_(Jt.$$.fragment,e),Kn=p(e),Zt=a(e,"P",{"data-svelte-h":!0}),f(Zt)!=="svelte-iam5ee"&&(Zt.innerHTML=Fs),On=p(e),_(Ct.$$.fragment,e),ei=p(e),Gt=a(e,"P",{"data-svelte-h":!0}),f(Gt)!=="svelte-lmrpnf"&&(Gt.textContent=Ps),ti=p(e),_(Wt.$$.fragment,e),li=p(e),Bt=a(e,"P",{"data-svelte-h":!0}),f(Bt)!=="svelte-1yicavc"&&(Bt.textContent=qs),ni=p(e),xt=a(e,"P",{"data-svelte-h":!0}),f(xt)!=="svelte-18i5017"&&(xt.innerHTML=Ds),ii=p(e),Ht=a(e,"P",{"data-svelte-h":!0}),f(Ht)!=="svelte-xzb0ej"&&(Ht.textContent=Ks),si=p(e),_(It.$$.fragment,e),oi=p(e),_(Nt.$$.fragment,e),pi=p(e),Lt=a(e,"P",{"data-svelte-h":!0}),f(Lt)!=="svelte-g38fkp"&&(Lt.textContent=Os),ri=p(e),_(Vt.$$.fragment,e),mi=p(e),Xt=a(e,"P",{"data-svelte-h":!0}),f(Xt)!=="svelte-17djtfn"&&(Xt.innerHTML=eo),ai=p(e),_(zt.$$.fragment,e),fi=p(e),Rt=a(e,"P",{"data-svelte-h":!0}),f(Rt)!=="svelte-1dbqziv"&&(Rt.innerHTML=to),ui=p(e),_(At.$$.fragment,e),ci=p(e),_(Yt.$$.fragment,e),Mi=p(e),Qt=a(e,"P",{"data-svelte-h":!0}),f(Qt)!=="svelte-zlspfv"&&(Qt.innerHTML=lo),di=p(e),Et=a(e,"P",{"data-svelte-h":!0}),f(Et)!=="svelte-5ryrtz"&&(Et.innerHTML=no),bi=p(e),St=a(e,"P",{"data-svelte-h":!0}),f(St)!=="svelte-1k1j974"&&(St.textContent=io),yi=p(e),R.l(e),wl=p(e),Ft=a(e,"P",{"data-svelte-h":!0}),f(Ft)!=="svelte-1qkg12p"&&(Ft.innerHTML=so),_i=p(e),_(Pt.$$.fragment,e),gi=p(e),Y.l(e),$l=p(e),_(pe.$$.fragment,e),hi=p(e),qt=a(e,"P",{"data-svelte-h":!0}),f(qt)!=="svelte-1jnekpr"&&(qt.innerHTML=oo),wi=p(e),_(Dt.$$.fragment,e),$i=p(e),Kt=a(e,"P",{"data-svelte-h":!0}),f(Kt)!=="svelte-clti1z"&&(Kt.textContent=po),Ti=p(e),_(Ot.$$.fragment,e),Ui=p(e),E.l(e),Tl=p(e),el=a(e,"P",{"data-svelte-h":!0}),f(el)!=="svelte-g6oj6q"&&(el.textContent=ro),ji=p(e),_(tl.$$.fragment,e),vi=p(e),F.l(e),Ul=p(e),ll=a(e,"P",{"data-svelte-h":!0}),f(ll)!=="svelte-1dmkq8n"&&(ll.innerHTML=mo),ki=p(e),_(nl.$$.fragment,e),Ji=p(e),q.l(e),jl=p(e),il=a(e,"P",{"data-svelte-h":!0}),f(il)!=="svelte-1l0w2ea"&&(il.textContent=ao),Zi=p(e),_(sl.$$.fragment,e),Ci=p(e),_(ol.$$.fragment,e),Gi=p(e),O.l(e),vl=p(e),_(pl.$$.fragment,e),Wi=p(e),kl=a(e,"P",{}),Ho(kl).forEach(l),this.h()},h(){B(i,"name","hf:doc:metadata"),B(i,"content",hp),B(ne,"class","flex justify-center"),B(ie,"class","flex justify-center"),B(se,"class","flex justify-center"),B(oe,"class","flex justify-center")},m(e,t){Yo(document.head,i),n(e,r,t),n(e,s,t),n(e,c,t),g(T,e,t),n(e,u,t),g($,e,t),n(e,C,t),rl[j].m(e,t),n(e,Z,t),n(e,b,t),n(e,D,t),g(G,e,t),n(e,me,t),n(e,x,t),n(e,W,t),n(e,ae,t),n(e,Jl,t),n(e,fe,t),n(e,Zl,t),n(e,ue,t),n(e,Cl,t),g(ce,e,t),n(e,Gl,t),ml[H].m(e,t),n(e,yl,t),n(e,Me,t),n(e,Wl,t),n(e,de,t),n(e,Bl,t),g(be,e,t),n(e,xl,t),n(e,ye,t),n(e,Hl,t),g(_e,e,t),n(e,Il,t),n(e,ge,t),n(e,Nl,t),n(e,he,t),n(e,Ll,t),al[N].m(e,t),n(e,_l,t),n(e,we,t),n(e,Vl,t),n(e,$e,t),n(e,Xl,t),fl[V].m(e,t),n(e,gl,t),n(e,Te,t),n(e,zl,t),g(Ue,e,t),n(e,Rl,t),n(e,je,t),n(e,Al,t),g(ve,e,t),n(e,Yl,t),n(e,ke,t),n(e,Ql,t),g(Je,e,t),n(e,El,t),n(e,Ze,t),n(e,Sl,t),g(Ce,e,t),n(e,Fl,t),n(e,Ge,t),n(e,Pl,t),n(e,We,t),n(e,ql,t),K.m(e,t),n(e,hl,t),g(le,e,t),n(e,Dl,t),n(e,Be,t),n(e,Kl,t),n(e,xe,t),n(e,Ol,t),n(e,He,t),n(e,en,t),g(Ie,e,t),n(e,tn,t),n(e,Ne,t),n(e,ln,t),n(e,Le,t),n(e,nn,t),g(Ve,e,t),n(e,sn,t),n(e,Xe,t),n(e,on,t),g(ze,e,t),n(e,pn,t),n(e,Re,t),n(e,rn,t),n(e,Ae,t),n(e,mn,t),g(Ye,e,t),n(e,an,t),n(e,Qe,t),n(e,fn,t),g(Ee,e,t),n(e,un,t),n(e,Se,t),n(e,cn,t),n(e,Fe,t),n(e,Mn,t),n(e,Pe,t),n(e,dn,t),g(qe,e,t),n(e,bn,t),n(e,De,t),n(e,yn,t),n(e,Ke,t),n(e,_n,t),n(e,ne,t),n(e,gn,t),n(e,Oe,t),n(e,hn,t),n(e,et,t),n(e,wn,t),n(e,tt,t),n(e,$n,t),n(e,ie,t),n(e,Tn,t),n(e,lt,t),n(e,Un,t),n(e,se,t),n(e,jn,t),n(e,nt,t),n(e,vn,t),n(e,it,t),n(e,kn,t),n(e,oe,t),n(e,Jn,t),n(e,st,t),n(e,Zn,t),g(ot,e,t),n(e,Cn,t),n(e,pt,t),n(e,Gn,t),n(e,rt,t),n(e,Wn,t),g(mt,e,t),n(e,Bn,t),n(e,at,t),n(e,xn,t),n(e,ft,t),n(e,Hn,t),g(ut,e,t),n(e,In,t),n(e,ct,t),n(e,Nn,t),n(e,Mt,t),n(e,Ln,t),g(dt,e,t),n(e,Vn,t),n(e,bt,t),n(e,Xn,t),n(e,yt,t),n(e,zn,t),n(e,_t,t),n(e,Rn,t),g(gt,e,t),n(e,An,t),n(e,ht,t),n(e,Yn,t),n(e,wt,t),n(e,Qn,t),g($t,e,t),n(e,En,t),n(e,Tt,t),n(e,Sn,t),n(e,Ut,t),n(e,Fn,t),n(e,jt,t),n(e,Pn,t),g(vt,e,t),n(e,qn,t),n(e,kt,t),n(e,Dn,t),g(Jt,e,t),n(e,Kn,t),n(e,Zt,t),n(e,On,t),g(Ct,e,t),n(e,ei,t),n(e,Gt,t),n(e,ti,t),g(Wt,e,t),n(e,li,t),n(e,Bt,t),n(e,ni,t),n(e,xt,t),n(e,ii,t),n(e,Ht,t),n(e,si,t),g(It,e,t),n(e,oi,t),g(Nt,e,t),n(e,pi,t),n(e,Lt,t),n(e,ri,t),g(Vt,e,t),n(e,mi,t),n(e,Xt,t),n(e,ai,t),g(zt,e,t),n(e,fi,t),n(e,Rt,t),n(e,ui,t),g(At,e,t),n(e,ci,t),g(Yt,e,t),n(e,Mi,t),n(e,Qt,t),n(e,di,t),n(e,Et,t),n(e,bi,t),n(e,St,t),n(e,yi,t),ul[z].m(e,t),n(e,wl,t),n(e,Ft,t),n(e,_i,t),g(Pt,e,t),n(e,gi,t),cl[A].m(e,t),n(e,$l,t),g(pe,e,t),n(e,hi,t),n(e,qt,t),n(e,wi,t),g(Dt,e,t),n(e,$i,t),n(e,Kt,t),n(e,Ti,t),g(Ot,e,t),n(e,Ui,t),Ml[Q].m(e,t),n(e,Tl,t),n(e,el,t),n(e,ji,t),g(tl,e,t),n(e,vi,t),dl[S].m(e,t),n(e,Ul,t),n(e,ll,t),n(e,ki,t),g(nl,e,t),n(e,Ji,t),bl[P].m(e,t),n(e,jl,t),n(e,il,t),n(e,Zi,t),g(sl,e,t),n(e,Ci,t),g(ol,e,t),n(e,Gi,t),O.m(e,t),n(e,vl,t),g(pl,e,t),n(e,Wi,t),n(e,kl,t),Bi=!0},p(e,[t]){const Wo={};t&1&&(Wo.fw=e[0]),T.$set(Wo);let Ii=j;j=uo(e),j!==Ii&&(te(),M(rl[Ii],1,1,()=>{rl[Ii]=null}),ee(),v=rl[j],v||(v=rl[j]=fo[j](e),v.c()),d(v,1),v.m(Z.parentNode,Z));let Ni=H;H=Mo(e),H!==Ni&&(te(),M(ml[Ni],1,1,()=>{ml[Ni]=null}),ee(),I=ml[H],I||(I=ml[H]=co[H](e),I.c()),d(I,1),I.m(yl.parentNode,yl));let Li=N;N=yo(e),N!==Li&&(te(),M(al[Li],1,1,()=>{al[Li]=null}),ee(),L=al[N],L||(L=al[N]=bo[N](e),L.c()),d(L,1),L.m(_l.parentNode,_l));let Vi=V;V=go(e),V!==Vi&&(te(),M(fl[Vi],1,1,()=>{fl[Vi]=null}),ee(),X=fl[V],X||(X=fl[V]=_o[V](e),X.c()),d(X,1),X.m(gl.parentNode,gl)),xi!==(xi=ho(e))&&(K.d(1),K=xi(e),K&&(K.c(),K.m(hl.parentNode,hl)));const Bo={};t&2&&(Bo.$$scope={dirty:t,ctx:e}),le.$set(Bo);let Xi=z;z=$o(e),z!==Xi&&(te(),M(ul[Xi],1,1,()=>{ul[Xi]=null}),ee(),R=ul[z],R||(R=ul[z]=wo[z](e),R.c()),d(R,1),R.m(wl.parentNode,wl));let zi=A;A=Uo(e),A!==zi&&(te(),M(cl[zi],1,1,()=>{cl[zi]=null}),ee(),Y=cl[A],Y||(Y=cl[A]=To[A](e),Y.c()),d(Y,1),Y.m($l.parentNode,$l));const xo={};t&2&&(xo.$$scope={dirty:t,ctx:e}),pe.$set(xo);let Ri=Q;Q=vo(e),Q!==Ri&&(te(),M(Ml[Ri],1,1,()=>{Ml[Ri]=null}),ee(),E=Ml[Q],E||(E=Ml[Q]=jo[Q](e),E.c()),d(E,1),E.m(Tl.parentNode,Tl));let Ai=S;S=Jo(e),S!==Ai&&(te(),M(dl[Ai],1,1,()=>{dl[Ai]=null}),ee(),F=dl[S],F||(F=dl[S]=ko[S](e),F.c()),d(F,1),F.m(Ul.parentNode,Ul));let Yi=P;P=Co(e),P!==Yi&&(te(),M(bl[Yi],1,1,()=>{bl[Yi]=null}),ee(),q=bl[P],q||(q=bl[P]=Zo[P](e),q.c()),d(q,1),q.m(jl.parentNode,jl)),Hi!==(Hi=Go(e))&&(O.d(1),O=Hi(e),O&&(O.c(),O.m(vl.parentNode,vl)))},i(e){Bi||(d(T.$$.fragment,e),d($.$$.fragment,e),d(v),d(G.$$.fragment,e),d(ce.$$.fragment,e),d(I),d(be.$$.fragment,e),d(_e.$$.fragment,e),d(L),d(X),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($t.$$.fragment,e),d(vt.$$.fragment,e),d(Jt.$$.fragment,e),d(Ct.$$.fragment,e),d(Wt.$$.fragment,e),d(It.$$.fragment,e),d(Nt.$$.fragment,e),d(Vt.$$.fragment,e),d(zt.$$.fragment,e),d(At.$$.fragment,e),d(Yt.$$.fragment,e),d(R),d(Pt.$$.fragment,e),d(Y),d(pe.$$.fragment,e),d(Dt.$$.fragment,e),d(Ot.$$.fragment,e),d(E),d(tl.$$.fragment,e),d(F),d(nl.$$.fragment,e),d(q),d(sl.$$.fragment,e),d(ol.$$.fragment,e),d(pl.$$.fragment,e),Bi=!0)},o(e){M(T.$$.fragment,e),M($.$$.fragment,e),M(v),M(G.$$.fragment,e),M(ce.$$.fragment,e),M(I),M(be.$$.fragment,e),M(_e.$$.fragment,e),M(L),M(X),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($t.$$.fragment,e),M(vt.$$.fragment,e),M(Jt.$$.fragment,e),M(Ct.$$.fragment,e),M(Wt.$$.fragment,e),M(It.$$.fragment,e),M(Nt.$$.fragment,e),M(Vt.$$.fragment,e),M(zt.$$.fragment,e),M(At.$$.fragment,e),M(Yt.$$.fragment,e),M(R),M(Pt.$$.fragment,e),M(Y),M(pe.$$.fragment,e),M(Dt.$$.fragment,e),M(Ot.$$.fragment,e),M(E),M(tl.$$.fragment,e),M(F),M(nl.$$.fragment,e),M(q),M(sl.$$.fragment,e),M(ol.$$.fragment,e),M(pl.$$.fragment,e),Bi=!1},d(e){e&&(l(r),l(s),l(c),l(u),l(C),l(Z),l(b),l(D),l(me),l(x),l(W),l(ae),l(Jl),l(fe),l(Zl),l(ue),l(Cl),l(Gl),l(yl),l(Me),l(Wl),l(de),l(Bl),l(xl),l(ye),l(Hl),l(Il),l(ge),l(Nl),l(he),l(Ll),l(_l),l(we),l(Vl),l($e),l(Xl),l(gl),l(Te),l(zl),l(Rl),l(je),l(Al),l(Yl),l(ke),l(Ql),l(El),l(Ze),l(Sl),l(Fl),l(Ge),l(Pl),l(We),l(ql),l(hl),l(Dl),l(Be),l(Kl),l(xe),l(Ol),l(He),l(en),l(tn),l(Ne),l(ln),l(Le),l(nn),l(sn),l(Xe),l(on),l(pn),l(Re),l(rn),l(Ae),l(mn),l(an),l(Qe),l(fn),l(un),l(Se),l(cn),l(Fe),l(Mn),l(Pe),l(dn),l(bn),l(De),l(yn),l(Ke),l(_n),l(ne),l(gn),l(Oe),l(hn),l(et),l(wn),l(tt),l($n),l(ie),l(Tn),l(lt),l(Un),l(se),l(jn),l(nt),l(vn),l(it),l(kn),l(oe),l(Jn),l(st),l(Zn),l(Cn),l(pt),l(Gn),l(rt),l(Wn),l(Bn),l(at),l(xn),l(ft),l(Hn),l(In),l(ct),l(Nn),l(Mt),l(Ln),l(Vn),l(bt),l(Xn),l(yt),l(zn),l(_t),l(Rn),l(An),l(ht),l(Yn),l(wt),l(Qn),l(En),l(Tt),l(Sn),l(Ut),l(Fn),l(jt),l(Pn),l(qn),l(kt),l(Dn),l(Kn),l(Zt),l(On),l(ei),l(Gt),l(ti),l(li),l(Bt),l(ni),l(xt),l(ii),l(Ht),l(si),l(oi),l(pi),l(Lt),l(ri),l(mi),l(Xt),l(ai),l(fi),l(Rt),l(ui),l(ci),l(Mi),l(Qt),l(di),l(Et),l(bi),l(St),l(yi),l(wl),l(Ft),l(_i),l(gi),l($l),l(hi),l(qt),l(wi),l($i),l(Kt),l(Ti),l(Ui),l(Tl),l(el),l(ji),l(vi),l(Ul),l(ll),l(ki),l(Ji),l(jl),l(il),l(Zi),l(Ci),l(Gi),l(vl),l(Wi),l(kl)),l(i),h(T,e),h($,e),rl[j].d(e),h(G,e),h(ce,e),ml[H].d(e),h(be,e),h(_e,e),al[N].d(e),fl[V].d(e),h(Ue,e),h(ve,e),h(Je,e),h(Ce,e),K.d(e),h(le,e),h(Ie,e),h(Ve,e),h(ze,e),h(Ye,e),h(Ee,e),h(qe,e),h(ot,e),h(mt,e),h(ut,e),h(dt,e),h(gt,e),h($t,e),h(vt,e),h(Jt,e),h(Ct,e),h(Wt,e),h(It,e),h(Nt,e),h(Vt,e),h(zt,e),h(At,e),h(Yt,e),ul[z].d(e),h(Pt,e),cl[A].d(e),h(pe,e),h(Dt,e),h(Ot,e),Ml[Q].d(e),h(tl,e),dl[S].d(e),h(nl,e),bl[P].d(e),h(sl,e),h(ol,e),O.d(e),h(pl,e)}}}const hp='{"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 wp(w,i,r){let s="pt";return Vo(()=>{const c=new URLSearchParams(window.location.search);r(0,s=c.get("fw")||"pt")}),[s]}class Cp extends zo{constructor(i){super(),Ro(this,i,wp,gp,Lo,{})}}export{Cp as component};
