AI 성능의 숨은 영웅, FP16, BF16, FP8

AI의 언어들


인공지능 모델을 학습시킬 때 데이터를 어떤 형식으로 표현하느냐가 엄청난 차이를 만들어냅니다. 바로 부동소수점 표현 방식인데요. FP32, FP16, BF16, FP8 같은 것들 말이에요. 숫자 뒤에 붙은 숫자는 비트 수를 나타내는데, 작을수록 덜 정확하지만 속도는 더 빠르다고 보시면 됩니다.


먼저 FP16과 FP32를 비교해 볼까요? FP32는 32비트로 숫자를 표현하기 때문에 정밀도가 굉장히 높아요. 대신 연산 속도는 느리고 메모리도 두 배나 잡아먹죠. 반면에 FP16은 16비트만 쓰기 때문에 메모리 사용량이 반토막 나고 속도는 더 빨라져요. 근데 정밀도가 떨어지다 보니 학습이 불안정해질 위험이 좀 있어요.


그래서 등장한 게 바로 BF16이에요. BF16도 FP16처럼 16비트를 쓰지만, 내부적으로 지수 부분에 더 많은 비트를 할당해서 표현할 수 있는 숫자 범위를 FP32 수준으로 맞췄어요. 덕분에 오버플로우 걱정은 덜 하면서도 속도와 메모리 효율은 그대로 가져갈 수 있게 된 거죠.


최근에는 FP8이라는 신무기까지 등장했어요. 무려 8비트만 가지고 부동소수점을 표현하는 건데, 정밀도야 엄청 떨어지겠지만 그만큼 속도는 엄청 빨라진다고 해요. 아직 실험 단계긴 한데 벌써부터 업계에서는 FP8에 대한 기대가 뜨겁습니다.


1709770809-twitter-post-20.jpg


물론 무조건 비트 수를 줄인다고 좋은 건 아니에요. 학습 정확도가 떨어질 수 있으니까요. 그래서 요즘은 FP32와 FP16, 또는 FP16와 BF16을 적절히 섞어쓰는 혼합 정밀도(Mixed Precision) 학습이 각광받고 있어요. NVIDIA의 Tensor Core 같은 하드웨어는 이런 혼합 연산을 아주 잘 처리하도록 설계되어 있죠.


공개된 자료를 보면 OpenAI는 초거대 모델을 학습시킬 때 다양한 정밀도를 적재적소에 사용한다고 해요. 데이터 병렬화, 모델 병렬화 같은 병렬 처리 기술도 총동원하고요. 딥시크(DeepSeek)는 한발 더 나가서 과감하게 FP8 혼합 정밀도 학습을 도입했다고 합니다. FP16 대비 연산 효율은 2배, 메모리 사용량은 반으로 줄였다니 대단하네요.



New-Hopper-FP8-Precisions-625x340.jpg



결국 부동소수점 표현 방식의 선택은 정확도와 효율 사이의 줄타기라 할 수 있어요. 최첨단 AI 기업들은 하드웨어 특성을 꿰뚫어 보면서 최적의 균형점을 찾아가는 중인 것 같아요. 앞으로도 이런 저비트 연산의 진화가 AI 학습의 속도를 더욱 가속할 것 같습니다. 여러분은 어떤 부동소수점 표현 방식이 AI의 미래를 이끌 것 같나요? FP8의 가능성에 한번 배팅해 볼까요?





keyword
수요일 연재