๐ŸŽฎ GPU

GPU Heterogeneous Memory Papers

๊ฐœ์š”

GPU์˜ ์˜จ๋ณด๋“œ HBM ์šฉ๋Ÿ‰์€ ์ˆ˜์‹ญ GB ์ˆ˜์ค€์— ๋จธ๋ฌผ๋Ÿฌ ๋Œ€๊ทœ๋ชจ DNN๊ณผ LLM ํ•™์Šตยท์ถ”๋ก ์—์„œ ๋ฐ”๋กœ ๋ณ‘๋ชฉ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ฝ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด GPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ์—ฐ๊ตฌ๋Š” UVM ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€ ๊ด€๋ฆฌ์—์„œ ์‹œ์ž‘ํ•ด, ๋ ˆ์ด์–ดยทํ…์„œยท์„œ๋ธŒ-ํ…์„œ ๋‹จ์œ„ ์ œ์–ด๋ฅผ ๊ฑฐ์ณ, ์ตœ๊ทผ์—๋Š” KV Cache ๋ธ”๋ก๊ณผ ๋‹ค์ค‘ GPU HBM ํ’€๊นŒ์ง€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฐœํ‘œ venue๋Š” ISCA, MICRO, ASPLOS, HPCA, ATC, ICML, arXiv๊นŒ์ง€ ๋„“๊ฒŒ ๋ถ„ํฌํ•˜๋ฉฐ, 2015๋…„ ์ดํ›„ ์—ฐ๊ตฌ ์ดˆ์ ์ด UVM ํŽ˜์ด์ง€ ์ด๋™์—์„œ DNN ํ…์„œ ์˜คํ”„๋กœ๋”ฉ, ๋‹ค์‹œ LLM KV Cache ํ‹ฐ์–ด๋ง์œผ๋กœ ์ด๋™ํ•œ ํ๋ฆ„์„ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์ฐจ์ด๋Š” ๊ด€๋ฆฌ ๋‹จ์œ„์™€ ์ •์ฑ…์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ๋‹จ์œ„๋Š” fault ์ฒ˜๋ฆฌ์™€ prefetch์— ๊ฐ•ํ•˜๊ณ , ํ…์„œ ๋‹จ์œ„๋Š” ์žฌ์‚ฌ์šฉ๊ณผ ์žฌ๊ณ„์‚ฐ ๊ท ํ˜•์— ๊ฐ•ํ•˜๋ฉฐ, LLM ๊ณ„์—ด์€ KV Cache์™€ ๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง์„ ํ•จ๊ป˜ ๋‹ค๋ค„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ์ด ํ๋ฆ„์„ ๋”ฐ๋ผ ํ•ต์‹ฌ ๋…ผ๋ฌธ 13ํŽธ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ตฌ ์ง„ํ™” ํƒ€์ž„๋ผ์ธ

์œ„ ์ค„: UVM/ํŽ˜์ด์ง€ ๊ด€๋ฆฌ ๊ณ„์—ด (2015-2024) / ์•„๋ž˜ ์ค„: DNN ํ…์„œยทLLM ์˜คํ”„๋กœ๋“œ ๊ณ„์—ด (2016-2024)

gpu_gpu_heterogeneous_memory_papers

๋…ผ๋ฌธ๋ณ„ ์„ธ๋ถ€ ๋น„๊ตํ‘œ

ํ•ต์‹ฌ ์•„์ด๋””์–ด(ํŒŒ๋ž€์ƒ‰ ๊ฐ•์กฐ)๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ ๋…ผ๋ฌธ์˜ ๊ธฐ์—ฌ์™€ ํ•œ๊ณ„๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ร— ๊ด€๋ฆฌ ๋‹จ์œ„ ์š”์•ฝ ๋น„๊ต

๊ด€๋ฆฌ ๋‹จ์œ„๋Š” ํŽ˜์ด์ง€(4KB) โ†’ ๋ ˆ์ด์–ด โ†’ ํ…์„œ โ†’ ์„œ๋ธŒ-ํ…์„œ โ†’ KV Cache ๋ธ”๋ก ์ˆœ์œผ๋กœ ์„ธ๋ถ„ํ™”๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค.

GPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ฃผ์š” ๋…ผ๋ฌธ ํƒ€์ž„๋ผ์ธ (์œ„: UVM/ํŽ˜์ด์ง€ ๊ด€๋ฆฌ, ์•„๋ž˜: DNN ํ…์„œ/LLM ์˜คํ”„๋กœ๋“œ)
๋…ผ๋ฌธ (์‹œ์Šคํ…œ๋ช…) ๋ฌธ์ œ ์ •์˜ Problem ํ•ต์‹ฌ ์•„์ด๋””์–ด Key Contribution ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต Memory Hierarchy ๊ด€๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ Management HW ๊ฐ€์ • HW Config ํ•œ๊ณ„ / ๋ฏธํ•ด๊ฒฐ Limitation
โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€ โ”€โ”€ 1๋‹จ๊ณ„: UVM ๋ฐ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๊ธฐ์ดˆ (2015-2019) โ”€โ”€
Page Placement Strategies ASPLOS 2015 (NVIDIA+UMD) GPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฒซ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ์ •์ฑ… ์—ฐ๊ตฌ ๋ถ€์žฌ GPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ์ •์ฑ… ์ฒด๊ณ„ํ™” First-TouchยทRound-RobinยทCompress ๋“ฑ ์ •์ฑ…๋ณ„ ํŠน์„ฑ ๋ถ„์„ GPU HBM + CPU DRAM (์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ธฐ ๋ชจ๋ธ) OS ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ์ •์ฑ… ๋น„๊ต ์ •์ฑ… ์„ ํƒ ๊ฐ€์ด๋“œ๋ผ์ธ ์ œ์‹œ NVIDIA GPU GPU-CPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™์  ์›Œํฌ๋กœ๋“œ ์ ์‘ ์—†์Œ ๋Ÿฐํƒ€์ž„ ์žฌ๋ฐฐ์น˜ ๋ฏธ์ง€์›
Towards High Performance Paged Memory for GPUs HPCA 2016 (NVIDIA) GPU UVM ํŽ˜์ด์ง€ ํดํŠธ ์˜ค๋ฒ„ํ—ค๋“œ ๊ทน์‹ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง€์—ฐ์œผ๋กœ GPU ์Šคํ†จ GPU ํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ ์ตœ์ ํ™” ๋ฐ ํ•˜๋“œ์›จ์–ด ์ง€์› ํดํŠธ ์ง‘๊ณ„(Fault Aggregation) ํ”„๋ฆฌํŽ˜์ฒ˜ ํ˜‘๋ ฅ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ตœ์†Œํ™” GPU HBM (์˜จ๋””๋ฐ”์ด์Šค) CPU DRAM (์›๊ฒฉ) ํ•˜๋“œ์›จ์–ด TLB ํดํŠธ ์ฒ˜๋ฆฌ ์ตœ์ ํ™” Fault Aggregation ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ Tree-based ๋ณ‘๋ ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ NVIDIA Pascal GPU UVM ํ•˜๋“œ์›จ์–ด ์ง€์› (Pascal ์„ธ๋Œ€) ๊ณ ๊ทœ์น™์„ฑ ์›Œํฌ๋กœ๋“œ ๊ฐ€์ • ๋ถˆ๊ทœ์น™ ์ ‘๊ทผ ํŒจํ„ด์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜
Ganguly et al. (HW Prefetcher vs Page Eviction) ISCA 2019 UVM์—์„œ ํ”„๋ฆฌํŽ˜์ฒ˜์™€ ํŽ˜์ด์ง€ ๊ต์ฒด ์ •์ฑ…์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ ๋ฏธ๋ถ„์„ ํ”„๋ฆฌํŽ˜์ฒ˜์™€ ํŽ˜์ด์ง€ ๊ต์ฒด ์ •์ฑ…์˜ ์ƒํ˜ธ์ž‘์šฉ ๊ทœ๋ช… Thrashing ์œ ๋ฐœ ์กฐ๊ฑด ๋ถ„์„ ์ตœ์  ์กฐํ•ฉ ๊ฐ€์ด๋“œ๋ผ์ธ ๋„์ถœ GPU HBM CPU DRAM (via UVM) ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜ ํ”„๋ฆฌํŽ˜์นญ๊ณผ LRU/LFU ๊ต์ฒด ์ •์ฑ… ์กฐํ•ฉ ๋ถ„์„ NVIDIA Volta GPU UVM ๊ธฐ๋ฐ˜ ์‹ค์ธก ํŠน์ • ์ •์ฑ… ์กฐํ•ฉ์— ํ•œ์ • ๋ฒ”์šฉ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฏธ์ œ์‹œ
Batch-Aware UMM ASPLOS 2020 (Georgia Tech) ๋ถˆ๊ทœ์น™ ๊ทธ๋ž˜ํ”„ยทํฌ์†Œ ์›Œํฌ๋กœ๋“œ์—์„œ UVM ์˜ค๋ฒ„์„œ๋ธŒ์Šคํฌ๋ฆฝ์…˜ ์„ฑ๋Šฅ ๊ธ‰๋ฝ ๋ฐฐ์น˜ ํฌ๊ธฐ ์ธ์‹ UVM ์„ ์ œ ๊ต์ฒด ๋ฐ ๋‹จ์ผ ์„ ํ–‰ ๊ต์ฒด ์ „๋žต ์ฒซ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „ ๊ต์ฒด 1ํšŒ ์„ ํ–‰ ๋ฐฐ์น˜ ๋‹จ์œ„ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋”ฉ ์ตœ์ ํ™” GPU HBM CPU DRAM (๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ๊ตฌ๋… ํ™˜๊ฒฝ) ๋ฐฐ์น˜ ๋‹จ์œ„ ํ”„๋ฆฌํŽ˜์นญ ๋‹จ์ผ ์„ ํ–‰ ๊ต์ฒด๋กœ DMA ํŒŒ์ดํ”„๋ผ์ธ ํ™œ์šฉ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ์••์ถ• ๊ฒฐํ•ฉ NVIDIA Volta V100 UVM ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ยทBFSยทSSSP ์ •๊ทœ ์›Œํฌ๋กœ๋“œ์—” ์ด์  ์ œํ•œ์  ๋ฐฐ์น˜ ํฌ๊ธฐ ์ถ”์ • ์˜ค๋ฅ˜ ์‹œ ์—ญํšจ๊ณผ
โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€ โ”€โ”€ 2๋‹จ๊ณ„: DNN ํ…์„œ ๋‹จ์œ„ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (2016-2021) โ”€โ”€
vDNN MICRO 2016 (NVIDIA) DNN ํ•™์Šต ์‹œ GPU HBM ์šฉ๋Ÿ‰ ์ดˆ๊ณผ ํฐ ๋ฐฐ์น˜ยท๊นŠ์€ ๋„คํŠธ์›Œํฌ ํ•™์Šต ๋ถˆ๊ฐ€ DNN ๋ ˆ์ด์–ด๋ณ„ GPUโ†”CPU ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์ƒํ™” Forward ์—ฐ์‚ฐ ํ›„ CPU๋กœ ๋น„๋™๊ธฐ ์˜คํ”„๋กœ๋“œ Backward ์ง์ „ GPU๋กœ ๋ณต๊ท€(ํ”„๋ฆฌํŽ˜์น˜) GPU HBM (ํ™œ์„ฑ ๊ณ„์ธต) CPU DRAM (์˜คํ”„๋กœ๋“œ ๋Œ€์ƒ) ๋ ˆ์ด์–ด ๋‹จ์œ„ ๋น„๋™๊ธฐ CPU ์˜คํ”„๋กœ๋”ฉ Prefetch overlap: ์—ฐ์‚ฐ-์ „์†ก ์ค‘์ฒฉ NVIDIA Maxwell/Pascal CUDA 9.0, cuDNN ๋ ˆ์ด์–ด๋ณ„ ๋‹จ์ˆœ ์ •์ฑ… ํ…์„œ ์žฌ์‚ฌ์šฉ ํŒจํ„ด ๋ฏธ๊ณ ๋ ค
Capuchin ASPLOS 2020 vDNN ํŽ˜์ด์ง€ ๋‹จ์œ„ ๊ด€๋ฆฌ โ†’ False Sharing ์žฌ์‚ฌ์šฉ ํŒจํ„ด ๋ฏธ๋ฐ˜์˜ ๋น„ํšจ์œจ์  ์˜คํ”„๋กœ๋“œ ํ…์„œ ๊ณ ์œ  ID ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ํŒจํ„ด ์ถ”์  + ๊ต์ฒด/์žฌ๊ณ„์‚ฐ ํ˜ผํ•ฉ ๋Ÿฐํƒ€์ž„ ํ…์„œ ์ ‘๊ทผ ํŒจํ„ด ํ•™์Šต ๊ต์ฒด(Eviction)์™€ ์žฌ๊ณ„์‚ฐ(Recompute) ๋น„์šฉ ๋น„๊ต ์ตœ์  ํ˜ผํ•ฉ ์ •์ฑ… ์ž๋™ ๊ฒฐ์ • GPU HBM CPU DRAM (ํ…์„œ ๋‹จ์œ„ ๊ด€๋ฆฌ) ํ…์„œ ID ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ํŒจํ„ด ์ถ”์  ์ดํ„ฐ๋ ˆ์ด์…˜ ๋ฐ˜๋ณต์„ฑ ํ™œ์šฉ ๋น„๋™๊ธฐ ์˜คํ”„๋กœ๋“œยท์žฌ๊ณ„์‚ฐ ํ˜ผํ•ฉ NVIDIA P100 TensorFlow ํ”„๋ ˆ์ž„์›Œํฌ ์ดˆ๊ธฐ ํŒจํ„ด ํ•™์Šต ์˜ค๋ฒ„ํ—ค๋“œ ๋™์  ํ˜•์ƒ ๋ณ€ํ™” ํ…์„œ ์ฒ˜๋ฆฌ ํ•œ๊ณ„
SwapAdvisor ASPLOS 2020 ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์–ด๋–ค ํ…์„œ๋ฅผ ์–ธ์ œ ๊ต์ฒดํ• ์ง€ ์‚ฌ๋žŒ์ด ์ง์ ‘ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด Genetic Algorithm ๊ธฐ๋ฐ˜ ์ž๋™ GPU ๋ฉ”๋ชจ๋ฆฌ ๊ต์ฒด ๊ณ„ํš ์ˆ˜๋ฆฝ ํƒ์ƒ‰ ๊ณต๊ฐ„์—์„œ ์ตœ์  ๊ต์ฒด ์Šค์ผ€์ค„ ์ž๋™ ์ƒ์„ฑ ๋‹ค์–‘ํ•œ DNN ๊ตฌ์กฐ์— ๋ฒ”์šฉ ์ ์šฉ GPU HBM CPU DRAM (์ž๋™ ๊ต์ฒด ์Šค์ผ€์ค„๋ง) ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ตœ์  ๊ต์ฒด ๊ณ„ํš ํƒ์ƒ‰ ์˜คํ”„๋กœ๋“œยทํ”„๋ฆฌํŽ˜์น˜ ํƒ€์ด๋ฐ ์ž๋™ ๊ฒฐ์ • NVIDIA GPU PyTorch/TensorFlow ํƒ์ƒ‰ ์˜ค๋ฒ„ํ—ค๋“œ (์˜คํ”„๋ผ์ธ) LLM ๊ฐ™์€ ๋Œ€ํ˜• ๋ชจ๋ธ๋กœ ํ™•์žฅ์„ฑ ์ œํ•œ
Sentinel HPCA 2021 Capuchin ๋“ฑ์˜ ํŽ˜์ด์ง€ ๋‹จ์œ„ False Sharing ํ…์„œ ๋‚ด ์ผ๋ถ€ ์›์†Œ๋งŒ ํ•ซโ†’ํŽ˜์ด์ง€ ์ „์ฒด GPU ๊ณ ์ • ํ…์„œ ๋‚ด False Sharing ์ œ๊ฑฐ: ์„œ๋ธŒ-ํ…์„œ ๋‹จ์œ„ ์„ธ๋ฐ€ ๊ด€๋ฆฌ ์ ‘๊ทผ ๋ฐ€๋„ ๊ธฐ๋ฐ˜ ์„œ๋ธŒ-ํ…์„œ ๋ถ„ํ•  ์„ธ๋ฐ€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์œผ๋กœ HBM ๋‚ญ๋น„ ์ตœ์†Œํ™” GPU HBM CPU DRAM (์„œ๋ธŒ-ํ…์„œ ๋‹จ์œ„) ์„œ๋ธŒ-ํ…์„œ ๋ถ„ํ•  + ํ•ซ/์ฝœ๋“œ ๊ตฌ๋ถ„ ์„ธ๋ฐ€ ๋‹จ์œ„ ๋น„๋™๊ธฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ NVIDIA GPU DNN ํ•™์Šต ์›Œํฌ๋กœ๋“œ ๋ถ„ํ•  ์˜ค๋ฒ„ํ—ค๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ์ˆ˜์ • ํ•„์š”
โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€ โ”€โ”€ 3๋‹จ๊ณ„: ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ ์˜คํ”„๋กœ๋”ฉ ๋ฐ LLM ์‹œ๋Œ€ (2021-2024) โ”€โ”€
Memory Harvesting in Multi-GPU ATC 2022 (POSTECH) Multi-GPU ํ™˜๊ฒฝ์—์„œ ์œ ํœด GPU HBM ๋‚ญ๋น„ ๊ฐ GPU๊ฐ€ ๋…๋ฆฝ UVM โ†’ ์šฉ๋Ÿ‰ ํŒŒํŽธํ™” ๊ณ„์ธต์  UVM์œผ๋กœ ๋‹ค์ˆ˜ GPU HBM ํ†ตํ•ฉ ํ’€๋ง ์œ ํœด GPU ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ์ž‘์—…์— ๋™์  ํ• ๋‹น NVLink ๊ธฐ๋ฐ˜ GPU-to-GPU ํŽ˜์ด์ง€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ GPU HBM ํ’€ (๋‹ค์ˆ˜ GPU) CPU DRAM (์ตœํ›„ ๊ณ„์ธต) ๊ณ„์ธต์  UVM: GPU HBM ์šฐ์„ โ†’ํƒ€ GPU HBMโ†’CPU NVLink ๊ณ ์† GPU ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋™์  HBM ํ• ๋‹น ๋ฐ ํšŒ์ˆ˜ NVIDIA GPU ํด๋Ÿฌ์Šคํ„ฐ NVLink ์—ฐ๊ฒฐ ๋‹ค์ค‘ GPU NVLink ์—†๋Š” ํ™˜๊ฒฝ ๋ฏธ์ง€์› GPU ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ ˆ์ดํ„ด์‹œ
ZeRO-Offload ATC 2021 (Microsoft) ๋‹จ์ผ GPU์—์„œ ์ˆ˜์‹ญ์–ต ํŒŒ๋ผ๋ฏธํ„ฐ LLM ํ•™์Šต ๋ถˆ๊ฐ€ GPU HBM ํฌ๊ธฐ ํ•œ๊ณ„๋กœ ๋ชจ๋ธ ๋ถ„์‚ฐ ํ•„์ˆ˜ CPU DRAM์œผ๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ € ์ƒํƒœยท๊ทธ๋ž˜๋””์–ธํŠธ ์˜คํ”„๋กœ๋“œ Forward/Backward๋Š” GPU ์œ ์ง€ ์˜ตํ‹ฐ๋งˆ์ด์ € ์Šคํ…๋งŒ CPU์—์„œ ์‹คํ–‰ ์ตœ์†Œ ํ†ต์‹ ์œผ๋กœ ZeRO 1๋‹จ๊ณ„ ๊ตฌํ˜„ GPU HBM (ํŒŒ๋ผ๋ฏธํ„ฐยทํ™œ์„ฑ๊ฐ’) CPU DRAM (์˜ตํ‹ฐ๋งˆ์ด์ € ์ƒํƒœยท๊ทธ๋ž˜๋””์–ธํŠธ) ๋ธ๋ ˆ์ด๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ ์—…๋ฐ์ดํŠธ CPU ์—ฐ์‚ฐ๊ณผ GPU ํ†ต์‹  ์ค‘์ฒฉ ZeRO ๋ฉ”๋ชจ๋ฆฌ ํŒŒํ‹ฐ์…”๋‹ ๋‹จ์ผ GPU + ๋Œ€์šฉ๋Ÿ‰ CPU DRAM PyTorch + DeepSpeed CPU ์—ฐ์‚ฐ ๋ณ‘๋ชฉ SSD ํ™•์žฅ ๋ฏธ์ง€์› (ZeRO-Infinity๋กœ ํ•ด๊ฒฐ)
FlexGen ICML 2023 ๋‹จ์ผ ์†Œ๋น„์ž GPU์—์„œ 175B LLM ์ถ”๋ก  ๋ถˆ๊ฐ€ ๊ธฐ์กด ์˜คํ”„๋กœ๋”ฉ ์‹œ์Šคํ…œ ์ฒ˜๋ฆฌ๋Ÿ‰ ๊ทนํžˆ ๋‚ฎ์Œ GPU-CPU-SSD 3๊ณ„์ธต ์ตœ์  I/O ์Šค์ผ€์ค„๋ง + ์••์ถ• ์„ ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ตœ์  ํ…์„œ ๋ฐฐ์น˜ ํƒ์ƒ‰ ๋ธ”๋ก ์Šค์ผ€์ค„๋กœ ์—ฐ์‚ฐ-I/O ์ค‘์ฒฉ 4-bit ์••์ถ•์œผ๋กœ ์ „์†ก๋Ÿ‰ ๊ฐ์†Œ GPU HBM (ํ™œ์„ฑ ๊ณ„์ธต) CPU DRAM (์ค‘๊ฐ„ ๊ณ„์ธต) SSD (์šฉ๋Ÿ‰ ๊ณ„์ธต) LP ๊ธฐ๋ฐ˜ ์ตœ์  ํ…์„œ ๋ฐฐ์น˜ ๋ธ”๋ก ์Šค์ผ€์ค„๋ง์œผ๋กœ I/O ์ค‘์ฒฉ ์–‘์žํ™”(4-bit) ์••์ถ• ์†Œ๋น„์ž GPU (T4 ๋“ฑ) CPU + SSD ์กฐํ•ฉ ์ถ”๋ก  ์ „์šฉ (ํ•™์Šต ๋ฏธ์ง€์›) ์‹ค์‹œ๊ฐ„ ์ถ”๋ก ์—” ๋ ˆ์ดํ„ด์‹œ ํ•œ๊ณ„
GMLake ASPLOS 2024 DNN ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ ๊ธฐ๋ฒ•(์žฌ๊ณ„์‚ฐ/์˜คํ”„๋กœ๋”ฉ/LoRA)์—์„œ PyTorch ์บ์‹ฑ ํ• ๋‹น์ž์˜ ๋‹จํŽธํ™” ์‹ฌํ™” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์Šคํ‹ฐ์นญ์œผ๋กœ ํŒŒํŽธํ™”๋œ HBM ๋ธ”๋ก ํ†ตํ•ฉ ๋น„์—ฐ์† ๋ฌผ๋ฆฌ ๋ธ”๋ก์„ ์—ฐ์† ๊ฐ€์ƒ ์ฃผ์†Œ๋กœ ๋งคํ•‘ ๋‹จํŽธํ™” ์—†์ด ๋Œ€ํ˜• ํ…์„œ ํ• ๋‹น ๊ฐ€๋Šฅ ๊ธฐ์กด ์‹œ์Šคํ…œ ํˆฌ๋ช… ์ ์šฉ GPU HBM (๊ฐ€์ƒ ์—ฐ์† ๋งคํ•‘) CUDA VMM API ํ™œ์šฉ ๋น„์—ฐ์† ๋ธ”๋ก ์Šคํ‹ฐ์นญ ์บ์‹ฑ ํ• ๋‹น์ž ๊ต์ฒด ๋ถˆํ•„์š” A100/H100 GPU PyTorch LLM ํ•™์Šต VMM ์ง€์› GPU ํ•œ์ • ์Šคํ‹ฐ์นญ ์˜ค๋ฒ„ํ—ค๋“œ (์†Œ)
AQUA ASPLOS 2025 GPU ๋„๋ฉ”์ธ ๋‚ด LLM KV Cache ๊ธ‰์ฆ NVLink ๋Œ€์—ญํญ ํ™œ์šฉ ๋ถˆ์ถฉ๋ถ„ NVLink ํŒจ๋ธŒ๋ฆญ ๊ฐ€์† KV Cache ์˜คํ”„๋กœ๋”ฉ Scale-up GPU ๋„๋ฉ”์ธ ๋‚ด ๋„คํŠธ์›Œํฌ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ GPU HBMโ†’๋„คํŠธ์›Œํฌ ๋ถ€์ฐฉ ๋ฉ”๋ชจ๋ฆฌ๋กœ ํˆฌ๋ช… ์˜คํ”„๋กœ๋“œ GPU HBM (ํ™œ์„ฑ KV Cache) NVLink ๋ฉ”๋ชจ๋ฆฌ ๋…ธ๋“œ (์˜คํ”„๋กœ๋“œ) NVLink ํŒจ๋ธŒ๋ฆญ ๊ธฐ๋ฐ˜ ์˜คํ”„๋กœ๋”ฉ ํˆฌ๋ช… ์ฃผ์†Œ ๊ณต๊ฐ„ ํ†ตํ•ฉ ๋ฐฐ์น˜ ๋‹จ์œ„ ๋น„๋™๊ธฐ ์ „์†ก NVLink ์—ฐ๊ฒฐ GPU ํด๋Ÿฌ์Šคํ„ฐ H100/H200 NVLink ๋„๋ฉ”์ธ NVLink ์ „์šฉ ๋‹จ์ผ ๋„๋ฉ”์ธ ํ•œ์ •
์‹œ์Šคํ…œ (์—ฐ๋„) ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋‹จ์œ„ / ์ •์ฑ… ์œ ํ˜• ์›Œํฌ๋กœ๋“œ ๋Œ€์ƒ
Page Placement (ASPLOS'15) GPU HBM + CPU DRAM ํŽ˜์ด์ง€ / ๋ฐฐ์น˜ ์ •์ฑ… ๋น„๊ต GPU ๋ฒ”์šฉ ์ปดํ“จํŒ…
Paged GPU Mem (HPCA'16) GPU HBM + CPU DRAM ํŽ˜์ด์ง€ / ํดํŠธ ์ฒ˜๋ฆฌ ์ตœ์ ํ™” GPU ๋ฒ”์šฉยทUVM
Ganguly+ (ISCA'19) GPU HBM + CPU DRAM ํŽ˜์ด์ง€ / ํ”„๋ฆฌํŽ˜์ฒ˜-๊ต์ฒด ์ƒํ˜ธ์ž‘์šฉ ๋ถˆ๊ทœ์น™ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ
Batch-Aware UMM (ASPLOS'20) GPU HBM + CPU DRAM ํŽ˜์ด์ง€ / ๋ฐฐ์น˜ ์ธ์‹ ์„ ์ œ ๊ต์ฒด ๊ทธ๋ž˜ํ”„ยทํฌ์†Œ ์›Œํฌ๋กœ๋“œ
vDNN (MICRO'16) GPU HBM + CPU DRAM ๋ ˆ์ด์–ด / ๋น„๋™๊ธฐ ์˜คํ”„๋กœ๋“œยทํ”„๋ฆฌํŽ˜์น˜ DNN ํ•™์Šต (CV)
Capuchin (ASPLOS'20) GPU HBM + CPU DRAM ํ…์„œ / ๊ต์ฒดยท์žฌ๊ณ„์‚ฐ ํ˜ผํ•ฉ DNN ํ•™์Šต
SwapAdvisor (ASPLOS'20) GPU HBM + CPU DRAM ํ…์„œ / ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋™ ๊ณ„ํš DNN ํ•™์Šต
Sentinel (HPCA'21) GPU HBM + CPU DRAM ์„œ๋ธŒ-ํ…์„œ / False Sharing ์ œ๊ฑฐ DNN ํ•™์Šต
Memory Harvesting (ATC'22) Multi-GPU HBM + CPU DRAM ํŽ˜์ด์ง€ / ๊ณ„์ธต์  UVM ํ’€๋ง ๋‹ค์ค‘ GPU ํด๋Ÿฌ์Šคํ„ฐ
ZeRO-Offload (ATC'21) GPU HBM + CPU DRAM ํ…์„œ ๊ทธ๋ฃน / ์˜ตํ‹ฐ๋งˆ์ด์ € ๋ถ„๋ฆฌ LLM ํ•™์Šต (GPT-3๊ธ‰)
FlexGen (ICML'23) GPU + CPU DRAM + SSD ํ…์„œ ๋ธ”๋ก / LP ์ตœ์  ๋ฐฐ์น˜ LLM ์ถ”๋ก  (175B)
GMLake (ASPLOS'24) GPU HBM (๊ฐ€์ƒ ์Šคํ‹ฐ์นญ) ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ / ๋‹จํŽธํ™” ํ•ด์†Œ LLM ํ•™์Šต (LoRAยท์žฌ๊ณ„์‚ฐ)
AQUA (ASPLOS'25) GPU HBM + NVLink ๋ฉ”๋ชจ๋ฆฌ KV Cache ๋ธ”๋ก / NVLink ์˜คํ”„๋กœ๋“œ LLM ์ถ”๋ก  (KV Cache)
gpu_gpu_heterogeneous_memory_papers

ํ•ต์‹ฌ ๊ฐœ๋…

ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ UVM

์ดˆ๊ธฐ ์—ฐ๊ตฌ๋Š” GPU์™€ CPU DRAM ์‚ฌ์ด์˜ ํŽ˜์ด์ง€ ์ด๋™์„ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€์— ์ง‘์ค‘ํ–ˆ์Šต๋‹ˆ๋‹ค. UVM์€ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ํ†ตํ•ฉํ•˜์ง€๋งŒ, ์‹ค์ œ ์„ฑ๋Šฅ์€ page fault ๋นˆ๋„, migration latency, prefetch ์ •ํ™•๋„์— ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ fault aggregation, tree-based migration, eviction policy๊ฐ€ ์ค‘์š”ํ•œ ์„ฑ๋Šฅ ๋ณ€์ˆ˜๋กœ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ…์„œ์™€ ์„œ๋ธŒ-ํ…์„œ ๊ด€๋ฆฌ

๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต์—์„œ๋Š” ํŽ˜์ด์ง€๋ณด๋‹ค ํ…์„œ๊ฐ€ ๋” ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ด€๋ฆฌ ๋‹จ์œ„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. vDNN์€ ๋ ˆ์ด์–ด activation์„ ๋น„๋™๊ธฐ ์˜คํ”„๋กœ๋”ฉํ•˜๊ณ , Capuchin์€ ํ…์„œ ์ ‘๊ทผ ํŒจํ„ด์„ ์ถ”์ ํ•ด eviction๊ณผ recompute๋ฅผ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. Sentinel์€ ์—ฌ๊ธฐ์„œ ๋” ๋‚˜์•„๊ฐ€ ํ…์„œ ๋‚ด๋ถ€์˜ false sharing์„ ์ค„์ด๊ธฐ ์œ„ํ•ด sub-tensor ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.

LLM ์˜คํ”„๋กœ๋”ฉ๊ณผ KV Cache

LLM ์„œ๋น™์—์„œ๋Š” ๊ฐ€์ค‘์น˜๋ณด๋‹ค KV Cache๊ฐ€ ๋” ํฐ ๋ณ‘๋ชฉ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ FlexGen์€ GPU-CPU-SSD 3๊ณ„์ธต ๋ฐฐ์น˜์™€ ์••์ถ•์„ ํ•จ๊ป˜ ์“ฐ๊ณ , GMLake๋Š” CUDA VMM ๊ธฐ๋ฐ˜ virtual stitching์œผ๋กœ ๋‹จํŽธํ™”๋ฅผ ์ค„์ด๋ฉฐ, AQUA๋Š” NVLink ๋„๋ฉ”์ธ ์•ˆ์—์„œ KV Cache๋ฅผ ๋” ๊ฐ€๊นŒ์šด ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋‹จ์ˆœ ์šฉ๋Ÿ‰ ํ™•๋Œ€๋ณด๋‹ค bandwidth, locality, SLO๊ฐ€ ํ•จ๊ป˜ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ต/๋ถ„์„

๊ณ„์—ด ๋Œ€ํ‘œ ๋…ผ๋ฌธ ๊ด€๋ฆฌ ๋‹จ์œ„ ์ฃผ๋œ ๋ณ‘๋ชฉ ํ•ต์‹ฌ ์•„์ด๋””์–ด
UVM ๊ธฐ์ดˆ Page Placement, Paged GPU Mem page page fault / migration ๋ฐฐ์น˜, fault aggregation, prefetch
UVM ์ •์ฑ… Ganguly+, Batch-Aware UMM page thrashing / oversubscription ๊ต์ฒด-ํ”„๋ฆฌํŽ˜์น˜ ์ƒํ˜ธ์ž‘์šฉ, batch-aware policy
DNN ํ•™์Šต vDNN, Capuchin, SwapAdvisor layer / tensor HBM ๋ถ€์กฑ / ์žฌ์‚ฌ์šฉ ์†์‹ค async offload, runtime tracing, GA planning
์„ธ๋ฐ€ ๊ด€๋ฆฌ Sentinel sub-tensor false sharing ํ…์„œ ๋‚ด๋ถ€ hot/cold ๋ถ„๋ฆฌ
๋ฉ€ํ‹ฐ GPU / LLM Memory Harvesting, ZeRO-Offload, FlexGen, GMLake, AQUA GPU pool / tensor block / KV block ์šฉ๋Ÿ‰ ๋ถ„์‚ฐ / ์ „์†ก ๋ณ‘๋ชฉ / ๋‹จํŽธํ™” pooling, offload, compression, VMM stitching

๋™์ž‘ ์›๋ฆฌ

์ดˆ๊ธฐ UVM ๊ณ„์—ด์€ GPU๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ page fault๋กœ ๊ฐ์ง€ํ•˜๊ณ , CPU DRAM์—์„œ HBM์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” prefetch๊ฐ€ ๋„ˆ๋ฌด ๋Šฆ์œผ๋ฉด stall์ด ์ปค์ง€๊ณ , ๋„ˆ๋ฌด ์ด๋ฅด๋ฉด ๋ถˆํ•„์š”ํ•œ ์ด๋™์ด ๋Š˜์–ด๋‚˜๋ฏ€๋กœ, fault aggregation๊ณผ eviction policy์˜ ๊ท ํ˜•์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

DNN ๊ณ„์—ด์€ ํ•™์Šต ๋‹จ๊ณ„์˜ forward/backward ํŠน์„ฑ์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. forward์—์„œ ๋งŒ๋“  activation์„ ๋ฐ”๋กœ HBM์— ๋‘˜ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด CPU DRAM์œผ๋กœ ๋‚ด๋ฆฌ๊ณ , backward ์ง์ „์— ๋‹ค์‹œ ๋Œ์–ด์˜ต๋‹ˆ๋‹ค. Capuchin๊ณผ Sentinel์€ ์ด๋•Œ tensor reuse์™€ false sharing์„ ํ•จ๊ป˜ ๋ณด๋ฉฐ, recompute๊ฐ€ ๋” ์‹ผ ๊ฒฝ์šฐ์—” ์žฌ๊ณ„์‚ฐ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

LLM ๊ณ„์—ด์€ KV Cache๊ฐ€ ๊ธธ์ด์— ๋น„๋ก€ํ•ด ๊ณ„์† ์ปค์ง„๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. FlexGen์€ ์—ฐ์‚ฐ๊ณผ I/O๋ฅผ block ๋‹จ์œ„๋กœ ๊ฒน์น˜๊ณ , GMLake๋Š” virtual address๋ฅผ ์—ฐ์†์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“ค์–ด ํŒŒํŽธํ™”๋ฅผ ์ค„์ด๋ฉฐ, AQUA๋Š” NVLink ํŒจ๋ธŒ๋ฆญ์„ ํ™œ์šฉํ•ด GPU ๋„๋ฉ”์ธ ์•ˆ์—์„œ ๋” ๊ฐ€๊นŒ์šด ๋ฉ”๋ชจ๋ฆฌ๋กœ KV๋ฅผ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.

์žฅ๋‹จ์ 

์žฅ์ 

  • ๋” ํฐ ๋ชจ๋ธ๊ณผ ๋” ๊ธด ๋ฌธ๋งฅ์„ ๊ธฐ์กด HBM ํ•œ๊ณ„ ๋ฐ–์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ํŠน์„ฑ์— ๋งž์ถฐ page, tensor, KV block ๋‹จ์œ„๋กœ ์ •์ฑ…์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • multi-GPU pooling๊ณผ offload๋ฅผ ๊ฒฐํ•ฉํ•˜๋ฉด ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์ „์†ก ์ง€์—ฐ์ด ํฌ๋ฉด ์„ฑ๋Šฅ ์ด๋“์ด ์‰ฝ๊ฒŒ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ ๋‹จ์œ„๊ฐ€ ์ž‘์•„์งˆ์ˆ˜๋ก metadata์™€ runtime ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • false sharing, fragmentation, SLO ์œ„๋ฐ˜ ๊ฐ™์€ ๋ถ€์ž‘์šฉ์ด ํ•จ๊ป˜ ์ƒ๊น๋‹ˆ๋‹ค.
  • GPU, NVLink, VMM, CXL์ฒ˜๋Ÿผ ํ•˜๋“œ์›จ์–ด ์˜์กด์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

๊ด€๋ จ ๊ธฐ์ˆ /์ฐธ๊ณ  ๋ฌธํ—Œ

์ž๋ฃŒ ๋งํฌ ์—ฐ๊ฒฐ์ 
vDNN (MICRO 2016) https://arxiv.org/abs/1602.08124 activation offload์™€ prefetch์˜ ์ถœ๋ฐœ์ 
Capuchin (ASPLOS 2020) https://dl.acm.org/doi/10.1145/3373376.3378505 tensor-based eviction / recompute
ZeRO-Offload (USENIX ATC 2021) https://www.usenix.org/conference/atc21/presentation/ren-jie optimizer state์™€ gradient๋ฅผ CPU๋กœ ๋‚ด๋ฆฌ๋Š” ํ•™์Šต ์˜คํ”„๋กœ๋”ฉ
FlexGen (ICML 2023) https://proceedings.mlr.press/v202/sheng23a.html GPU-CPU-SSD 3๊ณ„์ธต ๋ฐฐ์น˜์™€ ์••์ถ•
GMLake (ASPLOS 2024) https://doi.org/10.1145/3620665.3640395 CUDA VMM ๊ธฐ๋ฐ˜ virtual stitching๊ณผ ๋‹จํŽธํ™” ์™„ํ™”
GPU ๋ฉ”๋ชจ๋ฆฌ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ์ดˆ gpu_0005_gpu_memory_architecture_basics.html HBM, GDDR, bandwidth ๋ฐฐ๊ฒฝ
KV Cache Offloading Analysis ../llm/llm_0040_kv_cache_offloading_analysis.html KV ์žฌ์‚ฌ์šฉ, offloading, CXL
Memory Centric LLM Serving Survey ../llm/llm_0003_memory_centric_llm_serving_survey.html KV ๊ด€๋ฆฌ, tiering, P/D ๋ถ„๋ฆฌ
PagedAttention Analysis ../llm/llm_0010_pagedattention_analysis.html page-like KV ๊ด€๋ฆฌ
vAttention Analysis ../llm/llm_0020_vattention_analysis.html CUDA VMM ๊ธฐ๋ฐ˜ ์—ฐ์† ๊ฐ€์ƒ ์ฃผ์†Œ

ํ•ต์‹ฌ ์ •๋ฆฌ

GPU ์ด๊ธฐ์ข… ๋ฉ”๋ชจ๋ฆฌ ์—ฐ๊ตฌ๋Š” HBM ์šฉ๋Ÿ‰ ๋ถ€์กฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์ด page fault ์ตœ์ ํ™”์—์„œ tensor offload, ๊ทธ๋ฆฌ๊ณ  KV Cache tiering์œผ๋กœ ์ง„ํ™”ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์ฐจ์ด๋Š” ์–ด๋–ค ๋‹จ์œ„๋ฅผ ์˜ฎ๊ธธ์ง€์™€ ์–ธ์ œ ์˜ฎ๊ธธ์ง€์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ๋งฅ์—์„œ ์„ฑ๋Šฅ์€ ๋‹จ์ˆœํžˆ ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋‹จ์œ„, prefetch ์ •ํ™•๋„, recompute ๋น„์šฉ, fragmentation, SLO๊ฐ€ ํ•จ๊ป˜ ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

LLM ์‹œ๋Œ€๋กœ ์˜ค๋ฉด์„œ ๋ณ‘๋ชฉ์€ ํŽ˜์ด์ง€๋ณด๋‹ค KV Cache๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ GPU HBM, CPU DRAM, SSD, NVLink, CXL์„ ์—ฎ๋Š” ๊ณ„์ธตํ˜• ์„ค๊ณ„๊ฐ€ ์•ž์œผ๋กœ๋„ ๊ณ„์† ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.