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)
๋ ผ๋ฌธ๋ณ ์ธ๋ถ ๋น๊ตํ
ํต์ฌ ์์ด๋์ด(ํ๋์ ๊ฐ์กฐ)๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ ๋ ผ๋ฌธ์ ๊ธฐ์ฌ์ ํ๊ณ๋ฅผ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ร ๊ด๋ฆฌ ๋จ์ ์์ฝ ๋น๊ต
๊ด๋ฆฌ ๋จ์๋ ํ์ด์ง(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) |
ํต์ฌ ๊ฐ๋
ํ์ด์ง ๊ธฐ๋ฐ 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์ ์ฎ๋ ๊ณ์ธตํ ์ค๊ณ๊ฐ ์์ผ๋ก๋ ๊ณ์ ์ค์ํฉ๋๋ค.