- Nvidia가 10년간 GPU 성능을 1000배 올리게 만든 4가지 요소
- Chief Scientist인 Bill Dally가 IEEE Hot Chips 2023 키노트에서 한장의 슬라이드로 설명
Number Representation: 16배
- "대체로 우리가 얻은 가장 큰 이점은 숫자 표현이 향상된 것"
- 이 숫자들은 신경망의 주요 매개변수를 의미함
- 이 매개변수중 하나는 가중치(Weights)이고, 또 다른 매개변수는 활성화(Activations)
- 가중치: 모델의 뉴런간 연결 강도
- 활성화: 뉴런에서 가중치가 적용된 입력의 합을 곱하여 활성화 여부를 결정하고 다음 레이어로 정보를 전파하는 것
- P100 이전의 Nvidia GPU는 이런 가중치를 단정밀도 부동 소수점(single precision floating-point) 숫자를 사용하여 표현했음
- IEEE 754 표준에 의해서 정의된 이 숫자는 길이가 32bit로, 23비트는 분수를 나타내고, 8비트는 분수에 적용되는 지수역할을 하며, 1비트는 숫자의 부호로 사용됨
- 하지만 머신러닝 연구자들은 많은 계산에서 덜 정확한 숫자를 사용하는게 가능하며, 그래도 신경망이 여전히 정확한 답을 제시할수 있다는 것을 알게됨
- 이렇게 더 적은 수의 비트를 처리하게 되면 머신 러닝의 주요 계산(곱셈 및 누적)을 수행하는 로직을 더 작고 효율적으로 만들 수 있음
- 그래서 Nvidia는 P100에서 FP16을 사용하여 그 수를 절반으로 줄임. 구글은 bfloat16 이라는 자체 버전도 내놓았음
- 둘간의 차이는 정밀도를 제공하는 분수 비트와 범위를 제공하는 지수 비트의 상대적인 숫자 차이
- bfloat16 은 FP32와 동일한 수의 지수 비트를 가지므로 두 형식 간에 전환이 쉬움
- 오늘날의 최신 GPU인 H100은 8비트 숫자를 사용하여 ChatGPT 및 기타 LLM 같은 대규모 트랜스포머 신경망의 특정부분을 수행 가능
- 하지만 Nvidia는 이게 모든 경우에 적용되는 one-size-fits-all 솔루션은 아니라는 것을 발견
- 예를 들어, Nvidia의 Hopper GPU 아키텍처는 실제로 두가지 다른 FP8 포맷을 사용하여 계산을 함
- 하나는 정확도가 약간 더 높고, 다른 하나는 범위가 약간 더 넒음
- Nvidia의 특별한 소스는 언제 어떤 형식을 사용해야 하는지 아는 것
- Dally와 그의 팀은 더 적은 비트에서 더 많은 AI를 짜내기 위한 온갖 흥미로운 아이디어를 가지고 있음
- 그리고 부동 소수점 시스템이 이상적이지 않다는 것은 분명함
- 주요 문제중 하나는 숫자가 크든 작든 상관없이 부동 소수점 정확도가 꽤 일관적이라는 것
- 하지만 신경망의 매개변수는 큰 숫자를 사용하지 않고 0 주위에 모여 있음
- 따라서 Nvidia의 R&D 초점은 숫자를 숫자를 0에 가깝게 더 정확하게 표현할 수 있는 효율적인 방법을 찾는 것
Complex Instructions: 12.5배
- "명령어를 가져오고 디코딩하는 데 드는 오버헤드는 간단한 산술 연산을 수행하는 것보다 몇 배나 높음"
- 예를 들어 곱셈중 한가지는 연산 자체에 드는 1.5 피코줄(picojoules)의 20배에 달하는 오버헤드를 소비함
- 일련의 명령이 아닌 단일 명령으로 큰 계산을 수행하도록 GPU를 설계함으로써 Nvidia는 큰 이득을 얻었음
- 여전히 오버헤드가 있지만 복잡한 명령을 사용하면 더 많은 수학을 통해 비용을 상각할 수 있음
- 예를 들어, 복잡한 명령인 IMMA(integer matrix multiply and accumulate, 정수 행렬 곱셈 및 누산)의 오버헤드는 수학 에너지 비용의 16%에 불과
Moore’s Law: 2.5배
- 무어의 법칙의 진전을 유지하는 것은 수십억 달러의 투자와 매우 복잡한 엔지니어링, 그리고 수많은 국제적 불안이 수반됨
- 그러나 이는 Nvidia의 GPU 성능 증가의 일부임
- Nvidia는 가장 진보된 제조 기술을 지속적으로 활용해 왔음
- H100은 TSMC의 N5(5나노미터) 공정으로 제작되었으며 칩 파운드리는 2022년 말에야 차세대 N3의 초기 생산을 시작했음
Sparsity: 2배
- 훈련 후에는 신경망에 애초에 존재하지 않았어야 할 뉴런이 많이 남게 됨
- 일부 신경망의 경우 "뉴런의 절반 이상을 제거해도 정확도를 잃지 않을 수 있음"
- 이러한 뉴런의 가중치 값은 0이거나 거의 0에 가깝기 때문에 출력에 기여하지 않으며, 계산에 포함시키는 것은 시간과 에너지 낭비일 뿐
- 계산 부하를 줄이기 위해 이러한 네트워크를 "희소(Sparse)"하게 만드는 것은 까다로운 작업
- 그러나 H100의 전신인 A100을 통해 Nvidia는 구조화된 희소성(Structured Sparsity)이라고 부르는 기능을 도입
- 이 하드웨어는 가능한 정리 이벤트 4개 중 2개를 강제로 발생시켜 새로운 더 작은 행렬 계산으로 이어질 수 있게 함
- "희소성 문제는 아직 끝나지 않았음" "우리는 활성화를 통해 무언가를 해야 하며 가중치에서도 더 큰 희소성을 가질 수 있음"