AI & 기술
AlexNet: 2012년 돌파구 뒤의 CUDA 엔지니어링

2012년, AlexNet의 돌파구는 CUDA 지원 GPU와 결합된 심층 신경망이 수십 년에 걸친 전통적인 컴퓨터 비전 엔지니어링을 능가할 수 있음을 입증했습니다. ImageNet Large Scale Visual Recognition Challenge(ILSVRC)에서 Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton은 top-5 오류율 15.3%를 달성하여 준우승자의 26.2%를 거의 11%포인트 차이로 앞질렀습니다.
하드웨어 병목과 해결책
당시에는 PyTorch나 TensorFlow 같은 딥러닝 프레임워크가 존재하지 않았고, 소비자용 GPU는 심각한 메모리 한계가 있었습니다.
- 소비자용 게이밍 하드웨어: 팀은 침실에서 두 개의 소비자용 NVIDIA GTX 580 GPU로 네트워크를 학습했습니다. 각 카드는 3 GB의 VRAM만 가지고 있어 6천만 개의 파라미터로 구성된 네트워크 전체를 하나의 칩에 담기에는 부족했습니다.
- CUDA를 통한 모델 병렬화: Alex Krizhevsky는 사용자 정의 CUDA C++ 커널(cuda-convnet)을 작성하여 네트워크를 두 GPU에 수직으로 분할했습니다. 각 GPU는 자체 3 GB 메모리 풀에 뉴런과 커널의 절반을 저장했습니다.
- 선택적 GPU 간 통신: 마더보드의 PCIe 버스를 통한 GPU 간 데이터 전송이 느렸기 때문에, Krizhevsky는 특정 계층(예: 3번 계층)에서만 통신하도록 GPU를 프로그래밍했습니다. 다른 계층은 각 카드에서 완전히 독립적으로 동작하여 대역폭 병목을 최소화했습니다.
주요 아키텍처 혁신
순수한 CUDA 연산 능력 덕분에 팀은 이전에는 대규모로 테스트하기에 너무 느렸던 여러 핵심 기술을 결합할 수 있었습니다:
- 심층 아키텍처: AlexNet은 8개의 학습된 계층(5개의 합성곱 계층 뒤에 3개의 완전 연결 계층)을 쌓았으며, 이는 이전 신경망보다 훨씬 깊은 구조였습니다.
- ReLU 활성화 함수: 전통적인 tanh나 sigmoid 연산 대신 Rectified Linear Unit(ReLU)을 사용했습니다. ReLU는 CUDA에서 계산이 단순하여 그래디언트 소실 없이 심층 네트워크를 약 6배 빠르게 학습할 수 있게 했습니다.
- 데이터 증강과 Dropout: GPU가 행렬 연산을 처리하는 동안 CPU는 과적합을 방지하기 위해 실시간 이미지 변환(자르기와 뒤집기)을 생성했습니다. 또한 Dropout을 적용하여 학습 중 뉴런을 무작위로 꺼서 네트워크가 견고한 특징을 학습하도록 강제했습니다.
딥러닝 혁명을 촉발한 이유
2012년 9월 이전에는 대부분의 컴퓨터 비전 연구자들이 가장자리와 형태를 감지하기 위해 수작업으로 만든 알고리즘(SIFT와 HOG 등)에 의존했으며, 심층 신경망을 막다른 이론으로 여겼습니다.
- 학습 시간: 사용자 정의 CUDA 최적화를 적용했음에도 AlexNet은 120만 장의 고해상도 이미지를 학습하는 데 5~6일이 걸렸습니다. CUDA가 없었다면 같은 실험이 CPU에서 몇 달이 걸렸을 것입니다.
- 산업의 전환: AlexNet이 ImageNet에서 모든 전통적인 방법을 압도하자, AI 연구 커뮤니티 전체가 거의 하룻밤 사이에 수공학 특징을 버렸습니다. 연구자들은 앞다투어 NVIDIA GPU를 구매했고, 이는 NVIDIA가 AI로 전환하여 2년 후 cuDNN을 출시하는 계기가 되었습니다.