엔비디아 A100 GPU의 AI 성능이 달라진 이유는

엔비디아 암페어 아키텍처, TF32로 단정밀도 연산 가속화하고 코드 변경 없이 높은 정확성 유지한다
by NVIDIA Korea
0522 블로그-메인 이미지

인공지능(AI)을 제대로 이용하기 위해서는 여타 모든 컴퓨팅에서 그렇듯 수학을 잘 활용해야 합니다. 딥 러닝은 새롭게 뜨고 있는 신생분야이기 때문에 훈련과 추론 단계에서 어떤 분야의 수학을 적용해야 하는지에 대한 논쟁은 아직도 활발하게 진행되고 있죠.

지난 11월 블로그를 통해 단정밀도, 배정밀도, 반정밀도, 다중 정밀도, 혼합 정밀도 등 AI와 HPC에서 널리 사용되고 있는 연산 방식에 대한 차이를 설명했던 적이 있습니다. 최근 A100 GPU의 중심이 되는 암페어(Ampere) 아키텍처에 AI 분야에서 널리 사용되는 단정밀도 모델의 훈련 가속화를 위한 새로운 연산모드인 TF32(TensorFloat-32)이 도입됐습니다.

TF32는 AI와 특정 HPC 애플리케이션에서 핵심적으로 사용되는 텐서연산이라고도 불리는 행렬연산(matrix math) 처리를 위한 엔비디아 A100 GPU의 새로운 연산모드입니다. TF32는 A100 GPU의 텐서 코어(Tensor Core)에서 실행되며, 볼타(Volta) GPU의 단정밀도부동소수점연산(FP32)에 비해 최대 10배 빠른 속도를 제공할 수 있죠. 또한, A100에서 TF32와 구조적 희소성 기능을 결합하면 볼타 대비 최대 20배 성능을 향상할 수 있습니다.

새로운 연산방식 이해하기

먼저 TF32의 작동 방식과 사용 용도를 살펴볼까요?

연산 형식은 길이를 측정하는데 쓰는 자와 비슷한 점이 많습니다. 한 형식의 지수 내에서 비트(bit)의 수는 개체 크기를 측정할 수 있는 범위를 결정하는데요. 정밀도는 기수나 소수점 뒤에 있는 부동소수점 숫자에 해당하는 가수에 사용된 bit의 수에 따라 결정됩니다.

좋은 형식은 균형적입니다. 정밀도를 전달하기 위해서는 너무 많은 bit를 사용하지 않고 적정한 양의 bit를 사용해 처리속도를 늦추지 않고 메모리를 차지하지 않아야 하죠.

아래 차트는 TF32가 어떻게 텐서연산에서 균형을 맞춰 하이브리드 방식을 취했는지 나타내는데요.

이미지1
범위와 정확도 성능 측면에서 균형 잡힌 모습을 보여주는 TF32

TF32는 반정밀도(FP16) 수학과 동일한 10bit 가수를 사용하며 AI 워크로드에서 요구되는 정밀도를 충분히 충족시킵니다. 이와 동시에 TF32는 FP32와 동일한 8bit 지수를 사용하므로, 동일한 숫자 범위를 지원할 수 있습니다.

TF32는 이 조합을 통해 단정밀도 수학과 특히 딥 러닝과 많은 HPC 애플리케이션에서 핵심적인 역할을 하는 대규모 곱셈 누적 연산을 충분히 대체할 수 있습니다. 사용자는 엔비디아 라이브러리를 사용하는 애플리케이션으로 코드 변경없이 TF32의 이점을 활용할 수 있습니다. TF32 텐서 코어는 FP32 인풋에서 작동하며 FP32에서 결과를 도출합니다. 비행렬연산에서도 FP32를 사용하죠.

A100은 최대 성능을 내기위해 16bit 연산 기능이 강화돼 FP16과 BF16을 TF32의 2배 비율로 지원합니다. 사용자는 자동혼합정밀도(Automatic Mixed Precision)를 사용해 몇 줄의 코드만으로 2배 높은 성능을 얻을 수 있습니다.

