import{S as x_,i as I_,s as T_,e as i,k as u,w as z,t as a,l as C_,M as F_,c as l,d as o,m as p,x as y,a as m,h as r,b as v,N as Le,G as t,g as n,y as w,o as b,p as uo,q as $,B as j,v as H_,n as po}from"../../chunks/vendor-hf-doc-builder.js";import{T as M_}from"../../chunks/Tip-hf-doc-builder.js";import{Y as Gu}from"../../chunks/Youtube-hf-doc-builder.js";import{I as Xo}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as x}from"../../chunks/CodeBlock-hf-doc-builder.js";import{D as S_}from"../../chunks/DocNotebookDropdown-hf-doc-builder.js";import{F as G_}from"../../chunks/FrameworkSwitchCourse-hf-doc-builder.js";function L_(O){let c,f;return c=new S_({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter4/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter4/section3_tf.ipynb"}]}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function N_(O){let c,f;return c=new S_({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter4/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter4/section3_pt.ipynb"}]}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function U_(O){let c,f;return c=new Gu({props:{id:"pUh5cGmNV8Y"}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function R_(O){let c,f;return c=new Gu({props:{id:"Zh0FfmVrKX0"}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function V_(O){let c,f,d,h,k,A,I,P,M,D,C,_,g,E,q,F,N,H,G,V,Q,oe,B,te,Ee,X,U,ae,re,Y,ke,se;return D=new x({props:{code:`from transformers import PushToHubCallback

callback = PushToHubCallback(
    "bert-finetuned-mrpc", save_strategy="epoch", tokenizer=tokenizer
)`,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
)`}}),{c(){c=i("p"),f=a("Se voc\xEA estiver utilizando Keras para treinar seu modelo, a maneira mais f\xE1cil de carreg\xE1-lo no Hub \xE9 passar um "),d=i("code"),h=a("PushToHubCallback"),k=a(" quando voc\xEA chama de "),A=i("code"),I=a("model.fit()"),P=a(":"),M=u(),z(D.$$.fragment),C=u(),_=i("p"),g=a("Ent\xE3o voc\xEA deve adicionar "),E=i("code"),q=a("callbacks=[callback]"),F=a(" em sua chamada de "),N=i("code"),H=a("model.fit()"),G=a(". A chamada de retorno ser\xE1 ent\xE3o enviada ao Hub cada vez que o modelo for salvo (aqui a cada \xE9poca) em um reposit\xF3rio em seu namespace. Esse reposit\xF3rio ser\xE1 nomeado como o diret\xF3rio de sa\xEDda que voc\xEA escolheu (aqui "),V=i("code"),Q=a("bert-finetuned-mrpc"),oe=a("), mas voc\xEA pode escolher um nome diferente com "),B=i("code"),te=a('hub_model_id = "a_diferent_name"'),Ee=a("."),X=u(),U=i("p"),ae=a("Para enviar seu modelo para uma organiza\xE7\xE3o da qual voc\xEA \xE9 membro, basta pass\xE1-lo com "),re=i("code"),Y=a('hub_model_id = "my_organization/my_repo_name"'),ke=a(".")},l(T){c=l(T,"P",{});var R=m(c);f=r(R,"Se voc\xEA estiver utilizando Keras para treinar seu modelo, a maneira mais f\xE1cil de carreg\xE1-lo no Hub \xE9 passar um "),d=l(R,"CODE",{});var pe=m(d);h=r(pe,"PushToHubCallback"),pe.forEach(o),k=r(R," quando voc\xEA chama de "),A=l(R,"CODE",{});var Z=m(A);I=r(Z,"model.fit()"),Z.forEach(o),P=r(R,":"),R.forEach(o),M=p(T),y(D.$$.fragment,T),C=p(T),_=l(T,"P",{});var K=m(_);g=r(K,"Ent\xE3o voc\xEA deve adicionar "),E=l(K,"CODE",{});var ie=m(E);q=r(ie,"callbacks=[callback]"),ie.forEach(o),F=r(K," em sua chamada de "),N=l(K,"CODE",{});var Ne=m(N);H=r(Ne,"model.fit()"),Ne.forEach(o),G=r(K,". A chamada de retorno ser\xE1 ent\xE3o enviada ao Hub cada vez que o modelo for salvo (aqui a cada \xE9poca) em um reposit\xF3rio em seu namespace. Esse reposit\xF3rio ser\xE1 nomeado como o diret\xF3rio de sa\xEDda que voc\xEA escolheu (aqui "),V=l(K,"CODE",{});var qe=m(V);Q=r(qe,"bert-finetuned-mrpc"),qe.forEach(o),oe=r(K,"), mas voc\xEA pode escolher um nome diferente com "),B=l(K,"CODE",{});var le=m(B);te=r(le,'hub_model_id = "a_diferent_name"'),le.forEach(o),Ee=r(K,"."),K.forEach(o),X=p(T),U=l(T,"P",{});var W=m(U);ae=r(W,"Para enviar seu modelo para uma organiza\xE7\xE3o da qual voc\xEA \xE9 membro, basta pass\xE1-lo com "),re=l(W,"CODE",{});var ee=m(re);Y=r(ee,'hub_model_id = "my_organization/my_repo_name"'),ee.forEach(o),ke=r(W,"."),W.forEach(o)},m(T,R){n(T,c,R),t(c,f),t(c,d),t(d,h),t(c,k),t(c,A),t(A,I),t(c,P),n(T,M,R),w(D,T,R),n(T,C,R),n(T,_,R),t(_,g),t(_,E),t(E,q),t(_,F),t(_,N),t(N,H),t(_,G),t(_,V),t(V,Q),t(_,oe),t(_,B),t(B,te),t(_,Ee),n(T,X,R),n(T,U,R),t(U,ae),t(U,re),t(re,Y),t(U,ke),se=!0},i(T){se||($(D.$$.fragment,T),se=!0)},o(T){b(D.$$.fragment,T),se=!1},d(T){T&&o(c),T&&o(M),j(D,T),T&&o(C),T&&o(_),T&&o(X),T&&o(U)}}}function B_(O){let c,f,d,h,k,A,I,P,M,D,C,_,g,E,q,F,N,H,G,V,Q,oe,B,te,Ee,X,U,ae,re,Y,ke,se,T,R,pe,Z,K,ie,Ne,qe,le,W,ee,_e,fe;return g=new x({props:{code:`from transformers import TrainingArguments

training_args = TrainingArguments(
    "bert-finetuned-mrpc", save_strategy="epoch", push_to_hub=True
)`,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>
)`}}),{c(){c=i("p"),f=a("Se voc\xEA usou a API do "),d=i("code"),h=a("Trainer"),k=a(" para treinar um modelo, a maneira mais f\xE1cil de carreg\xE1-lo no Hub \xE9 definir "),A=i("code"),I=a("push_to_hub=True"),P=a(" quando voc\xEA definir seus "),M=i("code"),D=a("TrainingArguments"),C=a(":"),_=u(),z(g.$$.fragment),E=u(),q=i("p"),F=a("Quando voc\xEA chama "),N=i("code"),H=a("trainer.train()"),G=a(", o "),V=i("code"),Q=a("Trainer"),oe=a(" ent\xE3o carregar\xE1 seu modelo no Hub cada vez que ele for salvo (aqui a cada \xE9poca) em um reposit\xF3rio em seu namespace. Esse reposit\xF3rio ser\xE1 nomeado como o diret\xF3rio de sa\xEDda que voc\xEA escolheu (aqui "),B=i("code"),te=a("bert-finetuned-mrpc"),Ee=a("), mas voc\xEA pode escolher um nome diferente com "),X=i("code"),U=a('hub_model_id = "a_diferent_name"'),ae=a("."),re=u(),Y=i("p"),ke=a("Para enviar seu modelo para uma organiza\xE7\xE3o da qual voc\xEA \xE9 membro, basta pass\xE1-lo com "),se=i("code"),T=a('hub_model_id = "my_organization/my_repo_name"'),R=a("."),pe=u(),Z=i("p"),K=a("Uma vez terminado seu treinamento, voc\xEA deve fazer um \xFAltimo "),ie=i("code"),Ne=a("trainer.push_to_hub()"),qe=a(" para carregar a \xFAltima vers\xE3o de seu modelo. Ele tamb\xE9m gerar\xE1 um cart\xE3o modelo com todos os metadados relevantes, relatando os hiperpar\xE2metros utilizados e os resultados da avalia\xE7\xE3o! Aqui est\xE1 um exemplo do conte\xFAdo que voc\xEA pode encontrar em um cart\xE3o modelo deste tipo:"),le=u(),W=i("div"),ee=i("img"),this.h()},l(S){c=l(S,"P",{});var L=m(c);f=r(L,"Se voc\xEA usou a API do "),d=l(L,"CODE",{});var da=m(d);h=r(da,"Trainer"),da.forEach(o),k=r(L," para treinar um modelo, a maneira mais f\xE1cil de carreg\xE1-lo no Hub \xE9 definir "),A=l(L,"CODE",{});var oo=m(A);I=r(oo,"push_to_hub=True"),oo.forEach(o),P=r(L," quando voc\xEA definir seus "),M=l(L,"CODE",{});var ca=m(M);D=r(ca,"TrainingArguments"),ca.forEach(o),C=r(L,":"),L.forEach(o),_=p(S),y(g.$$.fragment,S),E=p(S),q=l(S,"P",{});var J=m(q);F=r(J,"Quando voc\xEA chama "),N=l(J,"CODE",{});var ua=m(N);H=r(ua,"trainer.train()"),ua.forEach(o),G=r(J,", o "),V=l(J,"CODE",{});var Zo=m(V);Q=r(Zo,"Trainer"),Zo.forEach(o),oe=r(J," ent\xE3o carregar\xE1 seu modelo no Hub cada vez que ele for salvo (aqui a cada \xE9poca) em um reposit\xF3rio em seu namespace. Esse reposit\xF3rio ser\xE1 nomeado como o diret\xF3rio de sa\xEDda que voc\xEA escolheu (aqui "),B=l(J,"CODE",{});var ne=m(B);te=r(ne,"bert-finetuned-mrpc"),ne.forEach(o),Ee=r(J,"), mas voc\xEA pode escolher um nome diferente com "),X=l(J,"CODE",{});var me=m(X);U=r(me,'hub_model_id = "a_diferent_name"'),me.forEach(o),ae=r(J,"."),J.forEach(o),re=p(S),Y=l(S,"P",{});var ze=m(Y);ke=r(ze,"Para enviar seu modelo para uma organiza\xE7\xE3o da qual voc\xEA \xE9 membro, basta pass\xE1-lo com "),se=l(ze,"CODE",{});var ye=m(se);T=r(ye,'hub_model_id = "my_organization/my_repo_name"'),ye.forEach(o),R=r(ze,"."),ze.forEach(o),pe=p(S),Z=l(S,"P",{});var fo=m(Z);K=r(fo,"Uma vez terminado seu treinamento, voc\xEA deve fazer um \xFAltimo "),ie=l(fo,"CODE",{});var _o=m(ie);Ne=r(_o,"trainer.push_to_hub()"),_o.forEach(o),qe=r(fo," para carregar a \xFAltima vers\xE3o de seu modelo. Ele tamb\xE9m gerar\xE1 um cart\xE3o modelo com todos os metadados relevantes, relatando os hiperpar\xE2metros utilizados e os resultados da avalia\xE7\xE3o! Aqui est\xE1 um exemplo do conte\xFAdo que voc\xEA pode encontrar em um cart\xE3o modelo deste tipo:"),fo.forEach(o),le=p(S),W=l(S,"DIV",{class:!0});var pa=m(W);ee=l(pa,"IMG",{src:!0,alt:!0,width:!0}),pa.forEach(o),this.h()},h(){Le(ee.src,_e="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/model_card.png")||v(ee,"src",_e),v(ee,"alt","An example of an auto-generated model card."),v(ee,"width","100%"),v(W,"class","flex justify-center")},m(S,L){n(S,c,L),t(c,f),t(c,d),t(d,h),t(c,k),t(c,A),t(A,I),t(c,P),t(c,M),t(M,D),t(c,C),n(S,_,L),w(g,S,L),n(S,E,L),n(S,q,L),t(q,F),t(q,N),t(N,H),t(q,G),t(q,V),t(V,Q),t(q,oe),t(q,B),t(B,te),t(q,Ee),t(q,X),t(X,U),t(q,ae),n(S,re,L),n(S,Y,L),t(Y,ke),t(Y,se),t(se,T),t(Y,R),n(S,pe,L),n(S,Z,L),t(Z,K),t(Z,ie),t(ie,Ne),t(Z,qe),n(S,le,L),n(S,W,L),t(W,ee),fe=!0},i(S){fe||($(g.$$.fragment,S),fe=!0)},o(S){b(g.$$.fragment,S),fe=!1},d(S){S&&o(c),S&&o(_),j(g,S),S&&o(E),S&&o(q),S&&o(re),S&&o(Y),S&&o(pe),S&&o(Z),S&&o(le),S&&o(W)}}}function Y_(O){let c,f;return c=new x({props:{code:`from transformers import TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,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)`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function K_(O){let c,f;return c=new x({props:{code:`from transformers import AutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

model = AutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,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)`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function Q_(O){let c,f,d;return{c(){c=i("div"),f=i("img"),this.h()},l(h){c=l(h,"DIV",{class:!0});var k=m(c);f=l(k,"IMG",{src:!0,alt:!0,width:!0}),k.forEach(o),this.h()},h(){Le(f.src,d="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model_tf.png")||v(f,"src",d),v(f,"alt","Dummy model containing both the tokenizer and model files."),v(f,"width","80%"),v(c,"class","flex justify-center")},m(h,k){n(h,c,k),t(c,f)},d(h){h&&o(c)}}}function W_(O){let c,f,d;return{c(){c=i("div"),f=i("img"),this.h()},l(h){c=l(h,"DIV",{class:!0});var k=m(c);f=l(k,"IMG",{src:!0,alt:!0,width:!0}),k.forEach(o),this.h()},h(){Le(f.src,d="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model.png")||v(f,"src",d),v(f,"alt","Dummy model containing both the tokenizer and model files."),v(f,"width","80%"),v(c,"class","flex justify-center")},m(h,k){n(h,c,k),t(c,f)},d(h){h&&o(c)}}}function J_(O){let c,f,d,h,k,A,I,P,M,D,C;return{c(){c=i("p"),f=a("\u270F\uFE0F "),d=i("strong"),h=a("Teste-o!"),k=a(" Pegue o modelo e o tokenizer associados ao checkpoint "),A=i("code"),I=a("bert-base-cased"),P=a(" e carregue-os para um repo em seu namespace utilizando o m\xE9todo "),M=i("code"),D=a("push_to_hub()"),C=a(". Verifique novamente se o repo aparece corretamente em sua p\xE1gina antes de exclu\xED-lo.")},l(_){c=l(_,"P",{});var g=m(c);f=r(g,"\u270F\uFE0F "),d=l(g,"STRONG",{});var E=m(d);h=r(E,"Teste-o!"),E.forEach(o),k=r(g," Pegue o modelo e o tokenizer associados ao checkpoint "),A=l(g,"CODE",{});var q=m(A);I=r(q,"bert-base-cased"),q.forEach(o),P=r(g," e carregue-os para um repo em seu namespace utilizando o m\xE9todo "),M=l(g,"CODE",{});var F=m(M);D=r(F,"push_to_hub()"),F.forEach(o),C=r(g,". Verifique novamente se o repo aparece corretamente em sua p\xE1gina antes de exclu\xED-lo."),g.forEach(o)},m(_,g){n(_,c,g),t(c,f),t(c,d),t(d,h),t(c,k),t(c,A),t(A,I),t(c,P),t(c,M),t(M,D),t(c,C)},d(_){_&&o(c)}}}function X_(O){let c,f;return c=new x({props:{code:`from transformers import TFAutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

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

# Do whatever with the model, train it, fine-tune it...

model.save_pretrained("<path_to_dummy_folder>")
tokenizer.save_pretrained("<path_to_dummy_folder>")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM, AutoTokenizer

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

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

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

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function Z_(O){let c,f;return c=new x({props:{code:`from transformers import AutoModelForMaskedLM, AutoTokenizer

checkpoint = "camembert-base"

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

# Do whatever with the model, train it, fine-tune it...

model.save_pretrained("<path_to_dummy_folder>")
tokenizer.save_pretrained("<path_to_dummy_folder>")`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM, AutoTokenizer

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

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

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

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function ev(O){let c,f,d,h,k,A,I,P,M,D,C;return c=new x({props:{code:"config.json  README.md  sentencepiece.bpe.model  special_tokens_map.json  tf_model.h5  tokenizer_config.json  tokenizer.json",highlighted:"config.json  README.md  sentencepiece.bpe.model  special_tokens_map.json  tf_model.h5  tokenizer_config.json  tokenizer.json"}}),{c(){z(c.$$.fragment),f=u(),d=i("p"),h=a("Se voc\xEA olhar para os tamanhos de arquivo (por exemplo, com "),k=i("code"),A=a("ls -lh"),I=a("), voc\xEA deve ver que o arquivo de estado do modelo ("),P=i("em"),M=a("t5_model.h5"),D=a(") \xE9 o \xFAnico outlier, com mais de 400 MB.")},l(_){y(c.$$.fragment,_),f=p(_),d=l(_,"P",{});var g=m(d);h=r(g,"Se voc\xEA olhar para os tamanhos de arquivo (por exemplo, com "),k=l(g,"CODE",{});var E=m(k);A=r(E,"ls -lh"),E.forEach(o),I=r(g,"), voc\xEA deve ver que o arquivo de estado do modelo ("),P=l(g,"EM",{});var q=m(P);M=r(q,"t5_model.h5"),q.forEach(o),D=r(g,") \xE9 o \xFAnico outlier, com mais de 400 MB."),g.forEach(o)},m(_,g){w(c,_,g),n(_,f,g),n(_,d,g),t(d,h),t(d,k),t(k,A),t(d,I),t(d,P),t(P,M),t(d,D),C=!0},i(_){C||($(c.$$.fragment,_),C=!0)},o(_){b(c.$$.fragment,_),C=!1},d(_){j(c,_),_&&o(f),_&&o(d)}}}function ov(O){let c,f,d,h,k,A,I,P,M,D,C;return c=new x({props:{code:"config.json  pytorch_model.bin  README.md  sentencepiece.bpe.model  special_tokens_map.json tokenizer_config.json  tokenizer.json",highlighted:"config.json  pytorch_model.bin  README.md  sentencepiece.bpe.model  special_tokens_map.json tokenizer_config.json  tokenizer.json"}}),{c(){z(c.$$.fragment),f=u(),d=i("p"),h=a("Se voc\xEA olhar para os tamanhos de arquivo (por exemplo, com "),k=i("code"),A=a("ls -lh"),I=a("), voc\xEA deve ver que o arquivo de estado do modelo ("),P=i("em"),M=a("pytorch_model.bin"),D=a(") \xE9 o \xFAnico outlier, com mais de 400 MB.")},l(_){y(c.$$.fragment,_),f=p(_),d=l(_,"P",{});var g=m(d);h=r(g,"Se voc\xEA olhar para os tamanhos de arquivo (por exemplo, com "),k=l(g,"CODE",{});var E=m(k);A=r(E,"ls -lh"),E.forEach(o),I=r(g,"), voc\xEA deve ver que o arquivo de estado do modelo ("),P=l(g,"EM",{});var q=m(P);M=r(q,"pytorch_model.bin"),q.forEach(o),D=r(g,") \xE9 o \xFAnico outlier, com mais de 400 MB."),g.forEach(o)},m(_,g){w(c,_,g),n(_,f,g),n(_,d,g),t(d,h),t(d,k),t(k,A),t(d,I),t(d,P),t(P,M),t(d,D),C=!0},i(_){C||($(c.$$.fragment,_),C=!0)},o(_){b(c.$$.fragment,_),C=!1},d(_){j(c,_),_&&o(f),_&&o(d)}}}function tv(O){let c;return{c(){c=a("\u270F\uFE0F Ao criar o reposit\xF3rio a partir da interface web, o arquivo *.gitattributes* \xE9 automaticamente configurado para considerar arquivos com certas extens\xF5es, como *.bin* e *.h5*, como arquivos grandes, e o git-lfs os rastrear\xE1 sem nenhuma configura\xE7\xE3o necess\xE1ria em seu lado.")},l(f){c=r(f,"\u270F\uFE0F Ao criar o reposit\xF3rio a partir da interface web, o arquivo *.gitattributes* \xE9 automaticamente configurado para considerar arquivos com certas extens\xF5es, como *.bin* e *.h5*, como arquivos grandes, e o git-lfs os rastrear\xE1 sem nenhuma configura\xE7\xE3o necess\xE1ria em seu lado.")},m(f,d){n(f,c,d)},d(f){f&&o(c)}}}function av(O){let c,f;return c=new x({props:{code:`On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." 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`,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`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function rv(O){let c,f;return c=new x({props:{code:`On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." 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`,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`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function sv(O){let c,f,d,h,k,A,I,P,M,D,C,_,g,E;return c=new x({props:{code:`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 for commit:

`,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:

`}}),{c(){z(c.$$.fragment),f=u(),d=i("p"),h=a("Podemos ver que todos os arquivos t\xEAm "),k=i("code"),A=a("Git"),I=a(" como manipulador, exceto "),P=i("em"),M=a("t5_model.h5"),D=a(", que tem "),C=i("code"),_=a("LFS"),g=a(". Excelente!")},l(q){y(c.$$.fragment,q),f=p(q),d=l(q,"P",{});var F=m(d);h=r(F,"Podemos ver que todos os arquivos t\xEAm "),k=l(F,"CODE",{});var N=m(k);A=r(N,"Git"),N.forEach(o),I=r(F," como manipulador, exceto "),P=l(F,"EM",{});var H=m(P);M=r(H,"t5_model.h5"),H.forEach(o),D=r(F,", que tem "),C=l(F,"CODE",{});var G=m(C);_=r(G,"LFS"),G.forEach(o),g=r(F,". Excelente!"),F.forEach(o)},m(q,F){w(c,q,F),n(q,f,F),n(q,d,F),t(d,h),t(d,k),t(k,A),t(d,I),t(d,P),t(P,M),t(d,D),t(d,C),t(C,_),t(d,g),E=!0},i(q){E||($(c.$$.fragment,q),E=!0)},o(q){b(c.$$.fragment,q),E=!1},d(q){j(c,q),q&&o(f),q&&o(d)}}}function iv(O){let c,f,d,h,k,A,I,P,M,D,C,_,g,E,q,F,N;return c=new x({props:{code:`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 for commit:

`,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:

`}}),{c(){z(c.$$.fragment),f=u(),d=i("p"),h=a("Podemos ver que todos os arquivos t\xEAm "),k=i("code"),A=a("Git"),I=a(" como manipulador, exceto "),P=i("em"),M=a("pytorch_model.bin"),D=a(" e "),C=i("em"),_=a("sentencepiece.bpe.model"),g=a(", que t\xEAm "),E=i("code"),q=a("LFS"),F=a(". \xD3timo!")},l(H){y(c.$$.fragment,H),f=p(H),d=l(H,"P",{});var G=m(d);h=r(G,"Podemos ver que todos os arquivos t\xEAm "),k=l(G,"CODE",{});var V=m(k);A=r(V,"Git"),V.forEach(o),I=r(G," como manipulador, exceto "),P=l(G,"EM",{});var Q=m(P);M=r(Q,"pytorch_model.bin"),Q.forEach(o),D=r(G," e "),C=l(G,"EM",{});var oe=m(C);_=r(oe,"sentencepiece.bpe.model"),oe.forEach(o),g=r(G,", que t\xEAm "),E=l(G,"CODE",{});var B=m(E);q=r(B,"LFS"),B.forEach(o),F=r(G,". \xD3timo!"),G.forEach(o)},m(H,G){w(c,H,G),n(H,f,G),n(H,d,G),t(d,h),t(d,k),t(k,A),t(d,I),t(d,P),t(P,M),t(d,D),t(d,C),t(C,_),t(d,g),t(d,E),t(E,q),t(d,F),N=!0},i(H){N||($(c.$$.fragment,H),N=!0)},o(H){b(c.$$.fragment,H),N=!1},d(H){j(c,H),H&&o(f),H&&o(d)}}}function lv(O){let c,f;return c=new x({props:{code:`[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`,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`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function nv(O){let c,f;return c=new x({props:{code:`[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`,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`}}),{c(){z(c.$$.fragment)},l(d){y(c.$$.fragment,d)},m(d,h){w(c,d,h),f=!0},i(d){f||($(c.$$.fragment,d),f=!0)},o(d){b(c.$$.fragment,d),f=!1},d(d){j(c,d)}}}function mv(O){let c,f,d,h,k,A,I,P,M,D,C;return{c(){c=a(`Se dermos uma olhada no reposit\xF3rio modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:
`),f=i("div"),d=i("img"),k=u(),A=i("p"),I=a("A IU permite que voc\xEA explore os arquivos modelo e os commits e veja as diferen\xE7as introduzidas por cada commit:"),P=u(),M=i("div"),D=i("img"),this.h()},l(_){c=r(_,`Se dermos uma olhada no reposit\xF3rio modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:
`),f=l(_,"DIV",{class:!0});var g=m(f);d=l(g,"IMG",{src:!0,alt:!0,width:!0}),g.forEach(o),k=p(_),A=l(_,"P",{});var E=m(A);I=r(E,"A IU permite que voc\xEA explore os arquivos modelo e os commits e veja as diferen\xE7as introduzidas por cada commit:"),E.forEach(o),P=p(_),M=l(_,"DIV",{class:!0});var q=m(M);D=l(q,"IMG",{src:!0,alt:!0,width:!0}),q.forEach(o),this.h()},h(){Le(d.src,h="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model_tf.png")||v(d,"src",h),v(d,"alt","The 'Files and versions' tab now contains all the recently uploaded files."),v(d,"width","80%"),v(f,"class","flex justify-center"),Le(D.src,C="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffstf.gif")||v(D,"src",C),v(D,"alt","The diff introduced by the recent commit."),v(D,"width","80%"),v(M,"class","flex justify-center")},m(_,g){n(_,c,g),n(_,f,g),t(f,d),n(_,k,g),n(_,A,g),t(A,I),n(_,P,g),n(_,M,g),t(M,D)},d(_){_&&o(c),_&&o(f),_&&o(k),_&&o(A),_&&o(P),_&&o(M)}}}function dv(O){let c,f,d,h,k,A,I,P,M,D,C,_,g;return{c(){c=i("p"),f=a("Se dermos uma olhada no reposit\xF3rio modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:"),d=u(),h=i("div"),k=i("img"),I=u(),P=i("p"),M=a("A IU permite que voc\xEA explore os arquivos modelo e os commits e veja as diferen\xE7as introduzidas por cada commit:"),D=u(),C=i("div"),_=i("img"),this.h()},l(E){c=l(E,"P",{});var q=m(c);f=r(q,"Se dermos uma olhada no reposit\xF3rio modelo quando este estiver terminado, podemos ver todos os arquivos recentemente adicionados:"),q.forEach(o),d=p(E),h=l(E,"DIV",{class:!0});var F=m(h);k=l(F,"IMG",{src:!0,alt:!0,width:!0}),F.forEach(o),I=p(E),P=l(E,"P",{});var N=m(P);M=r(N,"A IU permite que voc\xEA explore os arquivos modelo e os commits e veja as diferen\xE7as introduzidas por cada commit:"),N.forEach(o),D=p(E),C=l(E,"DIV",{class:!0});var H=m(C);_=l(H,"IMG",{src:!0,alt:!0,width:!0}),H.forEach(o),this.h()},h(){Le(k.src,A="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model.png")||v(k,"src",A),v(k,"alt","The 'Files and versions' tab now contains all the recently uploaded files."),v(k,"width","80%"),v(h,"class","flex justify-center"),Le(_.src,g="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffs.gif")||v(_,"src",g),v(_,"alt","The diff introduced by the recent commit."),v(_,"width","80%"),v(C,"class","flex justify-center")},m(E,q){n(E,c,q),t(c,f),n(E,d,q),n(E,h,q),t(h,k),n(E,I,q),n(E,P,q),t(P,M),n(E,D,q),n(E,C,q),t(C,_)},d(E){E&&o(c),E&&o(d),E&&o(h),E&&o(I),E&&o(P),E&&o(D),E&&o(C)}}}function cv(O){let c,f,d,h,k,A,I,P,M,D,C,_,g,E,q,F,N,H,G,V,Q,oe,B,te,Ee,X,U,ae,re,Y,ke,se,T,R,pe,Z,K,ie,Ne,qe,le,W,ee,_e,fe,S,L,da,oo,ca,J,ua,Zo,ne,me,ze,ye,fo,_o,pa,qn,Ns,ve,zn,$r,yn,wn,Er,jn,Pn,fa,An,On,Us,et,Rs,_a,Dn,Vs,ot,Bs,vo,Cn,tt,Mn,Sn,Ys,va,xn,Ks,we,je,ha,ho,In,kr,Tn,Fn,Qs,ga,Hn,Ws,Pe,Ae,ba,Ue,Gn,qr,Ln,Nn,zr,Un,Rn,Js,at,Xs,go,Vn,yr,Bn,Yn,Zs,rt,ei,bo,Kn,wr,Qn,Wn,oi,st,ti,$o,Jn,jr,Xn,Zn,ai,it,ri,Eo,em,Pr,lt,om,tm,si,$a,am,ii,Ea,ko,li,Re,rm,Ar,sm,im,nt,lm,nm,ni,he,mm,Or,dm,cm,mt,Dr,um,pm,dt,Cr,fm,_m,mi,ka,vm,di,to,qo,Mr,ct,hm,qa,gm,Sr,bm,ci,zo,$m,xr,Em,km,ui,ge,qm,Ir,zm,ym,Tr,wm,jm,Fr,Pm,Am,pi,ut,fi,yo,Om,Hr,Dm,Cm,_i,pt,vi,wo,Mm,Gr,Sm,xm,hi,jo,Im,Lr,Tm,Fm,gi,ft,bi,Ve,Hm,Nr,Gm,Lm,Ur,Nm,Um,$i,_t,Ei,Be,Rm,Rr,Vm,Bm,Vr,Ym,Km,ki,Ye,za,Br,Qm,Wm,Jm,ya,Yr,Xm,Zm,ed,be,Kr,od,td,Qr,ad,rd,Wr,sd,id,Jr,ld,nd,qi,wa,md,zi,ao,Po,Xr,vt,dd,Zr,cd,yi,ja,ud,wi,Ao,pd,ht,fd,_d,ji,gt,bt,Lu,Pi,Pa,vd,Ai,Aa,hd,Oi,Oa,gd,Di,$t,Et,Nu,Ci,Da,bd,Mi,kt,qt,Uu,Si,Ca,$d,xi,Ke,Ed,es,kd,qd,os,zd,yd,Ii,zt,yt,Ru,Ti,Ma,wd,Fi,ro,Oo,ts,wt,jd,as,Pd,Hi,Do,Ad,jt,Od,Dd,Gi,Co,Cd,rs,Md,Sd,Li,so,Mo,ss,Pt,xd,Sa,Id,is,Td,Ni,So,Fd,ls,Hd,Gd,Ui,xa,Ld,Ri,At,Vi,de,Nd,ns,Ud,Rd,ms,Vd,Bd,ds,Yd,Kd,cs,Qd,Wd,Bi,xo,Ia,us,Jd,Xd,Zd,ce,ps,ec,oc,fs,tc,ac,_s,rc,sc,vs,ic,lc,hs,nc,mc,Yi,io,Io,gs,Ot,dc,Ta,cc,bs,uc,Ki,To,pc,$s,fc,_c,Qi,Fo,vc,Dt,hc,gc,Wi,Fa,bc,Ji,Ct,Xi,$e,$c,Es,Ec,kc,ks,qc,zc,qs,yc,wc,Zi,Ha,jc,el,Mt,ol,Qe,Pc,zs,Ac,Oc,St,Dc,Cc,tl,Ga,Mc,al,La,Sc,rl,xt,sl,Na,xc,il,It,ll,Ho,Ic,ys,Tc,Fc,nl,Tt,ml,Ua,Hc,dl,lo,Go,ws,Ft,Gc,Ra,Lc,js,Nc,cl,Va,Uc,ul,Lo,Rc,Ht,Vc,Bc,pl,Ba,Yc,fl,Gt,_l,Lt,vl,Ya,Kc,hl,Nt,gl,We,Qc,Ps,Wc,Jc,As,Xc,Zc,bl,Ut,$l,Je,eu,Os,ou,tu,Ds,au,ru,El,Rt,kl,Vt,ql,ue,su,Cs,iu,lu,Ms,nu,mu,Ss,du,cu,xs,uu,pu,zl,No,fu,Is,_u,vu,yl,Ka,hu,wl,Oe,De,Qa,Uo,gu,Ts,bu,$u,jl,Bt,Pl,Ce,Me,Wa,Ro,Al,Vo,Eu,Fs,ku,qu,Ol,Yt,Dl,Ja,zu,Cl,Kt,Ml,Se,xe,Xa,Bo,yu,Hs,wu,ju,Sl,Qt,xl,Ie,Te,Za,Yo,Pu,Gs,Au,Ou,Il,Wt,Tl,Fe,He,er,or,Du,Fl,Jt,Hl,Xt,Gl,tr,Ll;d=new G_({props:{fw:O[0]}}),P=new Xo({});const Vu=[N_,L_],Zt=[];function Bu(e,s){return e[0]==="pt"?0:1}g=Bu(O),E=Zt[g]=Vu[g](O),G=new Gu({props:{id:"9yY3RB_GSPM"}}),L=new Xo({});const Yu=[R_,U_],ea=[];function Ku(e,s){return e[0]==="pt"?0:1}ne=Ku(O),me=ea[ne]=Yu[ne](O),et=new x({props:{code:`from huggingface_hub import notebook_login

notebook_login()`,highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`}}),ot=new x({props:{code:"huggingface-cli login",highlighted:"huggingface-cli login"}});const Qu=[B_,V_],oa=[];function Wu(e,s){return e[0]==="pt"?0:1}we=Wu(O),je=oa[we]=Qu[we](O);const Ju=[K_,Y_],ta=[];function Xu(e,s){return e[0]==="pt"?0:1}Pe=Xu(O),Ae=ta[Pe]=Ju[Pe](O),at=new x({props:{code:'model.push_to_hub("dummy-model")',highlighted:'model.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)'}}),rt=new x({props:{code:'tokenizer.push_to_hub("dummy-model")',highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)'}}),st=new x({props:{code:'tokenizer.push_to_hub("dummy-model", organization="huggingface")',highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>)'}}),it=new x({props:{code:'tokenizer.push_to_hub("dummy-model", organization="huggingface", use_auth_token="<TOKEN>")',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>)'}});function Zu(e,s){return e[0]==="pt"?W_:Q_}let Nl=Zu(O),no=Nl(O);ko=new M_({props:{$$slots:{default:[J_]},$$scope:{ctx:O}}}),ct=new Xo({}),ut=new x({props:{code:"huggingface-cli login",highlighted:"huggingface-cli login"}}),pt=new x({props:{code:`from huggingface_hub import (
    # Gest\xE3o de usu\xE1rios
    login,
    logout,
    whoami,

    # Cria\xE7\xE3o e gest\xE3o de reposit\xF3rio
    create_repo,
    delete_repo,
    update_repo_visibility,

    #E alguns m\xE9todos para recuperar/trocar informa\xE7\xF5es sobre o conte\xFAdo
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`,highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> (
    <span class="hljs-comment"># Gest\xE3o de usu\xE1rios</span>
    login,
    logout,
    whoami,

    <span class="hljs-comment"># Cria\xE7\xE3o e gest\xE3o de reposit\xF3rio</span>
    create_repo,
    delete_repo,
    update_repo_visibility,

    <span class="hljs-comment">#E alguns m\xE9todos para recuperar/trocar informa\xE7\xF5es sobre o conte\xFAdo</span>
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`}}),ft=new x({props:{code:`from huggingface_hub import create_repo

create_repo("dummy-model")`,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>)`}}),_t=new x({props:{code:`from huggingface_hub import create_repo

create_repo("dummy-model", organization="huggingface")`,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>)`}}),vt=new Xo({}),wt=new Xo({}),Pt=new Xo({}),At=new x({props:{code:`from huggingface_hub import upload_file

upload_file(
    "<path_to_file>/config.json",
    path_in_repo="config.json",
    repo_id="<namespace>/dummy-model",
)`,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>,
)`}}),Ot=new Xo({}),Ct=new x({props:{code:`from huggingface_hub import Repository

repo = Repository("<path_to_dummy_folder>", clone_from="<namespace>/dummy-model")`,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>)`}}),Mt=new x({props:{code:`repo.git_pull()
repo.git_add()
repo.git_commit()
repo.git_push()
repo.git_tag()`,highlighted:`repo.git_pull()
repo.git_add()
repo.git_commit()
repo.git_push()
repo.git_tag()`}}),xt=new x({props:{code:"repo.git_pull()",highlighted:"repo.git_pull()"}}),It=new x({props:{code:`model.save_pretrained("<path_to_dummy_folder>")
tokenizer.save_pretrained("<path_to_dummy_folder>")`,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>)`}}),Tt=new x({props:{code:`repo.git_add()
repo.git_commit("Add model and tokenizer files")
repo.git_push()`,highlighted:`repo.git_add()
repo.git_commit(<span class="hljs-string">&quot;Add model and tokenizer files&quot;</span>)
repo.git_push()`}}),Ft=new Xo({}),Gt=new x({props:{code:"git lfs install",highlighted:"git lfs install"}}),Lt=new x({props:{code:`Updated git hooks.
Git LFS initialized.`,highlighted:`Updated git hooks.
Git LFS initialized.`}}),Nt=new x({props:{code:"git clone https://huggingface.co/<namespace>/<your-model-id>",highlighted:'git <span class="hljs-built_in">clone</span> https://huggingface.co/&lt;namespace&gt;/&lt;your-model-id&gt;'}}),Ut=new x({props:{code:"git clone https://huggingface.co/lysandre/dummy",highlighted:'git clone https:<span class="hljs-regexp">//</span>huggingface.co<span class="hljs-regexp">/lysandre/</span>dummy'}}),Rt=new x({props:{code:"cd dummy && ls",highlighted:'<span class="hljs-built_in">cd</span> dummy &amp;&amp; <span class="hljs-built_in">ls</span>'}}),Vt=new x({props:{code:"README.md",highlighted:"README.md"}});const ep=[Z_,X_],aa=[];function op(e,s){return e[0]==="pt"?0:1}Oe=op(O),De=aa[Oe]=ep[Oe](O),Bt=new x({props:{code:"ls",highlighted:'<span class="hljs-built_in">ls</span>'}});const tp=[ov,ev],ra=[];function ap(e,s){return e[0]==="pt"?0:1}Ce=ap(O),Me=ra[Ce]=tp[Ce](O),Ro=new M_({props:{$$slots:{default:[tv]},$$scope:{ctx:O}}}),Yt=new x({props:{code:"git add .",highlighted:"git add ."}}),Kt=new x({props:{code:"git status",highlighted:"git status"}});const rp=[rv,av],sa=[];function sp(e,s){return e[0]==="pt"?0:1}Se=sp(O),xe=sa[Se]=rp[Se](O),Qt=new x({props:{code:"git lfs status",highlighted:"git lfs status"}});const ip=[iv,sv],ia=[];function lp(e,s){return e[0]==="pt"?0:1}Ie=lp(O),Te=ia[Ie]=ip[Ie](O),Wt=new x({props:{code:'git commit -m "First model version"',highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>'}});const np=[nv,lv],la=[];function mp(e,s){return e[0]==="pt"?0:1}Fe=mp(O),He=la[Fe]=np[Fe](O),Jt=new x({props:{code:"git push",highlighted:"git push"}}),Xt=new x({props:{code:`Uploading LFS objects: 100% (1/1), 433 MB | 1.3 MB/s, done.
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 288.27 KiB | 6.27 MiB/s, done.
Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
To https://huggingface.co/lysandre/dummy
   891b41d..b08aab1  main -> main`,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`}});function dp(e,s){return e[0]==="pt"?dv:mv}let Ul=dp(O),mo=Ul(O);return{c(){c=i("meta"),f=u(),z(d.$$.fragment),h=u(),k=i("h1"),A=i("a"),I=i("span"),z(P.$$.fragment),M=u(),D=i("span"),C=a("Compartilhando modelos pr\xE9-treinados"),_=u(),E.c(),q=u(),F=i("p"),N=a("Nas etapas abaixo, veremos as maneiras mais f\xE1ceis de compartilhar modelos pr\xE9-treinados para o Hub \u{1F917}. H\xE1 ferramentas e utilit\xE1rios dispon\xEDveis que facilitam o compartilhamento e atualiza\xE7\xE3o de modelos diretamente no Hub, que exploraremos a seguir."),H=u(),z(G.$$.fragment),V=u(),Q=i("p"),oe=a("Encorajamos todos os usu\xE1rios que treinam modelos a contribuir compartilhando-os com a comunidade - compartilhar modelos, mesmo quando treinados em conjuntos de dados muito espec\xEDficos, ajudar\xE1 outros, economizando tempo e recursos e fornecendo acesso a artefatos \xFAteis treinados. Por sua vez, voc\xEA pode se beneficiar do trabalho que outros realizaram!"),B=u(),te=i("p"),Ee=a("H\xE1 tr\xEAs maneiras de se criar novos reposit\xF3rios modelo:"),X=u(),U=i("ul"),ae=i("li"),re=a("Usando a API"),Y=i("code"),ke=a("push_to_hub"),se=u(),T=i("li"),R=a("Usando a biblioteca Python "),pe=i("code"),Z=a("huggingface_hub"),K=u(),ie=i("li"),Ne=a("Usando a interface web"),qe=u(),le=i("p"),W=a("Uma vez criado um reposit\xF3rio, voc\xEA pode fazer o upload de arquivos para ele via git e git-lfs. N\xF3s o acompanharemos na cria\xE7\xE3o de reposit\xF3rios modelo e no upload de arquivos para eles nas se\xE7\xF5es seguintes."),ee=u(),_e=i("h2"),fe=i("a"),S=i("span"),z(L.$$.fragment),da=u(),oo=i("span"),ca=a("Usando a API"),J=i("code"),ua=a("push_to_hub"),Zo=u(),me.c(),ze=u(),ye=i("p"),fo=a("A maneira mais simples de carregar arquivos no Hub \xE9 usando a API "),_o=i("code"),pa=a("push_to_hub"),qn=a("."),Ns=u(),ve=i("p"),zn=a("Antes de ir adiante, voc\xEA precisar\xE1 gerar um token de autentica\xE7\xE3o para que a API "),$r=i("code"),yn=a("huggingface_hub"),wn=a(" saiba quem voc\xEA \xE9 e a que namespaces voc\xEA tem acesso de escrita. Certifique-se de estar em um ambiente onde voc\xEA tenha "),Er=i("code"),jn=a("transformers"),Pn=a(" instalado (ver "),fa=i("a"),An=a("Setup"),On=a("). Se voc\xEA estiver em um notebook, voc\xEA pode utilizar a seguinte fun\xE7\xE3o para fazer o login:"),Us=u(),z(et.$$.fragment),Rs=u(),_a=i("p"),Dn=a("Em um terminal, voc\xEA pode rodar:"),Vs=u(),z(ot.$$.fragment),Bs=u(),vo=i("p"),Cn=a("Em ambos os casos, voc\xEA ser\xE1 solicitado seu nome de usu\xE1rio e senha, que s\xE3o os mesmos que voc\xEA usa para fazer o login no Hub. Se voc\xEA ainda n\xE3o tem um perfil do Hub, voc\xEA deve criar um "),tt=i("a"),Mn=a("aqui"),Sn=a("."),Ys=u(),va=i("p"),xn=a("\xD3timo! Agora voc\xEA tem seu token de autentica\xE7\xE3o armazenado em sua pasta de cache. Vamos criar alguns reposit\xF3rios!"),Ks=u(),je.c(),ha=u(),ho=i("p"),In=a("Em um n\xEDvel inferior, o acesso ao Model Hub pode ser feito diretamente nos modelos, tokenizers e objetos de configura\xE7\xE3o atrav\xE9s de seu m\xE9todo "),kr=i("code"),Tn=a("push_to_hub()"),Fn=a(". Este m\xE9todo cuida da cria\xE7\xE3o do reposit\xF3rio e empurra os arquivos modelo e tokenizer diretamente para o reposit\xF3rio. N\xE3o \xE9 necess\xE1rio nenhum tratamento manual, ao contr\xE1rio do que acontece com a API, veremos abaixo."),Qs=u(),ga=i("p"),Hn=a("Para se ter uma id\xE9ia de como funciona, vamos primeiro inicializar um modelo e um tokenizer:"),Ws=u(),Ae.c(),ba=u(),Ue=i("p"),Gn=a("Voc\xEA \xE9 livre para fazer o que quiser com elas - adicionar fichas ao tokenizer, treinar o modelo, afinar o modelo. Quando voc\xEA estiver satisfeito com o modelo, pesos e tokenizer resultantes, voc\xEA pode aproveitar o m\xE9todo "),qr=i("code"),Ln=a("push_to_hub()"),Nn=a(" diretamente dispon\xEDvel no objeto "),zr=i("code"),Un=a("model"),Rn=a(":"),Js=u(),z(at.$$.fragment),Xs=u(),go=i("p"),Vn=a("Isto criar\xE1 o novo reposit\xF3rio "),yr=i("code"),Bn=a("dummy-model"),Yn=a(`  em seu perfil, e o preencher\xE1 com seus arquivos de modelos.
Fa\xE7a o mesmo com o tokenizer, para que todos os arquivos estejam agora dispon\xEDveis neste reposit\xF3rio:`),Zs=u(),z(rt.$$.fragment),ei=u(),bo=i("p"),Kn=a("Se voc\xEA pertence a uma organiza\xE7\xE3o, basta especificar o argumento "),wr=i("code"),Qn=a("organization"),Wn=a(" a ser carregado no namespace dessa organiza\xE7\xE3o:"),oi=u(),z(st.$$.fragment),ti=u(),$o=i("p"),Jn=a("Se voc\xEA desejar utilizar um toke espec\xEDfica do Hugging Face, voc\xEA \xE9 livre para especific\xE1-la tamb\xE9m para o m\xE9todo "),jr=i("code"),Xn=a("push_to_hub()"),Zn=a(":"),ai=u(),z(it.$$.fragment),ri=u(),Eo=i("p"),em=a("Agora v\xE1 at\xE9 o Model Hub para encontrar seu modelo rec\xE9m-carregado: "),Pr=i("em"),lt=i("a"),om=a("https://huggingface.co/user-or-organization/dummy-model"),tm=a("."),si=u(),$a=i("p"),am=a("Clique na aba \u201CFiles and versions\u201D, e voc\xEA deve ver os arquivos vis\xEDveis na seguinte captura de tela:"),ii=u(),no.c(),Ea=u(),z(ko.$$.fragment),li=u(),Re=i("p"),rm=a("Como voc\xEA j\xE1 viu, o m\xE9todo "),Ar=i("code"),sm=a("push_to_hub()"),im=a(" aceita v\xE1rios argumentos, tornando poss\xEDvel carregar para um reposit\xF3rio espec\xEDfico ou espa\xE7o de nomes de organiza\xE7\xF5es, ou utilizar um token API diferente. Recomendamos que voc\xEA d\xEA uma olhada na especifica\xE7\xE3o do m\xE9todo dispon\xEDvel diretamente na documenta\xE7\xE3o "),nt=i("a"),lm=a("\u{1F917} Transformers documentation"),nm=a(" para ter uma id\xE9ia do que \xE9 poss\xEDvel."),ni=u(),he=i("p"),mm=a("O m\xE9todo "),Or=i("code"),dm=a("push_to_hub()"),cm=a(" \xE9 apoiado pelo pacote "),mt=i("a"),Dr=i("code"),um=a("huggingface_hub"),pm=a(" Python, que oferece uma API direta para o Hub Hugging Face. Est\xE1 integrado ao \u{1F917} Transformers e v\xE1rias outras bibliotecas de aprendizagem de m\xE1quinas, como "),dt=i("a"),Cr=i("code"),fm=a("allenlp"),_m=a(". Embora nos concentremos na integra\xE7\xE3o do \u{1F917} Transformers neste cap\xEDtulo, integr\xE1-lo em seu pr\xF3prio c\xF3digo ou biblioteca \xE9 simples."),mi=u(),ka=i("p"),vm=a("Salte para a \xFAltima se\xE7\xE3o para ver como carregar arquivos em seu reposit\xF3rio rec\xE9m-criado!"),di=u(),to=i("h2"),qo=i("a"),Mr=i("span"),z(ct.$$.fragment),hm=u(),qa=i("span"),gm=a("Usando a biblioteca Python "),Sr=i("code"),bm=a("huggingface_hub"),ci=u(),zo=i("p"),$m=a("A biblioteca Python"),xr=i("code"),Em=a("huggingface_hub"),km=a(" \xE9 um pacote que oferece um conjunto de ferramentas para os hubs do modelo e dos conjuntos de dados. Ela fornece m\xE9todos e classes simples para tarefas comuns como obter informa\xE7\xF5es sobre os reposit\xF3rios no centro e gerenci\xE1-los. Ele fornece APIs simples que funcionam em cima do git para gerenciar o conte\xFAdo desses reposit\xF3rios e para integrar o Hub em seus projetos e bibliotecas."),ui=u(),ge=i("p"),qm=a("Da mesma forma que a utiliza\xE7\xE3o da API "),Ir=i("code"),zm=a("push_to_hub"),ym=a(", isto exigir\xE1 que voc\xEA tenha seu token API salvo em seu cache. Para fazer isso, voc\xEA precisar\xE1 utilizar o comando "),Tr=i("code"),wm=a("login"),jm=a(" do CLI, como mencionado na se\xE7\xE3o anterior (mais uma vez, certifique-se de utilizar antes desses comandos o caracter "),Fr=i("code"),Pm=a("!"),Am=a(" se estiver rodando no Google Colab):"),pi=u(),z(ut.$$.fragment),fi=u(),yo=i("p"),Om=a("O pacote "),Hr=i("code"),Dm=a("huggingface_hub"),Cm=a(" oferece v\xE1rios m\xE9todos e classes que s\xE3o \xFAteis para nosso prop\xF3sito. Em primeiro lugar, existem alguns m\xE9todos para gerenciar a cria\xE7\xE3o de reposit\xF3rios, exclus\xE3o, e outros:"),_i=u(),z(pt.$$.fragment),vi=u(),wo=i("p"),Mm=a("Al\xE9m disso, oferece uma poderosa classe "),Gr=i("code"),Sm=a("Repository"),xm=a(" para gerenciar um reposit\xF3rio local. Vamos explorar esses m\xE9todos e essa classe na pr\xF3xima se\xE7\xE3o para entender como aproveit\xE1-los."),hi=u(),jo=i("p"),Im=a("O m\xE9todo "),Lr=i("code"),Tm=a("create_repo"),Fm=a(" pode ser utilizado para criar um novo reposit\xF3rio no centro:"),gi=u(),z(ft.$$.fragment),bi=u(),Ve=i("p"),Hm=a("Isto criar\xE1 o reposit\xF3rio "),Nr=i("code"),Gm=a("dummy-model"),Lm=a(" em seu namespace. Se desejar, voc\xEA pode especificar a que organiza\xE7\xE3o o reposit\xF3rio deve pertencer utilizando o argumento "),Ur=i("code"),Nm=a("organization"),Um=a(":"),$i=u(),z(_t.$$.fragment),Ei=u(),Be=i("p"),Rm=a("Isto criar\xE1 o reposit\xF3rio "),Rr=i("code"),Vm=a("dummy-model"),Bm=a(" no espa\xE7o de nomes "),Vr=i("code"),Ym=a("huggingface"),Km=a(`, assumindo que voc\xEA perten\xE7a a essa organiza\xE7\xE3o.
Outros argumentos que podem ser \xFAteis s\xE3o:`),ki=u(),Ye=i("ul"),za=i("li"),Br=i("code"),Qm=a("private"),Wm=a(", a fim de especificar se o reposit\xF3rio deve ser vis\xEDvel de outros ou n\xE3o."),Jm=u(),ya=i("li"),Yr=i("code"),Xm=a("token"),Zm=a(",se voc\xEA gostaria de substituir o token armazenada em seu cache por uma determinada token."),ed=u(),be=i("li"),Kr=i("code"),od=a("repo_type"),td=a(", se voc\xEA gostaria de criar um \u201D"),Qr=i("code"),ad=a("dataset"),rd=a(" ou um \u201Cespa\xE7o\u201D em vez de um modelo. Os valores aceitos s\xE3o "),Wr=i("code"),sd=a('"dataset"'),id=a("  e "),Jr=i("code"),ld=a('"space"'),nd=a("."),qi=u(),wa=i("p"),md=a("Uma vez criado o reposit\xF3rio, devemos adicionar arquivos a ele! Salte para a pr\xF3xima se\xE7\xE3o para ver as tr\xEAs maneiras como isto pode ser tratado."),zi=u(),ao=i("h2"),Po=i("a"),Xr=i("span"),z(vt.$$.fragment),dd=u(),Zr=i("span"),cd=a("Usando a interface web"),yi=u(),ja=i("p"),ud=a("A interface web oferece ferramentas para gerenciar os reposit\xF3rios diretamente no Hub. Usando a interface, voc\xEA pode facilmente criar reposit\xF3rios, adicionar arquivos (mesmo grandes!), explorar modelos, visualizar diffs, e muito mais."),wi=u(),Ao=i("p"),pd=a("Para criar um novo reposit\xF3rio, visite "),ht=i("a"),fd=a("huggingface.co/novo"),_d=a(":"),ji=u(),gt=i("div"),bt=i("img"),Pi=u(),Pa=i("p"),vd=a("Primeiro, especifique o propriet\xE1rio do reposit\xF3rio: este pode ser voc\xEA ou qualquer uma das organiza\xE7\xF5es \xE0s quais voc\xEA est\xE1 afiliado. Se voc\xEA escolher uma organiza\xE7\xE3o, o modelo ser\xE1 apresentado na p\xE1gina da organiza\xE7\xE3o e cada membro da organiza\xE7\xE3o ter\xE1 a capacidade de contribuir com o reposit\xF3rio."),Ai=u(),Aa=i("p"),hd=a("A seguir, digite o nome do seu modelo. Este tamb\xE9m ser\xE1 o nome do reposit\xF3rio. Finalmente, voc\xEA pode especificar se deseja que seu modelo seja p\xFAblico ou privado. Os modelos privados n\xE3o podem ser encontrados publicamente."),Oi=u(),Oa=i("p"),gd=a("Depois de criar seu reposit\xF3rio de modelos, voc\xEA deve ver uma p\xE1gina como esta:"),Di=u(),$t=i("div"),Et=i("img"),Ci=u(),Da=i("p"),bd=a("Aqui \xE9 onde seu modelo ser\xE1 hospedado. Para come\xE7ar a preench\xEA-lo, voc\xEA pode adicionar um arquivo README diretamente da interface web."),Mi=u(),kt=i("div"),qt=i("img"),Si=u(),Ca=i("p"),$d=a("O arquivo README est\xE1 em Markdown - sinta-se \xE0 vontade para ficar louco com ele! A terceira parte deste cap\xEDtulo \xE9 dedicada \xE0 constru\xE7\xE3o de um modelo de cart\xE3o. Estes s\xE3o de extrema import\xE2ncia para trazer valor ao seu modelo, pois est\xE3o onde voc\xEA diz aos outros o que ele pode fazer."),xi=u(),Ke=i("p"),Ed=a("Se voc\xEA olhar a aba \u201CFiles and versions\u201D, voc\xEA ver\xE1 que ainda n\xE3o h\xE1 muitos arquivos - apenas o "),es=i("em"),kd=a("README.md"),qd=a(" que voc\xEA acabou de criar e o arquivo "),os=i("em"),zd=a(".gitattributes"),yd=a(" que mant\xE9m o controle de arquivos grandes."),Ii=u(),zt=i("div"),yt=i("img"),Ti=u(),Ma=i("p"),wd=a("A seguir, veremos como adicionar alguns novos arquivos."),Fi=u(),ro=i("h2"),Oo=i("a"),ts=i("span"),z(wt.$$.fragment),jd=u(),as=i("span"),Pd=a("Fazendo upload dos arquivos de modelos"),Hi=u(),Do=i("p"),Ad=a("O sistema para gerenciar arquivos no Hub Hugging Face Hub \xE9 baseado no git para arquivos regulares, e git-lfs (que significa "),jt=i("a"),Od=a("Git Large File Storage"),Dd=a(") para arquivos maiores."),Gi=u(),Co=i("p"),Cd=a("Na se\xE7\xE3o seguinte, passamos por tr\xEAs maneiras diferentes de carregar arquivos no Hub: atrav\xE9s de "),rs=i("code"),Md=a("huggingface_hub"),Sd=a(" e atrav\xE9s de comandos de git."),Li=u(),so=i("h3"),Mo=i("a"),ss=i("span"),z(Pt.$$.fragment),xd=u(),Sa=i("span"),Id=a("A abordagem: "),is=i("code"),Td=a("upload_file"),Ni=u(),So=i("p"),Fd=a("A utiliza\xE7\xE3o do "),ls=i("code"),Hd=a("upload_file"),Gd=a(` n\xE3o requer que git e git-lfs sejam instalados em seu sistema. Ele empurra os arquivos diretamente para o Hub \u{1F917} utilizando solicita\xE7\xF5es HTTP POST. Uma limita\xE7\xE3o desta abordagem \xE9 que ele n\xE3o lida com arquivos maiores que 5GB de tamanho.
Se seus arquivos forem maiores que 5GB, por favor, siga os dois outros m\xE9todos detalhados abaixo.`),Ui=u(),xa=i("p"),Ld=a("A API pode ser usada da seguinte forma:"),Ri=u(),z(At.$$.fragment),Vi=u(),de=i("p"),Nd=a("Isto far\xE1 o upload do arquivo "),ns=i("code"),Ud=a("config.json"),Rd=a(" dispon\xEDvel em "),ms=i("code"),Vd=a("<path_to_file>"),Bd=a(" para a raiz do reposit\xF3rio como "),ds=i("code"),Yd=a("config.json"),Kd=a(", para o reposit\xF3rio "),cs=i("code"),Qd=a("dummy-model"),Wd=a(`.
Outros argumentos que podem ser \xFAteis s\xE3o:`),Bi=u(),xo=i("ul"),Ia=i("li"),us=i("code"),Jd=a("token"),Xd=a(", se voc\xEA gostaria de substituir o token armazenado em seu cache por um determinado token."),Zd=u(),ce=i("li"),ps=i("code"),ec=a("repo_type"),oc=a(", se voc\xEA gostaria de carregar em um "),fs=i("code"),tc=a("dataset"),ac=a(" ou em um "),_s=i("code"),rc=a("espa\xE7o"),sc=a(" em vez de um modelo. Os valores aceitos s\xE3o "),vs=i("code"),ic=a('"dataset"'),lc=a(" e "),hs=i("code"),nc=a('"space"'),mc=a("."),Yi=u(),io=i("h3"),Io=i("a"),gs=i("span"),z(Ot.$$.fragment),dc=u(),Ta=i("span"),cc=a("A classe: "),bs=i("code"),uc=a("Repository"),Ki=u(),To=i("p"),pc=a("A classe "),$s=i("code"),fc=a("Repository"),_c=a(" gerencia um reposit\xF3rio local de forma idiota. Ele resume a maioria dos pontos de dor que se pode ter com o git para fornecer todas as caracter\xEDsticas que necessitamos."),Qi=u(),Fo=i("p"),vc=a("A utiliza\xE7\xE3o desta classe requer ter git e git-lfs instalados, portanto certifique-se de ter o git-lfs instalado (veja "),Dt=i("a"),hc=a("aqui"),gc=a(" para instru\xE7\xF5es de instala\xE7\xE3o) e configure-o antes de come\xE7ar."),Wi=u(),Fa=i("p"),bc=a("Para come\xE7ar a brincar com o reposit\xF3rio que acabamos de criar, podemos come\xE7ar inicializando-o em uma pasta local atrav\xE9s da clonagem do reposit\xF3rio remoto:"),Ji=u(),z(Ct.$$.fragment),Xi=u(),$e=i("p"),$c=a("Isto criou a pasta "),Es=i("code"),Ec=a("<path_to_dummy_folder>"),kc=a(" em nosso diret\xF3rio de trabalho. Esta pasta cont\xE9m apenas o arquivo "),ks=i("code"),qc=a(".gitattributes"),zc=a(", pois este \xE9 o \xFAnico arquivo criado ao instanciar o reposit\xF3rio atrav\xE9s do "),qs=i("code"),yc=a("create_repo"),wc=a("."),Zi=u(),Ha=i("p"),jc=a("A partir deste ponto, podemos aproveitar v\xE1rios dos m\xE9todos tradicionais do gitattributes:"),el=u(),z(Mt.$$.fragment),ol=u(),Qe=i("p"),Pc=a("E outros! Recomendamos dar uma olhada na documenta\xE7\xE3o "),zs=i("code"),Ac=a("Repository"),Oc=a(" dispon\xEDvel "),St=i("a"),Dc=a("aqui"),Cc=a(" para uma vis\xE3o geral de todos os m\xE9todos dispon\xEDveis."),tl=u(),Ga=i("p"),Mc=a("No momento, temos um modelo e um tokenizer que gostar\xEDamos de empurrar para o centro. Clonamos com sucesso o reposit\xF3rio, portanto, podemos salvar os arquivos dentro desse reposit\xF3rio."),al=u(),La=i("p"),Sc=a("Primeiro nos certificamos de que nosso clone local esteja atualizado, puxando as \xFAltimas mudan\xE7as:"),rl=u(),z(xt.$$.fragment),sl=u(),Na=i("p"),xc=a("Uma vez feito isso, salvamos os arquivos do modelo e do tokenizer:"),il=u(),z(It.$$.fragment),ll=u(),Ho=i("p"),Ic=a("O "),ys=i("code"),Tc=a("<path_to_dummy_folder>"),Fc=a(" agora cont\xE9m todos os modelos e arquivos de fichas. Seguimos o fluxo de trabalho habitual do git, adicionando arquivos \xE0 \xE1rea de encena\xE7\xE3o, comprometendo-os e empurrando-os para o centro:"),nl=u(),z(Tt.$$.fragment),ml=u(),Ua=i("p"),Hc=a("Parab\xE9ns! Voc\xEA acabou de empurrar seus primeiros arquivos para o centro."),dl=u(),lo=i("h3"),Go=i("a"),ws=i("span"),z(Ft.$$.fragment),Gc=u(),Ra=i("span"),Lc=a("A abordagem: "),js=i("code"),Nc=a("baseada em git"),cl=u(),Va=i("p"),Uc=a("Esta \xE9 a pr\xF3pria abordagem do barebone para carregar arquivos: faremos isso com git e git-lfs diretamente. A maior parte da dificuldade \xE9 abstra\xEDda por abordagens anteriores, mas h\xE1 algumas advert\xEAncias com o seguinte m\xE9todo, ent\xE3o seguiremos um caso de uso mais complexo."),ul=u(),Lo=i("p"),Rc=a("O uso desta classe requer ter git e git-lfs instalados, portanto, certifique-se de ter "),Ht=i("a"),Vc=a("git-lfs"),Bc=a(" instalado (veja aqui as instru\xE7\xF5es de instala\xE7\xE3o) e configurado antes de come\xE7ar."),pl=u(),Ba=i("p"),Yc=a("Primeiro comece inicializando o git-lfs:"),fl=u(),z(Gt.$$.fragment),_l=u(),z(Lt.$$.fragment),vl=u(),Ya=i("p"),Kc=a("Uma vez feito isso, o primeiro passo \xE9 clonar seu reposit\xF3rio modelo:"),hl=u(),z(Nt.$$.fragment),gl=u(),We=i("p"),Qc=a("Meu nome de usu\xE1rio \xE9 "),Ps=i("code"),Wc=a("lysandre"),Jc=a(" e j\xE1 utilizei o nome modelo "),As=i("code"),Xc=a("dummy"),Zc=a(", ent\xE3o para mim o comando acaba parecendo o seguinte:"),bl=u(),z(Ut.$$.fragment),$l=u(),Je=i("p"),eu=a("Agora tenho uma pasta com o nome "),Os=i("em"),ou=a("dummy"),tu=a(" em meu diret\xF3rio de trabalho. Eu posso "),Ds=i("code"),au=a("cd"),ru=a(" dentro da pasta e dar uma olhada no conte\xFAdo:"),El=u(),z(Rt.$$.fragment),kl=u(),z(Vt.$$.fragment),ql=u(),ue=i("p"),su=a("Se voc\xEA acabou de criar seu reposit\xF3rio utilizando o m\xE9todo "),Cs=i("code"),iu=a("create_repo"),lu=a(" do Hugging Face Hub, esta pasta deve conter apenas um arquivo oculto "),Ms=i("code"),nu=a(".gitattributes"),mu=a(". Se voc\xEA seguiu as instru\xE7\xF5es da se\xE7\xE3o anterior para criar um reposit\xF3rio utilizando a interface web, a pasta deve conter um \xFAnico arquivo "),Ss=i("em"),du=a("README.md"),cu=a(" ao lado do arquivo oculto "),xs=i("code"),uu=a(".gitattributes"),pu=a(", como mostrado aqui."),zl=u(),No=i("p"),fu=a("Adicionar um arquivo de tamanho normal, como um arquivo de configura\xE7\xE3o, um arquivo de vocabul\xE1rio, ou basicamente qualquer arquivo sob alguns megabytes, \xE9 feito exatamente como se faria em qualquer sistema baseado no gitattributes. Entretanto, arquivos maiores devem ser registrados atrav\xE9s do git-lfs a fim de empurr\xE1-los para "),Is=i("em"),_u=a("huggingface.co"),vu=a("."),yl=u(),Ka=i("p"),hu=a("Vamos voltar a Python para gerar um modelo e tokenizer que gostar\xEDamos de comprometer com nosso reposit\xF3rio dummy:"),wl=u(),De.c(),Qa=u(),Uo=i("p"),gu=a("Agora que salvamos alguns artefatos de modelo e tokenizer, vamos dar outra olhada na pasta "),Ts=i("em"),bu=a("dummy"),$u=a(":"),jl=u(),z(Bt.$$.fragment),Pl=u(),Me.c(),Wa=u(),z(Ro.$$.fragment),Al=u(),Vo=i("p"),Eu=a("Agora podemos ir em frente e proceder como normalmente far\xEDamos com os reposit\xF3rios tradicionais da Git. Podemos adicionar todos os arquivos ao ambiente de encena\xE7\xE3o do Git utilizando o comando "),Fs=i("code"),ku=a("git add"),qu=a(":"),Ol=u(),z(Yt.$$.fragment),Dl=u(),Ja=i("p"),zu=a("Podemos, ent\xE3o, dar uma olhada nos arquivos que est\xE3o atualmente em fase de montagem:"),Cl=u(),z(Kt.$$.fragment),Ml=u(),xe.c(),Xa=u(),Bo=i("p"),yu=a("Da mesma forma, podemos ter certeza de que o git-lfs est\xE1 rastreando os arquivos corretos, utilizando seu comando "),Hs=i("code"),wu=a("status"),ju=a(":"),Sl=u(),z(Qt.$$.fragment),xl=u(),Te.c(),Za=u(),Yo=i("p"),Pu=a("Vamos prosseguir para as etapas finais, comprometendo-nos e empurrando para o reposit\xF3rio remoto "),Gs=i("em"),Au=a("huggingface.co"),Ou=a(":"),Il=u(),z(Wt.$$.fragment),Tl=u(),He.c(),er=u(),or=i("p"),Du=a("O push pode levar um pouco de tempo, dependendo da velocidade de sua conex\xE3o \xE0 Internet e do tamanho de seus arquivos:"),Fl=u(),z(Jt.$$.fragment),Hl=u(),z(Xt.$$.fragment),Gl=u(),mo.c(),tr=C_(),this.h()},l(e){const s=F_('[data-svelte="svelte-1phssyn"]',document.head);c=l(s,"META",{name:!0,content:!0}),s.forEach(o),f=p(e),y(d.$$.fragment,e),h=p(e),k=l(e,"H1",{class:!0});var na=m(k);A=l(na,"A",{id:!0,class:!0,href:!0});var ar=m(A);I=l(ar,"SPAN",{});var rr=m(I);y(P.$$.fragment,rr),rr.forEach(o),ar.forEach(o),M=p(na),D=l(na,"SPAN",{});var sr=m(D);C=r(sr,"Compartilhando modelos pr\xE9-treinados"),sr.forEach(o),na.forEach(o),_=p(e),E.l(e),q=p(e),F=l(e,"P",{});var ir=m(F);N=r(ir,"Nas etapas abaixo, veremos as maneiras mais f\xE1ceis de compartilhar modelos pr\xE9-treinados para o Hub \u{1F917}. H\xE1 ferramentas e utilit\xE1rios dispon\xEDveis que facilitam o compartilhamento e atualiza\xE7\xE3o de modelos diretamente no Hub, que exploraremos a seguir."),ir.forEach(o),H=p(e),y(G.$$.fragment,e),V=p(e),Q=l(e,"P",{});var Ls=m(Q);oe=r(Ls,"Encorajamos todos os usu\xE1rios que treinam modelos a contribuir compartilhando-os com a comunidade - compartilhar modelos, mesmo quando treinados em conjuntos de dados muito espec\xEDficos, ajudar\xE1 outros, economizando tempo e recursos e fornecendo acesso a artefatos \xFAteis treinados. Por sua vez, voc\xEA pode se beneficiar do trabalho que outros realizaram!"),Ls.forEach(o),B=p(e),te=l(e,"P",{});var lr=m(te);Ee=r(lr,"H\xE1 tr\xEAs maneiras de se criar novos reposit\xF3rios modelo:"),lr.forEach(o),X=p(e),U=l(e,"UL",{});var Xe=m(U);ae=l(Xe,"LI",{});var nr=m(ae);re=r(nr,"Usando a API"),Y=l(nr,"CODE",{});var mr=m(Y);ke=r(mr,"push_to_hub"),mr.forEach(o),nr.forEach(o),se=p(Xe),T=l(Xe,"LI",{});var ma=m(T);R=r(ma,"Usando a biblioteca Python "),pe=l(ma,"CODE",{});var dr=m(pe);Z=r(dr,"huggingface_hub"),dr.forEach(o),ma.forEach(o),K=p(Xe),ie=l(Xe,"LI",{});var cp=m(ie);Ne=r(cp,"Usando a interface web"),cp.forEach(o),Xe.forEach(o),qe=p(e),le=l(e,"P",{});var up=m(le);W=r(up,"Uma vez criado um reposit\xF3rio, voc\xEA pode fazer o upload de arquivos para ele via git e git-lfs. N\xF3s o acompanharemos na cria\xE7\xE3o de reposit\xF3rios modelo e no upload de arquivos para eles nas se\xE7\xF5es seguintes."),up.forEach(o),ee=p(e),_e=l(e,"H2",{class:!0});var Rl=m(_e);fe=l(Rl,"A",{id:!0,class:!0,href:!0});var pp=m(fe);S=l(pp,"SPAN",{});var fp=m(S);y(L.$$.fragment,fp),fp.forEach(o),pp.forEach(o),da=p(Rl),oo=l(Rl,"SPAN",{});var Cu=m(oo);ca=r(Cu,"Usando a API"),J=l(Cu,"CODE",{});var _p=m(J);ua=r(_p,"push_to_hub"),_p.forEach(o),Cu.forEach(o),Rl.forEach(o),Zo=p(e),me.l(e),ze=p(e),ye=l(e,"P",{});var Vl=m(ye);fo=r(Vl,"A maneira mais simples de carregar arquivos no Hub \xE9 usando a API "),_o=l(Vl,"CODE",{});var vp=m(_o);pa=r(vp,"push_to_hub"),vp.forEach(o),qn=r(Vl,"."),Vl.forEach(o),Ns=p(e),ve=l(e,"P",{});var Ko=m(ve);zn=r(Ko,"Antes de ir adiante, voc\xEA precisar\xE1 gerar um token de autentica\xE7\xE3o para que a API "),$r=l(Ko,"CODE",{});var hp=m($r);yn=r(hp,"huggingface_hub"),hp.forEach(o),wn=r(Ko," saiba quem voc\xEA \xE9 e a que namespaces voc\xEA tem acesso de escrita. Certifique-se de estar em um ambiente onde voc\xEA tenha "),Er=l(Ko,"CODE",{});var gp=m(Er);jn=r(gp,"transformers"),gp.forEach(o),Pn=r(Ko," instalado (ver "),fa=l(Ko,"A",{href:!0});var bp=m(fa);An=r(bp,"Setup"),bp.forEach(o),On=r(Ko,"). Se voc\xEA estiver em um notebook, voc\xEA pode utilizar a seguinte fun\xE7\xE3o para fazer o login:"),Ko.forEach(o),Us=p(e),y(et.$$.fragment,e),Rs=p(e),_a=l(e,"P",{});var $p=m(_a);Dn=r($p,"Em um terminal, voc\xEA pode rodar:"),$p.forEach(o),Vs=p(e),y(ot.$$.fragment,e),Bs=p(e),vo=l(e,"P",{});var Bl=m(vo);Cn=r(Bl,"Em ambos os casos, voc\xEA ser\xE1 solicitado seu nome de usu\xE1rio e senha, que s\xE3o os mesmos que voc\xEA usa para fazer o login no Hub. Se voc\xEA ainda n\xE3o tem um perfil do Hub, voc\xEA deve criar um "),tt=l(Bl,"A",{href:!0,rel:!0});var Ep=m(tt);Mn=r(Ep,"aqui"),Ep.forEach(o),Sn=r(Bl,"."),Bl.forEach(o),Ys=p(e),va=l(e,"P",{});var kp=m(va);xn=r(kp,"\xD3timo! Agora voc\xEA tem seu token de autentica\xE7\xE3o armazenado em sua pasta de cache. Vamos criar alguns reposit\xF3rios!"),kp.forEach(o),Ks=p(e),je.l(e),ha=p(e),ho=l(e,"P",{});var Yl=m(ho);In=r(Yl,"Em um n\xEDvel inferior, o acesso ao Model Hub pode ser feito diretamente nos modelos, tokenizers e objetos de configura\xE7\xE3o atrav\xE9s de seu m\xE9todo "),kr=l(Yl,"CODE",{});var qp=m(kr);Tn=r(qp,"push_to_hub()"),qp.forEach(o),Fn=r(Yl,". Este m\xE9todo cuida da cria\xE7\xE3o do reposit\xF3rio e empurra os arquivos modelo e tokenizer diretamente para o reposit\xF3rio. N\xE3o \xE9 necess\xE1rio nenhum tratamento manual, ao contr\xE1rio do que acontece com a API, veremos abaixo."),Yl.forEach(o),Qs=p(e),ga=l(e,"P",{});var zp=m(ga);Hn=r(zp,"Para se ter uma id\xE9ia de como funciona, vamos primeiro inicializar um modelo e um tokenizer:"),zp.forEach(o),Ws=p(e),Ae.l(e),ba=p(e),Ue=l(e,"P",{});var cr=m(Ue);Gn=r(cr,"Voc\xEA \xE9 livre para fazer o que quiser com elas - adicionar fichas ao tokenizer, treinar o modelo, afinar o modelo. Quando voc\xEA estiver satisfeito com o modelo, pesos e tokenizer resultantes, voc\xEA pode aproveitar o m\xE9todo "),qr=l(cr,"CODE",{});var yp=m(qr);Ln=r(yp,"push_to_hub()"),yp.forEach(o),Nn=r(cr," diretamente dispon\xEDvel no objeto "),zr=l(cr,"CODE",{});var wp=m(zr);Un=r(wp,"model"),wp.forEach(o),Rn=r(cr,":"),cr.forEach(o),Js=p(e),y(at.$$.fragment,e),Xs=p(e),go=l(e,"P",{});var Kl=m(go);Vn=r(Kl,"Isto criar\xE1 o novo reposit\xF3rio "),yr=l(Kl,"CODE",{});var jp=m(yr);Bn=r(jp,"dummy-model"),jp.forEach(o),Yn=r(Kl,`  em seu perfil, e o preencher\xE1 com seus arquivos de modelos.
Fa\xE7a o mesmo com o tokenizer, para que todos os arquivos estejam agora dispon\xEDveis neste reposit\xF3rio:`),Kl.forEach(o),Zs=p(e),y(rt.$$.fragment,e),ei=p(e),bo=l(e,"P",{});var Ql=m(bo);Kn=r(Ql,"Se voc\xEA pertence a uma organiza\xE7\xE3o, basta especificar o argumento "),wr=l(Ql,"CODE",{});var Pp=m(wr);Qn=r(Pp,"organization"),Pp.forEach(o),Wn=r(Ql," a ser carregado no namespace dessa organiza\xE7\xE3o:"),Ql.forEach(o),oi=p(e),y(st.$$.fragment,e),ti=p(e),$o=l(e,"P",{});var Wl=m($o);Jn=r(Wl,"Se voc\xEA desejar utilizar um toke espec\xEDfica do Hugging Face, voc\xEA \xE9 livre para especific\xE1-la tamb\xE9m para o m\xE9todo "),jr=l(Wl,"CODE",{});var Ap=m(jr);Xn=r(Ap,"push_to_hub()"),Ap.forEach(o),Zn=r(Wl,":"),Wl.forEach(o),ai=p(e),y(it.$$.fragment,e),ri=p(e),Eo=l(e,"P",{});var Jl=m(Eo);em=r(Jl,"Agora v\xE1 at\xE9 o Model Hub para encontrar seu modelo rec\xE9m-carregado: "),Pr=l(Jl,"EM",{});var Op=m(Pr);lt=l(Op,"A",{href:!0,rel:!0});var Dp=m(lt);om=r(Dp,"https://huggingface.co/user-or-organization/dummy-model"),Dp.forEach(o),Op.forEach(o),tm=r(Jl,"."),Jl.forEach(o),si=p(e),$a=l(e,"P",{});var Cp=m($a);am=r(Cp,"Clique na aba \u201CFiles and versions\u201D, e voc\xEA deve ver os arquivos vis\xEDveis na seguinte captura de tela:"),Cp.forEach(o),ii=p(e),no.l(e),Ea=p(e),y(ko.$$.fragment,e),li=p(e),Re=l(e,"P",{});var ur=m(Re);rm=r(ur,"Como voc\xEA j\xE1 viu, o m\xE9todo "),Ar=l(ur,"CODE",{});var Mp=m(Ar);sm=r(Mp,"push_to_hub()"),Mp.forEach(o),im=r(ur," aceita v\xE1rios argumentos, tornando poss\xEDvel carregar para um reposit\xF3rio espec\xEDfico ou espa\xE7o de nomes de organiza\xE7\xF5es, ou utilizar um token API diferente. Recomendamos que voc\xEA d\xEA uma olhada na especifica\xE7\xE3o do m\xE9todo dispon\xEDvel diretamente na documenta\xE7\xE3o "),nt=l(ur,"A",{href:!0,rel:!0});var Sp=m(nt);lm=r(Sp,"\u{1F917} Transformers documentation"),Sp.forEach(o),nm=r(ur," para ter uma id\xE9ia do que \xE9 poss\xEDvel."),ur.forEach(o),ni=p(e),he=l(e,"P",{});var Qo=m(he);mm=r(Qo,"O m\xE9todo "),Or=l(Qo,"CODE",{});var xp=m(Or);dm=r(xp,"push_to_hub()"),xp.forEach(o),cm=r(Qo," \xE9 apoiado pelo pacote "),mt=l(Qo,"A",{href:!0,rel:!0});var Ip=m(mt);Dr=l(Ip,"CODE",{});var Tp=m(Dr);um=r(Tp,"huggingface_hub"),Tp.forEach(o),Ip.forEach(o),pm=r(Qo," Python, que oferece uma API direta para o Hub Hugging Face. Est\xE1 integrado ao \u{1F917} Transformers e v\xE1rias outras bibliotecas de aprendizagem de m\xE1quinas, como "),dt=l(Qo,"A",{href:!0,rel:!0});var Fp=m(dt);Cr=l(Fp,"CODE",{});var Hp=m(Cr);fm=r(Hp,"allenlp"),Hp.forEach(o),Fp.forEach(o),_m=r(Qo,". Embora nos concentremos na integra\xE7\xE3o do \u{1F917} Transformers neste cap\xEDtulo, integr\xE1-lo em seu pr\xF3prio c\xF3digo ou biblioteca \xE9 simples."),Qo.forEach(o),mi=p(e),ka=l(e,"P",{});var Gp=m(ka);vm=r(Gp,"Salte para a \xFAltima se\xE7\xE3o para ver como carregar arquivos em seu reposit\xF3rio rec\xE9m-criado!"),Gp.forEach(o),di=p(e),to=l(e,"H2",{class:!0});var Xl=m(to);qo=l(Xl,"A",{id:!0,class:!0,href:!0});var Lp=m(qo);Mr=l(Lp,"SPAN",{});var Np=m(Mr);y(ct.$$.fragment,Np),Np.forEach(o),Lp.forEach(o),hm=p(Xl),qa=l(Xl,"SPAN",{});var Mu=m(qa);gm=r(Mu,"Usando a biblioteca Python "),Sr=l(Mu,"CODE",{});var Up=m(Sr);bm=r(Up,"huggingface_hub"),Up.forEach(o),Mu.forEach(o),Xl.forEach(o),ci=p(e),zo=l(e,"P",{});var Zl=m(zo);$m=r(Zl,"A biblioteca Python"),xr=l(Zl,"CODE",{});var Rp=m(xr);Em=r(Rp,"huggingface_hub"),Rp.forEach(o),km=r(Zl," \xE9 um pacote que oferece um conjunto de ferramentas para os hubs do modelo e dos conjuntos de dados. Ela fornece m\xE9todos e classes simples para tarefas comuns como obter informa\xE7\xF5es sobre os reposit\xF3rios no centro e gerenci\xE1-los. Ele fornece APIs simples que funcionam em cima do git para gerenciar o conte\xFAdo desses reposit\xF3rios e para integrar o Hub em seus projetos e bibliotecas."),Zl.forEach(o),ui=p(e),ge=l(e,"P",{});var Wo=m(ge);qm=r(Wo,"Da mesma forma que a utiliza\xE7\xE3o da API "),Ir=l(Wo,"CODE",{});var Vp=m(Ir);zm=r(Vp,"push_to_hub"),Vp.forEach(o),ym=r(Wo,", isto exigir\xE1 que voc\xEA tenha seu token API salvo em seu cache. Para fazer isso, voc\xEA precisar\xE1 utilizar o comando "),Tr=l(Wo,"CODE",{});var Bp=m(Tr);wm=r(Bp,"login"),Bp.forEach(o),jm=r(Wo," do CLI, como mencionado na se\xE7\xE3o anterior (mais uma vez, certifique-se de utilizar antes desses comandos o caracter "),Fr=l(Wo,"CODE",{});var Yp=m(Fr);Pm=r(Yp,"!"),Yp.forEach(o),Am=r(Wo," se estiver rodando no Google Colab):"),Wo.forEach(o),pi=p(e),y(ut.$$.fragment,e),fi=p(e),yo=l(e,"P",{});var en=m(yo);Om=r(en,"O pacote "),Hr=l(en,"CODE",{});var Kp=m(Hr);Dm=r(Kp,"huggingface_hub"),Kp.forEach(o),Cm=r(en," oferece v\xE1rios m\xE9todos e classes que s\xE3o \xFAteis para nosso prop\xF3sito. Em primeiro lugar, existem alguns m\xE9todos para gerenciar a cria\xE7\xE3o de reposit\xF3rios, exclus\xE3o, e outros:"),en.forEach(o),_i=p(e),y(pt.$$.fragment,e),vi=p(e),wo=l(e,"P",{});var on=m(wo);Mm=r(on,"Al\xE9m disso, oferece uma poderosa classe "),Gr=l(on,"CODE",{});var Qp=m(Gr);Sm=r(Qp,"Repository"),Qp.forEach(o),xm=r(on," para gerenciar um reposit\xF3rio local. Vamos explorar esses m\xE9todos e essa classe na pr\xF3xima se\xE7\xE3o para entender como aproveit\xE1-los."),on.forEach(o),hi=p(e),jo=l(e,"P",{});var tn=m(jo);Im=r(tn,"O m\xE9todo "),Lr=l(tn,"CODE",{});var Wp=m(Lr);Tm=r(Wp,"create_repo"),Wp.forEach(o),Fm=r(tn," pode ser utilizado para criar um novo reposit\xF3rio no centro:"),tn.forEach(o),gi=p(e),y(ft.$$.fragment,e),bi=p(e),Ve=l(e,"P",{});var pr=m(Ve);Hm=r(pr,"Isto criar\xE1 o reposit\xF3rio "),Nr=l(pr,"CODE",{});var Jp=m(Nr);Gm=r(Jp,"dummy-model"),Jp.forEach(o),Lm=r(pr," em seu namespace. Se desejar, voc\xEA pode especificar a que organiza\xE7\xE3o o reposit\xF3rio deve pertencer utilizando o argumento "),Ur=l(pr,"CODE",{});var Xp=m(Ur);Nm=r(Xp,"organization"),Xp.forEach(o),Um=r(pr,":"),pr.forEach(o),$i=p(e),y(_t.$$.fragment,e),Ei=p(e),Be=l(e,"P",{});var fr=m(Be);Rm=r(fr,"Isto criar\xE1 o reposit\xF3rio "),Rr=l(fr,"CODE",{});var Zp=m(Rr);Vm=r(Zp,"dummy-model"),Zp.forEach(o),Bm=r(fr," no espa\xE7o de nomes "),Vr=l(fr,"CODE",{});var ef=m(Vr);Ym=r(ef,"huggingface"),ef.forEach(o),Km=r(fr,`, assumindo que voc\xEA perten\xE7a a essa organiza\xE7\xE3o.
Outros argumentos que podem ser \xFAteis s\xE3o:`),fr.forEach(o),ki=p(e),Ye=l(e,"UL",{});var _r=m(Ye);za=l(_r,"LI",{});var Su=m(za);Br=l(Su,"CODE",{});var of=m(Br);Qm=r(of,"private"),of.forEach(o),Wm=r(Su,", a fim de especificar se o reposit\xF3rio deve ser vis\xEDvel de outros ou n\xE3o."),Su.forEach(o),Jm=p(_r),ya=l(_r,"LI",{});var xu=m(ya);Yr=l(xu,"CODE",{});var tf=m(Yr);Xm=r(tf,"token"),tf.forEach(o),Zm=r(xu,",se voc\xEA gostaria de substituir o token armazenada em seu cache por uma determinada token."),xu.forEach(o),ed=p(_r),be=l(_r,"LI",{});var co=m(be);Kr=l(co,"CODE",{});var af=m(Kr);od=r(af,"repo_type"),af.forEach(o),td=r(co,", se voc\xEA gostaria de criar um \u201D"),Qr=l(co,"CODE",{});var rf=m(Qr);ad=r(rf,"dataset"),rf.forEach(o),rd=r(co," ou um \u201Cespa\xE7o\u201D em vez de um modelo. Os valores aceitos s\xE3o "),Wr=l(co,"CODE",{});var sf=m(Wr);sd=r(sf,'"dataset"'),sf.forEach(o),id=r(co,"  e "),Jr=l(co,"CODE",{});var lf=m(Jr);ld=r(lf,'"space"'),lf.forEach(o),nd=r(co,"."),co.forEach(o),_r.forEach(o),qi=p(e),wa=l(e,"P",{});var nf=m(wa);md=r(nf,"Uma vez criado o reposit\xF3rio, devemos adicionar arquivos a ele! Salte para a pr\xF3xima se\xE7\xE3o para ver as tr\xEAs maneiras como isto pode ser tratado."),nf.forEach(o),zi=p(e),ao=l(e,"H2",{class:!0});var an=m(ao);Po=l(an,"A",{id:!0,class:!0,href:!0});var mf=m(Po);Xr=l(mf,"SPAN",{});var df=m(Xr);y(vt.$$.fragment,df),df.forEach(o),mf.forEach(o),dd=p(an),Zr=l(an,"SPAN",{});var cf=m(Zr);cd=r(cf,"Usando a interface web"),cf.forEach(o),an.forEach(o),yi=p(e),ja=l(e,"P",{});var uf=m(ja);ud=r(uf,"A interface web oferece ferramentas para gerenciar os reposit\xF3rios diretamente no Hub. Usando a interface, voc\xEA pode facilmente criar reposit\xF3rios, adicionar arquivos (mesmo grandes!), explorar modelos, visualizar diffs, e muito mais."),uf.forEach(o),wi=p(e),Ao=l(e,"P",{});var rn=m(Ao);pd=r(rn,"Para criar um novo reposit\xF3rio, visite "),ht=l(rn,"A",{href:!0,rel:!0});var pf=m(ht);fd=r(pf,"huggingface.co/novo"),pf.forEach(o),_d=r(rn,":"),rn.forEach(o),ji=p(e),gt=l(e,"DIV",{class:!0});var ff=m(gt);bt=l(ff,"IMG",{src:!0,alt:!0,width:!0}),ff.forEach(o),Pi=p(e),Pa=l(e,"P",{});var _f=m(Pa);vd=r(_f,"Primeiro, especifique o propriet\xE1rio do reposit\xF3rio: este pode ser voc\xEA ou qualquer uma das organiza\xE7\xF5es \xE0s quais voc\xEA est\xE1 afiliado. Se voc\xEA escolher uma organiza\xE7\xE3o, o modelo ser\xE1 apresentado na p\xE1gina da organiza\xE7\xE3o e cada membro da organiza\xE7\xE3o ter\xE1 a capacidade de contribuir com o reposit\xF3rio."),_f.forEach(o),Ai=p(e),Aa=l(e,"P",{});var vf=m(Aa);hd=r(vf,"A seguir, digite o nome do seu modelo. Este tamb\xE9m ser\xE1 o nome do reposit\xF3rio. Finalmente, voc\xEA pode especificar se deseja que seu modelo seja p\xFAblico ou privado. Os modelos privados n\xE3o podem ser encontrados publicamente."),vf.forEach(o),Oi=p(e),Oa=l(e,"P",{});var hf=m(Oa);gd=r(hf,"Depois de criar seu reposit\xF3rio de modelos, voc\xEA deve ver uma p\xE1gina como esta:"),hf.forEach(o),Di=p(e),$t=l(e,"DIV",{class:!0});var gf=m($t);Et=l(gf,"IMG",{src:!0,alt:!0,width:!0}),gf.forEach(o),Ci=p(e),Da=l(e,"P",{});var bf=m(Da);bd=r(bf,"Aqui \xE9 onde seu modelo ser\xE1 hospedado. Para come\xE7ar a preench\xEA-lo, voc\xEA pode adicionar um arquivo README diretamente da interface web."),bf.forEach(o),Mi=p(e),kt=l(e,"DIV",{class:!0});var $f=m(kt);qt=l($f,"IMG",{src:!0,alt:!0,width:!0}),$f.forEach(o),Si=p(e),Ca=l(e,"P",{});var Ef=m(Ca);$d=r(Ef,"O arquivo README est\xE1 em Markdown - sinta-se \xE0 vontade para ficar louco com ele! A terceira parte deste cap\xEDtulo \xE9 dedicada \xE0 constru\xE7\xE3o de um modelo de cart\xE3o. Estes s\xE3o de extrema import\xE2ncia para trazer valor ao seu modelo, pois est\xE3o onde voc\xEA diz aos outros o que ele pode fazer."),Ef.forEach(o),xi=p(e),Ke=l(e,"P",{});var vr=m(Ke);Ed=r(vr,"Se voc\xEA olhar a aba \u201CFiles and versions\u201D, voc\xEA ver\xE1 que ainda n\xE3o h\xE1 muitos arquivos - apenas o "),es=l(vr,"EM",{});var kf=m(es);kd=r(kf,"README.md"),kf.forEach(o),qd=r(vr," que voc\xEA acabou de criar e o arquivo "),os=l(vr,"EM",{});var qf=m(os);zd=r(qf,".gitattributes"),qf.forEach(o),yd=r(vr," que mant\xE9m o controle de arquivos grandes."),vr.forEach(o),Ii=p(e),zt=l(e,"DIV",{class:!0});var zf=m(zt);yt=l(zf,"IMG",{src:!0,alt:!0,width:!0}),zf.forEach(o),Ti=p(e),Ma=l(e,"P",{});var yf=m(Ma);wd=r(yf,"A seguir, veremos como adicionar alguns novos arquivos."),yf.forEach(o),Fi=p(e),ro=l(e,"H2",{class:!0});var sn=m(ro);Oo=l(sn,"A",{id:!0,class:!0,href:!0});var wf=m(Oo);ts=l(wf,"SPAN",{});var jf=m(ts);y(wt.$$.fragment,jf),jf.forEach(o),wf.forEach(o),jd=p(sn),as=l(sn,"SPAN",{});var Pf=m(as);Pd=r(Pf,"Fazendo upload dos arquivos de modelos"),Pf.forEach(o),sn.forEach(o),Hi=p(e),Do=l(e,"P",{});var ln=m(Do);Ad=r(ln,"O sistema para gerenciar arquivos no Hub Hugging Face Hub \xE9 baseado no git para arquivos regulares, e git-lfs (que significa "),jt=l(ln,"A",{href:!0,rel:!0});var Af=m(jt);Od=r(Af,"Git Large File Storage"),Af.forEach(o),Dd=r(ln,") para arquivos maiores."),ln.forEach(o),Gi=p(e),Co=l(e,"P",{});var nn=m(Co);Cd=r(nn,"Na se\xE7\xE3o seguinte, passamos por tr\xEAs maneiras diferentes de carregar arquivos no Hub: atrav\xE9s de "),rs=l(nn,"CODE",{});var Of=m(rs);Md=r(Of,"huggingface_hub"),Of.forEach(o),Sd=r(nn," e atrav\xE9s de comandos de git."),nn.forEach(o),Li=p(e),so=l(e,"H3",{class:!0});var mn=m(so);Mo=l(mn,"A",{id:!0,class:!0,href:!0});var Df=m(Mo);ss=l(Df,"SPAN",{});var Cf=m(ss);y(Pt.$$.fragment,Cf),Cf.forEach(o),Df.forEach(o),xd=p(mn),Sa=l(mn,"SPAN",{});var Iu=m(Sa);Id=r(Iu,"A abordagem: "),is=l(Iu,"CODE",{});var Mf=m(is);Td=r(Mf,"upload_file"),Mf.forEach(o),Iu.forEach(o),mn.forEach(o),Ni=p(e),So=l(e,"P",{});var dn=m(So);Fd=r(dn,"A utiliza\xE7\xE3o do "),ls=l(dn,"CODE",{});var Sf=m(ls);Hd=r(Sf,"upload_file"),Sf.forEach(o),Gd=r(dn,` n\xE3o requer que git e git-lfs sejam instalados em seu sistema. Ele empurra os arquivos diretamente para o Hub \u{1F917} utilizando solicita\xE7\xF5es HTTP POST. Uma limita\xE7\xE3o desta abordagem \xE9 que ele n\xE3o lida com arquivos maiores que 5GB de tamanho.
Se seus arquivos forem maiores que 5GB, por favor, siga os dois outros m\xE9todos detalhados abaixo.`),dn.forEach(o),Ui=p(e),xa=l(e,"P",{});var xf=m(xa);Ld=r(xf,"A API pode ser usada da seguinte forma:"),xf.forEach(o),Ri=p(e),y(At.$$.fragment,e),Vi=p(e),de=l(e,"P",{});var Ze=m(de);Nd=r(Ze,"Isto far\xE1 o upload do arquivo "),ns=l(Ze,"CODE",{});var If=m(ns);Ud=r(If,"config.json"),If.forEach(o),Rd=r(Ze," dispon\xEDvel em "),ms=l(Ze,"CODE",{});var Tf=m(ms);Vd=r(Tf,"<path_to_file>"),Tf.forEach(o),Bd=r(Ze," para a raiz do reposit\xF3rio como "),ds=l(Ze,"CODE",{});var Ff=m(ds);Yd=r(Ff,"config.json"),Ff.forEach(o),Kd=r(Ze,", para o reposit\xF3rio "),cs=l(Ze,"CODE",{});var Hf=m(cs);Qd=r(Hf,"dummy-model"),Hf.forEach(o),Wd=r(Ze,`.
Outros argumentos que podem ser \xFAteis s\xE3o:`),Ze.forEach(o),Bi=p(e),xo=l(e,"UL",{});var cn=m(xo);Ia=l(cn,"LI",{});var Tu=m(Ia);us=l(Tu,"CODE",{});var Gf=m(us);Jd=r(Gf,"token"),Gf.forEach(o),Xd=r(Tu,", se voc\xEA gostaria de substituir o token armazenado em seu cache por um determinado token."),Tu.forEach(o),Zd=p(cn),ce=l(cn,"LI",{});var Ge=m(ce);ps=l(Ge,"CODE",{});var Lf=m(ps);ec=r(Lf,"repo_type"),Lf.forEach(o),oc=r(Ge,", se voc\xEA gostaria de carregar em um "),fs=l(Ge,"CODE",{});var Nf=m(fs);tc=r(Nf,"dataset"),Nf.forEach(o),ac=r(Ge," ou em um "),_s=l(Ge,"CODE",{});var Uf=m(_s);rc=r(Uf,"espa\xE7o"),Uf.forEach(o),sc=r(Ge," em vez de um modelo. Os valores aceitos s\xE3o "),vs=l(Ge,"CODE",{});var Rf=m(vs);ic=r(Rf,'"dataset"'),Rf.forEach(o),lc=r(Ge," e "),hs=l(Ge,"CODE",{});var Vf=m(hs);nc=r(Vf,'"space"'),Vf.forEach(o),mc=r(Ge,"."),Ge.forEach(o),cn.forEach(o),Yi=p(e),io=l(e,"H3",{class:!0});var un=m(io);Io=l(un,"A",{id:!0,class:!0,href:!0});var Bf=m(Io);gs=l(Bf,"SPAN",{});var Yf=m(gs);y(Ot.$$.fragment,Yf),Yf.forEach(o),Bf.forEach(o),dc=p(un),Ta=l(un,"SPAN",{});var Fu=m(Ta);cc=r(Fu,"A classe: "),bs=l(Fu,"CODE",{});var Kf=m(bs);uc=r(Kf,"Repository"),Kf.forEach(o),Fu.forEach(o),un.forEach(o),Ki=p(e),To=l(e,"P",{});var pn=m(To);pc=r(pn,"A classe "),$s=l(pn,"CODE",{});var Qf=m($s);fc=r(Qf,"Repository"),Qf.forEach(o),_c=r(pn," gerencia um reposit\xF3rio local de forma idiota. Ele resume a maioria dos pontos de dor que se pode ter com o git para fornecer todas as caracter\xEDsticas que necessitamos."),pn.forEach(o),Qi=p(e),Fo=l(e,"P",{});var fn=m(Fo);vc=r(fn,"A utiliza\xE7\xE3o desta classe requer ter git e git-lfs instalados, portanto certifique-se de ter o git-lfs instalado (veja "),Dt=l(fn,"A",{href:!0,rel:!0});var Wf=m(Dt);hc=r(Wf,"aqui"),Wf.forEach(o),gc=r(fn," para instru\xE7\xF5es de instala\xE7\xE3o) e configure-o antes de come\xE7ar."),fn.forEach(o),Wi=p(e),Fa=l(e,"P",{});var Jf=m(Fa);bc=r(Jf,"Para come\xE7ar a brincar com o reposit\xF3rio que acabamos de criar, podemos come\xE7ar inicializando-o em uma pasta local atrav\xE9s da clonagem do reposit\xF3rio remoto:"),Jf.forEach(o),Ji=p(e),y(Ct.$$.fragment,e),Xi=p(e),$e=l(e,"P",{});var Jo=m($e);$c=r(Jo,"Isto criou a pasta "),Es=l(Jo,"CODE",{});var Xf=m(Es);Ec=r(Xf,"<path_to_dummy_folder>"),Xf.forEach(o),kc=r(Jo," em nosso diret\xF3rio de trabalho. Esta pasta cont\xE9m apenas o arquivo "),ks=l(Jo,"CODE",{});var Zf=m(ks);qc=r(Zf,".gitattributes"),Zf.forEach(o),zc=r(Jo,", pois este \xE9 o \xFAnico arquivo criado ao instanciar o reposit\xF3rio atrav\xE9s do "),qs=l(Jo,"CODE",{});var e_=m(qs);yc=r(e_,"create_repo"),e_.forEach(o),wc=r(Jo,"."),Jo.forEach(o),Zi=p(e),Ha=l(e,"P",{});var o_=m(Ha);jc=r(o_,"A partir deste ponto, podemos aproveitar v\xE1rios dos m\xE9todos tradicionais do gitattributes:"),o_.forEach(o),el=p(e),y(Mt.$$.fragment,e),ol=p(e),Qe=l(e,"P",{});var hr=m(Qe);Pc=r(hr,"E outros! Recomendamos dar uma olhada na documenta\xE7\xE3o "),zs=l(hr,"CODE",{});var t_=m(zs);Ac=r(t_,"Repository"),t_.forEach(o),Oc=r(hr," dispon\xEDvel "),St=l(hr,"A",{href:!0,rel:!0});var a_=m(St);Dc=r(a_,"aqui"),a_.forEach(o),Cc=r(hr," para uma vis\xE3o geral de todos os m\xE9todos dispon\xEDveis."),hr.forEach(o),tl=p(e),Ga=l(e,"P",{});var r_=m(Ga);Mc=r(r_,"No momento, temos um modelo e um tokenizer que gostar\xEDamos de empurrar para o centro. Clonamos com sucesso o reposit\xF3rio, portanto, podemos salvar os arquivos dentro desse reposit\xF3rio."),r_.forEach(o),al=p(e),La=l(e,"P",{});var s_=m(La);Sc=r(s_,"Primeiro nos certificamos de que nosso clone local esteja atualizado, puxando as \xFAltimas mudan\xE7as:"),s_.forEach(o),rl=p(e),y(xt.$$.fragment,e),sl=p(e),Na=l(e,"P",{});var i_=m(Na);xc=r(i_,"Uma vez feito isso, salvamos os arquivos do modelo e do tokenizer:"),i_.forEach(o),il=p(e),y(It.$$.fragment,e),ll=p(e),Ho=l(e,"P",{});var _n=m(Ho);Ic=r(_n,"O "),ys=l(_n,"CODE",{});var l_=m(ys);Tc=r(l_,"<path_to_dummy_folder>"),l_.forEach(o),Fc=r(_n," agora cont\xE9m todos os modelos e arquivos de fichas. Seguimos o fluxo de trabalho habitual do git, adicionando arquivos \xE0 \xE1rea de encena\xE7\xE3o, comprometendo-os e empurrando-os para o centro:"),_n.forEach(o),nl=p(e),y(Tt.$$.fragment,e),ml=p(e),Ua=l(e,"P",{});var n_=m(Ua);Hc=r(n_,"Parab\xE9ns! Voc\xEA acabou de empurrar seus primeiros arquivos para o centro."),n_.forEach(o),dl=p(e),lo=l(e,"H3",{class:!0});var vn=m(lo);Go=l(vn,"A",{id:!0,class:!0,href:!0});var m_=m(Go);ws=l(m_,"SPAN",{});var d_=m(ws);y(Ft.$$.fragment,d_),d_.forEach(o),m_.forEach(o),Gc=p(vn),Ra=l(vn,"SPAN",{});var Hu=m(Ra);Lc=r(Hu,"A abordagem: "),js=l(Hu,"CODE",{});var c_=m(js);Nc=r(c_,"baseada em git"),c_.forEach(o),Hu.forEach(o),vn.forEach(o),cl=p(e),Va=l(e,"P",{});var u_=m(Va);Uc=r(u_,"Esta \xE9 a pr\xF3pria abordagem do barebone para carregar arquivos: faremos isso com git e git-lfs diretamente. A maior parte da dificuldade \xE9 abstra\xEDda por abordagens anteriores, mas h\xE1 algumas advert\xEAncias com o seguinte m\xE9todo, ent\xE3o seguiremos um caso de uso mais complexo."),u_.forEach(o),ul=p(e),Lo=l(e,"P",{});var hn=m(Lo);Rc=r(hn,"O uso desta classe requer ter git e git-lfs instalados, portanto, certifique-se de ter "),Ht=l(hn,"A",{href:!0,rel:!0});var p_=m(Ht);Vc=r(p_,"git-lfs"),p_.forEach(o),Bc=r(hn," instalado (veja aqui as instru\xE7\xF5es de instala\xE7\xE3o) e configurado antes de come\xE7ar."),hn.forEach(o),pl=p(e),Ba=l(e,"P",{});var f_=m(Ba);Yc=r(f_,"Primeiro comece inicializando o git-lfs:"),f_.forEach(o),fl=p(e),y(Gt.$$.fragment,e),_l=p(e),y(Lt.$$.fragment,e),vl=p(e),Ya=l(e,"P",{});var __=m(Ya);Kc=r(__,"Uma vez feito isso, o primeiro passo \xE9 clonar seu reposit\xF3rio modelo:"),__.forEach(o),hl=p(e),y(Nt.$$.fragment,e),gl=p(e),We=l(e,"P",{});var gr=m(We);Qc=r(gr,"Meu nome de usu\xE1rio \xE9 "),Ps=l(gr,"CODE",{});var v_=m(Ps);Wc=r(v_,"lysandre"),v_.forEach(o),Jc=r(gr," e j\xE1 utilizei o nome modelo "),As=l(gr,"CODE",{});var h_=m(As);Xc=r(h_,"dummy"),h_.forEach(o),Zc=r(gr,", ent\xE3o para mim o comando acaba parecendo o seguinte:"),gr.forEach(o),bl=p(e),y(Ut.$$.fragment,e),$l=p(e),Je=l(e,"P",{});var br=m(Je);eu=r(br,"Agora tenho uma pasta com o nome "),Os=l(br,"EM",{});var g_=m(Os);ou=r(g_,"dummy"),g_.forEach(o),tu=r(br," em meu diret\xF3rio de trabalho. Eu posso "),Ds=l(br,"CODE",{});var b_=m(Ds);au=r(b_,"cd"),b_.forEach(o),ru=r(br," dentro da pasta e dar uma olhada no conte\xFAdo:"),br.forEach(o),El=p(e),y(Rt.$$.fragment,e),kl=p(e),y(Vt.$$.fragment,e),ql=p(e),ue=l(e,"P",{});var eo=m(ue);su=r(eo,"Se voc\xEA acabou de criar seu reposit\xF3rio utilizando o m\xE9todo "),Cs=l(eo,"CODE",{});var $_=m(Cs);iu=r($_,"create_repo"),$_.forEach(o),lu=r(eo," do Hugging Face Hub, esta pasta deve conter apenas um arquivo oculto "),Ms=l(eo,"CODE",{});var E_=m(Ms);nu=r(E_,".gitattributes"),E_.forEach(o),mu=r(eo,". Se voc\xEA seguiu as instru\xE7\xF5es da se\xE7\xE3o anterior para criar um reposit\xF3rio utilizando a interface web, a pasta deve conter um \xFAnico arquivo "),Ss=l(eo,"EM",{});var k_=m(Ss);du=r(k_,"README.md"),k_.forEach(o),cu=r(eo," ao lado do arquivo oculto "),xs=l(eo,"CODE",{});var q_=m(xs);uu=r(q_,".gitattributes"),q_.forEach(o),pu=r(eo,", como mostrado aqui."),eo.forEach(o),zl=p(e),No=l(e,"P",{});var gn=m(No);fu=r(gn,"Adicionar um arquivo de tamanho normal, como um arquivo de configura\xE7\xE3o, um arquivo de vocabul\xE1rio, ou basicamente qualquer arquivo sob alguns megabytes, \xE9 feito exatamente como se faria em qualquer sistema baseado no gitattributes. Entretanto, arquivos maiores devem ser registrados atrav\xE9s do git-lfs a fim de empurr\xE1-los para "),Is=l(gn,"EM",{});var z_=m(Is);_u=r(z_,"huggingface.co"),z_.forEach(o),vu=r(gn,"."),gn.forEach(o),yl=p(e),Ka=l(e,"P",{});var y_=m(Ka);hu=r(y_,"Vamos voltar a Python para gerar um modelo e tokenizer que gostar\xEDamos de comprometer com nosso reposit\xF3rio dummy:"),y_.forEach(o),wl=p(e),De.l(e),Qa=p(e),Uo=l(e,"P",{});var bn=m(Uo);gu=r(bn,"Agora que salvamos alguns artefatos de modelo e tokenizer, vamos dar outra olhada na pasta "),Ts=l(bn,"EM",{});var w_=m(Ts);bu=r(w_,"dummy"),w_.forEach(o),$u=r(bn,":"),bn.forEach(o),jl=p(e),y(Bt.$$.fragment,e),Pl=p(e),Me.l(e),Wa=p(e),y(Ro.$$.fragment,e),Al=p(e),Vo=l(e,"P",{});var $n=m(Vo);Eu=r($n,"Agora podemos ir em frente e proceder como normalmente far\xEDamos com os reposit\xF3rios tradicionais da Git. Podemos adicionar todos os arquivos ao ambiente de encena\xE7\xE3o do Git utilizando o comando "),Fs=l($n,"CODE",{});var j_=m(Fs);ku=r(j_,"git add"),j_.forEach(o),qu=r($n,":"),$n.forEach(o),Ol=p(e),y(Yt.$$.fragment,e),Dl=p(e),Ja=l(e,"P",{});var P_=m(Ja);zu=r(P_,"Podemos, ent\xE3o, dar uma olhada nos arquivos que est\xE3o atualmente em fase de montagem:"),P_.forEach(o),Cl=p(e),y(Kt.$$.fragment,e),Ml=p(e),xe.l(e),Xa=p(e),Bo=l(e,"P",{});var En=m(Bo);yu=r(En,"Da mesma forma, podemos ter certeza de que o git-lfs est\xE1 rastreando os arquivos corretos, utilizando seu comando "),Hs=l(En,"CODE",{});var A_=m(Hs);wu=r(A_,"status"),A_.forEach(o),ju=r(En,":"),En.forEach(o),Sl=p(e),y(Qt.$$.fragment,e),xl=p(e),Te.l(e),Za=p(e),Yo=l(e,"P",{});var kn=m(Yo);Pu=r(kn,"Vamos prosseguir para as etapas finais, comprometendo-nos e empurrando para o reposit\xF3rio remoto "),Gs=l(kn,"EM",{});var O_=m(Gs);Au=r(O_,"huggingface.co"),O_.forEach(o),Ou=r(kn,":"),kn.forEach(o),Il=p(e),y(Wt.$$.fragment,e),Tl=p(e),He.l(e),er=p(e),or=l(e,"P",{});var D_=m(or);Du=r(D_,"O push pode levar um pouco de tempo, dependendo da velocidade de sua conex\xE3o \xE0 Internet e do tamanho de seus arquivos:"),D_.forEach(o),Fl=p(e),y(Jt.$$.fragment,e),Hl=p(e),y(Xt.$$.fragment,e),Gl=p(e),mo.l(e),tr=C_(),this.h()},h(){v(c,"name","hf:doc:metadata"),v(c,"content",JSON.stringify(uv)),v(A,"id","compartilhando-modelos-prtreinados"),v(A,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(A,"href","#compartilhando-modelos-prtreinados"),v(k,"class","relative group"),v(fe,"id","usando-a-apipushtohub"),v(fe,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(fe,"href","#usando-a-apipushtohub"),v(_e,"class","relative group"),v(fa,"href","/course/chapter0"),v(tt,"href","https://huggingface.co/join"),v(tt,"rel","nofollow"),v(lt,"href","https://huggingface.co/user-or-organization/dummy-model"),v(lt,"rel","nofollow"),v(nt,"href","https://huggingface.co/transformers/model_sharing.html"),v(nt,"rel","nofollow"),v(mt,"href","https://github.com/huggingface/huggingface_hub"),v(mt,"rel","nofollow"),v(dt,"href","https://github.com/allenai/allennlp"),v(dt,"rel","nofollow"),v(qo,"id","usando-a-biblioteca-python-huggingfacehub"),v(qo,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(qo,"href","#usando-a-biblioteca-python-huggingfacehub"),v(to,"class","relative group"),v(Po,"id","usando-a-interface-web"),v(Po,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(Po,"href","#usando-a-interface-web"),v(ao,"class","relative group"),v(ht,"href","https://huggingface.co/new"),v(ht,"rel","nofollow"),Le(bt.src,Lu="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/new_model.png")||v(bt,"src",Lu),v(bt,"alt","Page showcasing the model used for the creation of a new model repository."),v(bt,"width","80%"),v(gt,"class","flex justify-center"),Le(Et.src,Nu="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/empty_model.png")||v(Et,"src",Nu),v(Et,"alt","An empty model page after creating a new repository."),v(Et,"width","80%"),v($t,"class","flex justify-center"),Le(qt.src,Uu="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/dummy_model.png")||v(qt,"src",Uu),v(qt,"alt","The README file showing the Markdown capabilities."),v(qt,"width","80%"),v(kt,"class","flex justify-center"),Le(yt.src,Ru="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/files.png")||v(yt,"src",Ru),v(yt,"alt","The 'Files and versions' tab only shows the .gitattributes and README.md files."),v(yt,"width","80%"),v(zt,"class","flex justify-center"),v(Oo,"id","fazendo-upload-dos-arquivos-de-modelos"),v(Oo,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(Oo,"href","#fazendo-upload-dos-arquivos-de-modelos"),v(ro,"class","relative group"),v(jt,"href","https://git-lfs.github.com/"),v(jt,"rel","nofollow"),v(Mo,"id","a-abordagem-uploadfile"),v(Mo,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(Mo,"href","#a-abordagem-uploadfile"),v(so,"class","relative group"),v(Io,"id","a-classe-repository"),v(Io,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(Io,"href","#a-classe-repository"),v(io,"class","relative group"),v(Dt,"href","https://git-lfs.github.com/"),v(Dt,"rel","nofollow"),v(St,"href","https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management"),v(St,"rel","nofollow"),v(Go,"id","a-abordagem-baseada-em-git"),v(Go,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),v(Go,"href","#a-abordagem-baseada-em-git"),v(lo,"class","relative group"),v(Ht,"href","https://git-lfs.github.com/"),v(Ht,"rel","nofollow")},m(e,s){t(document.head,c),n(e,f,s),w(d,e,s),n(e,h,s),n(e,k,s),t(k,A),t(A,I),w(P,I,null),t(k,M),t(k,D),t(D,C),n(e,_,s),Zt[g].m(e,s),n(e,q,s),n(e,F,s),t(F,N),n(e,H,s),w(G,e,s),n(e,V,s),n(e,Q,s),t(Q,oe),n(e,B,s),n(e,te,s),t(te,Ee),n(e,X,s),n(e,U,s),t(U,ae),t(ae,re),t(ae,Y),t(Y,ke),t(U,se),t(U,T),t(T,R),t(T,pe),t(pe,Z),t(U,K),t(U,ie),t(ie,Ne),n(e,qe,s),n(e,le,s),t(le,W),n(e,ee,s),n(e,_e,s),t(_e,fe),t(fe,S),w(L,S,null),t(_e,da),t(_e,oo),t(oo,ca),t(oo,J),t(J,ua),n(e,Zo,s),ea[ne].m(e,s),n(e,ze,s),n(e,ye,s),t(ye,fo),t(ye,_o),t(_o,pa),t(ye,qn),n(e,Ns,s),n(e,ve,s),t(ve,zn),t(ve,$r),t($r,yn),t(ve,wn),t(ve,Er),t(Er,jn),t(ve,Pn),t(ve,fa),t(fa,An),t(ve,On),n(e,Us,s),w(et,e,s),n(e,Rs,s),n(e,_a,s),t(_a,Dn),n(e,Vs,s),w(ot,e,s),n(e,Bs,s),n(e,vo,s),t(vo,Cn),t(vo,tt),t(tt,Mn),t(vo,Sn),n(e,Ys,s),n(e,va,s),t(va,xn),n(e,Ks,s),oa[we].m(e,s),n(e,ha,s),n(e,ho,s),t(ho,In),t(ho,kr),t(kr,Tn),t(ho,Fn),n(e,Qs,s),n(e,ga,s),t(ga,Hn),n(e,Ws,s),ta[Pe].m(e,s),n(e,ba,s),n(e,Ue,s),t(Ue,Gn),t(Ue,qr),t(qr,Ln),t(Ue,Nn),t(Ue,zr),t(zr,Un),t(Ue,Rn),n(e,Js,s),w(at,e,s),n(e,Xs,s),n(e,go,s),t(go,Vn),t(go,yr),t(yr,Bn),t(go,Yn),n(e,Zs,s),w(rt,e,s),n(e,ei,s),n(e,bo,s),t(bo,Kn),t(bo,wr),t(wr,Qn),t(bo,Wn),n(e,oi,s),w(st,e,s),n(e,ti,s),n(e,$o,s),t($o,Jn),t($o,jr),t(jr,Xn),t($o,Zn),n(e,ai,s),w(it,e,s),n(e,ri,s),n(e,Eo,s),t(Eo,em),t(Eo,Pr),t(Pr,lt),t(lt,om),t(Eo,tm),n(e,si,s),n(e,$a,s),t($a,am),n(e,ii,s),no.m(e,s),n(e,Ea,s),w(ko,e,s),n(e,li,s),n(e,Re,s),t(Re,rm),t(Re,Ar),t(Ar,sm),t(Re,im),t(Re,nt),t(nt,lm),t(Re,nm),n(e,ni,s),n(e,he,s),t(he,mm),t(he,Or),t(Or,dm),t(he,cm),t(he,mt),t(mt,Dr),t(Dr,um),t(he,pm),t(he,dt),t(dt,Cr),t(Cr,fm),t(he,_m),n(e,mi,s),n(e,ka,s),t(ka,vm),n(e,di,s),n(e,to,s),t(to,qo),t(qo,Mr),w(ct,Mr,null),t(to,hm),t(to,qa),t(qa,gm),t(qa,Sr),t(Sr,bm),n(e,ci,s),n(e,zo,s),t(zo,$m),t(zo,xr),t(xr,Em),t(zo,km),n(e,ui,s),n(e,ge,s),t(ge,qm),t(ge,Ir),t(Ir,zm),t(ge,ym),t(ge,Tr),t(Tr,wm),t(ge,jm),t(ge,Fr),t(Fr,Pm),t(ge,Am),n(e,pi,s),w(ut,e,s),n(e,fi,s),n(e,yo,s),t(yo,Om),t(yo,Hr),t(Hr,Dm),t(yo,Cm),n(e,_i,s),w(pt,e,s),n(e,vi,s),n(e,wo,s),t(wo,Mm),t(wo,Gr),t(Gr,Sm),t(wo,xm),n(e,hi,s),n(e,jo,s),t(jo,Im),t(jo,Lr),t(Lr,Tm),t(jo,Fm),n(e,gi,s),w(ft,e,s),n(e,bi,s),n(e,Ve,s),t(Ve,Hm),t(Ve,Nr),t(Nr,Gm),t(Ve,Lm),t(Ve,Ur),t(Ur,Nm),t(Ve,Um),n(e,$i,s),w(_t,e,s),n(e,Ei,s),n(e,Be,s),t(Be,Rm),t(Be,Rr),t(Rr,Vm),t(Be,Bm),t(Be,Vr),t(Vr,Ym),t(Be,Km),n(e,ki,s),n(e,Ye,s),t(Ye,za),t(za,Br),t(Br,Qm),t(za,Wm),t(Ye,Jm),t(Ye,ya),t(ya,Yr),t(Yr,Xm),t(ya,Zm),t(Ye,ed),t(Ye,be),t(be,Kr),t(Kr,od),t(be,td),t(be,Qr),t(Qr,ad),t(be,rd),t(be,Wr),t(Wr,sd),t(be,id),t(be,Jr),t(Jr,ld),t(be,nd),n(e,qi,s),n(e,wa,s),t(wa,md),n(e,zi,s),n(e,ao,s),t(ao,Po),t(Po,Xr),w(vt,Xr,null),t(ao,dd),t(ao,Zr),t(Zr,cd),n(e,yi,s),n(e,ja,s),t(ja,ud),n(e,wi,s),n(e,Ao,s),t(Ao,pd),t(Ao,ht),t(ht,fd),t(Ao,_d),n(e,ji,s),n(e,gt,s),t(gt,bt),n(e,Pi,s),n(e,Pa,s),t(Pa,vd),n(e,Ai,s),n(e,Aa,s),t(Aa,hd),n(e,Oi,s),n(e,Oa,s),t(Oa,gd),n(e,Di,s),n(e,$t,s),t($t,Et),n(e,Ci,s),n(e,Da,s),t(Da,bd),n(e,Mi,s),n(e,kt,s),t(kt,qt),n(e,Si,s),n(e,Ca,s),t(Ca,$d),n(e,xi,s),n(e,Ke,s),t(Ke,Ed),t(Ke,es),t(es,kd),t(Ke,qd),t(Ke,os),t(os,zd),t(Ke,yd),n(e,Ii,s),n(e,zt,s),t(zt,yt),n(e,Ti,s),n(e,Ma,s),t(Ma,wd),n(e,Fi,s),n(e,ro,s),t(ro,Oo),t(Oo,ts),w(wt,ts,null),t(ro,jd),t(ro,as),t(as,Pd),n(e,Hi,s),n(e,Do,s),t(Do,Ad),t(Do,jt),t(jt,Od),t(Do,Dd),n(e,Gi,s),n(e,Co,s),t(Co,Cd),t(Co,rs),t(rs,Md),t(Co,Sd),n(e,Li,s),n(e,so,s),t(so,Mo),t(Mo,ss),w(Pt,ss,null),t(so,xd),t(so,Sa),t(Sa,Id),t(Sa,is),t(is,Td),n(e,Ni,s),n(e,So,s),t(So,Fd),t(So,ls),t(ls,Hd),t(So,Gd),n(e,Ui,s),n(e,xa,s),t(xa,Ld),n(e,Ri,s),w(At,e,s),n(e,Vi,s),n(e,de,s),t(de,Nd),t(de,ns),t(ns,Ud),t(de,Rd),t(de,ms),t(ms,Vd),t(de,Bd),t(de,ds),t(ds,Yd),t(de,Kd),t(de,cs),t(cs,Qd),t(de,Wd),n(e,Bi,s),n(e,xo,s),t(xo,Ia),t(Ia,us),t(us,Jd),t(Ia,Xd),t(xo,Zd),t(xo,ce),t(ce,ps),t(ps,ec),t(ce,oc),t(ce,fs),t(fs,tc),t(ce,ac),t(ce,_s),t(_s,rc),t(ce,sc),t(ce,vs),t(vs,ic),t(ce,lc),t(ce,hs),t(hs,nc),t(ce,mc),n(e,Yi,s),n(e,io,s),t(io,Io),t(Io,gs),w(Ot,gs,null),t(io,dc),t(io,Ta),t(Ta,cc),t(Ta,bs),t(bs,uc),n(e,Ki,s),n(e,To,s),t(To,pc),t(To,$s),t($s,fc),t(To,_c),n(e,Qi,s),n(e,Fo,s),t(Fo,vc),t(Fo,Dt),t(Dt,hc),t(Fo,gc),n(e,Wi,s),n(e,Fa,s),t(Fa,bc),n(e,Ji,s),w(Ct,e,s),n(e,Xi,s),n(e,$e,s),t($e,$c),t($e,Es),t(Es,Ec),t($e,kc),t($e,ks),t(ks,qc),t($e,zc),t($e,qs),t(qs,yc),t($e,wc),n(e,Zi,s),n(e,Ha,s),t(Ha,jc),n(e,el,s),w(Mt,e,s),n(e,ol,s),n(e,Qe,s),t(Qe,Pc),t(Qe,zs),t(zs,Ac),t(Qe,Oc),t(Qe,St),t(St,Dc),t(Qe,Cc),n(e,tl,s),n(e,Ga,s),t(Ga,Mc),n(e,al,s),n(e,La,s),t(La,Sc),n(e,rl,s),w(xt,e,s),n(e,sl,s),n(e,Na,s),t(Na,xc),n(e,il,s),w(It,e,s),n(e,ll,s),n(e,Ho,s),t(Ho,Ic),t(Ho,ys),t(ys,Tc),t(Ho,Fc),n(e,nl,s),w(Tt,e,s),n(e,ml,s),n(e,Ua,s),t(Ua,Hc),n(e,dl,s),n(e,lo,s),t(lo,Go),t(Go,ws),w(Ft,ws,null),t(lo,Gc),t(lo,Ra),t(Ra,Lc),t(Ra,js),t(js,Nc),n(e,cl,s),n(e,Va,s),t(Va,Uc),n(e,ul,s),n(e,Lo,s),t(Lo,Rc),t(Lo,Ht),t(Ht,Vc),t(Lo,Bc),n(e,pl,s),n(e,Ba,s),t(Ba,Yc),n(e,fl,s),w(Gt,e,s),n(e,_l,s),w(Lt,e,s),n(e,vl,s),n(e,Ya,s),t(Ya,Kc),n(e,hl,s),w(Nt,e,s),n(e,gl,s),n(e,We,s),t(We,Qc),t(We,Ps),t(Ps,Wc),t(We,Jc),t(We,As),t(As,Xc),t(We,Zc),n(e,bl,s),w(Ut,e,s),n(e,$l,s),n(e,Je,s),t(Je,eu),t(Je,Os),t(Os,ou),t(Je,tu),t(Je,Ds),t(Ds,au),t(Je,ru),n(e,El,s),w(Rt,e,s),n(e,kl,s),w(Vt,e,s),n(e,ql,s),n(e,ue,s),t(ue,su),t(ue,Cs),t(Cs,iu),t(ue,lu),t(ue,Ms),t(Ms,nu),t(ue,mu),t(ue,Ss),t(Ss,du),t(ue,cu),t(ue,xs),t(xs,uu),t(ue,pu),n(e,zl,s),n(e,No,s),t(No,fu),t(No,Is),t(Is,_u),t(No,vu),n(e,yl,s),n(e,Ka,s),t(Ka,hu),n(e,wl,s),aa[Oe].m(e,s),n(e,Qa,s),n(e,Uo,s),t(Uo,gu),t(Uo,Ts),t(Ts,bu),t(Uo,$u),n(e,jl,s),w(Bt,e,s),n(e,Pl,s),ra[Ce].m(e,s),n(e,Wa,s),w(Ro,e,s),n(e,Al,s),n(e,Vo,s),t(Vo,Eu),t(Vo,Fs),t(Fs,ku),t(Vo,qu),n(e,Ol,s),w(Yt,e,s),n(e,Dl,s),n(e,Ja,s),t(Ja,zu),n(e,Cl,s),w(Kt,e,s),n(e,Ml,s),sa[Se].m(e,s),n(e,Xa,s),n(e,Bo,s),t(Bo,yu),t(Bo,Hs),t(Hs,wu),t(Bo,ju),n(e,Sl,s),w(Qt,e,s),n(e,xl,s),ia[Ie].m(e,s),n(e,Za,s),n(e,Yo,s),t(Yo,Pu),t(Yo,Gs),t(Gs,Au),t(Yo,Ou),n(e,Il,s),w(Wt,e,s),n(e,Tl,s),la[Fe].m(e,s),n(e,er,s),n(e,or,s),t(or,Du),n(e,Fl,s),w(Jt,e,s),n(e,Hl,s),w(Xt,e,s),n(e,Gl,s),mo.m(e,s),n(e,tr,s),Ll=!0},p(e,[s]){const na={};s&1&&(na.fw=e[0]),d.$set(na);let ar=g;g=Bu(e),g!==ar&&(po(),b(Zt[ar],1,1,()=>{Zt[ar]=null}),uo(),E=Zt[g],E||(E=Zt[g]=Vu[g](e),E.c()),$(E,1),E.m(q.parentNode,q));let rr=ne;ne=Ku(e),ne!==rr&&(po(),b(ea[rr],1,1,()=>{ea[rr]=null}),uo(),me=ea[ne],me||(me=ea[ne]=Yu[ne](e),me.c()),$(me,1),me.m(ze.parentNode,ze));let sr=we;we=Wu(e),we!==sr&&(po(),b(oa[sr],1,1,()=>{oa[sr]=null}),uo(),je=oa[we],je||(je=oa[we]=Qu[we](e),je.c()),$(je,1),je.m(ha.parentNode,ha));let ir=Pe;Pe=Xu(e),Pe!==ir&&(po(),b(ta[ir],1,1,()=>{ta[ir]=null}),uo(),Ae=ta[Pe],Ae||(Ae=ta[Pe]=Ju[Pe](e),Ae.c()),$(Ae,1),Ae.m(ba.parentNode,ba)),Nl!==(Nl=Zu(e))&&(no.d(1),no=Nl(e),no&&(no.c(),no.m(Ea.parentNode,Ea)));const Ls={};s&2&&(Ls.$$scope={dirty:s,ctx:e}),ko.$set(Ls);let lr=Oe;Oe=op(e),Oe!==lr&&(po(),b(aa[lr],1,1,()=>{aa[lr]=null}),uo(),De=aa[Oe],De||(De=aa[Oe]=ep[Oe](e),De.c()),$(De,1),De.m(Qa.parentNode,Qa));let Xe=Ce;Ce=ap(e),Ce!==Xe&&(po(),b(ra[Xe],1,1,()=>{ra[Xe]=null}),uo(),Me=ra[Ce],Me||(Me=ra[Ce]=tp[Ce](e),Me.c()),$(Me,1),Me.m(Wa.parentNode,Wa));const nr={};s&2&&(nr.$$scope={dirty:s,ctx:e}),Ro.$set(nr);let mr=Se;Se=sp(e),Se!==mr&&(po(),b(sa[mr],1,1,()=>{sa[mr]=null}),uo(),xe=sa[Se],xe||(xe=sa[Se]=rp[Se](e),xe.c()),$(xe,1),xe.m(Xa.parentNode,Xa));let ma=Ie;Ie=lp(e),Ie!==ma&&(po(),b(ia[ma],1,1,()=>{ia[ma]=null}),uo(),Te=ia[Ie],Te||(Te=ia[Ie]=ip[Ie](e),Te.c()),$(Te,1),Te.m(Za.parentNode,Za));let dr=Fe;Fe=mp(e),Fe!==dr&&(po(),b(la[dr],1,1,()=>{la[dr]=null}),uo(),He=la[Fe],He||(He=la[Fe]=np[Fe](e),He.c()),$(He,1),He.m(er.parentNode,er)),Ul!==(Ul=dp(e))&&(mo.d(1),mo=Ul(e),mo&&(mo.c(),mo.m(tr.parentNode,tr)))},i(e){Ll||($(d.$$.fragment,e),$(P.$$.fragment,e),$(E),$(G.$$.fragment,e),$(L.$$.fragment,e),$(me),$(et.$$.fragment,e),$(ot.$$.fragment,e),$(je),$(Ae),$(at.$$.fragment,e),$(rt.$$.fragment,e),$(st.$$.fragment,e),$(it.$$.fragment,e),$(ko.$$.fragment,e),$(ct.$$.fragment,e),$(ut.$$.fragment,e),$(pt.$$.fragment,e),$(ft.$$.fragment,e),$(_t.$$.fragment,e),$(vt.$$.fragment,e),$(wt.$$.fragment,e),$(Pt.$$.fragment,e),$(At.$$.fragment,e),$(Ot.$$.fragment,e),$(Ct.$$.fragment,e),$(Mt.$$.fragment,e),$(xt.$$.fragment,e),$(It.$$.fragment,e),$(Tt.$$.fragment,e),$(Ft.$$.fragment,e),$(Gt.$$.fragment,e),$(Lt.$$.fragment,e),$(Nt.$$.fragment,e),$(Ut.$$.fragment,e),$(Rt.$$.fragment,e),$(Vt.$$.fragment,e),$(De),$(Bt.$$.fragment,e),$(Me),$(Ro.$$.fragment,e),$(Yt.$$.fragment,e),$(Kt.$$.fragment,e),$(xe),$(Qt.$$.fragment,e),$(Te),$(Wt.$$.fragment,e),$(He),$(Jt.$$.fragment,e),$(Xt.$$.fragment,e),Ll=!0)},o(e){b(d.$$.fragment,e),b(P.$$.fragment,e),b(E),b(G.$$.fragment,e),b(L.$$.fragment,e),b(me),b(et.$$.fragment,e),b(ot.$$.fragment,e),b(je),b(Ae),b(at.$$.fragment,e),b(rt.$$.fragment,e),b(st.$$.fragment,e),b(it.$$.fragment,e),b(ko.$$.fragment,e),b(ct.$$.fragment,e),b(ut.$$.fragment,e),b(pt.$$.fragment,e),b(ft.$$.fragment,e),b(_t.$$.fragment,e),b(vt.$$.fragment,e),b(wt.$$.fragment,e),b(Pt.$$.fragment,e),b(At.$$.fragment,e),b(Ot.$$.fragment,e),b(Ct.$$.fragment,e),b(Mt.$$.fragment,e),b(xt.$$.fragment,e),b(It.$$.fragment,e),b(Tt.$$.fragment,e),b(Ft.$$.fragment,e),b(Gt.$$.fragment,e),b(Lt.$$.fragment,e),b(Nt.$$.fragment,e),b(Ut.$$.fragment,e),b(Rt.$$.fragment,e),b(Vt.$$.fragment,e),b(De),b(Bt.$$.fragment,e),b(Me),b(Ro.$$.fragment,e),b(Yt.$$.fragment,e),b(Kt.$$.fragment,e),b(xe),b(Qt.$$.fragment,e),b(Te),b(Wt.$$.fragment,e),b(He),b(Jt.$$.fragment,e),b(Xt.$$.fragment,e),Ll=!1},d(e){o(c),e&&o(f),j(d,e),e&&o(h),e&&o(k),j(P),e&&o(_),Zt[g].d(e),e&&o(q),e&&o(F),e&&o(H),j(G,e),e&&o(V),e&&o(Q),e&&o(B),e&&o(te),e&&o(X),e&&o(U),e&&o(qe),e&&o(le),e&&o(ee),e&&o(_e),j(L),e&&o(Zo),ea[ne].d(e),e&&o(ze),e&&o(ye),e&&o(Ns),e&&o(ve),e&&o(Us),j(et,e),e&&o(Rs),e&&o(_a),e&&o(Vs),j(ot,e),e&&o(Bs),e&&o(vo),e&&o(Ys),e&&o(va),e&&o(Ks),oa[we].d(e),e&&o(ha),e&&o(ho),e&&o(Qs),e&&o(ga),e&&o(Ws),ta[Pe].d(e),e&&o(ba),e&&o(Ue),e&&o(Js),j(at,e),e&&o(Xs),e&&o(go),e&&o(Zs),j(rt,e),e&&o(ei),e&&o(bo),e&&o(oi),j(st,e),e&&o(ti),e&&o($o),e&&o(ai),j(it,e),e&&o(ri),e&&o(Eo),e&&o(si),e&&o($a),e&&o(ii),no.d(e),e&&o(Ea),j(ko,e),e&&o(li),e&&o(Re),e&&o(ni),e&&o(he),e&&o(mi),e&&o(ka),e&&o(di),e&&o(to),j(ct),e&&o(ci),e&&o(zo),e&&o(ui),e&&o(ge),e&&o(pi),j(ut,e),e&&o(fi),e&&o(yo),e&&o(_i),j(pt,e),e&&o(vi),e&&o(wo),e&&o(hi),e&&o(jo),e&&o(gi),j(ft,e),e&&o(bi),e&&o(Ve),e&&o($i),j(_t,e),e&&o(Ei),e&&o(Be),e&&o(ki),e&&o(Ye),e&&o(qi),e&&o(wa),e&&o(zi),e&&o(ao),j(vt),e&&o(yi),e&&o(ja),e&&o(wi),e&&o(Ao),e&&o(ji),e&&o(gt),e&&o(Pi),e&&o(Pa),e&&o(Ai),e&&o(Aa),e&&o(Oi),e&&o(Oa),e&&o(Di),e&&o($t),e&&o(Ci),e&&o(Da),e&&o(Mi),e&&o(kt),e&&o(Si),e&&o(Ca),e&&o(xi),e&&o(Ke),e&&o(Ii),e&&o(zt),e&&o(Ti),e&&o(Ma),e&&o(Fi),e&&o(ro),j(wt),e&&o(Hi),e&&o(Do),e&&o(Gi),e&&o(Co),e&&o(Li),e&&o(so),j(Pt),e&&o(Ni),e&&o(So),e&&o(Ui),e&&o(xa),e&&o(Ri),j(At,e),e&&o(Vi),e&&o(de),e&&o(Bi),e&&o(xo),e&&o(Yi),e&&o(io),j(Ot),e&&o(Ki),e&&o(To),e&&o(Qi),e&&o(Fo),e&&o(Wi),e&&o(Fa),e&&o(Ji),j(Ct,e),e&&o(Xi),e&&o($e),e&&o(Zi),e&&o(Ha),e&&o(el),j(Mt,e),e&&o(ol),e&&o(Qe),e&&o(tl),e&&o(Ga),e&&o(al),e&&o(La),e&&o(rl),j(xt,e),e&&o(sl),e&&o(Na),e&&o(il),j(It,e),e&&o(ll),e&&o(Ho),e&&o(nl),j(Tt,e),e&&o(ml),e&&o(Ua),e&&o(dl),e&&o(lo),j(Ft),e&&o(cl),e&&o(Va),e&&o(ul),e&&o(Lo),e&&o(pl),e&&o(Ba),e&&o(fl),j(Gt,e),e&&o(_l),j(Lt,e),e&&o(vl),e&&o(Ya),e&&o(hl),j(Nt,e),e&&o(gl),e&&o(We),e&&o(bl),j(Ut,e),e&&o($l),e&&o(Je),e&&o(El),j(Rt,e),e&&o(kl),j(Vt,e),e&&o(ql),e&&o(ue),e&&o(zl),e&&o(No),e&&o(yl),e&&o(Ka),e&&o(wl),aa[Oe].d(e),e&&o(Qa),e&&o(Uo),e&&o(jl),j(Bt,e),e&&o(Pl),ra[Ce].d(e),e&&o(Wa),j(Ro,e),e&&o(Al),e&&o(Vo),e&&o(Ol),j(Yt,e),e&&o(Dl),e&&o(Ja),e&&o(Cl),j(Kt,e),e&&o(Ml),sa[Se].d(e),e&&o(Xa),e&&o(Bo),e&&o(Sl),j(Qt,e),e&&o(xl),ia[Ie].d(e),e&&o(Za),e&&o(Yo),e&&o(Il),j(Wt,e),e&&o(Tl),la[Fe].d(e),e&&o(er),e&&o(or),e&&o(Fl),j(Jt,e),e&&o(Hl),j(Xt,e),e&&o(Gl),mo.d(e),e&&o(tr)}}}const uv={local:"compartilhando-modelos-prtreinados",sections:[{local:"usando-a-apipushtohub",title:"Usando a API`push_to_hub`"},{local:"usando-a-biblioteca-python-huggingfacehub",title:"Usando a biblioteca Python `huggingface_hub`"},{local:"usando-a-interface-web",title:"Usando a interface web "},{local:"fazendo-upload-dos-arquivos-de-modelos",sections:[{local:"a-abordagem-uploadfile",title:"A abordagem: `upload_file`"},{local:"a-classe-repository",title:"A classe: `Repository`"},{local:"a-abordagem-baseada-em-git",title:"A abordagem: `baseada em git`"}],title:"Fazendo upload dos arquivos de modelos"}],title:"Compartilhando modelos pr\xE9-treinados"};function pv(O,c,f){let d="pt";return H_(()=>{const h=new URLSearchParams(window.location.search);f(0,d=h.get("fw")||"pt")}),[d]}class Ev extends x_{constructor(c){super();I_(this,c,pv,cv,T_,{})}}export{Ev as default,uv as metadata};
