Buckets:

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

Xet Storage Details

Size:
94.2 kB
·
Xet hash:
7cddbdb38ffafeb4d413a9588e17b43a26705db01d3456faf13988616decfe89

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