Computer Vision / Video Analytics

NVIDIA H100 GPU로 MLPerf 트레이닝 기록 경신

Reading Time: 8 minutes

빠르게 확장되고 있는 AI 기반 애플리케이션의 중심에는 강력한 AI 모델이 있습니다. 이러한 모델을 배포하려면 먼저 엄청난 양의 AI 컴퓨팅 성능이 필요한 프로세스를 통해 모델을 학습시켜야 합니다. 또한 AI 학습은 고품질의 결과를 보장하기 위해 새로운 데이터로 모델을 지속적으로 재학습하는 지속적인 프로세스입니다. 모델 학습 속도가 빨라지면 AI 기반 애플리케이션을 더 빠르게 배포하여 가치 창출 시간을 단축할 수 있습니다.

MLPerf 벤치마크1 는 널리 사용되는 AI 사용 사례 전반에서 표준화되고 입증된 AI 성능 측정 기준입니다. MLPerf Training v3.0은 컴퓨터 비전, 언어, 추천 시스템 등을 포괄하는 AI 훈련 중심의 MLPerf 테스트 제품군의 최신 버전입니다. 최신 MLPerf Training v3.0 제품군은 생성형 AI를 대표하는 GPT-3 175B 모델에 기반한 새로운 대규모 언어 모델(LLM) 테스트를 통합하도록 업데이트되었습니다. 또한 최신 AI 기반 추천 기능을 더 잘 표현하기 위해 훨씬 더 큰 데이터 세트로 업데이트된 DLRM 테스트가 포함되어 있습니다.

MLPerf 트레이닝 v3.0에서 NVIDIA H100 텐서 코어 GPU 기반의 NVIDIA AI 플랫폼은 가속기당 최고 성능을 달성하고 모든 벤치마크에서 대규모로 가장 빠른 트레이닝 시간을 제공하면서 새로운 성능 기록을 세웠습니다.

또한 MLPerf 트레이닝 v3.0에 사용된 전체 소프트웨어 스택은 공개적으로 사용할 수 있습니다. NVIDIA 제출작과 NVIDIA가 CoreWeave와 함께 만든 공동 제출작 모두 MLPerf의 사용 가능한 카테고리에서 만들어졌습니다. 모든 NVIDIA 출품작은 MLPerf 트레이닝 v2.1의 NVIDIA H100 프리뷰 출품작과 비교하여 비슷하거나 향상된 성능을 달성했습니다.

이 포스팅에서는 MLPerf 트레이닝 v3.0에서 NVIDIA AI 플랫폼과 H100 텐서 코어 GPU가 제공하는 성능을 자세히 살펴봅니다.

기록적인 결과를 제공하는 NVIDIA AI 및 H100 텐서 코어 GPU

불과 6개월 전에 MLPerf 트레이닝에 첫 선을 보인 NVIDIA H100 텐서 코어 GPU는 모든 MLPerf 트레이닝 v3.0 워크로드에서 새로운 가속기당 성능 기록을 세웠습니다. 이번 라운드에서 NVIDIA 싱글 노드 DGX H100의 결과를 살펴보면, 소프트웨어 개선만으로 동일한 하드웨어에서 6개월 만에 성능이 최대 17%까지 향상되었습니다. MLPerf 트레이닝 v2.1의 NVIDIA A100 텐서 코어 GPU 제출과 비교했을 때, 최신 H100 제출은 가속기당 최대 3.1배 더 높은 성능을 제공했습니다.

그림 1. MLPerf 트레이닝 v2.1에서 NVIDIA A100의 상대적인 가속기당 성능과 MLPerf 트레이닝 v2.1 및 v3.0에서 NVIDIA H100의 상대적인 가속기당 성능. MLPerf 결과 ID: 2.1-2091, 2.1-2062, 2.1-2059, 2.1-2061, 2.1-2060, 3.0-2062, 3.0-2064.

