볼타와 자비에르가 3분기에 출시
NVIDIA는 차세대 GPU 아키텍처 볼타(Volta)와 차세대 SoC 자비에르(Xavier)의 개요와 일정을 발표했습니다. 볼타는 내부 마이크로 아키텍쳐를 일신한 NVIDIA의 차세대 GPU로 하이엔드 GV100이 먼저 나옵니다. 자비에르는 자동차 등 임베디드을 대상으로 한 SoC입니다.
모두 머신 러닝을 위한 기능을 포함하고 그 성능을 비약적으로 향상시켰습니다. 둘 다 2017년 3분기에 등장하며, 차량용 시스템에서 도요타와 제휴한 것도 발표했습니다.
GV100은 NVIDIA의 다음 플래그쉽 GPU입니다. 이것을 활용한 컴퓨팅용 버전이 테슬라 V100으로 나옵니다.
GV100는 5,120 개의 CUDA 코어(FP32 연산 유닛)을 탑재하고 FP32에서 15TFLPOS의 성능을 냅니다. 또한 딥 러닝 교육에서 쓰이는 FP16에 초점을 맞춘 텐서 연산 유닛을 탑재, FP16에선 120TFLOPS의 성능을 냅니다. NVIDIA는 GV100 기반 시스템의 수주를 개시하고 2017년 3분기부터 출하할 예정입니다.
자비에르는 차세대 자동차 시스템의 SoC입니다. NVIDIA가 설계한 덴버 ARM CPU 코어와 512 CUDA 코어의 볼타 GPU를 탑재했습니다.
자비에르는 딥 러닝의 추론(inference)에서 많이 쓰이는 낮은 정밀도의 연산을 수행하는 프로세서 DLA(Deep Learning Accelerator)를 탑재했습니다. 30W의 전력으로 30TOPS(trillion operations per second)의 INT8(8-bit 정수) 작업을 수행할 수 있습니다. 자비에르는 7월에 일부 고객에게 배송하며 9월부터 본격적으로 출하를 시작합니다.
이것은 NVIDIA가 주최하는 GPU 기술 컨퍼런스 GTC(GPU Technology Conference) 2017에서 발표된 내용입니다. GTC 2017은 미국 산호세에서 5월 8일부터 11일까지 개최됐으며, NVIDIA 젠슨황(Founder and CEO, NVIDIA)이 10일의 기조 연설에서 발표했습니다.
딥 러닝을 공략하는 NVIDIA의 전략
볼타와 자비에르에서 확실해진 NVIDIA의 전략 포인트는 3가지입니다. 우선 NVIDIA가 머신 러닝을 중시하는 방향으로 대폭 바뀌었다는 것입니다. NVIDIA는 몇 년 전부터 머신 러닝에 무게를 두고 있었으나 이번에는 머신 러닝에 최적화된 기능을 GPU에 탑재했습니다.
지금까지 나온 것과 비교하면 확장된 머신 러닝 하드웨어의 규모가 크기에 NVIDIA가 얼마나 중요하게 생각하는지를 엿볼 수 있습니다. 이 정도로 머신 러닝을 강화하면 더 이상 GPU라고 부르기도 어렵습니다.
그 다음은 머신 러닝의 최적화입니다. 고성능 GPU는 학습에 비중을 두고 SoC는 추론에 특화하도록 방향을 제시했습니다. 높은 성능의 학습 역량을 발휘하는 GPU와, 저전력 추론 전문 장치에 탑재하는 걸 목표로 한 SoC. 이렇게 두 방향으로 자사 제품을 진화시키려고 합니다.
세번째는 고성능 GPU와 SoC의 머신 러닝 기능의 구현 형태에 차이를 둔 것입니다. 고성능 GPU는 GPU 코어에서 머신 러닝 기능을 확장했습니다. 반면 SoC 쪽에선 GPU 코어와는 별도로 머신 러닝 가속 장치를 분리한 형태로 구현했습니다. 이 차이는 앞으로의 제품 개발 방향의 차이도 시사하고 있습니다.
또 NVIDIA는 놀랍게도 Xavier의 DLA (Deep Learning Accelerator)를 오픈 소스로 한다고 발표했습니다.
크기에 한계가 온 NVIDIA GPU
볼타 GV100는 진정한 자이언트 프로세서입니다. 다이 크기는 815제곱mm로 GTC 기조 연설에서 젠슨황은 "더 이상 큰 GPU를 만들 수 없다"고 말했는데 그건 사실입니다.
반도체 칩을 제조할 때 노광 공정에서 일정한 사각형 영역을 한번에 작업합니다. 반대로 말하면 그 사각형보다 더 큰 크기의 칩을 만들 수 없습니다. 그리고 현재 쓰는 크기는 33x26mm로 면적이 약 850제곱mm가 됩니다.
GV100은 가공 부분도 현재 기술에서 가능한 최대한의 칩을 씁니다. 트랜지스터 수는 210억개에 달하는데, 이는 초기 지포스 NV10의 약 900배입니다.
제조 공정은 TSMC의 12nm FinFET 프로세스입니다. 이 프로세스는 16nm 세대 프로세스에서 남는 부분을 줄이고 회로 설계, 셀 라이브러리를 축소해 밀도를 높인 공정입니다. 기술의 핵심은 이미 성숙한 16nm이기에 큰 칩을 제조할 수 있으리라 봅니다.
딥 러닝을 위한 Tensor 코어를 SM에 탑재
NVIDIA GPU 아키텍처의 GPU 코어 클러스터인 SM (Streaming Multiprocessor)은 GB100에서 총 80개가 있습니다. FP32 연산 유닛인 CUDA 코어는 총 5,120개입니다.
CUDA 코어의 수는 이전 세대의 파스칼 아키텍처 GP100이 3,584개니까 약 1.43배가 됩니다. 따라서 HPC (High Performance Computing) 등의 기존 워크로드 성능도 오릅니다.
볼타의 SM 아키텍처는 파스칼과 크게 다릅니다. 가장 큰 차이점은 각각의 SM에 8 유닛의 머신 러닝을 위한 연산 어레이인 텐서 코어(Tensor Core)를 탑재했다는 점입니다. 텐서 코어는 텐서 연산을 수행하는데 볼타는 4x4 행렬 연산을 지원합니다.
텐서 코어의 매트릭스는 16개 요소를 입력해 16개의 가중치를 곱해 그 결과를 더해 출력합니다. 볼타의 텐서 코어는 FP16 데이터끼리 곱셈에 FP32 덧셈도 수행합니다.
텐서 코어의 운영
텐서 코어로 딥 러닝 성능을 향상
볼타는 1개의 SM에 8개, GV100 전체에선 640개의 텐서 코어를 지닙니다. 각각의 텐서 코어가 64개의 병렬 연산을 수행할 수 있으니 1.4GHz 정도의 클럭에서 GV100의 FP16 기반 딥 러닝 연산은 120TFLOPS라는 엄청난 숫자를 냅니다.
현 세대의 GP100과 비교하면 딥 러닝 학습은 12배, 추론은 6배의 성능을 냅니다. 즉 NVIDIA는 1년 사이에 GPU의 딥 러닝 학습 성능을 12배로 끌어올린 셈입니다.
SM 아키텍처를 쇄신
텐서 코어를 확장하면서 볼타의 SM은 완전히 새로운 아키텍처를 쓰게 됐습니다. 볼타에서 1개의 SM은 4개의 쿼터에 분할됩니다. 각 쿼터에 FP32 유닛이 16개, FP64 유닛이 8개, 로드/스토어 유닛이 8개 배치됩니다.
명령 유닛은 NVIDIA의 SIMT(Single Instruction, Multiple Thread)로 배치됩니다. warp의 크기는 32스레드로 명령 유닛은 각 사이클마다 1warp로 1개의 명령을 발송합니다. 따라서 FP32 유닛은 2사이클에 걸쳐 하나의 warp를 실행합니다. 2개의 텐서 코어로 실행 가능한 양입니다.
또 정수 연산 유닛 명령의 발행 포트가 분리돼 부동소수점 유닛과 겹쳐 실행하는 것이 가능해졌습니다.
볼타는 메모리 계층 구조도 바뀌었습니다. 과거 2세대에서 NVIDIA GPU는 읽기 전용 L1 데이터 캐시 대신 L2에서 읽어들이는 구조였습니다. 그러나 볼타는 읽기/쓰기 L1 데이터 캐시가 부활하고 용량도 128KB로 커졌습니다. 이 L1은 일부 스크래치 패드처럼 공유 메모리를 쓸 수 있습니다.
볼타 GV100의 메모리는 HBM2로 파스칼 GP100보다 1.2배 빨라졌으며 메모리 대역폭은 900GB/s가 되었습니다. 또한 메모리 컨트롤러의 개선에 의해 메모리 실효 대역폭도 향상됩니다.
GV100는 DRAM 다이를 4개 적층한 4H로 16GB의 용량을 지니지만 8H에 32GB 용량도 고려합니다. 그러나 8H의 경우 순위가 2번째로 늦춰집니다.
칩 인터커넥트인 NVLink는 6링크로 늘어나 연결 딜ㄹ이를 28% 줄였습니다. 그 결과 1개의 다이에서 300GB/s의 대역폭을 냅니다. 링크 수가 늘어나니 직접 연결할 수 있는 GPU 수도 증가해 보다 큰 구성의 계산 노드 설계가 쉬워졌습니다.
또한 NVLink이 2.0이 되면서 하드웨어 커히런시 프로코톨을 지원합니다. 따라서 CPU와 GPU 사이에 가상 메모리 주소를 공유하는 통합 메모리에서 일관성을 지녀 지연 시간이 줄어듭니다.
스레드 제어가 크게 바뀌다
볼타 세대에선 스레드 실행 구조도 바뀝니다. 기존에는 1개의 warp 중 32 스레드가 프로그램 카운터 (PC)를 공유하고 마스크 레지스터에 의한 프레디케이션으로 컨트롤 플로우를 제어했습니다.
하지만 볼타에선 warp의 각각 스레드 레인이 저마다 PC를 갖게 되면서 개별적인 예약이 가능해졌습니다.
또 볼타는 GPU 코어 전체 작업 스케줄링도 유연하게 바뀌었습니다. GPU에 하드웨어 기반의 워크 할당 장치를 설치, GPU 코어의 실행 자원을 유연하게 낮은 지연 시간으로 작업을 할당할 수 있게 됐습니다.
이처럼 볼타는 GPU의 코어 아키텍처를 크게 확장했습니다. NVIDIA GPU의 마이크로 아키텍쳐 중엔 가장 큰 변화입니다. 특히 딥 러닝의 학습을 위한 텐서 유닛을 SM에 더한 건 결정적인 변화입니다. 덧붙여서 네이티브 명령 세트도 볼타 세대에서 새로 변했습니다.
NVIDIA는 딥 러닝으로 방향을 바꿨습니다. 현재 딥 러닝은 교육 단계에서 GPU가 확고한 위치를 구축해, 기존의 HPC (High Performance Computing) 시장뿐만 아니라 일반 데이터 센터까지 딥 러닝용으로 보급되기 시작했습니다.
NVIDIA는 인텔이나 AMD 등 다른 대형 CPU / GPU 제조사와 달리 이쪽 업계에선 상당히 우위에 있습니다. 그러나 인텔도 딥 러닝에 대한 전략을 빠르게 갖추고, AMD도 서버 시장에 재진입하며 GPU 컴퓨팅을 무기로 만드려 합니다. 또 TPU 같은 딥 러닝 프로세서도 앞으로 증가할 것으로 예상됩니다. NVIDIA는 자신들의 입지를 굳히기 위해 딥 러닝을 강화하는 방향으로 가는 것처럼 보입니다.