GPU: AI 학습 속도를 극적으로 높이는 하드웨어의 모든 것

GPU: AI 학습 속도를 극적으로 높이는 하드웨어

지난달 개인 프로젝트로 이미지 분류 모델을 학습시키다가 크게 당황한 적이 있습니다. 노트북 CPU로 돌렸더니 에폭 하나 도는 데 40분이 넘게 걸렸거든요. 같은 코드를 클라우드 GPU 인스턴스로 옮기자 같은 작업이 3분 만에 끝났습니다. 이때 확실히 체감했습니다. GPU는 AI 학습 속도를 극적으로 높이는 하드웨어라는 말이 과장이 아니라는 것을요. 오늘은 왜 GPU가 이렇게까지 차이를 만드는지, 그리고 실제로 학습 속도를 더 끌어올리려면 어떤 부분을 신경 써야 하는지 제 경험을 섞어 정리해보겠습니다.

GPU 그래픽 카드 칩 클로즈업

왜 CPU가 아니라 GPU일까요

CPU는 코어 수가 적은 대신 하나하나가 매우 똑똑하게 설계되어 있습니다. 반면 GPU는 수천 개의 단순한 코어를 병렬로 돌리는 구조입니다. 딥러닝 학습의 핵심인 행렬 곱셈 연산은 같은 계산을 수백만 번 동시에 반복하는 작업이라, 이런 병렬 구조와 궁합이 정말 잘 맞습니다.

예를 들어 제가 사용했던 RTX 4090은 CUDA 코어가 1만 6천 개가 넘는데, 이 코어들이 동시에 곱셈과 덧셈을 처리하면서 CPU 대비 수십 배의 처리량을 냅니다.

여기에 최신 GPU에는 텐서 코어라는 전용 연산 유닛이 따로 있어서, FP16이나 BF16 같은 저정밀도 연산을 훨씬 빠르게 처리합니다. 실제로 같은 모델을 FP32 대신 BF16으로 학습시켰더니 배치당 처리 시간이 약 1.7배 줄어들었던 경험이 있습니다.

단순히 코어 개수 싸움이 아니라, 메모리 대역폭도 큰 역할을 합니다. HBM 메모리를 탑재한 GPU는 데이터를 GPU 코어로 실어 나르는 속도 자체가 일반 그래픽 카드보다 훨씬 빠르기 때문에, 대규모 모델을 학습할 때 병목이 훨씬 덜 생깁니다.

학습 속도를 더 끌어올리는 실전 방법

GPU 한 장만 있다고 최적의 속도가 저절로 나오지는 않습니다. 저는 처음에 배치 사이즈를 32로 두고 돌렸는데, GPU 사용률이 60% 밖에 안 나오는 걸 확인하고 나서야 데이터 로딩이 병목이라는 걸 알았습니다.

데이터로더의 워커 수를 4에서 8로 늘리고 pin_memory 옵션을 켜자 GPU 사용률이 95% 이상으로 올라갔습니다. 혼합 정밀도 학습도 확실히 효과가 컸습니다. PyTorch의 자동 혼합 정밀도 기능을 켜는 것만으로 메모리 사용량이 줄어서 배치 사이즈를 두 배로 늘릴 수 있었고, 결과적으로 전체 학습 시간이 절반 가까이 단축됐습니다.

GPU가 여러 장 있는 환경이라면 모델 병렬화나 데이터 병렬화도 고려할 만합니다. 다만 GPU 간 통신 비용이 생각보다 크다는 점은 주의해야 합니다. 4장짜리 서버에서 통신 오버헤드 때문에 속도가 이론치의 3배 정도에 그친 사례를 본 적이 있는데, 이런 경우엔 NVLink 같은 고속 인터커넥트가 지원되는지 미리 확인하는 것이 좋습니다.

서버룸 GPU 클러스터 데이터센터

GPU를 직접 살까, 클라우드로 빌릴까

개인적으로 가장 고민했던 부분은 비용이었습니다. RTX 4090을 새로 구매하려면 국내 기준 250만 원 안팎이 들었는데, 한 달에 며칠만 집중적으로 학습을 돌리는 저에게는 부담이 컸습니다.

그래서 클라우드 GPU 서비스를 몇 군데 비교해봤는데, 같은 사양의 GPU라도 하이퍼스케일러 온디맨드 가격과 마켓플레이스형 서비스의 가격 차이가 최대 서너 배까지 벌어지는 걸 확인했습니다.

예를 들어 H100 한 장을 시간당 8천 원대에 빌릴 수 있는 곳도 있었고, 같은 스펙을 시간당 3만 원 넘게 받는 곳도 있었습니다. 짧은 실험을 자주 반복해야 한다면 온디맨드로 빌려서 필요한 시간만 쓰는 편이 훨씬 경제적이었습니다.

반대로 거의 매일 몇 시간씩 꾸준히 학습을 돌리는 상황이라면, 어느 시점부터는 직접 구매하는 쪽의 총비용이 더 낮아지는 손익분기점이 존재했습니다. 저는 결국 초기 실험은 클라우드로, 안정화된 모델의 반복 학습은 자체 GPU로 나눠서 운영하는 방식으로 정착했습니다.

정리하며

결국 GPU는 AI 학습 속도를 극적으로 높이는 하드웨어라는 사실을 이론이 아니라 직접 시간을 재보면서 체감하게 되었습니다. 다만 GPU만 좋은 걸 산다고 끝나는 게 아니라, 혼합 정밀도 학습이나 데이터 로딩 최적화, 배치 사이즈 조정 같은 소프트웨어 단의 튜닝이 함께 따라와야 그 성능을 온전히 끌어낼 수 있었습니다.

이제 막 딥러닝 학습 환경을 구축하시는 분이라면, 무조건 고사양 GPU부터 찾기보다는 먼저 지금 쓰고 있는 코드가 GPU 사용률을 얼마나 뽑아내고 있는지 확인해보시길 권해드립니다. 병목이 어디에 있는지 알고 나면, 하드웨어 투자든 클라우드 대여든 훨씬 합리적인 선택을 할 수 있을 것입니다.

Leave a Comment