이번 라운드에서 NVIDIA는 최대 768개의 H100 GPU가 탑재된 NVIDIA “Pre-Eos” AI 슈퍼컴퓨터를 사용하여 결과를 제출했습니다. 또한, NVIDIA는 클라우드 서비스 제공업체 CoreWeave와 함께 최대 3,584개의 H100 GPU와 함께 공개적으로 사용 가능한 NVIDIA HGX H100 인프라를 사용하여 공동 제출했습니다.

이 제출물에서 H100 GPU가 탑재된 NVIDIA AI 플랫폼은 새로운 LLM 워크로드를 포함한 모든 워크로드에서 대규모 훈련 시간 신기록을 세웠습니다.

벤치마크최대 규모 기록(분)
대규모 언어 모델(GPT-3)10.9
자연어 처리(BERT) 0.13 (8초)
권장 사항(DLRMv2)1.61
객체 감지, 헤비급(마스크 R-CNN) 1.471.47
물체 감지, 경량(RetinaNet)1.51
이미지 분류(ResNet-50 v1.5) 0.18 (11초)
이미지 분할(3D U-Net)0.82 (49초)
음성 인식(RNN-T)1.65
표 1. NVIDIA 플랫폼 및 H100 텐서 코어 GPU에서 설정된 최대 규모의 훈련 시간 기록.
MLPerf 결과 ID: 3.0-2002, 3.0-2075, 3.0-2001, 3.0-2077, 3.0-2066, 3.0-2070, 3.0-2003, 3.0-2065.


다음 섹션에서는 이러한 결과의 배경이 된 몇 가지 소프트웨어 최적화에 대해 자세히 설명합니다.

MLPerf 결과를 뒷받침하는 NVIDIA 소프트웨어

NVIDIA MLPerf Training v3.0 제출에는 기존 및 업데이트된 MLPerf Training 워크로드에서 성능을 향상시키고 새로운 LLM 테스트에서 우수한 결과를 얻을 수 있도록 하는 수많은 최적화가 포함되어 있습니다.

대규모 언어 모델

새로 추가된 LLM 워크로드는 1,750억 개의 파라미터가 포함된 최첨단 대규모 언어 모델을 나타냅니다. 이 모델을 훈련하려면 컴퓨팅, GPU 메모리 대역폭, 인터노드 및 인트라노드 상호 연결 기능 등 AI 슈퍼컴퓨터의 모든 부분에 스트레스를 주기 때문에 풀 스택 장인 정신이 필요합니다.

실제로 워크로드가 워낙 까다롭기 때문에 이 워크로드에 대한 가장 작은 규모의 NVIDIA 제출물에서는 Pre-Eos 시스템에서 512개의 최신 H100 텐서 코어 GPU를 사용하여 64.3분의 훈련 시간을 달성했습니다. 동일한 Pre-Eos 시스템에서 768개의 GPU로 확장하면 훈련 시간이 44.8분으로 단축되어 거의 선형에 가까운 확장 효율을 달성했습니다.

또한 NVIDIA와 CoreWeave는 768-GPU, 1,536-GPU, 3,584-GPU 등 다양한 규모에서 CoreWeave의 NVIDIA HGX H100 인프라를 사용하여 LLM 워크로드에 대한 공동 제출을 수행했습니다. CoreWeave의 HGX H100 인프라에서 768-GPU로 제출된 768-GPU 제출물은 768-GPU Pre-Eos 제출물과 거의 동일한 성능을 제공하여 NVIDIA AI 플랫폼이 온프레미스 및 상용 클라우드 인스턴스 모두에서 뛰어난 성능을 제공한다는 것을 입증했습니다.

그림 2. NVIDIA AI 플랫폼에서 다양한 규모에 따른 상대적인 MLPerf LLM 트레이닝 성능. MLPerf 결과 ID: NVIDIA 3.0-2076, NVIDIA+CoreWeave 3.0-2004, NVIDIA+CoreWeave 3.0-2003.

또한, NVIDIA와 CoreWeave는 3,584개의 GPU에 대한 LLM 결과를 제출하여 10.9분의 훈련 시간을 기록했습니다. 이는 H100에서 제출된 768개의 GPU에 비해 4배 이상 빨라진 것으로, 수백 개에서 수천 개의 H100 GPU로 이동하는 경우에도 89%의 성능 확장 효율성을 보여주었습니다.

