Buckets:
| import{s as Lt,n as Xt,o as Rt}from"../chunks/scheduler.36a0863c.js";import{S as Ht,i as Qt,g as s,s as i,r,A as Wt,h as o,f as l,c as a,j as St,u as M,x as p,k as gt,y as Yt,a as n,v as d,d as m,t as c,w as u}from"../chunks/index.9c13489a.js";import{C as re}from"../chunks/CodeBlock.05d8ec32.js";import{H as Me,E as Ft}from"../chunks/EditOnGithub.e88f2b7b.js";function Dt(at){let U,de,oe,me,w,ce,C,st='L’hardware utilizzato per eseguire l’addestramento del modello e l’inferenza può avere un grande effetto sulle prestazioni. Per un analisi approfondita delle GPUs, assicurati di dare un’occhiata all’eccellente <a href="https://timdettmers.com/2020/09/07/which-gpu-for-deep-learning/" rel="nofollow">blog post</a> di Tim Dettmer.',ue,y,ot="Diamo un’occhiata ad alcuni consigli pratici per la configurazione della GPU.",Ue,f,we,T,pt="Quando si addestrano modelli più grandi ci sono essenzialmente tre opzioni:",Ce,J,rt='<li>GPUs piu’ grandi</li> <li>Piu’ GPUs</li> <li>Piu’ CPU e piu’ NVMe (scaricato da <a href="main_classes/deepspeed#nvme-support">DeepSpeed-Infinity</a>)</li>',ye,v,Mt="Iniziamo dal caso in cui ci sia una singola GPU.",fe,b,Te,I,dt="Se hai acquistato una costosa GPU di fascia alta, assicurati di darle la potenza corretta e un raffreddamento sufficiente.",Je,h,mt="<strong>Potenza</strong>:",ve,j,ct="Alcune schede GPU consumer di fascia alta hanno 2 e talvolta 3 prese di alimentazione PCI-E a 8 pin. Assicurati di avere tanti cavi PCI-E a 8 pin indipendenti da 12 V collegati alla scheda quante sono le prese. Non utilizzare le 2 fessure a un’estremità dello stesso cavo (noto anche come cavo a spirale). Cioè se hai 2 prese sulla GPU, vuoi 2 cavi PCI-E a 8 pin che vanno dall’alimentatore alla scheda e non uno che abbia 2 connettori PCI-E a 8 pin alla fine! In caso contrario, non otterrai tutte le prestazioni ufficiali.",be,x,ut="Ciascun cavo di alimentazione PCI-E a 8 pin deve essere collegato a una guida da 12 V sul lato dell’alimentatore e può fornire fino a 150 W di potenza.",Ie,P,Ut="Alcune altre schede possono utilizzare connettori PCI-E a 12 pin e questi possono fornire fino a 500-600 W di potenza.",he,B,wt="Le schede di fascia bassa possono utilizzare connettori a 6 pin, che forniscono fino a 75 W di potenza.",je,_,Ct="Inoltre vuoi un alimentatore (PSU) di fascia alta che abbia una tensione stabile. Alcuni PSU di qualità inferiore potrebbero non fornire alla scheda la tensione stabile di cui ha bisogno per funzionare al massimo.",xe,k,yt="E ovviamente l’alimentatore deve avere abbastanza Watt inutilizzati per alimentare la scheda.",Pe,N,ft="<strong>Raffreddamento</strong>:",Be,z,Tt="Quando una GPU si surriscalda, inizierà a rallentare e non fornirà le prestazioni mssimali e potrebbe persino spegnersi se diventasse troppo calda.",_e,G,Jt="È difficile dire l’esatta temperatura migliore a cui aspirare quando una GPU è molto caricata, ma probabilmente qualsiasi cosa al di sotto di +80°C va bene, ma più bassa è meglio - forse 70-75°C è un intervallo eccellente in cui trovarsi. È probabile che il rallentamento inizi a circa 84-90°C. Ma oltre alla limitazione delle prestazioni, una temperatura molto elevata prolungata è probabile che riduca la durata di una GPU.",ke,V,vt="Diamo quindi un’occhiata a uno degli aspetti più importanti quando si hanno più GPU: la connettività.",Ne,A,ze,$,bt="Se utilizzi più GPU, il modo in cui le schede sono interconnesse può avere un enorme impatto sul tempo totale di allenamento. Se le GPU si trovano sullo stesso nodo fisico, puoi eseguire:",Ge,E,Ve,Z,It="e ti dirà come sono interconnesse le GPU. Su una macchina con doppia GPU e collegata a NVLink, molto probabilmente vedrai qualcosa del tipo:",Ae,S,$e,g,ht="su una macchina diversa senza NVLink potremmo vedere:",Ee,L,Ze,X,jt="Il rapporto include questa legenda:",Se,R,ge,H,xt="Quindi il primo rapporto <code>NV2</code> ci dice che le GPU sono interconnesse con 2 NVLinks e nel secondo report <code>PHB</code> abbiamo una tipica configurazione PCIe+Bridge a livello di consumatore.",Le,Q,Pt="Controlla che tipo di connettività hai sulla tua configurazione. Alcuni di questi renderanno la comunicazione tra le carte più veloce (es. NVLink), altri più lenta (es. PHB).",Xe,W,Bt="A seconda del tipo di soluzione di scalabilità utilizzata, la velocità di connettività potrebbe avere un impatto maggiore o minore. Se le GPU devono sincronizzarsi raramente, come in DDP, l’impatto di una connessione più lenta sarà meno significativo. Se le GPU devono scambiarsi messaggi spesso, come in ZeRO-DP, una connettività più veloce diventa estremamente importante per ottenere un addestramento più veloce.",Re,Y,He,F,_t='<a href="https://en.wikipedia.org/wiki/NVLink" rel="nofollow">NVLink</a> è un collegamento di comunicazione a corto raggio multilinea seriale basato su cavo sviluppato da Nvidia.',Qe,D,kt='Ogni nuova generazione fornisce una larghezza di banda più veloce, ad es. ecco una citazione da <a href="https://www.nvidia.com/content/dam/en-zz/Solutions/geforce/ampere/pdf/NVIDIA-ampere-GA102-GPU-Architecture-Whitepaper-V1.pdf" rel="nofollow">Nvidia Ampere GA102 GPU Architecture</a>:',We,q,Nt=`<p>Third-Generation NVLink® | |
| GA102 GPUs utilize NVIDIA’s third-generation NVLink interface, which includes four x4 links, | |
| with each link providing 14.0625 GB/sec bandwidth in each direction between two GPUs. Four | |
| links provide 56.25 GB/sec bandwidth in each direction, and 112.5 GB/sec total bandwidth | |
| between two GPUs. Two RTX 3090 GPUs can be connected together for SLI using NVLink. | |
| (Note that 3-Way and 4-Way SLI configurations are not supported.)</p>`,Ye,O,zt="Quindi più <code>X</code> si ottiene nel rapporto di <code>NVX</code> nell’output di <code>nvidia-smi topo -m</code>, meglio è. La generazione dipenderà dall’architettura della tua GPU.",Fe,K,Gt="Confrontiamo l’esecuzione di un training del modello di linguaggio openai-community/gpt2 su un piccolo campione di wikitext",De,ee,Vt="I risultati sono:",qe,te,At='<thead><tr><th>NVlink</th> <th align="right">Time</th></tr></thead> <tbody><tr><td>Y</td> <td align="right">101s</td></tr> <tr><td>N</td> <td align="right">131s</td></tr></tbody>',Oe,le,$t="Puoi vedere che NVLink completa l’addestramento circa il 23% più velocemente. Nel secondo benchmark utilizziamo <code>NCCL_P2P_DISABLE=1</code> per dire alle GPU di non utilizzare NVLink.",Ke,ne,Et="Ecco il codice benchmark completo e gli output:",et,ie,tt,ae,Zt=`Hardware: 2x TITAN RTX 24GB each + NVlink with 2 NVLinks (<code>NV2</code> in <code>nvidia-smi topo -m</code>) | |
| Software: <code>pytorch-1.8-to-be</code> + <code>cuda-11.0</code> / <code>transformers==4.3.0.dev0</code>`,lt,se,nt,pe,it;return w=new Me({props:{title:"Hardware ottimizzato per l’addestramento",local:"hardware-ottimizzato-per-laddestramento",headingTag:"h1"}}),f=new Me({props:{title:"GPU",local:"gpu",headingTag:"h2"}}),b=new Me({props:{title:"Potenza e Raffreddamento",local:"potenza-e-raffreddamento",headingTag:"h3"}}),A=new Me({props:{title:"Connettività multi-GPU",local:"connettività-multi-gpu",headingTag:"h3"}}),E=new re({props:{code:"bnZpZGlhLXNtaSUyMHRvcG8lMjAtbQ==",highlighted:"nvidia-smi topo -m",wrap:!1}}),S=new re({props:{code:"JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwR1BVMCUyMCUyMCUyMCUyMEdQVTElMjAlMjAlMjAlMjBDUFUlMjBBZmZpbml0eSUyMCUyMCUyMCUyME5VTUElMjBBZmZpbml0eSUwQUdQVTAlMjAlMjAlMjAlMjAlMjBYJTIwJTIwJTIwJTIwJTIwJTIwTlYyJTIwJTIwJTIwJTIwJTIwMC0yMyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyME4lMkZBJTBBR1BVMSUyMCUyMCUyMCUyME5WMiUyMCUyMCUyMCUyMCUyMCUyMFglMjAlMjAlMjAlMjAlMjAlMjAwLTIzJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTiUyRkE=",highlighted:` <span class="hljs-attribute">GPU0</span> GPU1 CPU Affinity NUMA Affinity | |
| <span class="hljs-attribute">GPU0</span> X NV2 <span class="hljs-number">0</span>-<span class="hljs-number">23</span> N/A | |
| <span class="hljs-attribute">GPU1</span> NV2 X <span class="hljs-number">0</span>-<span class="hljs-number">23</span> N/A`,wrap:!1}}),L=new re({props:{code:"JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwR1BVMCUyMCUyMCUyMCUyMEdQVTElMjAlMjAlMjAlMjBDUFUlMjBBZmZpbml0eSUyMCUyMCUyMCUyME5VTUElMjBBZmZpbml0eSUwQUdQVTAlMjAlMjAlMjAlMjAlMjBYJTIwJTIwJTIwJTIwJTIwJTIwUEhCJTIwJTIwJTIwJTIwJTIwMC0xMSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyME4lMkZBJTBBR1BVMSUyMCUyMCUyMCUyMFBIQiUyMCUyMCUyMCUyMCUyMCUyMFglMjAlMjAlMjAlMjAlMjAlMjAwLTExJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTiUyRkE=",highlighted:` <span class="hljs-attribute">GPU0</span> GPU1 CPU Affinity NUMA Affinity | |
| <span class="hljs-attribute">GPU0</span> X PHB <span class="hljs-number">0</span>-<span class="hljs-number">11</span> N/A | |
| <span class="hljs-attribute">GPU1</span> PHB X <span class="hljs-number">0</span>-<span class="hljs-number">11</span> N/A`,wrap:!1}}),R=new re({props:{code:"JTIwJTIwWCUyMCUyMCUyMCUyMCUzRCUyMFNlbGYlMEElMjAlMjBTWVMlMjAlMjAlM0QlMjBDb25uZWN0aW9uJTIwdHJhdmVyc2luZyUyMFBDSWUlMjBhcyUyMHdlbGwlMjBhcyUyMHRoZSUyMFNNUCUyMGludGVyY29ubmVjdCUyMGJldHdlZW4lMjBOVU1BJTIwbm9kZXMlMjAoZS5nLiUyQyUyMFFQSSUyRlVQSSklMEElMjAlMjBOT0RFJTIwJTNEJTIwQ29ubmVjdGlvbiUyMHRyYXZlcnNpbmclMjBQQ0llJTIwYXMlMjB3ZWxsJTIwYXMlMjB0aGUlMjBpbnRlcmNvbm5lY3QlMjBiZXR3ZWVuJTIwUENJZSUyMEhvc3QlMjBCcmlkZ2VzJTIwd2l0aGluJTIwYSUyME5VTUElMjBub2RlJTBBJTIwJTIwUEhCJTIwJTIwJTNEJTIwQ29ubmVjdGlvbiUyMHRyYXZlcnNpbmclMjBQQ0llJTIwYXMlMjB3ZWxsJTIwYXMlMjBhJTIwUENJZSUyMEhvc3QlMjBCcmlkZ2UlMjAodHlwaWNhbGx5JTIwdGhlJTIwQ1BVKSUwQSUyMCUyMFBYQiUyMCUyMCUzRCUyMENvbm5lY3Rpb24lMjB0cmF2ZXJzaW5nJTIwbXVsdGlwbGUlMjBQQ0llJTIwYnJpZGdlcyUyMCh3aXRob3V0JTIwdHJhdmVyc2luZyUyMHRoZSUyMFBDSWUlMjBIb3N0JTIwQnJpZGdlKSUwQSUyMCUyMFBJWCUyMCUyMCUzRCUyMENvbm5lY3Rpb24lMjB0cmF2ZXJzaW5nJTIwYXQlMjBtb3N0JTIwYSUyMHNpbmdsZSUyMFBDSWUlMjBicmlkZ2UlMEElMjAlMjBOViUyMyUyMCUyMCUzRCUyMENvbm5lY3Rpb24lMjB0cmF2ZXJzaW5nJTIwYSUyMGJvbmRlZCUyMHNldCUyMG9mJTIwJTIzJTIwTlZMaW5rcw==",highlighted:` X = Self | |
| SYS = Connection traversing PCIe <span class="hljs-keyword">as</span> well <span class="hljs-keyword">as</span> <span class="hljs-keyword">the</span> SMP interconnect between NUMA nodes (e.g., QPI/UPI) | |
| NODE = Connection traversing PCIe <span class="hljs-keyword">as</span> well <span class="hljs-keyword">as</span> <span class="hljs-keyword">the</span> interconnect between PCIe Host Bridges <span class="hljs-keyword">within</span> <span class="hljs-keyword">a</span> NUMA node | |
| PHB = Connection traversing PCIe <span class="hljs-keyword">as</span> well <span class="hljs-keyword">as</span> <span class="hljs-keyword">a</span> PCIe Host Bridge (typically <span class="hljs-keyword">the</span> CPU) | |
| PXB = Connection traversing multiple PCIe bridges (<span class="hljs-keyword">without</span> traversing <span class="hljs-keyword">the</span> PCIe Host Bridge) | |
| PIX = Connection traversing <span class="hljs-keyword">at</span> most <span class="hljs-keyword">a</span> single PCIe bridge | |
| NV<span class="hljs-comment"># = Connection traversing a bonded set of # NVLinks</span>`,wrap:!1}}),Y=new Me({props:{title:"NVlink",local:"nvlink",headingTag:"h4"}}),ie=new re({props:{code:"JTIzJTIwRERQJTIwdyUyRiUyME5WTGluayUwQSUwQXJtJTIwLXIlMjAlMkZ0bXAlMkZ0ZXN0LWNsbSUzQiUyMENVREFfVklTSUJMRV9ERVZJQ0VTJTNEMCUyQzElMjB0b3JjaHJ1biUyMCU1QyUwQS0tbnByb2NfcGVyX25vZGUlMjAyJTIwZXhhbXBsZXMlMkZweXRvcmNoJTJGbGFuZ3VhZ2UtbW9kZWxpbmclMkZydW5fY2xtLnB5JTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBvcGVuYWktY29tbXVuaXR5JTJGZ3B0MiUyMCU1QyUwQS0tZGF0YXNldF9uYW1lJTIwd2lraXRleHQlMjAtLWRhdGFzZXRfY29uZmlnX25hbWUlMjB3aWtpdGV4dC0yLXJhdy12MSUyMC0tZG9fdHJhaW4lMjAlNUMlMEEtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkZ0ZXN0LWNsbSUyMC0tcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTIwNCUyMC0tbWF4X3N0ZXBzJTIwMjAwJTBBJTBBJTdCJ3RyYWluX3J1bnRpbWUnJTNBJTIwMTAxLjkwMDMlMkMlMjAndHJhaW5fc2FtcGxlc19wZXJfc2Vjb25kJyUzQSUyMDEuOTYzJTJDJTIwJ2Vwb2NoJyUzQSUyMDAuNjklN0QlMEElMEElMjMlMjBERFAlMjB3JTJGbyUyME5WTGluayUwQSUwQXJtJTIwLXIlMjAlMkZ0bXAlMkZ0ZXN0LWNsbSUzQiUyMENVREFfVklTSUJMRV9ERVZJQ0VTJTNEMCUyQzElMjBOQ0NMX1AyUF9ESVNBQkxFJTNEMSUyMHRvcmNocnVuJTIwJTVDJTBBLS1ucHJvY19wZXJfbm9kZSUyMDIlMjBleGFtcGxlcyUyRnB5dG9yY2glMkZsYW5ndWFnZS1tb2RlbGluZyUyRnJ1bl9jbG0ucHklMjAtLW1vZGVsX25hbWVfb3JfcGF0aCUyMG9wZW5haS1jb21tdW5pdHklMkZncHQyJTIwJTVDJTBBLS1kYXRhc2V0X25hbWUlMjB3aWtpdGV4dCUyMC0tZGF0YXNldF9jb25maWdfbmFtZSUyMHdpa2l0ZXh0LTItcmF3LXYxJTIwLS1kb190cmFpbiUwQS0tb3V0cHV0X2RpciUyMCUyRnRtcCUyRnRlc3QtY2xtJTIwLS1wZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlMjA0JTIwLS1tYXhfc3RlcHMlMjAyMDAlMEElMEElN0IndHJhaW5fcnVudGltZSclM0ElMjAxMzEuNDM2NyUyQyUyMCd0cmFpbl9zYW1wbGVzX3Blcl9zZWNvbmQnJTNBJTIwMS41MjIlMkMlMjAnZXBvY2gnJTNBJTIwMC42OSU3RA==",highlighted:`<span class="hljs-comment"># DDP w/ NVLink</span> | |
| <span class="hljs-built_in">rm</span> -r /tmp/test-clm; CUDA_VISIBLE_DEVICES=0,1 torchrun \\ | |
| --nproc_per_node 2 examples/pytorch/language-modeling/run_clm.py --model_name_or_path openai-community/gpt2 \\ | |
| --dataset_name wikitext --dataset_config_name wikitext-2-raw-v1 --do_train \\ | |
| --output_dir /tmp/test-clm --per_device_train_batch_size 4 --max_steps 200 | |
| {<span class="hljs-string">'train_runtime'</span>: 101.9003, <span class="hljs-string">'train_samples_per_second'</span>: 1.963, <span class="hljs-string">'epoch'</span>: 0.69} | |
| <span class="hljs-comment"># DDP w/o NVLink</span> | |
| <span class="hljs-built_in">rm</span> -r /tmp/test-clm; CUDA_VISIBLE_DEVICES=0,1 NCCL_P2P_DISABLE=1 torchrun \\ | |
| --nproc_per_node 2 examples/pytorch/language-modeling/run_clm.py --model_name_or_path openai-community/gpt2 \\ | |
| --dataset_name wikitext --dataset_config_name wikitext-2-raw-v1 --do_train | |
| --output_dir /tmp/test-clm --per_device_train_batch_size 4 --max_steps 200 | |
| {<span class="hljs-string">'train_runtime'</span>: 131.4367, <span class="hljs-string">'train_samples_per_second'</span>: 1.522, <span class="hljs-string">'epoch'</span>: 0.69}`,wrap:!1}}),se=new Ft({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/it/perf_hardware.md"}}),{c(){U=s("meta"),de=i(),oe=s("p"),me=i(),r(w.$$.fragment),ce=i(),C=s("p"),C.innerHTML=st,ue=i(),y=s("p"),y.textContent=ot,Ue=i(),r(f.$$.fragment),we=i(),T=s("p"),T.textContent=pt,Ce=i(),J=s("ul"),J.innerHTML=rt,ye=i(),v=s("p"),v.textContent=Mt,fe=i(),r(b.$$.fragment),Te=i(),I=s("p"),I.textContent=dt,Je=i(),h=s("p"),h.innerHTML=mt,ve=i(),j=s("p"),j.textContent=ct,be=i(),x=s("p"),x.textContent=ut,Ie=i(),P=s("p"),P.textContent=Ut,he=i(),B=s("p"),B.textContent=wt,je=i(),_=s("p"),_.textContent=Ct,xe=i(),k=s("p"),k.textContent=yt,Pe=i(),N=s("p"),N.innerHTML=ft,Be=i(),z=s("p"),z.textContent=Tt,_e=i(),G=s("p"),G.textContent=Jt,ke=i(),V=s("p"),V.textContent=vt,Ne=i(),r(A.$$.fragment),ze=i(),$=s("p"),$.textContent=bt,Ge=i(),r(E.$$.fragment),Ve=i(),Z=s("p"),Z.textContent=It,Ae=i(),r(S.$$.fragment),$e=i(),g=s("p"),g.textContent=ht,Ee=i(),r(L.$$.fragment),Ze=i(),X=s("p"),X.textContent=jt,Se=i(),r(R.$$.fragment),ge=i(),H=s("p"),H.innerHTML=xt,Le=i(),Q=s("p"),Q.textContent=Pt,Xe=i(),W=s("p"),W.textContent=Bt,Re=i(),r(Y.$$.fragment),He=i(),F=s("p"),F.innerHTML=_t,Qe=i(),D=s("p"),D.innerHTML=kt,We=i(),q=s("blockquote"),q.innerHTML=Nt,Ye=i(),O=s("p"),O.innerHTML=zt,Fe=i(),K=s("p"),K.textContent=Gt,De=i(),ee=s("p"),ee.textContent=Vt,qe=i(),te=s("table"),te.innerHTML=At,Oe=i(),le=s("p"),le.innerHTML=$t,Ke=i(),ne=s("p"),ne.textContent=Et,et=i(),r(ie.$$.fragment),tt=i(),ae=s("p"),ae.innerHTML=Zt,lt=i(),r(se.$$.fragment),nt=i(),pe=s("p"),this.h()},l(e){const t=Wt("svelte-u9bgzb",document.head);U=o(t,"META",{name:!0,content:!0}),t.forEach(l),de=a(e),oe=o(e,"P",{}),St(oe).forEach(l),me=a(e),M(w.$$.fragment,e),ce=a(e),C=o(e,"P",{"data-svelte-h":!0}),p(C)!=="svelte-1ead13v"&&(C.innerHTML=st),ue=a(e),y=o(e,"P",{"data-svelte-h":!0}),p(y)!=="svelte-1br1fvm"&&(y.textContent=ot),Ue=a(e),M(f.$$.fragment,e),we=a(e),T=o(e,"P",{"data-svelte-h":!0}),p(T)!=="svelte-yqi27l"&&(T.textContent=pt),Ce=a(e),J=o(e,"UL",{"data-svelte-h":!0}),p(J)!=="svelte-1nmki5w"&&(J.innerHTML=rt),ye=a(e),v=o(e,"P",{"data-svelte-h":!0}),p(v)!=="svelte-1ytyi1x"&&(v.textContent=Mt),fe=a(e),M(b.$$.fragment,e),Te=a(e),I=o(e,"P",{"data-svelte-h":!0}),p(I)!=="svelte-1yjfvva"&&(I.textContent=dt),Je=a(e),h=o(e,"P",{"data-svelte-h":!0}),p(h)!=="svelte-zy6waq"&&(h.innerHTML=mt),ve=a(e),j=o(e,"P",{"data-svelte-h":!0}),p(j)!=="svelte-1g53k7p"&&(j.textContent=ct),be=a(e),x=o(e,"P",{"data-svelte-h":!0}),p(x)!=="svelte-tpu5y0"&&(x.textContent=ut),Ie=a(e),P=o(e,"P",{"data-svelte-h":!0}),p(P)!=="svelte-1w4tr9k"&&(P.textContent=Ut),he=a(e),B=o(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-frcoas"&&(B.textContent=wt),je=a(e),_=o(e,"P",{"data-svelte-h":!0}),p(_)!=="svelte-uvs3kl"&&(_.textContent=Ct),xe=a(e),k=o(e,"P",{"data-svelte-h":!0}),p(k)!=="svelte-1d6nft9"&&(k.textContent=yt),Pe=a(e),N=o(e,"P",{"data-svelte-h":!0}),p(N)!=="svelte-110coev"&&(N.innerHTML=ft),Be=a(e),z=o(e,"P",{"data-svelte-h":!0}),p(z)!=="svelte-17ayxfb"&&(z.textContent=Tt),_e=a(e),G=o(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-yst7a4"&&(G.textContent=Jt),ke=a(e),V=o(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-1xbhyar"&&(V.textContent=vt),Ne=a(e),M(A.$$.fragment,e),ze=a(e),$=o(e,"P",{"data-svelte-h":!0}),p($)!=="svelte-1ep8son"&&($.textContent=bt),Ge=a(e),M(E.$$.fragment,e),Ve=a(e),Z=o(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-1ytlzkk"&&(Z.textContent=It),Ae=a(e),M(S.$$.fragment,e),$e=a(e),g=o(e,"P",{"data-svelte-h":!0}),p(g)!=="svelte-1n0iwi9"&&(g.textContent=ht),Ee=a(e),M(L.$$.fragment,e),Ze=a(e),X=o(e,"P",{"data-svelte-h":!0}),p(X)!=="svelte-pl67un"&&(X.textContent=jt),Se=a(e),M(R.$$.fragment,e),ge=a(e),H=o(e,"P",{"data-svelte-h":!0}),p(H)!=="svelte-poa7qe"&&(H.innerHTML=xt),Le=a(e),Q=o(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1mtptpa"&&(Q.textContent=Pt),Xe=a(e),W=o(e,"P",{"data-svelte-h":!0}),p(W)!=="svelte-pvckob"&&(W.textContent=Bt),Re=a(e),M(Y.$$.fragment,e),He=a(e),F=o(e,"P",{"data-svelte-h":!0}),p(F)!=="svelte-19nbh14"&&(F.innerHTML=_t),Qe=a(e),D=o(e,"P",{"data-svelte-h":!0}),p(D)!=="svelte-48x68i"&&(D.innerHTML=kt),We=a(e),q=o(e,"BLOCKQUOTE",{"data-svelte-h":!0}),p(q)!=="svelte-14khom1"&&(q.innerHTML=Nt),Ye=a(e),O=o(e,"P",{"data-svelte-h":!0}),p(O)!=="svelte-o2ocg3"&&(O.innerHTML=zt),Fe=a(e),K=o(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-rs31fi"&&(K.textContent=Gt),De=a(e),ee=o(e,"P",{"data-svelte-h":!0}),p(ee)!=="svelte-8m003l"&&(ee.textContent=Vt),qe=a(e),te=o(e,"TABLE",{"data-svelte-h":!0}),p(te)!=="svelte-1hvmx1i"&&(te.innerHTML=At),Oe=a(e),le=o(e,"P",{"data-svelte-h":!0}),p(le)!=="svelte-1l5ijyg"&&(le.innerHTML=$t),Ke=a(e),ne=o(e,"P",{"data-svelte-h":!0}),p(ne)!=="svelte-16pifow"&&(ne.textContent=Et),et=a(e),M(ie.$$.fragment,e),tt=a(e),ae=o(e,"P",{"data-svelte-h":!0}),p(ae)!=="svelte-pittpg"&&(ae.innerHTML=Zt),lt=a(e),M(se.$$.fragment,e),nt=a(e),pe=o(e,"P",{}),St(pe).forEach(l),this.h()},h(){gt(U,"name","hf:doc:metadata"),gt(U,"content",qt)},m(e,t){Yt(document.head,U),n(e,de,t),n(e,oe,t),n(e,me,t),d(w,e,t),n(e,ce,t),n(e,C,t),n(e,ue,t),n(e,y,t),n(e,Ue,t),d(f,e,t),n(e,we,t),n(e,T,t),n(e,Ce,t),n(e,J,t),n(e,ye,t),n(e,v,t),n(e,fe,t),d(b,e,t),n(e,Te,t),n(e,I,t),n(e,Je,t),n(e,h,t),n(e,ve,t),n(e,j,t),n(e,be,t),n(e,x,t),n(e,Ie,t),n(e,P,t),n(e,he,t),n(e,B,t),n(e,je,t),n(e,_,t),n(e,xe,t),n(e,k,t),n(e,Pe,t),n(e,N,t),n(e,Be,t),n(e,z,t),n(e,_e,t),n(e,G,t),n(e,ke,t),n(e,V,t),n(e,Ne,t),d(A,e,t),n(e,ze,t),n(e,$,t),n(e,Ge,t),d(E,e,t),n(e,Ve,t),n(e,Z,t),n(e,Ae,t),d(S,e,t),n(e,$e,t),n(e,g,t),n(e,Ee,t),d(L,e,t),n(e,Ze,t),n(e,X,t),n(e,Se,t),d(R,e,t),n(e,ge,t),n(e,H,t),n(e,Le,t),n(e,Q,t),n(e,Xe,t),n(e,W,t),n(e,Re,t),d(Y,e,t),n(e,He,t),n(e,F,t),n(e,Qe,t),n(e,D,t),n(e,We,t),n(e,q,t),n(e,Ye,t),n(e,O,t),n(e,Fe,t),n(e,K,t),n(e,De,t),n(e,ee,t),n(e,qe,t),n(e,te,t),n(e,Oe,t),n(e,le,t),n(e,Ke,t),n(e,ne,t),n(e,et,t),d(ie,e,t),n(e,tt,t),n(e,ae,t),n(e,lt,t),d(se,e,t),n(e,nt,t),n(e,pe,t),it=!0},p:Xt,i(e){it||(m(w.$$.fragment,e),m(f.$$.fragment,e),m(b.$$.fragment,e),m(A.$$.fragment,e),m(E.$$.fragment,e),m(S.$$.fragment,e),m(L.$$.fragment,e),m(R.$$.fragment,e),m(Y.$$.fragment,e),m(ie.$$.fragment,e),m(se.$$.fragment,e),it=!0)},o(e){c(w.$$.fragment,e),c(f.$$.fragment,e),c(b.$$.fragment,e),c(A.$$.fragment,e),c(E.$$.fragment,e),c(S.$$.fragment,e),c(L.$$.fragment,e),c(R.$$.fragment,e),c(Y.$$.fragment,e),c(ie.$$.fragment,e),c(se.$$.fragment,e),it=!1},d(e){e&&(l(de),l(oe),l(me),l(ce),l(C),l(ue),l(y),l(Ue),l(we),l(T),l(Ce),l(J),l(ye),l(v),l(fe),l(Te),l(I),l(Je),l(h),l(ve),l(j),l(be),l(x),l(Ie),l(P),l(he),l(B),l(je),l(_),l(xe),l(k),l(Pe),l(N),l(Be),l(z),l(_e),l(G),l(ke),l(V),l(Ne),l(ze),l($),l(Ge),l(Ve),l(Z),l(Ae),l($e),l(g),l(Ee),l(Ze),l(X),l(Se),l(ge),l(H),l(Le),l(Q),l(Xe),l(W),l(Re),l(He),l(F),l(Qe),l(D),l(We),l(q),l(Ye),l(O),l(Fe),l(K),l(De),l(ee),l(qe),l(te),l(Oe),l(le),l(Ke),l(ne),l(et),l(tt),l(ae),l(lt),l(nt),l(pe)),l(U),u(w,e),u(f,e),u(b,e),u(A,e),u(E,e),u(S,e),u(L,e),u(R,e),u(Y,e),u(ie,e),u(se,e)}}}const qt='{"title":"Hardware ottimizzato per l’addestramento","local":"hardware-ottimizzato-per-laddestramento","sections":[{"title":"GPU","local":"gpu","sections":[{"title":"Potenza e Raffreddamento","local":"potenza-e-raffreddamento","sections":[],"depth":3},{"title":"Connettività multi-GPU","local":"connettività-multi-gpu","sections":[{"title":"NVlink","local":"nvlink","sections":[],"depth":4}],"depth":3}],"depth":2}],"depth":1}';function Ot(at){return Rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class nl extends Ht{constructor(U){super(),Qt(this,U,Ot,Dt,Lt,{})}}export{nl as component}; | |
Xet Storage Details
- Size:
- 21.4 kB
- Xet hash:
- 6efd928d221a61086172acb19d69469d834ea2450ef35394ff4cd5e1a2e98bd0
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.