혁신적인 성능을 내는 TF32

TF32는 가장 까다로운 대화형 AI 모델 중 하나인 BERT를 FP32 대비 6배 빨리 훈련시킵니다. 행렬연산에 의존하는 AI 훈련과 HPC 애플리케이션의 애플리케이션-레벨 결과는 워크로드에 따라 다를 것입니다. TF32의 정확성을 검증하기 위해 컴퓨터 비전부터 자연어 처리, 추천 시스템까지 다양한 애플리케이션 분야에서 TF32를 AI 네트워크를 훈련하는데 활용했습니다. 그 결과, TF32는 FP32와 동일한 수준의 수렴-정확도를 보였습니다.

이미지2
TF32는 BERT를 FP32 대비 6배 빨리 훈련시킨다

이에 뉴럴 네트워크의 핵심 연산을 가속화하는 cuDNN 라이브러리의 기본값으로 TF32를 채택했습니다. 또한 AI 프레임워크를 개발하는 오픈소스 커뮤니티와 협력해 A100 GPU에서도 TF32를 기본 교육 모드로 사용할 수 있도록 하고 있습니다. 개발자들은 6월부터 엔비디아 GPU 최적화 소프트웨어 허브인 엔비디아 GPU 클라우드(NGC)에서 TF32 지원 파이토치(PyTorch) 프레임워크 버전텐서플로우(TensorFlow) 프레임워크 버전을 사용할 수 있습니다.

텐서플로우 제품 관리 디렉터 케말 엘 무자 히드(Kemal El Moujahid)는 “TF32는 FP32 수준의 정확도를 유지하면서 AI 훈련과 추론용 애플리케이션의 성능을 획기적으로 개선합니다. 우리는 텐서플로우에서 TF32을 기본적으로 지원해 데이터 사이언티스트들이 코드를 변경하지 않아도 엔비디아 A100 텐서 코어 GPU에서 획기적으로 빠른 속도를 경험할 수 있도록 할 것입니다”라고 소감을 밝혔습니다.

파이토치 팀의 관계자는 “머신 러닝 연구원, 데이터 사이언티스트, 엔지니어는 솔루션 개발 시간이 단축되길 원합니다. TF32가 파이토치에 기본으로 통합되면, 엔비디아 암페어 아키텍처 기반 GPU를 사용할 때 FP32의 정확성을 유지하면서도 코드를 바꿀 필요없이 성능을 향상시킬 수 있습니다”라고 말했습니다.

HPC에서 ‘선형 솔버’를 가속화하는 TF32

반복행렬수학 연산 알고리즘인 선형 솔버(linear solver)라고 불리는 HPC 애플리케이션들도 TF32의 이점을 활용할 수 있습니다. 이는 지구 과학, 유체 역학, 헬스케어, 재료 과학, 원자력뿐 아니라 석유와 가스 탐사 등 광범위한 분야에서 사용됩니다.

FP32를 사용해 FP64 정밀도를 달성한 선형 솔버는 이미 30년 이상 사용됐습니다. 작년에 실시한 국제열핵융합실험로(ITER) 융합반응연구에서 혼합정밀법이 엔비디아 FP16 텐서 코어를 이용한 솔버들의 처리속도를 3.5배 향상시켰다는 점이 입증됐습니다. 이 연구에 사용된 동일한 기술을 통해 서밋(Summit) 슈퍼컴퓨터는 HPL-AI 벤치마크에서 성능이 3배 향상된 된 것으로 나타났습니다.

신형 솔버 외에도 HPC의 다른 도메인은 FP32 행렬연산을 사용합니다. 앞으로도 업계와 협업을 통해 현재 FP32을 사용하고 있는 곳에 TF32의 적용 사례를 늘려가며 연구할 계획입니다.