네이버클라우드 이동수 이사님의 "초거대 AI를 위한 AI 반도체" 세미나에 대한 요약 및 후기임을 먼저 밝힌다.
AI 알고리즘의 발전은 Transformer 등장 이전과 이후로 나뉠 만큼 Transformer의 등장은 매우 중요한 사건이었다.
Transformer 이전에는 Computer Vision, Natural Language 등 다양한 영역에서 강점을 보이는 알고리즘이 모두 달랐다. (e.g. CV쪽은 ResNet 계열, 번역쪽은 Seq2Seq 등)
하지만 2017년에 Transformer가 등장한 후로는 모든 영역에서 Transformer가 좋은 성능을 보였고, 뿐만 아니라 모델 성능 향상을 위해서 모델 사이즈를 키울수록 일정 사이즈 이상부터는 Transformer 사용 없이는 불가능한 것으로 보여지고 있는 상황이다.
그리고 Transformer 계열은 대부분 MatMul의 비중이 매우 크기 때문에, V100, A100을 비롯한 다양한 AI 가속기들에서 MatMul을 위한 유닛 면적이 점점 커지고 있고, HBM 등 높은 bandwidth를 가진 DRAM을 사용하려고 하는 추세이다.
LLM의 부하특성은 Summarization 과 Generation에서 각각 다르다.
Summarization은 이미 주어진 토큰들을 처리하기 때문에 각 토큰들을 병렬 연산이 가능하다.
반면 Generation은 Auto-regressive 특성을 가지고 있기 때문에 현재까지 생성된 output 토큰이 다시 input으로 사용되어 한 토큰씩 만들어준다. 따라서 하나의 토큰을 생성할 때마다 parameter를 모두 읽어야 한다.
따라서, Summarization은 Compute-bound, Generation은 Memory-bound의 특성을 가지게 된다.
LLaMA-30b 모델을 사용하는 Generation에서 한 토큰당 50ms 의 속도로 서비스한다고 가정했을 때, 50ms당 60GByte의 data를 읽어와야한다. (약 1.2TB/s)
여기서 모델이 더 커지게 됐을 때, 필요한 dram size가 커지게 되어 하나의 GPU에 하나의 모델을 올릴 수 없게 된다.
따라서 여러개의 GPU에 모델을 나눠서 올려야 하는데, 당연히 on-chip interconnet보다 훨씬 느린 chip to chip 통신을 해야 한다. (nvidia의 경우 NVlink 사용)
이때, 모델 사이즈가 커져서 GPU 개수가 늘어날수록 GPU간 통신이 bottleneck이 되게 된다. (HBM은 수TB/s의 속도이나 NVlink의 경우 수백GB/s)
그리고 Generation 에서는 Memory-bound의 특성때문에 GPU의 연산 unit util이 매우 떨어진다. (1% ~ 10% 수준, Summarization 은 Computation-bound라서 70% 정도라고 함)
그래서 이를 효율적으로 inference 하기 위한 두가지 방안이 있는데,
첫번째는 Batch size 최대화(Higher Throughput),
두번째는 Model Compression(Faster Latency)이다.
Batch size를 최대화 하는 것은 request를 최대한 모아서 parameter read를 적게 하는 방법이다. 따라서 전술한 문제인 연산 unit util 비효율성 문제는 어느정도 해결이 가능하지만 request를 너무 많이 모을 경우 latency가 크게 증가하므로 수십~ batch 정도가 적당하다고 한다.
Model Compression은 latency를 줄여서 연산 unit의 util을 올리는 방법인데, HW 별로 제약이 많이 있고 (GPU에서 적합하지 않을 수 있음), HW-SW co design을 통해서 Compression 기법에 적합한 HW가 존재해야 효율적인 방법이라 난이도나 비용 측면에서 어려움이 있다.
즉 요약하면 다음과 같다.
1. GPT 모델에서의 Generation 시나리오에서 Memory-bound 특성을 가지므로 memory bandwidth가 높은 dram 사용 필요 (현재로썬 HBM 말고는 없는 듯 하다.)
2. HBM 사이즈 한계로 인해 GPU 한개당 올라가는 dram 사이즈가 한계가 있음
3. 근데 모델 사이즈는 점점 커져서 하나의 모델을 하나의 GPU에 올릴 수 없음
4. 그래서 여러대의 GPU에 나눠서 올리고 GPU간 interconnect(e.g. NVlink)가 필요한데, 사용하는 GPU가 늘어날 수록 NVlink가 bottleneck임
5. 따라서 모델사이즈가 커질수록 전체 cost는 급격하게 상승
6. Generation 시나리오에서 Memory-bound 특성때문에 연산 unit util이 매우 낮아 비효율적인 부분이 있고, 이를 위해 Batch size 최대화, Model Compression을 통해 해결하고자 하는 시도가 있음
현재까지 AI 모델들의 parameter 사이즈의 증가는 매우 가파른 반면, nvidia GPU 1개당 탑재되는 dram 사이즈의 증가는 이에 미치지 못하고 있다. (특히 transformer 계열)
따라서 모델이 커질수록 memory-bound 특성이 더욱 심화되어 generation에서 token 생성 속도가 매우 느리다.
뿐만 아니라, dram 사이즈의 증가가 NPU들의 연산 unit 성장과 비교해도 그에 미치지 못하는 상황이다.
이러한 상황 때문에 NPU에서 가장 핵심적인 기술 중 하나가 메모리와 메모리 컨트롤러라고 생각되며, HBM 컨트롤러 기술은 nvidia가 가장 앞서있다고 한다. (둘 다 아날로그 기술인 점이 주목할 만 한 것 같음)
V100에 비해 A100은 memory(VRAM) bandwidth와 size가 확실히 좋아졌고, 전력 사용량은 그렇게 크게 늘지 않아 A100의 수요가 급증했었다.
그에 비해 H100은 memory bandwidth 및 size 증가에 비해 전력이 크게 늘었고, 데이터센터의 랙 당 사용 가능 전력이 한정되어 있어 H100 전환 시 A100에 비해 사용 대수를 줄여야한다고 한다.
이제 memory bandwidth와 size를 늘리는게 어려워진 이유는 물리적인 한계와 HBM의 특수성 때문이라고 하는데, 이부분에 대해서는 다시 공부해볼 필요가 있다.
근데 H200, B100, B200 스펙을 보면 꼭 그렇지많은 않은 것 같다. B100이 Bandwidth 8TB/s에 사용 전력이 700W(H100과 동일)이다.
그리고 A100은 단종된 상태라 어차피 H100 이상급을 선택할 수 밖에 없긴 한 것 같다.
GPU는 Graphics를 위한 것이니, AI에 효율적인 NPU를 개발해야 한다.
모델이 커지기 때문에 더 큰, 더 많은 SRAM을 가진 하드웨어를 설계해야한다.
NVIDIA는 Training을 위한 칩이라 Inference에 비효율적이다.
아무리 좋은 하드웨어를 만들어도 CUDA에 익숙해진 개발자들이 쓰려고 하지 않는다.
공정이 발전함에 따라 면적이나 전력 측면에서 Logic도 같이 빠르게 발전한 반면, sram과 dram은 그렇지 못했다.
TSMC 공정 기준으로 5nm 이후로는 sram 면적이 줄어들지 않고 있고 심지어는 더 커지는 경향이 있다고 한다.
따라서 sram은 공정 발전의 혜택을 받지 못하고 있고, dram 또한 off-chip 메모리이므로 당연히 공정 혜택을 받지 못한다.
결국 LLM을 위해서는 많은 메모리가 필요함에도 불구하고 발전속도나 현재 상용 제품의 성능이나 여러가지로 병목이 되고 있다.