질문 답변: 게임에 GPU가 필요하지 않은데 왜 엔비디아는 더 큰 GPU를 만들까요?
요약
최근 엔비디아(Nvidia)의 고성능 GPU들이 전력 소비, 크기, VRAM 용량 면에서 급증하는 이유가 단순히 게이밍 시장 때문만은 아닙니다. 실제로는 머신러닝(ML) 커뮤니티의 요구에 의해 주도되고 있습니다. 특히 대규모 모델 학습 시 발생하는 데이터 불균형 문제나 아웃라이어 처리 등을 해결하기 위해 더 큰 배치 사이즈와 VRAM 용량이 필수적입니다. 현재 작업 중인 프로젝트 사례를 통해, 최적의 수렴(convergence)을 위해서는 24Gb 메모리로는 부족하며, 최소 3x Nvidia A100 GPU 조합과 240Gb 이상의
핵심 포인트
- 최신 고성능 GPU 개발은 게이밍 시장보다 머신러닝(ML) 운영 및 연구 분야의 요구에 의해 90% 이상 주도되고 있습니다.
- 대규모 모델 학습 시, 데이터 불균형이나 아웃라이어 발생으로 인해 안정적인 수렴을 위해서는 현재 사용 가능한 VRAM 용량으로는 부족합니다.
- 효율적인 ML 학습을 위해 배치 사이즈를 늘리려면 (예: 42개 $ ightarrow$ 420개), 최소 3x Nvidia A100 GPU 조합과 같은 대용량 메모리가 요구됩니다.
- 향후 더 큰 모델(5배 많은 파라미터)을 다루고 고해상도 데이터로 학습하려면 약 500Gb의 VRAM이 필요할 것으로 예상됩니다.
최근 IT 분야에서 활동하는 최신 지식을 가진 사람들과 여러 차례 이 논의를 했습니다. 엔비디아가 게이밍 및 프로(pro) 범위 모두에서 출시하는 최신 제품들이 전력 소비, 크기, 비용, 총 VRAM 등 면에서 정말 놀랍다는 것은 사실입니다... 하지만 실제로는 ML 커뮤니티(ML community)가 주도하는 매우 현실적인 필요성이 존재하며, 이는 대부분의 사람들이 예상하는 것보다 더 클 수 있습니다.
제가 오늘 작업하고 있는 프로젝트의 예시를 보여드리겠습니다. 이것은 현재 제가 훈련시키고 있는 모델의 콘솔 출력입니다:
I1015 20:04:51.426224 139830830814976 supervisor.py:1050] Recording summary at step 107041.
INFO:tensorflow:global step 107050: loss = 1.0418 (0.453 sec/step)
I1015 20:04:55.421283 139841985250112 learning.py:506] global step 107050: loss = 1.0418 (0.453 sec/step)
INFO:tensorflow:global step 107060: loss = 0.9265 (0.461 sec/step)
I1015 20:04:59.865883 139841985250112 learning.py:506] global step 107060: loss = 0.9265 (0.461 sec/step)
INFO:tensorflow:global step 107070: loss = 0.7003 (0.446 sec/step)
I1015 20:05:04.328712 139841985250112 learning.py:506] global step 107070: loss = 0.7003 (0.446 sec/step)
INFO:tensorflow:global step 107080: loss = 0.9612 (0.434 sec/step)
I1015 20:05:08.808678 139841985250112 learning.py:506] global step 107080: loss = 0.9612 (0.434 sec/step)
INFO:tensorflow:global step 107090: loss = 1.7290 (0.444 sec/step)
I1015 20:05:13.288547 139841985250112 learning.py:506] global step 107090: loss = 1.7290 (0.444 sec/step)
마지막 줄을 확인해 보세요. 배치 크기(batch size)가 42개의 이미지(제 GPU의 24Gb 메모리에 넣을 수 있는 최대치)일 때, 저는 무작위로 전체 손실(total loss)이 지난 100개 배치에 대한 이동 평균(moving average)보다 두 배 이상 높은 경우가 간헐적으로 발생합니다!
근본적으로 잘못된 것은 아니지만, 이는 여러 반복 동안 모델의 수렴(convergence)을 방해할 것이며, 제가 계획한 반복 횟수 내에서 모델이 이상적인 최종 상태에 도달하는 데 도움이 되지 않을 가능성이 높습니다.
이는 부분적으로 제가 근본적으로 불균형한 데이터셋을 가지고 있고, 손실 함수(loss function)에서 이를 설명하기 위해 상당히 큰 레이블별 가중치 재조정(label-wise weight rebalancing)을 적용해야 하기 때문입니다... 하지만 이것이 제가 작업하는 경우의 현실을 가장 잘 보여주는 것입니다!
--> 지금 당장 이상적인 해결책은 훈련 세트(training set)에서 이러한 큰 아웃라이어(outliers)가 발생할 가능성을 최소화하기 위해 더 큰 배치 크기를 사용하는 것입니다.
최상의 결과를 얻으려면
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Chip/GPU의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기