MLPerf LLM 제출에 사용된 소프트웨어 스택에는 NVIDIA 트랜스포머 엔진 라이브러리 및 NVIDIA cuBLAS 라이브러리와 결합된 NVIDIA NeMo 프레임워크와 이러한 라이브러리를 통해 NVIDIA H100 GPU에서 레이어별로 8비트 부동 소수점 정밀도(FP8)를 지능적으로 사용할 수 있는 기능이 포함되어 있습니다.

BERT

이전 라운드와 비교했을 때, NVIDIA는 BERT NLP 워크로드에서 가속기당 H100 성능을 17% 향상시켰습니다. 또한 NVIDIA와 CoreWeave는 최대 3,072개의 H100 GPU에서 BERT 결과를 제출하여 0.134분(단 8초)이라는 신기록적인 훈련 시간을 달성했습니다.

공개적으로 사용 가능한 NVIDIA 소프트웨어에서 이러한 성능을 달성하기 위해 cuDNN 라이브러리는 NVIDIA 트랜스포머 엔진 라이브러리에 사용되는 퓨즈 플래시 어텐션에 FP8 I/O 지원을 도입했습니다. 또한 cuDNN 퓨즈 플래시 어텐션은 패딩 토큰에 대한 컴퓨팅 낭비 없이 BERT가 높은 효율로 훈련할 수 있도록 플래시 어텐션 I/O를 위한 패킹된 시퀀스 형식을 지원합니다. cuDNN 퓨즈드 플래시 어텐션 및 해당 문서에 대한 자세한 내용은 cuDNN 개발자 가이드를 참조하세요.

이번 라운드에서 BERT를 위해 수행된 주요 성능 최적화의 요약은 다음과 같습니다:

데이터 전처리

대규모로 모델을 학습시킬 때 CPU에서 데이터 전처리를 수행하면 상당한 오버헤드가 발생할 수 있습니다. 이러한 전처리의 성능 영향을 최소화하기 위해 다음 반복을 위한 데이터 전처리를 현재 반복에서 수행 중인 계산과 중복하여 반복 시간을 3% 단축했습니다.

더욱 향상된 성능의 난수 생성

BERT 멀티 헤드 어텐션에서는 멀티 헤드 어텐션의 연산이 단일 커널로 통합되면 드롭아웃 레이어의 온라인 난수 생성에 병목 현상이 발생하기 시작합니다. 이러한 현상은 최근 NVIDIA GPU 아키텍처의 텐서 코어 처리량이 난수 생성 속도보다 빨라지면서 더욱 두드러지게 나타납니다.

난수 생성 병목 현상을 줄이기 위해 이번 MLPerf 라운드에서는 더 낮은 정밀도의 정수 형식(32비트 대신 8비트)을 비교하는 최적화를 도입하여 난수 생성 처리량을 4배 증가시켰습니다. 특히 난수 생성기가 생성하는 128비트 정수를 32비트 정수 4개로 변환하는 대신 8비트 정수 16개로 변환합니다. 이러한 최적화를 통해 멀티헤드 주의 블록에서 난수 생성의 오버헤드가 크게 감소하고 단일 노드 제출 애플리케이션의 엔드투엔드 성능이 4% 향상됩니다. 이 최적화는 모델의 정확도나 출력 품질에는 영향을 미치지 않습니다.

CUDA 그래프

이번 제출에서는 멀티 헤드 어텐션에서 난수 생성기의 시드 및 오프셋 변수를 신중하게 처리해야 하는 cuDNN 융합 플래시 어텐션과 트랜스포머 엔진 라이브러리의 그래프 캡처 지원을 통해 8개의 GPU를 사용한 훈련과 같은 대규모 배치 시나리오에 CUDA 그래프를 사용했습니다.

