Buckets:
| import{s as Hs,o as Is,n as Vs}from"../chunks/scheduler.37c15a92.js";import{S as Ns,i as Ls,g as m,s,r as v,A as As,h as p,f as o,c as n,j as Bs,u as y,x as u,k as x,y as Xs,a as l,v as g,t as f,b as ee,d as b,w as _,m as Rs,n as Qs,p as te}from"../chunks/index.2bf4358c.js";import{T as zs}from"../chunks/Tip.363c041f.js";import{Y as Qa}from"../chunks/Youtube.1e50a667.js";import{C as U}from"../chunks/CodeBlock.4e987730.js";import{C as qs}from"../chunks/CourseFloatingBanner.6add7356.js";import{F as Ss}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as re,E as Ys}from"../chunks/getInferenceSnippets.ebf8be91.js";function Es(h){let a,r;return a=new qs({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/pt/chapter4/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/pt/chapter4/section3_tf.ipynb"}]}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function Fs(h){let a,r;return a=new qs({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/pt/chapter4/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/pt/chapter4/section3_pt.ipynb"}]}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function Ps(h){let a,r;return a=new Qa({props:{id:"pUh5cGmNV8Y"}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function Ds(h){let a,r;return a=new Qa({props:{id:"Zh0FfmVrKX0"}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function Os(h){let a,r="Se você estiver utilizando Keras para treinar seu modelo, a maneira mais fácil de carregá-lo no Hub é passar um <code>PushToHubCallback</code> quando você chama de <code>model.fit()</code>:",i,c,$,d,w="Então você deve adicionar <code>callbacks=[callback]</code> em sua chamada de <code>model.fit()</code>. A chamada de retorno será então enviada ao Hub cada vez que o modelo for salvo (aqui a cada época) em um repositório em seu namespace. Esse repositório será nomeado como o diretório de saída que você escolheu (aqui <code>bert-finetuned-mrpc</code>), mas você pode escolher um nome diferente com <code>hub_model_id = "a_diferent_name"</code>.",C,T,j="Para enviar seu modelo para uma organização da qual você é membro, basta passá-lo com <code>hub_model_id = "my_organization/my_repo_name"</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">"bert-finetuned-mrpc"</span>, save_strategy=<span class="hljs-string">"epoch"</span>, tokenizer=tokenizer | |
| )`,wrap:!1}}),{c(){a=m("p"),a.innerHTML=r,i=s(),v(c.$$.fragment),$=s(),d=m("p"),d.innerHTML=w,C=s(),T=m("p"),T.innerHTML=j},l(M){a=p(M,"P",{"data-svelte-h":!0}),u(a)!=="svelte-10vrp54"&&(a.innerHTML=r),i=n(M),y(c.$$.fragment,M),$=n(M),d=p(M,"P",{"data-svelte-h":!0}),u(d)!=="svelte-1d8vqnu"&&(d.innerHTML=w),C=n(M),T=p(M,"P",{"data-svelte-h":!0}),u(T)!=="svelte-791x5b"&&(T.innerHTML=j)},m(M,J){l(M,a,J),l(M,i,J),g(c,M,J),l(M,$,J),l(M,d,J),l(M,C,J),l(M,T,J),Z=!0},i(M){Z||(b(c.$$.fragment,M),Z=!0)},o(M){f(c.$$.fragment,M),Z=!1},d(M){M&&(o(a),o(i),o($),o(d),o(C),o(T)),_(c,M)}}}function Ks(h){let a,r="Se você usou a API do <code>Trainer</code> para treinar um modelo, a maneira mais fácil de carregá-lo no Hub é definir <code>push_to_hub=True</code> quando você definir seus <code>TrainingArguments</code>:",i,c,$,d,w="Quando você chama <code>trainer.train()</code>, o <code>Trainer</code> então carregará seu modelo no Hub cada vez que ele for salvo (aqui a cada época) em um repositório em seu namespace. Esse repositório será nomeado como o diretório de saída que você escolheu (aqui <code>bert-finetuned-mrpc</code>), mas você pode escolher um nome diferente com <code>hub_model_id = "a_diferent_name"</code>.",C,T,j="Para enviar seu modelo para uma organização da qual você é membro, basta passá-lo com <code>hub_model_id = "my_organization/my_repo_name"</code>.",Z,M,J="Uma vez terminado seu treinamento, você deve fazer um último <code>trainer.push_to_hub()</code> para carregar a última versão de seu modelo. Ele também gerará um cartão modelo com todos os metadados relevantes, relatando os hiperparâmetros utilizados e os resultados da avaliação! Aqui está um exemplo do conteúdo que você pode encontrar em um cartão modelo deste tipo:",D,G,me='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/model_card.png" alt="An example of an auto-generated model card." width="100%"/>',B;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">"bert-finetuned-mrpc"</span>, save_strategy=<span class="hljs-string">"epoch"</span>, push_to_hub=<span class="hljs-literal">True</span> | |
| )`,wrap:!1}}),{c(){a=m("p"),a.innerHTML=r,i=s(),v(c.$$.fragment),$=s(),d=m("p"),d.innerHTML=w,C=s(),T=m("p"),T.innerHTML=j,Z=s(),M=m("p"),M.innerHTML=J,D=s(),G=m("div"),G.innerHTML=me,this.h()},l(k){a=p(k,"P",{"data-svelte-h":!0}),u(a)!=="svelte-lrqi2w"&&(a.innerHTML=r),i=n(k),y(c.$$.fragment,k),$=n(k),d=p(k,"P",{"data-svelte-h":!0}),u(d)!=="svelte-1s6ckhh"&&(d.innerHTML=w),C=n(k),T=p(k,"P",{"data-svelte-h":!0}),u(T)!=="svelte-791x5b"&&(T.innerHTML=j),Z=n(k),M=p(k,"P",{"data-svelte-h":!0}),u(M)!=="svelte-1nymymh"&&(M.innerHTML=J),D=n(k),G=p(k,"DIV",{class:!0,"data-svelte-h":!0}),u(G)!=="svelte-1lhrimn"&&(G.innerHTML=me),this.h()},h(){x(G,"class","flex justify-center")},m(k,W){l(k,a,W),l(k,i,W),g(c,k,W),l(k,$,W),l(k,d,W),l(k,C,W),l(k,T,W),l(k,Z,W),l(k,M,W),l(k,D,W),l(k,G,W),B=!0},i(k){B||(b(c.$$.fragment,k),B=!0)},o(k){f(c.$$.fragment,k),B=!1},d(k){k&&(o(a),o(i),o($),o(d),o(C),o(T),o(Z),o(M),o(D),o(G)),_(c,k)}}}function en(h){let a,r;return a=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">"camembert-base"</span> | |
| model = TFAutoModelForMaskedLM.from_pretrained(checkpoint) | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function tn(h){let a,r;return a=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">"camembert-base"</span> | |
| model = AutoModelForMaskedLM.from_pretrained(checkpoint) | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function on(h){let a,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(){a=m("div"),a.innerHTML=r,this.h()},l(i){a=p(i,"DIV",{class:!0,"data-svelte-h":!0}),u(a)!=="svelte-5a3kk0"&&(a.innerHTML=r),this.h()},h(){x(a,"class","flex justify-center")},m(i,c){l(i,a,c)},d(i){i&&o(a)}}}function ln(h){let a,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(){a=m("div"),a.innerHTML=r,this.h()},l(i){a=p(i,"DIV",{class:!0,"data-svelte-h":!0}),u(a)!=="svelte-19u1vyv"&&(a.innerHTML=r),this.h()},h(){x(a,"class","flex justify-center")},m(i,c){l(i,a,c)},d(i){i&&o(a)}}}function an(h){let a,r="✏️ <strong>Teste-o!</strong> Pegue o modelo e o tokenizer associados ao checkpoint <code>bert-base-cased</code> e carregue-os para um repo em seu namespace utilizando o método <code>push_to_hub()</code>. Verifique novamente se o repo aparece corretamente em sua página antes de excluí-lo.";return{c(){a=m("p"),a.innerHTML=r},l(i){a=p(i,"P",{"data-svelte-h":!0}),u(a)!=="svelte-idhl1e"&&(a.innerHTML=r)},m(i,c){l(i,a,c)},p:Vs,d(i){i&&o(a)}}}function sn(h){let a,r;return a=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">"camembert-base"</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">"<path_to_dummy_folder>"</span>) | |
| tokenizer.save_pretrained(<span class="hljs-string">"<path_to_dummy_folder>"</span>)`,wrap:!1}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function nn(h){let a,r;return a=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">"camembert-base"</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">"<path_to_dummy_folder>"</span>) | |
| tokenizer.save_pretrained(<span class="hljs-string">"<path_to_dummy_folder>"</span>)`,wrap:!1}}),{c(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function rn(h){let a,r,i,c="Se você olhar para os tamanhos de arquivo (por exemplo, com <code>ls -lh</code>), você deve ver que o arquivo de estado do modelo (<em>t5_model.h5</em>) é o único outlier, com mais de 400 MB.",$;return a=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(){v(a.$$.fragment),r=s(),i=m("p"),i.innerHTML=c},l(d){y(a.$$.fragment,d),r=n(d),i=p(d,"P",{"data-svelte-h":!0}),u(i)!=="svelte-1b46a29"&&(i.innerHTML=c)},m(d,w){g(a,d,w),l(d,r,w),l(d,i,w),$=!0},i(d){$||(b(a.$$.fragment,d),$=!0)},o(d){f(a.$$.fragment,d),$=!1},d(d){d&&(o(r),o(i)),_(a,d)}}}function mn(h){let a,r,i,c="Se você olhar para os tamanhos de arquivo (por exemplo, com <code>ls -lh</code>), você deve ver que o arquivo de estado do modelo (<em>pytorch_model.bin</em>) é o único outlier, com mais de 400 MB.",$;return a=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(){v(a.$$.fragment),r=s(),i=m("p"),i.innerHTML=c},l(d){y(a.$$.fragment,d),r=n(d),i=p(d,"P",{"data-svelte-h":!0}),u(i)!=="svelte-1fb5vbt"&&(i.innerHTML=c)},m(d,w){g(a,d,w),l(d,r,w),l(d,i,w),$=!0},i(d){$||(b(a.$$.fragment,d),$=!0)},o(d){f(a.$$.fragment,d),$=!1},d(d){d&&(o(r),o(i)),_(a,d)}}}function pn(h){let a;return{c(){a=Rs("✏️ Ao criar o repositório a partir da interface web, o arquivo *.gitattributes* é automaticamente configurado para considerar arquivos com certas extensões, como *.bin* e *.h5*, como arquivos grandes, e o git-lfs os rastreará sem nenhuma configuração necessária em seu lado.")},l(r){a=Qs(r,"✏️ Ao criar o repositório a partir da interface web, o arquivo *.gitattributes* é automaticamente configurado para considerar arquivos com certas extensões, como *.bin* e *.h5*, como arquivos grandes, e o git-lfs os rastreará sem nenhuma configuração necessária em seu lado.")},m(r,i){l(r,a,i)},d(r){r&&o(a)}}}function un(h){let a,r;return a=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">'origin/main'</span>. | |
| Changes to be committed: | |
| (use <span class="hljs-string">"git restore --staged <file>..."</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(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function dn(h){let a,r;return a=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">'origin/main'</span>. | |
| Changes to be committed: | |
| (use <span class="hljs-string">"git restore --staged <file>..."</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(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function cn(h){let a,r,i,c="Podemos ver que todos os arquivos têm <code>Git</code> como manipulador, exceto <em>t5_model.h5</em>, que tem <code>LFS</code>. Excelente!",$;return a=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(){v(a.$$.fragment),r=s(),i=m("p"),i.innerHTML=c},l(d){y(a.$$.fragment,d),r=n(d),i=p(d,"P",{"data-svelte-h":!0}),u(i)!=="svelte-1wwyr48"&&(i.innerHTML=c)},m(d,w){g(a,d,w),l(d,r,w),l(d,i,w),$=!0},i(d){$||(b(a.$$.fragment,d),$=!0)},o(d){f(a.$$.fragment,d),$=!1},d(d){d&&(o(r),o(i)),_(a,d)}}}function fn(h){let a,r,i,c="Podemos ver que todos os arquivos têm <code>Git</code> como manipulador, exceto <em>pytorch_model.bin</em> e <em>sentencepiece.bpe.model</em>, que têm <code>LFS</code>. Ótimo!",$;return a=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(){v(a.$$.fragment),r=s(),i=m("p"),i.innerHTML=c},l(d){y(a.$$.fragment,d),r=n(d),i=p(d,"P",{"data-svelte-h":!0}),u(i)!=="svelte-expdid"&&(i.innerHTML=c)},m(d,w){g(a,d,w),l(d,r,w),l(d,i,w),$=!0},i(d){$||(b(a.$$.fragment,d),$=!0)},o(d){f(a.$$.fragment,d),$=!1},d(d){d&&(o(r),o(i)),_(a,d)}}}function bn(h){let a,r;return a=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(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function Mn(h){let a,r;return a=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(){v(a.$$.fragment)},l(i){y(a.$$.fragment,i)},m(i,c){g(a,i,c),r=!0},i(i){r||(b(a.$$.fragment,i),r=!0)},o(i){f(a.$$.fragment,i),r=!1},d(i){_(a,i)}}}function vn(h){let a,r="Se dermos uma olhada no repositório modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:",i,c,$='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model_tf.png" alt="The 'Files and versions' tab now contains all the recently uploaded files." width="80%"/>',d,w,C="A IU permite que você explore os arquivos modelo e os commits e veja as diferenças introduzidas por cada commit:",T,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(){a=m("p"),a.textContent=r,i=s(),c=m("div"),c.innerHTML=$,d=s(),w=m("p"),w.textContent=C,T=s(),j=m("div"),j.innerHTML=Z,this.h()},l(M){a=p(M,"P",{"data-svelte-h":!0}),u(a)!=="svelte-75oj0g"&&(a.textContent=r),i=n(M),c=p(M,"DIV",{class:!0,"data-svelte-h":!0}),u(c)!=="svelte-tz4fi2"&&(c.innerHTML=$),d=n(M),w=p(M,"P",{"data-svelte-h":!0}),u(w)!=="svelte-gsjpr8"&&(w.textContent=C),T=n(M),j=p(M,"DIV",{class:!0,"data-svelte-h":!0}),u(j)!=="svelte-2jd8bj"&&(j.innerHTML=Z),this.h()},h(){x(c,"class","flex justify-center"),x(j,"class","flex justify-center")},m(M,J){l(M,a,J),l(M,i,J),l(M,c,J),l(M,d,J),l(M,w,J),l(M,T,J),l(M,j,J)},d(M){M&&(o(a),o(i),o(c),o(d),o(w),o(T),o(j))}}}function yn(h){let a,r="Se dermos uma olhada no repositório modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:",i,c,$='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model.png" alt="The 'Files and versions' tab now contains all the recently uploaded files." width="80%"/>',d,w,C="A IU permite que você explore os arquivos modelo e os commits e veja as diferenças introduzidas por cada commit:",T,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(){a=m("p"),a.textContent=r,i=s(),c=m("div"),c.innerHTML=$,d=s(),w=m("p"),w.textContent=C,T=s(),j=m("div"),j.innerHTML=Z,this.h()},l(M){a=p(M,"P",{"data-svelte-h":!0}),u(a)!=="svelte-75oj0g"&&(a.textContent=r),i=n(M),c=p(M,"DIV",{class:!0,"data-svelte-h":!0}),u(c)!=="svelte-1v39mjb"&&(c.innerHTML=$),d=n(M),w=p(M,"P",{"data-svelte-h":!0}),u(w)!=="svelte-gsjpr8"&&(w.textContent=C),T=n(M),j=p(M,"DIV",{class:!0,"data-svelte-h":!0}),u(j)!=="svelte-1g561m5"&&(j.innerHTML=Z),this.h()},h(){x(c,"class","flex justify-center"),x(j,"class","flex justify-center")},m(M,J){l(M,a,J),l(M,i,J),l(M,c,J),l(M,d,J),l(M,w,J),l(M,T,J),l(M,j,J)},d(M){M&&(o(a),o(i),o(c),o(d),o(w),o(T),o(j))}}}function gn(h){let a,r,i,c,$,d,w,C,T,j,Z,M,J="Nas etapas abaixo, veremos as maneiras mais fáceis de compartilhar modelos pré-treinados para o Hub 🤗. Há ferramentas e utilitários disponíveis que facilitam o compartilhamento e atualização de modelos diretamente no Hub, que exploraremos a seguir.",D,G,me,B,k="Encorajamos todos os usuários que treinam modelos a contribuir compartilhando-os com a comunidade - compartilhar modelos, mesmo quando treinados em conjuntos de dados muito específicos, ajudará outros, economizando tempo e recursos e fornecendo acesso a artefatos úteis treinados. Por sua vez, você pode se beneficiar do trabalho que outros realizaram!",W,pe,Sa="Há três maneiras de se criar novos repositórios modelo:",Zo,ue,Ya="<li>Usando a API<code>push_to_hub</code></li> <li>Usando a biblioteca Python <code>huggingface_hub</code></li> <li>Usando a interface web</li>",Co,de,Ea="Uma vez criado um repositório, você pode fazer o upload de arquivos para ele via git e git-lfs. Nós o acompanharemos na criação de repositórios modelo e no upload de arquivos para eles nas seções seguintes.",Go,ce,Wo,z,q,yo,fe,Fa="A maneira mais simples de carregar arquivos no Hub é usando a API <code>push_to_hub</code>.",xo,be,Pa='Antes de ir adiante, você precisará gerar um token de autenticação para que a API <code>huggingface_hub</code> saiba quem você é e a que namespaces você tem acesso de escrita. Certifique-se de estar em um ambiente onde você tenha <code>transformers</code> instalado (ver <a href="/course/chapter0">Setup</a>). Se você estiver em um notebook, você pode utilizar a seguinte função para fazer o login:',Bo,Me,zo,ve,Da="Em um terminal, você pode rodar:",qo,ye,Ho,ge,Oa='Em ambos os casos, você será solicitado seu nome de usuário e senha, que são os mesmos que você usa para fazer o login no Hub. Se você ainda não tem um perfil do Hub, você deve criar um <a href="https://huggingface.co/join" rel="nofollow">aqui</a>.',Io,_e,Ka="Ótimo! Agora você tem seu token de autenticação armazenado em sua pasta de cache. Vamos criar alguns repositórios!",Vo,H,I,go,he,ei="Em um nível inferior, o acesso ao Model Hub pode ser feito diretamente nos modelos, tokenizers e objetos de configuração através de seu método <code>push_to_hub()</code>. Este método cuida da criação do repositório e empurra os arquivos modelo e tokenizer diretamente para o repositório. Não é necessário nenhum tratamento manual, ao contrário do que acontece com a API, veremos abaixo.",No,we,ti="Para se ter uma idéia de como funciona, vamos primeiro inicializar um modelo e um tokenizer:",Lo,V,N,_o,$e,oi="Você é livre para fazer o que quiser com elas - adicionar fichas ao tokenizer, treinar o modelo, afinar o modelo. Quando você estiver satisfeito com o modelo, pesos e tokenizer resultantes, você pode aproveitar o método <code>push_to_hub()</code> diretamente disponível no objeto <code>model</code>:",Ao,Ue,Xo,Te,li=`Isto criará o novo repositório <code>dummy-model</code> em seu perfil, e o preencherá com seus arquivos de modelos. | |
| Faça o mesmo com o tokenizer, para que todos os arquivos estejam agora disponíveis neste repositório:`,Ro,je,Qo,ke,ai="Se você pertence a uma organização, basta especificar o argumento <code>organization</code> a ser carregado no namespace dessa organização:",So,Je,Yo,Ze,ii="Se você desejar utilizar um toke específica do Hugging Face, você é livre para especificá-la também para o método <code>push_to_hub()</code>:",Eo,Ce,Fo,Ge,si='Agora vá até o Model Hub para encontrar seu modelo recém-carregado: <em><a href="https://huggingface.co/user-or-organization/dummy-model" rel="nofollow">https://huggingface.co/user-or-organization/dummy-model</a></em>.',Po,We,ni="Clique na aba “Files and versions”, e você deve ver os arquivos visíveis na seguinte captura de tela:",Do,ho,oe,Oo,xe,ri='Como você já viu, o método <code>push_to_hub()</code> aceita vários argumentos, tornando possível carregar para um repositório específico ou espaço de nomes de organizações, ou utilizar um token API diferente. Recomendamos que você dê uma olhada na especificação do método disponível diretamente na documentação <a href="https://huggingface.co/transformers/model_sharing.html" rel="nofollow">🤗 Transformers documentation</a> para ter uma idéia do que é possível.',Ko,Be,mi='O método <code>push_to_hub()</code> é apoiado pelo pacote <a href="https://github.com/huggingface/huggingface_hub" rel="nofollow"><code>huggingface_hub</code></a> Python, que oferece uma API direta para o Hub Hugging Face. Está integrado ao 🤗 Transformers e várias outras bibliotecas de aprendizagem de máquinas, como <a href="https://github.com/allenai/allennlp" rel="nofollow"><code>allenlp</code></a>. Embora nos concentremos na integração do 🤗 Transformers neste capítulo, integrá-lo em seu próprio código ou biblioteca é simples.',el,ze,pi="Salte para a última seção para ver como carregar arquivos em seu repositório recém-criado!",tl,qe,ol,He,ui="A biblioteca Python<code>huggingface_hub</code> é um pacote que oferece um conjunto de ferramentas para os hubs do modelo e dos conjuntos de dados. Ela fornece métodos e classes simples para tarefas comuns como obter informações sobre os repositórios no centro e gerenciá-los. Ele fornece APIs simples que funcionam em cima do git para gerenciar o conteúdo desses repositórios e para integrar o Hub em seus projetos e bibliotecas.",ll,Ie,di="Da mesma forma que a utilização da API <code>push_to_hub</code>, isto exigirá que você tenha seu token API salvo em seu cache. Para fazer isso, você precisará utilizar o comando <code>login</code> do CLI, como mencionado na seção anterior (mais uma vez, certifique-se de utilizar antes desses comandos o caracter <code>!</code> se estiver rodando no Google Colab):",al,Ve,il,Ne,ci="O pacote <code>huggingface_hub</code> oferece vários métodos e classes que são úteis para nosso propósito. Em primeiro lugar, existem alguns métodos para gerenciar a criação de repositórios, exclusão, e outros:",sl,Le,nl,Ae,fi="Além disso, oferece uma poderosa classe <code>Repository</code> para gerenciar um repositório local. Vamos explorar esses métodos e essa classe na próxima seção para entender como aproveitá-los.",rl,Xe,bi="O método <code>create_repo</code> pode ser utilizado para criar um novo repositório no centro:",ml,Re,pl,Qe,Mi="Isto criará o repositório <code>dummy-model</code> em seu namespace. Se desejar, você pode especificar a que organização o repositório deve pertencer utilizando o argumento <code>organization</code>:",ul,Se,dl,Ye,vi=`Isto criará o repositório <code>dummy-model</code> no espaço de nomes <code>huggingface</code>, assumindo que você pertença a essa organização. | |
| Outros argumentos que podem ser úteis são:`,cl,Ee,yi="<li><code>private</code>, a fim de especificar se o repositório deve ser visível de outros ou não.</li> <li><code>token</code>,se você gostaria de substituir o token armazenada em seu cache por uma determinada token.</li> <li><code>repo_type</code>, se você gostaria de criar um ”<code>dataset</code> ou um “espaço” em vez de um modelo. Os valores aceitos são <code>"dataset"</code> e <code>"space"</code>.</li>",fl,Fe,gi="Uma vez criado o repositório, devemos adicionar arquivos a ele! Salte para a próxima seção para ver as três maneiras como isto pode ser tratado.",bl,Pe,Ml,De,_i="A interface web oferece ferramentas para gerenciar os repositórios diretamente no Hub. Usando a interface, você pode facilmente criar repositórios, adicionar arquivos (mesmo grandes!), explorar modelos, visualizar diffs, e muito mais.",vl,Oe,hi='Para criar um novo repositório, visite <a href="https://huggingface.co/new" rel="nofollow">huggingface.co/novo</a>:',yl,le,wi='<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%"/>',gl,Ke,$i="Primeiro, especifique o proprietário do repositório: este pode ser você ou qualquer uma das organizações às quais você está afiliado. Se você escolher uma organização, o modelo será apresentado na página da organização e cada membro da organização terá a capacidade de contribuir com o repositório.",_l,et,Ui="A seguir, digite o nome do seu modelo. Este também será o nome do repositório. Finalmente, você pode especificar se deseja que seu modelo seja público ou privado. Os modelos privados não podem ser encontrados publicamente.",hl,tt,Ti="Depois de criar seu repositório de modelos, você deve ver uma página como esta:",wl,ae,ji='<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%"/>',$l,ot,ki="Aqui é onde seu modelo será hospedado. Para começar a preenchê-lo, você pode adicionar um arquivo README diretamente da interface web.",Ul,ie,Ji='<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%"/>',Tl,lt,Zi="O arquivo README está em Markdown - sinta-se à vontade para ficar louco com ele! A terceira parte deste capítulo é dedicada à construção de um modelo de cartão. Estes são de extrema importância para trazer valor ao seu modelo, pois estão onde você diz aos outros o que ele pode fazer.",jl,at,Ci="Se você olhar a aba “Files and versions”, você verá que ainda não há muitos arquivos - apenas o <em>README.md</em> que você acabou de criar e o arquivo <em>.gitattributes</em> que mantém o controle de arquivos grandes.",kl,se,Gi='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/files.png" alt="The 'Files and versions' tab only shows the .gitattributes and README.md files." width="80%"/>',Jl,it,Wi="A seguir, veremos como adicionar alguns novos arquivos.",Zl,st,Cl,nt,xi='O sistema para gerenciar arquivos no Hub Hugging Face Hub é baseado no git para arquivos regulares, e git-lfs (que significa <a href="https://git-lfs.github.com/" rel="nofollow">Git Large File Storage</a>) para arquivos maiores.',Gl,rt,Bi="Na seção seguinte, passamos por três maneiras diferentes de carregar arquivos no Hub: através de <code>huggingface_hub</code> e através de comandos de git.",Wl,mt,xl,pt,zi=`A utilização do <code>upload_file</code> não requer que git e git-lfs sejam instalados em seu sistema. Ele empurra os arquivos diretamente para o Hub 🤗 utilizando solicitações HTTP POST. Uma limitação desta abordagem é que ele não lida com arquivos maiores que 5GB de tamanho. | |
| Se seus arquivos forem maiores que 5GB, por favor, siga os dois outros métodos detalhados abaixo.`,Bl,ut,qi="A API pode ser usada da seguinte forma:",zl,dt,ql,ct,Hi=`Isto fará o upload do arquivo <code>config.json</code> disponível em <code><path_to_file></code> para a raiz do repositório como <code>config.json</code>, para o repositório <code>dummy-model</code>. | |
| Outros argumentos que podem ser úteis são:`,Hl,ft,Ii="<li><code>token</code>, se você gostaria de substituir o token armazenado em seu cache por um determinado token.</li> <li><code>repo_type</code>, se você gostaria de carregar em um <code>dataset</code> ou em um <code>espaço</code> em vez de um modelo. Os valores aceitos são <code>"dataset"</code> e <code>"space"</code>.</li>",Il,bt,Vl,Mt,Vi="A classe <code>Repository</code> gerencia um repositório local de forma idiota. Ele resume a maioria dos pontos de dor que se pode ter com o git para fornecer todas as características que necessitamos.",Nl,vt,Ni='A utilização desta classe requer ter git e git-lfs instalados, portanto certifique-se de ter o git-lfs instalado (veja <a href="https://git-lfs.github.com/" rel="nofollow">aqui</a> para instruções de instalação) e configure-o antes de começar.',Ll,yt,Li="Para começar a brincar com o repositório que acabamos de criar, podemos começar inicializando-o em uma pasta local através da clonagem do repositório remoto:",Al,gt,Xl,_t,Ai="Isto criou a pasta <code><path_to_dummy_folder></code> em nosso diretório de trabalho. Esta pasta contém apenas o arquivo <code>.gitattributes</code>, pois este é o único arquivo criado ao instanciar o repositório através do <code>create_repo</code>.",Rl,ht,Xi="A partir deste ponto, podemos aproveitar vários dos métodos tradicionais do gitattributes:",Ql,wt,Sl,$t,Ri='E outros! Recomendamos dar uma olhada na documentação <code>Repository</code> disponível <a href="https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management" rel="nofollow">aqui</a> para uma visão geral de todos os métodos disponíveis.',Yl,Ut,Qi="No momento, temos um modelo e um tokenizer que gostaríamos de empurrar para o centro. Clonamos com sucesso o repositório, portanto, podemos salvar os arquivos dentro desse repositório.",El,Tt,Si="Primeiro nos certificamos de que nosso clone local esteja atualizado, puxando as últimas mudanças:",Fl,jt,Pl,kt,Yi="Uma vez feito isso, salvamos os arquivos do modelo e do tokenizer:",Dl,Jt,Ol,Zt,Ei="O <code><path_to_dummy_folder></code> agora contém todos os modelos e arquivos de fichas. Seguimos o fluxo de trabalho habitual do git, adicionando arquivos à área de encenação, comprometendo-os e empurrando-os para o centro:",Kl,Ct,ea,Gt,Fi="Parabéns! Você acabou de empurrar seus primeiros arquivos para o centro.",ta,Wt,oa,xt,Pi="Esta é a própria abordagem do barebone para carregar arquivos: faremos isso com git e git-lfs diretamente. A maior parte da dificuldade é abstraída por abordagens anteriores, mas há algumas advertências com o seguinte método, então seguiremos um caso de uso mais complexo.",la,Bt,Di='O uso desta classe requer ter git e git-lfs instalados, portanto, certifique-se de ter <a href="https://git-lfs.github.com/" rel="nofollow">git-lfs</a> instalado (veja aqui as instruções de instalação) e configurado antes de começar.',aa,zt,Oi="Primeiro comece inicializando o git-lfs:",ia,qt,sa,Ht,na,It,Ki="Uma vez feito isso, o primeiro passo é clonar seu repositório modelo:",ra,Vt,ma,Nt,es="Meu nome de usuário é <code>lysandre</code> e já utilizei o nome modelo <code>dummy</code>, então para mim o comando acaba parecendo o seguinte:",pa,Lt,ua,At,ts="Agora tenho uma pasta com o nome <em>dummy</em> em meu diretório de trabalho. Eu posso <code>cd</code> dentro da pasta e dar uma olhada no conteúdo:",da,Xt,ca,Rt,fa,Qt,os="Se você acabou de criar seu repositório utilizando o método <code>create_repo</code> do Hugging Face Hub, esta pasta deve conter apenas um arquivo oculto <code>.gitattributes</code>. Se você seguiu as instruções da seção anterior para criar um repositório utilizando a interface web, a pasta deve conter um único arquivo <em>README.md</em> ao lado do arquivo oculto <code>.gitattributes</code>, como mostrado aqui.",ba,St,ls="Adicionar um arquivo de tamanho normal, como um arquivo de configuração, um arquivo de vocabulário, ou basicamente qualquer arquivo sob alguns megabytes, é feito exatamente como se faria em qualquer sistema baseado no gitattributes. Entretanto, arquivos maiores devem ser registrados através do git-lfs a fim de empurrá-los para <em>huggingface.co</em>.",Ma,Yt,as="Vamos voltar a Python para gerar um modelo e tokenizer que gostaríamos de comprometer com nosso repositório dummy:",va,L,A,wo,Et,is="Agora que salvamos alguns artefatos de modelo e tokenizer, vamos dar outra olhada na pasta <em>dummy</em>:",ya,Ft,ga,X,R,$o,ne,_a,Pt,ss="Agora podemos ir em frente e proceder como normalmente faríamos com os repositórios tradicionais da Git. Podemos adicionar todos os arquivos ao ambiente de encenação do Git utilizando o comando <code>git add</code>:",ha,Dt,wa,Ot,ns="Podemos, então, dar uma olhada nos arquivos que estão atualmente em fase de montagem:",$a,Kt,Ua,Q,S,Uo,eo,rs="Da mesma forma, podemos ter certeza de que o git-lfs está rastreando os arquivos corretos, utilizando seu comando <code>status</code>:",Ta,to,ja,Y,E,To,oo,ms="Vamos prosseguir para as etapas finais, comprometendo-nos e empurrando para o repositório remoto <em>huggingface.co</em>:",ka,lo,Ja,F,P,jo,ao,ps="O push pode levar um pouco de tempo, dependendo da velocidade de sua conexão à Internet e do tamanho de seus arquivos:",Za,io,Ca,so,Ga,ko,no,Wa,Jo,xa;$=new Ss({props:{fw:h[0]}}),w=new re({props:{title:"Compartilhando modelos pré-treinados",local:"compartilhando-modelos-pré-treinados",headingTag:"h1"}});const us=[Fs,Es],ro=[];function ds(e,t){return e[0]==="pt"?0:1}T=ds(h),j=ro[T]=us[T](h),G=new Qa({props:{id:"9yY3RB_GSPM"}}),ce=new re({props:{title:"Usando a API push_to_hub",local:"usando-a-api-pushtohub",headingTag:"h2"}});const cs=[Ds,Ps],mo=[];function fs(e,t){return e[0]==="pt"?0:1}z=fs(h),q=mo[z]=cs[z](h),Me=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}}),ye=new U({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}});const bs=[Ks,Os],po=[];function Ms(e,t){return e[0]==="pt"?0:1}H=Ms(h),I=po[H]=bs[H](h);const vs=[tn,en],uo=[];function ys(e,t){return e[0]==="pt"?0:1}V=ys(h),N=uo[V]=vs[V](h),Ue=new U({props:{code:"bW9kZWwucHVzaF90b19odWIoJTIyZHVtbXktbW9kZWwlMjIp",highlighted:'model.push_to_hub(<span class="hljs-string">"dummy-model"</span>)',wrap:!1}}),je=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">"dummy-model"</span>)',wrap:!1}}),Je=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIp",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">"dummy-model"</span>, organization=<span class="hljs-string">"huggingface"</span>)',wrap:!1}}),Ce=new U({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIlMkMlMjB1c2VfYXV0aF90b2tlbiUzRCUyMiUzQ1RPS0VOJTNFJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">"dummy-model"</span>, organization=<span class="hljs-string">"huggingface"</span>, use_auth_token=<span class="hljs-string">"<TOKEN>"</span>)',wrap:!1}});function gs(e,t){return e[0]==="pt"?ln:on}let Ba=gs(h),O=Ba(h);oe=new zs({props:{$$slots:{default:[an]},$$scope:{ctx:h}}}),qe=new re({props:{title:"Usando a biblioteca Python huggingface_hub",local:"usando-a-biblioteca-python-huggingfacehub",headingTag:"h2"}}),Ve=new U({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}}),Le=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMCglMEElMjAlMjAlMjAlMjAlMjMlMjBHZXN0JUMzJUEzbyUyMGRlJTIwdXN1JUMzJUExcmlvcyUwQSUyMCUyMCUyMCUyMGxvZ2luJTJDJTBBJTIwJTIwJTIwJTIwbG9nb3V0JTJDJTBBJTIwJTIwJTIwJTIwd2hvYW1pJTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwQ3JpYSVDMyVBNyVDMyVBM28lMjBlJTIwZ2VzdCVDMyVBM28lMjBkZSUyMHJlcG9zaXQlQzMlQjNyaW8lMEElMjAlMjAlMjAlMjBjcmVhdGVfcmVwbyUyQyUwQSUyMCUyMCUyMCUyMGRlbGV0ZV9yZXBvJTJDJTBBJTIwJTIwJTIwJTIwdXBkYXRlX3JlcG9fdmlzaWJpbGl0eSUyQyUwQSUwQSUyMCUyMCUyMCUyMCUyM0UlMjBhbGd1bnMlMjBtJUMzJUE5dG9kb3MlMjBwYXJhJTIwcmVjdXBlcmFyJTJGdHJvY2FyJTIwaW5mb3JtYSVDMyVBNyVDMyVCNWVzJTIwc29icmUlMjBvJTIwY29udGUlQzMlQkFkbyUwQSUyMCUyMCUyMCUyMGxpc3RfbW9kZWxzJTJDJTBBJTIwJTIwJTIwJTIwbGlzdF9kYXRhc2V0cyUyQyUwQSUyMCUyMCUyMCUyMGxpc3RfbWV0cmljcyUyQyUwQSUyMCUyMCUyMCUyMGxpc3RfcmVwb19maWxlcyUyQyUwQSUyMCUyMCUyMCUyMHVwbG9hZF9maWxlJTJDJTBBJTIwJTIwJTIwJTIwZGVsZXRlX2ZpbGUlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> ( | |
| <span class="hljs-comment"># Gestão de usuários</span> | |
| login, | |
| logout, | |
| whoami, | |
| <span class="hljs-comment"># Criação e gestão de repositório</span> | |
| create_repo, | |
| delete_repo, | |
| update_repo_visibility, | |
| <span class="hljs-comment">#E alguns métodos para recuperar/trocar informações sobre o conteúdo</span> | |
| list_models, | |
| list_datasets, | |
| list_metrics, | |
| list_repo_files, | |
| upload_file, | |
| delete_file, | |
| )`,wrap:!1}}),Re=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">"dummy-model"</span>)`,wrap:!1}}),Se=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">"dummy-model"</span>, organization=<span class="hljs-string">"huggingface"</span>)`,wrap:!1}}),Pe=new re({props:{title:"Usando a interface web",local:"usando-a-interface-web",headingTag:"h2"}}),st=new re({props:{title:"Fazendo upload dos arquivos de modelos",local:"fazendo-upload-dos-arquivos-de-modelos",headingTag:"h2"}}),mt=new re({props:{title:"A abordagem: upload_file",local:"a-abordagem-uploadfile",headingTag:"h3"}}),dt=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">"<path_to_file>/config.json"</span>, | |
| path_in_repo=<span class="hljs-string">"config.json"</span>, | |
| repo_id=<span class="hljs-string">"<namespace>/dummy-model"</span>, | |
| )`,wrap:!1}}),bt=new re({props:{title:"A classe: Repository",local:"a-classe-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">"<path_to_dummy_folder>"</span>, clone_from=<span class="hljs-string">"<namespace>/dummy-model"</span>)`,wrap:!1}}),wt=new U({props:{code:"cmVwby5naXRfcHVsbCgpJTBBcmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoKSUwQXJlcG8uZ2l0X3B1c2goKSUwQXJlcG8uZ2l0X3RhZygp",highlighted:`repo.git_pull() | |
| repo.git_add() | |
| repo.git_commit() | |
| repo.git_push() | |
| repo.git_tag()`,wrap:!1}}),jt=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">"<path_to_dummy_folder>"</span>) | |
| tokenizer.save_pretrained(<span class="hljs-string">"<path_to_dummy_folder>"</span>)`,wrap:!1}}),Ct=new U({props:{code:"cmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoJTIyQWRkJTIwbW9kZWwlMjBhbmQlMjB0b2tlbml6ZXIlMjBmaWxlcyUyMiklMEFyZXBvLmdpdF9wdXNoKCk=",highlighted:`repo.git_add() | |
| repo.git_commit(<span class="hljs-string">"Add model and tokenizer files"</span>) | |
| repo.git_push()`,wrap:!1}}),Wt=new re({props:{title:"A abordagem: baseada em git",local:"a-abordagem-baseada-em-git",headingTag:"h3"}}),qt=new U({props:{code:"Z2l0JTIwbGZzJTIwaW5zdGFsbA==",highlighted:"git lfs install",wrap:!1}}),Ht=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/<namespace>/<your-model-id>',wrap:!1}}),Lt=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}}),Xt=new U({props:{code:"Y2QlMjBkdW1teSUyMCUyNiUyNiUyMGxz",highlighted:'<span class="hljs-built_in">cd</span> dummy && <span class="hljs-built_in">ls</span>',wrap:!1}}),Rt=new U({props:{code:"UkVBRE1FLm1k",highlighted:"README.md",wrap:!1}});const _s=[nn,sn],co=[];function hs(e,t){return e[0]==="pt"?0:1}L=hs(h),A=co[L]=_s[L](h),Ft=new U({props:{code:"bHM=",highlighted:'<span class="hljs-built_in">ls</span>',wrap:!1}});const ws=[mn,rn],fo=[];function $s(e,t){return e[0]==="pt"?0:1}X=$s(h),R=fo[X]=ws[X](h),ne=new zs({props:{$$slots:{default:[pn]},$$scope:{ctx:h}}}),Dt=new U({props:{code:"Z2l0JTIwYWRkJTIwLg==",highlighted:"git add .",wrap:!1}}),Kt=new U({props:{code:"Z2l0JTIwc3RhdHVz",highlighted:"git status",wrap:!1}});const Us=[dn,un],bo=[];function Ts(e,t){return e[0]==="pt"?0:1}Q=Ts(h),S=bo[Q]=Us[Q](h),to=new U({props:{code:"Z2l0JTIwbGZzJTIwc3RhdHVz",highlighted:"git lfs status",wrap:!1}});const js=[fn,cn],Mo=[];function ks(e,t){return e[0]==="pt"?0:1}Y=ks(h),E=Mo[Y]=js[Y](h),lo=new U({props:{code:"Z2l0JTIwY29tbWl0JTIwLW0lMjAlMjJGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUyMg==",highlighted:'git commit -m <span class="hljs-string">"First model version"</span>',wrap:!1}});const Js=[Mn,bn],vo=[];function Zs(e,t){return e[0]==="pt"?0:1}F=Zs(h),P=vo[F]=Js[F](h),io=new U({props:{code:"Z2l0JTIwcHVzaA==",highlighted:"git push",wrap:!1}}),so=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 -> main`,wrap:!1}});function Cs(e,t){return e[0]==="pt"?yn:vn}let za=Cs(h),K=za(h);return no=new Ys({props:{source:"https://github.com/huggingface/course/blob/main/chapters/pt/chapter4/3.mdx"}}),{c(){a=m("meta"),r=s(),i=m("p"),c=s(),v($.$$.fragment),d=s(),v(w.$$.fragment),C=s(),j.c(),Z=s(),M=m("p"),M.textContent=J,D=s(),v(G.$$.fragment),me=s(),B=m("p"),B.textContent=k,W=s(),pe=m("p"),pe.textContent=Sa,Zo=s(),ue=m("ul"),ue.innerHTML=Ya,Co=s(),de=m("p"),de.textContent=Ea,Go=s(),v(ce.$$.fragment),Wo=s(),q.c(),yo=s(),fe=m("p"),fe.innerHTML=Fa,xo=s(),be=m("p"),be.innerHTML=Pa,Bo=s(),v(Me.$$.fragment),zo=s(),ve=m("p"),ve.textContent=Da,qo=s(),v(ye.$$.fragment),Ho=s(),ge=m("p"),ge.innerHTML=Oa,Io=s(),_e=m("p"),_e.textContent=Ka,Vo=s(),I.c(),go=s(),he=m("p"),he.innerHTML=ei,No=s(),we=m("p"),we.textContent=ti,Lo=s(),N.c(),_o=s(),$e=m("p"),$e.innerHTML=oi,Ao=s(),v(Ue.$$.fragment),Xo=s(),Te=m("p"),Te.innerHTML=li,Ro=s(),v(je.$$.fragment),Qo=s(),ke=m("p"),ke.innerHTML=ai,So=s(),v(Je.$$.fragment),Yo=s(),Ze=m("p"),Ze.innerHTML=ii,Eo=s(),v(Ce.$$.fragment),Fo=s(),Ge=m("p"),Ge.innerHTML=si,Po=s(),We=m("p"),We.textContent=ni,Do=s(),O.c(),ho=s(),v(oe.$$.fragment),Oo=s(),xe=m("p"),xe.innerHTML=ri,Ko=s(),Be=m("p"),Be.innerHTML=mi,el=s(),ze=m("p"),ze.textContent=pi,tl=s(),v(qe.$$.fragment),ol=s(),He=m("p"),He.innerHTML=ui,ll=s(),Ie=m("p"),Ie.innerHTML=di,al=s(),v(Ve.$$.fragment),il=s(),Ne=m("p"),Ne.innerHTML=ci,sl=s(),v(Le.$$.fragment),nl=s(),Ae=m("p"),Ae.innerHTML=fi,rl=s(),Xe=m("p"),Xe.innerHTML=bi,ml=s(),v(Re.$$.fragment),pl=s(),Qe=m("p"),Qe.innerHTML=Mi,ul=s(),v(Se.$$.fragment),dl=s(),Ye=m("p"),Ye.innerHTML=vi,cl=s(),Ee=m("ul"),Ee.innerHTML=yi,fl=s(),Fe=m("p"),Fe.textContent=gi,bl=s(),v(Pe.$$.fragment),Ml=s(),De=m("p"),De.textContent=_i,vl=s(),Oe=m("p"),Oe.innerHTML=hi,yl=s(),le=m("div"),le.innerHTML=wi,gl=s(),Ke=m("p"),Ke.textContent=$i,_l=s(),et=m("p"),et.textContent=Ui,hl=s(),tt=m("p"),tt.textContent=Ti,wl=s(),ae=m("div"),ae.innerHTML=ji,$l=s(),ot=m("p"),ot.textContent=ki,Ul=s(),ie=m("div"),ie.innerHTML=Ji,Tl=s(),lt=m("p"),lt.textContent=Zi,jl=s(),at=m("p"),at.innerHTML=Ci,kl=s(),se=m("div"),se.innerHTML=Gi,Jl=s(),it=m("p"),it.textContent=Wi,Zl=s(),v(st.$$.fragment),Cl=s(),nt=m("p"),nt.innerHTML=xi,Gl=s(),rt=m("p"),rt.innerHTML=Bi,Wl=s(),v(mt.$$.fragment),xl=s(),pt=m("p"),pt.innerHTML=zi,Bl=s(),ut=m("p"),ut.textContent=qi,zl=s(),v(dt.$$.fragment),ql=s(),ct=m("p"),ct.innerHTML=Hi,Hl=s(),ft=m("ul"),ft.innerHTML=Ii,Il=s(),v(bt.$$.fragment),Vl=s(),Mt=m("p"),Mt.innerHTML=Vi,Nl=s(),vt=m("p"),vt.innerHTML=Ni,Ll=s(),yt=m("p"),yt.textContent=Li,Al=s(),v(gt.$$.fragment),Xl=s(),_t=m("p"),_t.innerHTML=Ai,Rl=s(),ht=m("p"),ht.textContent=Xi,Ql=s(),v(wt.$$.fragment),Sl=s(),$t=m("p"),$t.innerHTML=Ri,Yl=s(),Ut=m("p"),Ut.textContent=Qi,El=s(),Tt=m("p"),Tt.textContent=Si,Fl=s(),v(jt.$$.fragment),Pl=s(),kt=m("p"),kt.textContent=Yi,Dl=s(),v(Jt.$$.fragment),Ol=s(),Zt=m("p"),Zt.innerHTML=Ei,Kl=s(),v(Ct.$$.fragment),ea=s(),Gt=m("p"),Gt.textContent=Fi,ta=s(),v(Wt.$$.fragment),oa=s(),xt=m("p"),xt.textContent=Pi,la=s(),Bt=m("p"),Bt.innerHTML=Di,aa=s(),zt=m("p"),zt.textContent=Oi,ia=s(),v(qt.$$.fragment),sa=s(),v(Ht.$$.fragment),na=s(),It=m("p"),It.textContent=Ki,ra=s(),v(Vt.$$.fragment),ma=s(),Nt=m("p"),Nt.innerHTML=es,pa=s(),v(Lt.$$.fragment),ua=s(),At=m("p"),At.innerHTML=ts,da=s(),v(Xt.$$.fragment),ca=s(),v(Rt.$$.fragment),fa=s(),Qt=m("p"),Qt.innerHTML=os,ba=s(),St=m("p"),St.innerHTML=ls,Ma=s(),Yt=m("p"),Yt.textContent=as,va=s(),A.c(),wo=s(),Et=m("p"),Et.innerHTML=is,ya=s(),v(Ft.$$.fragment),ga=s(),R.c(),$o=s(),v(ne.$$.fragment),_a=s(),Pt=m("p"),Pt.innerHTML=ss,ha=s(),v(Dt.$$.fragment),wa=s(),Ot=m("p"),Ot.textContent=ns,$a=s(),v(Kt.$$.fragment),Ua=s(),S.c(),Uo=s(),eo=m("p"),eo.innerHTML=rs,Ta=s(),v(to.$$.fragment),ja=s(),E.c(),To=s(),oo=m("p"),oo.innerHTML=ms,ka=s(),v(lo.$$.fragment),Ja=s(),P.c(),jo=s(),ao=m("p"),ao.textContent=ps,Za=s(),v(io.$$.fragment),Ca=s(),v(so.$$.fragment),Ga=s(),K.c(),ko=s(),v(no.$$.fragment),Wa=s(),Jo=m("p"),this.h()},l(e){const t=As("svelte-u9bgzb",document.head);a=p(t,"META",{name:!0,content:!0}),t.forEach(o),r=n(e),i=p(e,"P",{}),Bs(i).forEach(o),c=n(e),y($.$$.fragment,e),d=n(e),y(w.$$.fragment,e),C=n(e),j.l(e),Z=n(e),M=p(e,"P",{"data-svelte-h":!0}),u(M)!=="svelte-1smr2wk"&&(M.textContent=J),D=n(e),y(G.$$.fragment,e),me=n(e),B=p(e,"P",{"data-svelte-h":!0}),u(B)!=="svelte-dmho3e"&&(B.textContent=k),W=n(e),pe=p(e,"P",{"data-svelte-h":!0}),u(pe)!=="svelte-1bu8dyb"&&(pe.textContent=Sa),Zo=n(e),ue=p(e,"UL",{"data-svelte-h":!0}),u(ue)!=="svelte-7rayhf"&&(ue.innerHTML=Ya),Co=n(e),de=p(e,"P",{"data-svelte-h":!0}),u(de)!=="svelte-1b7texw"&&(de.textContent=Ea),Go=n(e),y(ce.$$.fragment,e),Wo=n(e),q.l(e),yo=n(e),fe=p(e,"P",{"data-svelte-h":!0}),u(fe)!=="svelte-nu62ui"&&(fe.innerHTML=Fa),xo=n(e),be=p(e,"P",{"data-svelte-h":!0}),u(be)!=="svelte-4hb3y1"&&(be.innerHTML=Pa),Bo=n(e),y(Me.$$.fragment,e),zo=n(e),ve=p(e,"P",{"data-svelte-h":!0}),u(ve)!=="svelte-1lpohvw"&&(ve.textContent=Da),qo=n(e),y(ye.$$.fragment,e),Ho=n(e),ge=p(e,"P",{"data-svelte-h":!0}),u(ge)!=="svelte-lcuu9t"&&(ge.innerHTML=Oa),Io=n(e),_e=p(e,"P",{"data-svelte-h":!0}),u(_e)!=="svelte-1umrram"&&(_e.textContent=Ka),Vo=n(e),I.l(e),go=n(e),he=p(e,"P",{"data-svelte-h":!0}),u(he)!=="svelte-ap0e64"&&(he.innerHTML=ei),No=n(e),we=p(e,"P",{"data-svelte-h":!0}),u(we)!=="svelte-10dpn6s"&&(we.textContent=ti),Lo=n(e),N.l(e),_o=n(e),$e=p(e,"P",{"data-svelte-h":!0}),u($e)!=="svelte-avmb96"&&($e.innerHTML=oi),Ao=n(e),y(Ue.$$.fragment,e),Xo=n(e),Te=p(e,"P",{"data-svelte-h":!0}),u(Te)!=="svelte-2kfoup"&&(Te.innerHTML=li),Ro=n(e),y(je.$$.fragment,e),Qo=n(e),ke=p(e,"P",{"data-svelte-h":!0}),u(ke)!=="svelte-17fgab7"&&(ke.innerHTML=ai),So=n(e),y(Je.$$.fragment,e),Yo=n(e),Ze=p(e,"P",{"data-svelte-h":!0}),u(Ze)!=="svelte-1sbpskg"&&(Ze.innerHTML=ii),Eo=n(e),y(Ce.$$.fragment,e),Fo=n(e),Ge=p(e,"P",{"data-svelte-h":!0}),u(Ge)!=="svelte-1nfto12"&&(Ge.innerHTML=si),Po=n(e),We=p(e,"P",{"data-svelte-h":!0}),u(We)!=="svelte-ug5mva"&&(We.textContent=ni),Do=n(e),O.l(e),ho=n(e),y(oe.$$.fragment,e),Oo=n(e),xe=p(e,"P",{"data-svelte-h":!0}),u(xe)!=="svelte-983bgp"&&(xe.innerHTML=ri),Ko=n(e),Be=p(e,"P",{"data-svelte-h":!0}),u(Be)!=="svelte-1tsa46n"&&(Be.innerHTML=mi),el=n(e),ze=p(e,"P",{"data-svelte-h":!0}),u(ze)!=="svelte-1548kc2"&&(ze.textContent=pi),tl=n(e),y(qe.$$.fragment,e),ol=n(e),He=p(e,"P",{"data-svelte-h":!0}),u(He)!=="svelte-15aegt7"&&(He.innerHTML=ui),ll=n(e),Ie=p(e,"P",{"data-svelte-h":!0}),u(Ie)!=="svelte-1stkclv"&&(Ie.innerHTML=di),al=n(e),y(Ve.$$.fragment,e),il=n(e),Ne=p(e,"P",{"data-svelte-h":!0}),u(Ne)!=="svelte-1eiuigq"&&(Ne.innerHTML=ci),sl=n(e),y(Le.$$.fragment,e),nl=n(e),Ae=p(e,"P",{"data-svelte-h":!0}),u(Ae)!=="svelte-14qk6ho"&&(Ae.innerHTML=fi),rl=n(e),Xe=p(e,"P",{"data-svelte-h":!0}),u(Xe)!=="svelte-1pizm22"&&(Xe.innerHTML=bi),ml=n(e),y(Re.$$.fragment,e),pl=n(e),Qe=p(e,"P",{"data-svelte-h":!0}),u(Qe)!=="svelte-1xxe006"&&(Qe.innerHTML=Mi),ul=n(e),y(Se.$$.fragment,e),dl=n(e),Ye=p(e,"P",{"data-svelte-h":!0}),u(Ye)!=="svelte-1k3edla"&&(Ye.innerHTML=vi),cl=n(e),Ee=p(e,"UL",{"data-svelte-h":!0}),u(Ee)!=="svelte-1jks2cx"&&(Ee.innerHTML=yi),fl=n(e),Fe=p(e,"P",{"data-svelte-h":!0}),u(Fe)!=="svelte-wcm38c"&&(Fe.textContent=gi),bl=n(e),y(Pe.$$.fragment,e),Ml=n(e),De=p(e,"P",{"data-svelte-h":!0}),u(De)!=="svelte-hmh1d4"&&(De.textContent=_i),vl=n(e),Oe=p(e,"P",{"data-svelte-h":!0}),u(Oe)!=="svelte-1um6cqk"&&(Oe.innerHTML=hi),yl=n(e),le=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(le)!=="svelte-4qsgxt"&&(le.innerHTML=wi),gl=n(e),Ke=p(e,"P",{"data-svelte-h":!0}),u(Ke)!=="svelte-1s1fvwi"&&(Ke.textContent=$i),_l=n(e),et=p(e,"P",{"data-svelte-h":!0}),u(et)!=="svelte-1ud11k7"&&(et.textContent=Ui),hl=n(e),tt=p(e,"P",{"data-svelte-h":!0}),u(tt)!=="svelte-h8gfoj"&&(tt.textContent=Ti),wl=n(e),ae=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(ae)!=="svelte-1xh6nig"&&(ae.innerHTML=ji),$l=n(e),ot=p(e,"P",{"data-svelte-h":!0}),u(ot)!=="svelte-kke3lh"&&(ot.textContent=ki),Ul=n(e),ie=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(ie)!=="svelte-1jm8l0p"&&(ie.innerHTML=Ji),Tl=n(e),lt=p(e,"P",{"data-svelte-h":!0}),u(lt)!=="svelte-1hwwdg4"&&(lt.textContent=Zi),jl=n(e),at=p(e,"P",{"data-svelte-h":!0}),u(at)!=="svelte-10w6xbz"&&(at.innerHTML=Ci),kl=n(e),se=p(e,"DIV",{class:!0,"data-svelte-h":!0}),u(se)!=="svelte-1kuf5jc"&&(se.innerHTML=Gi),Jl=n(e),it=p(e,"P",{"data-svelte-h":!0}),u(it)!=="svelte-1qoot5e"&&(it.textContent=Wi),Zl=n(e),y(st.$$.fragment,e),Cl=n(e),nt=p(e,"P",{"data-svelte-h":!0}),u(nt)!=="svelte-1krbxw0"&&(nt.innerHTML=xi),Gl=n(e),rt=p(e,"P",{"data-svelte-h":!0}),u(rt)!=="svelte-17kijy7"&&(rt.innerHTML=Bi),Wl=n(e),y(mt.$$.fragment,e),xl=n(e),pt=p(e,"P",{"data-svelte-h":!0}),u(pt)!=="svelte-3wxzyx"&&(pt.innerHTML=zi),Bl=n(e),ut=p(e,"P",{"data-svelte-h":!0}),u(ut)!=="svelte-hrimn5"&&(ut.textContent=qi),zl=n(e),y(dt.$$.fragment,e),ql=n(e),ct=p(e,"P",{"data-svelte-h":!0}),u(ct)!=="svelte-apmk97"&&(ct.innerHTML=Hi),Hl=n(e),ft=p(e,"UL",{"data-svelte-h":!0}),u(ft)!=="svelte-1gm7nat"&&(ft.innerHTML=Ii),Il=n(e),y(bt.$$.fragment,e),Vl=n(e),Mt=p(e,"P",{"data-svelte-h":!0}),u(Mt)!=="svelte-1v7h8t1"&&(Mt.innerHTML=Vi),Nl=n(e),vt=p(e,"P",{"data-svelte-h":!0}),u(vt)!=="svelte-d30qux"&&(vt.innerHTML=Ni),Ll=n(e),yt=p(e,"P",{"data-svelte-h":!0}),u(yt)!=="svelte-1k16hq"&&(yt.textContent=Li),Al=n(e),y(gt.$$.fragment,e),Xl=n(e),_t=p(e,"P",{"data-svelte-h":!0}),u(_t)!=="svelte-1mq9bzs"&&(_t.innerHTML=Ai),Rl=n(e),ht=p(e,"P",{"data-svelte-h":!0}),u(ht)!=="svelte-ooiitf"&&(ht.textContent=Xi),Ql=n(e),y(wt.$$.fragment,e),Sl=n(e),$t=p(e,"P",{"data-svelte-h":!0}),u($t)!=="svelte-15zpg2"&&($t.innerHTML=Ri),Yl=n(e),Ut=p(e,"P",{"data-svelte-h":!0}),u(Ut)!=="svelte-1vscdef"&&(Ut.textContent=Qi),El=n(e),Tt=p(e,"P",{"data-svelte-h":!0}),u(Tt)!=="svelte-m6k6v9"&&(Tt.textContent=Si),Fl=n(e),y(jt.$$.fragment,e),Pl=n(e),kt=p(e,"P",{"data-svelte-h":!0}),u(kt)!=="svelte-tt8esf"&&(kt.textContent=Yi),Dl=n(e),y(Jt.$$.fragment,e),Ol=n(e),Zt=p(e,"P",{"data-svelte-h":!0}),u(Zt)!=="svelte-1cy5xzq"&&(Zt.innerHTML=Ei),Kl=n(e),y(Ct.$$.fragment,e),ea=n(e),Gt=p(e,"P",{"data-svelte-h":!0}),u(Gt)!=="svelte-zq3o1l"&&(Gt.textContent=Fi),ta=n(e),y(Wt.$$.fragment,e),oa=n(e),xt=p(e,"P",{"data-svelte-h":!0}),u(xt)!=="svelte-a7msxt"&&(xt.textContent=Pi),la=n(e),Bt=p(e,"P",{"data-svelte-h":!0}),u(Bt)!=="svelte-rlh74t"&&(Bt.innerHTML=Di),aa=n(e),zt=p(e,"P",{"data-svelte-h":!0}),u(zt)!=="svelte-1t84m30"&&(zt.textContent=Oi),ia=n(e),y(qt.$$.fragment,e),sa=n(e),y(Ht.$$.fragment,e),na=n(e),It=p(e,"P",{"data-svelte-h":!0}),u(It)!=="svelte-1t8jsq9"&&(It.textContent=Ki),ra=n(e),y(Vt.$$.fragment,e),ma=n(e),Nt=p(e,"P",{"data-svelte-h":!0}),u(Nt)!=="svelte-k1junb"&&(Nt.innerHTML=es),pa=n(e),y(Lt.$$.fragment,e),ua=n(e),At=p(e,"P",{"data-svelte-h":!0}),u(At)!=="svelte-1rmlz57"&&(At.innerHTML=ts),da=n(e),y(Xt.$$.fragment,e),ca=n(e),y(Rt.$$.fragment,e),fa=n(e),Qt=p(e,"P",{"data-svelte-h":!0}),u(Qt)!=="svelte-dt67sf"&&(Qt.innerHTML=os),ba=n(e),St=p(e,"P",{"data-svelte-h":!0}),u(St)!=="svelte-zpc61m"&&(St.innerHTML=ls),Ma=n(e),Yt=p(e,"P",{"data-svelte-h":!0}),u(Yt)!=="svelte-1o57t58"&&(Yt.textContent=as),va=n(e),A.l(e),wo=n(e),Et=p(e,"P",{"data-svelte-h":!0}),u(Et)!=="svelte-iw67rt"&&(Et.innerHTML=is),ya=n(e),y(Ft.$$.fragment,e),ga=n(e),R.l(e),$o=n(e),y(ne.$$.fragment,e),_a=n(e),Pt=p(e,"P",{"data-svelte-h":!0}),u(Pt)!=="svelte-1qcdcr0"&&(Pt.innerHTML=ss),ha=n(e),y(Dt.$$.fragment,e),wa=n(e),Ot=p(e,"P",{"data-svelte-h":!0}),u(Ot)!=="svelte-1louxly"&&(Ot.textContent=ns),$a=n(e),y(Kt.$$.fragment,e),Ua=n(e),S.l(e),Uo=n(e),eo=p(e,"P",{"data-svelte-h":!0}),u(eo)!=="svelte-2v5f8h"&&(eo.innerHTML=rs),Ta=n(e),y(to.$$.fragment,e),ja=n(e),E.l(e),To=n(e),oo=p(e,"P",{"data-svelte-h":!0}),u(oo)!=="svelte-uuni1l"&&(oo.innerHTML=ms),ka=n(e),y(lo.$$.fragment,e),Ja=n(e),P.l(e),jo=n(e),ao=p(e,"P",{"data-svelte-h":!0}),u(ao)!=="svelte-1qv3fuj"&&(ao.textContent=ps),Za=n(e),y(io.$$.fragment,e),Ca=n(e),y(so.$$.fragment,e),Ga=n(e),K.l(e),ko=n(e),y(no.$$.fragment,e),Wa=n(e),Jo=p(e,"P",{}),Bs(Jo).forEach(o),this.h()},h(){x(a,"name","hf:doc:metadata"),x(a,"content",_n),x(le,"class","flex justify-center"),x(ae,"class","flex justify-center"),x(ie,"class","flex justify-center"),x(se,"class","flex justify-center")},m(e,t){Xs(document.head,a),l(e,r,t),l(e,i,t),l(e,c,t),g($,e,t),l(e,d,t),g(w,e,t),l(e,C,t),ro[T].m(e,t),l(e,Z,t),l(e,M,t),l(e,D,t),g(G,e,t),l(e,me,t),l(e,B,t),l(e,W,t),l(e,pe,t),l(e,Zo,t),l(e,ue,t),l(e,Co,t),l(e,de,t),l(e,Go,t),g(ce,e,t),l(e,Wo,t),mo[z].m(e,t),l(e,yo,t),l(e,fe,t),l(e,xo,t),l(e,be,t),l(e,Bo,t),g(Me,e,t),l(e,zo,t),l(e,ve,t),l(e,qo,t),g(ye,e,t),l(e,Ho,t),l(e,ge,t),l(e,Io,t),l(e,_e,t),l(e,Vo,t),po[H].m(e,t),l(e,go,t),l(e,he,t),l(e,No,t),l(e,we,t),l(e,Lo,t),uo[V].m(e,t),l(e,_o,t),l(e,$e,t),l(e,Ao,t),g(Ue,e,t),l(e,Xo,t),l(e,Te,t),l(e,Ro,t),g(je,e,t),l(e,Qo,t),l(e,ke,t),l(e,So,t),g(Je,e,t),l(e,Yo,t),l(e,Ze,t),l(e,Eo,t),g(Ce,e,t),l(e,Fo,t),l(e,Ge,t),l(e,Po,t),l(e,We,t),l(e,Do,t),O.m(e,t),l(e,ho,t),g(oe,e,t),l(e,Oo,t),l(e,xe,t),l(e,Ko,t),l(e,Be,t),l(e,el,t),l(e,ze,t),l(e,tl,t),g(qe,e,t),l(e,ol,t),l(e,He,t),l(e,ll,t),l(e,Ie,t),l(e,al,t),g(Ve,e,t),l(e,il,t),l(e,Ne,t),l(e,sl,t),g(Le,e,t),l(e,nl,t),l(e,Ae,t),l(e,rl,t),l(e,Xe,t),l(e,ml,t),g(Re,e,t),l(e,pl,t),l(e,Qe,t),l(e,ul,t),g(Se,e,t),l(e,dl,t),l(e,Ye,t),l(e,cl,t),l(e,Ee,t),l(e,fl,t),l(e,Fe,t),l(e,bl,t),g(Pe,e,t),l(e,Ml,t),l(e,De,t),l(e,vl,t),l(e,Oe,t),l(e,yl,t),l(e,le,t),l(e,gl,t),l(e,Ke,t),l(e,_l,t),l(e,et,t),l(e,hl,t),l(e,tt,t),l(e,wl,t),l(e,ae,t),l(e,$l,t),l(e,ot,t),l(e,Ul,t),l(e,ie,t),l(e,Tl,t),l(e,lt,t),l(e,jl,t),l(e,at,t),l(e,kl,t),l(e,se,t),l(e,Jl,t),l(e,it,t),l(e,Zl,t),g(st,e,t),l(e,Cl,t),l(e,nt,t),l(e,Gl,t),l(e,rt,t),l(e,Wl,t),g(mt,e,t),l(e,xl,t),l(e,pt,t),l(e,Bl,t),l(e,ut,t),l(e,zl,t),g(dt,e,t),l(e,ql,t),l(e,ct,t),l(e,Hl,t),l(e,ft,t),l(e,Il,t),g(bt,e,t),l(e,Vl,t),l(e,Mt,t),l(e,Nl,t),l(e,vt,t),l(e,Ll,t),l(e,yt,t),l(e,Al,t),g(gt,e,t),l(e,Xl,t),l(e,_t,t),l(e,Rl,t),l(e,ht,t),l(e,Ql,t),g(wt,e,t),l(e,Sl,t),l(e,$t,t),l(e,Yl,t),l(e,Ut,t),l(e,El,t),l(e,Tt,t),l(e,Fl,t),g(jt,e,t),l(e,Pl,t),l(e,kt,t),l(e,Dl,t),g(Jt,e,t),l(e,Ol,t),l(e,Zt,t),l(e,Kl,t),g(Ct,e,t),l(e,ea,t),l(e,Gt,t),l(e,ta,t),g(Wt,e,t),l(e,oa,t),l(e,xt,t),l(e,la,t),l(e,Bt,t),l(e,aa,t),l(e,zt,t),l(e,ia,t),g(qt,e,t),l(e,sa,t),g(Ht,e,t),l(e,na,t),l(e,It,t),l(e,ra,t),g(Vt,e,t),l(e,ma,t),l(e,Nt,t),l(e,pa,t),g(Lt,e,t),l(e,ua,t),l(e,At,t),l(e,da,t),g(Xt,e,t),l(e,ca,t),g(Rt,e,t),l(e,fa,t),l(e,Qt,t),l(e,ba,t),l(e,St,t),l(e,Ma,t),l(e,Yt,t),l(e,va,t),co[L].m(e,t),l(e,wo,t),l(e,Et,t),l(e,ya,t),g(Ft,e,t),l(e,ga,t),fo[X].m(e,t),l(e,$o,t),g(ne,e,t),l(e,_a,t),l(e,Pt,t),l(e,ha,t),g(Dt,e,t),l(e,wa,t),l(e,Ot,t),l(e,$a,t),g(Kt,e,t),l(e,Ua,t),bo[Q].m(e,t),l(e,Uo,t),l(e,eo,t),l(e,Ta,t),g(to,e,t),l(e,ja,t),Mo[Y].m(e,t),l(e,To,t),l(e,oo,t),l(e,ka,t),g(lo,e,t),l(e,Ja,t),vo[F].m(e,t),l(e,jo,t),l(e,ao,t),l(e,Za,t),g(io,e,t),l(e,Ca,t),g(so,e,t),l(e,Ga,t),K.m(e,t),l(e,ko,t),g(no,e,t),l(e,Wa,t),l(e,Jo,t),xa=!0},p(e,[t]){const Gs={};t&1&&(Gs.fw=e[0]),$.$set(Gs);let qa=T;T=ds(e),T!==qa&&(te(),f(ro[qa],1,1,()=>{ro[qa]=null}),ee(),j=ro[T],j||(j=ro[T]=us[T](e),j.c()),b(j,1),j.m(Z.parentNode,Z));let Ha=z;z=fs(e),z!==Ha&&(te(),f(mo[Ha],1,1,()=>{mo[Ha]=null}),ee(),q=mo[z],q||(q=mo[z]=cs[z](e),q.c()),b(q,1),q.m(yo.parentNode,yo));let Ia=H;H=Ms(e),H!==Ia&&(te(),f(po[Ia],1,1,()=>{po[Ia]=null}),ee(),I=po[H],I||(I=po[H]=bs[H](e),I.c()),b(I,1),I.m(go.parentNode,go));let Va=V;V=ys(e),V!==Va&&(te(),f(uo[Va],1,1,()=>{uo[Va]=null}),ee(),N=uo[V],N||(N=uo[V]=vs[V](e),N.c()),b(N,1),N.m(_o.parentNode,_o)),Ba!==(Ba=gs(e))&&(O.d(1),O=Ba(e),O&&(O.c(),O.m(ho.parentNode,ho)));const Ws={};t&2&&(Ws.$$scope={dirty:t,ctx:e}),oe.$set(Ws);let Na=L;L=hs(e),L!==Na&&(te(),f(co[Na],1,1,()=>{co[Na]=null}),ee(),A=co[L],A||(A=co[L]=_s[L](e),A.c()),b(A,1),A.m(wo.parentNode,wo));let La=X;X=$s(e),X!==La&&(te(),f(fo[La],1,1,()=>{fo[La]=null}),ee(),R=fo[X],R||(R=fo[X]=ws[X](e),R.c()),b(R,1),R.m($o.parentNode,$o));const xs={};t&2&&(xs.$$scope={dirty:t,ctx:e}),ne.$set(xs);let Aa=Q;Q=Ts(e),Q!==Aa&&(te(),f(bo[Aa],1,1,()=>{bo[Aa]=null}),ee(),S=bo[Q],S||(S=bo[Q]=Us[Q](e),S.c()),b(S,1),S.m(Uo.parentNode,Uo));let Xa=Y;Y=ks(e),Y!==Xa&&(te(),f(Mo[Xa],1,1,()=>{Mo[Xa]=null}),ee(),E=Mo[Y],E||(E=Mo[Y]=js[Y](e),E.c()),b(E,1),E.m(To.parentNode,To));let Ra=F;F=Zs(e),F!==Ra&&(te(),f(vo[Ra],1,1,()=>{vo[Ra]=null}),ee(),P=vo[F],P||(P=vo[F]=Js[F](e),P.c()),b(P,1),P.m(jo.parentNode,jo)),za!==(za=Cs(e))&&(K.d(1),K=za(e),K&&(K.c(),K.m(ko.parentNode,ko)))},i(e){xa||(b($.$$.fragment,e),b(w.$$.fragment,e),b(j),b(G.$$.fragment,e),b(ce.$$.fragment,e),b(q),b(Me.$$.fragment,e),b(ye.$$.fragment,e),b(I),b(N),b(Ue.$$.fragment,e),b(je.$$.fragment,e),b(Je.$$.fragment,e),b(Ce.$$.fragment,e),b(oe.$$.fragment,e),b(qe.$$.fragment,e),b(Ve.$$.fragment,e),b(Le.$$.fragment,e),b(Re.$$.fragment,e),b(Se.$$.fragment,e),b(Pe.$$.fragment,e),b(st.$$.fragment,e),b(mt.$$.fragment,e),b(dt.$$.fragment,e),b(bt.$$.fragment,e),b(gt.$$.fragment,e),b(wt.$$.fragment,e),b(jt.$$.fragment,e),b(Jt.$$.fragment,e),b(Ct.$$.fragment,e),b(Wt.$$.fragment,e),b(qt.$$.fragment,e),b(Ht.$$.fragment,e),b(Vt.$$.fragment,e),b(Lt.$$.fragment,e),b(Xt.$$.fragment,e),b(Rt.$$.fragment,e),b(A),b(Ft.$$.fragment,e),b(R),b(ne.$$.fragment,e),b(Dt.$$.fragment,e),b(Kt.$$.fragment,e),b(S),b(to.$$.fragment,e),b(E),b(lo.$$.fragment,e),b(P),b(io.$$.fragment,e),b(so.$$.fragment,e),b(no.$$.fragment,e),xa=!0)},o(e){f($.$$.fragment,e),f(w.$$.fragment,e),f(j),f(G.$$.fragment,e),f(ce.$$.fragment,e),f(q),f(Me.$$.fragment,e),f(ye.$$.fragment,e),f(I),f(N),f(Ue.$$.fragment,e),f(je.$$.fragment,e),f(Je.$$.fragment,e),f(Ce.$$.fragment,e),f(oe.$$.fragment,e),f(qe.$$.fragment,e),f(Ve.$$.fragment,e),f(Le.$$.fragment,e),f(Re.$$.fragment,e),f(Se.$$.fragment,e),f(Pe.$$.fragment,e),f(st.$$.fragment,e),f(mt.$$.fragment,e),f(dt.$$.fragment,e),f(bt.$$.fragment,e),f(gt.$$.fragment,e),f(wt.$$.fragment,e),f(jt.$$.fragment,e),f(Jt.$$.fragment,e),f(Ct.$$.fragment,e),f(Wt.$$.fragment,e),f(qt.$$.fragment,e),f(Ht.$$.fragment,e),f(Vt.$$.fragment,e),f(Lt.$$.fragment,e),f(Xt.$$.fragment,e),f(Rt.$$.fragment,e),f(A),f(Ft.$$.fragment,e),f(R),f(ne.$$.fragment,e),f(Dt.$$.fragment,e),f(Kt.$$.fragment,e),f(S),f(to.$$.fragment,e),f(E),f(lo.$$.fragment,e),f(P),f(io.$$.fragment,e),f(so.$$.fragment,e),f(no.$$.fragment,e),xa=!1},d(e){e&&(o(r),o(i),o(c),o(d),o(C),o(Z),o(M),o(D),o(me),o(B),o(W),o(pe),o(Zo),o(ue),o(Co),o(de),o(Go),o(Wo),o(yo),o(fe),o(xo),o(be),o(Bo),o(zo),o(ve),o(qo),o(Ho),o(ge),o(Io),o(_e),o(Vo),o(go),o(he),o(No),o(we),o(Lo),o(_o),o($e),o(Ao),o(Xo),o(Te),o(Ro),o(Qo),o(ke),o(So),o(Yo),o(Ze),o(Eo),o(Fo),o(Ge),o(Po),o(We),o(Do),o(ho),o(Oo),o(xe),o(Ko),o(Be),o(el),o(ze),o(tl),o(ol),o(He),o(ll),o(Ie),o(al),o(il),o(Ne),o(sl),o(nl),o(Ae),o(rl),o(Xe),o(ml),o(pl),o(Qe),o(ul),o(dl),o(Ye),o(cl),o(Ee),o(fl),o(Fe),o(bl),o(Ml),o(De),o(vl),o(Oe),o(yl),o(le),o(gl),o(Ke),o(_l),o(et),o(hl),o(tt),o(wl),o(ae),o($l),o(ot),o(Ul),o(ie),o(Tl),o(lt),o(jl),o(at),o(kl),o(se),o(Jl),o(it),o(Zl),o(Cl),o(nt),o(Gl),o(rt),o(Wl),o(xl),o(pt),o(Bl),o(ut),o(zl),o(ql),o(ct),o(Hl),o(ft),o(Il),o(Vl),o(Mt),o(Nl),o(vt),o(Ll),o(yt),o(Al),o(Xl),o(_t),o(Rl),o(ht),o(Ql),o(Sl),o($t),o(Yl),o(Ut),o(El),o(Tt),o(Fl),o(Pl),o(kt),o(Dl),o(Ol),o(Zt),o(Kl),o(ea),o(Gt),o(ta),o(oa),o(xt),o(la),o(Bt),o(aa),o(zt),o(ia),o(sa),o(na),o(It),o(ra),o(ma),o(Nt),o(pa),o(ua),o(At),o(da),o(ca),o(fa),o(Qt),o(ba),o(St),o(Ma),o(Yt),o(va),o(wo),o(Et),o(ya),o(ga),o($o),o(_a),o(Pt),o(ha),o(wa),o(Ot),o($a),o(Ua),o(Uo),o(eo),o(Ta),o(ja),o(To),o(oo),o(ka),o(Ja),o(jo),o(ao),o(Za),o(Ca),o(Ga),o(ko),o(Wa),o(Jo)),o(a),_($,e),_(w,e),ro[T].d(e),_(G,e),_(ce,e),mo[z].d(e),_(Me,e),_(ye,e),po[H].d(e),uo[V].d(e),_(Ue,e),_(je,e),_(Je,e),_(Ce,e),O.d(e),_(oe,e),_(qe,e),_(Ve,e),_(Le,e),_(Re,e),_(Se,e),_(Pe,e),_(st,e),_(mt,e),_(dt,e),_(bt,e),_(gt,e),_(wt,e),_(jt,e),_(Jt,e),_(Ct,e),_(Wt,e),_(qt,e),_(Ht,e),_(Vt,e),_(Lt,e),_(Xt,e),_(Rt,e),co[L].d(e),_(Ft,e),fo[X].d(e),_(ne,e),_(Dt,e),_(Kt,e),bo[Q].d(e),_(to,e),Mo[Y].d(e),_(lo,e),vo[F].d(e),_(io,e),_(so,e),K.d(e),_(no,e)}}}const _n='{"title":"Compartilhando modelos pré-treinados","local":"compartilhando-modelos-pré-treinados","sections":[{"title":"Usando a API push_to_hub","local":"usando-a-api-pushtohub","sections":[],"depth":2},{"title":"Usando a biblioteca Python huggingface_hub","local":"usando-a-biblioteca-python-huggingfacehub","sections":[],"depth":2},{"title":"Usando a interface web","local":"usando-a-interface-web","sections":[],"depth":2},{"title":"Fazendo upload dos arquivos de modelos","local":"fazendo-upload-dos-arquivos-de-modelos","sections":[{"title":"A abordagem: upload_file","local":"a-abordagem-uploadfile","sections":[],"depth":3},{"title":"A classe: Repository","local":"a-classe-repository","sections":[],"depth":3},{"title":"A abordagem: baseada em git","local":"a-abordagem-baseada-em-git","sections":[],"depth":3}],"depth":2}],"depth":1}';function hn(h,a,r){let i="pt";return Is(()=>{const c=new URLSearchParams(window.location.search);r(0,i=c.get("fw")||"pt")}),[i]}class Cn extends Ns{constructor(a){super(),Ls(this,a,hn,gn,Hs,{})}}export{Cn as component}; | |
Xet Storage Details
- Size:
- 75.2 kB
- Xet hash:
- 07c2cce9713fb06aa09c67a2104ca5588b2c5791a2309d83c86f93fec9c9af74
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.