Can LLMs Write Fast Multi-GPU Kernels? โ Simran Arora, Together AI
ํ ์ค ํต์ฌ
๋ฉํฐ GPU ์ปค๋์ ๋ณ๋ชฉ์ด ๊ณ์ฐ์์ ๋คํธ์ํฌ๋ก ์ฎ๊ฒจ๊ฐ ์ง๊ธ, ํต์ฌ ์ ์กยท์ค์ผ์ค๋ง ์๋ฆฌ๋ฅผ ์ ์ ๋ฆฌํ๋ฉด ์ฑ๋ฅ์ ํฌ๊ฒ ์ฌ๋ฆด ์ ์์ง๋ง frontier ๋ชจ๋ธ์ ์์ง ๊ทธ trade-off๋ฅผ ์์ ์ ์ผ๋ก ์ถ๋ก ํด ๊ณ ์ฑ๋ฅ ์ฝ๋๋ฅผ ๋ง๋ค์ง ๋ชปํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
๋จ์ผ GPU ์ปค๋์์ GPU ๊ฐ ๋คํธ์ํฌ๋ก ์ด์ ์ฑ๋ฅ ๋ณ๋ชฉ์ ๋จ์ผ GPU ๋ด๋ถ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ๋ณด๋ค ์ฌ๋ฌ GPU ์ฌ์ด์ ํต์ ์ผ๋ก ์ด๋ํ๋ค. ๋ ๋น ๋ฅธ ์ปค๋๊ณผ ํจ์จ์ ์ธ ์ํคํ ์ฒ๊ฐ ๋ณดํธํ๋๋ฉด์, ๋ฉํฐ GPU ์ปค๋์ ์ฝ๊ฒ ๊ฐ๋ฐํ๋ ๋ฌธ์ ๊ฐ ํต์ฌ ๊ณผ์ ๋ก ๋ ์ฌ๋๋ค.
-
1:29
H100 ๋ด๋ถ ๊ตฌ์กฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ฑฐ๋ฆฌ์ ์ค์์ฑ H100์ ์ฐ์ฐ ์ ๋, L2 cache, HBM, register๋ ์๋์ ์ฉ๋์ด ์๋ก ๋ค๋ฅธ ๊ณ์ธต์ ์ด๋ฃฌ๋ค. ๊ณ์ฐ์ ๊ฐ๊น์ด ๋ฉ๋ชจ๋ฆฌ์ผ์๋ก ๋น ๋ฅด์ง๋ง ์๊ณ , ๋ฉ์๋ก ํฌ์ง๋ง ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์๋๋๊ฐ ์ฑ๋ฅ์ ์ข์ฐํ๋ค.
-
4:44
์ํธ์ฐ๊ฒฐ ๊ณ์ธต: PCIe, NVLink, NVSwitch GPU ์์คํ ์๋ CPU-GPU์ฉ PCIe, ๋ ธ๋ ๊ฐ ํต์ ์ฉ InfiniBandยทTCP, GPU-GPU์ฉ NVLink์ NVSwitch ๊ฐ์ ๊ณ์ธต์ด ์๋ค. ํนํ NVSwitch๋ ๋น์ฐจ๋จ ํจ๋ธ๋ฆญ๊ณผ multicast, reductions ๊ฐ์ in-network ์ฐ์ฐ์ ์ง์ํด ๋ฉํฐ GPU ํต์ ์ ๊ธฐ๋ฐ์ด ๋๋ค.
-
5:46
์ ์ง๊ธ GPU ๋คํธ์ํน์ธ๊ฐ ๋ชจ๋ธ์ ๋ ํฌ๊ณ ๋ณต์กํด์ก์ง๋ง ํ๋์จ์ด ์คํ์ ๋ฒค๋๋ง๋ค ๋ฌ๋ผ ๋คํธ์ํน์ด ์ฑ๋ฅ์ ๊ฒฐ์ ๋ณ์๊ฐ ๋์๋ค. ๋ถ์ฐ ํ์ต๊ณผ ์ถ๋ก ์์๋ ํต์ ์ด ๋ฐํ์ ๋๋ถ๋ถ์ ์ฐจ์งํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์, ๋คํธ์ํฌ ํจ์จ์ด ๊ณง AI ํจ์จ์ด ๋๋ค.
-
8:27
๋ถ์ฐ๋ ์ํฌ๋ก๋์ 576 GPU ์์คํ ํ๋ ์ถ๋ก ์์คํ ์ KV cache๋ฅผ GPU, CPU, disk, ์๊ฒฉ ๋จธ์ ์ ๋๋ ๋ค๋ฃจ๊ณ , speculative decodingยทprefillยทdecode๋ฅผ ์๋ก ๋ค๋ฅธ ํ๋์จ์ด๋ก ๋ถ๋ฆฌํ๋ค. ๋์์ 72 GPU๊ธ scaleup domain๊ณผ 576 GPU ์์คํ ๊ฐ์ ๊ฑฐ๋ ๊ตฌ์ฑ์ด ๋ฑ์ฅํ๋ฉด์, device-side ๋น๋๊ธฐ ์ ์ก๊ณผ ๊ฐ์ ์ธ๋ฐํ ์ ์ด๊ฐ ์ค์ํด์ก๋ค.
-
10:24
์ฐ์ฐ์ 7.2๋ฐฐ, ๋คํธ์ํฌ๋ 3๋ฐฐ A100์์ B200์ผ๋ก ์ค๋ฉด์ BF16 tensor core ์ฑ๋ฅ์ 7.2x ํฅ์๋์ง๋ง, intra-node ํต์ ์ 3x, inter-node ํต์ ์ 2x์ ๊ทธ์ณค๋ค. ์ฐ์ฐ ๋ฐ์ ์๋์ ๋นํด ๋คํธ์ํฌ๊ฐ ๋ค์ฒ์ง๋ฉด์, ๋ฉํฐ GPU ์ปค๋์์ ํต์ ์ต์ ํ์ ๋น์ค์ด ์ปค์ก๋ค.
-
11:14
NCCL์ ํ๊ณ์ roofline ๊ฒฉ์ฐจ NCCL ๊ณ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฐ ์ฐ์ ๋ฐ์ดํฐ ์ ์ก์๋ ๊ฐํ์ง๋ง, ์ธ๋ฐํ ํต์ ์ด๋ ๋ณตํฉ collective๋ฅผ fuseํด์ผ ํ ๋๋ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค. ๋จ์ํ PyTorch+NCCL ๊ธฐ์ค์ ์ ๋๋ถ๋ถ์ ๋ฌธ์ ์์ communication-aware roofline์ ์ ๋ฐ๋ ๋ชป ๋ฏธ์ณ, ์ปค์คํ ํต์ ์ปค๋์ ์ฌ์ง๊ฐ ํฌ๋ค.
-
13:04
์ปดํ์ผ๋ฌ, DSL, ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ํ๋ํ ์ฐ์ฐ์ Triton distributed๋ tilelang ๊ฐ์ DSL์ ๋น ๋ฅด๊ฒ ๋ณํ๋ ๋คํธ์ํน ํ๋์จ์ด๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต๋ค. ๋ฐ๋๋ก hand-tuned operator๋ ์ต๊ณ ์ฑ๋ฅ์ ๋ด์ง๋ง, precision์ด๋ ์ํคํ ์ฒ๊ฐ ๋ฐ๋ ๋ ์ด์์ฑ์ด ๋ฎ๊ณ ์ฌ์์ฑ ๋น์ฉ์ด ํฌ๋ค.
-
14:10
์ฐ๊ตฌ ์ง๋ฌธ๊ณผ ParallelKittens ํต์ฌ ์ง๋ฌธ์ ๋ฉํฐ GPU ์ปค๋์ ์ง๋ฐฐํ๋ ์์ ์๋ฆฌ ์งํฉ์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ด์ฉํด ๊ฐ๋ฐ์ ๋จ์ํํ ์ ์๋์ง์๋ค. ์ด๋ฅผ ์ํด ParallelKittens๋ผ๋ ์ต์ ํ๋ฆฌ๋ฏธํฐ๋ธยทํจํด ์งํฉ์ ๋ง๋ค๊ณ , ๊ทธ ์์์ trade-off๋ฅผ ์ ๋ฆฌํ ๋ค ๋ชจ๋ธ์ ์ผ๋ฐํ ๊ฐ๋ฅ์ฑ๋ ์ํํ๋ค.
-
16:06
์ ์ก ๋ฉ์ปค๋์ฆ: copy engine, TMA, register ์์ค copy engine์ host ๋๋ CPU ์ฃผ๋๋ก ํฐ ๋ฉ์์ง ์ ์ก์ ์ ๋ฆฌํ๊ณ , TMA์ register level instruction์ GPU ์ฃผ๋๋ก ๋ ์์ ๋ฉ์์ง์์ NVLink๋ฅผ ํจ์จ์ ์ผ๋ก ์ฑ์ด๋ค. TMA๋ register ์๋ชจ๊ฐ ์ ๊ณ fine-grain overlap์ ์ข์ง๋ง, NVSwitch๊ฐ ์ ๊ณตํ๋ in-network computation๊น์ง๋ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํ๋ค.
-
18:28
SM ๊ฐ ๊ณ์ฐ๊ณผ ํต์ ์ ๊ฒน์น๊ธฐ intraSM ์ค์ผ์ค์ ํ SM ๋ด๋ถ์์ warp๋ฅผ ๋ถ๋ฆฌํด ๊ณ์ฐ๊ณผ ํต์ ์ ๋์์ ์ฒ๋ฆฌํ๊ณ , interSM ์ค์ผ์ค์ ๋ค๋ฅธ SM๋ค์ ์ญํ ์ ๋๋ ๋ ํฐ ๋ฒ์์ overlap์ ๋ง๋ ๋ค. ์ ๋ ฅ ๋ฐ์ดํฐ ์ ๋ ฌ์ด ์ ๋ง์ผ๋ฉด intraSM์ด ์ ๋ฆฌํ๊ณ , NVSwitch์ in-network reductions๋ฅผ ์ฐ๋ ํจํด์์๋ interSM์ด ๋ ํจ๊ณผ์ ์ด๋ค.
-
20:52
Together AI์ Cursor์ ์ค์ ์ ์ฉ ParallelKittens๋ Together AI์ Cursor ๊ฐ์ ์ค์ ์ ํ ํ๊ฒฝ์์ ์ฐ์ด๊ณ ์์ผ๋ฉฐ, ๋จ์ผ GPU ์ปค๋์ ์ฝ๊ฐ์ ์ฝ๋๋ง ๋ํด ๋ฉํฐ GPU ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์ฝ์ ํ ์ ์๋ค. data, sequence, expert parallelism์์ ๊ฐํ ๊ธฐ์ค์ ๋ณด๋ค ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด๋ฉฐ ์์ฐ์ฑ ์๋ ํจํด์ผ๋ก ๊ฒ์ฆ๋๋ค.
-
22:10
ParallelKernelBench์ 87๊ฐ ๋ฌธ์ ParallelKernelBench๋ PyTorch+torch distributed+NCCL ๊ธฐ์ค ๊ตฌํ๊ณผ ์์คํ ํ ํด๋ก์ง๋ฅผ ์ฃผ๊ณ , ์ด๋ฅผ unified virtual addressing์ ์ฌ์ฉํ๋ CUDA ์ปค๋๋ก ๋ค์ ์์ฑํ๊ฒ ํ๋ค. data, sequence, tensor, context, layer, pipeline, expert ๋ฑ ์ค์ ์ํฌ๋ก๋์ ๋ณ๋ ฌํ ์ถ์ ํฌ๊ดํ๋๋ก 87๊ฐ ๋ฌธ์ ๋ฅผ ๊ตฌ์ฑํ๋ค.
-
24:32
์ ๋ก์ท ๊ฒฐ๊ณผ์ ์ค์ผ์ผ๋ง ํ๊ณ frontier ๋ชจ๋ธ์ ์ ๋ก์ท์์ 87๊ฐ ์ค 28๊ฐ๋ฅผ ํ๊ณ , ๋ค์ค ์ํ๋ง์ผ๋ก๋ ์ ๋ต ์๋ ๋์ง๋ง ์๋ ํฅ์์ ์ฝ 31% ๋ถ๊ทผ์์ ์ ์ฒด๋๋ค. ์ฑ๊ณต ํจํด์ ์ฃผ๋ก ์ธํฐ๋ท์ ๋ง์ด ๋ ธ์ถ๋ collective primitive๋ tensor parallel gem ๊ฐ์ ์ต์ํ ํํ์ ์ง์ค๋๋ค.
-
26:28
์คํจ ์์ธ์ CUDA ๋ฌธ๋ฒ์ด ์๋๋ค ์ฌ๋ฌ ๋ฒ ์๋ํ๊ฑฐ๋ ์ค๋ฅ๋ฅผ ์์ ํ๊ฒ ํ๋ฉด ์ปดํ์ผ ์์ฒด๋ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ๋ชจ๋ธ์ collective ordering, data partitioning, intra/interSM ์ค์ผ์ค ์ ํ, ์ ์ก ๋ฉ์ปค๋์ฆ ์ ํ ๊ฐ์ ๋ณธ์ง์ trade-off๋ฅผ ์ ๋ชป ๋ค๋ฃฌ๋ค. ํนํ register transfer instruction์ด๋ TMA๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฐ์ง ๋ชปํ๋ ์ ์ด ๋ฐ๋ณต์ ์ผ๋ก ๋๋ฌ๋ฌ๋ค.
-
27:07
์์ด์ ํธ ํ๋ค์ค์ ์์ง ๋ถ์กฑํ ๊ฒ mini_sui_agent multi-turn harness์ Gemini 3 Pro, ๋ก์ปฌ bash ํ๊ฒฝ์ ๋ฌถ์ ๊ฐ๋จํ coding agent ๊ตฌ์ฑ์ 87๊ฐ ์ค 24๊ฐ์์ 35๊ฐ๋ก ์ฑ๋ฅ์ ๋์ด์ฌ๋ ธ๋ค. ํ์ง๋ง ์๊ฐ์ด ๋ ์ฃผ์ด์ ธ๋ ์ฑ๋ฅ์ ๊ณง ์ ์ฒด๋๊ณ , ๋ ๋์ ์ถ๋ก ยท์คํยท๊ฒ์ฆ ์ฒด๊ณ๊ฐ ์ถ๊ฐ๋ก ํ์ํ๋ค๋ ์ ์ด ํ์ธ๋๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ๋ฉํฐ GPU ์ฑ๋ฅ ์ต์ ํ๋ ์ด์ ์ฐ์ฐ๋๋ณด๋ค ํต์ ํจํด๊ณผ ์ ์ก ๋ฉ์ปค๋์ฆ ์ ํ์ด ๋ ์ค์ํ๋ฏ๋ก, ์ฝ๋ ์์ฑ๋ณด๋ค ๋จผ์ ๋ฐ์ดํฐ ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ค๊ณํด์ผ ํ๋ค.
- ๋ชจ๋ธ์๊ฒ ์ปค๋์ ๋งก๊ธธ ๋๋ CUDA ๋ฌธ๋ฒ๋ณด๋ค collective ์์, partitioning, overlap ์ ๋ต ๊ฐ์ ์ค๊ณ ์๋ฆฌ๋ฅผ ์ปจํ ์คํธ๋ก ์ฃผ๋ ํธ์ด ํจ๊ณผ์ ์ด๋ค.
- ์ค๋ฌด์์๋ NCCL ๊ฐ์ ๋ฒ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์์ํ๋, ๋ณ๋ชฉ ๊ตฌ๊ฐ๋ง TMA๋ register-level ์ ์ก์ผ๋ก ๊ตญ์ ์ต์ ํํ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ํ์ค์ ์ด๋ค.