import{S as L_,i as S_,s as H_,e as a,k as d,w as y,t,l as I_,M as G_,c as s,d as i,m as f,x as w,a as c,h as l,b as g,N as Ne,G as o,g as n,y as P,o as b,p as ui,q as $,B as j,v as N_,n as di}from"../../chunks/vendor-hf-doc-builder.js";import{T as F_}from"../../chunks/Tip-hf-doc-builder.js";import{Y as Nd}from"../../chunks/Youtube-hf-doc-builder.js";import{I as Ki}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as F}from"../../chunks/CodeBlock-hf-doc-builder.js";import{C as T_}from"../../chunks/CourseFloatingBanner-hf-doc-builder.js";import{F as R_}from"../../chunks/FrameworkSwitchCourse-hf-doc-builder.js";import"../../chunks/DocNotebookDropdown-hf-doc-builder.js";function U_(C){let u,m;return u=new T_({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/it/chapter4/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/it/chapter4/section3_tf.ipynb"}]}}),{c(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function Q_(C){let u,m;return u=new T_({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/it/chapter4/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/it/chapter4/section3_pt.ipynb"}]}}),{c(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function x_(C){let u,m;return u=new Nd({props:{id:"pUh5cGmNV8Y"}}),{c(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function V_(C){let u,m;return u=new Nd({props:{id:"Zh0FfmVrKX0"}}),{c(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function B_(C){let u,m,p,h,k,A,T,q,M,D,O,_,v,z,E,L,N,H,G,x,W,ie,V,oe,be,Z,Q,ee,te,Y,$e,le;return D=new F({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(){u=a("p"),m=t("Se si sta addestrando il modello con Keras, il modo pi\xF9 semplice per caricarlo sull\u2019Hub \xE8 passare come parametro una funzione "),p=a("code"),h=t("PushToHubCallback"),k=t(" quando si invoca la funzione "),A=a("code"),T=t("model.fit()"),q=t(":"),M=d(),y(D.$$.fragment),O=d(),_=a("p"),v=t("Dovrete poi impostare il parametro "),z=a("code"),E=t("callbacks=[callback]"),L=t(" nella invocazione della funzione "),N=a("code"),H=t("model.fit()"),G=t(". Questa funzione callback caricher\xE0 il modello sull\u2019Hub ad ogni salvataggio (nell\u2019esempio dopo ogni epoca) all\u2019interno di un repository nel vostro namespace. Il repository avr\xE0 come nome la stessa stringa che avete scelto come nome per la cartella di output (qui "),x=a("code"),W=t("bert-finetuned-mrpc"),ie=t("), ma \xE8 possibile scegliere un nome diverso impostando il parametro "),V=a("code"),oe=t('hub_model_id = "un_nome_diverso"'),be=t("."),Z=d(),Q=a("p"),ee=t("Volendo caricare il modello nello spazio di una organizzazione di cui si \xE8 membri, sar\xE0 sufficiente impstare il parametro "),te=a("code"),Y=t('hub_model_id = "nome_organizzazione/nome_repository"'),$e=t(".")},l(S){u=s(S,"P",{});var U=c(u);m=l(U,"Se si sta addestrando il modello con Keras, il modo pi\xF9 semplice per caricarlo sull\u2019Hub \xE8 passare come parametro una funzione "),p=s(U,"CODE",{});var ze=c(p);h=l(ze,"PushToHubCallback"),ze.forEach(i),k=l(U," quando si invoca la funzione "),A=s(U,"CODE",{});var J=c(A);T=l(J,"model.fit()"),J.forEach(i),q=l(U,":"),U.forEach(i),M=f(S),w(D.$$.fragment,S),O=f(S),_=s(S,"P",{});var K=c(_);v=l(K,"Dovrete poi impostare il parametro "),z=s(K,"CODE",{});var fe=c(z);E=l(fe,"callbacks=[callback]"),fe.forEach(i),L=l(K," nella invocazione della funzione "),N=s(K,"CODE",{});var me=c(N);H=l(me,"model.fit()"),me.forEach(i),G=l(K,". Questa funzione callback caricher\xE0 il modello sull\u2019Hub ad ogni salvataggio (nell\u2019esempio dopo ogni epoca) all\u2019interno di un repository nel vostro namespace. Il repository avr\xE0 come nome la stessa stringa che avete scelto come nome per la cartella di output (qui "),x=s(K,"CODE",{});var Re=c(x);W=l(Re,"bert-finetuned-mrpc"),Re.forEach(i),ie=l(K,"), ma \xE8 possibile scegliere un nome diverso impostando il parametro "),V=s(K,"CODE",{});var _e=c(V);oe=l(_e,'hub_model_id = "un_nome_diverso"'),_e.forEach(i),be=l(K,"."),K.forEach(i),Z=f(S),Q=s(S,"P",{});var B=c(Q);ee=l(B,"Volendo caricare il modello nello spazio di una organizzazione di cui si \xE8 membri, sar\xE0 sufficiente impstare il parametro "),te=s(B,"CODE",{});var re=c(te);Y=l(re,'hub_model_id = "nome_organizzazione/nome_repository"'),re.forEach(i),$e=l(B,"."),B.forEach(i)},m(S,U){n(S,u,U),o(u,m),o(u,p),o(p,h),o(u,k),o(u,A),o(A,T),o(u,q),n(S,M,U),P(D,S,U),n(S,O,U),n(S,_,U),o(_,v),o(_,z),o(z,E),o(_,L),o(_,N),o(N,H),o(_,G),o(_,x),o(x,W),o(_,ie),o(_,V),o(V,oe),o(_,be),n(S,Z,U),n(S,Q,U),o(Q,ee),o(Q,te),o(te,Y),o(Q,$e),le=!0},i(S){le||($(D.$$.fragment,S),le=!0)},o(S){b(D.$$.fragment,S),le=!1},d(S){S&&i(u),S&&i(M),j(D,S),S&&i(O),S&&i(_),S&&i(Z),S&&i(Q)}}}function Y_(C){let u,m,p,h,k,A,T,q,M,D,O,_,v,z,E,L,N,H,G,x,W,ie,V,oe,be,Z,Q,ee,te,Y,$e,le,S,U,ze,J,K,fe,me,Re,_e,B,re,Wi,ae;return v=new F({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(){u=a("p"),m=t("Se avete usato la API "),p=a("code"),h=t("Trainer"),k=t(" per addestrare un modello, il modo pi\xF9 semplice per caricarlo sull\u2019Hub \xE8 impostare il parametro "),A=a("code"),T=t("push_to_hub=True"),q=t(" quando definite i "),M=a("code"),D=t("TrainingArguments"),O=t(" (parametri di addestramento):"),_=d(),y(v.$$.fragment),z=d(),E=a("p"),L=t("Invocando la funzione "),N=a("code"),H=t("trainer.train()"),G=t(", l\u2019oggetto "),x=a("code"),W=t("Trainer"),ie=t(" caricher\xE0 il modello sull\u2019Hub ad ogni salvataggio (nell\u2019esempio dopo ogni epoca) all\u2019interno di un repository nel vostro namespace. Il repository avr\xE0 come nome la stessa stringa che avete scelto come nome per la cartella di output (qui "),V=a("code"),oe=t("bert-finetuned-mrpc"),be=t("), ma \xE8 possibile scegliere un nome diverso impostando il parametro "),Z=a("code"),Q=t('hub_model_id = "un_nome_diverso"'),ee=t("."),te=d(),Y=a("p"),$e=t("Volendo caricare il modello nello spazio di una organizzazione di cui si \xE8 membri, sar\xE0 sufficiente impstare il parametro "),le=a("code"),S=t('hub_model_id = "nome_organizzazione/nome_repository"'),U=t("."),ze=d(),J=a("p"),K=t("Alla fine dell\u2019addestramento, sar\xE0 necessario invocare per l\u2019ultima volta la funzione "),fe=a("code"),me=t("trainer.push_to_hub()"),Re=t(" per caricare la versione definitiva del modello. Questa azione generer\xE0 automaticamente anche un cartellino del modello, con tutti i metadati rilevanti, riportando anche gli iper-parametri utilizzati e i risultati della valutazione finale. Questo \xE8 un esempio del contenuto di uno di questi cartellini:"),_e=d(),B=a("div"),re=a("img"),this.h()},l(I){u=s(I,"P",{});var R=c(u);m=l(R,"Se avete usato la API "),p=s(R,"CODE",{});var Ue=c(p);h=l(Ue,"Trainer"),Ue.forEach(i),k=l(R," per addestrare un modello, il modo pi\xF9 semplice per caricarlo sull\u2019Hub \xE8 impostare il parametro "),A=s(R,"CODE",{});var ut=c(A);T=l(ut,"push_to_hub=True"),ut.forEach(i),q=l(R," quando definite i "),M=s(R,"CODE",{});var Qe=c(M);D=l(Qe,"TrainingArguments"),Qe.forEach(i),O=l(R," (parametri di addestramento):"),R.forEach(i),_=f(I),w(v.$$.fragment,I),z=f(I),E=s(I,"P",{});var se=c(E);L=l(se,"Invocando la funzione "),N=s(se,"CODE",{});var fi=c(N);H=l(fi,"trainer.train()"),fi.forEach(i),G=l(se,", l\u2019oggetto "),x=s(se,"CODE",{});var dt=c(x);W=l(dt,"Trainer"),dt.forEach(i),ie=l(se," caricher\xE0 il modello sull\u2019Hub ad ogni salvataggio (nell\u2019esempio dopo ogni epoca) all\u2019interno di un repository nel vostro namespace. Il repository avr\xE0 come nome la stessa stringa che avete scelto come nome per la cartella di output (qui "),V=s(se,"CODE",{});var ft=c(V);oe=l(ft,"bert-finetuned-mrpc"),ft.forEach(i),be=l(se,"), ma \xE8 possibile scegliere un nome diverso impostando il parametro "),Z=s(se,"CODE",{});var Ji=c(Z);Q=l(Ji,'hub_model_id = "un_nome_diverso"'),Ji.forEach(i),ee=l(se,"."),se.forEach(i),te=f(I),Y=s(I,"P",{});var X=c(Y);$e=l(X,"Volendo caricare il modello nello spazio di una organizzazione di cui si \xE8 membri, sar\xE0 sufficiente impstare il parametro "),le=s(X,"CODE",{});var ne=c(le);S=l(ne,'hub_model_id = "nome_organizzazione/nome_repository"'),ne.forEach(i),U=l(X,"."),X.forEach(i),ze=f(I),J=s(I,"P",{});var ke=c(J);K=l(ke,"Alla fine dell\u2019addestramento, sar\xE0 necessario invocare per l\u2019ultima volta la funzione "),fe=s(ke,"CODE",{});var Ee=c(fe);me=l(Ee,"trainer.push_to_hub()"),Ee.forEach(i),Re=l(ke," per caricare la versione definitiva del modello. Questa azione generer\xE0 automaticamente anche un cartellino del modello, con tutti i metadati rilevanti, riportando anche gli iper-parametri utilizzati e i risultati della valutazione finale. Questo \xE8 un esempio del contenuto di uno di questi cartellini:"),ke.forEach(i),_e=f(I),B=s(I,"DIV",{class:!0});var mt=c(B);re=s(mt,"IMG",{src:!0,alt:!0,width:!0}),mt.forEach(i),this.h()},h(){Ne(re.src,Wi="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/model_card.png")||g(re,"src",Wi),g(re,"alt","An example of an auto-generated model card."),g(re,"width","100%"),g(B,"class","flex justify-center")},m(I,R){n(I,u,R),o(u,m),o(u,p),o(p,h),o(u,k),o(u,A),o(A,T),o(u,q),o(u,M),o(M,D),o(u,O),n(I,_,R),P(v,I,R),n(I,z,R),n(I,E,R),o(E,L),o(E,N),o(N,H),o(E,G),o(E,x),o(x,W),o(E,ie),o(E,V),o(V,oe),o(E,be),o(E,Z),o(Z,Q),o(E,ee),n(I,te,R),n(I,Y,R),o(Y,$e),o(Y,le),o(le,S),o(Y,U),n(I,ze,R),n(I,J,R),o(J,K),o(J,fe),o(fe,me),o(J,Re),n(I,_e,R),n(I,B,R),o(B,re),ae=!0},i(I){ae||($(v.$$.fragment,I),ae=!0)},o(I){b(v.$$.fragment,I),ae=!1},d(I){I&&i(u),I&&i(_),j(v,I),I&&i(z),I&&i(E),I&&i(te),I&&i(Y),I&&i(ze),I&&i(J),I&&i(_e),I&&i(B)}}}function K_(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function W_(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function J_(C){let u,m,p;return{c(){u=a("div"),m=a("img"),this.h()},l(h){u=s(h,"DIV",{class:!0});var k=c(u);m=s(k,"IMG",{src:!0,alt:!0,width:!0}),k.forEach(i),this.h()},h(){Ne(m.src,p="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model_tf.png")||g(m,"src",p),g(m,"alt","Dummy model containing both the tokenizer and model files."),g(m,"width","80%"),g(u,"class","flex justify-center")},m(h,k){n(h,u,k),o(u,m)},d(h){h&&i(u)}}}function X_(C){let u,m,p;return{c(){u=a("div"),m=a("img"),this.h()},l(h){u=s(h,"DIV",{class:!0});var k=c(u);m=s(k,"IMG",{src:!0,alt:!0,width:!0}),k.forEach(i),this.h()},h(){Ne(m.src,p="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model.png")||g(m,"src",p),g(m,"alt","Dummy model containing both the tokenizer and model files."),g(m,"width","80%"),g(u,"class","flex justify-center")},m(h,k){n(h,u,k),o(u,m)},d(h){h&&i(u)}}}function Z_(C){let u,m,p,h,k,A,T,q,M,D,O;return{c(){u=a("p"),m=t("\u270F\uFE0F "),p=a("strong"),h=t("Prova tu!"),k=t(" Prendi il modello e il tokenizer associati con il cehckpoint "),A=a("code"),T=t("bert-base-cased"),q=t(" e caricali in un repository nel tuo namespace usando il metodo "),M=a("code"),D=t("push_to_hub()"),O=t(". Verifica che il repository appaia correttamente sulla tua pagina prima di cancellarlo.")},l(_){u=s(_,"P",{});var v=c(u);m=l(v,"\u270F\uFE0F "),p=s(v,"STRONG",{});var z=c(p);h=l(z,"Prova tu!"),z.forEach(i),k=l(v," Prendi il modello e il tokenizer associati con il cehckpoint "),A=s(v,"CODE",{});var E=c(A);T=l(E,"bert-base-cased"),E.forEach(i),q=l(v," e caricali in un repository nel tuo namespace usando il metodo "),M=s(v,"CODE",{});var L=c(M);D=l(L,"push_to_hub()"),L.forEach(i),O=l(v,". Verifica che il repository appaia correttamente sulla tua pagina prima di cancellarlo."),v.forEach(i)},m(_,v){n(_,u,v),o(u,m),o(u,p),o(p,h),o(u,k),o(u,A),o(A,T),o(u,q),o(u,M),o(M,D),o(u,O)},d(_){_&&i(u)}}}function eg(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function ig(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function og(C){let u,m,p,h,k,A,T,q,M,D,O;return u=new F({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(){y(u.$$.fragment),m=d(),p=a("p"),h=t("Guardando le dimensioni dei file (ad esempio con "),k=a("code"),A=t("ls -lh"),T=t("), possiamo vedere che il file contenente lo stato del modello (model state dict file) ("),q=a("em"),M=t("t5_model.h5"),D=t(") \xE8 l\u2019unico file anomalo, occupando pi\xF9 di 400 MB.")},l(_){w(u.$$.fragment,_),m=f(_),p=s(_,"P",{});var v=c(p);h=l(v,"Guardando le dimensioni dei file (ad esempio con "),k=s(v,"CODE",{});var z=c(k);A=l(z,"ls -lh"),z.forEach(i),T=l(v,"), possiamo vedere che il file contenente lo stato del modello (model state dict file) ("),q=s(v,"EM",{});var E=c(q);M=l(E,"t5_model.h5"),E.forEach(i),D=l(v,") \xE8 l\u2019unico file anomalo, occupando pi\xF9 di 400 MB."),v.forEach(i)},m(_,v){P(u,_,v),n(_,m,v),n(_,p,v),o(p,h),o(p,k),o(k,A),o(p,T),o(p,q),o(q,M),o(p,D),O=!0},i(_){O||($(u.$$.fragment,_),O=!0)},o(_){b(u.$$.fragment,_),O=!1},d(_){j(u,_),_&&i(m),_&&i(p)}}}function tg(C){let u,m,p,h,k,A,T,q,M,D,O;return u=new F({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(){y(u.$$.fragment),m=d(),p=a("p"),h=t("Guardando le dimensioni dei file (ad esempio con "),k=a("code"),A=t("ls -lh"),T=t("), possiamo vedere che il file contenente lo stato del modello (model state dict file) ("),q=a("em"),M=t("pytorch_model.bin"),D=t(") \xE8 l\u2019unico file anomalo, occupando pi\xF9 di 400 MB.")},l(_){w(u.$$.fragment,_),m=f(_),p=s(_,"P",{});var v=c(p);h=l(v,"Guardando le dimensioni dei file (ad esempio con "),k=s(v,"CODE",{});var z=c(k);A=l(z,"ls -lh"),z.forEach(i),T=l(v,"), possiamo vedere che il file contenente lo stato del modello (model state dict file) ("),q=s(v,"EM",{});var E=c(q);M=l(E,"pytorch_model.bin"),E.forEach(i),D=l(v,") \xE8 l\u2019unico file anomalo, occupando pi\xF9 di 400 MB."),v.forEach(i)},m(_,v){P(u,_,v),n(_,m,v),n(_,p,v),o(p,h),o(p,k),o(k,A),o(p,T),o(p,q),o(q,M),o(p,D),O=!0},i(_){O||($(u.$$.fragment,_),O=!0)},o(_){b(u.$$.fragment,_),O=!1},d(_){j(u,_),_&&i(m),_&&i(p)}}}function lg(C){let u;return{c(){u=t(`\u270F\uFE0F When creating the repository from the web interface, the *.gitattributes* file is automatically set up to consider files with certain extensions, such as *.bin* and *.h5*, as large files, and git-lfs will track them with no necessary setup on your side.
\u270F\uFE0F Creando il reposiotry dall'interfaccia web, il file *.gitattributes*  viene automaticamente configurato per considerare file con alcune estensioni, come *.bin* e *.h5*, come file grandi, e git-lfs li traccer\xE0 senza necessit\xE0 di configurazione da parte dell'utente.`)},l(m){u=l(m,`\u270F\uFE0F When creating the repository from the web interface, the *.gitattributes* file is automatically set up to consider files with certain extensions, such as *.bin* and *.h5*, as large files, and git-lfs will track them with no necessary setup on your side.
\u270F\uFE0F Creando il reposiotry dall'interfaccia web, il file *.gitattributes*  viene automaticamente configurato per considerare file con alcune estensioni, come *.bin* e *.h5*, come file grandi, e git-lfs li traccer\xE0 senza necessit\xE0 di configurazione da parte dell'utente.`)},m(m,p){n(m,u,p)},d(m){m&&i(u)}}}function rg(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function ag(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function sg(C){let u,m,p,h,k,A,T,q,M,D,O,_,v,z;return u=new F({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(){y(u.$$.fragment),m=d(),p=a("p"),h=t("Possiamo notare che tutti i file hanno "),k=a("code"),A=t("Git"),T=t(" come gestore (handler), ad eccezione di "),q=a("em"),M=t("t5_model.h5"),D=t(", che invece ha "),O=a("code"),_=t("LFS"),v=t(". Perfetto!")},l(E){w(u.$$.fragment,E),m=f(E),p=s(E,"P",{});var L=c(p);h=l(L,"Possiamo notare che tutti i file hanno "),k=s(L,"CODE",{});var N=c(k);A=l(N,"Git"),N.forEach(i),T=l(L," come gestore (handler), ad eccezione di "),q=s(L,"EM",{});var H=c(q);M=l(H,"t5_model.h5"),H.forEach(i),D=l(L,", che invece ha "),O=s(L,"CODE",{});var G=c(O);_=l(G,"LFS"),G.forEach(i),v=l(L,". Perfetto!"),L.forEach(i)},m(E,L){P(u,E,L),n(E,m,L),n(E,p,L),o(p,h),o(p,k),o(k,A),o(p,T),o(p,q),o(q,M),o(p,D),o(p,O),o(O,_),o(p,v),z=!0},i(E){z||($(u.$$.fragment,E),z=!0)},o(E){b(u.$$.fragment,E),z=!1},d(E){j(u,E),E&&i(m),E&&i(p)}}}function ng(C){let u,m,p,h,k,A,T,q,M,D,O,_,v,z,E,L,N;return u=new F({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(){y(u.$$.fragment),m=d(),p=a("p"),h=t("Possiamo notare che tutti i file hanno "),k=a("code"),A=t("Git"),T=t(" come gestore (handler), ad eccezione di "),q=a("em"),M=t("pytorch_model.bin"),D=t(" e "),O=a("em"),_=t("sentencepiece.bpe.model"),v=t(", che invece hanno "),z=a("code"),E=t("LFS"),L=t(". Perfetto!")},l(H){w(u.$$.fragment,H),m=f(H),p=s(H,"P",{});var G=c(p);h=l(G,"Possiamo notare che tutti i file hanno "),k=s(G,"CODE",{});var x=c(k);A=l(x,"Git"),x.forEach(i),T=l(G," come gestore (handler), ad eccezione di "),q=s(G,"EM",{});var W=c(q);M=l(W,"pytorch_model.bin"),W.forEach(i),D=l(G," e "),O=s(G,"EM",{});var ie=c(O);_=l(ie,"sentencepiece.bpe.model"),ie.forEach(i),v=l(G,", che invece hanno "),z=s(G,"CODE",{});var V=c(z);E=l(V,"LFS"),V.forEach(i),L=l(G,". Perfetto!"),G.forEach(i)},m(H,G){P(u,H,G),n(H,m,G),n(H,p,G),o(p,h),o(p,k),o(k,A),o(p,T),o(p,q),o(q,M),o(p,D),o(p,O),o(O,_),o(p,v),o(p,z),o(z,E),o(p,L),N=!0},i(H){N||($(u.$$.fragment,H),N=!0)},o(H){b(u.$$.fragment,H),N=!1},d(H){j(u,H),H&&i(m),H&&i(p)}}}function cg(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function pg(C){let u,m;return u=new F({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(){y(u.$$.fragment)},l(p){w(u.$$.fragment,p)},m(p,h){P(u,p,h),m=!0},i(p){m||($(u.$$.fragment,p),m=!0)},o(p){b(u.$$.fragment,p),m=!1},d(p){j(u,p)}}}function ug(C){let u,m,p,h,k,A,T,q,M,D,O;return{c(){u=t(`Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:
`),m=a("div"),p=a("img"),k=d(),A=a("p"),T=t("L\u2019interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:"),q=d(),M=a("div"),D=a("img"),this.h()},l(_){u=l(_,`Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:
`),m=s(_,"DIV",{class:!0});var v=c(m);p=s(v,"IMG",{src:!0,alt:!0,width:!0}),v.forEach(i),k=f(_),A=s(_,"P",{});var z=c(A);T=l(z,"L\u2019interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:"),z.forEach(i),q=f(_),M=s(_,"DIV",{class:!0});var E=c(M);D=s(E,"IMG",{src:!0,alt:!0,width:!0}),E.forEach(i),this.h()},h(){Ne(p.src,h="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model_tf.png")||g(p,"src",h),g(p,"alt","The 'Files and versions' tab now contains all the recently uploaded files."),g(p,"width","80%"),g(m,"class","flex justify-center"),Ne(D.src,O="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffstf.gif")||g(D,"src",O),g(D,"alt","The diff introduced by the recent commit."),g(D,"width","80%"),g(M,"class","flex justify-center")},m(_,v){n(_,u,v),n(_,m,v),o(m,p),n(_,k,v),n(_,A,v),o(A,T),n(_,q,v),n(_,M,v),o(M,D)},d(_){_&&i(u),_&&i(m),_&&i(k),_&&i(A),_&&i(q),_&&i(M)}}}function dg(C){let u,m,p,h,k,A,T,q,M,D,O,_,v;return{c(){u=a("p"),m=t("Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:"),p=d(),h=a("div"),k=a("img"),T=d(),q=a("p"),M=t("L\u2019interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:"),D=d(),O=a("div"),_=a("img"),this.h()},l(z){u=s(z,"P",{});var E=c(u);m=l(E,"Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:"),E.forEach(i),p=f(z),h=s(z,"DIV",{class:!0});var L=c(h);k=s(L,"IMG",{src:!0,alt:!0,width:!0}),L.forEach(i),T=f(z),q=s(z,"P",{});var N=c(q);M=l(N,"L\u2019interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:"),N.forEach(i),D=f(z),O=s(z,"DIV",{class:!0});var H=c(O);_=s(H,"IMG",{src:!0,alt:!0,width:!0}),H.forEach(i),this.h()},h(){Ne(k.src,A="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model.png")||g(k,"src",A),g(k,"alt","The 'Files and versions' tab now contains all the recently uploaded files."),g(k,"width","80%"),g(h,"class","flex justify-center"),Ne(_.src,v="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffs.gif")||g(_,"src",v),g(_,"alt","The diff introduced by the recent commit."),g(_,"width","80%"),g(O,"class","flex justify-center")},m(z,E){n(z,u,E),o(u,m),n(z,p,E),n(z,h,E),o(h,k),n(z,T,E),n(z,q,E),o(q,M),n(z,D,E),n(z,O,E),o(O,_)},d(z){z&&i(u),z&&i(p),z&&i(h),z&&i(T),z&&i(q),z&&i(D),z&&i(O)}}}function fg(C){let u,m,p,h,k,A,T,q,M,D,O,_,v,z,E,L,N,H,G,x,W,ie,V,oe,be,Z,Q,ee,te,Y,$e,le,S,U,ze,J,K,fe,me,Re,_e,B,re,Wi,ae,I,R,Ue,ut,Qe,se,fi,dt,ft,Ji,X,ne,ke,Ee,mt,bl,wn,Pn,Ur,ge,jn,$l,qn,An,zl,Cn,Dn,_t,On,Mn,Qr,Xi,xr,gt,In,Vr,Zi,Br,mi,Fn,eo,Tn,Ln,Yr,ht,Sn,Kr,ye,we,vt,_i,Hn,kl,Gn,Nn,Wr,bt,Rn,Jr,Pe,je,$t,xe,Un,El,Qn,xn,yl,Vn,Bn,Xr,io,Zr,gi,Yn,wl,Kn,Wn,ea,oo,ia,hi,Jn,Pl,Xn,Zn,oa,to,ta,vi,ec,jl,ic,oc,la,lo,ra,bi,tc,ql,ro,lc,rc,aa,zt,ac,sa,kt,$i,na,Ve,sc,Al,nc,cc,ao,pc,uc,ca,qe,Cl,dc,fc,so,Dl,mc,_c,no,Ol,gc,hc,pa,Et,vc,ua,ti,zi,Ml,co,bc,yt,$c,Il,zc,da,ki,kc,Fl,Ec,yc,fa,he,wc,Tl,Pc,jc,Ll,qc,Ac,Sl,Cc,Dc,ma,po,_a,Ei,Oc,Hl,Mc,Ic,ga,uo,ha,yi,Fc,Gl,Tc,Lc,va,wi,Sc,Nl,Hc,Gc,ba,fo,$a,Be,Nc,Rl,Rc,Uc,Ul,Qc,xc,za,mo,ka,Ye,Vc,Ql,Bc,Yc,xl,Kc,Wc,Ea,Ke,wt,Vl,Jc,Xc,Zc,Pt,Bl,ep,ip,op,ce,Yl,tp,lp,Kl,rp,ap,Wl,sp,np,Jl,cp,pp,Xl,up,dp,ya,jt,fp,wa,li,Pi,Zl,_o,mp,er,_p,Pa,qt,gp,ja,ji,hp,go,vp,bp,qa,ho,vo,Rd,Aa,At,$p,Ca,Ct,zp,Da,Dt,kp,Oa,bo,$o,Ud,Ma,Ot,Ep,Ia,zo,ko,Qd,Fa,Mt,yp,Ta,We,wp,ir,Pp,jp,or,qp,Ap,La,Eo,yo,xd,Sa,It,Cp,Ha,ri,qi,tr,wo,Dp,lr,Op,Ga,Ai,Mp,Po,Ip,Fp,Na,Ci,Tp,rr,Lp,Sp,Ra,ai,Di,ar,jo,Hp,Ft,Gp,sr,Np,Ua,Oi,Rp,nr,Up,Qp,Qa,Tt,xp,xa,qo,Va,pe,Vp,cr,Bp,Yp,pr,Kp,Wp,ur,Jp,Xp,dr,Zp,eu,Ba,Mi,Lt,fr,iu,ou,tu,ue,mr,lu,ru,_r,au,su,gr,nu,cu,hr,pu,uu,vr,du,fu,Ya,si,Ii,br,Ao,mu,St,_u,$r,gu,Ka,Fi,hu,zr,vu,bu,Wa,Ti,$u,Co,zu,ku,Ja,Ht,Eu,Xa,Do,Za,ve,yu,kr,wu,Pu,Er,ju,qu,yr,Au,Cu,es,Gt,Du,is,Oo,os,Je,Ou,wr,Mu,Iu,Mo,Fu,Tu,ts,Nt,Lu,ls,Rt,Su,rs,Io,as,Ut,Hu,ss,Fo,ns,Li,Gu,Pr,Nu,Ru,cs,To,ps,Qt,Uu,us,ni,Si,jr,Lo,Qu,qr,xu,ds,xt,Vu,fs,Hi,Bu,So,Yu,Ku,ms,Vt,Wu,_s,Ho,gs,Go,hs,Bt,Ju,vs,No,bs,Xe,Xu,Ar,Zu,ed,Cr,id,od,$s,Ro,zs,Ze,td,Dr,ld,rd,Or,ad,sd,ks,Uo,Es,Qo,ys,de,nd,Mr,cd,pd,Ir,ud,dd,Fr,fd,md,Tr,_d,gd,ws,Gi,hd,Lr,vd,bd,Ps,Yt,$d,js,Ae,Ce,Kt,Ni,zd,Sr,kd,Ed,qs,xo,As,De,Oe,Wt,Ri,Cs,Ui,yd,Hr,wd,Pd,Ds,Vo,Os,Jt,jd,Ms,Bo,Is,Me,Ie,Xt,Qi,qd,Gr,Ad,Cd,Fs,Yo,Ts,Fe,Te,Zt,xi,Dd,Nr,Od,Md,Ls,Ko,Ss,Le,Se,el,il,Id,Hs,Wo,Gs,Jo,Ns,ol,Rs;p=new R_({props:{fw:C[0]}}),q=new Ki({});const Vd=[Q_,U_],Xo=[];function Bd(e,r){return e[0]==="pt"?0:1}v=Bd(C),z=Xo[v]=Vd[v](C),G=new Nd({props:{id:"9yY3RB_GSPM"}}),Ue=new Ki({});const Yd=[V_,x_],Zo=[];function Kd(e,r){return e[0]==="pt"?0:1}X=Kd(C),ne=Zo[X]=Yd[X](C),Xi=new F({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()`}}),Zi=new F({props:{code:"huggingface-cli login",highlighted:"huggingface-cli login"}});const Wd=[Y_,B_],et=[];function Jd(e,r){return e[0]==="pt"?0:1}ye=Jd(C),we=et[ye]=Wd[ye](C);const Xd=[W_,K_],it=[];function Zd(e,r){return e[0]==="pt"?0:1}Pe=Zd(C),je=it[Pe]=Xd[Pe](C),io=new F({props:{code:'model.push_to_hub("dummy-model")',highlighted:'model.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)'}}),oo=new F({props:{code:'tokenizer.push_to_hub("dummy-model")',highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)'}}),to=new F({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>)'}}),lo=new F({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 ef(e,r){return e[0]==="pt"?X_:J_}let Us=ef(C),ci=Us(C);$i=new F_({props:{$$slots:{default:[Z_]},$$scope:{ctx:C}}}),co=new Ki({}),po=new F({props:{code:"huggingface-cli login",highlighted:"huggingface-cli login"}}),uo=new F({props:{code:`from huggingface_hub import (
    # User management
    login,
    logout,
    whoami,

    # Repository creation and management
    create_repo,
    delete_repo,
    update_repo_visibility,

    # And some methods to retrieve/change information about the content
    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"># User management</span>
    login,
    logout,
    whoami,

    <span class="hljs-comment"># Repository creation and management</span>
    create_repo,
    delete_repo,
    update_repo_visibility,

    <span class="hljs-comment"># And some methods to retrieve/change information about the content</span>
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`}}),fo=new F({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>)`}}),mo=new F({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>)`}}),_o=new Ki({}),wo=new Ki({}),jo=new Ki({}),qo=new F({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>,
)`}}),Ao=new Ki({}),Do=new F({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>)`}}),Oo=new F({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()`}}),Io=new F({props:{code:"repo.git_pull()",highlighted:"repo.git_pull()"}}),Fo=new F({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>)`}}),To=new F({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()`}}),Lo=new Ki({}),Ho=new F({props:{code:"git lfs install",highlighted:"git lfs install"}}),Go=new F({props:{code:`Updated git hooks.
Git LFS initialized.`,highlighted:`Updated git hooks.
Git LFS initialized.`}}),No=new F({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;'}}),Ro=new F({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'}}),Uo=new F({props:{code:"cd dummy && ls",highlighted:'<span class="hljs-built_in">cd</span> dummy &amp;&amp; <span class="hljs-built_in">ls</span>'}}),Qo=new F({props:{code:"README.md",highlighted:"README.md"}});const of=[ig,eg],ot=[];function tf(e,r){return e[0]==="pt"?0:1}Ae=tf(C),Ce=ot[Ae]=of[Ae](C),xo=new F({props:{code:"ls",highlighted:'<span class="hljs-built_in">ls</span>'}});const lf=[tg,og],tt=[];function rf(e,r){return e[0]==="pt"?0:1}De=rf(C),Oe=tt[De]=lf[De](C),Ri=new F_({props:{$$slots:{default:[lg]},$$scope:{ctx:C}}}),Vo=new F({props:{code:"git add .",highlighted:"git add ."}}),Bo=new F({props:{code:"git status",highlighted:"git status"}});const af=[ag,rg],lt=[];function sf(e,r){return e[0]==="pt"?0:1}Me=sf(C),Ie=lt[Me]=af[Me](C),Yo=new F({props:{code:"git lfs status",highlighted:"git lfs status"}});const nf=[ng,sg],rt=[];function cf(e,r){return e[0]==="pt"?0:1}Fe=cf(C),Te=rt[Fe]=nf[Fe](C),Ko=new F({props:{code:'git commit -m "First model version"',highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>'}});const pf=[pg,cg],at=[];function uf(e,r){return e[0]==="pt"?0:1}Le=uf(C),Se=at[Le]=pf[Le](C),Wo=new F({props:{code:"git push",highlighted:"git push"}}),Jo=new F({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 df(e,r){return e[0]==="pt"?dg:ug}let Qs=df(C),pi=Qs(C);return{c(){u=a("meta"),m=d(),y(p.$$.fragment),h=d(),k=a("h1"),A=a("a"),T=a("span"),y(q.$$.fragment),M=d(),D=a("span"),O=t("Condividere modelli pre-addestrati"),_=d(),z.c(),E=d(),L=a("p"),N=t("Nei passi seguenti illustreremo i modi pi\xF9 semplici e veloci per condividere modelli pre-addestrati sull\u2019\u{1F917} Hub. Vedremo degli strumenti e delle utility che rendono semplice condividere e aggiornare modelli direttamente sull\u2019\u{1F917} Hub."),H=d(),y(G.$$.fragment),x=d(),W=a("p"),ie=t("Incoraggiamo tutti gli utenti che addestrano un modello a contribuire alla comunit\xE0 condividendolo \u2014 anche se i vostri modelli sono addestrati su dati molto specifici, possono comunque aiutare gli altri a risparmiare tempo e risorse computazionali. A vostra volta, potrete beneficiare del lavoro che gli altri hanno fatto!"),V=d(),oe=a("p"),be=t("Ci sono tre modi per creare un nuovo repository di un modello:"),Z=d(),Q=a("ul"),ee=a("li"),te=t("Usando la funzione "),Y=a("code"),$e=t("push_to_hub"),le=t(" dell\u2019API"),S=d(),U=a("li"),ze=t("Usando la libreria Python "),J=a("code"),K=t("huggingface_hub"),fe=d(),me=a("li"),Re=t("Usando l\u2019interfaccia web"),_e=d(),B=a("p"),re=t("Una volta che avrete creato un repository, potrete caricarvi i file attraverso git e git-lfs. Nelle sezioni seguenti vedremo in dettaglio come creare un repository e aggiungervi i file."),Wi=d(),ae=a("h2"),I=a("a"),R=a("span"),y(Ue.$$.fragment),ut=d(),Qe=a("span"),se=t("Utilizzando la funzione "),fi=a("code"),dt=t("push_to_hub"),ft=t(" dell'API"),Ji=d(),ne.c(),ke=d(),Ee=a("p"),mt=t("Il modo pi\xF9 semplice di caricare file sull\u2019Hub \xE8 attraverso la funzione "),bl=a("code"),wn=t("push_to_hub"),Pn=t(" dell\u2019API."),Ur=d(),ge=a("p"),jn=t("Prima di continuare sar\xE0 necessario generare un token di autenticazione cos\xEC che l\u2019API "),$l=a("code"),qn=t("huggingface_hub"),An=t(" sappia chi siete e a quali namespace avete accesso in scrittura. Assicuratevi di essere in un ambiente in cui la libreria "),zl=a("code"),Cn=t("transformers"),Dn=t(" \xE8 installata (vedi "),_t=a("a"),On=t("Installazione"),Mn=t("). Se state utilizzando un notebook, potete usare la seguente funzione per effettuare il login:"),Qr=d(),y(Xi.$$.fragment),xr=d(),gt=a("p"),In=t("In una finestra del terminale, potete eseguire:"),Vr=d(),y(Zi.$$.fragment),Br=d(),mi=a("p"),Fn=t("In entrambi i casi, vi verr\xE0 chiesto di inserire il vostro nome utente e la password, che sono gli stessi che utilizzate per accedere all\u2019Hub. Se non avete ancora un profilo sull\u2019Hub, potete crearne uno "),eo=a("a"),Tn=t("qui"),Ln=t("."),Yr=d(),ht=a("p"),Sn=t("Perfetto! Ora il token di autenticazione \xE8 salvato nella cartella di cache, e possiamo creare dei nuovi repository!"),Kr=d(),we.c(),vt=d(),_i=a("p"),Hn=t("In ogni caso, quando si lavora con modelli, tokenizers, e oggetti di configurazione, \xE8 comunque possibile accedere all\u2019Hub dei modelli direttamente ulizzando il rispettivo methodo "),kl=a("code"),Gn=t("push_to_hub()"),Nn=t(". Questo metodo si occupa di creare il repository e caricarvi i file del modello e tokenizer. Non \xE8 necessario gestire manualmente questa operazione, a differenza dell\u2019API che vedremo pi\xF9 avanti."),Wr=d(),bt=a("p"),Rn=t("Per farvi una idea di come funziona questo processo, inizializzate un modello e un tokenizer:"),Jr=d(),je.c(),$t=d(),xe=a("p"),Un=t("A questo punto, siete liberi di fare quello che volete con questi oggetti - aggiungere token diversi al tokenizer, addestrare il modello, affinarlo. Quando siete soddisfatti con il modello, i pesi e il tokenizer ottenuti, potrete usare il methodo "),El=a("code"),Qn=t("push_to_hub()"),xn=t(" direttamente disponibile sul oggetto "),yl=a("code"),Vn=t("model"),Bn=t(":"),Xr=d(),y(io.$$.fragment),Zr=d(),gi=a("p"),Yn=t("Questo generer\xE0 un nuovo repository "),wl=a("code"),Kn=t("dummy-model"),Wn=t(` nel vostro profilo, e lo popoler\xE0 con i file del modello.
Ripetete la stessa operazione con il tokenizer, cos\xEC tutti i file saranno disponibili nel repository:`),ea=d(),y(oo.$$.fragment),ia=d(),hi=a("p"),Jn=t("Se siete affiliati con una organizzazione, baster\xE0 specificare il parametro "),Pl=a("code"),Xn=t("organization"),Zn=t(" per caricare i file nel namespace dell\u2019organizzazione:"),oa=d(),y(to.$$.fragment),ta=d(),vi=a("p"),ec=t("Se desiderate utilizzare uno specifico token di autenticazione di Hugging Face, \xE8 possibile specificarlo durante l\u2019invocazione del metodo "),jl=a("code"),ic=t("push_to_hub()"),oc=t(":"),la=d(),y(lo.$$.fragment),ra=d(),bi=a("p"),tc=t("Ora potete dirigervi alla pagina del Model Hub per trovare il vostro nuovo modello appena caricato: "),ql=a("em"),ro=a("a"),lc=t("https://huggingface.co/user-or-organization/dummy-model"),rc=t("."),aa=d(),zt=a("p"),ac=t("Cliccando sulla scheda \u201CFiles and versions\u201D dovreste vedere la lista dei file caricati, come nell\u2019immagine sottostante:"),sa=d(),ci.c(),kt=d(),y($i.$$.fragment),na=d(),Ve=a("p"),sc=t("Come avete visto, il metodo "),Al=a("code"),nc=t("push_to_hub()"),cc=t(" accetta numerosi parametri, rendendo possible caricare i file su uno specifico repository o in un namespace di una organizzazione, o utilizzare un qualunque API token. Consigliamo di leggere la documentazione disponibile alla pagina "),ao=a("a"),pc=t("\u{1F917} Transformers documentation"),uc=t(" per farsi una idea di tutte le possibilit\xE0 offerte dal metodo."),ca=d(),qe=a("p"),Cl=a("code"),dc=t("push_to_hub()"),fc=t(" \xE8 supportato dal package "),so=a("a"),Dl=a("code"),mc=t("huggingface_hub"),_c=t(" di Python, che offre una API diretta per interagire con l\u2019Hub di Hugging Face. \xC8 integrato in \u{1F917} Transformers e in numerosi altre librirerie di machine learning, come "),no=a("a"),Ol=a("code"),gc=t("allenlp"),hc=t(". In questo capitolo ci siamo soffermati sull\u2019integrazione con \u{1F917} Transformers, ma integrarlo nel proprio codice o libreria \xE8 semplice."),pa=d(),Et=a("p"),vc=t("Saltate all\u2019ultima sezione per vedere come caricare i file nel repository appena creato!"),ua=d(),ti=a("h2"),zi=a("a"),Ml=a("span"),y(co.$$.fragment),bc=d(),yt=a("span"),$c=t("Utilizzando la libreria Python "),Il=a("code"),zc=t("huggingface_hub"),da=d(),ki=a("p"),kc=t("La libreria Python "),Fl=a("code"),Ec=t("huggingface_hub"),yc=t(` offre una variet\xE0 di strumenti per interfacciarsi con gli hub di modelli e dataset. Fornisce delle classi e dei metodi semplici per operazioni comuni come
ottenere informazioni e gestire repository sull\u2019hub. Fornisce anche delle semplici API che sfruttano git per gestire i contenuti dei repository e integrare l\u2019Hub
nei propri prgetti e librerie.`),fa=d(),he=a("p"),wc=t("Come per la funzione "),Tl=a("code"),Pc=t("push_to_hub"),jc=t(", anche questo approccio richiede di avere un API token salvato nella propria cartella di cache. Per ottenerlo, sar\xE0 necessario usare il comando "),Ll=a("code"),qc=t("login"),Ac=t(" dalla interfaccia da riga di comando (CLI), come indicato nella sezione precedente (assicuratevi di inserire il carattere "),Sl=a("code"),Cc=t("!"),Dc=t(" prima di questi comandi se li state eseguendo in Google Colab):"),ma=d(),y(po.$$.fragment),_a=d(),Ei=a("p"),Oc=t("La libreria "),Hl=a("code"),Mc=t("huggingface_hub"),Ic=t(" offre molte classi e metodi utili al nostro scopo. In primo luogo, ci sono alcuni metodi per gestire operazioni quali creazione e cancellazione di repository:"),ga=d(),y(uo.$$.fragment),ha=d(),yi=a("p"),Fc=t("\xC8 inoltre offerta una classe "),Gl=a("code"),Tc=t("Repository"),Lc=t(" molto completa per gestire un repository locale. Nelle seguenti sezioni li esploreremo e capiremo come utilizzarli."),va=d(),wi=a("p"),Sc=t("Il metodo "),Nl=a("code"),Hc=t("create_repo"),Gc=t(" pu\xF2 essere utilizzato per creare un nuovo repository sull\u2019hub:"),ba=d(),y(fo.$$.fragment),$a=d(),Be=a("p"),Nc=t("Questo generer\xE0 un nuovo repository "),Rl=a("code"),Rc=t("dummy-model"),Uc=t(" nel vostro namespace. Potete anche specificare un\u2019organizzazione a cui il repository dovrebbe appartenere utilizzando il parametro "),Ul=a("code"),Qc=t("organization"),xc=t(":"),za=d(),y(mo.$$.fragment),ka=d(),Ye=a("p"),Vc=t("Che generer\xE0 il repository "),Ql=a("code"),Bc=t("dummy_model"),Yc=t(" all\u2019interno del namespace "),xl=a("code"),Kc=t("huggingface"),Wc=t(`, assumendo che apperteniate a questa organizzazione.
Altri parametri che possono tornare utili sono:`),Ea=d(),Ke=a("ul"),wt=a("li"),Vl=a("code"),Jc=t("private"),Xc=t(", che permette di specificare se il repository dovrebbe essere visibile da altri oppure no."),Zc=d(),Pt=a("li"),Bl=a("code"),ep=t("token"),ip=t(", che permette di specificare un token di autenticazione diverso da quello salvato nella propria cartella di cache."),op=d(),ce=a("li"),Yl=a("code"),tp=t("repo_type"),lp=t(", che permette di creare un "),Kl=a("code"),rp=t("dataset"),ap=t(" o un "),Wl=a("code"),sp=t("space"),np=t(" (spazio) invece di un modello. I valori accettati sono "),Jl=a("code"),cp=t('"dataset"'),pp=t(" e "),Xl=a("code"),up=t('"space"'),dp=t("."),ya=d(),jt=a("p"),fp=t("Una volta creato il repository, dovremo aggiungere file al suo interno! Saltate alla sezione successiva per vedere tre modi per farlo."),wa=d(),li=a("h2"),Pi=a("a"),Zl=a("span"),y(_o.$$.fragment),mp=d(),er=a("span"),_p=t("Usando l'interfaccia web"),Pa=d(),qt=a("p"),gp=t("L\u2019interfaccia we offre strumenti per gestire i repository direttamente sull\u2019Hub. Usando questa interfaccia potrete facilmente creare repository, aggiungere file (anche grandi!), esplorare modelli, visualizzare differenze tra file, e molto altro."),ja=d(),ji=a("p"),hp=t("Per creare un nuovo repository visitate la pagina "),go=a("a"),vp=t("huggingface.co/new"),bp=t(":"),qa=d(),ho=a("div"),vo=a("img"),Aa=d(),At=a("p"),$p=t("Per prima cosa sar\xE0 necessario specificare chi sia il proprietario del repository: questi potete essere voi, o qualunque delle organizzazioni a cui siete affiliati. Se scegliete un\u2019organizzazione, il modello sar\xE0 presente sulla pagina dell\u2019organizzazione e tutti i membri dell\u2019organizzazione avranno la possibilit\xE0 di contribuire al repository."),Ca=d(),Ct=a("p"),zp=t("Ora potete inserire il nome del vostro modello. Questo sar\xE0 anche il nome del repository. Infine, potete specificare se volete che il vostro modello sia pubblico o privato. I modelli privati sono nascosti al pubblico."),Da=d(),Dt=a("p"),kp=t("Dopo aver creato il repository del vostro modello, dovreste vedere una pagina come questa:"),Oa=d(),bo=a("div"),$o=a("img"),Ma=d(),Ot=a("p"),Ep=t("Qui \xE8 dove il vostro modello sar\xE0 reso disponibile. Per iniziare a popolarlo, potete aggiungere un file README direttamente dalla interfaccia web."),Ia=d(),zo=a("div"),ko=a("img"),Fa=d(),Mt=a("p"),yp=t("Il file README \xE8 in formato Markdown \u2014 sentitevi liberi di sbizzarrirvi col README! La terza parte di questo capitolo \xE8 dedicata alla generazione del cartellino del modello. Questi cartellini sono estremamente importanti nel valorizzare il vostro modello, poich\xE9 \xE8 qui che potrete comunicare agli altri le potenzialit\xE0 del vostro modello."),Ta=d(),We=a("p"),wp=t("Nella scheda \u201CFiles and versions\u201D (File e versioni), vedrete che non ci sono ancora molti file \u2014 solo il "),ir=a("em"),Pp=t("README.md"),jp=t(" che avete appena creato e il file "),or=a("em"),qp=t(".gitattributes"),Ap=t(" che tiene traccia dei file grandi."),La=d(),Eo=a("div"),yo=a("img"),Sa=d(),It=a("p"),Cp=t("Vedremo ora come aggiungere nuovi file."),Ha=d(),ri=a("h2"),qi=a("a"),tr=a("span"),y(wo.$$.fragment),Dp=d(),lr=a("span"),Op=t("Caricare i file del modello"),Ga=d(),Ai=a("p"),Mp=t("Il sistema di gestione dei file sull\u2019Hub di Hugging Face \xE8 basato su git per file normali, e su git-lfs ("),Po=a("a"),Ip=t("Git Large File Storage"),Fp=t(") per file pi\xF9 grandi."),Na=d(),Ci=a("p"),Tp=t("Nella sezione seguente, illustreremo tre diversi modi per caricare file sull\u2019Hub: attraverso "),rr=a("code"),Lp=t("huggingface_hub"),Sp=t(" e attraverso comandi git."),Ra=d(),ai=a("h3"),Di=a("a"),ar=a("span"),y(jo.$$.fragment),Hp=d(),Ft=a("span"),Gp=t("Usando "),sr=a("code"),Np=t("upload_file"),Ua=d(),Oi=a("p"),Rp=t("Caricare file utilizzando "),nr=a("code"),Up=t("upload_file"),Qp=t(` non richiede di avere git e git-lfs installati sul proprio sistema. Infatti questo metodo trasferisce i file sul \u{1F917} Hub attraverso richieste HTTP POST. Una limitazione di questo approccio \xE8 che non pu\xF2 gestire file di dimensioni pi\xF9 grandi di 5GB.
Se i vostri file sono pi\xF9 grandi di 5GB, seguite gli altri due metodi dettagliati sotto.`),Qa=d(),Tt=a("p"),xp=t("La API pu\xF2 essere usata in questo modo:"),xa=d(),y(qo.$$.fragment),Va=d(),pe=a("p"),Vp=t("Questo caricher\xE0 il file "),cr=a("code"),Bp=t("config.json"),Yp=t(", locato in "),pr=a("code"),Kp=t("<path_to_file>"),Wp=t(", nella cartella di base (root) del repository come "),ur=a("code"),Jp=t("config.json"),Xp=t(", nel repository "),dr=a("code"),Zp=t("dummy-model"),eu=t(`.
Altri parametri che possono essere utili sono:`),Ba=d(),Mi=a("ul"),Lt=a("li"),fr=a("code"),iu=t("token"),ou=t(", che permette di utilizzare un token di autenticazione specifico invece di quello salvato nella vostra cartella di cache."),tu=d(),ue=a("li"),mr=a("code"),lu=t("repo_type"),ru=t(", che permette di caricare un file in un "),_r=a("code"),au=t("dataset"),su=t(" o uno "),gr=a("code"),nu=t("space"),cu=t(" invece di un modello. Valori accettati sono "),hr=a("code"),pu=t('"dataset"'),uu=t(" e "),vr=a("code"),du=t('"space"'),fu=t("."),Ya=d(),si=a("h3"),Ii=a("a"),br=a("span"),y(Ao.$$.fragment),mu=d(),St=a("span"),_u=t("La classe "),$r=a("code"),gu=t("Repository"),Ka=d(),Fi=a("p"),hu=t("La classe "),zr=a("code"),vu=t("Repository"),bu=t(" gestisce un repository locale in un modo simile a git. Elimina la maggior parte della complessit\xE0 che un utente potrebbe incontrare con git, per fornire tutte le funzionalit\xE0 di cui abbiamo bisogno."),Wa=d(),Ti=a("p"),$u=t("Questa classe necessit\xE0 di git e git-lfs, quindi assicuratevi di averli installati (vedere "),Co=a("a"),zu=t("qui"),ku=t(" per le istruzioni di installazione) e di averli configurati prima di iniziare."),Ja=d(),Ht=a("p"),Eu=t(`In order to start playing around with the repository we have just created, we can start by initialising it into a local folder by cloning the remote repository:
Per iniziare a sperimentare con il repository appena creato, possiamo iniziallizzare il repository in una cartella locale clonando il repository remoto:`),Xa=d(),y(Do.$$.fragment),Za=d(),ve=a("p"),yu=t("Questa azione crea la cartella "),kr=a("code"),wu=t("<path_to_dummy_folder>"),Pu=t(" nella cartella di lavoro corrente (working directory). Questa cartella contiene solo il file "),Er=a("code"),ju=t(".gitattributes"),qu=t(" poich\xE8 quello \xE8 l\u2019unico file che viene creato quando si istanzia un repository attraverso il metodo "),yr=a("code"),Au=t("create_repo"),Cu=t("."),es=d(),Gt=a("p"),Du=t("Da questo punto possiamo usare molti dei metodi classici di git."),is=d(),y(Oo.$$.fragment),os=d(),Je=a("p"),Ou=t("E molti altri! Consigliamo di leggere la documentazione della classe "),wr=a("code"),Mu=t("Repository"),Iu=t(" disponibile "),Mo=a("a"),Fu=t("qui"),Tu=t(" per una panoramica dei metodi disponibili."),ts=d(),Nt=a("p"),Lu=t("In questo momento abbiamo un modello e un tokenizer che vorremmo caricare sull\u2019hub. Avendo correttamente clonato il repository, possiamo salvare i file al suo interno."),ls=d(),Rt=a("p"),Su=t("Assicuriamoci prima che il nostro clone locale sia aggiornato scaricando (pulling) gli ultimi cambiamenti:"),rs=d(),y(Io.$$.fragment),as=d(),Ut=a("p"),Hu=t("Fatto questo, salviamo i file del modello e del tokenizer:"),ss=d(),y(Fo.$$.fragment),ns=d(),Li=a("p"),Gu=t("La cartella "),Pr=a("code"),Nu=t("<path_to_dummy_folder>"),Ru=t(" ora conteine tutti i file del modello e del tokenizer. Possiamo seguire la sequenza di operazioni (workflow) standard di git, aggiungendo file alla staging area, utilizzando git commit e git push per caricarli sull\u2019hub:"),cs=d(),y(To.$$.fragment),ps=d(),Qt=a("p"),Uu=t("Congratulazioni! Avete appena caricato i vostri primi file sull\u2019hub."),us=d(),ni=a("h3"),Si=a("a"),jr=a("span"),y(Lo.$$.fragment),Qu=d(),qr=a("span"),xu=t("L'approccio basato su git"),ds=d(),xt=a("p"),Vu=t("Questo \xE8 un approccio molto minimalista al caricamento dei file: utilizzeremo git e git-lfs direttamente. Gli approcci precedenti rimuovevano la maggior parte della complessit\xE0 utilizzando astrazioni. Siccome ci sono alcune limitazioni con questo metodo, mostreremo un caso di utilizzo pi\xF9 complesso."),fs=d(),Hi=a("p"),Bu=t("Questo metodo richeide git e git-lfs, quindi assicuratevi di averli installati (vedere "),So=a("a"),Yu=t("qui"),Ku=t(" per le istruzioni di installazione) e di averli configurati prima di iniziare."),ms=d(),Vt=a("p"),Wu=t("Per prima cosa inizializziamo git-lfs:"),_s=d(),y(Ho.$$.fragment),gs=d(),y(Go.$$.fragment),hs=d(),Bt=a("p"),Ju=t("Fatto questo, il primo passo \xE8 clonare il repository del proprio modello:"),vs=d(),y(No.$$.fragment),bs=d(),Xe=a("p"),Xu=t("Il mio nome utente \xE8 "),Ar=a("code"),Zu=t("lysandre"),ed=t(" e ho usato il nome "),Cr=a("code"),id=t("dummy"),od=t(" per il modello, quindi per me il comando da eseguire diventa:"),$s=d(),y(Ro.$$.fragment),zs=d(),Ze=a("p"),td=t("Adesso ho una cartella chiamata "),Dr=a("em"),ld=t("dummy"),rd=t(" nella mia cartella di lavoro corrente (working directory). Posso spostarmi nella cartella usando "),Or=a("code"),ad=t("cd"),sd=t(" ed esaminare i contenuti:"),ks=d(),y(Uo.$$.fragment),Es=d(),y(Qo.$$.fragment),ys=d(),de=a("p"),nd=t("Se avete appena creato la repository usando il metodo "),Mr=a("code"),cd=t("create_repo"),pd=t(" di Hugging Face Hub, questa cartella dovrebbe contenere solo un file nascosto "),Ir=a("code"),ud=t(".gitattributes"),dd=t(". Se avete seguito le istruzioni nella sezione precedente per creare una repository usando l\u2019interfaccia web, la cartella dovrebbe contenere un singolo file "),Fr=a("em"),fd=t("README.md"),md=t(" assieme al file nascosto "),Tr=a("code"),_d=t(".gitattributes"),gd=t(", come mostrato qui."),ws=d(),Gi=a("p"),hd=t("Per aggiungere un file di taglia regolare, come un file di configurazione, un file vocabolario, o in genere qualsiasi file di taglia inferiore a qualche megabyte, si procede nello stesso modo di un qualunque systema basato su git. Tuttavia, i file pi\xF9 grandi devono essere registrati con git-lfs per poter essere caricati su "),Lr=a("em"),vd=t("huggingface.co"),bd=t("."),Ps=d(),Yt=a("p"),$d=t("Tornando a Python per un momento, generiamo un modello e un tokenizer che vorremmo caricare sul nostro repository dummy:"),js=d(),Ce.c(),Kt=d(),Ni=a("p"),zd=t("Adesso che abbiamo salvato gli artefatti del modello e del tokenizer, esaminiamo la cartella "),Sr=a("em"),kd=t("dummy"),Ed=t(":"),qs=d(),y(xo.$$.fragment),As=d(),Oe.c(),Wt=d(),y(Ri.$$.fragment),Cs=d(),Ui=a("p"),yd=t("Possiamo quindi procedere come faremo per un repository Git tradizionale. Possiamo aggiungere tutti i file all\u2019ambiente di staging di Git con il comando "),Hr=a("code"),wd=t("git add"),Pd=t(":"),Ds=d(),y(Vo.$$.fragment),Os=d(),Jt=a("p"),jd=t("Possiamo quindi vedere i file che sono attualmente in staging:"),Ms=d(),y(Bo.$$.fragment),Is=d(),Ie.c(),Xt=d(),Qi=a("p"),qd=t("Allo stesso modo possiamo assucurarci che git-lfs stia tenendo traccia dei file giusti utilizzando il comando "),Gr=a("code"),Ad=t("status"),Cd=t(":"),Fs=d(),y(Yo.$$.fragment),Ts=d(),Te.c(),Zt=d(),xi=a("p"),Dd=t("Possiamo quindi procedere al passo finale, utilizzando i comandi commit e push per caricare i file sul repository remoto "),Nr=a("em"),Od=t("huggingface.co"),Md=t(":"),Ls=d(),y(Ko.$$.fragment),Ss=d(),Se.c(),el=d(),il=a("p"),Id=t("L\u2019operazione di push pu\xF2 richiedere un po\u2019 di tempo, a seconda della velocit\xE0 della connessione a internet e della dimensione dei file:"),Hs=d(),y(Wo.$$.fragment),Gs=d(),y(Jo.$$.fragment),Ns=d(),pi.c(),ol=I_(),this.h()},l(e){const r=G_('[data-svelte="svelte-1phssyn"]',document.head);u=s(r,"META",{name:!0,content:!0}),r.forEach(i),m=f(e),w(p.$$.fragment,e),h=f(e),k=s(e,"H1",{class:!0});var st=c(k);A=s(st,"A",{id:!0,class:!0,href:!0});var tl=c(A);T=s(tl,"SPAN",{});var ll=c(T);w(q.$$.fragment,ll),ll.forEach(i),tl.forEach(i),M=f(st),D=s(st,"SPAN",{});var rl=c(D);O=l(rl,"Condividere modelli pre-addestrati"),rl.forEach(i),st.forEach(i),_=f(e),z.l(e),E=f(e),L=s(e,"P",{});var al=c(L);N=l(al,"Nei passi seguenti illustreremo i modi pi\xF9 semplici e veloci per condividere modelli pre-addestrati sull\u2019\u{1F917} Hub. Vedremo degli strumenti e delle utility che rendono semplice condividere e aggiornare modelli direttamente sull\u2019\u{1F917} Hub."),al.forEach(i),H=f(e),w(G.$$.fragment,e),x=f(e),W=s(e,"P",{});var Rr=c(W);ie=l(Rr,"Incoraggiamo tutti gli utenti che addestrano un modello a contribuire alla comunit\xE0 condividendolo \u2014 anche se i vostri modelli sono addestrati su dati molto specifici, possono comunque aiutare gli altri a risparmiare tempo e risorse computazionali. A vostra volta, potrete beneficiare del lavoro che gli altri hanno fatto!"),Rr.forEach(i),V=f(e),oe=s(e,"P",{});var sl=c(oe);be=l(sl,"Ci sono tre modi per creare un nuovo repository di un modello:"),sl.forEach(i),Z=f(e),Q=s(e,"UL",{});var ei=c(Q);ee=s(ei,"LI",{});var nt=c(ee);te=l(nt,"Usando la funzione "),Y=s(nt,"CODE",{});var nl=c(Y);$e=l(nl,"push_to_hub"),nl.forEach(i),le=l(nt," dell\u2019API"),nt.forEach(i),S=f(ei),U=s(ei,"LI",{});var ct=c(U);ze=l(ct,"Usando la libreria Python "),J=s(ct,"CODE",{});var cl=c(J);K=l(cl,"huggingface_hub"),cl.forEach(i),ct.forEach(i),fe=f(ei),me=s(ei,"LI",{});var ff=c(me);Re=l(ff,"Usando l\u2019interfaccia web"),ff.forEach(i),ei.forEach(i),_e=f(e),B=s(e,"P",{});var mf=c(B);re=l(mf,"Una volta che avrete creato un repository, potrete caricarvi i file attraverso git e git-lfs. Nelle sezioni seguenti vedremo in dettaglio come creare un repository e aggiungervi i file."),mf.forEach(i),Wi=f(e),ae=s(e,"H2",{class:!0});var xs=c(ae);I=s(xs,"A",{id:!0,class:!0,href:!0});var _f=c(I);R=s(_f,"SPAN",{});var gf=c(R);w(Ue.$$.fragment,gf),gf.forEach(i),_f.forEach(i),ut=f(xs),Qe=s(xs,"SPAN",{});var Vs=c(Qe);se=l(Vs,"Utilizzando la funzione "),fi=s(Vs,"CODE",{});var hf=c(fi);dt=l(hf,"push_to_hub"),hf.forEach(i),ft=l(Vs," dell'API"),Vs.forEach(i),xs.forEach(i),Ji=f(e),ne.l(e),ke=f(e),Ee=s(e,"P",{});var Bs=c(Ee);mt=l(Bs,"Il modo pi\xF9 semplice di caricare file sull\u2019Hub \xE8 attraverso la funzione "),bl=s(Bs,"CODE",{});var vf=c(bl);wn=l(vf,"push_to_hub"),vf.forEach(i),Pn=l(Bs," dell\u2019API."),Bs.forEach(i),Ur=f(e),ge=s(e,"P",{});var Vi=c(ge);jn=l(Vi,"Prima di continuare sar\xE0 necessario generare un token di autenticazione cos\xEC che l\u2019API "),$l=s(Vi,"CODE",{});var bf=c($l);qn=l(bf,"huggingface_hub"),bf.forEach(i),An=l(Vi," sappia chi siete e a quali namespace avete accesso in scrittura. Assicuratevi di essere in un ambiente in cui la libreria "),zl=s(Vi,"CODE",{});var $f=c(zl);Cn=l($f,"transformers"),$f.forEach(i),Dn=l(Vi," \xE8 installata (vedi "),_t=s(Vi,"A",{href:!0});var zf=c(_t);On=l(zf,"Installazione"),zf.forEach(i),Mn=l(Vi,"). Se state utilizzando un notebook, potete usare la seguente funzione per effettuare il login:"),Vi.forEach(i),Qr=f(e),w(Xi.$$.fragment,e),xr=f(e),gt=s(e,"P",{});var kf=c(gt);In=l(kf,"In una finestra del terminale, potete eseguire:"),kf.forEach(i),Vr=f(e),w(Zi.$$.fragment,e),Br=f(e),mi=s(e,"P",{});var Ys=c(mi);Fn=l(Ys,"In entrambi i casi, vi verr\xE0 chiesto di inserire il vostro nome utente e la password, che sono gli stessi che utilizzate per accedere all\u2019Hub. Se non avete ancora un profilo sull\u2019Hub, potete crearne uno "),eo=s(Ys,"A",{href:!0,rel:!0});var Ef=c(eo);Tn=l(Ef,"qui"),Ef.forEach(i),Ln=l(Ys,"."),Ys.forEach(i),Yr=f(e),ht=s(e,"P",{});var yf=c(ht);Sn=l(yf,"Perfetto! Ora il token di autenticazione \xE8 salvato nella cartella di cache, e possiamo creare dei nuovi repository!"),yf.forEach(i),Kr=f(e),we.l(e),vt=f(e),_i=s(e,"P",{});var Ks=c(_i);Hn=l(Ks,"In ogni caso, quando si lavora con modelli, tokenizers, e oggetti di configurazione, \xE8 comunque possibile accedere all\u2019Hub dei modelli direttamente ulizzando il rispettivo methodo "),kl=s(Ks,"CODE",{});var wf=c(kl);Gn=l(wf,"push_to_hub()"),wf.forEach(i),Nn=l(Ks,". Questo metodo si occupa di creare il repository e caricarvi i file del modello e tokenizer. Non \xE8 necessario gestire manualmente questa operazione, a differenza dell\u2019API che vedremo pi\xF9 avanti."),Ks.forEach(i),Wr=f(e),bt=s(e,"P",{});var Pf=c(bt);Rn=l(Pf,"Per farvi una idea di come funziona questo processo, inizializzate un modello e un tokenizer:"),Pf.forEach(i),Jr=f(e),je.l(e),$t=f(e),xe=s(e,"P",{});var pl=c(xe);Un=l(pl,"A questo punto, siete liberi di fare quello che volete con questi oggetti - aggiungere token diversi al tokenizer, addestrare il modello, affinarlo. Quando siete soddisfatti con il modello, i pesi e il tokenizer ottenuti, potrete usare il methodo "),El=s(pl,"CODE",{});var jf=c(El);Qn=l(jf,"push_to_hub()"),jf.forEach(i),xn=l(pl," direttamente disponibile sul oggetto "),yl=s(pl,"CODE",{});var qf=c(yl);Vn=l(qf,"model"),qf.forEach(i),Bn=l(pl,":"),pl.forEach(i),Xr=f(e),w(io.$$.fragment,e),Zr=f(e),gi=s(e,"P",{});var Ws=c(gi);Yn=l(Ws,"Questo generer\xE0 un nuovo repository "),wl=s(Ws,"CODE",{});var Af=c(wl);Kn=l(Af,"dummy-model"),Af.forEach(i),Wn=l(Ws,` nel vostro profilo, e lo popoler\xE0 con i file del modello.
Ripetete la stessa operazione con il tokenizer, cos\xEC tutti i file saranno disponibili nel repository:`),Ws.forEach(i),ea=f(e),w(oo.$$.fragment,e),ia=f(e),hi=s(e,"P",{});var Js=c(hi);Jn=l(Js,"Se siete affiliati con una organizzazione, baster\xE0 specificare il parametro "),Pl=s(Js,"CODE",{});var Cf=c(Pl);Xn=l(Cf,"organization"),Cf.forEach(i),Zn=l(Js," per caricare i file nel namespace dell\u2019organizzazione:"),Js.forEach(i),oa=f(e),w(to.$$.fragment,e),ta=f(e),vi=s(e,"P",{});var Xs=c(vi);ec=l(Xs,"Se desiderate utilizzare uno specifico token di autenticazione di Hugging Face, \xE8 possibile specificarlo durante l\u2019invocazione del metodo "),jl=s(Xs,"CODE",{});var Df=c(jl);ic=l(Df,"push_to_hub()"),Df.forEach(i),oc=l(Xs,":"),Xs.forEach(i),la=f(e),w(lo.$$.fragment,e),ra=f(e),bi=s(e,"P",{});var Zs=c(bi);tc=l(Zs,"Ora potete dirigervi alla pagina del Model Hub per trovare il vostro nuovo modello appena caricato: "),ql=s(Zs,"EM",{});var Of=c(ql);ro=s(Of,"A",{href:!0,rel:!0});var Mf=c(ro);lc=l(Mf,"https://huggingface.co/user-or-organization/dummy-model"),Mf.forEach(i),Of.forEach(i),rc=l(Zs,"."),Zs.forEach(i),aa=f(e),zt=s(e,"P",{});var If=c(zt);ac=l(If,"Cliccando sulla scheda \u201CFiles and versions\u201D dovreste vedere la lista dei file caricati, come nell\u2019immagine sottostante:"),If.forEach(i),sa=f(e),ci.l(e),kt=f(e),w($i.$$.fragment,e),na=f(e),Ve=s(e,"P",{});var ul=c(Ve);sc=l(ul,"Come avete visto, il metodo "),Al=s(ul,"CODE",{});var Ff=c(Al);nc=l(Ff,"push_to_hub()"),Ff.forEach(i),cc=l(ul," accetta numerosi parametri, rendendo possible caricare i file su uno specifico repository o in un namespace di una organizzazione, o utilizzare un qualunque API token. Consigliamo di leggere la documentazione disponibile alla pagina "),ao=s(ul,"A",{href:!0,rel:!0});var Tf=c(ao);pc=l(Tf,"\u{1F917} Transformers documentation"),Tf.forEach(i),uc=l(ul," per farsi una idea di tutte le possibilit\xE0 offerte dal metodo."),ul.forEach(i),ca=f(e),qe=s(e,"P",{});var pt=c(qe);Cl=s(pt,"CODE",{});var Lf=c(Cl);dc=l(Lf,"push_to_hub()"),Lf.forEach(i),fc=l(pt," \xE8 supportato dal package "),so=s(pt,"A",{href:!0,rel:!0});var Sf=c(so);Dl=s(Sf,"CODE",{});var Hf=c(Dl);mc=l(Hf,"huggingface_hub"),Hf.forEach(i),Sf.forEach(i),_c=l(pt," di Python, che offre una API diretta per interagire con l\u2019Hub di Hugging Face. \xC8 integrato in \u{1F917} Transformers e in numerosi altre librirerie di machine learning, come "),no=s(pt,"A",{href:!0,rel:!0});var Gf=c(no);Ol=s(Gf,"CODE",{});var Nf=c(Ol);gc=l(Nf,"allenlp"),Nf.forEach(i),Gf.forEach(i),hc=l(pt,". In questo capitolo ci siamo soffermati sull\u2019integrazione con \u{1F917} Transformers, ma integrarlo nel proprio codice o libreria \xE8 semplice."),pt.forEach(i),pa=f(e),Et=s(e,"P",{});var Rf=c(Et);vc=l(Rf,"Saltate all\u2019ultima sezione per vedere come caricare i file nel repository appena creato!"),Rf.forEach(i),ua=f(e),ti=s(e,"H2",{class:!0});var en=c(ti);zi=s(en,"A",{id:!0,class:!0,href:!0});var Uf=c(zi);Ml=s(Uf,"SPAN",{});var Qf=c(Ml);w(co.$$.fragment,Qf),Qf.forEach(i),Uf.forEach(i),bc=f(en),yt=s(en,"SPAN",{});var Fd=c(yt);$c=l(Fd,"Utilizzando la libreria Python "),Il=s(Fd,"CODE",{});var xf=c(Il);zc=l(xf,"huggingface_hub"),xf.forEach(i),Fd.forEach(i),en.forEach(i),da=f(e),ki=s(e,"P",{});var on=c(ki);kc=l(on,"La libreria Python "),Fl=s(on,"CODE",{});var Vf=c(Fl);Ec=l(Vf,"huggingface_hub"),Vf.forEach(i),yc=l(on,` offre una variet\xE0 di strumenti per interfacciarsi con gli hub di modelli e dataset. Fornisce delle classi e dei metodi semplici per operazioni comuni come
ottenere informazioni e gestire repository sull\u2019hub. Fornisce anche delle semplici API che sfruttano git per gestire i contenuti dei repository e integrare l\u2019Hub
nei propri prgetti e librerie.`),on.forEach(i),fa=f(e),he=s(e,"P",{});var Bi=c(he);wc=l(Bi,"Come per la funzione "),Tl=s(Bi,"CODE",{});var Bf=c(Tl);Pc=l(Bf,"push_to_hub"),Bf.forEach(i),jc=l(Bi,", anche questo approccio richiede di avere un API token salvato nella propria cartella di cache. Per ottenerlo, sar\xE0 necessario usare il comando "),Ll=s(Bi,"CODE",{});var Yf=c(Ll);qc=l(Yf,"login"),Yf.forEach(i),Ac=l(Bi," dalla interfaccia da riga di comando (CLI), come indicato nella sezione precedente (assicuratevi di inserire il carattere "),Sl=s(Bi,"CODE",{});var Kf=c(Sl);Cc=l(Kf,"!"),Kf.forEach(i),Dc=l(Bi," prima di questi comandi se li state eseguendo in Google Colab):"),Bi.forEach(i),ma=f(e),w(po.$$.fragment,e),_a=f(e),Ei=s(e,"P",{});var tn=c(Ei);Oc=l(tn,"La libreria "),Hl=s(tn,"CODE",{});var Wf=c(Hl);Mc=l(Wf,"huggingface_hub"),Wf.forEach(i),Ic=l(tn," offre molte classi e metodi utili al nostro scopo. In primo luogo, ci sono alcuni metodi per gestire operazioni quali creazione e cancellazione di repository:"),tn.forEach(i),ga=f(e),w(uo.$$.fragment,e),ha=f(e),yi=s(e,"P",{});var ln=c(yi);Fc=l(ln,"\xC8 inoltre offerta una classe "),Gl=s(ln,"CODE",{});var Jf=c(Gl);Tc=l(Jf,"Repository"),Jf.forEach(i),Lc=l(ln," molto completa per gestire un repository locale. Nelle seguenti sezioni li esploreremo e capiremo come utilizzarli."),ln.forEach(i),va=f(e),wi=s(e,"P",{});var rn=c(wi);Sc=l(rn,"Il metodo "),Nl=s(rn,"CODE",{});var Xf=c(Nl);Hc=l(Xf,"create_repo"),Xf.forEach(i),Gc=l(rn," pu\xF2 essere utilizzato per creare un nuovo repository sull\u2019hub:"),rn.forEach(i),ba=f(e),w(fo.$$.fragment,e),$a=f(e),Be=s(e,"P",{});var dl=c(Be);Nc=l(dl,"Questo generer\xE0 un nuovo repository "),Rl=s(dl,"CODE",{});var Zf=c(Rl);Rc=l(Zf,"dummy-model"),Zf.forEach(i),Uc=l(dl," nel vostro namespace. Potete anche specificare un\u2019organizzazione a cui il repository dovrebbe appartenere utilizzando il parametro "),Ul=s(dl,"CODE",{});var em=c(Ul);Qc=l(em,"organization"),em.forEach(i),xc=l(dl,":"),dl.forEach(i),za=f(e),w(mo.$$.fragment,e),ka=f(e),Ye=s(e,"P",{});var fl=c(Ye);Vc=l(fl,"Che generer\xE0 il repository "),Ql=s(fl,"CODE",{});var im=c(Ql);Bc=l(im,"dummy_model"),im.forEach(i),Yc=l(fl," all\u2019interno del namespace "),xl=s(fl,"CODE",{});var om=c(xl);Kc=l(om,"huggingface"),om.forEach(i),Wc=l(fl,`, assumendo che apperteniate a questa organizzazione.
Altri parametri che possono tornare utili sono:`),fl.forEach(i),Ea=f(e),Ke=s(e,"UL",{});var ml=c(Ke);wt=s(ml,"LI",{});var Td=c(wt);Vl=s(Td,"CODE",{});var tm=c(Vl);Jc=l(tm,"private"),tm.forEach(i),Xc=l(Td,", che permette di specificare se il repository dovrebbe essere visibile da altri oppure no."),Td.forEach(i),Zc=f(ml),Pt=s(ml,"LI",{});var Ld=c(Pt);Bl=s(Ld,"CODE",{});var lm=c(Bl);ep=l(lm,"token"),lm.forEach(i),ip=l(Ld,", che permette di specificare un token di autenticazione diverso da quello salvato nella propria cartella di cache."),Ld.forEach(i),op=f(ml),ce=s(ml,"LI",{});var He=c(ce);Yl=s(He,"CODE",{});var rm=c(Yl);tp=l(rm,"repo_type"),rm.forEach(i),lp=l(He,", che permette di creare un "),Kl=s(He,"CODE",{});var am=c(Kl);rp=l(am,"dataset"),am.forEach(i),ap=l(He," o un "),Wl=s(He,"CODE",{});var sm=c(Wl);sp=l(sm,"space"),sm.forEach(i),np=l(He," (spazio) invece di un modello. I valori accettati sono "),Jl=s(He,"CODE",{});var nm=c(Jl);cp=l(nm,'"dataset"'),nm.forEach(i),pp=l(He," e "),Xl=s(He,"CODE",{});var cm=c(Xl);up=l(cm,'"space"'),cm.forEach(i),dp=l(He,"."),He.forEach(i),ml.forEach(i),ya=f(e),jt=s(e,"P",{});var pm=c(jt);fp=l(pm,"Una volta creato il repository, dovremo aggiungere file al suo interno! Saltate alla sezione successiva per vedere tre modi per farlo."),pm.forEach(i),wa=f(e),li=s(e,"H2",{class:!0});var an=c(li);Pi=s(an,"A",{id:!0,class:!0,href:!0});var um=c(Pi);Zl=s(um,"SPAN",{});var dm=c(Zl);w(_o.$$.fragment,dm),dm.forEach(i),um.forEach(i),mp=f(an),er=s(an,"SPAN",{});var fm=c(er);_p=l(fm,"Usando l'interfaccia web"),fm.forEach(i),an.forEach(i),Pa=f(e),qt=s(e,"P",{});var mm=c(qt);gp=l(mm,"L\u2019interfaccia we offre strumenti per gestire i repository direttamente sull\u2019Hub. Usando questa interfaccia potrete facilmente creare repository, aggiungere file (anche grandi!), esplorare modelli, visualizzare differenze tra file, e molto altro."),mm.forEach(i),ja=f(e),ji=s(e,"P",{});var sn=c(ji);hp=l(sn,"Per creare un nuovo repository visitate la pagina "),go=s(sn,"A",{href:!0,rel:!0});var _m=c(go);vp=l(_m,"huggingface.co/new"),_m.forEach(i),bp=l(sn,":"),sn.forEach(i),qa=f(e),ho=s(e,"DIV",{class:!0});var gm=c(ho);vo=s(gm,"IMG",{src:!0,alt:!0,width:!0}),gm.forEach(i),Aa=f(e),At=s(e,"P",{});var hm=c(At);$p=l(hm,"Per prima cosa sar\xE0 necessario specificare chi sia il proprietario del repository: questi potete essere voi, o qualunque delle organizzazioni a cui siete affiliati. Se scegliete un\u2019organizzazione, il modello sar\xE0 presente sulla pagina dell\u2019organizzazione e tutti i membri dell\u2019organizzazione avranno la possibilit\xE0 di contribuire al repository."),hm.forEach(i),Ca=f(e),Ct=s(e,"P",{});var vm=c(Ct);zp=l(vm,"Ora potete inserire il nome del vostro modello. Questo sar\xE0 anche il nome del repository. Infine, potete specificare se volete che il vostro modello sia pubblico o privato. I modelli privati sono nascosti al pubblico."),vm.forEach(i),Da=f(e),Dt=s(e,"P",{});var bm=c(Dt);kp=l(bm,"Dopo aver creato il repository del vostro modello, dovreste vedere una pagina come questa:"),bm.forEach(i),Oa=f(e),bo=s(e,"DIV",{class:!0});var $m=c(bo);$o=s($m,"IMG",{src:!0,alt:!0,width:!0}),$m.forEach(i),Ma=f(e),Ot=s(e,"P",{});var zm=c(Ot);Ep=l(zm,"Qui \xE8 dove il vostro modello sar\xE0 reso disponibile. Per iniziare a popolarlo, potete aggiungere un file README direttamente dalla interfaccia web."),zm.forEach(i),Ia=f(e),zo=s(e,"DIV",{class:!0});var km=c(zo);ko=s(km,"IMG",{src:!0,alt:!0,width:!0}),km.forEach(i),Fa=f(e),Mt=s(e,"P",{});var Em=c(Mt);yp=l(Em,"Il file README \xE8 in formato Markdown \u2014 sentitevi liberi di sbizzarrirvi col README! La terza parte di questo capitolo \xE8 dedicata alla generazione del cartellino del modello. Questi cartellini sono estremamente importanti nel valorizzare il vostro modello, poich\xE9 \xE8 qui che potrete comunicare agli altri le potenzialit\xE0 del vostro modello."),Em.forEach(i),Ta=f(e),We=s(e,"P",{});var _l=c(We);wp=l(_l,"Nella scheda \u201CFiles and versions\u201D (File e versioni), vedrete che non ci sono ancora molti file \u2014 solo il "),ir=s(_l,"EM",{});var ym=c(ir);Pp=l(ym,"README.md"),ym.forEach(i),jp=l(_l," che avete appena creato e il file "),or=s(_l,"EM",{});var wm=c(or);qp=l(wm,".gitattributes"),wm.forEach(i),Ap=l(_l," che tiene traccia dei file grandi."),_l.forEach(i),La=f(e),Eo=s(e,"DIV",{class:!0});var Pm=c(Eo);yo=s(Pm,"IMG",{src:!0,alt:!0,width:!0}),Pm.forEach(i),Sa=f(e),It=s(e,"P",{});var jm=c(It);Cp=l(jm,"Vedremo ora come aggiungere nuovi file."),jm.forEach(i),Ha=f(e),ri=s(e,"H2",{class:!0});var nn=c(ri);qi=s(nn,"A",{id:!0,class:!0,href:!0});var qm=c(qi);tr=s(qm,"SPAN",{});var Am=c(tr);w(wo.$$.fragment,Am),Am.forEach(i),qm.forEach(i),Dp=f(nn),lr=s(nn,"SPAN",{});var Cm=c(lr);Op=l(Cm,"Caricare i file del modello"),Cm.forEach(i),nn.forEach(i),Ga=f(e),Ai=s(e,"P",{});var cn=c(Ai);Mp=l(cn,"Il sistema di gestione dei file sull\u2019Hub di Hugging Face \xE8 basato su git per file normali, e su git-lfs ("),Po=s(cn,"A",{href:!0,rel:!0});var Dm=c(Po);Ip=l(Dm,"Git Large File Storage"),Dm.forEach(i),Fp=l(cn,") per file pi\xF9 grandi."),cn.forEach(i),Na=f(e),Ci=s(e,"P",{});var pn=c(Ci);Tp=l(pn,"Nella sezione seguente, illustreremo tre diversi modi per caricare file sull\u2019Hub: attraverso "),rr=s(pn,"CODE",{});var Om=c(rr);Lp=l(Om,"huggingface_hub"),Om.forEach(i),Sp=l(pn," e attraverso comandi git."),pn.forEach(i),Ra=f(e),ai=s(e,"H3",{class:!0});var un=c(ai);Di=s(un,"A",{id:!0,class:!0,href:!0});var Mm=c(Di);ar=s(Mm,"SPAN",{});var Im=c(ar);w(jo.$$.fragment,Im),Im.forEach(i),Mm.forEach(i),Hp=f(un),Ft=s(un,"SPAN",{});var Sd=c(Ft);Gp=l(Sd,"Usando "),sr=s(Sd,"CODE",{});var Fm=c(sr);Np=l(Fm,"upload_file"),Fm.forEach(i),Sd.forEach(i),un.forEach(i),Ua=f(e),Oi=s(e,"P",{});var dn=c(Oi);Rp=l(dn,"Caricare file utilizzando "),nr=s(dn,"CODE",{});var Tm=c(nr);Up=l(Tm,"upload_file"),Tm.forEach(i),Qp=l(dn,` non richiede di avere git e git-lfs installati sul proprio sistema. Infatti questo metodo trasferisce i file sul \u{1F917} Hub attraverso richieste HTTP POST. Una limitazione di questo approccio \xE8 che non pu\xF2 gestire file di dimensioni pi\xF9 grandi di 5GB.
Se i vostri file sono pi\xF9 grandi di 5GB, seguite gli altri due metodi dettagliati sotto.`),dn.forEach(i),Qa=f(e),Tt=s(e,"P",{});var Lm=c(Tt);xp=l(Lm,"La API pu\xF2 essere usata in questo modo:"),Lm.forEach(i),xa=f(e),w(qo.$$.fragment,e),Va=f(e),pe=s(e,"P",{});var ii=c(pe);Vp=l(ii,"Questo caricher\xE0 il file "),cr=s(ii,"CODE",{});var Sm=c(cr);Bp=l(Sm,"config.json"),Sm.forEach(i),Yp=l(ii,", locato in "),pr=s(ii,"CODE",{});var Hm=c(pr);Kp=l(Hm,"<path_to_file>"),Hm.forEach(i),Wp=l(ii,", nella cartella di base (root) del repository come "),ur=s(ii,"CODE",{});var Gm=c(ur);Jp=l(Gm,"config.json"),Gm.forEach(i),Xp=l(ii,", nel repository "),dr=s(ii,"CODE",{});var Nm=c(dr);Zp=l(Nm,"dummy-model"),Nm.forEach(i),eu=l(ii,`.
Altri parametri che possono essere utili sono:`),ii.forEach(i),Ba=f(e),Mi=s(e,"UL",{});var fn=c(Mi);Lt=s(fn,"LI",{});var Hd=c(Lt);fr=s(Hd,"CODE",{});var Rm=c(fr);iu=l(Rm,"token"),Rm.forEach(i),ou=l(Hd,", che permette di utilizzare un token di autenticazione specifico invece di quello salvato nella vostra cartella di cache."),Hd.forEach(i),tu=f(fn),ue=s(fn,"LI",{});var Ge=c(ue);mr=s(Ge,"CODE",{});var Um=c(mr);lu=l(Um,"repo_type"),Um.forEach(i),ru=l(Ge,", che permette di caricare un file in un "),_r=s(Ge,"CODE",{});var Qm=c(_r);au=l(Qm,"dataset"),Qm.forEach(i),su=l(Ge," o uno "),gr=s(Ge,"CODE",{});var xm=c(gr);nu=l(xm,"space"),xm.forEach(i),cu=l(Ge," invece di un modello. Valori accettati sono "),hr=s(Ge,"CODE",{});var Vm=c(hr);pu=l(Vm,'"dataset"'),Vm.forEach(i),uu=l(Ge," e "),vr=s(Ge,"CODE",{});var Bm=c(vr);du=l(Bm,'"space"'),Bm.forEach(i),fu=l(Ge,"."),Ge.forEach(i),fn.forEach(i),Ya=f(e),si=s(e,"H3",{class:!0});var mn=c(si);Ii=s(mn,"A",{id:!0,class:!0,href:!0});var Ym=c(Ii);br=s(Ym,"SPAN",{});var Km=c(br);w(Ao.$$.fragment,Km),Km.forEach(i),Ym.forEach(i),mu=f(mn),St=s(mn,"SPAN",{});var Gd=c(St);_u=l(Gd,"La classe "),$r=s(Gd,"CODE",{});var Wm=c($r);gu=l(Wm,"Repository"),Wm.forEach(i),Gd.forEach(i),mn.forEach(i),Ka=f(e),Fi=s(e,"P",{});var _n=c(Fi);hu=l(_n,"La classe "),zr=s(_n,"CODE",{});var Jm=c(zr);vu=l(Jm,"Repository"),Jm.forEach(i),bu=l(_n," gestisce un repository locale in un modo simile a git. Elimina la maggior parte della complessit\xE0 che un utente potrebbe incontrare con git, per fornire tutte le funzionalit\xE0 di cui abbiamo bisogno."),_n.forEach(i),Wa=f(e),Ti=s(e,"P",{});var gn=c(Ti);$u=l(gn,"Questa classe necessit\xE0 di git e git-lfs, quindi assicuratevi di averli installati (vedere "),Co=s(gn,"A",{href:!0,rel:!0});var Xm=c(Co);zu=l(Xm,"qui"),Xm.forEach(i),ku=l(gn," per le istruzioni di installazione) e di averli configurati prima di iniziare."),gn.forEach(i),Ja=f(e),Ht=s(e,"P",{});var Zm=c(Ht);Eu=l(Zm,`In order to start playing around with the repository we have just created, we can start by initialising it into a local folder by cloning the remote repository:
Per iniziare a sperimentare con il repository appena creato, possiamo iniziallizzare il repository in una cartella locale clonando il repository remoto:`),Zm.forEach(i),Xa=f(e),w(Do.$$.fragment,e),Za=f(e),ve=s(e,"P",{});var Yi=c(ve);yu=l(Yi,"Questa azione crea la cartella "),kr=s(Yi,"CODE",{});var e_=c(kr);wu=l(e_,"<path_to_dummy_folder>"),e_.forEach(i),Pu=l(Yi," nella cartella di lavoro corrente (working directory). Questa cartella contiene solo il file "),Er=s(Yi,"CODE",{});var i_=c(Er);ju=l(i_,".gitattributes"),i_.forEach(i),qu=l(Yi," poich\xE8 quello \xE8 l\u2019unico file che viene creato quando si istanzia un repository attraverso il metodo "),yr=s(Yi,"CODE",{});var o_=c(yr);Au=l(o_,"create_repo"),o_.forEach(i),Cu=l(Yi,"."),Yi.forEach(i),es=f(e),Gt=s(e,"P",{});var t_=c(Gt);Du=l(t_,"Da questo punto possiamo usare molti dei metodi classici di git."),t_.forEach(i),is=f(e),w(Oo.$$.fragment,e),os=f(e),Je=s(e,"P",{});var gl=c(Je);Ou=l(gl,"E molti altri! Consigliamo di leggere la documentazione della classe "),wr=s(gl,"CODE",{});var l_=c(wr);Mu=l(l_,"Repository"),l_.forEach(i),Iu=l(gl," disponibile "),Mo=s(gl,"A",{href:!0,rel:!0});var r_=c(Mo);Fu=l(r_,"qui"),r_.forEach(i),Tu=l(gl," per una panoramica dei metodi disponibili."),gl.forEach(i),ts=f(e),Nt=s(e,"P",{});var a_=c(Nt);Lu=l(a_,"In questo momento abbiamo un modello e un tokenizer che vorremmo caricare sull\u2019hub. Avendo correttamente clonato il repository, possiamo salvare i file al suo interno."),a_.forEach(i),ls=f(e),Rt=s(e,"P",{});var s_=c(Rt);Su=l(s_,"Assicuriamoci prima che il nostro clone locale sia aggiornato scaricando (pulling) gli ultimi cambiamenti:"),s_.forEach(i),rs=f(e),w(Io.$$.fragment,e),as=f(e),Ut=s(e,"P",{});var n_=c(Ut);Hu=l(n_,"Fatto questo, salviamo i file del modello e del tokenizer:"),n_.forEach(i),ss=f(e),w(Fo.$$.fragment,e),ns=f(e),Li=s(e,"P",{});var hn=c(Li);Gu=l(hn,"La cartella "),Pr=s(hn,"CODE",{});var c_=c(Pr);Nu=l(c_,"<path_to_dummy_folder>"),c_.forEach(i),Ru=l(hn," ora conteine tutti i file del modello e del tokenizer. Possiamo seguire la sequenza di operazioni (workflow) standard di git, aggiungendo file alla staging area, utilizzando git commit e git push per caricarli sull\u2019hub:"),hn.forEach(i),cs=f(e),w(To.$$.fragment,e),ps=f(e),Qt=s(e,"P",{});var p_=c(Qt);Uu=l(p_,"Congratulazioni! Avete appena caricato i vostri primi file sull\u2019hub."),p_.forEach(i),us=f(e),ni=s(e,"H3",{class:!0});var vn=c(ni);Si=s(vn,"A",{id:!0,class:!0,href:!0});var u_=c(Si);jr=s(u_,"SPAN",{});var d_=c(jr);w(Lo.$$.fragment,d_),d_.forEach(i),u_.forEach(i),Qu=f(vn),qr=s(vn,"SPAN",{});var f_=c(qr);xu=l(f_,"L'approccio basato su git"),f_.forEach(i),vn.forEach(i),ds=f(e),xt=s(e,"P",{});var m_=c(xt);Vu=l(m_,"Questo \xE8 un approccio molto minimalista al caricamento dei file: utilizzeremo git e git-lfs direttamente. Gli approcci precedenti rimuovevano la maggior parte della complessit\xE0 utilizzando astrazioni. Siccome ci sono alcune limitazioni con questo metodo, mostreremo un caso di utilizzo pi\xF9 complesso."),m_.forEach(i),fs=f(e),Hi=s(e,"P",{});var bn=c(Hi);Bu=l(bn,"Questo metodo richeide git e git-lfs, quindi assicuratevi di averli installati (vedere "),So=s(bn,"A",{href:!0,rel:!0});var __=c(So);Yu=l(__,"qui"),__.forEach(i),Ku=l(bn," per le istruzioni di installazione) e di averli configurati prima di iniziare."),bn.forEach(i),ms=f(e),Vt=s(e,"P",{});var g_=c(Vt);Wu=l(g_,"Per prima cosa inizializziamo git-lfs:"),g_.forEach(i),_s=f(e),w(Ho.$$.fragment,e),gs=f(e),w(Go.$$.fragment,e),hs=f(e),Bt=s(e,"P",{});var h_=c(Bt);Ju=l(h_,"Fatto questo, il primo passo \xE8 clonare il repository del proprio modello:"),h_.forEach(i),vs=f(e),w(No.$$.fragment,e),bs=f(e),Xe=s(e,"P",{});var hl=c(Xe);Xu=l(hl,"Il mio nome utente \xE8 "),Ar=s(hl,"CODE",{});var v_=c(Ar);Zu=l(v_,"lysandre"),v_.forEach(i),ed=l(hl," e ho usato il nome "),Cr=s(hl,"CODE",{});var b_=c(Cr);id=l(b_,"dummy"),b_.forEach(i),od=l(hl," per il modello, quindi per me il comando da eseguire diventa:"),hl.forEach(i),$s=f(e),w(Ro.$$.fragment,e),zs=f(e),Ze=s(e,"P",{});var vl=c(Ze);td=l(vl,"Adesso ho una cartella chiamata "),Dr=s(vl,"EM",{});var $_=c(Dr);ld=l($_,"dummy"),$_.forEach(i),rd=l(vl," nella mia cartella di lavoro corrente (working directory). Posso spostarmi nella cartella usando "),Or=s(vl,"CODE",{});var z_=c(Or);ad=l(z_,"cd"),z_.forEach(i),sd=l(vl," ed esaminare i contenuti:"),vl.forEach(i),ks=f(e),w(Uo.$$.fragment,e),Es=f(e),w(Qo.$$.fragment,e),ys=f(e),de=s(e,"P",{});var oi=c(de);nd=l(oi,"Se avete appena creato la repository usando il metodo "),Mr=s(oi,"CODE",{});var k_=c(Mr);cd=l(k_,"create_repo"),k_.forEach(i),pd=l(oi," di Hugging Face Hub, questa cartella dovrebbe contenere solo un file nascosto "),Ir=s(oi,"CODE",{});var E_=c(Ir);ud=l(E_,".gitattributes"),E_.forEach(i),dd=l(oi,". Se avete seguito le istruzioni nella sezione precedente per creare una repository usando l\u2019interfaccia web, la cartella dovrebbe contenere un singolo file "),Fr=s(oi,"EM",{});var y_=c(Fr);fd=l(y_,"README.md"),y_.forEach(i),md=l(oi," assieme al file nascosto "),Tr=s(oi,"CODE",{});var w_=c(Tr);_d=l(w_,".gitattributes"),w_.forEach(i),gd=l(oi,", come mostrato qui."),oi.forEach(i),ws=f(e),Gi=s(e,"P",{});var $n=c(Gi);hd=l($n,"Per aggiungere un file di taglia regolare, come un file di configurazione, un file vocabolario, o in genere qualsiasi file di taglia inferiore a qualche megabyte, si procede nello stesso modo di un qualunque systema basato su git. Tuttavia, i file pi\xF9 grandi devono essere registrati con git-lfs per poter essere caricati su "),Lr=s($n,"EM",{});var P_=c(Lr);vd=l(P_,"huggingface.co"),P_.forEach(i),bd=l($n,"."),$n.forEach(i),Ps=f(e),Yt=s(e,"P",{});var j_=c(Yt);$d=l(j_,"Tornando a Python per un momento, generiamo un modello e un tokenizer che vorremmo caricare sul nostro repository dummy:"),j_.forEach(i),js=f(e),Ce.l(e),Kt=f(e),Ni=s(e,"P",{});var zn=c(Ni);zd=l(zn,"Adesso che abbiamo salvato gli artefatti del modello e del tokenizer, esaminiamo la cartella "),Sr=s(zn,"EM",{});var q_=c(Sr);kd=l(q_,"dummy"),q_.forEach(i),Ed=l(zn,":"),zn.forEach(i),qs=f(e),w(xo.$$.fragment,e),As=f(e),Oe.l(e),Wt=f(e),w(Ri.$$.fragment,e),Cs=f(e),Ui=s(e,"P",{});var kn=c(Ui);yd=l(kn,"Possiamo quindi procedere come faremo per un repository Git tradizionale. Possiamo aggiungere tutti i file all\u2019ambiente di staging di Git con il comando "),Hr=s(kn,"CODE",{});var A_=c(Hr);wd=l(A_,"git add"),A_.forEach(i),Pd=l(kn,":"),kn.forEach(i),Ds=f(e),w(Vo.$$.fragment,e),Os=f(e),Jt=s(e,"P",{});var C_=c(Jt);jd=l(C_,"Possiamo quindi vedere i file che sono attualmente in staging:"),C_.forEach(i),Ms=f(e),w(Bo.$$.fragment,e),Is=f(e),Ie.l(e),Xt=f(e),Qi=s(e,"P",{});var En=c(Qi);qd=l(En,"Allo stesso modo possiamo assucurarci che git-lfs stia tenendo traccia dei file giusti utilizzando il comando "),Gr=s(En,"CODE",{});var D_=c(Gr);Ad=l(D_,"status"),D_.forEach(i),Cd=l(En,":"),En.forEach(i),Fs=f(e),w(Yo.$$.fragment,e),Ts=f(e),Te.l(e),Zt=f(e),xi=s(e,"P",{});var yn=c(xi);Dd=l(yn,"Possiamo quindi procedere al passo finale, utilizzando i comandi commit e push per caricare i file sul repository remoto "),Nr=s(yn,"EM",{});var O_=c(Nr);Od=l(O_,"huggingface.co"),O_.forEach(i),Md=l(yn,":"),yn.forEach(i),Ls=f(e),w(Ko.$$.fragment,e),Ss=f(e),Se.l(e),el=f(e),il=s(e,"P",{});var M_=c(il);Id=l(M_,"L\u2019operazione di push pu\xF2 richiedere un po\u2019 di tempo, a seconda della velocit\xE0 della connessione a internet e della dimensione dei file:"),M_.forEach(i),Hs=f(e),w(Wo.$$.fragment,e),Gs=f(e),w(Jo.$$.fragment,e),Ns=f(e),pi.l(e),ol=I_(),this.h()},h(){g(u,"name","hf:doc:metadata"),g(u,"content",JSON.stringify(mg)),g(A,"id","condividere-modelli-preaddestrati"),g(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"),g(A,"href","#condividere-modelli-preaddestrati"),g(k,"class","relative group"),g(I,"id","utilizzando-la-funzione-pushtohub-dellapi"),g(I,"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"),g(I,"href","#utilizzando-la-funzione-pushtohub-dellapi"),g(ae,"class","relative group"),g(_t,"href","/course/chapter0"),g(eo,"href","https://huggingface.co/join"),g(eo,"rel","nofollow"),g(ro,"href","https://huggingface.co/user-or-organization/dummy-model"),g(ro,"rel","nofollow"),g(ao,"href","https://huggingface.co/transformers/model_sharing.html"),g(ao,"rel","nofollow"),g(so,"href","https://github.com/huggingface/huggingface_hub"),g(so,"rel","nofollow"),g(no,"href","https://github.com/allenai/allennlp"),g(no,"rel","nofollow"),g(zi,"id","utilizzando-la-libreria-python-huggingfacehub"),g(zi,"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"),g(zi,"href","#utilizzando-la-libreria-python-huggingfacehub"),g(ti,"class","relative group"),g(Pi,"id","usando-linterfaccia-web"),g(Pi,"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"),g(Pi,"href","#usando-linterfaccia-web"),g(li,"class","relative group"),g(go,"href","https://huggingface.co/new"),g(go,"rel","nofollow"),Ne(vo.src,Rd="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/new_model.png")||g(vo,"src",Rd),g(vo,"alt","Page showcasing the model used for the creation of a new model repository."),g(vo,"width","80%"),g(ho,"class","flex justify-center"),Ne($o.src,Ud="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/empty_model.png")||g($o,"src",Ud),g($o,"alt","An empty model page after creating a new repository."),g($o,"width","80%"),g(bo,"class","flex justify-center"),Ne(ko.src,Qd="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/dummy_model.png")||g(ko,"src",Qd),g(ko,"alt","The README file showing the Markdown capabilities."),g(ko,"width","80%"),g(zo,"class","flex justify-center"),Ne(yo.src,xd="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/files.png")||g(yo,"src",xd),g(yo,"alt","The 'Files and versions' tab only shows the .gitattributes and README.md files."),g(yo,"width","80%"),g(Eo,"class","flex justify-center"),g(qi,"id","caricare-i-file-del-modello"),g(qi,"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"),g(qi,"href","#caricare-i-file-del-modello"),g(ri,"class","relative group"),g(Po,"href","https://git-lfs.github.com/"),g(Po,"rel","nofollow"),g(Di,"id","usando-uploadfile"),g(Di,"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"),g(Di,"href","#usando-uploadfile"),g(ai,"class","relative group"),g(Ii,"id","la-classe-repository"),g(Ii,"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"),g(Ii,"href","#la-classe-repository"),g(si,"class","relative group"),g(Co,"href","https://git-lfs.github.com/"),g(Co,"rel","nofollow"),g(Mo,"href","https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management"),g(Mo,"rel","nofollow"),g(Si,"id","lapproccio-basato-su-git"),g(Si,"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"),g(Si,"href","#lapproccio-basato-su-git"),g(ni,"class","relative group"),g(So,"href","https://git-lfs.github.com/"),g(So,"rel","nofollow")},m(e,r){o(document.head,u),n(e,m,r),P(p,e,r),n(e,h,r),n(e,k,r),o(k,A),o(A,T),P(q,T,null),o(k,M),o(k,D),o(D,O),n(e,_,r),Xo[v].m(e,r),n(e,E,r),n(e,L,r),o(L,N),n(e,H,r),P(G,e,r),n(e,x,r),n(e,W,r),o(W,ie),n(e,V,r),n(e,oe,r),o(oe,be),n(e,Z,r),n(e,Q,r),o(Q,ee),o(ee,te),o(ee,Y),o(Y,$e),o(ee,le),o(Q,S),o(Q,U),o(U,ze),o(U,J),o(J,K),o(Q,fe),o(Q,me),o(me,Re),n(e,_e,r),n(e,B,r),o(B,re),n(e,Wi,r),n(e,ae,r),o(ae,I),o(I,R),P(Ue,R,null),o(ae,ut),o(ae,Qe),o(Qe,se),o(Qe,fi),o(fi,dt),o(Qe,ft),n(e,Ji,r),Zo[X].m(e,r),n(e,ke,r),n(e,Ee,r),o(Ee,mt),o(Ee,bl),o(bl,wn),o(Ee,Pn),n(e,Ur,r),n(e,ge,r),o(ge,jn),o(ge,$l),o($l,qn),o(ge,An),o(ge,zl),o(zl,Cn),o(ge,Dn),o(ge,_t),o(_t,On),o(ge,Mn),n(e,Qr,r),P(Xi,e,r),n(e,xr,r),n(e,gt,r),o(gt,In),n(e,Vr,r),P(Zi,e,r),n(e,Br,r),n(e,mi,r),o(mi,Fn),o(mi,eo),o(eo,Tn),o(mi,Ln),n(e,Yr,r),n(e,ht,r),o(ht,Sn),n(e,Kr,r),et[ye].m(e,r),n(e,vt,r),n(e,_i,r),o(_i,Hn),o(_i,kl),o(kl,Gn),o(_i,Nn),n(e,Wr,r),n(e,bt,r),o(bt,Rn),n(e,Jr,r),it[Pe].m(e,r),n(e,$t,r),n(e,xe,r),o(xe,Un),o(xe,El),o(El,Qn),o(xe,xn),o(xe,yl),o(yl,Vn),o(xe,Bn),n(e,Xr,r),P(io,e,r),n(e,Zr,r),n(e,gi,r),o(gi,Yn),o(gi,wl),o(wl,Kn),o(gi,Wn),n(e,ea,r),P(oo,e,r),n(e,ia,r),n(e,hi,r),o(hi,Jn),o(hi,Pl),o(Pl,Xn),o(hi,Zn),n(e,oa,r),P(to,e,r),n(e,ta,r),n(e,vi,r),o(vi,ec),o(vi,jl),o(jl,ic),o(vi,oc),n(e,la,r),P(lo,e,r),n(e,ra,r),n(e,bi,r),o(bi,tc),o(bi,ql),o(ql,ro),o(ro,lc),o(bi,rc),n(e,aa,r),n(e,zt,r),o(zt,ac),n(e,sa,r),ci.m(e,r),n(e,kt,r),P($i,e,r),n(e,na,r),n(e,Ve,r),o(Ve,sc),o(Ve,Al),o(Al,nc),o(Ve,cc),o(Ve,ao),o(ao,pc),o(Ve,uc),n(e,ca,r),n(e,qe,r),o(qe,Cl),o(Cl,dc),o(qe,fc),o(qe,so),o(so,Dl),o(Dl,mc),o(qe,_c),o(qe,no),o(no,Ol),o(Ol,gc),o(qe,hc),n(e,pa,r),n(e,Et,r),o(Et,vc),n(e,ua,r),n(e,ti,r),o(ti,zi),o(zi,Ml),P(co,Ml,null),o(ti,bc),o(ti,yt),o(yt,$c),o(yt,Il),o(Il,zc),n(e,da,r),n(e,ki,r),o(ki,kc),o(ki,Fl),o(Fl,Ec),o(ki,yc),n(e,fa,r),n(e,he,r),o(he,wc),o(he,Tl),o(Tl,Pc),o(he,jc),o(he,Ll),o(Ll,qc),o(he,Ac),o(he,Sl),o(Sl,Cc),o(he,Dc),n(e,ma,r),P(po,e,r),n(e,_a,r),n(e,Ei,r),o(Ei,Oc),o(Ei,Hl),o(Hl,Mc),o(Ei,Ic),n(e,ga,r),P(uo,e,r),n(e,ha,r),n(e,yi,r),o(yi,Fc),o(yi,Gl),o(Gl,Tc),o(yi,Lc),n(e,va,r),n(e,wi,r),o(wi,Sc),o(wi,Nl),o(Nl,Hc),o(wi,Gc),n(e,ba,r),P(fo,e,r),n(e,$a,r),n(e,Be,r),o(Be,Nc),o(Be,Rl),o(Rl,Rc),o(Be,Uc),o(Be,Ul),o(Ul,Qc),o(Be,xc),n(e,za,r),P(mo,e,r),n(e,ka,r),n(e,Ye,r),o(Ye,Vc),o(Ye,Ql),o(Ql,Bc),o(Ye,Yc),o(Ye,xl),o(xl,Kc),o(Ye,Wc),n(e,Ea,r),n(e,Ke,r),o(Ke,wt),o(wt,Vl),o(Vl,Jc),o(wt,Xc),o(Ke,Zc),o(Ke,Pt),o(Pt,Bl),o(Bl,ep),o(Pt,ip),o(Ke,op),o(Ke,ce),o(ce,Yl),o(Yl,tp),o(ce,lp),o(ce,Kl),o(Kl,rp),o(ce,ap),o(ce,Wl),o(Wl,sp),o(ce,np),o(ce,Jl),o(Jl,cp),o(ce,pp),o(ce,Xl),o(Xl,up),o(ce,dp),n(e,ya,r),n(e,jt,r),o(jt,fp),n(e,wa,r),n(e,li,r),o(li,Pi),o(Pi,Zl),P(_o,Zl,null),o(li,mp),o(li,er),o(er,_p),n(e,Pa,r),n(e,qt,r),o(qt,gp),n(e,ja,r),n(e,ji,r),o(ji,hp),o(ji,go),o(go,vp),o(ji,bp),n(e,qa,r),n(e,ho,r),o(ho,vo),n(e,Aa,r),n(e,At,r),o(At,$p),n(e,Ca,r),n(e,Ct,r),o(Ct,zp),n(e,Da,r),n(e,Dt,r),o(Dt,kp),n(e,Oa,r),n(e,bo,r),o(bo,$o),n(e,Ma,r),n(e,Ot,r),o(Ot,Ep),n(e,Ia,r),n(e,zo,r),o(zo,ko),n(e,Fa,r),n(e,Mt,r),o(Mt,yp),n(e,Ta,r),n(e,We,r),o(We,wp),o(We,ir),o(ir,Pp),o(We,jp),o(We,or),o(or,qp),o(We,Ap),n(e,La,r),n(e,Eo,r),o(Eo,yo),n(e,Sa,r),n(e,It,r),o(It,Cp),n(e,Ha,r),n(e,ri,r),o(ri,qi),o(qi,tr),P(wo,tr,null),o(ri,Dp),o(ri,lr),o(lr,Op),n(e,Ga,r),n(e,Ai,r),o(Ai,Mp),o(Ai,Po),o(Po,Ip),o(Ai,Fp),n(e,Na,r),n(e,Ci,r),o(Ci,Tp),o(Ci,rr),o(rr,Lp),o(Ci,Sp),n(e,Ra,r),n(e,ai,r),o(ai,Di),o(Di,ar),P(jo,ar,null),o(ai,Hp),o(ai,Ft),o(Ft,Gp),o(Ft,sr),o(sr,Np),n(e,Ua,r),n(e,Oi,r),o(Oi,Rp),o(Oi,nr),o(nr,Up),o(Oi,Qp),n(e,Qa,r),n(e,Tt,r),o(Tt,xp),n(e,xa,r),P(qo,e,r),n(e,Va,r),n(e,pe,r),o(pe,Vp),o(pe,cr),o(cr,Bp),o(pe,Yp),o(pe,pr),o(pr,Kp),o(pe,Wp),o(pe,ur),o(ur,Jp),o(pe,Xp),o(pe,dr),o(dr,Zp),o(pe,eu),n(e,Ba,r),n(e,Mi,r),o(Mi,Lt),o(Lt,fr),o(fr,iu),o(Lt,ou),o(Mi,tu),o(Mi,ue),o(ue,mr),o(mr,lu),o(ue,ru),o(ue,_r),o(_r,au),o(ue,su),o(ue,gr),o(gr,nu),o(ue,cu),o(ue,hr),o(hr,pu),o(ue,uu),o(ue,vr),o(vr,du),o(ue,fu),n(e,Ya,r),n(e,si,r),o(si,Ii),o(Ii,br),P(Ao,br,null),o(si,mu),o(si,St),o(St,_u),o(St,$r),o($r,gu),n(e,Ka,r),n(e,Fi,r),o(Fi,hu),o(Fi,zr),o(zr,vu),o(Fi,bu),n(e,Wa,r),n(e,Ti,r),o(Ti,$u),o(Ti,Co),o(Co,zu),o(Ti,ku),n(e,Ja,r),n(e,Ht,r),o(Ht,Eu),n(e,Xa,r),P(Do,e,r),n(e,Za,r),n(e,ve,r),o(ve,yu),o(ve,kr),o(kr,wu),o(ve,Pu),o(ve,Er),o(Er,ju),o(ve,qu),o(ve,yr),o(yr,Au),o(ve,Cu),n(e,es,r),n(e,Gt,r),o(Gt,Du),n(e,is,r),P(Oo,e,r),n(e,os,r),n(e,Je,r),o(Je,Ou),o(Je,wr),o(wr,Mu),o(Je,Iu),o(Je,Mo),o(Mo,Fu),o(Je,Tu),n(e,ts,r),n(e,Nt,r),o(Nt,Lu),n(e,ls,r),n(e,Rt,r),o(Rt,Su),n(e,rs,r),P(Io,e,r),n(e,as,r),n(e,Ut,r),o(Ut,Hu),n(e,ss,r),P(Fo,e,r),n(e,ns,r),n(e,Li,r),o(Li,Gu),o(Li,Pr),o(Pr,Nu),o(Li,Ru),n(e,cs,r),P(To,e,r),n(e,ps,r),n(e,Qt,r),o(Qt,Uu),n(e,us,r),n(e,ni,r),o(ni,Si),o(Si,jr),P(Lo,jr,null),o(ni,Qu),o(ni,qr),o(qr,xu),n(e,ds,r),n(e,xt,r),o(xt,Vu),n(e,fs,r),n(e,Hi,r),o(Hi,Bu),o(Hi,So),o(So,Yu),o(Hi,Ku),n(e,ms,r),n(e,Vt,r),o(Vt,Wu),n(e,_s,r),P(Ho,e,r),n(e,gs,r),P(Go,e,r),n(e,hs,r),n(e,Bt,r),o(Bt,Ju),n(e,vs,r),P(No,e,r),n(e,bs,r),n(e,Xe,r),o(Xe,Xu),o(Xe,Ar),o(Ar,Zu),o(Xe,ed),o(Xe,Cr),o(Cr,id),o(Xe,od),n(e,$s,r),P(Ro,e,r),n(e,zs,r),n(e,Ze,r),o(Ze,td),o(Ze,Dr),o(Dr,ld),o(Ze,rd),o(Ze,Or),o(Or,ad),o(Ze,sd),n(e,ks,r),P(Uo,e,r),n(e,Es,r),P(Qo,e,r),n(e,ys,r),n(e,de,r),o(de,nd),o(de,Mr),o(Mr,cd),o(de,pd),o(de,Ir),o(Ir,ud),o(de,dd),o(de,Fr),o(Fr,fd),o(de,md),o(de,Tr),o(Tr,_d),o(de,gd),n(e,ws,r),n(e,Gi,r),o(Gi,hd),o(Gi,Lr),o(Lr,vd),o(Gi,bd),n(e,Ps,r),n(e,Yt,r),o(Yt,$d),n(e,js,r),ot[Ae].m(e,r),n(e,Kt,r),n(e,Ni,r),o(Ni,zd),o(Ni,Sr),o(Sr,kd),o(Ni,Ed),n(e,qs,r),P(xo,e,r),n(e,As,r),tt[De].m(e,r),n(e,Wt,r),P(Ri,e,r),n(e,Cs,r),n(e,Ui,r),o(Ui,yd),o(Ui,Hr),o(Hr,wd),o(Ui,Pd),n(e,Ds,r),P(Vo,e,r),n(e,Os,r),n(e,Jt,r),o(Jt,jd),n(e,Ms,r),P(Bo,e,r),n(e,Is,r),lt[Me].m(e,r),n(e,Xt,r),n(e,Qi,r),o(Qi,qd),o(Qi,Gr),o(Gr,Ad),o(Qi,Cd),n(e,Fs,r),P(Yo,e,r),n(e,Ts,r),rt[Fe].m(e,r),n(e,Zt,r),n(e,xi,r),o(xi,Dd),o(xi,Nr),o(Nr,Od),o(xi,Md),n(e,Ls,r),P(Ko,e,r),n(e,Ss,r),at[Le].m(e,r),n(e,el,r),n(e,il,r),o(il,Id),n(e,Hs,r),P(Wo,e,r),n(e,Gs,r),P(Jo,e,r),n(e,Ns,r),pi.m(e,r),n(e,ol,r),Rs=!0},p(e,[r]){const st={};r&1&&(st.fw=e[0]),p.$set(st);let tl=v;v=Bd(e),v!==tl&&(di(),b(Xo[tl],1,1,()=>{Xo[tl]=null}),ui(),z=Xo[v],z||(z=Xo[v]=Vd[v](e),z.c()),$(z,1),z.m(E.parentNode,E));let ll=X;X=Kd(e),X!==ll&&(di(),b(Zo[ll],1,1,()=>{Zo[ll]=null}),ui(),ne=Zo[X],ne||(ne=Zo[X]=Yd[X](e),ne.c()),$(ne,1),ne.m(ke.parentNode,ke));let rl=ye;ye=Jd(e),ye!==rl&&(di(),b(et[rl],1,1,()=>{et[rl]=null}),ui(),we=et[ye],we||(we=et[ye]=Wd[ye](e),we.c()),$(we,1),we.m(vt.parentNode,vt));let al=Pe;Pe=Zd(e),Pe!==al&&(di(),b(it[al],1,1,()=>{it[al]=null}),ui(),je=it[Pe],je||(je=it[Pe]=Xd[Pe](e),je.c()),$(je,1),je.m($t.parentNode,$t)),Us!==(Us=ef(e))&&(ci.d(1),ci=Us(e),ci&&(ci.c(),ci.m(kt.parentNode,kt)));const Rr={};r&2&&(Rr.$$scope={dirty:r,ctx:e}),$i.$set(Rr);let sl=Ae;Ae=tf(e),Ae!==sl&&(di(),b(ot[sl],1,1,()=>{ot[sl]=null}),ui(),Ce=ot[Ae],Ce||(Ce=ot[Ae]=of[Ae](e),Ce.c()),$(Ce,1),Ce.m(Kt.parentNode,Kt));let ei=De;De=rf(e),De!==ei&&(di(),b(tt[ei],1,1,()=>{tt[ei]=null}),ui(),Oe=tt[De],Oe||(Oe=tt[De]=lf[De](e),Oe.c()),$(Oe,1),Oe.m(Wt.parentNode,Wt));const nt={};r&2&&(nt.$$scope={dirty:r,ctx:e}),Ri.$set(nt);let nl=Me;Me=sf(e),Me!==nl&&(di(),b(lt[nl],1,1,()=>{lt[nl]=null}),ui(),Ie=lt[Me],Ie||(Ie=lt[Me]=af[Me](e),Ie.c()),$(Ie,1),Ie.m(Xt.parentNode,Xt));let ct=Fe;Fe=cf(e),Fe!==ct&&(di(),b(rt[ct],1,1,()=>{rt[ct]=null}),ui(),Te=rt[Fe],Te||(Te=rt[Fe]=nf[Fe](e),Te.c()),$(Te,1),Te.m(Zt.parentNode,Zt));let cl=Le;Le=uf(e),Le!==cl&&(di(),b(at[cl],1,1,()=>{at[cl]=null}),ui(),Se=at[Le],Se||(Se=at[Le]=pf[Le](e),Se.c()),$(Se,1),Se.m(el.parentNode,el)),Qs!==(Qs=df(e))&&(pi.d(1),pi=Qs(e),pi&&(pi.c(),pi.m(ol.parentNode,ol)))},i(e){Rs||($(p.$$.fragment,e),$(q.$$.fragment,e),$(z),$(G.$$.fragment,e),$(Ue.$$.fragment,e),$(ne),$(Xi.$$.fragment,e),$(Zi.$$.fragment,e),$(we),$(je),$(io.$$.fragment,e),$(oo.$$.fragment,e),$(to.$$.fragment,e),$(lo.$$.fragment,e),$($i.$$.fragment,e),$(co.$$.fragment,e),$(po.$$.fragment,e),$(uo.$$.fragment,e),$(fo.$$.fragment,e),$(mo.$$.fragment,e),$(_o.$$.fragment,e),$(wo.$$.fragment,e),$(jo.$$.fragment,e),$(qo.$$.fragment,e),$(Ao.$$.fragment,e),$(Do.$$.fragment,e),$(Oo.$$.fragment,e),$(Io.$$.fragment,e),$(Fo.$$.fragment,e),$(To.$$.fragment,e),$(Lo.$$.fragment,e),$(Ho.$$.fragment,e),$(Go.$$.fragment,e),$(No.$$.fragment,e),$(Ro.$$.fragment,e),$(Uo.$$.fragment,e),$(Qo.$$.fragment,e),$(Ce),$(xo.$$.fragment,e),$(Oe),$(Ri.$$.fragment,e),$(Vo.$$.fragment,e),$(Bo.$$.fragment,e),$(Ie),$(Yo.$$.fragment,e),$(Te),$(Ko.$$.fragment,e),$(Se),$(Wo.$$.fragment,e),$(Jo.$$.fragment,e),Rs=!0)},o(e){b(p.$$.fragment,e),b(q.$$.fragment,e),b(z),b(G.$$.fragment,e),b(Ue.$$.fragment,e),b(ne),b(Xi.$$.fragment,e),b(Zi.$$.fragment,e),b(we),b(je),b(io.$$.fragment,e),b(oo.$$.fragment,e),b(to.$$.fragment,e),b(lo.$$.fragment,e),b($i.$$.fragment,e),b(co.$$.fragment,e),b(po.$$.fragment,e),b(uo.$$.fragment,e),b(fo.$$.fragment,e),b(mo.$$.fragment,e),b(_o.$$.fragment,e),b(wo.$$.fragment,e),b(jo.$$.fragment,e),b(qo.$$.fragment,e),b(Ao.$$.fragment,e),b(Do.$$.fragment,e),b(Oo.$$.fragment,e),b(Io.$$.fragment,e),b(Fo.$$.fragment,e),b(To.$$.fragment,e),b(Lo.$$.fragment,e),b(Ho.$$.fragment,e),b(Go.$$.fragment,e),b(No.$$.fragment,e),b(Ro.$$.fragment,e),b(Uo.$$.fragment,e),b(Qo.$$.fragment,e),b(Ce),b(xo.$$.fragment,e),b(Oe),b(Ri.$$.fragment,e),b(Vo.$$.fragment,e),b(Bo.$$.fragment,e),b(Ie),b(Yo.$$.fragment,e),b(Te),b(Ko.$$.fragment,e),b(Se),b(Wo.$$.fragment,e),b(Jo.$$.fragment,e),Rs=!1},d(e){i(u),e&&i(m),j(p,e),e&&i(h),e&&i(k),j(q),e&&i(_),Xo[v].d(e),e&&i(E),e&&i(L),e&&i(H),j(G,e),e&&i(x),e&&i(W),e&&i(V),e&&i(oe),e&&i(Z),e&&i(Q),e&&i(_e),e&&i(B),e&&i(Wi),e&&i(ae),j(Ue),e&&i(Ji),Zo[X].d(e),e&&i(ke),e&&i(Ee),e&&i(Ur),e&&i(ge),e&&i(Qr),j(Xi,e),e&&i(xr),e&&i(gt),e&&i(Vr),j(Zi,e),e&&i(Br),e&&i(mi),e&&i(Yr),e&&i(ht),e&&i(Kr),et[ye].d(e),e&&i(vt),e&&i(_i),e&&i(Wr),e&&i(bt),e&&i(Jr),it[Pe].d(e),e&&i($t),e&&i(xe),e&&i(Xr),j(io,e),e&&i(Zr),e&&i(gi),e&&i(ea),j(oo,e),e&&i(ia),e&&i(hi),e&&i(oa),j(to,e),e&&i(ta),e&&i(vi),e&&i(la),j(lo,e),e&&i(ra),e&&i(bi),e&&i(aa),e&&i(zt),e&&i(sa),ci.d(e),e&&i(kt),j($i,e),e&&i(na),e&&i(Ve),e&&i(ca),e&&i(qe),e&&i(pa),e&&i(Et),e&&i(ua),e&&i(ti),j(co),e&&i(da),e&&i(ki),e&&i(fa),e&&i(he),e&&i(ma),j(po,e),e&&i(_a),e&&i(Ei),e&&i(ga),j(uo,e),e&&i(ha),e&&i(yi),e&&i(va),e&&i(wi),e&&i(ba),j(fo,e),e&&i($a),e&&i(Be),e&&i(za),j(mo,e),e&&i(ka),e&&i(Ye),e&&i(Ea),e&&i(Ke),e&&i(ya),e&&i(jt),e&&i(wa),e&&i(li),j(_o),e&&i(Pa),e&&i(qt),e&&i(ja),e&&i(ji),e&&i(qa),e&&i(ho),e&&i(Aa),e&&i(At),e&&i(Ca),e&&i(Ct),e&&i(Da),e&&i(Dt),e&&i(Oa),e&&i(bo),e&&i(Ma),e&&i(Ot),e&&i(Ia),e&&i(zo),e&&i(Fa),e&&i(Mt),e&&i(Ta),e&&i(We),e&&i(La),e&&i(Eo),e&&i(Sa),e&&i(It),e&&i(Ha),e&&i(ri),j(wo),e&&i(Ga),e&&i(Ai),e&&i(Na),e&&i(Ci),e&&i(Ra),e&&i(ai),j(jo),e&&i(Ua),e&&i(Oi),e&&i(Qa),e&&i(Tt),e&&i(xa),j(qo,e),e&&i(Va),e&&i(pe),e&&i(Ba),e&&i(Mi),e&&i(Ya),e&&i(si),j(Ao),e&&i(Ka),e&&i(Fi),e&&i(Wa),e&&i(Ti),e&&i(Ja),e&&i(Ht),e&&i(Xa),j(Do,e),e&&i(Za),e&&i(ve),e&&i(es),e&&i(Gt),e&&i(is),j(Oo,e),e&&i(os),e&&i(Je),e&&i(ts),e&&i(Nt),e&&i(ls),e&&i(Rt),e&&i(rs),j(Io,e),e&&i(as),e&&i(Ut),e&&i(ss),j(Fo,e),e&&i(ns),e&&i(Li),e&&i(cs),j(To,e),e&&i(ps),e&&i(Qt),e&&i(us),e&&i(ni),j(Lo),e&&i(ds),e&&i(xt),e&&i(fs),e&&i(Hi),e&&i(ms),e&&i(Vt),e&&i(_s),j(Ho,e),e&&i(gs),j(Go,e),e&&i(hs),e&&i(Bt),e&&i(vs),j(No,e),e&&i(bs),e&&i(Xe),e&&i($s),j(Ro,e),e&&i(zs),e&&i(Ze),e&&i(ks),j(Uo,e),e&&i(Es),j(Qo,e),e&&i(ys),e&&i(de),e&&i(ws),e&&i(Gi),e&&i(Ps),e&&i(Yt),e&&i(js),ot[Ae].d(e),e&&i(Kt),e&&i(Ni),e&&i(qs),j(xo,e),e&&i(As),tt[De].d(e),e&&i(Wt),j(Ri,e),e&&i(Cs),e&&i(Ui),e&&i(Ds),j(Vo,e),e&&i(Os),e&&i(Jt),e&&i(Ms),j(Bo,e),e&&i(Is),lt[Me].d(e),e&&i(Xt),e&&i(Qi),e&&i(Fs),j(Yo,e),e&&i(Ts),rt[Fe].d(e),e&&i(Zt),e&&i(xi),e&&i(Ls),j(Ko,e),e&&i(Ss),at[Le].d(e),e&&i(el),e&&i(il),e&&i(Hs),j(Wo,e),e&&i(Gs),j(Jo,e),e&&i(Ns),pi.d(e),e&&i(ol)}}}const mg={local:"condividere-modelli-preaddestrati",sections:[{local:"utilizzando-la-funzione-pushtohub-dellapi",title:"Utilizzando la funzione `push_to_hub` dell'API"},{local:"utilizzando-la-libreria-python-huggingfacehub",title:"Utilizzando la libreria Python `huggingface_hub`"},{local:"usando-linterfaccia-web",title:"Usando l'interfaccia web"},{local:"caricare-i-file-del-modello",sections:[{local:"usando-uploadfile",title:"Usando `upload_file`"},{local:"la-classe-repository",title:"La classe `Repository`"},{local:"lapproccio-basato-su-git",title:"L'approccio basato su git"}],title:"Caricare i file del modello"}],title:"Condividere modelli pre-addestrati"};function _g(C,u,m){let p="pt";return N_(()=>{const h=new URLSearchParams(window.location.search);m(0,p=h.get("fw")||"pt")}),[p]}class yg extends L_{constructor(u){super();S_(this,u,_g,fg,H_,{})}}export{yg as default,mg as metadata};