최적화를 통해 FP16과 FP8 포맷 간의 변환이 감소했습니다. 또한, cuBLAS 라이브러리의 최적화를 통해 GEMM 알고리즘 휴리스틱을 개선하고 H100에 대한 GEMM과 gelu 연산의 융합을 지원함으로써 엔드투엔드 성능이 5% 향상되었습니다. 이러한 최적화를 통해 MLPerf Training v2.1의 H100 프리뷰 제출에 비해 BERT에서 단일 노드 성능이 17% 향상되었습니다.

ResNet-50 v1.5

MLPerf 트레이닝 v3.0에서 NVIDIA와 CoreWeave는 최대 3,584개의 H100 텐서 코어 GPU를 사용하여 제출하여 0.183분(11초 미만)의 신기록을 세웠습니다. 또한 소프트웨어 개선을 통해 가속기당 H100 성능은 이전 제출작에 비해 8.4% 향상되었습니다.

이번 라운드에서 ResNet-50 v1.5 워크로드의 주요 개선 사항은 다음과 같습니다:

NVSHMEM으로 더욱 빨라진 GroupBatchNorm

이번 라운드에서 유니티는 NVIDIA NVSHMEM 라이브러리를 사용하여 GPU 간 통신 지연 시간을 5배 이상 줄인 더 빠른 GroupBatchNorm 커널을 구현했습니다. 또한 이 새로운 커널은 고대역폭의 GPU 간 NVIDIA NVLink 인터커넥트를 활용하여 통신을 가속화할 수 있습니다. 이러한 최적화를 통해 가장 큰 규모의 제출에서 엔드투엔드 속도가 6% 향상되었습니다.

cuDNN 커널

NVIDIA cuDNN 팀은 NVIDIA H100 GPU의 훨씬 빠른 텐서 코어 처리량을 활용하는 크게 향상된 컨볼루션 커널을 개발했습니다. 이 커널은 단일 노드 및 효율적인 규모의 제출 모두에서 엔드투엔드 성능을 5% 향상시켰습니다.

RetinaNet

NVIDIA는 최대 768개의 NVIDIA H100 텐서 코어 GPU를 사용하여 RetinaNet에 결과를 제출하여 단 1.51분이라는 벤치마크의 새로운 성능 기록을 달성했습니다. 가속기당 성능도 이전 제출에 비해 향상되었습니다.

이러한 결과를 달성하기 위한 이번 라운드의 최적화는 다음과 같습니다:

옵티마이저에서 FP32 마스터 가중치 지원

MLPerf Training v3.0의 NVIDIA RetinaNet 제출에서는 PyTorch AMP(자동 혼합 정밀도)를 사용하여 NVIDIA H100 GPU가 FP16과 같은 낮은 정밀도 데이터 유형에 제공하는 더 높은 처리량을 활용했습니다.

그러나 모델 파라미터는 여전히 FP32로 유지되므로 PyTorch AMP는 동적 유형 캐스팅 연산을 삽입하여 낮은 정밀도로 텐서 연산을 수행하면서 FP16과 FP32 데이터 유형 간에 변환합니다.

이러한 오버헤드를 피하기 위해 옵티마이저는 “마스터 가중치”라고 하는 별도의 모델 파라미터 세트를 FP32에 저장합니다. 이제 모델 파라미터를 FP16으로 완전히 캐스팅할 수 있으므로 동적 유형 캐스팅 연산을 삽입하지 않아도 됩니다. 옵티마이저는 백워드 패스 중에 얻은 FP16 그라데이션을 사용하여 마스터 가중치를 업데이트할 수 있습니다. 이 최적화를 통해 훈련 성능이 10% 향상되었습니다.

데이터 전처리

NVIDIA RetinaNet 제출은 이미지, 비디오 및 음성을 디코딩하고 증강하여 딥 러닝 애플리케이션을 가속화하기 위한 휴대용 오픈 소스 라이브러리인 NVIDIA 데이터 로딩 라이브러리(DALI)를 사용합니다.

MLPerf Training v3.0에서는 데이터 세트의 가변 크기 이미지의 데이터 로딩과 전처리에 모두 DALI를 사용했습니다. NVIDIA Nsight 시스템을 사용하여 대규모 트레이닝 실행을 프로파일링한 결과, 트레이닝 프로세스의 각 프로세스마다 다른 시점에 DALI의 메모리 재할당 작업이 발생하여 트레이닝 반복이 지연되는 것을 관찰했습니다.

