import{s as Se,n as Xe,o as Re}from"../chunks/scheduler.56730f09.js";import{S as Qe,i as We,g as p,s,r as U,A as He,h as M,f as l,c as i,j as Ee,u as C,x as a,k as Ze,y as Ye,a as n,v as y,d as w,t as m,w as T}from"../chunks/index.1f144517.js";import{C as at}from"../chunks/CodeBlock.738eeccb.js";import{H as Ut}from"../chunks/Heading.57d46534.js";function Fe(ne){let J,Ct,pt,yt,I,wt,j,se='모델 훈련과 추론에 사용하는 하드웨어는 성능에 큰 영향을 미칠 수 있습니다. GPU에 대해 자세히 알아보려면, Tim Dettmer의 훌륭한 블로그 포스트를 확인해보세요. <a href="https://timdettmers.com/2020/09/07/which-gpu-for-deep-learning/" rel="nofollow">블로그 포스트 링크</a> (영어로 작성됨).',mt,f,ie="GPU 설정에 대한 실용적인 조언을 살펴보겠습니다.",Tt,d,Jt,c,pe="더 큰 모델을 훈련시킬 때는 기본적으로 세 가지 옵션이 있습니다:",It,u,Me='<li>더 큰 GPU</li> <li>더 많은 GPU</li> <li>더 많은 CPU 및 NVMe (<a href="../en/main_classes/deepspeed#nvme-support">DeepSpeed-Infinity</a>를 통한 오프로드(offload))</li>',jt,o,ae="우선, 하나의 GPU만 사용하는 경우부터 시작해봅시다.",ft,r,dt,x,Ue="비싼 고성능 GPU를 구매한 경우, 올바른 전원 공급과 충분한 냉각을 제공해야 합니다.",ct,P,Ce="<strong>전원 공급</strong>:",ut,v,ye="일부 고성능 소비자용 GPU는 2개 혹은 가끔가다 3개의 PCI-E 8핀 전원 소켓이 있습니다. 카드에 있는 소켓 수만큼 독립적인 12V PCI-E 8핀 케이블이 연결되어 있는지 확인하세요. 같은 케이블의 한쪽 끝에 있는 2개의 스플릿(또는 피그테일(pigtail) 케이블)을 사용하지 마세요. 즉, GPU에 2개의 소켓이 있다면, PSU(전원 공급 장치)에서 카드로 연결되는 2개의 PCI-E 8핀 케이블이 필요하며, 끝에 2개의 PCI-E 8핀 커넥터가 있는 케이블이 필요하지 않습니다! 그렇지 않으면 카드의 전체 성능을 제대로 발휘하지 못할 수 있습니다.",ot,b,we="각각의 PCI-E 8핀 전원 케이블은 PSU 쪽의 12V 레일에 연결되어야 하며 최대 150W의 전력을 공급할 수 있습니다.",rt,h,me="일부 다른 GPU는 PCI-E 12핀 커넥터를 사용하며, 이러한 커넥터는 최대 500W-600W의 전력을 공급할 수 있습니다.",xt,B,Te="저가형 GPU는 6핀 커넥터를 사용하며, 최대 75W의 전력을 공급합니다.",Pt,_,Je="또한 GPU가 안정적인 전압을 받을 수 있도록 고급 PSU를 선택해야 합니다. 일부 저품질의 PSU는 GPU가 최고 성능으로 동작하기 위해 필요한 전압을 안정적으로 공급하지 못할 수 있습니다.",vt,G,Ie="물론, PSU는 GPU에 전원을 공급하기에 충분한 여분의 전력 용량을 가져야 합니다.",bt,N,je="<strong>냉각</strong>:",ht,V,fe="GPU가 과열되면 성능이 저하되고 최대 성능을 발휘하지 못할 수 있으며, 너무 뜨거워지면 중지될 수 있습니다.",Bt,k,de="GPU가 과열될 때 정확한 적정 온도를 알기 어려우나, 아마도 +80℃ 미만이면 좋지만 더 낮을수록 좋습니다. 70℃-75℃ 정도가 훌륭한 온도 범위입니다. 성능 저하가 발생하기 시작하는 온도는 대략 84℃-90℃ 정도일 것입니다. 하지만 성능 저하 이외에도 지속적으로 매우 높은 온도는 GPU 수명을 단축시킬 수 있습니다.",_t,A,ce="이어서, 여러 개의 GPU를 사용할 때 가장 중요한 측면 중 하나인 GPU 간 연결 방식을 살펴보겠습니다.",Gt,$,Nt,L,ue="다중 GPU를 사용하는 경우 GPU 간의 연결 방식은 전체 훈련 시간에 큰 영향을 미칠 수 있습니다. 만약 GPU가 동일한 물리적 노드에 있을 경우, 다음과 같이 확인할 수 있습니다:",Vt,E,kt,Z,oe="만약 NVLink로 연결된 듀얼 GPU 환경이라면, 다음과 같은 결과를 확인할 수 있습니다:",At,S,$t,X,re="NVLink를 지원하지 않는 다른 환경의 경우에는 다음과 같은 결과를 확인할 수 있습니다:",Lt,R,Et,Q,xe="이 결과에는 다음과 같은 범례가 포함되어 있습니다:",Zt,W,St,H,Pe="따라서 첫 번째 결과의 <code>NV2</code>는 GPU가 2개의 NVLink로 연결되어 있다는 것을 나타내고, 두 번째 결과의 <code>PHB</code>는 일반적인 소비자용 PCIe+브릿지 설정을 가지고 있다는 것을 나타냅니다.",Xt,Y,ve="설정에서 어떤 유형의 연결 방식을 가지고 있는지 확인하세요. 일부 연결 방식은 GPU 간 통신을 더 빠르게 만들 수 있으며(NVLink와 같이), 어떤 연결 방식은 더 느리게 만들 수 있습니다(PHB와 같이).",Rt,F,be="사용하는 확장성 솔루션의 종류에 따라 연결 속도가 주요한 영향을 미칠 수도 있고 미미한 영향을 미칠 수도 있습니다. DDP와 같이 GPU가 거의 동기화하지 않아도 되는 경우, 연결 속도가 느려도 큰 영향을 받지 않습니다. 반면 ZeRO-DP와 같이 GPU간 통신이 많이 필요한 경우, 더 빠른 훈련을 위해서는 더 빠른 연결 속도가 중요합니다.",Qt,g,Wt,D,he='<a href="https://en.wikipedia.org/wiki/NVLink" rel="nofollow">NVLink</a>는 Nvidia에서 개발한 유선 기반의 직렬 다중 레인 근거리 통신 링크입니다.',Ht,z,Be='새로운 세대의 NVLink는 더 빠른 대역폭을 제공합니다. <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>에서 아래와 같은 정보를 확인하실 수 있습니다:',Yt,q,_e=`<p>3세대 NVLink®
GA102 GPU는 4개의 x4 링크를 포함하는 NVIDIA의 3세대 NVLink 인터페이스를 활용하며,
각 링크는 두 개의 GPU 간에 각 방향으로 초당 14.0625GB의 대역폭을 제공합니다.
4개의 링크는 각 방향에 초당 56.25GB의 대역폭을 제공하며, 두 개의 GPU 간에는 초당 112.5GB의 총 대역폭을 제공합니다.
두 개의 RTX 3090 GPU를 NVLink를 사용해 SLI로 연결할 수 있습니다.
(3-Way 및 4-Way SLI 구성은 지원되지 않음에 유의하세요.)</p>`,Ft,O,Ge="따라서 <code>nvidia-smi topo -m</code>의 결과에서 <code>NVX</code>의 값이 높을수록 더 좋습니다. 세대는 GPU 아키텍처에 따라 다를 수 있습니다.",gt,K,Ne="그렇다면, gpt2를 작은 wikitext 샘플로 학습시키는 예제를 통해, NVLink가 훈련에 어떤 영향을 미치는지 살펴보겠습니다.",Dt,tt,Ve="결과는 다음과 같습니다:",zt,et,ke='<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>',qt,lt,Ae="NVLink 사용 시 훈련이 약 23% 더 빠르게 완료됨을 확인할 수 있습니다. 두 번째 벤치마크에서는 <code>NCCL_P2P_DISABLE=1</code>을 사용하여 NVLink를 사용하지 않도록 설정했습니다.",Ot,nt,$e="전체 벤치마크 코드와 결과는 다음과 같습니다:",Kt,st,te,it,Le=`하드웨어: 각각 2개의 TITAN RTX 24GB + 2개의 NVLink (<code>NV2</code> in <code>nvidia-smi topo -m</code>)
소프트웨어: <code>pytorch-1.8-to-be</code> + <code>cuda-11.0</code> / <code>transformers==4.3.0.dev0</code>`,ee,Mt,le;return I=new Ut({props:{title:"훈련용 사용자 맞춤형 하드웨어",local:"custom-hardware-for-training",headingTag:"h1"}}),d=new Ut({props:{title:"GPU",local:"gpu",headingTag:"h2"}}),r=new Ut({props:{title:"전원 공급과 냉각",local:"power-and-cooling",headingTag:"h3"}}),$=new Ut({props:{title:"다중 GPU 연결 방식",local:"multigpu-connectivity",headingTag:"h3"}}),E=new at({props:{code:"bnZpZGlhLXNtaSUyMHRvcG8lMjAtbQ==",highlighted:'<span class="hljs-symbol">nvidia</span>-<span class="hljs-keyword">smi</span> topo -m',wrap:!1}}),S=new at({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}}),R=new at({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}}),W=new at({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}}),g=new Ut({props:{title:"NVLink",local:"nvlink",headingTag:"h4"}}),st=new at({props:{code:"JTIzJTIwRERQJTIwdyUyRiUyME5WTGluayUwQSUwQXJtJTIwLXIlMjAlMkZ0bXAlMkZ0ZXN0LWNsbSUzQiUyMENVREFfVklTSUJMRV9ERVZJQ0VTJTNEMCUyQzElMjBweXRob24lMjAtbSUyMHRvcmNoLmRpc3RyaWJ1dGVkLmxhdW5jaCUyMCU1QyUwQS0tbnByb2NfcGVyX25vZGUlMjAyJTIwZXhhbXBsZXMlMkZweXRvcmNoJTJGbGFuZ3VhZ2UtbW9kZWxpbmclMkZydW5fY2xtLnB5JTIwLS1tb2RlbF9uYW1lX29yX3BhdGglMjBncHQyJTIwJTVDJTBBLS1kYXRhc2V0X25hbWUlMjB3aWtpdGV4dCUyMC0tZGF0YXNldF9jb25maWdfbmFtZSUyMHdpa2l0ZXh0LTItcmF3LXYxJTIwLS1kb190cmFpbiUyMCU1QyUwQS0tb3V0cHV0X2RpciUyMCUyRnRtcCUyRnRlc3QtY2xtJTIwLS1wZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlMjA0JTIwLS1tYXhfc3RlcHMlMjAyMDAlMEElMEElN0IndHJhaW5fcnVudGltZSclM0ElMjAxMDEuOTAwMyUyQyUyMCd0cmFpbl9zYW1wbGVzX3Blcl9zZWNvbmQnJTNBJTIwMS45NjMlMkMlMjAnZXBvY2gnJTNBJTIwMC42OSU3RCUwQSUwQSUyMyUyMEREUCUyMHclMkZvJTIwTlZMaW5rJTBBJTBBcm0lMjAtciUyMCUyRnRtcCUyRnRlc3QtY2xtJTNCJTIwQ1VEQV9WSVNJQkxFX0RFVklDRVMlM0QwJTJDMSUyME5DQ0xfUDJQX0RJU0FCTEUlM0QxJTIwcHl0aG9uJTIwLW0lMjB0b3JjaC5kaXN0cmlidXRlZC5sYXVuY2glMjAlNUMlMEEtLW5wcm9jX3Blcl9ub2RlJTIwMiUyMGV4YW1wbGVzJTJGcHl0b3JjaCUyRmxhbmd1YWdlLW1vZGVsaW5nJTJGcnVuX2NsbS5weSUyMC0tbW9kZWxfbmFtZV9vcl9wYXRoJTIwZ3B0MiUyMCU1QyUwQS0tZGF0YXNldF9uYW1lJTIwd2lraXRleHQlMjAtLWRhdGFzZXRfY29uZmlnX25hbWUlMjB3aWtpdGV4dC0yLXJhdy12MSUyMC0tZG9fdHJhaW4lMEEtLW91dHB1dF9kaXIlMjAlMkZ0bXAlMkZ0ZXN0LWNsbSUyMC0tcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTIwNCUyMC0tbWF4X3N0ZXBzJTIwMjAwJTBBJTBBJTdCJ3RyYWluX3J1bnRpbWUnJTNBJTIwMTMxLjQzNjclMkMlMjAndHJhaW5fc2FtcGxlc19wZXJfc2Vjb25kJyUzQSUyMDEuNTIyJTJDJTIwJ2Vwb2NoJyUzQSUyMDAuNjklN0Q=",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 python -m torch.distributed.launch \\
--nproc_per_node 2 examples/pytorch/language-modeling/run_clm.py --model_name_or_path 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">&#x27;train_runtime&#x27;</span>: 101.9003, <span class="hljs-string">&#x27;train_samples_per_second&#x27;</span>: 1.963, <span class="hljs-string">&#x27;epoch&#x27;</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 python -m torch.distributed.launch \\
--nproc_per_node 2 examples/pytorch/language-modeling/run_clm.py --model_name_or_path 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">&#x27;train_runtime&#x27;</span>: 131.4367, <span class="hljs-string">&#x27;train_samples_per_second&#x27;</span>: 1.522, <span class="hljs-string">&#x27;epoch&#x27;</span>: 0.69}`,wrap:!1}}),{c(){J=p("meta"),Ct=s(),pt=p("p"),yt=s(),U(I.$$.fragment),wt=s(),j=p("p"),j.innerHTML=se,mt=s(),f=p("p"),f.textContent=ie,Tt=s(),U(d.$$.fragment),Jt=s(),c=p("p"),c.textContent=pe,It=s(),u=p("ul"),u.innerHTML=Me,jt=s(),o=p("p"),o.textContent=ae,ft=s(),U(r.$$.fragment),dt=s(),x=p("p"),x.textContent=Ue,ct=s(),P=p("p"),P.innerHTML=Ce,ut=s(),v=p("p"),v.textContent=ye,ot=s(),b=p("p"),b.textContent=we,rt=s(),h=p("p"),h.textContent=me,xt=s(),B=p("p"),B.textContent=Te,Pt=s(),_=p("p"),_.textContent=Je,vt=s(),G=p("p"),G.textContent=Ie,bt=s(),N=p("p"),N.innerHTML=je,ht=s(),V=p("p"),V.textContent=fe,Bt=s(),k=p("p"),k.textContent=de,_t=s(),A=p("p"),A.textContent=ce,Gt=s(),U($.$$.fragment),Nt=s(),L=p("p"),L.textContent=ue,Vt=s(),U(E.$$.fragment),kt=s(),Z=p("p"),Z.textContent=oe,At=s(),U(S.$$.fragment),$t=s(),X=p("p"),X.textContent=re,Lt=s(),U(R.$$.fragment),Et=s(),Q=p("p"),Q.textContent=xe,Zt=s(),U(W.$$.fragment),St=s(),H=p("p"),H.innerHTML=Pe,Xt=s(),Y=p("p"),Y.textContent=ve,Rt=s(),F=p("p"),F.textContent=be,Qt=s(),U(g.$$.fragment),Wt=s(),D=p("p"),D.innerHTML=he,Ht=s(),z=p("p"),z.innerHTML=Be,Yt=s(),q=p("blockquote"),q.innerHTML=_e,Ft=s(),O=p("p"),O.innerHTML=Ge,gt=s(),K=p("p"),K.textContent=Ne,Dt=s(),tt=p("p"),tt.textContent=Ve,zt=s(),et=p("table"),et.innerHTML=ke,qt=s(),lt=p("p"),lt.innerHTML=Ae,Ot=s(),nt=p("p"),nt.textContent=$e,Kt=s(),U(st.$$.fragment),te=s(),it=p("p"),it.innerHTML=Le,ee=s(),Mt=p("p"),this.h()},l(t){const e=He("svelte-u9bgzb",document.head);J=M(e,"META",{name:!0,content:!0}),e.forEach(l),Ct=i(t),pt=M(t,"P",{}),Ee(pt).forEach(l),yt=i(t),C(I.$$.fragment,t),wt=i(t),j=M(t,"P",{"data-svelte-h":!0}),a(j)!=="svelte-17y49u0"&&(j.innerHTML=se),mt=i(t),f=M(t,"P",{"data-svelte-h":!0}),a(f)!=="svelte-1lotr1s"&&(f.textContent=ie),Tt=i(t),C(d.$$.fragment,t),Jt=i(t),c=M(t,"P",{"data-svelte-h":!0}),a(c)!=="svelte-1yrsfi3"&&(c.textContent=pe),It=i(t),u=M(t,"UL",{"data-svelte-h":!0}),a(u)!=="svelte-1vpar0j"&&(u.innerHTML=Me),jt=i(t),o=M(t,"P",{"data-svelte-h":!0}),a(o)!=="svelte-r8sih8"&&(o.textContent=ae),ft=i(t),C(r.$$.fragment,t),dt=i(t),x=M(t,"P",{"data-svelte-h":!0}),a(x)!=="svelte-iop98o"&&(x.textContent=Ue),ct=i(t),P=M(t,"P",{"data-svelte-h":!0}),a(P)!=="svelte-41c8ap"&&(P.innerHTML=Ce),ut=i(t),v=M(t,"P",{"data-svelte-h":!0}),a(v)!=="svelte-1c5epq9"&&(v.textContent=ye),ot=i(t),b=M(t,"P",{"data-svelte-h":!0}),a(b)!=="svelte-1qgi927"&&(b.textContent=we),rt=i(t),h=M(t,"P",{"data-svelte-h":!0}),a(h)!=="svelte-18mm2rg"&&(h.textContent=me),xt=i(t),B=M(t,"P",{"data-svelte-h":!0}),a(B)!=="svelte-1xfkrva"&&(B.textContent=Te),Pt=i(t),_=M(t,"P",{"data-svelte-h":!0}),a(_)!=="svelte-z6l5a3"&&(_.textContent=Je),vt=i(t),G=M(t,"P",{"data-svelte-h":!0}),a(G)!=="svelte-1nn1xen"&&(G.textContent=Ie),bt=i(t),N=M(t,"P",{"data-svelte-h":!0}),a(N)!=="svelte-1k2ygyt"&&(N.innerHTML=je),ht=i(t),V=M(t,"P",{"data-svelte-h":!0}),a(V)!=="svelte-1wbvsjh"&&(V.textContent=fe),Bt=i(t),k=M(t,"P",{"data-svelte-h":!0}),a(k)!=="svelte-3d08mu"&&(k.textContent=de),_t=i(t),A=M(t,"P",{"data-svelte-h":!0}),a(A)!=="svelte-177u5qa"&&(A.textContent=ce),Gt=i(t),C($.$$.fragment,t),Nt=i(t),L=M(t,"P",{"data-svelte-h":!0}),a(L)!=="svelte-kpnkx9"&&(L.textContent=ue),Vt=i(t),C(E.$$.fragment,t),kt=i(t),Z=M(t,"P",{"data-svelte-h":!0}),a(Z)!=="svelte-1glc7b"&&(Z.textContent=oe),At=i(t),C(S.$$.fragment,t),$t=i(t),X=M(t,"P",{"data-svelte-h":!0}),a(X)!=="svelte-1t90u6b"&&(X.textContent=re),Lt=i(t),C(R.$$.fragment,t),Et=i(t),Q=M(t,"P",{"data-svelte-h":!0}),a(Q)!=="svelte-f3zl6s"&&(Q.textContent=xe),Zt=i(t),C(W.$$.fragment,t),St=i(t),H=M(t,"P",{"data-svelte-h":!0}),a(H)!=="svelte-1kj8h9y"&&(H.innerHTML=Pe),Xt=i(t),Y=M(t,"P",{"data-svelte-h":!0}),a(Y)!=="svelte-1lemivv"&&(Y.textContent=ve),Rt=i(t),F=M(t,"P",{"data-svelte-h":!0}),a(F)!=="svelte-1vhu8c6"&&(F.textContent=be),Qt=i(t),C(g.$$.fragment,t),Wt=i(t),D=M(t,"P",{"data-svelte-h":!0}),a(D)!=="svelte-1mz66a4"&&(D.innerHTML=he),Ht=i(t),z=M(t,"P",{"data-svelte-h":!0}),a(z)!=="svelte-bxqzrl"&&(z.innerHTML=Be),Yt=i(t),q=M(t,"BLOCKQUOTE",{"data-svelte-h":!0}),a(q)!=="svelte-15cj62d"&&(q.innerHTML=_e),Ft=i(t),O=M(t,"P",{"data-svelte-h":!0}),a(O)!=="svelte-17xvce"&&(O.innerHTML=Ge),gt=i(t),K=M(t,"P",{"data-svelte-h":!0}),a(K)!=="svelte-2waai2"&&(K.textContent=Ne),Dt=i(t),tt=M(t,"P",{"data-svelte-h":!0}),a(tt)!=="svelte-1agqenc"&&(tt.textContent=Ve),zt=i(t),et=M(t,"TABLE",{"data-svelte-h":!0}),a(et)!=="svelte-1hvmx1i"&&(et.innerHTML=ke),qt=i(t),lt=M(t,"P",{"data-svelte-h":!0}),a(lt)!=="svelte-1sq2tb4"&&(lt.innerHTML=Ae),Ot=i(t),nt=M(t,"P",{"data-svelte-h":!0}),a(nt)!=="svelte-1282ofc"&&(nt.textContent=$e),Kt=i(t),C(st.$$.fragment,t),te=i(t),it=M(t,"P",{"data-svelte-h":!0}),a(it)!=="svelte-w7ygsp"&&(it.innerHTML=Le),ee=i(t),Mt=M(t,"P",{}),Ee(Mt).forEach(l),this.h()},h(){Ze(J,"name","hf:doc:metadata"),Ze(J,"content",ge)},m(t,e){Ye(document.head,J),n(t,Ct,e),n(t,pt,e),n(t,yt,e),y(I,t,e),n(t,wt,e),n(t,j,e),n(t,mt,e),n(t,f,e),n(t,Tt,e),y(d,t,e),n(t,Jt,e),n(t,c,e),n(t,It,e),n(t,u,e),n(t,jt,e),n(t,o,e),n(t,ft,e),y(r,t,e),n(t,dt,e),n(t,x,e),n(t,ct,e),n(t,P,e),n(t,ut,e),n(t,v,e),n(t,ot,e),n(t,b,e),n(t,rt,e),n(t,h,e),n(t,xt,e),n(t,B,e),n(t,Pt,e),n(t,_,e),n(t,vt,e),n(t,G,e),n(t,bt,e),n(t,N,e),n(t,ht,e),n(t,V,e),n(t,Bt,e),n(t,k,e),n(t,_t,e),n(t,A,e),n(t,Gt,e),y($,t,e),n(t,Nt,e),n(t,L,e),n(t,Vt,e),y(E,t,e),n(t,kt,e),n(t,Z,e),n(t,At,e),y(S,t,e),n(t,$t,e),n(t,X,e),n(t,Lt,e),y(R,t,e),n(t,Et,e),n(t,Q,e),n(t,Zt,e),y(W,t,e),n(t,St,e),n(t,H,e),n(t,Xt,e),n(t,Y,e),n(t,Rt,e),n(t,F,e),n(t,Qt,e),y(g,t,e),n(t,Wt,e),n(t,D,e),n(t,Ht,e),n(t,z,e),n(t,Yt,e),n(t,q,e),n(t,Ft,e),n(t,O,e),n(t,gt,e),n(t,K,e),n(t,Dt,e),n(t,tt,e),n(t,zt,e),n(t,et,e),n(t,qt,e),n(t,lt,e),n(t,Ot,e),n(t,nt,e),n(t,Kt,e),y(st,t,e),n(t,te,e),n(t,it,e),n(t,ee,e),n(t,Mt,e),le=!0},p:Xe,i(t){le||(w(I.$$.fragment,t),w(d.$$.fragment,t),w(r.$$.fragment,t),w($.$$.fragment,t),w(E.$$.fragment,t),w(S.$$.fragment,t),w(R.$$.fragment,t),w(W.$$.fragment,t),w(g.$$.fragment,t),w(st.$$.fragment,t),le=!0)},o(t){m(I.$$.fragment,t),m(d.$$.fragment,t),m(r.$$.fragment,t),m($.$$.fragment,t),m(E.$$.fragment,t),m(S.$$.fragment,t),m(R.$$.fragment,t),m(W.$$.fragment,t),m(g.$$.fragment,t),m(st.$$.fragment,t),le=!1},d(t){t&&(l(Ct),l(pt),l(yt),l(wt),l(j),l(mt),l(f),l(Tt),l(Jt),l(c),l(It),l(u),l(jt),l(o),l(ft),l(dt),l(x),l(ct),l(P),l(ut),l(v),l(ot),l(b),l(rt),l(h),l(xt),l(B),l(Pt),l(_),l(vt),l(G),l(bt),l(N),l(ht),l(V),l(Bt),l(k),l(_t),l(A),l(Gt),l(Nt),l(L),l(Vt),l(kt),l(Z),l(At),l($t),l(X),l(Lt),l(Et),l(Q),l(Zt),l(St),l(H),l(Xt),l(Y),l(Rt),l(F),l(Qt),l(Wt),l(D),l(Ht),l(z),l(Yt),l(q),l(Ft),l(O),l(gt),l(K),l(Dt),l(tt),l(zt),l(et),l(qt),l(lt),l(Ot),l(nt),l(Kt),l(te),l(it),l(ee),l(Mt)),l(J),T(I,t),T(d,t),T(r,t),T($,t),T(E,t),T(S,t),T(R,t),T(W,t),T(g,t),T(st,t)}}}const ge='{"title":"훈련용 사용자 맞춤형 하드웨어","local":"custom-hardware-for-training","sections":[{"title":"GPU","local":"gpu","sections":[{"title":"전원 공급과 냉각","local":"power-and-cooling","sections":[],"depth":3},{"title":"다중 GPU 연결 방식","local":"multigpu-connectivity","sections":[{"title":"NVLink","local":"nvlink","sections":[],"depth":4}],"depth":3}],"depth":2}],"depth":1}';function De(ne){return Re(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class tl extends Qe{constructor(J){super(),We(this,J,De,Fe,Se,{})}}export{tl as component};
