import{s as Qh,o as Sh,n as Rh}from"../chunks/scheduler.37c15a92.js";import{S as Xh,i as Ah,g as p,s as h,r as M,m as Hh,A as Eh,h as m,f as n,c as s,j as Nh,u as d,x as a,n as zh,k as B,y as Yh,a as l,v as y,t as g,b as tt,d as f,w as v,p as et}from"../chunks/index.2bf4358c.js";import{T as Ih}from"../chunks/Tip.363c041f.js";import{Y as Ei}from"../chunks/Youtube.1e50a667.js";import{C as w}from"../chunks/CodeBlock.4e987730.js";import{C as Lh}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{F as Fh}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as ot,E as qh}from"../chunks/getInferenceSnippets.7bb25a7f.js";function Ph(k){let i,o;return i=new Lh({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/vi/chapter4/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter4/section3_tf.ipynb"}]}}),{c(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function Dh(k){let i,o;return i=new Lh({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/vi/chapter4/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter4/section3_pt.ipynb"}]}}),{c(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function Kh(k){let i,o;return i=new Ei({props:{id:"pUh5cGmNV8Y"}}),{c(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function Oh(k){let i,o;return i=new Ei({props:{id:"Zh0FfmVrKX0"}}),{c(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function ts(k){let i,o="Nếu bạn sử dụng Keras để huấn luyện mô hình, cách dễ nhất để tải nó lên Hub là sử dụng <code>PushToHubCallback</code> khi bạn gọi <code>model.fit()</code>:",c,r,T,u,_="Sau đó, bạn nên thêm <code>callbacks=[callback]</code> trong lệnh gọi của mình tới <code>model.fit()</code>. Sau đó, lệnh này sẽ tải mô hình của bạn lên Hub mỗi khi nó được lưu (ở đây là mỗi epoch) trong một kho lưu trữ trên không gian tên của bạn. Kho lưu trữ đó sẽ được đặt tên giống như thư mục đầu ra bạn đã chọn (ở đây là <code>bert-finetuned-mrpc</code>) nhưng bạn có thể chọn một tên khác với <code>hub_model_id = &quot;a_different_name&quot;</code>.",Z,U,$="Để tải mô hình của bạn lên tổ chức mà bạn là thành viên, chỉ cần truyền nó vào qua <code>hub_model_id = &quot;my_organization/my_repo_name&quot;</code>.",C;return r=new w({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=p("p"),i.innerHTML=o,c=h(),M(r.$$.fragment),T=h(),u=p("p"),u.innerHTML=_,Z=h(),U=p("p"),U.innerHTML=$},l(b){i=m(b,"P",{"data-svelte-h":!0}),a(i)!=="svelte-1kqbskg"&&(i.innerHTML=o),c=s(b),d(r.$$.fragment,b),T=s(b),u=m(b,"P",{"data-svelte-h":!0}),a(u)!=="svelte-jil9vd"&&(u.innerHTML=_),Z=s(b),U=m(b,"P",{"data-svelte-h":!0}),a(U)!=="svelte-fxsz64"&&(U.innerHTML=$)},m(b,J){l(b,i,J),l(b,c,J),y(r,b,J),l(b,T,J),l(b,u,J),l(b,Z,J),l(b,U,J),C=!0},i(b){C||(f(r.$$.fragment,b),C=!0)},o(b){g(r.$$.fragment,b),C=!1},d(b){b&&(n(i),n(c),n(T),n(u),n(Z),n(U)),v(r,b)}}}function es(k){let i,o="Nếu bạn đã thử với API <code>Trainer</code> để huấn luyện một mô hình, thì cách dễ nhất để tải nó lên Hub là đặt <code>push_to_hub=True</code> khi bạn định nghĩa  <code>TrainingArguments</code>:",c,r,T,u,_="Khi bạn gọi <code>trainer.train()</code>, <code>Trainer</code> sau đó sẽ tải mô hình của bạn lên Hub mỗi khi nó được lưu (ở đây là mỗi epoch) trong một kho lưu trữ trong không gian tên của bạn. Kho lưu trữ đó sẽ được đặt tên giống như thư mục đầu ra bạn đã chọn (ở đây là <code>bert-finetuned-mrpc</code>) nhưng bạn có thể chọn một tên khác với <code>hub_model_id = &quot;a_different_name&quot;</code>.",Z,U,$="Để tải mô hình của bạn lên tổ chức mà bạn là thành viên, chỉ cần truyền nó vào qua <code>hub_model_id = &quot;my_organization/my_repo_name&quot;</code>.",C,b,J="Sau khi quá trình huấn luyện của bạn kết thúc, bạn nên thực hiện một <code>trainer.push_to_hub()</code> cuối cùng để tải lên phiên bản cuối cùng của mô hình của bạn. Nó cũng sẽ tạo ra một thẻ mô hình với tất cả các siêu dữ liệu liên quan, báo cáo các siêu tham số được sử dụng và kết quả đánh giá! Dưới đây là một ví dụ về nội dung bạn có thể tìm thấy trong một thẻ mô hình như vậy:",D,G,pt='<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%"/>',W;return r=new w({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=p("p"),i.innerHTML=o,c=h(),M(r.$$.fragment),T=h(),u=p("p"),u.innerHTML=_,Z=h(),U=p("p"),U.innerHTML=$,C=h(),b=p("p"),b.innerHTML=J,D=h(),G=p("div"),G.innerHTML=pt,this.h()},l(j){i=m(j,"P",{"data-svelte-h":!0}),a(i)!=="svelte-1rofpua"&&(i.innerHTML=o),c=s(j),d(r.$$.fragment,j),T=s(j),u=m(j,"P",{"data-svelte-h":!0}),a(u)!=="svelte-ssxm5g"&&(u.innerHTML=_),Z=s(j),U=m(j,"P",{"data-svelte-h":!0}),a(U)!=="svelte-fxsz64"&&(U.innerHTML=$),C=s(j),b=m(j,"P",{"data-svelte-h":!0}),a(b)!=="svelte-94hl7z"&&(b.innerHTML=J),D=s(j),G=m(j,"DIV",{class:!0,"data-svelte-h":!0}),a(G)!=="svelte-1lhrimn"&&(G.innerHTML=pt),this.h()},h(){B(G,"class","flex justify-center")},m(j,x){l(j,i,x),l(j,c,x),y(r,j,x),l(j,T,x),l(j,u,x),l(j,Z,x),l(j,U,x),l(j,C,x),l(j,b,x),l(j,D,x),l(j,G,x),W=!0},i(j){W||(f(r.$$.fragment,j),W=!0)},o(j){g(r.$$.fragment,j),W=!1},d(j){j&&(n(i),n(c),n(T),n(u),n(Z),n(U),n(C),n(b),n(D),n(G)),v(r,j)}}}function ns(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function ls(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function is(k){let i,o='<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=p("div"),i.innerHTML=o,this.h()},l(c){i=m(c,"DIV",{class:!0,"data-svelte-h":!0}),a(i)!=="svelte-5a3kk0"&&(i.innerHTML=o),this.h()},h(){B(i,"class","flex justify-center")},m(c,r){l(c,i,r)},d(c){c&&n(i)}}}function cs(k){let i,o='<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=p("div"),i.innerHTML=o,this.h()},l(c){i=m(c,"DIV",{class:!0,"data-svelte-h":!0}),a(i)!=="svelte-19u1vyv"&&(i.innerHTML=o),this.h()},h(){B(i,"class","flex justify-center")},m(c,r){l(c,i,r)},d(c){c&&n(i)}}}function hs(k){let i,o="✏️ <strong>Thử nghiệm thôi!</strong> Lấy mô hình và trình tokenize được liên kết với checkpoint <code>bert-base-cased</code> và tải chúng lên kho lưu trữ trong không gian tên của bạn bằng phương thức <code>push_to_hub()</code>. Kiểm tra kỹ xem repo có xuất hiện chính xác trên trang của bạn hay không trước khi xóa nó.";return{c(){i=p("p"),i.innerHTML=o},l(c){i=m(c,"P",{"data-svelte-h":!0}),a(i)!=="svelte-l3yxa6"&&(i.innerHTML=o)},m(c,r){l(c,i,r)},p:Rh,d(c){c&&n(i)}}}function ss(k){let i,o;return i=new w({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMkMlMjBBdXRvVG9rZW5pemVyJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmNhbWVtYmVydC1iYXNlJTIyJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBJTIzJTIwTCVDMyVBMG0lMjBiJUUxJUJBJUE1dCUyMGMlRTElQkIlQTklMjAlQzQlOTFpJUUxJUJCJTgxdSUyMGclQzMlQUMlMjB2JUUxJUJCJTlCaSUyMG0lQzMlQjQlMjBoJUMzJUFDbmglMkMlMjBodSVFMSVCQSVBNW4lMjBsdXklRTElQkIlODduJTIwbiVDMyVCMyUyQyUyMHRpbmglMjBjaCVFMSVCQiU4OW5oJTIwbiVDMyVCMyUyMC4uLiUwQSUwQW1vZGVsLnNhdmVfcHJldHJhaW5lZCglMjIlM0NwYXRoX3RvX2R1bW15X2ZvbGRlciUzRSUyMiklMEF0b2tlbml6ZXIuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKQ==",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"># Làm bất cứ điều gì với mô hình, huấn luyện nó, tinh chỉnh nó ...</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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function os(k){let i,o;return i=new w({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJjYW1lbWJlcnQtYmFzZSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEElMjMlMjBMJUMzJUEwbSUyMGIlRTElQkElQTV0JTIwYyVFMSVCQiVBOSUyMCVDNCU5MWklRTElQkIlODF1JTIwZyVDMyVBQyUyMHYlRTElQkIlOUJpJTIwbSVDMyVCNCUyMGglQzMlQUNuaCUyQyUyMGh1JUUxJUJBJUE1biUyMGx1eSVFMSVCQiU4N24lMjBuJUMzJUIzJTJDJTIwdGluaCUyMGNoJUUxJUJCJTg5bmglMjBuJUMzJUIzJTIwLi4uJTBBJTBBbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKSUwQXRva2VuaXplci5zYXZlX3ByZXRyYWluZWQoJTIyJTNDcGF0aF90b19kdW1teV9mb2xkZXIlM0UlMjIp",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"># Làm bất cứ điều gì với mô hình, huấn luyện nó, tinh chỉnh nó ...</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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function ps(k){let i,o,c,r="Nếu bạn nhìn vào kích thước tệp (ví dụ: với <code>ls -lh</code>), bạn sẽ thấy rằng tệp dict trạng thái mô hình (<em>t5_model.h5</em>) là ngoại lệ duy nhất, với hơn 400 MB.",T;return i=new w({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(){M(i.$$.fragment),o=h(),c=p("p"),c.innerHTML=r},l(u){d(i.$$.fragment,u),o=s(u),c=m(u,"P",{"data-svelte-h":!0}),a(c)!=="svelte-pxztaz"&&(c.innerHTML=r)},m(u,_){y(i,u,_),l(u,o,_),l(u,c,_),T=!0},i(u){T||(f(i.$$.fragment,u),T=!0)},o(u){g(i.$$.fragment,u),T=!1},d(u){u&&(n(o),n(c)),v(i,u)}}}function ms(k){let i,o,c,r="Nếu bạn nhìn vào kích thước tệp (ví dụ: với <code>ls -lh</code>), bạn sẽ thấy rằng tệp dict trạng thái mô hình (<em>pytorch_model.bin</em>) là ngoại lệ duy nhất, với hơn 400 MB.",T;return i=new w({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(){M(i.$$.fragment),o=h(),c=p("p"),c.innerHTML=r},l(u){d(i.$$.fragment,u),o=s(u),c=m(u,"P",{"data-svelte-h":!0}),a(c)!=="svelte-al7hsj"&&(c.innerHTML=r)},m(u,_){y(i,u,_),l(u,o,_),l(u,c,_),T=!0},i(u){T||(f(i.$$.fragment,u),T=!0)},o(u){g(i.$$.fragment,u),T=!1},d(u){u&&(n(o),n(c)),v(i,u)}}}function as(k){let i;return{c(){i=Hh(`✏️  Khi tạo kho lưu trữ từ giao diện web, tệp *.gitattributes* được tự động thiết lập để xem xét các tệp có phần mở rộng nhất định, chẳng hạn như *.bin* và *.h5*, là tệp lớn và git-lfs sẽ theo dõi chúng mà không có thiết lập cần thiết về phía bạn.
`)},l(o){i=zh(o,`✏️  Khi tạo kho lưu trữ từ giao diện web, tệp *.gitattributes* được tự động thiết lập để xem xét các tệp có phần mở rộng nhất định, chẳng hạn như *.bin* và *.h5*, là tệp lớn và git-lfs sẽ theo dõi chúng mà không có thiết lập cần thiết về phía bạn.
`)},m(o,c){l(o,i,c)},d(o){o&&n(i)}}}function us(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function rs(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function gs(k){let i,o,c,r="Chúng ta có thể thấy rằng tất cả các tệp đều có <code>Git</code> làm trình xử lý, ngoại trừ <em>t5_model.h5</em>, có <code>LFS</code>. Tuyệt vời!",T;return i=new w({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(){M(i.$$.fragment),o=h(),c=p("p"),c.innerHTML=r},l(u){d(i.$$.fragment,u),o=s(u),c=m(u,"P",{"data-svelte-h":!0}),a(c)!=="svelte-17qdzfo"&&(c.innerHTML=r)},m(u,_){y(i,u,_),l(u,o,_),l(u,c,_),T=!0},i(u){T||(f(i.$$.fragment,u),T=!0)},o(u){g(i.$$.fragment,u),T=!1},d(u){u&&(n(o),n(c)),v(i,u)}}}function fs(k){let i,o,c,r="Chúng ta có thể thấy rằng tất cả các tệp đều có <code>Git</code> làm trình xử lý, ngoại trừ <em>pytorch_model.bin</em> và <em>sentencepiece.bpe.model</em>, có<code>LFS</code>. Tuyệt vời!",T;return i=new w({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(){M(i.$$.fragment),o=h(),c=p("p"),c.innerHTML=r},l(u){d(i.$$.fragment,u),o=s(u),c=m(u,"P",{"data-svelte-h":!0}),a(c)!=="svelte-1pf78k8"&&(c.innerHTML=r)},m(u,_){y(i,u,_),l(u,o,_),l(u,c,_),T=!0},i(u){T||(f(i.$$.fragment,u),T=!0)},o(u){g(i.$$.fragment,u),T=!1},d(u){u&&(n(o),n(c)),v(i,u)}}}function bs(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function Ms(k){let i,o;return i=new w({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(){M(i.$$.fragment)},l(c){d(i.$$.fragment,c)},m(c,r){y(i,c,r),o=!0},i(c){o||(f(i.$$.fragment,c),o=!0)},o(c){g(i.$$.fragment,c),o=!1},d(c){v(i,c)}}}function ds(k){let i,o="Nếu chúng ta xem qua kho lưu trữ mô hình khi quá trình này kết thúc, chúng ta có thể thấy tất cả các tệp được thêm gần đây:",c,r,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,_,Z="Giao diện người dùng cho phép bạn khám phá các tệp mô hình và các cam kết cũng như xem sự khác biệt được giới thiệu bởi mỗi cam kết:",U,$,C='<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=p("p"),i.textContent=o,c=h(),r=p("div"),r.innerHTML=T,u=h(),_=p("p"),_.textContent=Z,U=h(),$=p("div"),$.innerHTML=C,this.h()},l(b){i=m(b,"P",{"data-svelte-h":!0}),a(i)!=="svelte-1u96cav"&&(i.textContent=o),c=s(b),r=m(b,"DIV",{class:!0,"data-svelte-h":!0}),a(r)!=="svelte-1ffykca"&&(r.innerHTML=T),u=s(b),_=m(b,"P",{"data-svelte-h":!0}),a(_)!=="svelte-1tg0e72"&&(_.textContent=Z),U=s(b),$=m(b,"DIV",{class:!0,"data-svelte-h":!0}),a($)!=="svelte-2jd8bj"&&($.innerHTML=C),this.h()},h(){B(r,"class","flex justify-center"),B($,"class","flex justify-center")},m(b,J){l(b,i,J),l(b,c,J),l(b,r,J),l(b,u,J),l(b,_,J),l(b,U,J),l(b,$,J)},d(b){b&&(n(i),n(c),n(r),n(u),n(_),n(U),n($))}}}function ys(k){let i,o="Nếu chúng ta xem qua kho lưu trữ mô hình khi quá trình này kết thúc, chúng ta có thể thấy tất cả các tệp được thêm gần đây:",c,r,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,_,Z="Giao diện người dùng cho phép bạn khám phá các tệp mô hình và các cam kết cũng như xem sự khác biệt được giới thiệu bởi mỗi cam kết:",U,$,C='<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=p("p"),i.textContent=o,c=h(),r=p("div"),r.innerHTML=T,u=h(),_=p("p"),_.textContent=Z,U=h(),$=p("div"),$.innerHTML=C,this.h()},l(b){i=m(b,"P",{"data-svelte-h":!0}),a(i)!=="svelte-1u96cav"&&(i.textContent=o),c=s(b),r=m(b,"DIV",{class:!0,"data-svelte-h":!0}),a(r)!=="svelte-imfjvb"&&(r.innerHTML=T),u=s(b),_=m(b,"P",{"data-svelte-h":!0}),a(_)!=="svelte-1tg0e72"&&(_.textContent=Z),U=s(b),$=m(b,"DIV",{class:!0,"data-svelte-h":!0}),a($)!=="svelte-1g561m5"&&($.innerHTML=C),this.h()},h(){B(r,"class","flex justify-center"),B($,"class","flex justify-center")},m(b,J){l(b,i,J),l(b,c,J),l(b,r,J),l(b,u,J),l(b,_,J),l(b,U,J),l(b,$,J)},d(b){b&&(n(i),n(c),n(r),n(u),n(_),n(U),n($))}}}function vs(k){let i,o,c,r,T,u,_,Z,U,$,C,b,J="Trong các bước bên dưới, chúng ta sẽ xem xét các cách dễ nhất để chia sẻ các mô hình được huấn luyện trước với 🤗 Hub. Ta có sẵn các công cụ và tiện ích giúp việc chia sẻ và cập nhật mô hình trực tiếp trên Hub trở nên đơn giản, và chúng ta sẽ cùng nhau khám phá bên dưới.",D,G,pt,W,j="Chúng tôi khuyến khích tất cả người dùng huấn luyện mô hình đóng góp bằng cách chia sẻ chúng với cộng đồng - chia sẻ mô hình, ngay cả khi được huấn luyện trên các bộ dữ liệu rất cụ thể, sẽ giúp ích cho những người khác, giúp họ tiết kiệm thời gian và tính toán tài nguyên và cung cấp quyền truy cập vào các hiện vật hữu ích được huấn luyện. Đổi lại, bạn có thể hưởng lợi từ công việc mà những người khác đã làm!",x,mt,Yi="Có ba cách để tạo kho lưu trữ mô hình mới:",Cn,at,Fi="<li>Sử dụng API <code>push_to_hub</code></li> <li>Sử dụng thư viện Python <code>huggingface_hub</code></li> <li>Sử dụng giao diện web</li>",Zn,ut,qi="Khi bạn đã tạo một kho lưu trữ, bạn có thể tải tệp lên đó qua git và git-lfs. Chúng tôi sẽ hướng dẫn bạn cách tạo kho lưu trữ mô hình và tải tệp lên chúng trong các phần sau.",Gn,rt,xn,V,N,dn,gt,Pi="Cách đơn giản nhất để tải tệp lên Hub là tận dụng API <code>push_to_hub</code>.",Bn,ft,Di='Trước khi đi xa hơn, bạn sẽ cần tạo token xác thực để API <code>huggingface_hub</code> biết bạn là ai và bạn có quyền ghi vào không gian tên nào. Đảm bảo rằng bạn đang ở trong môi trường mà bạn đã cài đặt <code>transformers</code> (xem <a href="/course/chapter0">Thiết lập</a>). Nếu bạn đang ở trong notebook, bạn có thể sử dụng chức năng sau để đăng nhập:',Wn,bt,Vn,Mt,Ki="Trên terminal, bạn có thể:",Nn,dt,In,yt,Oi='Trong cả hai trường hợp, bạn sẽ được nhắc nhập tên người dùng và mật khẩu của mình, đó là những mật khẩu mà bạn sử dụng để đăng nhập vào Hub. Nếu bạn chưa có hồ sơ Hub, bạn nên tạo một hồ sơ <a href="https://huggingface.co/join" rel="nofollow">tại đây</a>.',Hn,vt,tc="Tuyệt vời! Bây giờ bạn có token xác thực được lưu trữ trong thư mục bộ nhớ cache của mình. Hãy tạo một số kho lưu trữ thôi!",zn,I,H,yn,kt,ec="Ở cấp độ thấp hơn, việc truy cập Model Hub có thể được thực hiện trực tiếp trên các mô hình, tokenizer và các đối tượng cấu hình thông qua phương thức <code>push_to_hub()</code>. Phương pháp này xử lý cả việc tạo kho lưu trữ và đẩy các tệp mô hình và tệp tokenizer trực tiếp đến kho lưu trữ. Không cần xử lý thủ công, không giống như với API mà chúng ta sẽ thấy bên dưới.",Ln,_t,nc="Để có ý tưởng về cách nó hoạt động, trước tiên chúng ta hãy khởi tạo một mô hình và một tokenizer:",Qn,z,L,vn,Tt,lc="Bạn có thể tự do làm bất cứ điều gì bạn muốn với những thứ này - thêm token vào trình tokenize, huấn luyện mô hình, tinh chỉnh nó. Khi bạn hài lòng với kết quả mô hình, trọng số, và tokenizer, bạn có thể tận dụng phương thức <code>push_to_hub()</code> có sẵn trực tiếp trên đối tượng <code>model</code>:",Sn,wt,Rn,Ut,ic=`Điều này sẽ tạo kho lưu trữ mới <code>dummy-model</code> trong hồ sơ của bạn và điền nó vào các tệp mô hình của bạn.
Làm tương tự với tokenizer để tất cả các tệp có sẵn trong kho lưu trữ này:`,Xn,$t,An,jt,cc="Nếu bạn thuộc một tổ chức, chỉ cần chỉ định tham số <code>organization</code> để tải lên không gian tên của tổ chức đó:",En,Jt,Yn,Ct,hc="Nếu bạn muốn sử dụng một token Hugging Face cụ thể, bạn cũng có thể chỉ định nó thông qua <code>push_to_hub()</code>:",Fn,Zt,qn,Gt,sc='Giờ hãy đi tới Model Hub để tìm mô hình mới được tải lên của bạn: <em><a href="https://huggingface.co/user-or-organization/dummy-model" rel="nofollow">https://huggingface.co/user-or-organization/dummy-model</a></em>.',Pn,xt,oc="Nhấp vào tab “Files and versions” (“Tệp và phiên bản”) và bạn sẽ thấy các tệp hiển thị trong ảnh chụp màn hình sau:",Dn,kn,nt,Kn,Bt,pc='Như bạn đã thấy, phương thức <code>push_to_hub()</code> nhận một vài tham số, giúp bạn có thể tải lên không gian tên tổ chức hoặc kho lưu trữ cụ thể hoặc sử dụng token API khác. Chúng tôi khuyên bạn nên xem thông số kỹ thuật phương pháp có sẵn trực tiếp trong <a href="https://huggingface.co/transformers/model_sharing.html" rel="nofollow">🤗 tài liệu về Transformers</a> để biết những gì ta có thể làm.',On,Wt,mc='Phương thức <code>push_to_hub()</code> được hỗ trợ bởi gói Python <a href="https://github.com/huggingface/huggingface_hub" rel="nofollow"><code>huggingface_hub</code></a>, cung cấp một API trực tiếp đến Hugging Face Hub. Nó được tích hợp trong 🤗 Transformers và một số thư viện học máy khác, như <a href="https://github.com/allenai/allennlp" rel="nofollow"><code>allenlp</code></a>. Mặc dù chúng tôi tập trung vào tích hợp 🤗 Transformers trong chương này, việc tích hợp nó vào mã hoặc thư viện của riêng bạn rất đơn giản.',tl,Vt,ac="Chuyển đến phần cuối cùng để xem cách tải tệp lên kho lưu trữ mới tạo của bạn!",el,Nt,nl,It,uc="Thư viện Python <code>huggingface_hub</code> là một gói cung cấp một bộ công cụ cho các hub mô hình và tập dữ liệu. Nó cung cấp các phương thức và lớp đơn giản cho các tác vụ phổ biến như tiếp nhận thông tin về kho lưu trữ trên hub và quản lý chúng. Nó cung cấp các API đơn giản hoạt động trên git để quản lý nội dung của các kho đó và tích hợp Hub trong các dự án và thư viện của bạn.",ll,Ht,rc="Tương tự như việc sử dụng API <code>push_to_hub</code>, điều này sẽ yêu cầu bạn lưu token API vào bộ nhớ cache của mình. Để thực hiện việc này, bạn sẽ cần sử dụng lệnh <code>login</code> từ CLI, như đã đề cập trong phần trước (một lần nữa, hãy đảm bảo thêm các lệnh này với ký tự  <code>!</code> nếu chạy trên Google Colab):",il,zt,cl,Lt,gc="Gói <code>huggingface_hub</code> cung cấp một số phương thức và lớp hữu ích cho mục đích của chúng ta. Thứ nhất, có một số phương pháp để quản lý việc tạo, xóa kho lưu trữ và các phương pháp khác:",hl,Qt,sl,St,fc="Ngoài ra, nó cung cấp lớp <code>Repository</code> rất mạnh mẽ để quản lý một kho lưu trữ cục bộ. Chúng ta sẽ khám phá các phương thức này và lớp đó trong phần tiếp theo để hiểu cách tận dụng chúng.",ol,Rt,bc="Phương thức <code>create_repo</code> có thể được sử dụng để tạo một kho lưu trữ mới trên hub:",pl,Xt,ml,At,Mc="Thao tác này sẽ tạo kho lưu trữ <code>dummy-model</code> trong không gian tên của bạn. Nếu muốn, bạn có thể chỉ định tổ chức nào mà kho lưu trữ sẽ thuộc về bằng cách sử dụng tham số <code>organization</code>:",al,Et,ul,Yt,dc=`Thao tác này sẽ tạo kho lưu trữ <code>dummy-model</code> trong không gian tên <code>huggingface</code>, giả sử bạn thuộc tổ chức đó.
Các tham số có thể hữu ích khác là:`,rl,Ft,yc="<li><code>private</code>, để chỉ định xem liệu kho lưu trữ có nên hiển thị với những người khác hay không.</li> <li><code>token</code>, nếu bạn muốn ghi đè token được lưu trữ trong bộ nhớ cache của mình bằng một token nhất định.</li> <li><code>repo_type</code>, nếu bạn muốn tạo <code>dataset</code>  hoặc <code>space</code> thay vì một mô hình. Các giá trị được chấp nhận là <code>&quot;dataset&quot;</code> và <code>&quot;space&quot;</code>.</li>",gl,qt,vc="Khi kho lưu trữ được tạo, chúng ta nên thêm tệp vào đó! Chuyển sang phần tiếp theo để xem ba cách có thể xử lý vấn đề này.",fl,Pt,bl,Dt,kc="Giao diện web cung cấp các công cụ để quản lý kho lưu trữ trực tiếp trong Hub. Sử dụng giao diện này, bạn có thể dễ dàng tạo kho lưu trữ, thêm tệp (thậm chí cả tệp lớn!), Khám phá các mô hình, trực quan hóa các điểm khác biệt và hơn thế nữa.",Ml,Kt,_c='Để tạo một kho lưu trữ mới, hãy truy cập <a href="https://huggingface.co/new" rel="nofollow">huggingface.co/new</a>:',dl,lt,Tc='<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%"/>',yl,Ot,wc="Đầu tiên, chỉ định chủ sở hữu của kho lưu trữ: đây có thể là bạn hoặc bất kỳ tổ chức nào mà bạn liên kết. Nếu bạn chọn một tổ chức, mô hình sẽ được giới thiệu trên trang của tổ chức và mọi thành viên của tổ chức sẽ có khả năng đóng góp vào kho lưu trữ.",vl,te,Uc="Tiếp theo, nhập tên mô hình của bạn. Đây cũng sẽ là tên của kho lưu trữ. Cuối cùng, bạn có thể chỉ định xem bạn muốn mô hình của mình là công khai hay riêng tư. Các mô hình tư nhân được ẩn khỏi chế độ xem công khai.",kl,ee,$c="Sau khi tạo kho mô hình, bạn sẽ thấy một trang như sau:",_l,it,jc='<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%"/>',Tl,ne,Jc="Đây là nơi mô hình của bạn sẽ được lưu trữ. Để bắt đầu điền nó, bạn có thể thêm tệp README trực tiếp từ giao diện web.",wl,ct,Cc='<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%"/>',Ul,le,Zc="Tệp README nằm trong Markdown - hãy thoải mái sử dụng nó! Phần thứ ba của chương này dành riêng cho việc xây dựng một thẻ mô hình. Đây là những điều quan trọng hàng đầu trong việc mang lại giá trị cho mô hình của bạn, vì chúng là nơi bạn nói cho người khác biết nó có thể làm gì.",$l,ie,Gc="Nếu bạn nhìn vào tab “Files and versions” hay “Tệp và phiên bản”, bạn sẽ thấy rằng chưa có nhiều tệp ở đó - chỉ có <em>README.md</em>  bạn vừa tạo và tệp <em>.gitattributes</em> theo dõi các tệp lớn.",jl,ht,xc='<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%"/>',Jl,ce,Bc="Tiếp theo, chúng ta sẽ xem xét cách thêm một số tệp mới.",Cl,he,Zl,se,Wc='Hệ thống quản lý tệp trên Hugging Face Hub dựa trên git cho các tệp thông thường và git-lfs (viết tắt của <a href="https://git-lfs.github.com/" rel="nofollow">Git Large File Storage</a>) cho các tệp lớn hơn .',Gl,oe,Vc="Trong phần tiếp theo, chúng ta sẽ xem xét ba cách khác nhau để tải tệp lên Hub: thông qua <code>huggingface_hub</code> và thông qua lệnh git.",xl,pe,Bl,me,Nc=`Sử dụng <code>upload_file</code> không yêu cầu cài đặt git và git-lfs trên hệ thống của bạn. Nó đẩy các tệp trực tiếp đến 🤗 Hub bằng cách sử dụng các yêu cầu HTTP POST. Một hạn chế của phương pháp này là nó không xử lý các tệp có kích thước lớn hơn 5GB.
Nếu tệp của bạn lớn hơn 5GB, vui lòng làm theo hai phương pháp khác được nêu chi tiết bên dưới.`,Wl,ae,Ic="API có thể được sử dụng như sau:",Vl,ue,Nl,re,Hc=`Thao tác này sẽ tải tệp <code>config.json</code> có sẵn tại <code>&lt;path_to_file&gt;</code> vào thư mục gốc của kho lưu trữ là  <code>config.json</code>, vào kho lưu trữ <code>dummy-model</code>.
Các tham số có thể hữu ích khác là:`,Il,ge,zc="<li><code>token</code>, nếu bạn muốn ghi đè token được lưu trữ trong bộ nhớ cache của mình bằng một token nhất định.</li> <li><code>repo_type</code>, nếu bạn muốn tải lên <code>dataset</code> hoặc <code>space</code> thay vì một mô hình. Các giá trị được chấp nhận là <code>&quot;dataset&quot;</code> và <code>&quot;space&quot;</code>.</li>",Hl,fe,zl,be,Lc="Lớp <code>Repository</code> quản lý một kho lưu trữ cục bộ theo cách giống như git. Nó tóm tắt hầu hết các điểm khó khăn mà người ta có thể có với git để cung cấp tất cả các tính năng mà chúng tôi yêu cầu.",Ll,Me,Qc='Sử dụng lớp này yêu cầu phải cài đặt git và git-lfs, vì vậy hãy đảm bảo rằng bạn đã cài đặt git-lfs (xem <a href="https://git-lfs.github.com/" rel="nofollow">tại đây</a> để biết hướng dẫn cài đặt) và thiết lập trước khi bắt đầu.',Ql,de,Sc="Để bắt đầu chơi với kho lưu trữ chúng ta vừa tạo, chúng ta có thể bắt đầu bằng cách khởi tạo nó vào một thư mục cục bộ bằng cách sao chép kho lưu trữ từ xa:",Sl,ye,Rl,ve,Rc="Thao tác này đã tạo thư mục <code>&lt;path_to_dummy_folder&gt;</code> trong thư mục làm việc của chúng ta. Thư mục này chỉ chứa tệp <code>.gitattributes</code> vì đó là tệp duy nhất được tạo khi khởi tạo kho lưu trữ thông qua <code>create_repo</code>.",Xl,ke,Xc="Từ thời điểm này, chúng ta có thể tận dụng một số phương pháp git truyền thống:",Al,_e,El,Te,Ac='Và những cái khác! Chúng tôi khuyên bạn nên xem tài liệu về <code>Repository</code> hay <code>Kho lưu trữ</code> có sẵn <a href="https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management" rel="nofollow">tại đây</a> để biết tổng quan về tất cả các phương pháp.',Yl,we,Ec="Hiện tại, chúng ta có một mô hình và một tokenizer mà ta muốn đưa vào Hub. Chúng ta đã nhân bản thành công kho lưu trữ, do đó chúng tôi có thể lưu các tệp trong kho lưu trữ đó.",Fl,Ue,Yc="Trước tiên, chúng tôi đảm bảo rằng bản sao cục bộ được cập nhật bằng cách kéo về những thay đổi mới nhất:",ql,$e,Pl,je,Fc="Sau đó, ta lưu mô hình và tệp tokenizer:",Dl,Je,Kl,Ce,qc="<code>&lt;path_to_dummy_folder&gt;</code> bây giờ chứa tất cả các tệp mô hình và tokenizer. Chúng ta thực hiện theo quy trình làm việc git thông thường bằng cách thêm tệp vào khu vực lưu trữ thay đổi, cam kết chúng và đẩy chúng vào hub:",Ol,Ze,ti,Ge,Pc="Xin chúc mừng! Bạn vừa đẩy các tệp đầu tiên của mình lên Hub.",ei,xe,ni,Be,Dc="Đây là cách tiếp cận rất đơn giản để tải tệp lên: chúng ta sẽ làm trực tiếp với git và git-lfs. Hầu hết khó khăn đã được loại bỏ bởi các cách tiếp cận trước đây, nhưng có một số lưu ý với phương pháp tiếp theo, vì vậy chúng ta sẽ theo một trường hợp sử dụng phức tạp hơn.",li,We,Kc='Sử dụng lớp này yêu cầu phải cài đặt git và git-lfs, vì vậy hãy đảm bảo bạn đã cài đặt <a href="https://git-lfs.github.com/" rel="nofollow">git-lfs</a> (xem hướng dẫn cài đặt tại đây) và cài đặt trước khi bắt đầu .',ii,Ve,Oc="Trước tiên, hãy bắt đầu bằng cách khởi tạo git-lfs:",ci,Ne,hi,Ie,si,He,th="Sau khi hoàn tất, bước đầu tiên là sao chép kho lưu trữ mô hình của bạn:",oi,ze,pi,Le,eh="Tên người dùng của tôi là <code>lysandre</code> và ta đã sử dụng tên mô hình là <code>dummy</code>, vì vậy lệnh kết thúc như sau:",mi,Qe,ai,Se,nh="Bây giờ ta có một thư mục tên <em>dummy</em> trong thư mục làm việc của mình. Ta có thể <code>cd</code> vào thư mục và xem nội dung:",ui,Re,ri,Xe,gi,Ae,lh="Nếu bạn vừa tạo kho lưu trữ của mình bằng phương pháp <code>create_repo</code> của Hugging Face Hub, thì thư mục này chỉ nên chứa tệp <code>.gitattributes</code> ẩn. Nếu bạn đã làm theo hướng dẫn trong phần trước để tạo kho lưu trữ bằng giao diện web, thì thư mục phải chứa một tệp <em>README.md</em> duy nhất cùng với tệp <code>.gitattributes</code> ẩn, như được hiển thị ở đây.",fi,Ee,ih="Việc thêm một tệp có kích thước thông thường, chẳng hạn như tệp cấu hình, tệp từ vựng hoặc về cơ bản là bất kỳ tệp nào dưới vài megabyte, được thực hiện chính xác như cách người ta làm trong bất kỳ hệ thống dựa trên git nào. Tuy nhiên, các tệp lớn hơn phải được đăng ký thông qua git-lfs để đẩy chúng lên <em>huggingface.co</em>.",bi,Ye,ch="Hãy quay lại Python một chút để tạo một mô hình và trình tokenize mà chúng ta muốn cam kết với kho lưu trữ dummy của chúng ta:",Mi,Q,S,_n,Fe,hh="Bây giờ chúng ta đã lưu một số tạo tác mô hình và tokenizer, hãy xem xét lại thư mục <em>dummy</em>:",di,qe,yi,R,X,Tn,st,sh=" ",vi,ki,Pe,oh="Bây giờ chúng ta có thể tiếp tục và tiến hành như chúng ta thường làm với các kho lưu trữ Git truyền thống. Chúng ta có thể thêm tất cả các tệp vào môi trường dàn dựng của Git bằng lệnh <code>git add</code>:",_i,De,Ti,Ke,ph="Sau đó, chúng ta có thể xem xét các tệp hiện đang được sắp xếp:",wi,Oe,Ui,A,E,wn,tn,mh="Tương tự, chúng ta có thể đảm bảo rằng git-lfs đang theo dõi các tệp chính xác bằng cách sử dụng lệnh <code>status</code>:",$i,en,ji,Y,F,Un,nn,ah="Hãy tiến hành các bước cuối cùng, cam kết và đẩy đến kho lưu trữ từ xa <em>huggingface.co</em>:",Ji,ln,Ci,q,P,$n,cn,uh="Việc đẩy có thể mất một chút thời gian, tùy thuộc vào tốc độ kết nối internet và kích thước tệp của bạn:",Zi,hn,Gi,sn,xi,jn,on,Bi,Jn,Wi;T=new Fh({props:{fw:k[0]}}),_=new ot({props:{title:"Chia sẻ các mô hình huấn luyện trước",local:"chia-sẻ-các-mô-hình-huấn-luyện-trước",headingTag:"h1"}});const rh=[Dh,Ph],pn=[];function gh(t,e){return t[0]==="pt"?0:1}U=gh(k),$=pn[U]=rh[U](k),G=new Ei({props:{id:"9yY3RB_GSPM"}}),rt=new ot({props:{title:"Sử dụng API push_to_hub",local:"sử-dụng-api-pushtohub",headingTag:"h2"}});const fh=[Oh,Kh],mn=[];function bh(t,e){return t[0]==="pt"?0:1}V=bh(k),N=mn[V]=fh[V](k),bt=new w({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),dt=new w({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}});const Mh=[es,ts],an=[];function dh(t,e){return t[0]==="pt"?0:1}I=dh(k),H=an[I]=Mh[I](k);const yh=[ls,ns],un=[];function vh(t,e){return t[0]==="pt"?0:1}z=vh(k),L=un[z]=yh[z](k),wt=new w({props:{code:"bW9kZWwucHVzaF90b19odWIoJTIyZHVtbXktbW9kZWwlMjIp",highlighted:'model.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),$t=new w({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),Jt=new w({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}}),Zt=new w({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 kh(t,e){return t[0]==="pt"?cs:is}let Vi=kh(k),K=Vi(k);nt=new Ih({props:{$$slots:{default:[hs]},$$scope:{ctx:k}}}),Nt=new ot({props:{title:"Sử dụng thư viện Python huggingface_hub",local:"sử-dụng-thư-viện-python-huggingfacehub",headingTag:"h2"}}),zt=new w({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}}),Qt=new w({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMCglMEElMjAlMjAlMjAlMjAlMjMlMjBRdSVFMSVCQSVBM24lMjBsJUMzJUJEJTIwbmclQzYlQjAlRTElQkIlOURpJTIwZCVDMyVCOW5nJTBBJTIwJTIwJTIwJTIwbG9naW4lMkMlMEElMjAlMjAlMjAlMjBsb2dvdXQlMkMlMEElMjAlMjAlMjAlMjB3aG9hbWklMkMlMEElMEElMjAlMjAlMjAlMjAlMjMlMjBUJUUxJUJBJUExbyUyMHYlQzMlQTAlMjBxdSVFMSVCQSVBM24lMjBsJUMzJUJEJTIwa2hvJTIwZCVFMSVCQiVBRiUyMGxpJUUxJUJCJTg3dSUwQSUyMCUyMCUyMCUyMGNyZWF0ZV9yZXBvJTJDJTBBJTIwJTIwJTIwJTIwZGVsZXRlX3JlcG8lMkMlMEElMjAlMjAlMjAlMjB1cGRhdGVfcmVwb192aXNpYmlsaXR5JTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwViVDMyVBMCUyMG0lRTElQkIlOTl0JTIwcyVFMSVCQiU5MSUyMHBoJUM2JUIwJUM2JUExbmclMjB0aCVFMSVCQiVBOWMlMjB0cnV5JTIweHUlRTElQkElQTV0JTJGdGhheSUyMCVDNCU5MSVFMSVCQiU5NWklMjB0aCVDMyVCNG5nJTIwdGluJTIwdiVFMSVCQiU4MSUyMG0lRTElQkElQjd0JTIwbiVFMSVCQiU5OWklMjBkdW5nJTIwJTBBJTIwJTIwJTIwJTIwbGlzdF9tb2RlbHMlMkMlMEElMjAlMjAlMjAlMjBsaXN0X2RhdGFzZXRzJTJDJTBBJTIwJTIwJTIwJTIwbGlzdF9tZXRyaWNzJTJDJTBBJTIwJTIwJTIwJTIwbGlzdF9yZXBvX2ZpbGVzJTJDJTBBJTIwJTIwJTIwJTIwdXBsb2FkX2ZpbGUlMkMlMEElMjAlMjAlMjAlMjBkZWxldGVfZmlsZSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> (
    <span class="hljs-comment"># Quản lý người dùng</span>
    login,
    logout,
    whoami,

    <span class="hljs-comment"># Tạo và quản lý kho dữ liệu</span>
    create_repo,
    delete_repo,
    update_repo_visibility,

    <span class="hljs-comment"># Và một số phương thức truy xuất/thay đổi thông tin về mặt nội dung </span>
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`,wrap:!1}}),Xt=new w({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}}),Et=new w({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}}),Pt=new ot({props:{title:"Sử dụng giao diện web",local:"sử-dụng-giao-diện-web",headingTag:"h2"}}),he=new ot({props:{title:"Tải các tệp mô hình",local:"tải-các-tệp-mô-hình",headingTag:"h2"}}),pe=new ot({props:{title:"Phương pháp upload_file",local:"phương-pháp-uploadfile",headingTag:"h3"}}),ue=new w({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}}),fe=new ot({props:{title:"Lớp Repository",local:"lớp-repository",headingTag:"h3"}}),ye=new w({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}}),_e=new w({props:{code:"cmVwby5naXRfcHVsbCgpJTBBcmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoKSUwQXJlcG8uZ2l0X3B1c2goKSUwQXJlcG8uZ2l0X3RhZygp",highlighted:`repo.git_pull()
repo.git_add()
repo.git_commit()
repo.git_push()
repo.git_tag()`,wrap:!1}}),$e=new w({props:{code:"cmVwby5naXRfcHVsbCgp",highlighted:"repo.git_pull()",wrap:!1}}),Je=new w({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}}),Ze=new w({props:{code:"cmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoJTIyVGglQzMlQUFtJTIwbSVDMyVCNCUyMGglQzMlQUNuaCUyMHYlQzMlQTAlMjB0JUUxJUJCJTg3cCUyMHRva2VuaXplciUyMiklMEFyZXBvLmdpdF9wdXNoKCk=",highlighted:`repo.git_add()
repo.git_commit(<span class="hljs-string">&quot;Thêm mô hình và tệp tokenizer&quot;</span>)
repo.git_push()`,wrap:!1}}),xe=new ot({props:{title:"Phương pháp dựa trên git",local:"phương-pháp-dựa-trên-git",headingTag:"h3"}}),Ne=new w({props:{code:"Z2l0JTIwbGZzJTIwaW5zdGFsbA==",highlighted:"git lfs install",wrap:!1}}),Ie=new w({props:{code:"VXBkYXRlZCUyMGdpdCUyMGhvb2tzLiUwQUdpdCUyMExGUyUyMGluaXRpYWxpemVkLg==",highlighted:`Updated git hooks.
Git LFS initialized.`,wrap:!1}}),ze=new w({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}}),Qe=new w({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGbHlzYW5kcmUlMkZkdW1teQ==",highlighted:'git clone https:<span class="hljs-regexp">//</span>huggingface.co<span class="hljs-regexp">/lysandre/</span>dummy',wrap:!1}}),Re=new w({props:{code:"Y2QlMjBkdW1teSUyMCUyNiUyNiUyMGxz",highlighted:'<span class="hljs-built_in">cd</span> dummy &amp;&amp; <span class="hljs-built_in">ls</span>',wrap:!1}}),Xe=new w({props:{code:"UkVBRE1FLm1k",highlighted:"README.md",wrap:!1}});const _h=[os,ss],rn=[];function Th(t,e){return t[0]==="pt"?0:1}Q=Th(k),S=rn[Q]=_h[Q](k),qe=new w({props:{code:"bHM=",highlighted:'<span class="hljs-built_in">ls</span>',wrap:!1}});const wh=[ms,ps],gn=[];function Uh(t,e){return t[0]==="pt"?0:1}R=Uh(k),X=gn[R]=wh[R](k),st=new Ih({props:{$$slots:{default:[as]},$$scope:{ctx:k}}}),De=new w({props:{code:"Z2l0JTIwYWRkJTIwLg==",highlighted:"git add .",wrap:!1}}),Oe=new w({props:{code:"Z2l0JTIwc3RhdHVz",highlighted:"git status",wrap:!1}});const $h=[rs,us],fn=[];function jh(t,e){return t[0]==="pt"?0:1}A=jh(k),E=fn[A]=$h[A](k),en=new w({props:{code:"Z2l0JTIwbGZzJTIwc3RhdHVz",highlighted:"git lfs status",wrap:!1}});const Jh=[fs,gs],bn=[];function Ch(t,e){return t[0]==="pt"?0:1}Y=Ch(k),F=bn[Y]=Jh[Y](k),ln=new w({props:{code:"Z2l0JTIwY29tbWl0JTIwLW0lMjAlMjJGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUyMg==",highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>',wrap:!1}});const Zh=[Ms,bs],Mn=[];function Gh(t,e){return t[0]==="pt"?0:1}q=Gh(k),P=Mn[q]=Zh[q](k),hn=new w({props:{code:"Z2l0JTIwcHVzaA==",highlighted:"git push",wrap:!1}}),sn=new w({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 xh(t,e){return t[0]==="pt"?ys:ds}let Ni=xh(k),O=Ni(k);return on=new qh({props:{source:"https://github.com/huggingface/course/blob/main/chapters/vi/chapter4/3.mdx"}}),{c(){i=p("meta"),o=h(),c=p("p"),r=h(),M(T.$$.fragment),u=h(),M(_.$$.fragment),Z=h(),$.c(),C=h(),b=p("p"),b.textContent=J,D=h(),M(G.$$.fragment),pt=h(),W=p("p"),W.textContent=j,x=h(),mt=p("p"),mt.textContent=Yi,Cn=h(),at=p("ul"),at.innerHTML=Fi,Zn=h(),ut=p("p"),ut.textContent=qi,Gn=h(),M(rt.$$.fragment),xn=h(),N.c(),dn=h(),gt=p("p"),gt.innerHTML=Pi,Bn=h(),ft=p("p"),ft.innerHTML=Di,Wn=h(),M(bt.$$.fragment),Vn=h(),Mt=p("p"),Mt.textContent=Ki,Nn=h(),M(dt.$$.fragment),In=h(),yt=p("p"),yt.innerHTML=Oi,Hn=h(),vt=p("p"),vt.textContent=tc,zn=h(),H.c(),yn=h(),kt=p("p"),kt.innerHTML=ec,Ln=h(),_t=p("p"),_t.textContent=nc,Qn=h(),L.c(),vn=h(),Tt=p("p"),Tt.innerHTML=lc,Sn=h(),M(wt.$$.fragment),Rn=h(),Ut=p("p"),Ut.innerHTML=ic,Xn=h(),M($t.$$.fragment),An=h(),jt=p("p"),jt.innerHTML=cc,En=h(),M(Jt.$$.fragment),Yn=h(),Ct=p("p"),Ct.innerHTML=hc,Fn=h(),M(Zt.$$.fragment),qn=h(),Gt=p("p"),Gt.innerHTML=sc,Pn=h(),xt=p("p"),xt.textContent=oc,Dn=h(),K.c(),kn=h(),M(nt.$$.fragment),Kn=h(),Bt=p("p"),Bt.innerHTML=pc,On=h(),Wt=p("p"),Wt.innerHTML=mc,tl=h(),Vt=p("p"),Vt.textContent=ac,el=h(),M(Nt.$$.fragment),nl=h(),It=p("p"),It.innerHTML=uc,ll=h(),Ht=p("p"),Ht.innerHTML=rc,il=h(),M(zt.$$.fragment),cl=h(),Lt=p("p"),Lt.innerHTML=gc,hl=h(),M(Qt.$$.fragment),sl=h(),St=p("p"),St.innerHTML=fc,ol=h(),Rt=p("p"),Rt.innerHTML=bc,pl=h(),M(Xt.$$.fragment),ml=h(),At=p("p"),At.innerHTML=Mc,al=h(),M(Et.$$.fragment),ul=h(),Yt=p("p"),Yt.innerHTML=dc,rl=h(),Ft=p("ul"),Ft.innerHTML=yc,gl=h(),qt=p("p"),qt.textContent=vc,fl=h(),M(Pt.$$.fragment),bl=h(),Dt=p("p"),Dt.textContent=kc,Ml=h(),Kt=p("p"),Kt.innerHTML=_c,dl=h(),lt=p("div"),lt.innerHTML=Tc,yl=h(),Ot=p("p"),Ot.textContent=wc,vl=h(),te=p("p"),te.textContent=Uc,kl=h(),ee=p("p"),ee.textContent=$c,_l=h(),it=p("div"),it.innerHTML=jc,Tl=h(),ne=p("p"),ne.textContent=Jc,wl=h(),ct=p("div"),ct.innerHTML=Cc,Ul=h(),le=p("p"),le.textContent=Zc,$l=h(),ie=p("p"),ie.innerHTML=Gc,jl=h(),ht=p("div"),ht.innerHTML=xc,Jl=h(),ce=p("p"),ce.textContent=Bc,Cl=h(),M(he.$$.fragment),Zl=h(),se=p("p"),se.innerHTML=Wc,Gl=h(),oe=p("p"),oe.innerHTML=Vc,xl=h(),M(pe.$$.fragment),Bl=h(),me=p("p"),me.innerHTML=Nc,Wl=h(),ae=p("p"),ae.textContent=Ic,Vl=h(),M(ue.$$.fragment),Nl=h(),re=p("p"),re.innerHTML=Hc,Il=h(),ge=p("ul"),ge.innerHTML=zc,Hl=h(),M(fe.$$.fragment),zl=h(),be=p("p"),be.innerHTML=Lc,Ll=h(),Me=p("p"),Me.innerHTML=Qc,Ql=h(),de=p("p"),de.textContent=Sc,Sl=h(),M(ye.$$.fragment),Rl=h(),ve=p("p"),ve.innerHTML=Rc,Xl=h(),ke=p("p"),ke.textContent=Xc,Al=h(),M(_e.$$.fragment),El=h(),Te=p("p"),Te.innerHTML=Ac,Yl=h(),we=p("p"),we.textContent=Ec,Fl=h(),Ue=p("p"),Ue.textContent=Yc,ql=h(),M($e.$$.fragment),Pl=h(),je=p("p"),je.textContent=Fc,Dl=h(),M(Je.$$.fragment),Kl=h(),Ce=p("p"),Ce.innerHTML=qc,Ol=h(),M(Ze.$$.fragment),ti=h(),Ge=p("p"),Ge.textContent=Pc,ei=h(),M(xe.$$.fragment),ni=h(),Be=p("p"),Be.textContent=Dc,li=h(),We=p("p"),We.innerHTML=Kc,ii=h(),Ve=p("p"),Ve.textContent=Oc,ci=h(),M(Ne.$$.fragment),hi=h(),M(Ie.$$.fragment),si=h(),He=p("p"),He.textContent=th,oi=h(),M(ze.$$.fragment),pi=h(),Le=p("p"),Le.innerHTML=eh,mi=h(),M(Qe.$$.fragment),ai=h(),Se=p("p"),Se.innerHTML=nh,ui=h(),M(Re.$$.fragment),ri=h(),M(Xe.$$.fragment),gi=h(),Ae=p("p"),Ae.innerHTML=lh,fi=h(),Ee=p("p"),Ee.innerHTML=ih,bi=h(),Ye=p("p"),Ye.textContent=ch,Mi=h(),S.c(),_n=h(),Fe=p("p"),Fe.innerHTML=hh,di=h(),M(qe.$$.fragment),yi=h(),X.c(),Tn=h(),M(st.$$.fragment),vi=Hh(sh),ki=h(),Pe=p("p"),Pe.innerHTML=oh,_i=h(),M(De.$$.fragment),Ti=h(),Ke=p("p"),Ke.textContent=ph,wi=h(),M(Oe.$$.fragment),Ui=h(),E.c(),wn=h(),tn=p("p"),tn.innerHTML=mh,$i=h(),M(en.$$.fragment),ji=h(),F.c(),Un=h(),nn=p("p"),nn.innerHTML=ah,Ji=h(),M(ln.$$.fragment),Ci=h(),P.c(),$n=h(),cn=p("p"),cn.textContent=uh,Zi=h(),M(hn.$$.fragment),Gi=h(),M(sn.$$.fragment),xi=h(),O.c(),jn=h(),M(on.$$.fragment),Bi=h(),Jn=p("p"),this.h()},l(t){const e=Eh("svelte-u9bgzb",document.head);i=m(e,"META",{name:!0,content:!0}),e.forEach(n),o=s(t),c=m(t,"P",{}),Nh(c).forEach(n),r=s(t),d(T.$$.fragment,t),u=s(t),d(_.$$.fragment,t),Z=s(t),$.l(t),C=s(t),b=m(t,"P",{"data-svelte-h":!0}),a(b)!=="svelte-1w9sbxr"&&(b.textContent=J),D=s(t),d(G.$$.fragment,t),pt=s(t),W=m(t,"P",{"data-svelte-h":!0}),a(W)!=="svelte-1yewtyh"&&(W.textContent=j),x=s(t),mt=m(t,"P",{"data-svelte-h":!0}),a(mt)!=="svelte-1dw8d2e"&&(mt.textContent=Yi),Cn=s(t),at=m(t,"UL",{"data-svelte-h":!0}),a(at)!=="svelte-s4cwp"&&(at.innerHTML=Fi),Zn=s(t),ut=m(t,"P",{"data-svelte-h":!0}),a(ut)!=="svelte-1j4beng"&&(ut.textContent=qi),Gn=s(t),d(rt.$$.fragment,t),xn=s(t),N.l(t),dn=s(t),gt=m(t,"P",{"data-svelte-h":!0}),a(gt)!=="svelte-177q11r"&&(gt.innerHTML=Pi),Bn=s(t),ft=m(t,"P",{"data-svelte-h":!0}),a(ft)!=="svelte-v6avnp"&&(ft.innerHTML=Di),Wn=s(t),d(bt.$$.fragment,t),Vn=s(t),Mt=m(t,"P",{"data-svelte-h":!0}),a(Mt)!=="svelte-1d2lq5o"&&(Mt.textContent=Ki),Nn=s(t),d(dt.$$.fragment,t),In=s(t),yt=m(t,"P",{"data-svelte-h":!0}),a(yt)!=="svelte-10ycswp"&&(yt.innerHTML=Oi),Hn=s(t),vt=m(t,"P",{"data-svelte-h":!0}),a(vt)!=="svelte-1ko5m3q"&&(vt.textContent=tc),zn=s(t),H.l(t),yn=s(t),kt=m(t,"P",{"data-svelte-h":!0}),a(kt)!=="svelte-1ltbpjp"&&(kt.innerHTML=ec),Ln=s(t),_t=m(t,"P",{"data-svelte-h":!0}),a(_t)!=="svelte-8wat0v"&&(_t.textContent=nc),Qn=s(t),L.l(t),vn=s(t),Tt=m(t,"P",{"data-svelte-h":!0}),a(Tt)!=="svelte-1fbiaem"&&(Tt.innerHTML=lc),Sn=s(t),d(wt.$$.fragment,t),Rn=s(t),Ut=m(t,"P",{"data-svelte-h":!0}),a(Ut)!=="svelte-3wgiu2"&&(Ut.innerHTML=ic),Xn=s(t),d($t.$$.fragment,t),An=s(t),jt=m(t,"P",{"data-svelte-h":!0}),a(jt)!=="svelte-fg7wv4"&&(jt.innerHTML=cc),En=s(t),d(Jt.$$.fragment,t),Yn=s(t),Ct=m(t,"P",{"data-svelte-h":!0}),a(Ct)!=="svelte-1gi79ls"&&(Ct.innerHTML=hc),Fn=s(t),d(Zt.$$.fragment,t),qn=s(t),Gt=m(t,"P",{"data-svelte-h":!0}),a(Gt)!=="svelte-1q3civp"&&(Gt.innerHTML=sc),Pn=s(t),xt=m(t,"P",{"data-svelte-h":!0}),a(xt)!=="svelte-xkcsjt"&&(xt.textContent=oc),Dn=s(t),K.l(t),kn=s(t),d(nt.$$.fragment,t),Kn=s(t),Bt=m(t,"P",{"data-svelte-h":!0}),a(Bt)!=="svelte-1pononn"&&(Bt.innerHTML=pc),On=s(t),Wt=m(t,"P",{"data-svelte-h":!0}),a(Wt)!=="svelte-e7rj7c"&&(Wt.innerHTML=mc),tl=s(t),Vt=m(t,"P",{"data-svelte-h":!0}),a(Vt)!=="svelte-1aq1u36"&&(Vt.textContent=ac),el=s(t),d(Nt.$$.fragment,t),nl=s(t),It=m(t,"P",{"data-svelte-h":!0}),a(It)!=="svelte-x2koet"&&(It.innerHTML=uc),ll=s(t),Ht=m(t,"P",{"data-svelte-h":!0}),a(Ht)!=="svelte-11vpcsr"&&(Ht.innerHTML=rc),il=s(t),d(zt.$$.fragment,t),cl=s(t),Lt=m(t,"P",{"data-svelte-h":!0}),a(Lt)!=="svelte-8x75j1"&&(Lt.innerHTML=gc),hl=s(t),d(Qt.$$.fragment,t),sl=s(t),St=m(t,"P",{"data-svelte-h":!0}),a(St)!=="svelte-3eny6r"&&(St.innerHTML=fc),ol=s(t),Rt=m(t,"P",{"data-svelte-h":!0}),a(Rt)!=="svelte-13gmdey"&&(Rt.innerHTML=bc),pl=s(t),d(Xt.$$.fragment,t),ml=s(t),At=m(t,"P",{"data-svelte-h":!0}),a(At)!=="svelte-1sj0ky5"&&(At.innerHTML=Mc),al=s(t),d(Et.$$.fragment,t),ul=s(t),Yt=m(t,"P",{"data-svelte-h":!0}),a(Yt)!=="svelte-zxltk8"&&(Yt.innerHTML=dc),rl=s(t),Ft=m(t,"UL",{"data-svelte-h":!0}),a(Ft)!=="svelte-b8zixn"&&(Ft.innerHTML=yc),gl=s(t),qt=m(t,"P",{"data-svelte-h":!0}),a(qt)!=="svelte-s5ldup"&&(qt.textContent=vc),fl=s(t),d(Pt.$$.fragment,t),bl=s(t),Dt=m(t,"P",{"data-svelte-h":!0}),a(Dt)!=="svelte-1ltnjcl"&&(Dt.textContent=kc),Ml=s(t),Kt=m(t,"P",{"data-svelte-h":!0}),a(Kt)!=="svelte-15bqwa2"&&(Kt.innerHTML=_c),dl=s(t),lt=m(t,"DIV",{class:!0,"data-svelte-h":!0}),a(lt)!=="svelte-y1ot35"&&(lt.innerHTML=Tc),yl=s(t),Ot=m(t,"P",{"data-svelte-h":!0}),a(Ot)!=="svelte-xf972m"&&(Ot.textContent=wc),vl=s(t),te=m(t,"P",{"data-svelte-h":!0}),a(te)!=="svelte-1443vps"&&(te.textContent=Uc),kl=s(t),ee=m(t,"P",{"data-svelte-h":!0}),a(ee)!=="svelte-xc6t2o"&&(ee.textContent=$c),_l=s(t),it=m(t,"DIV",{class:!0,"data-svelte-h":!0}),a(it)!=="svelte-152ae88"&&(it.innerHTML=jc),Tl=s(t),ne=m(t,"P",{"data-svelte-h":!0}),a(ne)!=="svelte-pugkbl"&&(ne.textContent=Jc),wl=s(t),ct=m(t,"DIV",{class:!0,"data-svelte-h":!0}),a(ct)!=="svelte-qxs73d"&&(ct.innerHTML=Cc),Ul=s(t),le=m(t,"P",{"data-svelte-h":!0}),a(le)!=="svelte-17jeiml"&&(le.textContent=Zc),$l=s(t),ie=m(t,"P",{"data-svelte-h":!0}),a(ie)!=="svelte-12lvtyl"&&(ie.innerHTML=Gc),jl=s(t),ht=m(t,"DIV",{class:!0,"data-svelte-h":!0}),a(ht)!=="svelte-1ed5vbc"&&(ht.innerHTML=xc),Jl=s(t),ce=m(t,"P",{"data-svelte-h":!0}),a(ce)!=="svelte-1by4cf6"&&(ce.textContent=Bc),Cl=s(t),d(he.$$.fragment,t),Zl=s(t),se=m(t,"P",{"data-svelte-h":!0}),a(se)!=="svelte-176nw9m"&&(se.innerHTML=Wc),Gl=s(t),oe=m(t,"P",{"data-svelte-h":!0}),a(oe)!=="svelte-vthks"&&(oe.innerHTML=Vc),xl=s(t),d(pe.$$.fragment,t),Bl=s(t),me=m(t,"P",{"data-svelte-h":!0}),a(me)!=="svelte-d2t0jn"&&(me.innerHTML=Nc),Wl=s(t),ae=m(t,"P",{"data-svelte-h":!0}),a(ae)!=="svelte-1gyd79h"&&(ae.textContent=Ic),Vl=s(t),d(ue.$$.fragment,t),Nl=s(t),re=m(t,"P",{"data-svelte-h":!0}),a(re)!=="svelte-urt90d"&&(re.innerHTML=Hc),Il=s(t),ge=m(t,"UL",{"data-svelte-h":!0}),a(ge)!=="svelte-w1i2m8"&&(ge.innerHTML=zc),Hl=s(t),d(fe.$$.fragment,t),zl=s(t),be=m(t,"P",{"data-svelte-h":!0}),a(be)!=="svelte-armn1c"&&(be.innerHTML=Lc),Ll=s(t),Me=m(t,"P",{"data-svelte-h":!0}),a(Me)!=="svelte-hqcwi1"&&(Me.innerHTML=Qc),Ql=s(t),de=m(t,"P",{"data-svelte-h":!0}),a(de)!=="svelte-10iuhcy"&&(de.textContent=Sc),Sl=s(t),d(ye.$$.fragment,t),Rl=s(t),ve=m(t,"P",{"data-svelte-h":!0}),a(ve)!=="svelte-smz61s"&&(ve.innerHTML=Rc),Xl=s(t),ke=m(t,"P",{"data-svelte-h":!0}),a(ke)!=="svelte-w6g7yl"&&(ke.textContent=Xc),Al=s(t),d(_e.$$.fragment,t),El=s(t),Te=m(t,"P",{"data-svelte-h":!0}),a(Te)!=="svelte-nhnah6"&&(Te.innerHTML=Ac),Yl=s(t),we=m(t,"P",{"data-svelte-h":!0}),a(we)!=="svelte-kj60tw"&&(we.textContent=Ec),Fl=s(t),Ue=m(t,"P",{"data-svelte-h":!0}),a(Ue)!=="svelte-1s2l0oh"&&(Ue.textContent=Yc),ql=s(t),d($e.$$.fragment,t),Pl=s(t),je=m(t,"P",{"data-svelte-h":!0}),a(je)!=="svelte-1bqvglm"&&(je.textContent=Fc),Dl=s(t),d(Je.$$.fragment,t),Kl=s(t),Ce=m(t,"P",{"data-svelte-h":!0}),a(Ce)!=="svelte-120m9l7"&&(Ce.innerHTML=qc),Ol=s(t),d(Ze.$$.fragment,t),ti=s(t),Ge=m(t,"P",{"data-svelte-h":!0}),a(Ge)!=="svelte-f4sv4g"&&(Ge.textContent=Pc),ei=s(t),d(xe.$$.fragment,t),ni=s(t),Be=m(t,"P",{"data-svelte-h":!0}),a(Be)!=="svelte-19goktt"&&(Be.textContent=Dc),li=s(t),We=m(t,"P",{"data-svelte-h":!0}),a(We)!=="svelte-1ek360u"&&(We.innerHTML=Kc),ii=s(t),Ve=m(t,"P",{"data-svelte-h":!0}),a(Ve)!=="svelte-1wkf7g7"&&(Ve.textContent=Oc),ci=s(t),d(Ne.$$.fragment,t),hi=s(t),d(Ie.$$.fragment,t),si=s(t),He=m(t,"P",{"data-svelte-h":!0}),a(He)!=="svelte-5z5t9r"&&(He.textContent=th),oi=s(t),d(ze.$$.fragment,t),pi=s(t),Le=m(t,"P",{"data-svelte-h":!0}),a(Le)!=="svelte-1c8gxpw"&&(Le.innerHTML=eh),mi=s(t),d(Qe.$$.fragment,t),ai=s(t),Se=m(t,"P",{"data-svelte-h":!0}),a(Se)!=="svelte-17v79ra"&&(Se.innerHTML=nh),ui=s(t),d(Re.$$.fragment,t),ri=s(t),d(Xe.$$.fragment,t),gi=s(t),Ae=m(t,"P",{"data-svelte-h":!0}),a(Ae)!=="svelte-18yk3z5"&&(Ae.innerHTML=lh),fi=s(t),Ee=m(t,"P",{"data-svelte-h":!0}),a(Ee)!=="svelte-1fwuiw7"&&(Ee.innerHTML=ih),bi=s(t),Ye=m(t,"P",{"data-svelte-h":!0}),a(Ye)!=="svelte-18b3yzd"&&(Ye.textContent=ch),Mi=s(t),S.l(t),_n=s(t),Fe=m(t,"P",{"data-svelte-h":!0}),a(Fe)!=="svelte-1fjv8gn"&&(Fe.innerHTML=hh),di=s(t),d(qe.$$.fragment,t),yi=s(t),X.l(t),Tn=s(t),d(st.$$.fragment,t),vi=zh(t,sh),ki=s(t),Pe=m(t,"P",{"data-svelte-h":!0}),a(Pe)!=="svelte-wjrzrd"&&(Pe.innerHTML=oh),_i=s(t),d(De.$$.fragment,t),Ti=s(t),Ke=m(t,"P",{"data-svelte-h":!0}),a(Ke)!=="svelte-1dj0193"&&(Ke.textContent=ph),wi=s(t),d(Oe.$$.fragment,t),Ui=s(t),E.l(t),wn=s(t),tn=m(t,"P",{"data-svelte-h":!0}),a(tn)!=="svelte-pkn7oo"&&(tn.innerHTML=mh),$i=s(t),d(en.$$.fragment,t),ji=s(t),F.l(t),Un=s(t),nn=m(t,"P",{"data-svelte-h":!0}),a(nn)!=="svelte-1pwwax"&&(nn.innerHTML=ah),Ji=s(t),d(ln.$$.fragment,t),Ci=s(t),P.l(t),$n=s(t),cn=m(t,"P",{"data-svelte-h":!0}),a(cn)!=="svelte-nlmgio"&&(cn.textContent=uh),Zi=s(t),d(hn.$$.fragment,t),Gi=s(t),d(sn.$$.fragment,t),xi=s(t),O.l(t),jn=s(t),d(on.$$.fragment,t),Bi=s(t),Jn=m(t,"P",{}),Nh(Jn).forEach(n),this.h()},h(){B(i,"name","hf:doc:metadata"),B(i,"content",ks),B(lt,"class","flex justify-center"),B(it,"class","flex justify-center"),B(ct,"class","flex justify-center"),B(ht,"class","flex justify-center")},m(t,e){Yh(document.head,i),l(t,o,e),l(t,c,e),l(t,r,e),y(T,t,e),l(t,u,e),y(_,t,e),l(t,Z,e),pn[U].m(t,e),l(t,C,e),l(t,b,e),l(t,D,e),y(G,t,e),l(t,pt,e),l(t,W,e),l(t,x,e),l(t,mt,e),l(t,Cn,e),l(t,at,e),l(t,Zn,e),l(t,ut,e),l(t,Gn,e),y(rt,t,e),l(t,xn,e),mn[V].m(t,e),l(t,dn,e),l(t,gt,e),l(t,Bn,e),l(t,ft,e),l(t,Wn,e),y(bt,t,e),l(t,Vn,e),l(t,Mt,e),l(t,Nn,e),y(dt,t,e),l(t,In,e),l(t,yt,e),l(t,Hn,e),l(t,vt,e),l(t,zn,e),an[I].m(t,e),l(t,yn,e),l(t,kt,e),l(t,Ln,e),l(t,_t,e),l(t,Qn,e),un[z].m(t,e),l(t,vn,e),l(t,Tt,e),l(t,Sn,e),y(wt,t,e),l(t,Rn,e),l(t,Ut,e),l(t,Xn,e),y($t,t,e),l(t,An,e),l(t,jt,e),l(t,En,e),y(Jt,t,e),l(t,Yn,e),l(t,Ct,e),l(t,Fn,e),y(Zt,t,e),l(t,qn,e),l(t,Gt,e),l(t,Pn,e),l(t,xt,e),l(t,Dn,e),K.m(t,e),l(t,kn,e),y(nt,t,e),l(t,Kn,e),l(t,Bt,e),l(t,On,e),l(t,Wt,e),l(t,tl,e),l(t,Vt,e),l(t,el,e),y(Nt,t,e),l(t,nl,e),l(t,It,e),l(t,ll,e),l(t,Ht,e),l(t,il,e),y(zt,t,e),l(t,cl,e),l(t,Lt,e),l(t,hl,e),y(Qt,t,e),l(t,sl,e),l(t,St,e),l(t,ol,e),l(t,Rt,e),l(t,pl,e),y(Xt,t,e),l(t,ml,e),l(t,At,e),l(t,al,e),y(Et,t,e),l(t,ul,e),l(t,Yt,e),l(t,rl,e),l(t,Ft,e),l(t,gl,e),l(t,qt,e),l(t,fl,e),y(Pt,t,e),l(t,bl,e),l(t,Dt,e),l(t,Ml,e),l(t,Kt,e),l(t,dl,e),l(t,lt,e),l(t,yl,e),l(t,Ot,e),l(t,vl,e),l(t,te,e),l(t,kl,e),l(t,ee,e),l(t,_l,e),l(t,it,e),l(t,Tl,e),l(t,ne,e),l(t,wl,e),l(t,ct,e),l(t,Ul,e),l(t,le,e),l(t,$l,e),l(t,ie,e),l(t,jl,e),l(t,ht,e),l(t,Jl,e),l(t,ce,e),l(t,Cl,e),y(he,t,e),l(t,Zl,e),l(t,se,e),l(t,Gl,e),l(t,oe,e),l(t,xl,e),y(pe,t,e),l(t,Bl,e),l(t,me,e),l(t,Wl,e),l(t,ae,e),l(t,Vl,e),y(ue,t,e),l(t,Nl,e),l(t,re,e),l(t,Il,e),l(t,ge,e),l(t,Hl,e),y(fe,t,e),l(t,zl,e),l(t,be,e),l(t,Ll,e),l(t,Me,e),l(t,Ql,e),l(t,de,e),l(t,Sl,e),y(ye,t,e),l(t,Rl,e),l(t,ve,e),l(t,Xl,e),l(t,ke,e),l(t,Al,e),y(_e,t,e),l(t,El,e),l(t,Te,e),l(t,Yl,e),l(t,we,e),l(t,Fl,e),l(t,Ue,e),l(t,ql,e),y($e,t,e),l(t,Pl,e),l(t,je,e),l(t,Dl,e),y(Je,t,e),l(t,Kl,e),l(t,Ce,e),l(t,Ol,e),y(Ze,t,e),l(t,ti,e),l(t,Ge,e),l(t,ei,e),y(xe,t,e),l(t,ni,e),l(t,Be,e),l(t,li,e),l(t,We,e),l(t,ii,e),l(t,Ve,e),l(t,ci,e),y(Ne,t,e),l(t,hi,e),y(Ie,t,e),l(t,si,e),l(t,He,e),l(t,oi,e),y(ze,t,e),l(t,pi,e),l(t,Le,e),l(t,mi,e),y(Qe,t,e),l(t,ai,e),l(t,Se,e),l(t,ui,e),y(Re,t,e),l(t,ri,e),y(Xe,t,e),l(t,gi,e),l(t,Ae,e),l(t,fi,e),l(t,Ee,e),l(t,bi,e),l(t,Ye,e),l(t,Mi,e),rn[Q].m(t,e),l(t,_n,e),l(t,Fe,e),l(t,di,e),y(qe,t,e),l(t,yi,e),gn[R].m(t,e),l(t,Tn,e),y(st,t,e),l(t,vi,e),l(t,ki,e),l(t,Pe,e),l(t,_i,e),y(De,t,e),l(t,Ti,e),l(t,Ke,e),l(t,wi,e),y(Oe,t,e),l(t,Ui,e),fn[A].m(t,e),l(t,wn,e),l(t,tn,e),l(t,$i,e),y(en,t,e),l(t,ji,e),bn[Y].m(t,e),l(t,Un,e),l(t,nn,e),l(t,Ji,e),y(ln,t,e),l(t,Ci,e),Mn[q].m(t,e),l(t,$n,e),l(t,cn,e),l(t,Zi,e),y(hn,t,e),l(t,Gi,e),y(sn,t,e),l(t,xi,e),O.m(t,e),l(t,jn,e),y(on,t,e),l(t,Bi,e),l(t,Jn,e),Wi=!0},p(t,[e]){const Bh={};e&1&&(Bh.fw=t[0]),T.$set(Bh);let Ii=U;U=gh(t),U!==Ii&&(et(),g(pn[Ii],1,1,()=>{pn[Ii]=null}),tt(),$=pn[U],$||($=pn[U]=rh[U](t),$.c()),f($,1),$.m(C.parentNode,C));let Hi=V;V=bh(t),V!==Hi&&(et(),g(mn[Hi],1,1,()=>{mn[Hi]=null}),tt(),N=mn[V],N||(N=mn[V]=fh[V](t),N.c()),f(N,1),N.m(dn.parentNode,dn));let zi=I;I=dh(t),I!==zi&&(et(),g(an[zi],1,1,()=>{an[zi]=null}),tt(),H=an[I],H||(H=an[I]=Mh[I](t),H.c()),f(H,1),H.m(yn.parentNode,yn));let Li=z;z=vh(t),z!==Li&&(et(),g(un[Li],1,1,()=>{un[Li]=null}),tt(),L=un[z],L||(L=un[z]=yh[z](t),L.c()),f(L,1),L.m(vn.parentNode,vn)),Vi!==(Vi=kh(t))&&(K.d(1),K=Vi(t),K&&(K.c(),K.m(kn.parentNode,kn)));const Wh={};e&2&&(Wh.$$scope={dirty:e,ctx:t}),nt.$set(Wh);let Qi=Q;Q=Th(t),Q!==Qi&&(et(),g(rn[Qi],1,1,()=>{rn[Qi]=null}),tt(),S=rn[Q],S||(S=rn[Q]=_h[Q](t),S.c()),f(S,1),S.m(_n.parentNode,_n));let Si=R;R=Uh(t),R!==Si&&(et(),g(gn[Si],1,1,()=>{gn[Si]=null}),tt(),X=gn[R],X||(X=gn[R]=wh[R](t),X.c()),f(X,1),X.m(Tn.parentNode,Tn));const Vh={};e&2&&(Vh.$$scope={dirty:e,ctx:t}),st.$set(Vh);let Ri=A;A=jh(t),A!==Ri&&(et(),g(fn[Ri],1,1,()=>{fn[Ri]=null}),tt(),E=fn[A],E||(E=fn[A]=$h[A](t),E.c()),f(E,1),E.m(wn.parentNode,wn));let Xi=Y;Y=Ch(t),Y!==Xi&&(et(),g(bn[Xi],1,1,()=>{bn[Xi]=null}),tt(),F=bn[Y],F||(F=bn[Y]=Jh[Y](t),F.c()),f(F,1),F.m(Un.parentNode,Un));let Ai=q;q=Gh(t),q!==Ai&&(et(),g(Mn[Ai],1,1,()=>{Mn[Ai]=null}),tt(),P=Mn[q],P||(P=Mn[q]=Zh[q](t),P.c()),f(P,1),P.m($n.parentNode,$n)),Ni!==(Ni=xh(t))&&(O.d(1),O=Ni(t),O&&(O.c(),O.m(jn.parentNode,jn)))},i(t){Wi||(f(T.$$.fragment,t),f(_.$$.fragment,t),f($),f(G.$$.fragment,t),f(rt.$$.fragment,t),f(N),f(bt.$$.fragment,t),f(dt.$$.fragment,t),f(H),f(L),f(wt.$$.fragment,t),f($t.$$.fragment,t),f(Jt.$$.fragment,t),f(Zt.$$.fragment,t),f(nt.$$.fragment,t),f(Nt.$$.fragment,t),f(zt.$$.fragment,t),f(Qt.$$.fragment,t),f(Xt.$$.fragment,t),f(Et.$$.fragment,t),f(Pt.$$.fragment,t),f(he.$$.fragment,t),f(pe.$$.fragment,t),f(ue.$$.fragment,t),f(fe.$$.fragment,t),f(ye.$$.fragment,t),f(_e.$$.fragment,t),f($e.$$.fragment,t),f(Je.$$.fragment,t),f(Ze.$$.fragment,t),f(xe.$$.fragment,t),f(Ne.$$.fragment,t),f(Ie.$$.fragment,t),f(ze.$$.fragment,t),f(Qe.$$.fragment,t),f(Re.$$.fragment,t),f(Xe.$$.fragment,t),f(S),f(qe.$$.fragment,t),f(X),f(st.$$.fragment,t),f(De.$$.fragment,t),f(Oe.$$.fragment,t),f(E),f(en.$$.fragment,t),f(F),f(ln.$$.fragment,t),f(P),f(hn.$$.fragment,t),f(sn.$$.fragment,t),f(on.$$.fragment,t),Wi=!0)},o(t){g(T.$$.fragment,t),g(_.$$.fragment,t),g($),g(G.$$.fragment,t),g(rt.$$.fragment,t),g(N),g(bt.$$.fragment,t),g(dt.$$.fragment,t),g(H),g(L),g(wt.$$.fragment,t),g($t.$$.fragment,t),g(Jt.$$.fragment,t),g(Zt.$$.fragment,t),g(nt.$$.fragment,t),g(Nt.$$.fragment,t),g(zt.$$.fragment,t),g(Qt.$$.fragment,t),g(Xt.$$.fragment,t),g(Et.$$.fragment,t),g(Pt.$$.fragment,t),g(he.$$.fragment,t),g(pe.$$.fragment,t),g(ue.$$.fragment,t),g(fe.$$.fragment,t),g(ye.$$.fragment,t),g(_e.$$.fragment,t),g($e.$$.fragment,t),g(Je.$$.fragment,t),g(Ze.$$.fragment,t),g(xe.$$.fragment,t),g(Ne.$$.fragment,t),g(Ie.$$.fragment,t),g(ze.$$.fragment,t),g(Qe.$$.fragment,t),g(Re.$$.fragment,t),g(Xe.$$.fragment,t),g(S),g(qe.$$.fragment,t),g(X),g(st.$$.fragment,t),g(De.$$.fragment,t),g(Oe.$$.fragment,t),g(E),g(en.$$.fragment,t),g(F),g(ln.$$.fragment,t),g(P),g(hn.$$.fragment,t),g(sn.$$.fragment,t),g(on.$$.fragment,t),Wi=!1},d(t){t&&(n(o),n(c),n(r),n(u),n(Z),n(C),n(b),n(D),n(pt),n(W),n(x),n(mt),n(Cn),n(at),n(Zn),n(ut),n(Gn),n(xn),n(dn),n(gt),n(Bn),n(ft),n(Wn),n(Vn),n(Mt),n(Nn),n(In),n(yt),n(Hn),n(vt),n(zn),n(yn),n(kt),n(Ln),n(_t),n(Qn),n(vn),n(Tt),n(Sn),n(Rn),n(Ut),n(Xn),n(An),n(jt),n(En),n(Yn),n(Ct),n(Fn),n(qn),n(Gt),n(Pn),n(xt),n(Dn),n(kn),n(Kn),n(Bt),n(On),n(Wt),n(tl),n(Vt),n(el),n(nl),n(It),n(ll),n(Ht),n(il),n(cl),n(Lt),n(hl),n(sl),n(St),n(ol),n(Rt),n(pl),n(ml),n(At),n(al),n(ul),n(Yt),n(rl),n(Ft),n(gl),n(qt),n(fl),n(bl),n(Dt),n(Ml),n(Kt),n(dl),n(lt),n(yl),n(Ot),n(vl),n(te),n(kl),n(ee),n(_l),n(it),n(Tl),n(ne),n(wl),n(ct),n(Ul),n(le),n($l),n(ie),n(jl),n(ht),n(Jl),n(ce),n(Cl),n(Zl),n(se),n(Gl),n(oe),n(xl),n(Bl),n(me),n(Wl),n(ae),n(Vl),n(Nl),n(re),n(Il),n(ge),n(Hl),n(zl),n(be),n(Ll),n(Me),n(Ql),n(de),n(Sl),n(Rl),n(ve),n(Xl),n(ke),n(Al),n(El),n(Te),n(Yl),n(we),n(Fl),n(Ue),n(ql),n(Pl),n(je),n(Dl),n(Kl),n(Ce),n(Ol),n(ti),n(Ge),n(ei),n(ni),n(Be),n(li),n(We),n(ii),n(Ve),n(ci),n(hi),n(si),n(He),n(oi),n(pi),n(Le),n(mi),n(ai),n(Se),n(ui),n(ri),n(gi),n(Ae),n(fi),n(Ee),n(bi),n(Ye),n(Mi),n(_n),n(Fe),n(di),n(yi),n(Tn),n(vi),n(ki),n(Pe),n(_i),n(Ti),n(Ke),n(wi),n(Ui),n(wn),n(tn),n($i),n(ji),n(Un),n(nn),n(Ji),n(Ci),n($n),n(cn),n(Zi),n(Gi),n(xi),n(jn),n(Bi),n(Jn)),n(i),v(T,t),v(_,t),pn[U].d(t),v(G,t),v(rt,t),mn[V].d(t),v(bt,t),v(dt,t),an[I].d(t),un[z].d(t),v(wt,t),v($t,t),v(Jt,t),v(Zt,t),K.d(t),v(nt,t),v(Nt,t),v(zt,t),v(Qt,t),v(Xt,t),v(Et,t),v(Pt,t),v(he,t),v(pe,t),v(ue,t),v(fe,t),v(ye,t),v(_e,t),v($e,t),v(Je,t),v(Ze,t),v(xe,t),v(Ne,t),v(Ie,t),v(ze,t),v(Qe,t),v(Re,t),v(Xe,t),rn[Q].d(t),v(qe,t),gn[R].d(t),v(st,t),v(De,t),v(Oe,t),fn[A].d(t),v(en,t),bn[Y].d(t),v(ln,t),Mn[q].d(t),v(hn,t),v(sn,t),O.d(t),v(on,t)}}}const ks='{"title":"Chia sẻ các mô hình huấn luyện trước","local":"chia-sẻ-các-mô-hình-huấn-luyện-trước","sections":[{"title":"Sử dụng API push_to_hub","local":"sử-dụng-api-pushtohub","sections":[],"depth":2},{"title":"Sử dụng thư viện Python huggingface_hub","local":"sử-dụng-thư-viện-python-huggingfacehub","sections":[],"depth":2},{"title":"Sử dụng giao diện web","local":"sử-dụng-giao-diện-web","sections":[],"depth":2},{"title":"Tải các tệp mô hình","local":"tải-các-tệp-mô-hình","sections":[{"title":"Phương pháp upload_file","local":"phương-pháp-uploadfile","sections":[],"depth":3},{"title":"Lớp Repository","local":"lớp-repository","sections":[],"depth":3},{"title":"Phương pháp dựa trên git","local":"phương-pháp-dựa-trên-git","sections":[],"depth":3}],"depth":2}],"depth":1}';function _s(k,i,o){let c="pt";return Sh(()=>{const r=new URLSearchParams(window.location.search);o(0,c=r.get("fw")||"pt")}),[c]}class Gs extends Xh{constructor(i){super(),Ah(this,i,_s,vs,Qh,{})}}export{Gs as component};
