티스토리 뷰
자연어처리 모델 및 연구/서비스 주체에 대한 설명이었던 지난글(자연어처리란 무엇이며 누가 주도하는가?)에 이어 이번에는 하드웨어 관점에서 자연어처리의 영향성을 분석하려고 합니다. 지난글에서도 말했듯이 자연어처리는 다른 인공지능 응용에 비해 큰 모델 사이즈(수천억 parameters)와 이렇게 큰 모델의 학습을 위한 대규모의 학습 데이터가 특징입니다. 따라서 자연어처리를 위한 하드웨어의 구성은 다른 응용 대비 큰 모델과 대량의 학습데이터에 적합하도록 최적화되어야겠죠.
딥러닝 모델 학습 중요 하드웨어 요소: GPU(Accelerator)와 HBM
딥러닝 모델 학습에 있어서 가장 중요한 하드웨어 요소 두 가지는 연산을 수행하는 GPU(Accelerator)와 연산에 필요한 데이터를 제공하는 메모리(HBM)입니다. 추론(Inference)와 비교했을 때 학습시 모델 관련하여 저장에 필요한 Parameter의 수는 4배가 늘어납니다. 여기서 Weight의 업데이트 개념이 필요한데요. 딥러닝의 학습은 Forward pass를 수행한 결과를 바탕으로 모델의 Weight parameter를 업데이트하는 Backward pass의 반복적 과정입니다. 바람직한 결과와 실제 모델의 Output이 같아지는 방향으로 Weight를 업데이트하는 것이지요. 실제 학습시 Weight의 업데이트 방향을 제시하는 Gradient가 필요하며 Gradient를 보다 정교하게 계산하기 위해 Adam optimizer가 널리 쓰입니다. Adam optimizer는 2개의 Parameter인 Variance와 Momentum으로 구성됩니다. Variance는 방향, Momentum은 움직임의 정도를 가리키는데 Adam optimizer에 대한 보다 자세한 설명은 다른 분의 블로그를 참고해주세요. 다시 정리하자면 1개의 Weight parameter를 업데이트하기 위해서 부가적으로 3개의 parameter가 필요한 상황이니 저장해야 할 parameter가 4배가 된 것이지요.
그렇다면 이 Parameter는 어디에 저장할까요? 여기에서 HBM의 필요성이 등장합니다. HBM의 특징은 다른 메모리 대비 Bandwidth가 높다는 점이며 Bandwidth는 단위시간당 전송할 수 있는 데이터의 양입니다. AI Accelerator는 이전글(딥러닝 ASIC 가속기란?)에서 설명했듯이 많은 양의 데이터를 동시에 연산하는 병렬컴퓨팅에 특화된 프로세서입니다. 따라서 연산량에 비례해 단위시간 동안 많은 데이터를 요구하는 AI Accelerator(GPU)에 데이터를 공급하는 메모리로 HBM이 AI Accelerator(GPU)옆에 부착되는 것입니다. 이러한 이유로 딥러닝 모델의 학습에서 빈번하게 업데이트가 이뤄지는 모델 Parameter는 HBM에 저장되어 AI Accelerator(GPU)로 데이터를 주고 받았던 것이죠.
현재 GPU(AI Accelerator) + HBM 조합의 한계
그런데 자연어처리 모델은 Parameter 수가 많기 때문에 HBM을 활용한 지금까지의 방식에 한계가 찾아옵니다. GPU에 부착된 HBM 용량이 작기 때문에 HBM 용량 확보를 위해 연산에 필요한 수 이상의 GPU가 필요한 상황이 된 것이지요. 현재 자연어처리 모델의 학습은 필요한 HBM의 용량에 비례해 GPU가 구성됩니다. 예를 들어 50 Billion개의 Parameter로 구성된 NLP 모델이 있다면 앞에서 말씀드린 4배의 필요 Parameter 수를 고려했을 때 저장해야 할 용량이 800GB이고 (1 Parameter당 4Byte precision 가정) GPU당 탑재된 HBM의 용량이 80GB라면 10개의 GPU가 필요한 식이죠. NVIDIA가 최근 발표한 논문[1]에서도 이와 같은 방식으로 학습하고 있습니다. 하지만 HBM은 Bandwidth가 높은 대신 용량이 작다는 단점이 있습니다. 가장 최근 NVIDIA에서 출시한 A100에 탑재된 GPU의 최대 용량은 80GB입니다. 서버 CPU에 탑재된 DDR의 용량이 수백GB인 것에 비하면 상당히 작은 용량이지요. HBM은 아키텍처 자체가 Bandwidth에 특화되었기 때문에 쉽게 용량을 늘리기도 힘듭니다. 아래와 같이 1년에 10배씩 커지는 자연어 처리 모델 추세를 본다면 앞으로 상황은 더 심각해지겠죠. 대규모 딥러닝 모델을 처리하기 위한 분산학습에 대한 자세한 내용은 관련글(딥러닝 모델의 분산학습이란?)을 참고해주세요
엔비디아의 해결책: Grace
엔비디아는 이러한 HBM의 용량 부족을 극복하기 위한 해결책으로 Grace를 GTC 2021에서 발표합니다. Grace는 엔비디아가 2023년에 출시할 ARM기반 CPU입니다. 엔비디아의 아이디어는 "HBM이 부족하면 GPU와 연결된 CPU에 있는 메모리(LP5x)를 학습에 활용한다"입니다.
그렇다면 지금까지는 왜 CPU 메모리를 GPU 연산에 활용하지 않은 것일까요? GTC 2021 Keynote 발표내용을 보면 해답이 나와 있습니다. CPU 메모리가 GPU까지 오려면 2가지 경로를 거쳐야 합니다. 첫 번째는 CPU 메모리(DRAM)으로부처 CPU까지 경로이며 두 번째는 CPU부터 GPU까지입니다. 첫 번째 경로인 CPU 메모리부터 CPU까지의 데이터 이동 속도는 DRAM Bandwidth로 나타내어지죠. 아래 왼쪽 그림을 보면 CPU DRAM의 Bandwidth는 HBM이 GPU에 데이터를 전달하는 Bandwidth에 비해 상대적으로 많이 낮습니다. 더 심각한 Bottleneck은 CPU와 GPU사이의 Interconnect입니다. 현재는 PCIe4를 활용하고 있는데 속도가 많이 느리죠. 또한 CPU 1개에 GPU 4개가 연결되어 있는 구조이기 때문에 GPU 1개당 Interconnect Bandwidth를 계산하면 원래 PCIe4 Bandwidth의 1/4이 됩니다. 아래 그림과 같이 16GB/s가 되죠. 2,000GB/s인 HBM의 Bandwidth와는 100배 넘게 차이가 나기 때문에 CPU 메모리를 딥러닝 학습에 활용하지 못했던 것입니다.
CPU-GPU Interconnect와 CPU Memory Bandwidth 향상
엔비디아는 다음의 2가지 해결책을 통해 CPU 메모리를 딥러닝(자연어처리) 학습에 활용하려고 합니다. 첫 번째는 CPU와 GPU 사이의 Interconnect를 엔비디아 GPU 연결에 사용되었던 NVLink로 바꾸는 것이죠. 이를 통해 GPU와 CPU의 Interconnect 속도가 기존 16GB/s에서 500GB/s로 대폭 증가합니다. 이렇게 Interconnect 속도가 증가하니 상대적으로 CPU 메모리 Bandwidth가 뒤쳐지죠. Interconnect와 비슷한 수준의 Bandwidth를 내기 위해 엔비디아는 기존에 사용하던 DDR 대신 LPDDR(LPDDR5x)로 CPU 메모리를 변경합니다. LPDDR은 DDR에 비해 Pin speed가 높기 때문에 Bandwidth도 높고 Form factor 측면에서도 DDR보다 작다는 장점이 있죠. 마지막 주목할 부분은 CPU 1개에 GPU 1개가 연결된다는 점입니다. 과거와 같이 1:4로 연결했다면 지금까지 말했던 연결 Bandwidth가 GPU당 1/4로 줄어들겠지만 1:1로 연결하기 때문에 감소 효과가 전혀 없죠. 결과적으로는 아래 그림과 같이 기존 x86 CPU 기반 시스템 대비 CPU 메모리가 GPU로 이동하는 Bandwidth가 30배 증가합니다.
엔비디아가 새로운 ARM 기반 CPU인 Grace 도입 예정을 알렸지만 모든 엔비디아 시스템이 Grace를 탑재한다는 것은 아닙니다. 아래 그림에서 확인할 수 있듯이, 엔비디아는 앞으로도 x86(AMD or Intel) CPU가 탑재된 GPU 시스템을 출시한다는 계획을 밝혔죠. 두 종류 CPU(ARM, x86)를 모두 출시한 후 시장의 선택을 받겠다는 계획으로 보입니다. 과연 어떤 시스템이 다수의 선택을 받게될지, Grace가 출시될 2023년이면 명확히 알 수 있을 것 같습니다.
[1] Narayanan D. et al., 2021, Efficient Large-Scale Language Model Training on GPU Clusters
'IT' 카테고리의 다른 글
칩렛(Chiplet)이란? (2) | 2022.03.22 |
---|---|
딥러닝 모델의 분산학습이란? (Data parallelism과 Model parallelism) (0) | 2021.07.24 |
자연어 처리(NLP)란 무엇이며 누가 주도하는가? (0) | 2021.07.17 |
Processing in memory(PIM)이란? (2) - Concept 및 사례 (1) | 2021.05.29 |
Embedding table이란? (딥러닝 추천모델에서의) (1) | 2021.05.29 |