AI의 언어들
인공지능 모델을 학습시킬 때 데이터를 어떤 형식으로 표현하느냐가 엄청난 차이를 만들어냅니다. 바로 부동소수점 표현 방식인데요. FP32, FP16, BF16, FP8 같은 것들 말이에요. 숫자 뒤에 붙은 숫자는 비트 수를 나타내는데, 작을수록 덜 정확하지만 속도는 더 빠르다고 보시면 됩니다.
먼저 FP16과 FP32를 비교해 볼까요? FP32는 32비트로 숫자를 표현하기 때문에 정밀도가 굉장히 높아요. 대신 연산 속도는 느리고 메모리도 두 배나 잡아먹죠. 반면에 FP16은 16비트만 쓰기 때문에 메모리 사용량이 반토막 나고 속도는 더 빨라져요. 근데 정밀도가 떨어지다 보니 학습이 불안정해질 위험이 좀 있어요.
그래서 등장한 게 바로 BF16이에요. BF16도 FP16처럼 16비트를 쓰지만, 내부적으로 지수 부분에 더 많은 비트를 할당해서 표현할 수 있는 숫자 범위를 FP32 수준으로 맞췄어요. 덕분에 오버플로우 걱정은 덜 하면서도 속도와 메모리 효율은 그대로 가져갈 수 있게 된 거죠.
최근에는 FP8이라는 신무기까지 등장했어요. 무려 8비트만 가지고 부동소수점을 표현하는 건데, 정밀도야 엄청 떨어지겠지만 그만큼 속도는 엄청 빨라진다고 해요. 아직 실험 단계긴 한데 벌써부터 업계에서는 FP8에 대한 기대가 뜨겁습니다.
물론 무조건 비트 수를 줄인다고 좋은 건 아니에요. 학습 정확도가 떨어질 수 있으니까요. 그래서 요즘은 FP32와 FP16, 또는 FP16와 BF16을 적절히 섞어쓰는 혼합 정밀도(Mixed Precision) 학습이 각광받고 있어요. NVIDIA의 Tensor Core 같은 하드웨어는 이런 혼합 연산을 아주 잘 처리하도록 설계되어 있죠.
공개된 자료를 보면 OpenAI는 초거대 모델을 학습시킬 때 다양한 정밀도를 적재적소에 사용한다고 해요. 데이터 병렬화, 모델 병렬화 같은 병렬 처리 기술도 총동원하고요. 딥시크(DeepSeek)는 한발 더 나가서 과감하게 FP8 혼합 정밀도 학습을 도입했다고 합니다. FP16 대비 연산 효율은 2배, 메모리 사용량은 반으로 줄였다니 대단하네요.
결국 부동소수점 표현 방식의 선택은 정확도와 효율 사이의 줄타기라 할 수 있어요. 최첨단 AI 기업들은 하드웨어 특성을 꿰뚫어 보면서 최적의 균형점을 찾아가는 중인 것 같아요. 앞으로도 이런 저비트 연산의 진화가 AI 학습의 속도를 더욱 가속할 것 같습니다. 여러분은 어떤 부동소수점 표현 방식이 AI의 미래를 이끌 것 같나요? FP8의 가능성에 한번 배팅해 볼까요?