import{s as gt,o as wt,n as Mt}from"../chunks/scheduler.36a0863c.js";import{S as jt,i as _t,g as n,s as i,u as d,A as $t,h as o,f as s,c as l,j as w,v as h,y as p,k as m,o as c,a,w as u,d as f,t as y,x as v}from"../chunks/index.d0f7a4c4.js";import{T as bt}from"../chunks/Tip.4c7d7eb1.js";import{I as Ne}from"../chunks/IconCopyLink.bc5fad79.js";import{C as k}from"../chunks/CodeBlock.69433f87.js";function xt(ce){let r,U="Nota che il modello creato casualmente è inizializzato con tensori “vuoti”, che occupano spazio in memoria ma senza riempirlo (quindi i valori casuali sono quelli che si trovavano in questa porzione di memoria in un determinato momento). L’inizializzazione casuale che segue la distribuzione appropriata per il tipo di modello/parametri istanziato (come la distribuzione normale per le istanze) è eseguito solo dopo il passaggio 3 sui pesi non inizializzati, per essere più rapido possibile!";return{c(){r=n("p"),r.textContent=U},l(g){r=o(g,"P",{"data-svelte-h":!0}),p(r)!=="svelte-exxgkr"&&(r.textContent=U)},m(g,ae){a(g,r,ae)},p:Mt,d(g){g&&s(r)}}}function Ct(ce){let r,U,g,ae,M,$,oe,z,Ae,ie,Ve="Istanziare un big model",de,T,Fe=`Quando vuoi utilizzare un modello preaddestrato (pretrained) molto grande, una sfida è minimizzare l’uso della RAM. Il workflow classico
in PyTorch è:`,he,J,Qe="<li>Crea il tuo modello con pesi casuali (random weights).</li> <li>Carica i tuoi pesi preaddestrati.</li> <li>Inserisci i pesi preaddestrati nel tuo modello casuale.</li>",ue,Z,Ye="I passi 1 e 2 una versione completa del modello in memoria, in molti casi non è un problema, ma se il modello inizia a pesare diversi GigaBytes, queste due copie possono sturare la nostra RAM. Ancora peggio, se stai usando <code>torch.distributed</code> per seguire l’addestramento (training) in distribuito, ogni processo caricherà il modello preaddestrato e memorizzerà queste due copie nella RAM.",fe,b,ye,B,Ke="In questa guida, esploreremo le soluzioni che Transformers offre per affrontare questo problema. C’è da tenere in conto che questa è un’area in cui si sta attualmente sviluppando, quindi le API spiegate qui possono variare velocemente in futuro.",ve,j,x,pe,I,Pe,le,De="Checkpoints condivisi",ge,R,Oe="Dalla versione 4.18.0, i checkpoints dei modelli che occupano più di 10GB di spazio vengono automaticamente frammentati in più parti. Per quanto riguarda la possibilità di avere un unico checkpoint quando si utilizza <code>model.save_pretrained(save_dir)</code>, si hanno diversi checkpoint parziali (ognuno con dimensione &lt; 10GB) e un  indice che mappa i nomi dei parametri ai file in cui sono memorizzati.",we,G,et="Puoi controllare la dimensione massima dopo la frammentazione con il parametro <code>max_shard_size</code>, nel prossimo esempio, useremo modelli di dimensioni normali con frammenti di piccoli dimensioni: prendiamo un modello BERT classico.",Me,X,je,S,tt="Se tu salvi usando <code>save_pretrained()</code>, avrai una nuova cartella con due file: il config del modello e i suoi pesi:",_e,W,$e,H,st="Adesso usiamo una dimensione massima di frammentazione di 200MB:",be,q,xe,L,at="In aggiunta alla configurazione del modello, vediamo tre differenti file dei pesi, e un file <code>index.json</code> che è il nostro indice. Un checkpoint può essere ricaricato totalmente usando il metodo <code>from_pretrained()</code>:",Ce,A,ke,P,it="Il vantaggio principale di applicare questo metodo per modelli grandi è che durante il passo 2 del workflow illustrato in precedenza, ogni frammento del checkpoint viene caricato dopo il precedente, limitando l’utilizzo della RAM alla dimensione del modello più la dimensione del frammento più grande.",Ue,E,lt="Dietro le quinte, il file indice è utilizzato per determinare quali chiavi sono nel checkpoint, e dove i corrispondenti pesi sono memorizzati. Possiamo caricare l’indice come un qualsiasi json e ottenere un dizionario:",ze,N,Te,V,nt="I metadati consistono solo nella dimensione totale del modello per ora. Abbiamo in programma di aggiungere altre informazioni in futuro:",Je,F,Ze,Q,ot="La mappa dei pesi è la parte principale di questo indice, che mappa ogni nome dei parametri (si trova solitamente nei modelli PyTorch come <code>state_dict</code>) al file in cui è memorizzato:",Be,Y,Ie,K,pt="Se vuoi caricare direttamente un checkpoint frammentato in un modello senza usare <code>from_pretrained()</code> (come si farebbe con <code>model.load_state_dict()</code> per un checkpoint completo) devi usare <code>load_sharded_checkpoint()</code>:",Re,D,Ge,_,C,re,O,Ee,ne,rt="Caricamento low memory",Xe,ee,mt="Frammentare i checkpoint l’utilizzo di memoria al passo 2 del workflow citato in precedenza, ma per utilizzare questo modello in un ambiente con poca memoria, consigliamo di utilizzare i nostri strumenti basati sulla libreria Accelerate.",Se,te,ct='Per ulteriori informazioni, leggere la seguente guida: <a href="./main_classes/model#large-model-loading">Large model loading using Accelerate</a>',We,me,He;return z=new Ne({}),b=new bt({props:{$$slots:{default:[xt]},$$scope:{ctx:ce}}}),I=new Ne({}),X=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbCUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModel

model = AutoModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`}}),W=new k({props:{code:"aW1wb3J0JTIwb3MlMEFpbXBvcnQlMjB0ZW1wZmlsZSUwQSUwQXdpdGglMjB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSUyMGFzJTIwdG1wX2RpciUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsLnNhdmVfcHJldHJhaW5lZCh0bXBfZGlyKSUwQSUyMCUyMCUyMCUyMHByaW50KHNvcnRlZChvcy5saXN0ZGlyKHRtcF9kaXIpKSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> os
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> tempfile

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir:
<span class="hljs-meta">... </span>    model.save_pretrained(tmp_dir)
<span class="hljs-meta">... </span>    <span class="hljs-built_in">print</span>(<span class="hljs-built_in">sorted</span>(os.listdir(tmp_dir)))
[<span class="hljs-string">&#x27;config.json&#x27;</span>, <span class="hljs-string">&#x27;pytorch_model.bin&#x27;</span>]`}}),q=new k({props:{code:"d2l0aCUyMHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpJTIwYXMlMjB0bXBfZGlyJTNBJTBBJTIwJTIwJTIwJTIwbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKHRtcF9kaXIlMkMlMjBtYXhfc2hhcmRfc2l6ZSUzRCUyMjIwME1CJTIyKSUwQSUyMCUyMCUyMCUyMHByaW50KHNvcnRlZChvcy5saXN0ZGlyKHRtcF9kaXIpKSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir:
<span class="hljs-meta">... </span>    model.save_pretrained(tmp_dir, max_shard_size=<span class="hljs-string">&quot;200MB&quot;</span>)
<span class="hljs-meta">... </span>    <span class="hljs-built_in">print</span>(<span class="hljs-built_in">sorted</span>(os.listdir(tmp_dir)))
[<span class="hljs-string">&#x27;config.json&#x27;</span>, <span class="hljs-string">&#x27;pytorch_model-00001-of-00003.bin&#x27;</span>, <span class="hljs-string">&#x27;pytorch_model-00002-of-00003.bin&#x27;</span>, <span class="hljs-string">&#x27;pytorch_model-00003-of-00003.bin&#x27;</span>, <span class="hljs-string">&#x27;pytorch_model.bin.index.json&#x27;</span>]`}}),A=new k({props:{code:"d2l0aCUyMHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpJTIwYXMlMjB0bXBfZGlyJTNBJTBBJTIwJTIwJTIwJTIwbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKHRtcF9kaXIlMkMlMjBtYXhfc2hhcmRfc2l6ZSUzRCUyMjIwME1CJTIyKSUwQSUyMCUyMCUyMCUyMG5ld19tb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbC5mcm9tX3ByZXRyYWluZWQodG1wX2Rpcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir:
<span class="hljs-meta">... </span>    model.save_pretrained(tmp_dir, max_shard_size=<span class="hljs-string">&quot;200MB&quot;</span>)
<span class="hljs-meta">... </span>    new_model = AutoModel.from_pretrained(tmp_dir)`}}),N=new k({props:{code:"aW1wb3J0JTIwanNvbiUwQSUwQXdpdGglMjB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSUyMGFzJTIwdG1wX2RpciUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsLnNhdmVfcHJldHJhaW5lZCh0bXBfZGlyJTJDJTIwbWF4X3NoYXJkX3NpemUlM0QlMjIyMDBNQiUyMiklMEElMjAlMjAlMjAlMjB3aXRoJTIwb3Blbihvcy5wYXRoLmpvaW4odG1wX2RpciUyQyUyMCUyMnB5dG9yY2hfbW9kZWwuYmluLmluZGV4Lmpzb24lMjIpJTJDJTIwJTIyciUyMiklMjBhcyUyMGYlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbmRleCUyMCUzRCUyMGpzb24ubG9hZChmKSUwQSUwQXByaW50KGluZGV4LmtleXMoKSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> json

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir:
<span class="hljs-meta">... </span>    model.save_pretrained(tmp_dir, max_shard_size=<span class="hljs-string">&quot;200MB&quot;</span>)
<span class="hljs-meta">... </span>    <span class="hljs-keyword">with</span> <span class="hljs-built_in">open</span>(os.path.join(tmp_dir, <span class="hljs-string">&quot;pytorch_model.bin.index.json&quot;</span>), <span class="hljs-string">&quot;r&quot;</span>) <span class="hljs-keyword">as</span> f:
<span class="hljs-meta">... </span>        index = json.load(f)

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">print</span>(index.keys())
dict_keys([<span class="hljs-string">&#x27;metadata&#x27;</span>, <span class="hljs-string">&#x27;weight_map&#x27;</span>])`}}),F=new k({props:{code:"aW5kZXglNUIlMjJtZXRhZGF0YSUyMiU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>index[<span class="hljs-string">&quot;metadata&quot;</span>]
{<span class="hljs-string">&#x27;total_size&#x27;</span>: <span class="hljs-number">433245184</span>}`}}),Y=new k({props:{code:"aW5kZXglNUIlMjJ3ZWlnaHRfbWFwJTIyJTVE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>index[<span class="hljs-string">&quot;weight_map&quot;</span>]
{<span class="hljs-string">&#x27;embeddings.LayerNorm.bias&#x27;</span>: <span class="hljs-string">&#x27;pytorch_model-00001-of-00003.bin&#x27;</span>,
 <span class="hljs-string">&#x27;embeddings.LayerNorm.weight&#x27;</span>: <span class="hljs-string">&#x27;pytorch_model-00001-of-00003.bin&#x27;</span>,
 ...`}}),D=new k({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycy5tb2RlbGluZ191dGlscyUyMGltcG9ydCUyMGxvYWRfc2hhcmRlZF9jaGVja3BvaW50JTBBJTBBd2l0aCUyMHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpJTIwYXMlMjB0bXBfZGlyJTNBJTBBJTIwJTIwJTIwJTIwbW9kZWwuc2F2ZV9wcmV0cmFpbmVkKHRtcF9kaXIlMkMlMjBtYXhfc2hhcmRfc2l6ZSUzRCUyMjIwME1CJTIyKSUwQSUyMCUyMCUyMCUyMGxvYWRfc2hhcmRlZF9jaGVja3BvaW50KG1vZGVsJTJDJTIwdG1wX2Rpcik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers.modeling_utils <span class="hljs-keyword">import</span> load_sharded_checkpoint

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> tempfile.TemporaryDirectory() <span class="hljs-keyword">as</span> tmp_dir:
<span class="hljs-meta">... </span>    model.save_pretrained(tmp_dir, max_shard_size=<span class="hljs-string">&quot;200MB&quot;</span>)
<span class="hljs-meta">... </span>    load_sharded_checkpoint(model, tmp_dir)`}}),O=new Ne({}),{c(){r=n("meta"),U=i(),g=n("p"),ae=i(),M=n("h1"),$=n("a"),oe=n("span"),d(z.$$.fragment),Ae=i(),ie=n("span"),ie.textContent=Ve,de=i(),T=n("p"),T.textContent=Fe,he=i(),J=n("ol"),J.innerHTML=Qe,ue=i(),Z=n("p"),Z.innerHTML=Ye,fe=i(),d(b.$$.fragment),ye=i(),B=n("p"),B.textContent=Ke,ve=i(),j=n("h2"),x=n("a"),pe=n("span"),d(I.$$.fragment),Pe=i(),le=n("span"),le.textContent=De,ge=i(),R=n("p"),R.innerHTML=Oe,we=i(),G=n("p"),G.innerHTML=et,Me=i(),d(X.$$.fragment),je=i(),S=n("p"),S.innerHTML=tt,_e=i(),d(W.$$.fragment),$e=i(),H=n("p"),H.textContent=st,be=i(),d(q.$$.fragment),xe=i(),L=n("p"),L.innerHTML=at,Ce=i(),d(A.$$.fragment),ke=i(),P=n("p"),P.textContent=it,Ue=i(),E=n("p"),E.textContent=lt,ze=i(),d(N.$$.fragment),Te=i(),V=n("p"),V.textContent=nt,Je=i(),d(F.$$.fragment),Ze=i(),Q=n("p"),Q.innerHTML=ot,Be=i(),d(Y.$$.fragment),Ie=i(),K=n("p"),K.innerHTML=pt,Re=i(),d(D.$$.fragment),Ge=i(),_=n("h2"),C=n("a"),re=n("span"),d(O.$$.fragment),Ee=i(),ne=n("span"),ne.textContent=rt,Xe=i(),ee=n("p"),ee.textContent=mt,Se=i(),te=n("p"),te.innerHTML=ct,We=i(),me=n("p"),this.h()},l(e){const t=$t("svelte-1phssyn",document.head);r=o(t,"META",{name:!0,content:!0}),t.forEach(s),U=l(e),g=o(e,"P",{}),w(g).forEach(s),ae=l(e),M=o(e,"H1",{class:!0});var se=w(M);$=o(se,"A",{id:!0,class:!0,href:!0});var dt=w($);oe=o(dt,"SPAN",{});var ht=w(oe);h(z.$$.fragment,ht),ht.forEach(s),dt.forEach(s),Ae=l(se),ie=o(se,"SPAN",{"data-svelte-h":!0}),p(ie)!=="svelte-1qmnilv"&&(ie.textContent=Ve),se.forEach(s),de=l(e),T=o(e,"P",{"data-svelte-h":!0}),p(T)!=="svelte-hpka0t"&&(T.textContent=Fe),he=l(e),J=o(e,"OL",{"data-svelte-h":!0}),p(J)!=="svelte-1up99oz"&&(J.innerHTML=Qe),ue=l(e),Z=o(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-28ptu8"&&(Z.innerHTML=Ye),fe=l(e),h(b.$$.fragment,e),ye=l(e),B=o(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-vvoxkl"&&(B.textContent=Ke),ve=l(e),j=o(e,"H2",{class:!0});var qe=w(j);x=o(qe,"A",{id:!0,class:!0,href:!0});var ut=w(x);pe=o(ut,"SPAN",{});var ft=w(pe);h(I.$$.fragment,ft),ft.forEach(s),ut.forEach(s),Pe=l(qe),le=o(qe,"SPAN",{"data-svelte-h":!0}),p(le)!=="svelte-1jxx976"&&(le.textContent=De),qe.forEach(s),ge=l(e),R=o(e,"P",{"data-svelte-h":!0}),p(R)!=="svelte-mg2nmg"&&(R.innerHTML=Oe),we=l(e),G=o(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-13ehqwn"&&(G.innerHTML=et),Me=l(e),h(X.$$.fragment,e),je=l(e),S=o(e,"P",{"data-svelte-h":!0}),p(S)!=="svelte-pg1prv"&&(S.innerHTML=tt),_e=l(e),h(W.$$.fragment,e),$e=l(e),H=o(e,"P",{"data-svelte-h":!0}),p(H)!=="svelte-1gd3i04"&&(H.textContent=st),be=l(e),h(q.$$.fragment,e),xe=l(e),L=o(e,"P",{"data-svelte-h":!0}),p(L)!=="svelte-6ew1q4"&&(L.innerHTML=at),Ce=l(e),h(A.$$.fragment,e),ke=l(e),P=o(e,"P",{"data-svelte-h":!0}),p(P)!=="svelte-5uw3pb"&&(P.textContent=it),Ue=l(e),E=o(e,"P",{"data-svelte-h":!0}),p(E)!=="svelte-7x1jfm"&&(E.textContent=lt),ze=l(e),h(N.$$.fragment,e),Te=l(e),V=o(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-yi9squ"&&(V.textContent=nt),Je=l(e),h(F.$$.fragment,e),Ze=l(e),Q=o(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-raulhv"&&(Q.innerHTML=ot),Be=l(e),h(Y.$$.fragment,e),Ie=l(e),K=o(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-rh7ba6"&&(K.innerHTML=pt),Re=l(e),h(D.$$.fragment,e),Ge=l(e),_=o(e,"H2",{class:!0});var Le=w(_);C=o(Le,"A",{id:!0,class:!0,href:!0});var yt=w(C);re=o(yt,"SPAN",{});var vt=w(re);h(O.$$.fragment,vt),vt.forEach(s),yt.forEach(s),Ee=l(Le),ne=o(Le,"SPAN",{"data-svelte-h":!0}),p(ne)!=="svelte-10yfujc"&&(ne.textContent=rt),Le.forEach(s),Xe=l(e),ee=o(e,"P",{"data-svelte-h":!0}),p(ee)!=="svelte-1skddyr"&&(ee.textContent=mt),Se=l(e),te=o(e,"P",{"data-svelte-h":!0}),p(te)!=="svelte-8rcien"&&(te.innerHTML=ct),We=l(e),me=o(e,"P",{}),w(me).forEach(s),this.h()},h(){m(r,"name","hf:doc:metadata"),m(r,"content",JSON.stringify(kt)),m($,"id","istanziare-un-big-model"),m($,"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"),m($,"href","#istanziare-un-big-model"),m(M,"class","relative group"),m(x,"id","checkpoints-condivisi"),m(x,"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"),m(x,"href","#checkpoints-condivisi"),m(j,"class","relative group"),m(C,"id","caricamento-low-memory"),m(C,"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"),m(C,"href","#caricamento-low-memory"),m(_,"class","relative group")},m(e,t){c(document.head,r),a(e,U,t),a(e,g,t),a(e,ae,t),a(e,M,t),c(M,$),c($,oe),u(z,oe,null),c(M,Ae),c(M,ie),a(e,de,t),a(e,T,t),a(e,he,t),a(e,J,t),a(e,ue,t),a(e,Z,t),a(e,fe,t),u(b,e,t),a(e,ye,t),a(e,B,t),a(e,ve,t),a(e,j,t),c(j,x),c(x,pe),u(I,pe,null),c(j,Pe),c(j,le),a(e,ge,t),a(e,R,t),a(e,we,t),a(e,G,t),a(e,Me,t),u(X,e,t),a(e,je,t),a(e,S,t),a(e,_e,t),u(W,e,t),a(e,$e,t),a(e,H,t),a(e,be,t),u(q,e,t),a(e,xe,t),a(e,L,t),a(e,Ce,t),u(A,e,t),a(e,ke,t),a(e,P,t),a(e,Ue,t),a(e,E,t),a(e,ze,t),u(N,e,t),a(e,Te,t),a(e,V,t),a(e,Je,t),u(F,e,t),a(e,Ze,t),a(e,Q,t),a(e,Be,t),u(Y,e,t),a(e,Ie,t),a(e,K,t),a(e,Re,t),u(D,e,t),a(e,Ge,t),a(e,_,t),c(_,C),c(C,re),u(O,re,null),c(_,Ee),c(_,ne),a(e,Xe,t),a(e,ee,t),a(e,Se,t),a(e,te,t),a(e,We,t),a(e,me,t),He=!0},p(e,[t]){const se={};t&2&&(se.$$scope={dirty:t,ctx:e}),b.$set(se)},i(e){He||(f(z.$$.fragment,e),f(b.$$.fragment,e),f(I.$$.fragment,e),f(X.$$.fragment,e),f(W.$$.fragment,e),f(q.$$.fragment,e),f(A.$$.fragment,e),f(N.$$.fragment,e),f(F.$$.fragment,e),f(Y.$$.fragment,e),f(D.$$.fragment,e),f(O.$$.fragment,e),He=!0)},o(e){y(z.$$.fragment,e),y(b.$$.fragment,e),y(I.$$.fragment,e),y(X.$$.fragment,e),y(W.$$.fragment,e),y(q.$$.fragment,e),y(A.$$.fragment,e),y(N.$$.fragment,e),y(F.$$.fragment,e),y(Y.$$.fragment,e),y(D.$$.fragment,e),y(O.$$.fragment,e),He=!1},d(e){e&&(s(U),s(g),s(ae),s(M),s(de),s(T),s(he),s(J),s(ue),s(Z),s(fe),s(ye),s(B),s(ve),s(j),s(ge),s(R),s(we),s(G),s(Me),s(je),s(S),s(_e),s($e),s(H),s(be),s(xe),s(L),s(Ce),s(ke),s(P),s(Ue),s(E),s(ze),s(Te),s(V),s(Je),s(Ze),s(Q),s(Be),s(Ie),s(K),s(Re),s(Ge),s(_),s(Xe),s(ee),s(Se),s(te),s(We),s(me)),s(r),v(z),v(b,e),v(I),v(X,e),v(W,e),v(q,e),v(A,e),v(N,e),v(F,e),v(Y,e),v(D,e),v(O)}}}const kt={local:"istanziare-un-big-model",sections:[{local:"checkpoints-condivisi",title:"Checkpoints condivisi"},{local:"caricamento-low-memory",title:"Caricamento low memory"}],title:"Istanziare un big model"};function Ut(ce){return wt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class It extends jt{constructor(r){super(),_t(this,r,Ut,Ct,gt,{})}}export{It as component};
