import{s as Va,o as Xa,n as Aa}from"../chunks/scheduler.cc52f4b9.js";import{S as Ra,i as Qa,e as c,s as a,c as g,h as Ya,a as p,d as l,b as s,f as Ha,g as y,j as m,k as G,l as Sa,m as i,n as v,o as f,u as ee,t as b,p as h,q as qa,r as Ea,v as te}from"../chunks/index.d2856393.js";import{T as La}from"../chunks/Tip.a5bdccc4.js";import{C as Fa,H as re,E as Pa}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.8ffb7edb.js";import{Y as So}from"../chunks/Youtube.00df107c.js";import{C as T}from"../chunks/CodeBlock.5f8dc025.js";import{C as Na}from"../chunks/CourseFloatingBanner.59eb3fdc.js";import{F as Da}from"../chunks/FrameworkSwitchCourse.22a5e932.js";function Ka(_){let o,r;return o=new Na({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(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function Oa(_){let o,r;return o=new Na({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(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function es(_){let o,r;return o=new So({props:{id:"pUh5cGmNV8Y"}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function ts(_){let o,r;return o=new So({props:{id:"Zh0FfmVrKX0"}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function ls(_){let o,r="Se si sta addestrando il modello con Keras, il modo più semplice per caricarlo sull’Hub è passare come parametro una funzione <code>PushToHubCallback</code> quando si invoca la funzione <code>model.fit()</code>:",n,d,$,u,w="Dovrete poi impostare il parametro <code>callbacks=[callback]</code> nella invocazione della funzione <code>model.fit()</code>. Questa funzione callback caricherà il modello sull’Hub ad ogni salvataggio (nell’esempio dopo ogni epoca) all’interno di un repository nel vostro namespace. Il repository avrà come nome la stessa stringa che avete scelto come nome per la cartella di output (qui <code>bert-finetuned-mrpc</code>), ma è possibile scegliere un nome diverso impostando il parametro <code>hub_model_id = &quot;un_nome_diverso&quot;</code>.",Z,j,J="Volendo caricare il modello nello spazio di una organizzazione di cui si è membri, sarà sufficiente impstare il parametro <code>hub_model_id = &quot;nome_organizzazione/nome_repository&quot;</code>.",z;return d=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFB1c2hUb0h1YkNhbGxiYWNrJTBBJTBBY2FsbGJhY2slMjAlM0QlMjBQdXNoVG9IdWJDYWxsYmFjayglMEElMjAlMjAlMjAlMjAlMjJiZXJ0LWZpbmV0dW5lZC1tcnBjJTIyJTJDJTIwc2F2ZV9zdHJhdGVneSUzRCUyMmVwb2NoJTIyJTJDJTIwdG9rZW5pemVyJTNEdG9rZW5pemVyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> PushToHubCallback

