Spaces:
Running
Running
home: expand NPU section (peak 417, 3.8x, training deep-dive)
Browse files- index.html +1 -1
index.html
CHANGED
|
@@ -1146,7 +1146,7 @@ document.addEventListener('keydown', function(e){ if(e.key==='Escape') closeSpot
|
|
| 1146 |
|
| 1147 |
|
| 1148 |
<!-- โโโโโโโโโโโ NPU TECH (2026-10-25, ์ค์ธก์น๋ง) โโโโโโโโโโโ -->
|
| 1149 |
-
<div class="section" id="npu-tech"><div class="container"><h2 class="st"><span class="ko-only">NPU: <span>์ถ๋ก ๊ฐ์ + ํ์ต(LoRAยท์ฌ์ ํ์ต)</span></span><span class="en-only">NPU: <span>inference acceleration + training (LoRA, pretraining)</span></span></h2><p class="ss"><span class="ko-only">์ถ๋ก ์ ์ฉ์ผ๋ก ์ค๊ณ๋ ์์ฉ NPU์์, ์ถ๋ก ์ ๋์ด ํ์ต๊น์ง ์คํํ์ต๋๋ค. ์๋ ์์น๋ ๋ชจ๋ ์์ฒด ์ค์ธก์ด๋ฉฐ ์ธก์ ์กฐ๊ฑด์ ํจ๊ป ๋ฐํ๋๋ค.</span><span class="en-only">On a commercial NPU designed for inference only, we went past inference into training. Every number below is self-measured, with its measurement conditions stated.</span></p><div class="grid g3"><div class="card" style="border-top:4px solid #0f6e56"><div style="font-size:1.6rem">โก</div><h4 style="margin:6px 0 4px"><span class="ko-only">์ถ๋ก ๊ฐ์</span><span class="en-only">Inference acceleration</span></h4><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">53.9 tok/s</div><div style="font-size:.78rem;color:var(--muted);margin-bottom:8px"><span class="ko-only">Gemma-4-26B ยท 8์นฉ ยท ๋จ์ผ ์คํธ๋ฆผ</span><span class="en-only">Gemma-4-26B ยท 8 chips ยท single stream</span></div><p style="font-size:.86rem;line-height:1.65;margin:0"><span class="ko-only">๋จ์ผ ์คํธ๋ฆผ ๊ธฐ์ค B200 ํ์ค vLLM ๊ตฌ์ฑ(30.2 tok/s)๋ณด๋ค ๋น ๋ฅธ ์๋ต ์๋. ๋ฐฐ์น ์ต๋ ์ฝ 417 tok/s, ์๋น์ ๋ ฅ ์ฝ 1/5. 35B MoE(A3B)๋ ๋ฐฐ์น 8์์ 197 tok/s.</span><span class="en-only">Faster single-stream response than a standard B200 vLLM setup (30.2 tok/s). Batched peak about 417 tok/s at roughly one fifth the power. A 35B MoE (A3B) reaches 197 tok/s at batch 8.</span></p></div><div class="card" style="border-top:4px solid #0f6e56"><div style="font-size:1.6rem">๐ง</div><h4 style="margin:6px 0 4px"><span class="ko-only">LoRA ํ์ต</span><span class="en-only">LoRA training</span></h4><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">4๊ฐ ๋ชจ๋ธ</div><div style="font-size:.78rem;color:var(--muted);margin-bottom:8px"><span class="ko-only">SmolLM2-135Mยท1.7B ยท Qwen3-0.6Bยท1.7B</span><span class="en-only">SmolLM2-135M/1.7B ยท Qwen3-0.6B/1.7B</span></div><p style="font-size:.86rem;line-height:1.65;margin:0"><span class="ko-only">์ถ๋ก ์ ์ฉ NPU์์ ์ธต ๋ด๋ถ LoRA ์ญ์ ํ๋ฅผ ์ง์ ์คํ. ๊ธฐ์ธ๊ธฐ๋ฅผ PyTorch autograd์ ๋์กฐํด ์๋์ค์ฐจ 1.4ร10โปโด. ๋ํ ๋ชจ๋ธ์ ๋ณธ์ฒด๋ฅผ ๊ณ ์ ํ๊ณ ํ์ ๋จธ๋ฆฌ๋ง ํ์ตํ๋ ๋ฐฉ์์ผ๋ก ํ์ฅํฉ๋๋ค.</span><span class="en-only">Layer-internal LoRA backpropagation runs directly on the inference NPU. Gradients match PyTorch autograd within 1.4ร10โปโด relative error. Larger models extend by freezing the backbone and training a decision head.</span></p></div><div class="card" style="border-top:4px solid #0f6e56"><div style="font-size:1.6rem">๐ง </div><h4 style="margin:6px 0 4px"><span class="ko-only">0๋ถํฐ ์ฌ์ ํ์ต</span><span class="en-only">Pretraining from scratch</span></h4><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">์๊ด 0.99</div><div style="font-size:.78rem;color:var(--muted);margin-bottom:8px"><span class="ko-only">46M ยท 137M ยท 365M ๊ท๋ชจ ์ค์ธก</span><span class="en-only">Measured at 46M ยท 137M ยท 365M</span></div><p style="font-size:.86rem;line-height:1.65;margin:0"><span class="ko-only">์๋น๋์ GPU ์์ด ์ถ๋ก ์ ์ฉ NPU์์ ์ฒ์๋ถํฐ ์ฌ์ ํ์ต. ๊ฐ์ ๋ฐ์ดํฐยท์ค์ ์ GPU ํ์ต๊ณผ ์์ค ๊ถค์ ์๊ด 0.99. ๊ณต๊ฐ ๋ชจ๋ธ: <a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" target="_blank" rel="noopener noreferrer">VKORE-46M-NPU</a>.</span><span class="en-only">Pretraining from scratch on an inference-only NPU, no Nvidia GPU. Loss trajectory correlates 0.99 with GPU training on the same data and settings. Open model: <a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" target="_blank" rel="noopener noreferrer">VKORE-46M-NPU</a>.</span></p></div></div><p style="color:var(--muted);font-size:.8rem;margin-top:10px"><span class="ko-only">์ธก์ ์กฐ๊ฑด: ์ถ๋ก ์ 8์นฉ ํ
์ ๋ณ๋ ฌยท์์ฑ 128ํ ํฐ ๋์ฝ๋ฉ ๊ธฐ์ค. ๋น๊ต ์ถ์ ๋จ์ผ ์คํธ๋ฆผ ์๋ยท์ ๋ ฅยทํ์ต ๊ฐ๋ฅ์ฑ์
๋๋ค. ๋ชจ๋ ์์น๋ ์์ฒด ์ค์ธก์ด๋ฉฐ ์ธ๋ถ ์ธ์ฆ์ด ์๋๋๋ค.</span><span class="en-only">Conditions: inference with 8-chip tensor parallelism, 128-token decode. Comparison axes are single-stream speed, power and trainability. All figures are self-measured, not an external certification.</span></p></div></div>
|
| 1150 |
|
| 1151 |
<!-- โโโโโโโโโโโ AI-NATIVE (minimal) โโโโโโโโโโโ -->
|
| 1152 |
|
|
|
|
| 1146 |
|
| 1147 |
|
| 1148 |
<!-- โโโโโโโโโโโ NPU TECH (2026-10-25, ์ค์ธก์น๋ง) โโโโโโโโโโโ -->
|
| 1149 |
+
<div class="section" id="npu-tech"><div class="container"><div style="font-size:.74rem;font-weight:800;letter-spacing:.08em;color:#0f6e56;margin-bottom:6px">VKORE ยท NPU TRAINING & INFERENCE</div><h2 class="st"><span class="ko-only">์ถ๋ก ์ ์ฉ NPU์์ <span>ํ์ต๊น์ง</span>: ์ถ๋ก ๊ฐ์ + LoRA + ์ฌ์ ํ์ต</span><span class="en-only">Training on an <span>inference-only NPU</span>: acceleration + LoRA + pretraining</span></h2><p class="ss"><span class="ko-only">NPU๋ ์ถ๋ก ๋ง ํ๋๋ก ์ค๊ณ๋ฉ๋๋ค. ํ์ต์ ํ์ํ ์ญ์ ํ, ์ตํฐ๋ง์ด์ , ๋ํ ํ์ต ๊ทธ๋ํ๋ฅผ ์ฒ์๋ถํฐ ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋น๋๋ํํธ๋ ์์ฉ ์ถ๋ก ์ ์ฉ NPU์์ ์ถ๋ก ๊ฐ์์ ๊ทธ์น์ง ์๊ณ LoRA ๋ฏธ์ธ์กฐ์ ๊ณผ 0๋ถํฐ์ ์ฌ์ ํ์ต๊น์ง ์คํํ์ต๋๋ค. ์๋ ์์น๋ ๋ชจ๋ ์์ฒด ์ค์ธก์ด๋ฉฐ ์ธก์ ์กฐ๊ฑด์ ํจ๊ป ๋ฐํ๋๋ค.</span><span class="en-only">NPUs are built for inference only. Backpropagation, optimizer state and large training graphs are not part of their design. VIDRAFT went beyond accelerating inference on a commercial inference-only NPU and ran LoRA fine-tuning and pretraining from scratch on it. Every figure below is self-measured, with conditions stated.</span></p><div class="grid" style="grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:14px 0 18px"><div class="card" style="text-align:center;padding:14px"><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">417 tok/s</div><div style="font-size:.76rem;color:var(--muted);margin-top:4px"><span class="ko-only">์ถ๋ก ์ต๋ ์ฒ๋ฆฌ๋ (26B, 8์นฉ)</span><span class="en-only">Peak inference throughput (26B, 8 chips)</span></div></div><div class="card" style="text-align:center;padding:14px"><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">3.8ร</div><div style="font-size:.76rem;color:var(--muted);margin-top:4px"><span class="ko-only">๋จ์ผ ์คํธ๋ฆผ ๊ฐ์ (14.1 โ 53.9)</span><span class="en-only">Single-stream speedup (14.1 to 53.9)</span></div></div><div class="card" style="text-align:center;padding:14px"><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">0.9999</div><div style="font-size:.76rem;color:var(--muted);margin-top:4px"><span class="ko-only">ํ์ต ๊ธฐ์ธ๊ธฐ ์ผ์น๋ (ํ์ค ๋๋น ์ฝ์ฌ์ธ)</span><span class="en-only">Gradient agreement vs standard (cosine)</span></div></div><div class="card" style="text-align:center;padding:14px"><div style="font-size:1.7rem;font-weight:900;color:#0f6e56;line-height:1.1">17.2๋ง</div><div style="font-size:.76rem;color:var(--muted);margin-top:4px"><span class="ko-only">์นด๋ 1์ฅ ํ์ต ์ฒ๋ฆฌ๋ tok/s (4์นฉ)</span><span class="en-only">Training tok/s per card (4 chips, about 172K)</span></div></div></div><h3 style="font-size:1.05rem;margin:6px 0 8px"><span class="ko-only">์ ์ด๋ ค์ ๋: ์ถ๋ก ์ ์ฉ NPU๊ฐ ํ์ต์ ๋ง๋ ์ธ ๊ฐ์ง ๋ฒฝ</span><span class="en-only">Why it was hard: three walls that block training on an inference NPU</span></h3><div class="grid g3"><div class="card"><h4><span class="ko-only">โ ๊ฐ์ง ํ์ต</span><span class="en-only">โ Silent fake training</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">์ปดํ์ผ๋ฌ์ ์๋๋ฏธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๊ณ ์ ํ๋ ๊ณผ์ ์์ ๊ธฐ์ธ๊ธฐ๋ฅผ 0์ผ๋ก ๊ตณํ ๋ฒ๋ฆฝ๋๋ค. ์์ค๊ฐ๋ง ๋ณด๋ฉด ํ์ต๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๊ฐ์ค์น๋ ๊ฑฐ์ ์์ง์ด์ง ์์์ต๋๋ค. ์์ค์ด 25์คํ
๋์ ๋ณํ์ง ์๋ ๊ฒ์ผ๋ก ์ ๋ฐํ์ต๋๋ค.</span><span class="en-only">Compiler autodiff froze gradients to zero while fixing the graph. Loss curves looked like training, but the weights barely moved. We caught it when loss stayed flat for 25 steps.</span></p></div><div class="card"><h4><span class="ko-only">โก ์ญ์ ํ ๊ทธ๋ํ์ ํ๊ณ</span><span class="en-only">โก Backward graph limits</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">์ถ๋ก ์ฉ ์ปดํ์ผ๋ฌ๋ ์์ ํ์ ๋ง์ถฐ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ธต ๋ด๋ถ ์ญ์ ํ๋ฅผ ๊ทธ๋๋ก ์ฌ๋ฆฌ๋ฉด ์ปดํ์ผ์ด ์คํจํ๊ฑฐ๋, ๊ฑฐ๋ญ์ ๊ณฑ์ด๋ ์ค์นผ๋ผ ๋๋์
๊ฐ์ ์ฐ์ฐ์ด ์ฅ์น ๊ทธ๋ํ๋ก ๋ณํ๋์ง ์์ต๋๋ค.</span><span class="en-only">Inference compilers are tuned for the forward pass. Pushing layer-internal backward through them fails to compile, and ops such as powers or scalar division do not convert into device graphs.</span></p></div><div class="card"><h4><span class="ko-only">โข ์ฅ๊ธฐ ํ์ต์ ๋ฐ์ฐ</span><span class="en-only">โข Divergence in long runs</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">1์คํ
๊ธฐ์ธ๊ธฐ๊ฐ GPU์ 0.9999 ์ด์ ์ผ์นํด๋, ์๋ง ์คํ
์ ๋๊ธฐ๋ฉด ์์ ํธํฅ์ด ํ ๋ฐฉํฅ์ผ๋ก ์์ฌ ํ์ต์ด ๋ฌด๋์ง ์ ์์ต๋๋ค. ์ด๊ธฐ ๊ฒ์ฆ๋ง์ผ๋ก๋ ๋๋ฌ๋์ง ์๋ ๋ฌธ์ ์
๋๋ค.</span><span class="en-only">Even with one-step gradients matching GPU above 0.9999, small biases can build up in one direction over tens of thousands of steps and break training. Early checks alone do not reveal it.</span></p></div></div><h3 style="font-size:1.05rem;margin:16px 0 8px"><span class="ko-only">์ด๋ป๊ฒ ํ์๋</span><span class="en-only">How we solved it</span></h3><div class="grid g3"><div class="card" style="border-top:4px solid #0f6e56"><h4><span class="ko-only">์ญ์ ํ๋ฅผ ์ง์ ๊ตฌํ</span><span class="en-only">Hand-written backward</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">์๋๋ฏธ๋ถ์ ๋งก๊ธฐ์ง ์๊ณ , ์ญ์ ํ๋ฅผ NPU๊ฐ ์คํํ ์ ์๋ ์์ ํ ์ฐ์ฐ์ผ๋ก ์ง์ ์์ฑํ์ต๋๋ค. ์๋ ๊ฐ์ค์น๋ ๊ทธ๋ํ ์์๋ก ๊ณ ์ ํ๊ณ ํ์ต ๋์(LoRA)๋ง ์
๋ ฅ์ผ๋ก ๋ฃ์ด ์์ ๊ฒฝ๋ก 20.6ms ๋ ์
๋ ฅ ๊ฒฝ๋ก 266ms, 13๋ฐฐ ๋น ๋ฅด๊ฒ ๋ง๋ค์์ต๋๋ค. ์ดํ
์
์ ๊ทํ(q_norm, k_norm)๊น์ง ์๋์ผ๋ก ์ญ์ ํํด PyTorch autograd์ ์๋์ค์ฐจ 1.4ร10โปโด๋ก ๋ง์ท์ต๋๋ค.</span><span class="en-only">Instead of autodiff, backward is written as forward ops the NPU can run. Base weights become graph constants and only the trainable LoRA tensors are inputs: 20.6 ms vs 266 ms, 13x faster. Attention norms (q_norm, k_norm) are back-propagated by hand, matching PyTorch autograd within 1.4ร10โปโด.</span></p></div><div class="card" style="border-top:4px solid #0f6e56"><h4><span class="ko-only">NPU ๊ธฐ์ธ๊ธฐ + ๊ณ ์ ๋ฐ ์ตํฐ๋ง์ด์ </span><span class="en-only">NPU gradients + high-precision optimizer</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">์ค์ LLM ๋ธ๋ก(์ดํ
์
+ SwiGLU)์ LoRA์์ ๊ธฐ์ธ๊ธฐ๋ NPU๊ฐ ๊ณ์ฐํ๊ณ ์ตํฐ๋ง์ด์ ์ํ๋ fp32๋ก ๊ด๋ฆฌํด, ํ์ค ํ์ต ๋๋น ๊ธฐ์ธ๊ธฐ ์ฝ์ฌ์ธ 0.9999๋ฅผ ์ป์์ต๋๋ค. ์นฉ 1๊ฐ 4.4๋ง tok/s(์ฝ 11 TFLOPS), ์นด๋ 1์ฅ(4์นฉ) ๋์ ์ฝ 17.2๋ง tok/s, ์นด๋ ์ ๋ ฅ ์ฝ 278W. ์๋ฒ CPU(64์ฝ์ดร2) ๋๋น 7.6~17.7๋ฐฐ์
๋๋ค.</span><span class="en-only">On real LLM blocks (attention + SwiGLU) with LoRA, the NPU computes gradients while optimizer state stays in fp32, giving 0.9999 gradient cosine vs standard training. 44K tok/s per chip (about 11 TFLOPS), about 172K tok/s per 4-chip card at roughly 278 W, 7.6 to 17.7x a dual 64-core server CPU.</span></p></div><div class="card" style="border-top:4px solid #0f6e56"><h4><span class="ko-only">์ฒญํฌ ์ปดํ์ผ + ๋ค์นฉ ๋ณ๋ ฌ + ์ฅ๊ธฐ ์์ ํ</span><span class="en-only">Chunked compile + multi-chip + long-run stability</span></h4><p style="font-size:.86rem;line-height:1.65"><span class="ko-only">๋ชจ๋ธ์ N๋จ ์ฒญํฌ๋ก ๋๋ ์ปดํ์ผํ๊ณ ๋ํ ์ดํ ํค๋๋ ํธ์คํธ์์ ์ฒ๋ฆฌํด, 0.3B๊ธ ์ฌ์ ํ์ต์ ์นฉ๋น 2,550 tok/s๋ก ๋๋ ธ์ต๋๋ค. 32์นฉ ๋ณ๋ ฌ๋ก ์ฝ 1.4๋ง tok/s์
๋๋ค. ์ฅ๊ธฐ ํ์ต ๋ฐ์ฐ์ ์์ฒด ์์ ํ ๊ธฐ๋ฒ์ผ๋ก ํด๊ฒฐํด GPU์ ๊ฐ์ ์์ค ๊ถค์ (์๊ด 0.99)์ ์ ์งํฉ๋๋ค. ํนํ ์ถ์ ์ค๋น ์ค์ด๋ผ ์ธ๋ถ๋ ๊ณต๊ฐํ์ง ์์ต๋๋ค.</span><span class="en-only">The model is compiled in N chunks with the large vocab head on the host, running 0.3B-class pretraining at 2,550 tok/s per chip and about 14K tok/s across 32 chips. Long-run divergence is solved with an in-house stabilization method that keeps the loss trajectory in line with GPU (correlation 0.99). Patent pending, details withheld.</span></p></div></div><h3 style="font-size:1.05rem;margin:16px 0 8px"><span class="ko-only">์ค์ธก ์์ฝ</span><span class="en-only">Measured results</span></h3><div style="overflow-x:auto"><table style="width:100%;border-collapse:collapse;font-size:.85rem;min-width:560px"><thead><tr><th style="padding:8px;border-bottom:2px solid var(--border);text-align:left"><span class="ko-only">๊ตฌ๋ถ</span><span class="en-only">Area</span></th><th style="padding:8px;border-bottom:2px solid var(--border);text-align:left"><span class="ko-only">๋์ยท์กฐ๊ฑด</span><span class="en-only">Target, conditions</span></th><th style="padding:8px;border-bottom:2px solid var(--border);text-align:left;text-align:right"><span class="ko-only">์ค์ธก</span><span class="en-only">Measured</span></th><th style="padding:8px;border-bottom:2px solid var(--border);text-align:left"><span class="ko-only">๋น๊ณ </span><span class="en-only">Note</span></th></tr></thead><tbody><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ถ๋ก </span><span class="en-only">Inference</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">Gemma-4-26B ยท 8์นฉ ยท ๋ฐฐ์น</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">~417 tok/s</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">์ต๋ ์ฒ๋ฆฌ๋</span><span class="en-only">peak throughput</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ถ๋ก </span><span class="en-only">Inference</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">Gemma-4-26B ยท ๋จ์ผ ์คํธ๋ฆผ</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">53.9 tok/s</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">์ ์ฉ ์ 14.1์์ 3.8๋ฐฐ</span><span class="en-only">from 14.1, 3.8x</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ถ๋ก </span><span class="en-only">Inference</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">35B MoE (A3B) ยท ๋ฐฐ์น 8</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">197 tok/s</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">๋ฏธ์ง์ ๊ตฌ์กฐ๋ฅผ ์์ฒด ๋ชจ๋ธ ํด๋์ค๋ก ๊ตฌ๋</span><span class="en-only">unsupported arch via custom model class</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700">LoRA</td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">SmolLM2-135Mยท1.7B ยท Qwen3-0.6Bยท1.7B</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56"><span class="ko-only">4๊ฐ ์ฑ๊ณต</span><span class="en-only">4 models</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">autograd ๋์กฐ ์ค์ฐจ 1.4ร10โปโด</span><span class="en-only">1.4ร10โปโด vs autograd</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700">LoRA</td><td style="padding:7px 8px;border-bottom:1px solid var(--border)"><span class="ko-only">LLM ๋ธ๋ก(์ดํ
์
+ SwiGLU)</span><span class="en-only">LLM block (attention + SwiGLU)</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">cos 0.9999</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">ํ์ค ํ์ต ๋๋น</span><span class="en-only">vs standard training</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">ํ์ต ์ฒ๋ฆฌ๋</span><span class="en-only">Training speed</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)"><span class="ko-only">์นด๋ 1์ฅ = 4์นฉ</span><span class="en-only">one card = 4 chips</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">~172,000 tok/s</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">์ ๋ ฅ ์ฝ 278W</span><span class="en-only">about 278 W</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ฌ์ ํ์ต</span><span class="en-only">Pretraining</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">137M / 365M ยท ๋จ์ผ์นฉ</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">4,880 / 1,015 tok/s</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">0๋ถํฐ ํ์ต</span><span class="en-only">from scratch</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ฌ์ ํ์ต</span><span class="en-only">Pretraining</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)"><span class="ko-only">0.3B๊ธ ยท ์ฒญํฌ ์ปดํ์ผ</span><span class="en-only">0.3B class, chunked</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56"><span class="ko-only">์นฉ๋น 2,550 tok/s</span><span class="en-only">2,550 tok/s per chip</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">32์นฉ ๋ณ๋ ฌ ์ฝ 1.4๋ง tok/s</span><span class="en-only">about 14K tok/s on 32 chips</span></td></tr><tr><td style="padding:7px 8px;border-bottom:1px solid var(--border);font-weight:700"><span class="ko-only">์ฌ์ ํ์ต</span><span class="en-only">Pretraining</span></td><td style="padding:7px 8px;border-bottom:1px solid var(--border)">46M ยท 137M ยท 365M</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);text-align:right;font-weight:700;color:#0f6e56">corr 0.99</td><td style="padding:7px 8px;border-bottom:1px solid var(--border);color:var(--muted);font-size:.8rem"><span class="ko-only">GPU ํ์ต๊ณผ ์์ค ๊ถค์ ์๊ด</span><span class="en-only">loss trajectory vs GPU</span></td></tr></tbody></table></div><p style="font-size:.86rem;margin-top:10px"><span class="ko-only">๊ณต๊ฐ ๋ชจ๋ธ: <a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" target="_blank" rel="noopener noreferrer">VKORE-46M-NPU</a> (์ถ๋ก ์ ์ฉ NPU์์ 0๋ถํฐ ์ฌ์ ํ์ต)</span><span class="en-only">Open model: <a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" target="_blank" rel="noopener noreferrer">VKORE-46M-NPU</a> (pretrained from scratch on an inference-only NPU)</span></p><p style="color:var(--muted);font-size:.78rem;margin-top:6px"><span class="ko-only">์ธก์ ์กฐ๊ฑด: ์ถ๋ก ์ 8์นฉ ํ
์ ๏ฟฝ๏ฟฝ๏ฟฝ๋ ฌ, ์์ฑ 128ํ ํฐ ๋์ฝ๋ฉ. ํ์ต ์ฒ๋ฆฌ๋์ LoRA ๋ธ๋ก ๊ธฐ์ค. ๋ชจ๋ ์์น๋ ์์ฒด ์ค์ธก์ด๋ฉฐ ์ธ๋ถ ์ธ์ฆ์ด ์๋๋๋ค.</span><span class="en-only">Conditions: inference with 8-chip tensor parallelism, 128-token decode. Training throughput measured on LoRA blocks. All figures self-measured, not an external certification.</span></p></div></div>
|
| 1150 |
|
| 1151 |
<!-- โโโโโโโโโโโ AI-NATIVE (minimal) โโโโโโโโโโโ -->
|
| 1152 |
|