DALI 이미지 디코더의 메모리 관리 작업은 지터의 주요 원인 중 하나였습니다. 데이터 세트에서 가장 큰 이미지 크기에 대한 힌트를 제공함으로써 이러한 문제를 제거하여 성능을 10% 향상시키는 최적화를 달성했습니다.

cuDNN의 최적화

cuDNN 라이브러리는 NVIDIA H100 4세대 텐서 코어를 더 잘 사용할 수 있는 향상된 커널로 업데이트되었습니다. 이러한 커널은 특히 대규모 성능의 핵심인 작은 크기의 컨볼루션에 대한 유니티 레티나넷 제출물의 컨볼루션 성능을 향상시켜 이전 제출물에 비해 최대 7.5% 더 높은 훈련 처리량을 제공합니다.

3D U-Net

432개의 NVIDIA H100 텐서 코어 GPU를 사용한 결과를 제출하여 0.82분(49초)의 훈련 시간으로 벤치마크 신기록을 달성했습니다. H100의 가속기당 성능도 이전 라운드에 비해 8.2% 향상되었습니다.

대규모에서 우수한 성능을 달성하기 위해 더 빠른 GroupBatchNorm 커널이 핵심 최적화 중 하나였습니다.

가장 큰 규모의 3D U-Net 제출에서 신경망의 인스턴스 정규화 작업은 4개의 GPU에서 텐서 평균과 분산을 줄여야 했습니다. 인스턴스 정규화를 구현하는 데 더 빠른 GroupBatchNorm 커널을 사용함으로써 1.5%의 성능 향상을 달성했습니다.

Mask R-CNN

이번 라운드에서 NVIDIA는 최대 384개의 H100 GPU를 사용한 Mask R-CNN 결과를 제출하여 1.47분이라는 새로운 훈련 시간을 기록했습니다. 또한 소프트웨어 최적화를 통해 가속기당 성능도 이전 제출작에 비해 6.1% 향상되었습니다.

이번 라운드의 최적화는 강력한 H100 GPU의 성능을 더 잘 활용할 수 있도록 CPU 병목현상을 줄이는 데 중점을 두었습니다.

더 빨라진 평가

평가 프로세스는 추론 결과가 단일 순위로 취합된 후 점수를 계산합니다. H100 GPU는 이전 세대인 A100 GPU보다 훨씬 빠르게 훈련할 수 있기 때문에 평가는 상당한 성능 병목 현상이 발생했습니다.

이 라운드에서는 각 개별 추론 결과를 단일 순위로 수집하기 전에 각 이미지에 대한 단일 예측에 해당하는 JSON으로 인코딩합니다. 결과가 수집된 후에는 추론 결과가 채점 로직을 통과할 때 추론 결과를 디코딩하고 인코딩하는 대신 초기 JSON 인코딩에서 문자열을 연결하여 추론 결과 모음을 위한 JSON 문자열을 형성합니다. 이 접근 방식은 인코딩 및 디코딩보다 훨씬 빠르며 평가 속도가 두 배로 빨라집니다.

더 빨라진 주석

이전 라운드에서는 각 샘플에 대한 대상 정보를 포함하는 주석이 매우 큰 JSON 파일에서 로드되었는데, 이 과정에서 최대 5초가 걸렸습니다. 주석을 직렬화된 텐서로 저장하고 로드함으로써 시작 시간을 80% 이상 단축했습니다.

주석이 학습에 사용되려면 먼저 변환을 거쳐야 합니다. 각 이미지에 대해 이러한 변환을 독립적으로 수행하는 대신 모든 이미지가 동일한 변환을 거치므로 단일 글로벌 커널로 모든 변환을 수행했습니다. 이 커널은 로드 중에 한 번 호출되고 각 에포크가 시작될 때마다 반복됩니다.

이 최적화를 통해 CPU 작업량을 20% 가까이 줄였습니다. 마스크 R-CNN은 CPU에 제한이 있었기 때문에 훈련 성능이 거의 20% 향상되었습니다.

