AI와 머신러닝이 세상을 변화시키는 중요한 움직임이 되었다. 이를 실현하는 데는 많은 컴퓨팅 파워가 필요하며, 그래픽 처리 장치(Graphics Processing Units, GPU)는 이러한 고성능 컴퓨팅 작업의 주요 도구이다.
GPU는 병렬처리 구조를 가진 데다가 많은 양의 데이터를 빠르게 처리할 수 있기 때문에, 딥러닝 모델을 학습하는 데 매우 효과적이다.
특히 NVIDIA의 GPU는 CUDA(Core Unified Device Architecture)라는 병렬 컴퓨팅 플랫폼을 사용하여 높은 성능을 제공한다. CUDA Core는 이러한 GPU에서 병렬 처리를 수행하는 핵심 요소이며, 이번 포스트에서는 GPU와 CUDA Core의 기능에 대해 더 자세히 알아보고, 어떤 GPU를 선택할 때 어떤 요소를 고려해야 하는지 살펴보고자 한다.
GPU란?
GPU는 그래픽 처리 장치로, 원래는 컴퓨터 그래픽을 빠르게 그리는 역할을 했다. 하지만 시간이 흐르면서 병렬 데이터 처리에 매우 효과적이라는 것이 알려지게 되었고, 이러한 특성 때문에 AI와 머신러닝에 많이 사용되고 있다.
GPU는 CPU와 달리 수백에서 수천 개의 작은 코어를 가지고 있다. 이러한 코어들은 동시에 다양한 작업을 처리하는 데 탁월하며, 머신러닝에서 필요한 대량의 데이터 처리와 복잡한 계산에 이상적이다.
CUDA Core의 중요성
CUDA Core는 NVIDIA GPU의 병렬 처리 코어를 가리키며, CUDA Core의 수가 많을수록 GPU는 동시에 더 많은 작업을 처리할 수 있다. 따라서 일반적으로 CUDA Core의 수가 많은 GPU가 더 높은 성능을 제공한다.
모든 머신러닝 작업이 더 많은 CUDA Core를 필요로 하지 않고 작업의 특성, 즉 병렬화 가능성에 따라 다르다. 그러나 많은 연산작업이 필요한 머신러닝 작업에서는 CUDA Core 수가 중요하다 할 수 있다.
아래 표는 NIVIDA의 GPU들을 CUDA Core 수로 정렬한 표이다.
RTX – 3080Ti, 3090, 3090Ti, 4090은 CUDA Core가 10,000개를 넘어간다.
GPU | Number of CUDA Cores | Size of Power Supply | Memory Type | Memory Interface Width | Memory Bandwidth GB/sec | Base Clock Speed | Boost Clock Speed | Memory Size | |
4000 Series | RTX-4090 | 16384 | 850W | GDDR6X | 384 bit | 1008 GB/s | 2.23 GHz | 2.52 GHz | 24GB |
3000 Series | RTX-3090 Ti | 10572 | 850W | GDDR6X | 384 bit | 936 GB/s | 1670 MHz | 1860 MHz | 24GB |
3000 Series | RTX-3090 | 10496 | 750W | GDDR6X | 384 bit | 936 GB/s | 1400 MHz | 1700 MHz | 24GB |
3000 Series | RTX-3080 Ti | 10240 | 750W | GDDR6X | 384 bit | 912 GB/s | 1370 MHz | 1670 MHz | 12GB |
4000 Series | RTX-4080 | 9728 | 750W | GDDR6X | 256 bit | 716.8 GB/s | 2.21 GHz | 2.51 GHz | 16GB |
3000 Series | RTX-3080 | 8704 | 750W | GDDR6X | 320 bit | 760 GB/s | 1440 MHz | 1710 MHz | 10GB |
3000 Series | RTX-3070 Ti | 6144 | 750W | GDDR6X | 256 bit | 608 GB/s | 1500 MHz | 1730 MHz | 8GB |
3000 Series | RTX-3070 | 5888 | 650W | GDDR6 | 256 bit | 448 GB/s | 1580 MHz | 1770 MHz | 8GB |
Titan Series | GTX Titan Z | 5760 | 700W | DDR5 | 768 bit* | 672 GB/s | 705 MHz | 876 Mhz | 12GB |
3000 Series | RTX-3060 Ti | 4864 | 600W | GDDR6 | 256 bit | 448 GB/s | 1410 MHz | 1670 MHz | 8GB |
2000 Series | Titan RTX | 4608 | 650W | GDDR6 | 384 bit | 672 GB/s | 1350 MHz | 1770 MHz | 24GB |
Titan Series | Titan RTX | 4608 | 650W | GDDR6 | 384 bit | 672 GB/s | 1350 MHz | 1770 MHz | 24GB |
2000 Series | RTX-2080 Ti | 4352 | 650W | GDDR6 | 352 bit | 616 GB/s | 1350 MHz | 1545 MHz | 11GB |
Titan Series | NVIDIA Titan XP | 3840 | 600W | GDDR5X | 384 bit | 547.7 GB/s | 1405 MHz | 1582 MHz | 12GB |
3000 Series | RTX-3060 | 3584 | 550W | GDDR6 | 192 bit | 384 GB/s | 1320 MHz | 1780 MHz | 12GB |
1000 Series | GTX-1080 Ti | 3584 | 600W | GDDR5X | 352 bit | 484 GB/s | 1480 MHz | 1582 MHz | 11GB |
Titan Series | NVIDIA Titan X | 3584 | 600W | GDDR5X | 384 bit | 480 GB/s | 1417 MHz | 1531 MHz | 12GB |
2000 Series | RTX-2080 Super | 3072 | 650W | GDDR6 | 256 bit | 496 GB/s | 1650 MHz | 1815 MHz | 8GB |
Titan Series | GTX Titan X | 3072 | 600W | DDR5 | 384 bit | 336.5 GB/s | 1000 MHz | 1075 MHz | 12GB |
2000 Series | RTX-2080 | 2944 | 650W | GDDR6 | 256 bit | 448 GB/s | 1515 MHz | 1710 MHz | 8GB |
Titan Series | GTX Titan Black | 2880 | 600W | DDR5 | 384 bit | 336 GB/s | 889 MHz | 980 MHz | 6GB |
Titan Series | GTX Titan | 2688 | 600W | DDR5 | 384 bit | 288.5 GB/s | 837 MHz | 876 MHz | 6GB |
3000 Series | RTX-3050 | 2560 | 550W | GDDR6 | 128 bit | 224 GB/s | 1550 MHz | 1780 MHz | 8GB |
2000 Series | RTX-2070 Super | 2560 | 650W | GDDR6 | 256 bit | 448 GB/s | 1605 MHz | 1770 MHz | 8GB |
1000 Series | GTX-1080 | 2560 | 500W | GDDR5 | 256 bit | 320 GB/s | 1607 MHz | 1733 MHz | 8GB |
1000 Series | GTX-1070 Ti | 2432 | 500W | GDDR5 | 256 bit | 256 GB/s | 1607 MHz | 1683 MHz | 8GB |
2000 Series | RTX-2070 | 2304 | 550W | GDDR6 | 256 bit | 448 GB/s | 1410 MHz | 1620 MHz | 8GB |
2000 Series | RTX-2060 Super | 2176 | 550W | GDDR6 | 256 bit | 448 GB/s | 1470 MHz | 1650 MHz | 8GB |
2000 Series | RTX-2060 | 1920 | 500W | GDDR6 | 192 bit | 336 GB/s | 1365 MHz | 1680 MHz | 6GB |
1000 Series | GTX-1070 | 1920 | 500W | GDDR5 | 256 bit | 256 GB/s | 1506 MHz | 1683 MHz | 8GB |
1600 Series | GTX-1660 Ti | 1536 | 450W | GDDR6 | 192 bit | 288 GB/s | 1500 MHz | 1770 MHz | 6GB |
1600 Series | GTX-1660 | 1408 | 450W | GDDR5 | 192 bit | 192 GB/s | 1530 MHz | 1785 MHz | 6GB |
1600 Series | GTX-1660 Super | 1408 | 450W | GDDR6 | 192 bit | 336 GB/s | 1530 MHz | 1785 MHz | 6GB |
1600 Series | GTX-1650 Super | 1280 | 350W | GDDR6 | 128 bit | 192 GB/s | 1530 MHz | 1725 MHz | 4GB |
1000 Series | GTX-1060 6GB | 1280 | 400W | GDDR5 | 192 bit | 192 GB/s | 1506 MHz | 1708 MHz | 6GB |
1000 Series | GTX-1060 3GB | 1152 | 400W | GDDR5 | 192 bit | 192 GB/s | 1506 MHz | 1708 MHz | 3GB |
1600 Series | GTX-1650 | 896 | 300W | GDDR5 | 128 bit | 128 GB/s | 1485 MHz | 1665 MHz | 4GB |
1000 Series | GTX-1050 3GB | 768 | 300W | GDDR5 | 96 bit | 84 GB/s | 1392 MHz | 1518 MHz | 3GB |
1000 Series | GTX-1050 Ti | 768 | 300W | GDDR5 | 128 bit | 112 GB/s | 1290 MHz | 1392 MHz | 4GB |
1000 Series | GTX-1050 2GB | 640 | 300W | GDDR5 | 128 bit | 112 GB/s | 1354 MHz | 1455 MHz | 2GB |
1000 Series | GTX-1010 | 384 | 200W | GDDR5 | 64 bit | 41.1 GB/s | 1228 MHz | 1468 MHz | 2GB |
1000 Series | GTX-1030 | 384 | 300W | GDDR5 | 64 bit | 48 GB/s | 1277 MHz | 1468 MHz | 2GB |
GPU 선택: 주요 고려사항
GPU를 선택할 때 고려해야 할 주요 사항들은 다음과 같다:
1. CUDA Core의 수: CUDA Core의 수는 병렬 처리 능력을 나타낸다. 일반적으로 CUDA Core의 수가 많을수록 병렬 처리 능력이 높아진다.
2. 메모리 크기: 머신러닝 작업은 대량의 데이터를 처리하는 것이 일반적이다. 따라서 충분한 GPU 메모리는 필수적이며, 메모리 크기가 큰 GPU는 더 많은 데이터를 저장하고 빠르게 접근할 수 있다.
3. 메모리 대역폭: 메모리 대역폭은 GPU가 메모리에 얼마나 빠르게 접근할 수 있는지를 나타낸다. 높은 메모리 대역폭은 더 빠른 데이터 전송 속도를 의미한다.
4. TDP(Thermal Design Power): TDP는 GPU가 소비하는 최대 전력을 나타낸다. 높은 TDP는 더 많은 냉각을 요구하며, 시스템의 전체 전력 요구 사항에 영향을 줄 수 있다.
5. 가격: 마지막으로, 가격은 항상 중요한 고려사항이다. 가장 고성능의 GPU를 구매할 수 있는 예산이 있다면 좋겠지만, 대부분의 경우는 비용 효율적인 모델을 찾아야 할 것이다.
결론
모든 머신러닝 워크스테이션의 중요한 요소 중 하나는 GPU이다. GPU 선택 시 CUDA Core의 수, 메모리 크기, 메모리 대역폭, TDP, 그리고 가격 등을 고려해야 하며, 이러한 요소들을 바탕으로 고성능의 머신러닝 워크스테이션을 구축할 수 있다.
항상 많은 CUDA Core를 가진 GPU가 최고의 성능을 제공하는 것은 아니지만, 머신러닝과 같이 대량의 병렬 처리가 필요한 작업에서는 CUDA Core의 수가 중요한 역할을 한다.