callback = PushToHubCallback(
    <span class="hljs-string">&quot;bert-finetuned-mrpc&quot;</span>, save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>, tokenizer=tokenizer
)`,wrap:!1}}),{c(){o=c("p"),o.innerHTML=r,n=a(),g(d.$$.fragment),$=a(),u=c("p"),u.innerHTML=w,Z=a(),j=c("p"),j.innerHTML=J},l(M){o=p(M,"P",{"data-svelte-h":!0}),m(o)!=="svelte-2e3tzk"&&(o.innerHTML=r),n=s(M),y(d.$$.fragment,M),$=s(M),u=p(M,"P",{"data-svelte-h":!0}),m(u)!=="svelte-d4o9ji"&&(u.innerHTML=w),Z=s(M),j=p(M,"P",{"data-svelte-h":!0}),m(j)!=="svelte-x2d8wt"&&(j.innerHTML=J)},m(M,k){i(M,o,k),i(M,n,k),v(d,M,k),i(M,$,k),i(M,u,k),i(M,Z,k),i(M,j,k),z=!0},i(M){z||(b(d.$$.fragment,M),z=!0)},o(M){f(d.$$.fragment,M),z=!1},d(M){M&&(l(o),l(n),l($),l(u),l(Z),l(j)),h(d,M)}}}function is(_){let o,r="Se avete usato la API <code>Trainer</code> per addestrare un modello, il modo più semplice per caricarlo sull’Hub è impostare il parametro <code>push_to_hub=True</code> quando definite i <code>TrainingArguments</code> (parametri di addestramento):",n,d,$,u,w="Invocando la funzione <code>trainer.train()</code>, l’oggetto <code>Trainer</code> caricherà il modello sull’Hub ad ogni salvataggio (nell’esempio dopo ogni epoca) all’interno di un repository nel vostro namespace. Il repository avrà come nome la stessa stringa che avete scelto come nome per la cartella di output (qui <code>bert-finetuned-mrpc</code>), ma è possibile scegliere un nome diverso impostando il parametro <code>hub_model_id = &quot;un_nome_diverso&quot;</code>.",Z,j,J="Volendo caricare il modello nello spazio di una organizzazione di cui si è membri, sarà sufficiente impstare il parametro <code>hub_model_id = &quot;nome_organizzazione/nome_repository&quot;</code>.",z,M,k="Alla fine dell’addestramento, sarà necessario invocare per l’ultima volta la funzione <code>trainer.push_to_hub()</code> per caricare la versione definitiva del modello. Questa azione genererà automaticamente anche un cartellino del modello, con tutti i metadati rilevanti, riportando anche gli iper-parametri utilizzati e i risultati della valutazione finale. Questo è un esempio del contenuto di uno di questi cartellini:",W,x,ce='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/model_card.png" alt="An example of an auto-generated model card." width="100%"/>',B;return d=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMCUyMmJlcnQtZmluZXR1bmVkLW1ycGMlMjIlMkMlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMjBwdXNoX3RvX2h1YiUzRFRydWUlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

training_args = TrainingArguments(
    <span class="hljs-string">&quot;bert-finetuned-mrpc&quot;</span>, save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>, push_to_hub=<span class="hljs-literal">True</span>
)`,wrap:!1}}),{c(){o=c("p"),o.innerHTML=r,n=a(),g(d.$$.fragment),$=a(),u=c("p"),u.innerHTML=w,Z=a(),j=c("p"),j.innerHTML=J,z=a(),M=c("p"),M.innerHTML=k,W=a(),x=c("div"),x.innerHTML=ce,this.h()},l(U){o=p(U,"P",{"data-svelte-h":!0}),m(o)!=="svelte-peecxs"&&(o.innerHTML=r),n=s(U),y(d.$$.fragment,U),$=s(U),u=p(U,"P",{"data-svelte-h":!0}),m(u)!=="svelte-1qiasva"&&(u.innerHTML=w),Z=s(U),j=p(U,"P",{"data-svelte-h":!0}),m(j)!=="svelte-x2d8wt"&&(j.innerHTML=J),z=s(U),M=p(U,"P",{"data-svelte-h":!0}),m(M)!=="svelte-eiqrp1"&&(M.innerHTML=k),W=s(U),x=p(U,"DIV",{class:!0,"data-svelte-h":!0}),m(x)!=="svelte-1lhrimn"&&(x.innerHTML=ce),this.h()},h(){G(x,"class","flex justify-center")},m(U,C){i(U,o,C),i(U,n,C),v(d,U,C),i(U,$,C),i(U,u,C),i(U,Z,C),i(U,j,C),i(U,z,C),i(U,M,C),i(U,W,C),i(U,x,C),B=!0},i(U){B||(b(d.$$.fragment,U),B=!0)},o(U){f(d.$$.fragment,U),B=!1},d(U){U&&(l(o),l(n),l($),l(u),l(Z),l(j),l(z),l(M),l(W),l(x)),h(d,U)}}}function os(_){let o,r;return o=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMkMlMjBBdXRvVG9rZW5pemVyJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmNhbWVtYmVydC1iYXNlJTIyJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM, AutoTokenizer

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

model = TFAutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function ns(_){let o,r;return o=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJjYW1lbWJlcnQtYmFzZSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM, AutoTokenizer

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

model = AutoModelForMaskedLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function as(_){let o,r='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model_tf.png" alt="Dummy model containing both the tokenizer and model files." width="80%"/>';return{c(){o=c("div"),o.innerHTML=r,this.h()},l(n){o=p(n,"DIV",{class:!0,"data-svelte-h":!0}),m(o)!=="svelte-5a3kk0"&&(o.innerHTML=r),this.h()},h(){G(o,"class","flex justify-center")},m(n,d){i(n,o,d)},d(n){n&&l(o)}}}function ss(_){let o,r='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/push_to_hub_dummy_model.png" alt="Dummy model containing both the tokenizer and model files." width="80%"/>';return{c(){o=c("div"),o.innerHTML=r,this.h()},l(n){o=p(n,"DIV",{class:!0,"data-svelte-h":!0}),m(o)!=="svelte-19u1vyv"&&(o.innerHTML=r),this.h()},h(){G(o,"class","flex justify-center")},m(n,d){i(n,o,d)},d(n){n&&l(o)}}}function rs(_){let o,r="✏️ <strong>Prova tu!</strong> Prendi il modello e il tokenizer associati con il cehckpoint <code>bert-base-cased</code> e caricali in un repository nel tuo namespace usando il metodo <code>push_to_hub()</code>. Verifica che il repository appaia correttamente sulla tua pagina prima di cancellarlo.";return{c(){o=c("p"),o.innerHTML=r},l(n){o=p(n,"P",{"data-svelte-h":!0}),m(o)!=="svelte-gh534t"&&(o.innerHTML=r)},m(n,d){i(n,o,d)},p:Aa,d(n){n&&l(o)}}}function cs(_){let o,r;return o=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMkMlMjBBdXRvVG9rZW5pemVyJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmNhbWVtYmVydC1iYXNlJTIyJTBBJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBJTBBJTIzJTIwRG8lMjB3aGF0ZXZlciUyMHdpdGglMjB0aGUlMjBtb2RlbCUyQyUyMHRyYWluJTIwaXQlMkMlMjBmaW5lLXR1bmUlMjBpdC4uLiUwQSUwQW1vZGVsLnNhdmVfcHJldHJhaW5lZCglMjIlM0NwYXRoX3RvX2R1bW15X2ZvbGRlciUzRSUyMiklMEF0b2tlbml6ZXIuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM, AutoTokenizer

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

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

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

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function ps(_){let o,r;return o=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJjYW1lbWJlcnQtYmFzZSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEElMEElMjMlMjBEbyUyMHdoYXRldmVyJTIwd2l0aCUyMHRoZSUyMG1vZGVsJTJDJTIwdHJhaW4lMjBpdCUyQyUyMGZpbmUtdHVuZSUyMGl0Li4uJTBBJTBBbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKSUwQXRva2VuaXplci5zYXZlX3ByZXRyYWluZWQoJTIyJTNDcGF0aF90b19kdW1teV9mb2xkZXIlM0UlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM, AutoTokenizer

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

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

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

model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function ms(_){let o,r,n,d="Guardando le dimensioni dei file (ad esempio con <code>ls -lh</code>), possiamo vedere che il file contenente lo stato del modello (model state dict file) (<em>t5_model.h5</em>) è l’unico file anomalo, occupando più di 400 MB.",$;return o=new T({props:{code:"Y29uZmlnLmpzb24lMjAlMjBSRUFETUUubWQlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUyMCUyMHNwZWNpYWxfdG9rZW5zX21hcC5qc29uJTIwJTIwdGZfbW9kZWwuaDUlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAlMjB0b2tlbml6ZXIuanNvbg==",highlighted:"config.json  README.md  sentencepiece.bpe.model  special_tokens_map.json  tf_model.h5  tokenizer_config.json  tokenizer.json",wrap:!1}}),{c(){g(o.$$.fragment),r=a(),n=c("p"),n.innerHTML=d},l(u){y(o.$$.fragment,u),r=s(u),n=p(u,"P",{"data-svelte-h":!0}),m(n)!=="svelte-svyk3e"&&(n.innerHTML=d)},m(u,w){v(o,u,w),i(u,r,w),i(u,n,w),$=!0},i(u){$||(b(o.$$.fragment,u),$=!0)},o(u){f(o.$$.fragment,u),$=!1},d(u){u&&(l(r),l(n)),h(o,u)}}}function us(_){let o,r,n,d="Guardando le dimensioni dei file (ad esempio con <code>ls -lh</code>), possiamo vedere che il file contenente lo stato del modello (model state dict file) (<em>pytorch_model.bin</em>) è l’unico file anomalo, occupando più di 400 MB.",$;return o=new T({props:{code:"Y29uZmlnLmpzb24lMjAlMjBweXRvcmNoX21vZGVsLmJpbiUyMCUyMFJFQURNRS5tZCUyMCUyMHNlbnRlbmNlcGllY2UuYnBlLm1vZGVsJTIwJTIwc3BlY2lhbF90b2tlbnNfbWFwLmpzb24lMjB0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAlMjB0b2tlbml6ZXIuanNvbg==",highlighted:"config.json  pytorch_model.bin  README.md  sentencepiece.bpe.model  special_tokens_map.json tokenizer_config.json  tokenizer.json",wrap:!1}}),{c(){g(o.$$.fragment),r=a(),n=c("p"),n.innerHTML=d},l(u){y(o.$$.fragment,u),r=s(u),n=p(u,"P",{"data-svelte-h":!0}),m(n)!=="svelte-12bmz0m"&&(n.innerHTML=d)},m(u,w){v(o,u,w),i(u,r,w),i(u,n,w),$=!0},i(u){$||(b(o.$$.fragment,u),$=!0)},o(u){f(o.$$.fragment,u),$=!1},d(u){u&&(l(r),l(n)),h(o,u)}}}function ds(_){let o;return{c(){o=qa(`✏️ 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.
✏️ 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à senza necessità di configurazione da parte dell'utente.`)},l(r){o=Ea(r,`✏️ 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.
✏️ 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à senza necessità di configurazione da parte dell'utente.`)},m(r,n){i(r,o,n)},d(r){r&&l(o)}}}function fs(_){let o,r;return o=new T({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBWW91ciUyMGJyYW5jaCUyMGlzJTIwdXAlMjB0byUyMGRhdGUlMjB3aXRoJTIwJ29yaWdpbiUyRm1haW4nLiUwQSUwQUNoYW5nZXMlMjB0byUyMGJlJTIwY29tbWl0dGVkJTNBJTBBJTIwJTIwKHVzZSUyMCUyMmdpdCUyMHJlc3RvcmUlMjAtLXN0YWdlZCUyMCUzQ2ZpbGUlM0UuLi4lMjIlMjB0byUyMHVuc3RhZ2UpJTBBJTIwJTIwbW9kaWZpZWQlM0ElMjAlMjAlMjAuZ2l0YXR0cmlidXRlcyUwQSUyMCUyMCUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBjb25maWcuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0Zl9tb2RlbC5oNSUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXIuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`On branch main
Your branch is up to <span class="hljs-built_in">date</span> with <span class="hljs-string">&#x27;origin/main&#x27;</span>.

Changes to be committed:
  (use <span class="hljs-string">&quot;git restore --staged &lt;file&gt;...&quot;</span> to unstage)
  modified:   .gitattributes
  	new file:   config.json
	new file:   sentencepiece.bpe.model
	new file:   special_tokens_map.json
	new file:   tf_model.h5
	new file:   tokenizer.json
	new file:   tokenizer_config.json`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function bs(_){let o,r;return o=new T({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBWW91ciUyMGJyYW5jaCUyMGlzJTIwdXAlMjB0byUyMGRhdGUlMjB3aXRoJTIwJ29yaWdpbiUyRm1haW4nLiUwQSUwQUNoYW5nZXMlMjB0byUyMGJlJTIwY29tbWl0dGVkJTNBJTBBJTIwJTIwKHVzZSUyMCUyMmdpdCUyMHJlc3RvcmUlMjAtLXN0YWdlZCUyMCUzQ2ZpbGUlM0UuLi4lMjIlMjB0byUyMHVuc3RhZ2UpJTBBJTIwJTIwbW9kaWZpZWQlM0ElMjAlMjAlMjAuZ2l0YXR0cmlidXRlcyUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBjb25maWcuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBweXRvcmNoX21vZGVsLmJpbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXIuanNvbiUwQSUwOW5ldyUyMGZpbGUlM0ElMjAlMjAlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`On branch main
Your branch is up to <span class="hljs-built_in">date</span> with <span class="hljs-string">&#x27;origin/main&#x27;</span>.

Changes to be committed:
  (use <span class="hljs-string">&quot;git restore --staged &lt;file&gt;...&quot;</span> to unstage)
  modified:   .gitattributes
	new file:   config.json
	new file:   pytorch_model.bin
	new file:   sentencepiece.bpe.model
	new file:   special_tokens_map.json
	new file:   tokenizer.json
	new file:   tokenizer_config.json`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function Ms(_){let o,r,n,d="Possiamo notare che tutti i file hanno <code>Git</code> come gestore (handler), ad eccezione di <em>t5_model.h5</em>, che invece ha <code>LFS</code>. Perfetto!",$;return o=new T({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBT2JqZWN0cyUyMHRvJTIwYmUlMjBwdXNoZWQlMjB0byUyMG9yaWdpbiUyRm1haW4lM0ElMEElMEElMEFPYmplY3RzJTIwdG8lMjBiZSUyMGNvbW1pdHRlZCUzQSUwQSUwQSUwOWNvbmZpZy5qc29uJTIwKEdpdCUzQSUyMGJjMjBmZjIpJTBBJTA5c2VudGVuY2VwaWVjZS5icGUubW9kZWwlMjAoTEZTJTNBJTIwOTg4YmM1YSklMEElMDlzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUyMChHaXQlM0ElMjBjYjIzOTMxKSUwQSUwOXRmX21vZGVsLmg1JTIwKExGUyUzQSUyMDg2ZmNlMjkpJTBBJTA5dG9rZW5pemVyLmpzb24lMjAoR2l0JTNBJTIwODUxZmYzZSklMEElMDl0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAoR2l0JTNBJTIwZjBmNzc4MyklMEElMEFPYmplY3RzJTIwbm90JTIwc3RhZ2VkJTIwZm9yJTIwY29tbWl0JTNBJTBBJTBB",highlighted:`On branch main
Objects to be pushed to origin/main:


Objects to be committed:

	config.json (Git: bc20ff2)
	sentencepiece.bpe.model (LFS: 988bc5a)
	special_tokens_map.json (Git: cb23931)
	tf_model.h5 (LFS: 86fce29)
	tokenizer.json (Git: 851ff3e)
	tokenizer_config.json (Git: f0f7783)

Objects not staged <span class="hljs-keyword">for</span> commit:

`,wrap:!1}}),{c(){g(o.$$.fragment),r=a(),n=c("p"),n.innerHTML=d},l(u){y(o.$$.fragment,u),r=s(u),n=p(u,"P",{"data-svelte-h":!0}),m(n)!=="svelte-4geoa1"&&(n.innerHTML=d)},m(u,w){v(o,u,w),i(u,r,w),i(u,n,w),$=!0},i(u){$||(b(o.$$.fragment,u),$=!0)},o(u){f(o.$$.fragment,u),$=!1},d(u){u&&(l(r),l(n)),h(o,u)}}}function gs(_){let o,r,n,d="Possiamo notare che tutti i file hanno <code>Git</code> come gestore (handler), ad eccezione di <em>pytorch_model.bin</em> e <em>sentencepiece.bpe.model</em>, che invece hanno <code>LFS</code>. Perfetto!",$;return o=new T({props:{code:"T24lMjBicmFuY2glMjBtYWluJTBBT2JqZWN0cyUyMHRvJTIwYmUlMjBwdXNoZWQlMjB0byUyMG9yaWdpbiUyRm1haW4lM0ElMEElMEElMEFPYmplY3RzJTIwdG8lMjBiZSUyMGNvbW1pdHRlZCUzQSUwQSUwQSUwOWNvbmZpZy5qc29uJTIwKEdpdCUzQSUyMGJjMjBmZjIpJTBBJTA5cHl0b3JjaF9tb2RlbC5iaW4lMjAoTEZTJTNBJTIwMzU2ODZjMiklMEElMDlzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUyMChMRlMlM0ElMjA5ODhiYzVhKSUwQSUwOXNwZWNpYWxfdG9rZW5zX21hcC5qc29uJTIwKEdpdCUzQSUyMGNiMjM5MzEpJTBBJTA5dG9rZW5pemVyLmpzb24lMjAoR2l0JTNBJTIwODUxZmYzZSklMEElMDl0b2tlbml6ZXJfY29uZmlnLmpzb24lMjAoR2l0JTNBJTIwZjBmNzc4MyklMEElMEFPYmplY3RzJTIwbm90JTIwc3RhZ2VkJTIwZm9yJTIwY29tbWl0JTNBJTBBJTBB",highlighted:`On branch main
Objects to be pushed to origin/main:


Objects to be committed:

	config.json (Git: bc20ff2)
	pytorch_model.bin (LFS: 35686c2)
	sentencepiece.bpe.model (LFS: 988bc5a)
	special_tokens_map.json (Git: cb23931)
	tokenizer.json (Git: 851ff3e)
	tokenizer_config.json (Git: f0f7783)

Objects not staged <span class="hljs-keyword">for</span> commit:

`,wrap:!1}}),{c(){g(o.$$.fragment),r=a(),n=c("p"),n.innerHTML=d},l(u){y(o.$$.fragment,u),r=s(u),n=p(u,"P",{"data-svelte-h":!0}),m(n)!=="svelte-cjdbfn"&&(n.innerHTML=d)},m(u,w){v(o,u,w),i(u,r,w),i(u,n,w),$=!0},i(u){$||(b(o.$$.fragment,u),$=!0)},o(u){f(o.$$.fragment,u),$=!1},d(u){u&&(l(r),l(n)),h(o,u)}}}function ys(_){let o,r;return o=new T({props:{code:"JTVCbWFpbiUyMGIwOGFhYjElNUQlMjBGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUwQSUyMDYlMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAzNiUyMGluc2VydGlvbnMoJTJCKSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBjb25maWcuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0Zl9tb2RlbC5oNSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXIuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`[main b08aab1] First model version
 6 files changed, 36 insertions(+)
 create mode 100644 config.json
 create mode 100644 sentencepiece.bpe.model
 create mode 100644 special_tokens_map.json
 create mode 100644 tf_model.h5
 create mode 100644 tokenizer.json
 create mode 100644 tokenizer_config.json`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function vs(_){let o,r;return o=new T({props:{code:"JTVCbWFpbiUyMGIwOGFhYjElNUQlMjBGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUwQSUyMDclMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAyOTAyNyUyMGluc2VydGlvbnMoJTJCKSUwQSUyMCUyMDYlMjBmaWxlcyUyMGNoYW5nZWQlMkMlMjAzNiUyMGluc2VydGlvbnMoJTJCKSUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBjb25maWcuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBweXRvcmNoX21vZGVsLmJpbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzZW50ZW5jZXBpZWNlLmJwZS5tb2RlbCUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjBzcGVjaWFsX3Rva2Vuc19tYXAuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXIuanNvbiUwQSUyMGNyZWF0ZSUyMG1vZGUlMjAxMDA2NDQlMjB0b2tlbml6ZXJfY29uZmlnLmpzb24=",highlighted:`[main b08aab1] First model version
 7 files changed, 29027 insertions(+)
  6 files changed, 36 insertions(+)
 create mode 100644 config.json
 create mode 100644 pytorch_model.bin
 create mode 100644 sentencepiece.bpe.model
 create mode 100644 special_tokens_map.json
 create mode 100644 tokenizer.json
 create mode 100644 tokenizer_config.json`,wrap:!1}}),{c(){g(o.$$.fragment)},l(n){y(o.$$.fragment,n)},m(n,d){v(o,n,d),r=!0},i(n){r||(b(o.$$.fragment,n),r=!0)},o(n){f(o.$$.fragment,n),r=!1},d(n){h(o,n)}}}function hs(_){let o,r="Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:",n,d,$='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model_tf.png" alt="The &#39;Files and versions&#39; tab now contains all the recently uploaded files." width="80%"/>',u,w,Z="L’interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:",j,J,z='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffstf.gif" alt="The diff introduced by the recent commit." width="80%"/>';return{c(){o=c("p"),o.textContent=r,n=a(),d=c("div"),d.innerHTML=$,u=a(),w=c("p"),w.textContent=Z,j=a(),J=c("div"),J.innerHTML=z,this.h()},l(M){o=p(M,"P",{"data-svelte-h":!0}),m(o)!=="svelte-1uaneoz"&&(o.textContent=r),n=s(M),d=p(M,"DIV",{class:!0,"data-svelte-h":!0}),m(d)!=="svelte-tz4fi2"&&(d.innerHTML=$),u=s(M),w=p(M,"P",{"data-svelte-h":!0}),m(w)!=="svelte-ccobca"&&(w.textContent=Z),j=s(M),J=p(M,"DIV",{class:!0,"data-svelte-h":!0}),m(J)!=="svelte-2jd8bj"&&(J.innerHTML=z),this.h()},h(){G(d,"class","flex justify-center"),G(J,"class","flex justify-center")},m(M,k){i(M,o,k),i(M,n,k),i(M,d,k),i(M,u,k),i(M,w,k),i(M,j,k),i(M,J,k)},d(M){M&&(l(o),l(n),l(d),l(u),l(w),l(j),l(J))}}}function _s(_){let o,r="Alla fine di questa operazione, possiamo controllare il repository e vedere tutti i file aggiunti di recente:",n,d,$='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/full_model.png" alt="The &#39;Files and versions&#39; tab now contains all the recently uploaded files." width="80%"/>',u,w,Z="L’interfaccia permette di esplorare i file e le commit, e visualizzare le differenze (file diff) introdotte da ogni commit:",j,J,z='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/diffs.gif" alt="The diff introduced by the recent commit." width="80%"/>';return{c(){o=c("p"),o.textContent=r,n=a(),d=c("div"),d.innerHTML=$,u=a(),w=c("p"),w.textContent=Z,j=a(),J=c("div"),J.innerHTML=z,this.h()},l(M){o=p(M,"P",{"data-svelte-h":!0}),m(o)!=="svelte-1uaneoz"&&(o.textContent=r),n=s(M),d=p(M,"DIV",{class:!0,"data-svelte-h":!0}),m(d)!=="svelte-1v39mjb"&&(d.innerHTML=$),u=s(M),w=p(M,"P",{"data-svelte-h":!0}),m(w)!=="svelte-ccobca"&&(w.textContent=Z),j=s(M),J=p(M,"DIV",{class:!0,"data-svelte-h":!0}),m(J)!=="svelte-1g561m5"&&(J.innerHTML=z),this.h()},h(){G(d,"class","flex justify-center"),G(J,"class","flex justify-center")},m(M,k){i(M,o,k),i(M,n,k),i(M,d,k),i(M,u,k),i(M,w,k),i(M,j,k),i(M,J,k)},d(M){M&&(l(o),l(n),l(d),l(u),l(w),l(j),l(J))}}}function ws(_){let o,r,n,d,$,u,w,Z,j,J,z,M,k,W,x="Nei passi seguenti illustreremo i modi più semplici e veloci per condividere modelli pre-addestrati sull’🤗 Hub. Vedremo degli strumenti e delle utility che rendono semplice condividere e aggiornare modelli direttamente sull’🤗 Hub.",ce,B,U,C,qo="Incoraggiamo tutti gli utenti che addestrano un modello a contribuire alla comunità condividendolo — 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!",Jl,pe,Eo="Ci sono tre modi per creare un nuovo repository di un modello:",zl,me,Fo="<li>Usando la funzione <code>push_to_hub</code> dell’API</li> <li>Usando la libreria Python <code>huggingface_hub</code></li> <li>Usando l’interfaccia web</li>",Zl,ue,Po="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.",Cl,de,Gl,I,H,gl,fe,Do="Il modo più semplice di caricare file sull’Hub è attraverso la funzione <code>push_to_hub</code> dell’API.",Wl,be,Ko='Prima di continuare sarà necessario generare un token di autenticazione così che l’API <code>huggingface_hub</code> sappia chi siete e a quali namespace avete accesso in scrittura. Assicuratevi di essere in un ambiente in cui la libreria <code>transformers</code> è installata (vedi <a href="/course/chapter0">Installazione</a>). Se state utilizzando un notebook, potete usare la seguente funzione per effettuare il login:',Bl,Me,xl,ge,Oo="In una finestra del terminale, potete eseguire:",Il,ye,Hl,ve,en='In entrambi i casi, vi verrà chiesto di inserire il vostro nome utente e la password, che sono gli stessi che utilizzate per accedere all’Hub. Se non avete ancora un profilo sull’Hub, potete crearne uno <a href="https://huggingface.co/join" rel="nofollow">qui</a>.',Ll,he,tn="Perfetto! Ora il token di autenticazione è salvato nella cartella di cache, e possiamo creare dei nuovi repository!",Nl,L,N,yl,_e,ln="In ogni caso, quando si lavora con modelli, tokenizers, e oggetti di configurazione, è comunque possibile accedere all’Hub dei modelli direttamente ulizzando il rispettivo methodo <code>push_to_hub()</code>. Questo metodo si occupa di creare il repository e caricarvi i file del modello e tokenizer. Non è necessario gestire manualmente questa operazione, a differenza dell’API che vedremo più avanti.",Vl,we,on="Per farvi una idea di come funziona questo processo, inizializzate un modello e un tokenizer:",Xl,V,X,vl,$e,nn="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 <code>push_to_hub()</code> direttamente disponibile sul oggetto <code>model</code>:",Al,Te,Rl,Ue,an=`Questo genererà un nuovo repository <code>dummy-model</code> nel vostro profilo, e lo popolerà con i file del modello.
Ripetete la stessa operazione con il tokenizer, così tutti i file saranno disponibili nel repository:`,Ql,je,Yl,ke,sn="Se siete affiliati con una organizzazione, basterà specificare il parametro <code>organization</code> per caricare i file nel namespace dell’organizzazione:",Sl,Je,ql,ze,rn="Se desiderate utilizzare uno specifico token di autenticazione di Hugging Face, è possibile specificarlo durante l’invocazione del metodo <code>push_to_hub()</code>:",El,Ze,Fl,Ce,cn='Ora potete dirigervi alla pagina del Model Hub per trovare il vostro nuovo modello appena caricato: <em><a href="https://huggingface.co/user-or-organization/dummy-model" rel="nofollow">https://huggingface.co/user-or-organization/dummy-model</a></em>.',Pl,Ge,pn="Cliccando sulla scheda “Files and versions” dovreste vedere la lista dei file caricati, come nell’immagine sottostante:",Dl,hl,le,Kl,We,mn='Come avete visto, il metodo <code>push_to_hub()</code> 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 <a href="https://huggingface.co/transformers/model_sharing.html" rel="nofollow">🤗 Transformers documentation</a> per farsi una idea di tutte le possibilità offerte dal metodo.',Ol,Be,un='<code>push_to_hub()</code> è supportato dal package <a href="https://github.com/huggingface/huggingface_hub" rel="nofollow"><code>huggingface_hub</code></a> di Python, che offre una API diretta per interagire con l’Hub di Hugging Face. È integrato in 🤗 Transformers e in numerosi altre librirerie di machine learning, come <a href="https://github.com/allenai/allennlp" rel="nofollow"><code>allenlp</code></a>. In questo capitolo ci siamo soffermati sull’integrazione con 🤗 Transformers, ma integrarlo nel proprio codice o libreria è semplice.',ei,xe,dn="Saltate all’ultima sezione per vedere come caricare i file nel repository appena creato!",ti,Ie,li,He,fn=`La libreria Python <code>huggingface_hub</code> offre una varietà 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’hub. Fornisce anche delle semplici API che sfruttano git per gestire i contenuti dei repository e integrare l’Hub
nei propri prgetti e librerie.`,ii,Le,bn="Come per la funzione <code>push_to_hub</code>, anche questo approccio richiede di avere un API token salvato nella propria cartella di cache. Per ottenerlo, sarà necessario usare il comando <code>login</code> dalla interfaccia da riga di comando (CLI), come indicato nella sezione precedente (assicuratevi di inserire il carattere <code>!</code> prima di questi comandi se li state eseguendo in Google Colab):",oi,Ne,ni,Ve,Mn="La libreria <code>huggingface_hub</code> 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:",ai,Xe,si,Ae,gn="È inoltre offerta una classe <code>Repository</code> molto completa per gestire un repository locale. Nelle seguenti sezioni li esploreremo e capiremo come utilizzarli.",ri,Re,yn="Il metodo <code>create_repo</code> può essere utilizzato per creare un nuovo repository sull’hub:",ci,Qe,pi,Ye,vn="Questo genererà un nuovo repository <code>dummy-model</code> nel vostro namespace. Potete anche specificare un’organizzazione a cui il repository dovrebbe appartenere utilizzando il parametro <code>organization</code>:",mi,Se,ui,qe,hn=`Che genererà il repository <code>dummy_model</code> all’interno del namespace <code>huggingface</code>, assumendo che apperteniate a questa organizzazione.
Altri parametri che possono tornare utili sono:`,di,Ee,_n="<li><code>private</code>, che permette di specificare se il repository dovrebbe essere visibile da altri oppure no.</li> <li><code>token</code>, che permette di specificare un token di autenticazione diverso da quello salvato nella propria cartella di cache.</li> <li><code>repo_type</code>, che permette di creare un <code>dataset</code> o un <code>space</code> (spazio) invece di un modello. I valori accettati sono <code>&quot;dataset&quot;</code> e <code>&quot;space&quot;</code>.</li>",fi,Fe,wn="Una volta creato il repository, dovremo aggiungere file al suo interno! Saltate alla sezione successiva per vedere tre modi per farlo.",bi,Pe,Mi,De,$n="L’interfaccia we offre strumenti per gestire i repository direttamente sull’Hub. Usando questa interfaccia potrete facilmente creare repository, aggiungere file (anche grandi!), esplorare modelli, visualizzare differenze tra file, e molto altro.",gi,Ke,Tn='Per creare un nuovo repository visitate la pagina <a href="https://huggingface.co/new" rel="nofollow">huggingface.co/new</a>:',yi,ie,Un='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/new_model.png" alt="Page showcasing the model used for the creation of a new model repository." width="80%"/>',vi,Oe,jn="Per prima cosa sarà necessario specificare chi sia il proprietario del repository: questi potete essere voi, o qualunque delle organizzazioni a cui siete affiliati. Se scegliete un’organizzazione, il modello sarà presente sulla pagina dell’organizzazione e tutti i membri dell’organizzazione avranno la possibilità di contribuire al repository.",hi,et,kn="Ora potete inserire il nome del vostro modello. Questo sarà 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.",_i,tt,Jn="Dopo aver creato il repository del vostro modello, dovreste vedere una pagina come questa:",wi,oe,zn='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/empty_model.png" alt="An empty model page after creating a new repository." width="80%"/>',$i,lt,Zn="Qui è dove il vostro modello sarà reso disponibile. Per iniziare a popolarlo, potete aggiungere un file README direttamente dalla interfaccia web.",Ti,ne,Cn='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/dummy_model.png" alt="The README file showing the Markdown capabilities." width="80%"/>',Ui,it,Gn="Il file README è in formato Markdown — sentitevi liberi di sbizzarrirvi col README! La terza parte di questo capitolo è dedicata alla generazione del cartellino del modello. Questi cartellini sono estremamente importanti nel valorizzare il vostro modello, poiché è qui che potrete comunicare agli altri le potenzialità del vostro modello.",ji,ot,Wn="Nella scheda “Files and versions” (File e versioni), vedrete che non ci sono ancora molti file — solo il <em>README.md</em> che avete appena creato e il file <em>.gitattributes</em> che tiene traccia dei file grandi.",ki,ae,Bn='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/files.png" alt="The &#39;Files and versions&#39; tab only shows the .gitattributes and README.md files." width="80%"/>',Ji,nt,xn="Vedremo ora come aggiungere nuovi file.",zi,at,Zi,st,In='Il sistema di gestione dei file sull’Hub di Hugging Face è basato su git per file normali, e su git-lfs (<a href="https://git-lfs.github.com/" rel="nofollow">Git Large File Storage</a>) per file più grandi.',Ci,rt,Hn="Nella sezione seguente, illustreremo tre diversi modi per caricare file sull’Hub: attraverso <code>huggingface_hub</code> e attraverso comandi git.",Gi,ct,Wi,pt,Ln=`Caricare file utilizzando <code>upload_file</code> non richiede di avere git e git-lfs installati sul proprio sistema. Infatti questo metodo trasferisce i file sul 🤗 Hub attraverso richieste HTTP POST. Una limitazione di questo approccio è che non può gestire file di dimensioni più grandi di 5GB.
Se i vostri file sono più grandi di 5GB, seguite gli altri due metodi dettagliati sotto.`,Bi,mt,Nn="La API può essere usata in questo modo:",xi,ut,Ii,dt,Vn=`Questo caricherà il file <code>config.json</code>, locato in <code>&lt;path_to_file&gt;</code>, nella cartella di base (root) del repository come <code>config.json</code>, nel repository <code>dummy-model</code>.
Altri parametri che possono essere utili sono:`,Hi,ft,Xn="<li><code>token</code>, che permette di utilizzare un token di autenticazione specifico invece di quello salvato nella vostra cartella di cache.</li> <li><code>repo_type</code>, che permette di caricare un file in un <code>dataset</code> o uno <code>space</code> invece di un modello. Valori accettati sono <code>&quot;dataset&quot;</code> e <code>&quot;space&quot;</code>.</li>",Li,bt,Ni,Mt,An="La classe <code>Repository</code> gestisce un repository locale in un modo simile a git. Elimina la maggior parte della complessità che un utente potrebbe incontrare con git, per fornire tutte le funzionalità di cui abbiamo bisogno.",Vi,gt,Rn='Questa classe necessità di git e git-lfs, quindi assicuratevi di averli installati (vedere <a href="https://git-lfs.github.com/" rel="nofollow">qui</a> per le istruzioni di installazione) e di averli configurati prima di iniziare.',Xi,yt,Qn=`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:`,Ai,vt,Ri,ht,Yn="Questa azione crea la cartella <code>&lt;path_to_dummy_folder&gt;</code> nella cartella di lavoro corrente (working directory). Questa cartella contiene solo il file <code>.gitattributes</code> poichè quello è l’unico file che viene creato quando si istanzia un repository attraverso il metodo <code>create_repo</code>.",Qi,_t,Sn="Da questo punto possiamo usare molti dei metodi classici di git.",Yi,wt,Si,$t,qn='E molti altri! Consigliamo di leggere la documentazione della classe <code>Repository</code> disponibile <a href="https://github.com/huggingface/huggingface_hub/tree/main/src/huggingface_hub#advanced-programmatic-repository-management" rel="nofollow">qui</a> per una panoramica dei metodi disponibili.',qi,Tt,En="In questo momento abbiamo un modello e un tokenizer che vorremmo caricare sull’hub. Avendo correttamente clonato il repository, possiamo salvare i file al suo interno.",Ei,Ut,Fn="Assicuriamoci prima che il nostro clone locale sia aggiornato scaricando (pulling) gli ultimi cambiamenti:",Fi,jt,Pi,kt,Pn="Fatto questo, salviamo i file del modello e del tokenizer:",Di,Jt,Ki,zt,Dn="La cartella <code>&lt;path_to_dummy_folder&gt;</code> 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’hub:",Oi,Zt,eo,Ct,Kn="Congratulazioni! Avete appena caricato i vostri primi file sull’hub.",to,Gt,lo,Wt,On="Questo è un approccio molto minimalista al caricamento dei file: utilizzeremo git e git-lfs direttamente. Gli approcci precedenti rimuovevano la maggior parte della complessità utilizzando astrazioni. Siccome ci sono alcune limitazioni con questo metodo, mostreremo un caso di utilizzo più complesso.",io,Bt,ea='Questo metodo richeide git e git-lfs, quindi assicuratevi di averli installati (vedere <a href="https://git-lfs.github.com/" rel="nofollow">qui</a> per le istruzioni di installazione) e di averli configurati prima di iniziare.',oo,xt,ta="Per prima cosa inizializziamo git-lfs:",no,It,ao,Ht,so,Lt,la="Fatto questo, il primo passo è clonare il repository del proprio modello:",ro,Nt,co,Vt,ia="Il mio nome utente è <code>lysandre</code> e ho usato il nome <code>dummy</code> per il modello, quindi per me il comando da eseguire diventa:",po,Xt,mo,At,oa="Adesso ho una cartella chiamata <em>dummy</em> nella mia cartella di lavoro corrente (working directory). Posso spostarmi nella cartella usando <code>cd</code> ed esaminare i contenuti:",uo,Rt,fo,Qt,bo,Yt,na="Se avete appena creato la repository usando il metodo <code>create_repo</code> di Hugging Face Hub, questa cartella dovrebbe contenere solo un file nascosto <code>.gitattributes</code>. Se avete seguito le istruzioni nella sezione precedente per creare una repository usando l’interfaccia web, la cartella dovrebbe contenere un singolo file <em>README.md</em> assieme al file nascosto <code>.gitattributes</code>, come mostrato qui.",Mo,St,aa="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ù grandi devono essere registrati con git-lfs per poter essere caricati su <em>huggingface.co</em>.",go,qt,sa="Tornando a Python per un momento, generiamo un modello e un tokenizer che vorremmo caricare sul nostro repository dummy:",yo,A,R,_l,Et,ra="Adesso che abbiamo salvato gli artefatti del modello e del tokenizer, esaminiamo la cartella <em>dummy</em>:",vo,Ft,ho,Q,Y,wl,se,_o,Pt,ca="Possiamo quindi procedere come faremo per un repository Git tradizionale. Possiamo aggiungere tutti i file all’ambiente di staging di Git con il comando <code>git add</code>:",wo,Dt,$o,Kt,pa="Possiamo quindi vedere i file che sono attualmente in staging:",To,Ot,Uo,S,q,$l,el,ma="Allo stesso modo possiamo assucurarci che git-lfs stia tenendo traccia dei file giusti utilizzando il comando <code>status</code>:",jo,tl,ko,E,F,Tl,ll,ua="Possiamo quindi procedere al passo finale, utilizzando i comandi commit e push per caricare i file sul repository remoto <em>huggingface.co</em>:",Jo,il,zo,P,D,Ul,ol,da="L’operazione di push può richiedere un po’ di tempo, a seconda della velocità della connessione a internet e della dimensione dei file:",Zo,nl,Co,al,Go,jl,sl,Wo,kl,Bo;$=new Da({props:{fw:_[0]}}),w=new Fa({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),j=new re({props:{title:"Condividere modelli pre-addestrati",local:"condividere-modelli-pre-addestrati",headingTag:"h1"}});const fa=[Oa,Ka],rl=[];function ba(e,t){return e[0]==="pt"?0:1}z=ba(_),M=rl[z]=fa[z](_),B=new So({props:{id:"9yY3RB_GSPM"}}),de=new re({props:{title:"Utilizzando la funzione push_to_hub dell’API",local:"utilizzando-la-funzione-pushtohub-dellapi",headingTag:"h2"}});const Ma=[ts,es],cl=[];function ga(e,t){return e[0]==="pt"?0:1}I=ga(_),H=cl[I]=Ma[I](_),Me=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),ye=new T({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}});const ya=[is,ls],pl=[];function va(e,t){return e[0]==="pt"?0:1}L=va(_),N=pl[L]=ya[L](_);const ha=[ns,os],ml=[];function _a(e,t){return e[0]==="pt"?0:1}V=_a(_),X=ml[V]=ha[V](_),Te=new T({props:{code:"bW9kZWwucHVzaF90b19odWIoJTIyZHVtbXktbW9kZWwlMjIp",highlighted:'model.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),je=new T({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>)',wrap:!1}}),Je=new T({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIp",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>)',wrap:!1}}),Ze=new T({props:{code:"dG9rZW5pemVyLnB1c2hfdG9faHViKCUyMmR1bW15LW1vZGVsJTIyJTJDJTIwb3JnYW5pemF0aW9uJTNEJTIyaHVnZ2luZ2ZhY2UlMjIlMkMlMjB1c2VfYXV0aF90b2tlbiUzRCUyMiUzQ1RPS0VOJTNFJTIyKQ==",highlighted:'tokenizer.push_to_hub(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>, use_auth_token=<span class="hljs-string">&quot;&lt;TOKEN&gt;&quot;</span>)',wrap:!1}});function wa(e,t){return e[0]==="pt"?ss:as}let xo=wa(_),K=xo(_);le=new La({props:{$$slots:{default:[rs]},$$scope:{ctx:_}}}),Ie=new re({props:{title:"Utilizzando la libreria Python huggingface_hub",local:"utilizzando-la-libreria-python-huggingfacehub",headingTag:"h2"}}),Ne=new T({props:{code:"aHVnZ2luZ2ZhY2UtY2xpJTIwbG9naW4=",highlighted:"huggingface-cli login",wrap:!1}}),Xe=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMCglMEElMjAlMjAlMjAlMjAlMjMlMjBVc2VyJTIwbWFuYWdlbWVudCUwQSUyMCUyMCUyMCUyMGxvZ2luJTJDJTBBJTIwJTIwJTIwJTIwbG9nb3V0JTJDJTBBJTIwJTIwJTIwJTIwd2hvYW1pJTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwUmVwb3NpdG9yeSUyMGNyZWF0aW9uJTIwYW5kJTIwbWFuYWdlbWVudCUwQSUyMCUyMCUyMCUyMGNyZWF0ZV9yZXBvJTJDJTBBJTIwJTIwJTIwJTIwZGVsZXRlX3JlcG8lMkMlMEElMjAlMjAlMjAlMjB1cGRhdGVfcmVwb192aXNpYmlsaXR5JTJDJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwQW5kJTIwc29tZSUyMG1ldGhvZHMlMjB0byUyMHJldHJpZXZlJTJGY2hhbmdlJTIwaW5mb3JtYXRpb24lMjBhYm91dCUyMHRoZSUyMGNvbnRlbnQlMEElMjAlMjAlMjAlMjBsaXN0X21vZGVscyUyQyUwQSUyMCUyMCUyMCUyMGxpc3RfZGF0YXNldHMlMkMlMEElMjAlMjAlMjAlMjBsaXN0X21ldHJpY3MlMkMlMEElMjAlMjAlMjAlMjBsaXN0X3JlcG9fZmlsZXMlMkMlMEElMjAlMjAlMjAlMjB1cGxvYWRfZmlsZSUyQyUwQSUyMCUyMCUyMCUyMGRlbGV0ZV9maWxlJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> (
    <span class="hljs-comment"># User management</span>
    login,
    logout,
    whoami,

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

    <span class="hljs-comment"># And some methods to retrieve/change information about the content</span>
    list_models,
    list_datasets,
    list_metrics,
    list_repo_files,
    upload_file,
    delete_file,
)`,wrap:!1}}),Qe=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGNyZWF0ZV9yZXBvJTBBJTBBY3JlYXRlX3JlcG8oJTIyZHVtbXktbW9kZWwlMjIp",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> create_repo

create_repo(<span class="hljs-string">&quot;dummy-model&quot;</span>)`,wrap:!1}}),Se=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGNyZWF0ZV9yZXBvJTBBJTBBY3JlYXRlX3JlcG8oJTIyZHVtbXktbW9kZWwlMjIlMkMlMjBvcmdhbml6YXRpb24lM0QlMjJodWdnaW5nZmFjZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> create_repo

create_repo(<span class="hljs-string">&quot;dummy-model&quot;</span>, organization=<span class="hljs-string">&quot;huggingface&quot;</span>)`,wrap:!1}}),Pe=new re({props:{title:"Usando l’interfaccia web",local:"usando-linterfaccia-web",headingTag:"h2"}}),at=new re({props:{title:"Caricare i file del modello",local:"caricare-i-file-del-modello",headingTag:"h2"}}),ct=new re({props:{title:"Usando upload_file",local:"usando-uploadfile",headingTag:"h3"}}),ut=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMHVwbG9hZF9maWxlJTBBJTBBdXBsb2FkX2ZpbGUoJTBBJTIwJTIwJTIwJTIwJTIyJTNDcGF0aF90b19maWxlJTNFJTJGY29uZmlnLmpzb24lMjIlMkMlMEElMjAlMjAlMjAlMjBwYXRoX2luX3JlcG8lM0QlMjJjb25maWcuanNvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMHJlcG9faWQlM0QlMjIlM0NuYW1lc3BhY2UlM0UlMkZkdW1teS1tb2RlbCUyMiUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> upload_file

upload_file(
    <span class="hljs-string">&quot;&lt;path_to_file&gt;/config.json&quot;</span>,
    path_in_repo=<span class="hljs-string">&quot;config.json&quot;</span>,
    repo_id=<span class="hljs-string">&quot;&lt;namespace&gt;/dummy-model&quot;</span>,
)`,wrap:!1}}),bt=new re({props:{title:"La classe Repository",local:"la-classe-repository",headingTag:"h3"}}),vt=new T({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMFJlcG9zaXRvcnklMEElMEFyZXBvJTIwJTNEJTIwUmVwb3NpdG9yeSglMjIlM0NwYXRoX3RvX2R1bW15X2ZvbGRlciUzRSUyMiUyQyUyMGNsb25lX2Zyb20lM0QlMjIlM0NuYW1lc3BhY2UlM0UlMkZkdW1teS1tb2RlbCUyMik=",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> Repository

repo = Repository(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>, clone_from=<span class="hljs-string">&quot;&lt;namespace&gt;/dummy-model&quot;</span>)`,wrap:!1}}),wt=new T({props:{code:"cmVwby5naXRfcHVsbCgpJTBBcmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoKSUwQXJlcG8uZ2l0X3B1c2goKSUwQXJlcG8uZ2l0X3RhZygp",highlighted:`repo.git_pull()
repo.git_add()
repo.git_commit()
repo.git_push()
repo.git_tag()`,wrap:!1}}),jt=new T({props:{code:"cmVwby5naXRfcHVsbCgp",highlighted:"repo.git_pull()",wrap:!1}}),Jt=new T({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMiUzQ3BhdGhfdG9fZHVtbXlfZm9sZGVyJTNFJTIyKSUwQXRva2VuaXplci5zYXZlX3ByZXRyYWluZWQoJTIyJTNDcGF0aF90b19kdW1teV9mb2xkZXIlM0UlMjIp",highlighted:`model.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;&lt;path_to_dummy_folder&gt;&quot;</span>)`,wrap:!1}}),Zt=new T({props:{code:"cmVwby5naXRfYWRkKCklMEFyZXBvLmdpdF9jb21taXQoJTIyQWRkJTIwbW9kZWwlMjBhbmQlMjB0b2tlbml6ZXIlMjBmaWxlcyUyMiklMEFyZXBvLmdpdF9wdXNoKCk=",highlighted:`repo.git_add()
repo.git_commit(<span class="hljs-string">&quot;Add model and tokenizer files&quot;</span>)
repo.git_push()`,wrap:!1}}),Gt=new re({props:{title:"L’approccio basato su git",local:"lapproccio-basato-su-git",headingTag:"h3"}}),It=new T({props:{code:"Z2l0JTIwbGZzJTIwaW5zdGFsbA==",highlighted:"git lfs install",wrap:!1}}),Ht=new T({props:{code:"VXBkYXRlZCUyMGdpdCUyMGhvb2tzLiUwQUdpdCUyMExGUyUyMGluaXRpYWxpemVkLg==",highlighted:`Updated git hooks.
Git LFS initialized.`,wrap:!1}}),Nt=new T({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGJTNDbmFtZXNwYWNlJTNFJTJGJTNDeW91ci1tb2RlbC1pZCUzRQ==",highlighted:'git <span class="hljs-built_in">clone</span> https://huggingface.co/&lt;namespace&gt;/&lt;your-model-id&gt;',wrap:!1}}),Xt=new T({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGbHlzYW5kcmUlMkZkdW1teQ==",highlighted:'git clone https:<span class="hljs-regexp">//</span>huggingface.co<span class="hljs-regexp">/lysandre/</span>dummy',wrap:!1}}),Rt=new T({props:{code:"Y2QlMjBkdW1teSUyMCUyNiUyNiUyMGxz",highlighted:'<span class="hljs-built_in">cd</span> dummy &amp;&amp; <span class="hljs-built_in">ls</span>',wrap:!1}}),Qt=new T({props:{code:"UkVBRE1FLm1k",highlighted:"README.md",wrap:!1}});const $a=[ps,cs],ul=[];function Ta(e,t){return e[0]==="pt"?0:1}A=Ta(_),R=ul[A]=$a[A](_),Ft=new T({props:{code:"bHM=",highlighted:'<span class="hljs-built_in">ls</span>',wrap:!1}});const Ua=[us,ms],dl=[];function ja(e,t){return e[0]==="pt"?0:1}Q=ja(_),Y=dl[Q]=Ua[Q](_),se=new La({props:{$$slots:{default:[ds]},$$scope:{ctx:_}}}),Dt=new T({props:{code:"Z2l0JTIwYWRkJTIwLg==",highlighted:"git add .",wrap:!1}}),Ot=new T({props:{code:"Z2l0JTIwc3RhdHVz",highlighted:"git status",wrap:!1}});const ka=[bs,fs],fl=[];function Ja(e,t){return e[0]==="pt"?0:1}S=Ja(_),q=fl[S]=ka[S](_),tl=new T({props:{code:"Z2l0JTIwbGZzJTIwc3RhdHVz",highlighted:"git lfs status",wrap:!1}});const za=[gs,Ms],bl=[];function Za(e,t){return e[0]==="pt"?0:1}E=Za(_),F=bl[E]=za[E](_),il=new T({props:{code:"Z2l0JTIwY29tbWl0JTIwLW0lMjAlMjJGaXJzdCUyMG1vZGVsJTIwdmVyc2lvbiUyMg==",highlighted:'git commit -m <span class="hljs-string">&quot;First model version&quot;</span>',wrap:!1}});const Ca=[vs,ys],Ml=[];function Ga(e,t){return e[0]==="pt"?0:1}P=Ga(_),D=Ml[P]=Ca[P](_),nl=new T({props:{code:"Z2l0JTIwcHVzaA==",highlighted:"git push",wrap:!1}}),al=new T({props:{code:"VXBsb2FkaW5nJTIwTEZTJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCgxJTJGMSklMkMlMjA0MzMlMjBNQiUyMCU3QyUyMDEuMyUyME1CJTJGcyUyQyUyMGRvbmUuJTBBRW51bWVyYXRpbmclMjBvYmplY3RzJTNBJTIwMTElMkMlMjBkb25lLiUwQUNvdW50aW5nJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCgxMSUyRjExKSUyQyUyMGRvbmUuJTBBRGVsdGElMjBjb21wcmVzc2lvbiUyMHVzaW5nJTIwdXAlMjB0byUyMDEyJTIwdGhyZWFkcyUwQUNvbXByZXNzaW5nJTIwb2JqZWN0cyUzQSUyMDEwMCUyNSUyMCg5JTJGOSklMkMlMjBkb25lLiUwQVdyaXRpbmclMjBvYmplY3RzJTNBJTIwMTAwJTI1JTIwKDklMkY5KSUyQyUyMDI4OC4yNyUyMEtpQiUyMCU3QyUyMDYuMjclMjBNaUIlMkZzJTJDJTIwZG9uZS4lMEFUb3RhbCUyMDklMjAoZGVsdGElMjAxKSUyQyUyMHJldXNlZCUyMDAlMjAoZGVsdGElMjAwKSUyQyUyMHBhY2stcmV1c2VkJTIwMCUwQVRvJTIwaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmx5c2FuZHJlJTJGZHVtbXklMEElMjAlMjAlMjA4OTFiNDFkLi5iMDhhYWIxJTIwJTIwbWFpbiUyMC0lM0UlMjBtYWlu",highlighted:`Uploading LFS objects: 100% (1/1), 433 MB | 1.3 MB/s, <span class="hljs-keyword">done</span>.
Enumerating objects: 11, <span class="hljs-keyword">done</span>.
Counting objects: 100% (11/11), <span class="hljs-keyword">done</span>.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), <span class="hljs-keyword">done</span>.
Writing objects: 100% (9/9), 288.27 KiB | 6.27 MiB/s, <span class="hljs-keyword">done</span>.
Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
To https://huggingface.co/lysandre/dummy
   891b41d..b08aab1  main -&gt; main`,wrap:!1}});function Wa(e,t){return e[0]==="pt"?_s:hs}let Io=Wa(_),O=Io(_);return sl=new Pa({props:{source:"https://github.com/huggingface/course/blob/main/chapters/it/chapter4/3.mdx"}}),{c(){o=c("meta"),r=a(),n=c("p"),d=a(),g($.$$.fragment),u=a(),g(w.$$.fragment),Z=a(),g(j.$$.fragment),J=a(),M.c(),k=a(),W=c("p"),W.textContent=x,ce=a(),g(B.$$.fragment),U=a(),C=c("p"),C.textContent=qo,Jl=a(),pe=c("p"),pe.textContent=Eo,zl=a(),me=c("ul"),me.innerHTML=Fo,Zl=a(),ue=c("p"),ue.textContent=Po,Cl=a(),g(de.$$.fragment),Gl=a(),H.c(),gl=a(),fe=c("p"),fe.innerHTML=Do,Wl=a(),be=c("p"),be.innerHTML=Ko,Bl=a(),g(Me.$$.fragment),xl=a(),ge=c("p"),ge.textContent=Oo,Il=a(),g(ye.$$.fragment),Hl=a(),ve=c("p"),ve.innerHTML=en,Ll=a(),he=c("p"),he.textContent=tn,Nl=a(),N.c(),yl=a(),_e=c("p"),_e.innerHTML=ln,Vl=a(),we=c("p"),we.textContent=on,Xl=a(),X.c(),vl=a(),$e=c("p"),$e.innerHTML=nn,Al=a(),g(Te.$$.fragment),Rl=a(),Ue=c("p"),Ue.innerHTML=an,Ql=a(),g(je.$$.fragment),Yl=a(),ke=c("p"),ke.innerHTML=sn,Sl=a(),g(Je.$$.fragment),ql=a(),ze=c("p"),ze.innerHTML=rn,El=a(),g(Ze.$$.fragment),Fl=a(),Ce=c("p"),Ce.innerHTML=cn,Pl=a(),Ge=c("p"),Ge.textContent=pn,Dl=a(),K.c(),hl=a(),g(le.$$.fragment),Kl=a(),We=c("p"),We.innerHTML=mn,Ol=a(),Be=c("p"),Be.innerHTML=un,ei=a(),xe=c("p"),xe.textContent=dn,ti=a(),g(Ie.$$.fragment),li=a(),He=c("p"),He.innerHTML=fn,ii=a(),Le=c("p"),Le.innerHTML=bn,oi=a(),g(Ne.$$.fragment),ni=a(),Ve=c("p"),Ve.innerHTML=Mn,ai=a(),g(Xe.$$.fragment),si=a(),Ae=c("p"),Ae.innerHTML=gn,ri=a(),Re=c("p"),Re.innerHTML=yn,ci=a(),g(Qe.$$.fragment),pi=a(),Ye=c("p"),Ye.innerHTML=vn,mi=a(),g(Se.$$.fragment),ui=a(),qe=c("p"),qe.innerHTML=hn,di=a(),Ee=c("ul"),Ee.innerHTML=_n,fi=a(),Fe=c("p"),Fe.textContent=wn,bi=a(),g(Pe.$$.fragment),Mi=a(),De=c("p"),De.textContent=$n,gi=a(),Ke=c("p"),Ke.innerHTML=Tn,yi=a(),ie=c("div"),ie.innerHTML=Un,vi=a(),Oe=c("p"),Oe.textContent=jn,hi=a(),et=c("p"),et.textContent=kn,_i=a(),tt=c("p"),tt.textContent=Jn,wi=a(),oe=c("div"),oe.innerHTML=zn,$i=a(),lt=c("p"),lt.textContent=Zn,Ti=a(),ne=c("div"),ne.innerHTML=Cn,Ui=a(),it=c("p"),it.textContent=Gn,ji=a(),ot=c("p"),ot.innerHTML=Wn,ki=a(),ae=c("div"),ae.innerHTML=Bn,Ji=a(),nt=c("p"),nt.textContent=xn,zi=a(),g(at.$$.fragment),Zi=a(),st=c("p"),st.innerHTML=In,Ci=a(),rt=c("p"),rt.innerHTML=Hn,Gi=a(),g(ct.$$.fragment),Wi=a(),pt=c("p"),pt.innerHTML=Ln,Bi=a(),mt=c("p"),mt.textContent=Nn,xi=a(),g(ut.$$.fragment),Ii=a(),dt=c("p"),dt.innerHTML=Vn,Hi=a(),ft=c("ul"),ft.innerHTML=Xn,Li=a(),g(bt.$$.fragment),Ni=a(),Mt=c("p"),Mt.innerHTML=An,Vi=a(),gt=c("p"),gt.innerHTML=Rn,Xi=a(),yt=c("p"),yt.textContent=Qn,Ai=a(),g(vt.$$.fragment),Ri=a(),ht=c("p"),ht.innerHTML=Yn,Qi=a(),_t=c("p"),_t.textContent=Sn,Yi=a(),g(wt.$$.fragment),Si=a(),$t=c("p"),$t.innerHTML=qn,qi=a(),Tt=c("p"),Tt.textContent=En,Ei=a(),Ut=c("p"),Ut.textContent=Fn,Fi=a(),g(jt.$$.fragment),Pi=a(),kt=c("p"),kt.textContent=Pn,Di=a(),g(Jt.$$.fragment),Ki=a(),zt=c("p"),zt.innerHTML=Dn,Oi=a(),g(Zt.$$.fragment),eo=a(),Ct=c("p"),Ct.textContent=Kn,to=a(),g(Gt.$$.fragment),lo=a(),Wt=c("p"),Wt.textContent=On,io=a(),Bt=c("p"),Bt.innerHTML=ea,oo=a(),xt=c("p"),xt.textContent=ta,no=a(),g(It.$$.fragment),ao=a(),g(Ht.$$.fragment),so=a(),Lt=c("p"),Lt.textContent=la,ro=a(),g(Nt.$$.fragment),co=a(),Vt=c("p"),Vt.innerHTML=ia,po=a(),g(Xt.$$.fragment),mo=a(),At=c("p"),At.innerHTML=oa,uo=a(),g(Rt.$$.fragment),fo=a(),g(Qt.$$.fragment),bo=a(),Yt=c("p"),Yt.innerHTML=na,Mo=a(),St=c("p"),St.innerHTML=aa,go=a(),qt=c("p"),qt.textContent=sa,yo=a(),R.c(),_l=a(),Et=c("p"),Et.innerHTML=ra,vo=a(),g(Ft.$$.fragment),ho=a(),Y.c(),wl=a(),g(se.$$.fragment),_o=a(),Pt=c("p"),Pt.innerHTML=ca,wo=a(),g(Dt.$$.fragment),$o=a(),Kt=c("p"),Kt.textContent=pa,To=a(),g(Ot.$$.fragment),Uo=a(),q.c(),$l=a(),el=c("p"),el.innerHTML=ma,jo=a(),g(tl.$$.fragment),ko=a(),F.c(),Tl=a(),ll=c("p"),ll.innerHTML=ua,Jo=a(),g(il.$$.fragment),zo=a(),D.c(),Ul=a(),ol=c("p"),ol.textContent=da,Zo=a(),g(nl.$$.fragment),Co=a(),g(al.$$.fragment),Go=a(),O.c(),jl=a(),g(sl.$$.fragment),Wo=a(),kl=c("p"),this.h()},l(e){const t=Ya("svelte-u9bgzb",document.head);o=p(t,"META",{name:!0,content:!0}),t.forEach(l),r=s(e),n=p(e,"P",{}),Ha(n).forEach(l),d=s(e),y($.$$.fragment,e),u=s(e),y(w.$$.fragment,e),Z=s(e),y(j.$$.fragment,e),J=s(e),M.l(e),k=s(e),W=p(e,"P",{"data-svelte-h":!0}),m(W)!=="svelte-16clka8"&&(W.textContent=x),ce=s(e),y(B.$$.fragment,e),U=s(e),C=p(e,"P",{"data-svelte-h":!0}),m(C)!=="svelte-1qixhsh"&&(C.textContent=qo),Jl=s(e),pe=p(e,"P",{"data-svelte-h":!0}),m(pe)!=="svelte-1xakcio"&&(pe.textContent=Eo),zl=s(e),me=p(e,"UL",{"data-svelte-h":!0}),m(me)!=="svelte-4er5l7"&&(me.innerHTML=Fo),Zl=s(e),ue=p(e,"P",{"data-svelte-h":!0}),m(ue)!=="svelte-ej74jm"&&(ue.textContent=Po),Cl=s(e),y(de.$$.fragment,e),Gl=s(e),H.l(e),gl=s(e),fe=p(e,"P",{"data-svelte-h":!0}),m(fe)!=="svelte-1kxgnt0"&&(fe.innerHTML=Do),Wl=s(e),be=p(e,"P",{"data-svelte-h":!0}),m(be)!=="svelte-dfqwzt"&&(be.innerHTML=Ko),Bl=s(e),y(Me.$$.fragment,e),xl=s(e),ge=p(e,"P",{"data-svelte-h":!0}),m(ge)!=="svelte-1kimy9l"&&(ge.textContent=Oo),Il=s(e),y(ye.$$.fragment,e),Hl=s(e),ve=p(e,"P",{"data-svelte-h":!0}),m(ve)!=="svelte-vfiqlo"&&(ve.innerHTML=en),Ll=s(e),he=p(e,"P",{"data-svelte-h":!0}),m(he)!=="svelte-zlykx5"&&(he.textContent=tn),Nl=s(e),N.l(e),yl=s(e),_e=p(e,"P",{"data-svelte-h":!0}),m(_e)!=="svelte-1ggy836"&&(_e.innerHTML=ln),Vl=s(e),we=p(e,"P",{"data-svelte-h":!0}),m(we)!=="svelte-lkmg5p"&&(we.textContent=on),Xl=s(e),X.l(e),vl=s(e),$e=p(e,"P",{"data-svelte-h":!0}),m($e)!=="svelte-16mbsxy"&&($e.innerHTML=nn),Al=s(e),y(Te.$$.fragment,e),Rl=s(e),Ue=p(e,"P",{"data-svelte-h":!0}),m(Ue)!=="svelte-t8szzf"&&(Ue.innerHTML=an),Ql=s(e),y(je.$$.fragment,e),Yl=s(e),ke=p(e,"P",{"data-svelte-h":!0}),m(ke)!=="svelte-1c8frly"&&(ke.innerHTML=sn),Sl=s(e),y(Je.$$.fragment,e),ql=s(e),ze=p(e,"P",{"data-svelte-h":!0}),m(ze)!=="svelte-23h2gg"&&(ze.innerHTML=rn),El=s(e),y(Ze.$$.fragment,e),Fl=s(e),Ce=p(e,"P",{"data-svelte-h":!0}),m(Ce)!=="svelte-4qdpib"&&(Ce.innerHTML=cn),Pl=s(e),Ge=p(e,"P",{"data-svelte-h":!0}),m(Ge)!=="svelte-8hpbon"&&(Ge.textContent=pn),Dl=s(e),K.l(e),hl=s(e),y(le.$$.fragment,e),Kl=s(e),We=p(e,"P",{"data-svelte-h":!0}),m(We)!=="svelte-t0d6vl"&&(We.innerHTML=mn),Ol=s(e),Be=p(e,"P",{"data-svelte-h":!0}),m(Be)!=="svelte-trbtbc"&&(Be.innerHTML=un),ei=s(e),xe=p(e,"P",{"data-svelte-h":!0}),m(xe)!=="svelte-1r9guc3"&&(xe.textContent=dn),ti=s(e),y(Ie.$$.fragment,e),li=s(e),He=p(e,"P",{"data-svelte-h":!0}),m(He)!=="svelte-11seluq"&&(He.innerHTML=fn),ii=s(e),Le=p(e,"P",{"data-svelte-h":!0}),m(Le)!=="svelte-71jggu"&&(Le.innerHTML=bn),oi=s(e),y(Ne.$$.fragment,e),ni=s(e),Ve=p(e,"P",{"data-svelte-h":!0}),m(Ve)!=="svelte-1nwx823"&&(Ve.innerHTML=Mn),ai=s(e),y(Xe.$$.fragment,e),si=s(e),Ae=p(e,"P",{"data-svelte-h":!0}),m(Ae)!=="svelte-1dd5tni"&&(Ae.innerHTML=gn),ri=s(e),Re=p(e,"P",{"data-svelte-h":!0}),m(Re)!=="svelte-1x2lcep"&&(Re.innerHTML=yn),ci=s(e),y(Qe.$$.fragment,e),pi=s(e),Ye=p(e,"P",{"data-svelte-h":!0}),m(Ye)!=="svelte-1cmra5r"&&(Ye.innerHTML=vn),mi=s(e),y(Se.$$.fragment,e),ui=s(e),qe=p(e,"P",{"data-svelte-h":!0}),m(qe)!=="svelte-1nw3wks"&&(qe.innerHTML=hn),di=s(e),Ee=p(e,"UL",{"data-svelte-h":!0}),m(Ee)!=="svelte-1iai7k"&&(Ee.innerHTML=_n),fi=s(e),Fe=p(e,"P",{"data-svelte-h":!0}),m(Fe)!=="svelte-fyv1j4"&&(Fe.textContent=wn),bi=s(e),y(Pe.$$.fragment,e),Mi=s(e),De=p(e,"P",{"data-svelte-h":!0}),m(De)!=="svelte-bocugy"&&(De.textContent=$n),gi=s(e),Ke=p(e,"P",{"data-svelte-h":!0}),m(Ke)!=="svelte-7lwjdv"&&(Ke.innerHTML=Tn),yi=s(e),ie=p(e,"DIV",{class:!0,"data-svelte-h":!0}),m(ie)!=="svelte-4qsgxt"&&(ie.innerHTML=Un),vi=s(e),Oe=p(e,"P",{"data-svelte-h":!0}),m(Oe)!=="svelte-1rphb0o"&&(Oe.textContent=jn),hi=s(e),et=p(e,"P",{"data-svelte-h":!0}),m(et)!=="svelte-w6kapr"&&(et.textContent=kn),_i=s(e),tt=p(e,"P",{"data-svelte-h":!0}),m(tt)!=="svelte-jc7d13"&&(tt.textContent=Jn),wi=s(e),oe=p(e,"DIV",{class:!0,"data-svelte-h":!0}),m(oe)!=="svelte-1xh6nig"&&(oe.innerHTML=zn),$i=s(e),lt=p(e,"P",{"data-svelte-h":!0}),m(lt)!=="svelte-182mlhu"&&(lt.textContent=Zn),Ti=s(e),ne=p(e,"DIV",{class:!0,"data-svelte-h":!0}),m(ne)!=="svelte-1jm8l0p"&&(ne.innerHTML=Cn),Ui=s(e),it=p(e,"P",{"data-svelte-h":!0}),m(it)!=="svelte-xnfhjk"&&(it.textContent=Gn),ji=s(e),ot=p(e,"P",{"data-svelte-h":!0}),m(ot)!=="svelte-1j8bjae"&&(ot.innerHTML=Wn),ki=s(e),ae=p(e,"DIV",{class:!0,"data-svelte-h":!0}),m(ae)!=="svelte-1kuf5jc"&&(ae.innerHTML=Bn),Ji=s(e),nt=p(e,"P",{"data-svelte-h":!0}),m(nt)!=="svelte-gjrawb"&&(nt.textContent=xn),zi=s(e),y(at.$$.fragment,e),Zi=s(e),st=p(e,"P",{"data-svelte-h":!0}),m(st)!=="svelte-u5wh3"&&(st.innerHTML=In),Ci=s(e),rt=p(e,"P",{"data-svelte-h":!0}),m(rt)!=="svelte-1ho9it6"&&(rt.innerHTML=Hn),Gi=s(e),y(ct.$$.fragment,e),Wi=s(e),pt=p(e,"P",{"data-svelte-h":!0}),m(pt)!=="svelte-1ya8jrs"&&(pt.innerHTML=Ln),Bi=s(e),mt=p(e,"P",{"data-svelte-h":!0}),m(mt)!=="svelte-zmxaea"&&(mt.textContent=Nn),xi=s(e),y(ut.$$.fragment,e),Ii=s(e),dt=p(e,"P",{"data-svelte-h":!0}),m(dt)!=="svelte-15pomgl"&&(dt.innerHTML=Vn),Hi=s(e),ft=p(e,"UL",{"data-svelte-h":!0}),m(ft)!=="svelte-8uzkpa"&&(ft.innerHTML=Xn),Li=s(e),y(bt.$$.fragment,e),Ni=s(e),Mt=p(e,"P",{"data-svelte-h":!0}),m(Mt)!=="svelte-12kam6f"&&(Mt.innerHTML=An),Vi=s(e),gt=p(e,"P",{"data-svelte-h":!0}),m(gt)!=="svelte-14bts5l"&&(gt.innerHTML=Rn),Xi=s(e),yt=p(e,"P",{"data-svelte-h":!0}),m(yt)!=="svelte-1gf8nt9"&&(yt.textContent=Qn),Ai=s(e),y(vt.$$.fragment,e),Ri=s(e),ht=p(e,"P",{"data-svelte-h":!0}),m(ht)!=="svelte-1fuj006"&&(ht.innerHTML=Yn),Qi=s(e),_t=p(e,"P",{"data-svelte-h":!0}),m(_t)!=="svelte-1a8b4ea"&&(_t.textContent=Sn),Yi=s(e),y(wt.$$.fragment,e),Si=s(e),$t=p(e,"P",{"data-svelte-h":!0}),m($t)!=="svelte-uz9vgj"&&($t.innerHTML=qn),qi=s(e),Tt=p(e,"P",{"data-svelte-h":!0}),m(Tt)!=="svelte-qtglwn"&&(Tt.textContent=En),Ei=s(e),Ut=p(e,"P",{"data-svelte-h":!0}),m(Ut)!=="svelte-1e0ymn"&&(Ut.textContent=Fn),Fi=s(e),y(jt.$$.fragment,e),Pi=s(e),kt=p(e,"P",{"data-svelte-h":!0}),m(kt)!=="svelte-1tuw7ek"&&(kt.textContent=Pn),Di=s(e),y(Jt.$$.fragment,e),Ki=s(e),zt=p(e,"P",{"data-svelte-h":!0}),m(zt)!=="svelte-pcwdjt"&&(zt.innerHTML=Dn),Oi=s(e),y(Zt.$$.fragment,e),eo=s(e),Ct=p(e,"P",{"data-svelte-h":!0}),m(Ct)!=="svelte-r1927j"&&(Ct.textContent=Kn),to=s(e),y(Gt.$$.fragment,e),lo=s(e),Wt=p(e,"P",{"data-svelte-h":!0}),m(Wt)!=="svelte-8065vw"&&(Wt.textContent=On),io=s(e),Bt=p(e,"P",{"data-svelte-h":!0}),m(Bt)!=="svelte-redhn8"&&(Bt.innerHTML=ea),oo=s(e),xt=p(e,"P",{"data-svelte-h":!0}),m(xt)!=="svelte-1vfwor1"&&(xt.textContent=ta),no=s(e),y(It.$$.fragment,e),ao=s(e),y(Ht.$$.fragment,e),so=s(e),Lt=p(e,"P",{"data-svelte-h":!0}),m(Lt)!=="svelte-8e4zky"&&(Lt.textContent=la),ro=s(e),y(Nt.$$.fragment,e),co=s(e),Vt=p(e,"P",{"data-svelte-h":!0}),m(Vt)!=="svelte-1v2m3lg"&&(Vt.innerHTML=ia),po=s(e),y(Xt.$$.fragment,e),mo=s(e),At=p(e,"P",{"data-svelte-h":!0}),m(At)!=="svelte-14rh87b"&&(At.innerHTML=oa),uo=s(e),y(Rt.$$.fragment,e),fo=s(e),y(Qt.$$.fragment,e),bo=s(e),Yt=p(e,"P",{"data-svelte-h":!0}),m(Yt)!=="svelte-ck4lwh"&&(Yt.innerHTML=na),Mo=s(e),St=p(e,"P",{"data-svelte-h":!0}),m(St)!=="svelte-1c7mg0b"&&(St.innerHTML=aa),go=s(e),qt=p(e,"P",{"data-svelte-h":!0}),m(qt)!=="svelte-li60mo"&&(qt.textContent=sa),yo=s(e),R.l(e),_l=s(e),Et=p(e,"P",{"data-svelte-h":!0}),m(Et)!=="svelte-1y1trp7"&&(Et.innerHTML=ra),vo=s(e),y(Ft.$$.fragment,e),ho=s(e),Y.l(e),wl=s(e),y(se.$$.fragment,e),_o=s(e),Pt=p(e,"P",{"data-svelte-h":!0}),m(Pt)!=="svelte-1ggznpy"&&(Pt.innerHTML=ca),wo=s(e),y(Dt.$$.fragment,e),$o=s(e),Kt=p(e,"P",{"data-svelte-h":!0}),m(Kt)!=="svelte-1k0ty1c"&&(Kt.textContent=pa),To=s(e),y(Ot.$$.fragment,e),Uo=s(e),q.l(e),$l=s(e),el=p(e,"P",{"data-svelte-h":!0}),m(el)!=="svelte-pox5es"&&(el.innerHTML=ma),jo=s(e),y(tl.$$.fragment,e),ko=s(e),F.l(e),Tl=s(e),ll=p(e,"P",{"data-svelte-h":!0}),m(ll)!=="svelte-rfuj4k"&&(ll.innerHTML=ua),Jo=s(e),y(il.$$.fragment,e),zo=s(e),D.l(e),Ul=s(e),ol=p(e,"P",{"data-svelte-h":!0}),m(ol)!=="svelte-h86uga"&&(ol.textContent=da),Zo=s(e),y(nl.$$.fragment,e),Co=s(e),y(al.$$.fragment,e),Go=s(e),O.l(e),jl=s(e),y(sl.$$.fragment,e),Wo=s(e),kl=p(e,"P",{}),Ha(kl).forEach(l),this.h()},h(){G(o,"name","hf:doc:metadata"),G(o,"content",$s),G(ie,"class","flex justify-center"),G(oe,"class","flex justify-center"),G(ne,"class","flex justify-center"),G(ae,"class","flex justify-center")},m(e,t){Sa(document.head,o),i(e,r,t),i(e,n,t),i(e,d,t),v($,e,t),i(e,u,t),v(w,e,t),i(e,Z,t),v(j,e,t),i(e,J,t),rl[z].m(e,t),i(e,k,t),i(e,W,t),i(e,ce,t),v(B,e,t),i(e,U,t),i(e,C,t),i(e,Jl,t),i(e,pe,t),i(e,zl,t),i(e,me,t),i(e,Zl,t),i(e,ue,t),i(e,Cl,t),v(de,e,t),i(e,Gl,t),cl[I].m(e,t),i(e,gl,t),i(e,fe,t),i(e,Wl,t),i(e,be,t),i(e,Bl,t),v(Me,e,t),i(e,xl,t),i(e,ge,t),i(e,Il,t),v(ye,e,t),i(e,Hl,t),i(e,ve,t),i(e,Ll,t),i(e,he,t),i(e,Nl,t),pl[L].m(e,t),i(e,yl,t),i(e,_e,t),i(e,Vl,t),i(e,we,t),i(e,Xl,t),ml[V].m(e,t),i(e,vl,t),i(e,$e,t),i(e,Al,t),v(Te,e,t),i(e,Rl,t),i(e,Ue,t),i(e,Ql,t),v(je,e,t),i(e,Yl,t),i(e,ke,t),i(e,Sl,t),v(Je,e,t),i(e,ql,t),i(e,ze,t),i(e,El,t),v(Ze,e,t),i(e,Fl,t),i(e,Ce,t),i(e,Pl,t),i(e,Ge,t),i(e,Dl,t),K.m(e,t),i(e,hl,t),v(le,e,t),i(e,Kl,t),i(e,We,t),i(e,Ol,t),i(e,Be,t),i(e,ei,t),i(e,xe,t),i(e,ti,t),v(Ie,e,t),i(e,li,t),i(e,He,t),i(e,ii,t),i(e,Le,t),i(e,oi,t),v(Ne,e,t),i(e,ni,t),i(e,Ve,t),i(e,ai,t),v(Xe,e,t),i(e,si,t),i(e,Ae,t),i(e,ri,t),i(e,Re,t),i(e,ci,t),v(Qe,e,t),i(e,pi,t),i(e,Ye,t),i(e,mi,t),v(Se,e,t),i(e,ui,t),i(e,qe,t),i(e,di,t),i(e,Ee,t),i(e,fi,t),i(e,Fe,t),i(e,bi,t),v(Pe,e,t),i(e,Mi,t),i(e,De,t),i(e,gi,t),i(e,Ke,t),i(e,yi,t),i(e,ie,t),i(e,vi,t),i(e,Oe,t),i(e,hi,t),i(e,et,t),i(e,_i,t),i(e,tt,t),i(e,wi,t),i(e,oe,t),i(e,$i,t),i(e,lt,t),i(e,Ti,t),i(e,ne,t),i(e,Ui,t),i(e,it,t),i(e,ji,t),i(e,ot,t),i(e,ki,t),i(e,ae,t),i(e,Ji,t),i(e,nt,t),i(e,zi,t),v(at,e,t),i(e,Zi,t),i(e,st,t),i(e,Ci,t),i(e,rt,t),i(e,Gi,t),v(ct,e,t),i(e,Wi,t),i(e,pt,t),i(e,Bi,t),i(e,mt,t),i(e,xi,t),v(ut,e,t),i(e,Ii,t),i(e,dt,t),i(e,Hi,t),i(e,ft,t),i(e,Li,t),v(bt,e,t),i(e,Ni,t),i(e,Mt,t),i(e,Vi,t),i(e,gt,t),i(e,Xi,t),i(e,yt,t),i(e,Ai,t),v(vt,e,t),i(e,Ri,t),i(e,ht,t),i(e,Qi,t),i(e,_t,t),i(e,Yi,t),v(wt,e,t),i(e,Si,t),i(e,$t,t),i(e,qi,t),i(e,Tt,t),i(e,Ei,t),i(e,Ut,t),i(e,Fi,t),v(jt,e,t),i(e,Pi,t),i(e,kt,t),i(e,Di,t),v(Jt,e,t),i(e,Ki,t),i(e,zt,t),i(e,Oi,t),v(Zt,e,t),i(e,eo,t),i(e,Ct,t),i(e,to,t),v(Gt,e,t),i(e,lo,t),i(e,Wt,t),i(e,io,t),i(e,Bt,t),i(e,oo,t),i(e,xt,t),i(e,no,t),v(It,e,t),i(e,ao,t),v(Ht,e,t),i(e,so,t),i(e,Lt,t),i(e,ro,t),v(Nt,e,t),i(e,co,t),i(e,Vt,t),i(e,po,t),v(Xt,e,t),i(e,mo,t),i(e,At,t),i(e,uo,t),v(Rt,e,t),i(e,fo,t),v(Qt,e,t),i(e,bo,t),i(e,Yt,t),i(e,Mo,t),i(e,St,t),i(e,go,t),i(e,qt,t),i(e,yo,t),ul[A].m(e,t),i(e,_l,t),i(e,Et,t),i(e,vo,t),v(Ft,e,t),i(e,ho,t),dl[Q].m(e,t),i(e,wl,t),v(se,e,t),i(e,_o,t),i(e,Pt,t),i(e,wo,t),v(Dt,e,t),i(e,$o,t),i(e,Kt,t),i(e,To,t),v(Ot,e,t),i(e,Uo,t),fl[S].m(e,t),i(e,$l,t),i(e,el,t),i(e,jo,t),v(tl,e,t),i(e,ko,t),bl[E].m(e,t),i(e,Tl,t),i(e,ll,t),i(e,Jo,t),v(il,e,t),i(e,zo,t),Ml[P].m(e,t),i(e,Ul,t),i(e,ol,t),i(e,Zo,t),v(nl,e,t),i(e,Co,t),v(al,e,t),i(e,Go,t),O.m(e,t),i(e,jl,t),v(sl,e,t),i(e,Wo,t),i(e,kl,t),Bo=!0},p(e,[t]){const Ba={};t&1&&(Ba.fw=e[0]),$.$set(Ba);let Ho=z;z=ba(e),z!==Ho&&(te(),f(rl[Ho],1,1,()=>{rl[Ho]=null}),ee(),M=rl[z],M||(M=rl[z]=fa[z](e),M.c()),b(M,1),M.m(k.parentNode,k));let Lo=I;I=ga(e),I!==Lo&&(te(),f(cl[Lo],1,1,()=>{cl[Lo]=null}),ee(),H=cl[I],H||(H=cl[I]=Ma[I](e),H.c()),b(H,1),H.m(gl.parentNode,gl));let No=L;L=va(e),L!==No&&(te(),f(pl[No],1,1,()=>{pl[No]=null}),ee(),N=pl[L],N||(N=pl[L]=ya[L](e),N.c()),b(N,1),N.m(yl.parentNode,yl));let Vo=V;V=_a(e),V!==Vo&&(te(),f(ml[Vo],1,1,()=>{ml[Vo]=null}),ee(),X=ml[V],X||(X=ml[V]=ha[V](e),X.c()),b(X,1),X.m(vl.parentNode,vl)),xo!==(xo=wa(e))&&(K.d(1),K=xo(e),K&&(K.c(),K.m(hl.parentNode,hl)));const xa={};t&2&&(xa.$$scope={dirty:t,ctx:e}),le.$set(xa);let Xo=A;A=Ta(e),A!==Xo&&(te(),f(ul[Xo],1,1,()=>{ul[Xo]=null}),ee(),R=ul[A],R||(R=ul[A]=$a[A](e),R.c()),b(R,1),R.m(_l.parentNode,_l));let Ao=Q;Q=ja(e),Q!==Ao&&(te(),f(dl[Ao],1,1,()=>{dl[Ao]=null}),ee(),Y=dl[Q],Y||(Y=dl[Q]=Ua[Q](e),Y.c()),b(Y,1),Y.m(wl.parentNode,wl));const Ia={};t&2&&(Ia.$$scope={dirty:t,ctx:e}),se.$set(Ia);let Ro=S;S=Ja(e),S!==Ro&&(te(),f(fl[Ro],1,1,()=>{fl[Ro]=null}),ee(),q=fl[S],q||(q=fl[S]=ka[S](e),q.c()),b(q,1),q.m($l.parentNode,$l));let Qo=E;E=Za(e),E!==Qo&&(te(),f(bl[Qo],1,1,()=>{bl[Qo]=null}),ee(),F=bl[E],F||(F=bl[E]=za[E](e),F.c()),b(F,1),F.m(Tl.parentNode,Tl));let Yo=P;P=Ga(e),P!==Yo&&(te(),f(Ml[Yo],1,1,()=>{Ml[Yo]=null}),ee(),D=Ml[P],D||(D=Ml[P]=Ca[P](e),D.c()),b(D,1),D.m(Ul.parentNode,Ul)),Io!==(Io=Wa(e))&&(O.d(1),O=Io(e),O&&(O.c(),O.m(jl.parentNode,jl)))},i(e){Bo||(b($.$$.fragment,e),b(w.$$.fragment,e),b(j.$$.fragment,e),b(M),b(B.$$.fragment,e),b(de.$$.fragment,e),b(H),b(Me.$$.fragment,e),b(ye.$$.fragment,e),b(N),b(X),b(Te.$$.fragment,e),b(je.$$.fragment,e),b(Je.$$.fragment,e),b(Ze.$$.fragment,e),b(le.$$.fragment,e),b(Ie.$$.fragment,e),b(Ne.$$.fragment,e),b(Xe.$$.fragment,e),b(Qe.$$.fragment,e),b(Se.$$.fragment,e),b(Pe.$$.fragment,e),b(at.$$.fragment,e),b(ct.$$.fragment,e),b(ut.$$.fragment,e),b(bt.$$.fragment,e),b(vt.$$.fragment,e),b(wt.$$.fragment,e),b(jt.$$.fragment,e),b(Jt.$$.fragment,e),b(Zt.$$.fragment,e),b(Gt.$$.fragment,e),b(It.$$.fragment,e),b(Ht.$$.fragment,e),b(Nt.$$.fragment,e),b(Xt.$$.fragment,e),b(Rt.$$.fragment,e),b(Qt.$$.fragment,e),b(R),b(Ft.$$.fragment,e),b(Y),b(se.$$.fragment,e),b(Dt.$$.fragment,e),b(Ot.$$.fragment,e),b(q),b(tl.$$.fragment,e),b(F),b(il.$$.fragment,e),b(D),b(nl.$$.fragment,e),b(al.$$.fragment,e),b(sl.$$.fragment,e),Bo=!0)},o(e){f($.$$.fragment,e),f(w.$$.fragment,e),f(j.$$.fragment,e),f(M),f(B.$$.fragment,e),f(de.$$.fragment,e),f(H),f(Me.$$.fragment,e),f(ye.$$.fragment,e),f(N),f(X),f(Te.$$.fragment,e),f(je.$$.fragment,e),f(Je.$$.fragment,e),f(Ze.$$.fragment,e),f(le.$$.fragment,e),f(Ie.$$.fragment,e),f(Ne.$$.fragment,e),f(Xe.$$.fragment,e),f(Qe.$$.fragment,e),f(Se.$$.fragment,e),f(Pe.$$.fragment,e),f(at.$$.fragment,e),f(ct.$$.fragment,e),f(ut.$$.fragment,e),f(bt.$$.fragment,e),f(vt.$$.fragment,e),f(wt.$$.fragment,e),f(jt.$$.fragment,e),f(Jt.$$.fragment,e),f(Zt.$$.fragment,e),f(Gt.$$.fragment,e),f(It.$$.fragment,e),f(Ht.$$.fragment,e),f(Nt.$$.fragment,e),f(Xt.$$.fragment,e),f(Rt.$$.fragment,e),f(Qt.$$.fragment,e),f(R),f(Ft.$$.fragment,e),f(Y),f(se.$$.fragment,e),f(Dt.$$.fragment,e),f(Ot.$$.fragment,e),f(q),f(tl.$$.fragment,e),f(F),f(il.$$.fragment,e),f(D),f(nl.$$.fragment,e),f(al.$$.fragment,e),f(sl.$$.fragment,e),Bo=!1},d(e){e&&(l(r),l(n),l(d),l(u),l(Z),l(J),l(k),l(W),l(ce),l(U),l(C),l(Jl),l(pe),l(zl),l(me),l(Zl),l(ue),l(Cl),l(Gl),l(gl),l(fe),l(Wl),l(be),l(Bl),l(xl),l(ge),l(Il),l(Hl),l(ve),l(Ll),l(he),l(Nl),l(yl),l(_e),l(Vl),l(we),l(Xl),l(vl),l($e),l(Al),l(Rl),l(Ue),l(Ql),l(Yl),l(ke),l(Sl),l(ql),l(ze),l(El),l(Fl),l(Ce),l(Pl),l(Ge),l(Dl),l(hl),l(Kl),l(We),l(Ol),l(Be),l(ei),l(xe),l(ti),l(li),l(He),l(ii),l(Le),l(oi),l(ni),l(Ve),l(ai),l(si),l(Ae),l(ri),l(Re),l(ci),l(pi),l(Ye),l(mi),l(ui),l(qe),l(di),l(Ee),l(fi),l(Fe),l(bi),l(Mi),l(De),l(gi),l(Ke),l(yi),l(ie),l(vi),l(Oe),l(hi),l(et),l(_i),l(tt),l(wi),l(oe),l($i),l(lt),l(Ti),l(ne),l(Ui),l(it),l(ji),l(ot),l(ki),l(ae),l(Ji),l(nt),l(zi),l(Zi),l(st),l(Ci),l(rt),l(Gi),l(Wi),l(pt),l(Bi),l(mt),l(xi),l(Ii),l(dt),l(Hi),l(ft),l(Li),l(Ni),l(Mt),l(Vi),l(gt),l(Xi),l(yt),l(Ai),l(Ri),l(ht),l(Qi),l(_t),l(Yi),l(Si),l($t),l(qi),l(Tt),l(Ei),l(Ut),l(Fi),l(Pi),l(kt),l(Di),l(Ki),l(zt),l(Oi),l(eo),l(Ct),l(to),l(lo),l(Wt),l(io),l(Bt),l(oo),l(xt),l(no),l(ao),l(so),l(Lt),l(ro),l(co),l(Vt),l(po),l(mo),l(At),l(uo),l(fo),l(bo),l(Yt),l(Mo),l(St),l(go),l(qt),l(yo),l(_l),l(Et),l(vo),l(ho),l(wl),l(_o),l(Pt),l(wo),l($o),l(Kt),l(To),l(Uo),l($l),l(el),l(jo),l(ko),l(Tl),l(ll),l(Jo),l(zo),l(Ul),l(ol),l(Zo),l(Co),l(Go),l(jl),l(Wo),l(kl)),l(o),h($,e),h(w,e),h(j,e),rl[z].d(e),h(B,e),h(de,e),cl[I].d(e),h(Me,e),h(ye,e),pl[L].d(e),ml[V].d(e),h(Te,e),h(je,e),h(Je,e),h(Ze,e),K.d(e),h(le,e),h(Ie,e),h(Ne,e),h(Xe,e),h(Qe,e),h(Se,e),h(Pe,e),h(at,e),h(ct,e),h(ut,e),h(bt,e),h(vt,e),h(wt,e),h(jt,e),h(Jt,e),h(Zt,e),h(Gt,e),h(It,e),h(Ht,e),h(Nt,e),h(Xt,e),h(Rt,e),h(Qt,e),ul[A].d(e),h(Ft,e),dl[Q].d(e),h(se,e),h(Dt,e),h(Ot,e),fl[S].d(e),h(tl,e),bl[E].d(e),h(il,e),Ml[P].d(e),h(nl,e),h(al,e),O.d(e),h(sl,e)}}}const $s='{"title":"Condividere modelli pre-addestrati","local":"condividere-modelli-pre-addestrati","sections":[{"title":"Utilizzando la funzione push_to_hub dell’API","local":"utilizzando-la-funzione-pushtohub-dellapi","sections":[],"depth":2},{"title":"Utilizzando la libreria Python huggingface_hub","local":"utilizzando-la-libreria-python-huggingfacehub","sections":[],"depth":2},{"title":"Usando l’interfaccia web","local":"usando-linterfaccia-web","sections":[],"depth":2},{"title":"Caricare i file del modello","local":"caricare-i-file-del-modello","sections":[{"title":"Usando upload_file","local":"usando-uploadfile","sections":[],"depth":3},{"title":"La classe Repository","local":"la-classe-repository","sections":[],"depth":3},{"title":"L’approccio basato su git","local":"lapproccio-basato-su-git","sections":[],"depth":3}],"depth":2}],"depth":1}';function Ts(_,o,r){let n="pt";return Xa(()=>{const d=new URLSearchParams(window.location.search);r(0,n=d.get("fw")||"pt")}),[n]}class Ws extends Ra{constructor(o){super(),Qa(this,o,Ts,ws,Va,{})}}export{Ws as component};