더 많은 CUDA 그래프

이전 라운드에서는 손실 계산을 제외한 모든 것을 CUDA 그래프로 표시했습니다. 손실 계산 코드가 CPU에 제한되어 있기 때문에 손실 계산이 전체 단계 시간의 40% 이상을 차지하는 것을 관찰했습니다. 전체 모델을 CUDA 그래프화함으로써 훈련 처리량을 30% 이상 개선했습니다.

DLRM_DCNv2

DLRM_DCNv2는 MLPerf Training v3.0의 새로운 벤치마크입니다. 다음과 같은 업데이트로 이전 DLRM 벤치마크를 대체합니다:

제출물에서는 다양한 샤딩 전략을 지원하고 서로 다른 임베딩 샤드와 관련된 임베딩 작업을 수평적으로 융합하여 뛰어난 성능을 제공하는 NVIDIA Merlin HugeCTR임베딩 컬렉션을 사용했습니다.

스케일아웃 트레이닝의 경우 네트워크 패브릭의 계층적 특성을 활용하기 위해 계층적 임베딩 전략을 채택했습니다. 이 접근 방식은 다음과 같은 이점을 가져다주었습니다:

  1. 동일한 노드에서 임베딩 벡터는 먼저 NVIDIA NVLink 연결을 활용하여 노드 간 GPU를 연결하는 InfiniBand 네트워킹을 통해 전송해야 하는 바이트 수를 줄임으로써 감소됩니다.
  2. 그런 다음 감소된 임베딩 벡터를 대상 GPU와 동일한 인피니밴드 레일을 공유하는 GPU에 배치하여 레일 최적화 시스템에서 전송 지연 시간을 최소화합니다.

NVIDIA 제출물에서는 성능과 유연성을 위해 임베딩 컬렉션에 입력 분배기라는 모듈을 사용했습니다. 이 모듈은 데이터 리더의 데이터 병렬 입력을 임베딩 작업에 필요한 모델 병렬 입력으로 변환합니다. 입력 분포와 관련된 트래픽 양을 줄이기 위해 카테고리 필터링이 사용되어 각 GPU에 필요한 카테고리만 전송합니다. 또한 입력 데이터를 미리 가져와 다음 반복의 입력 분포가 현재 반복과 겹치도록 분산하여 훈련 처리량을 높입니다.

MLPerf 트레이닝 v3.0의 주요 특징

NVIDIA AI 플랫폼은 MLPerf 트레이닝 v3.0에서 기록적인 성능을 제공했으며, ResNet-50 및 BERT와 같은 성숙한 네트워크 트레이닝부터 GPT-3 175B와 같은 최첨단 LLM 트레이닝에 이르기까지 광범위한 워크로드에 대한 NVIDIA H100 GPU 및 NVIDIA AI 플랫폼의 탁월한 성능을 강조했습니다. 공개적으로 사용 가능한 NVIDIA HGX H100 인프라를 사용하여 CoreWeave와 공동으로 제출한 이 논문은 NVIDIA 플랫폼과 H100 GPU가 공개적으로 사용 가능한 클라우드 인프라에서 매우 큰 규모로 뛰어난 성능을 제공한다는 것을 보여주었습니다.

NVIDIA 플랫폼은 최고의 성능과 최고의 범용성을 제공하며 어디서나 사용할 수 있습니다. NVIDIA MLPerf 제출에 사용된 모든 소프트웨어는 MLPerf 리포지토리에서 사용할 수 있으므로 이러한 결과를 재현할 수 있습니다. 이러한 결과를 얻기 위해 사용된 모든 NVIDIA AI 소프트웨어는 엔터프라이즈급 소프트웨어 제품군인 NVIDIA AI Enterprise에서도 사용할 수 있습니다.

1MLPerf 이름 및 로고는 미국 및 기타 국가에서 MLCommons Association의 상표입니다. 모든 권리 보유. 무단 사용은 엄격히 금지됩니다. 자세한 내용은 www.mlcommons.org 참조.

관련 리소스

Discuss (0)

Tags

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다