[카테고리:] 미분류

  • 🧠 딥러닝에서 FP32와 FP64: 정밀도보다 중요한 현실적인 선택

    최근 딥러닝 모델을 학습하거나 배포할 때, float32(FP32) 대신 float16, bfloat16, 심지어 float64(FP64)를 고려하는 사례가 늘고 있습니다. 하지만 이 선택은 단순히 정밀도의 문제가 아니라 메모리, 학습 안정성, 연산 성능까지 모두 고려해야 할 중요한 결정입니다.

    이번 글에서는 특히 FP32에서 FP64로 변환할 경우 어떤 변화가 일어나는지, 그리고 왜 대부분의 딥러닝 프레임워크가 여전히 FP32를 기본으로 채택하는지에 대해 실제적인 관점에서 설명드리겠습니다.


    📌 부동소수점(Floating Point)의 기본: FP16, FP32, FP64

    형식비트 수메모리유효 자릿수표현 범위주 사용처
    FP1616bit2B약 3~4자리±6.5e4모바일, 그래픽, 일부 CNN
    FP3232bit4B약 7자리±3.4e38대부분의 딥러닝 연산
    FP6464bit8B약 16자리±1.8e308과학 계산, 금융, 시뮬레이션

    ⚙️ FP64로 바꾸면 메모리는 얼마나 늘어날까?

    단순합니다:

    FP32 → FP64 전환 시, 가중치 하나당 메모리 사용량은 정확히 2배 증가합니다.

    예를 들어, 10M개의 파라미터를 가진 모델이 있다고 가정하면:

    • FP32일 경우: 10M x 4B = 40MB
    • FP64일 경우: 10M x 8B = 80MB

    여기에 옵티마이저 상태(예: Adam의 m, v)까지 고려하면 실제 학습 시 필요한 메모리는 2배 이상 증가할 수 있습니다.


    🚫 FP64가 오히려 딥러닝 학습에 불리한 이유

    1. 정밀도가 높다고 꼭 좋은 건 아니다
      • 대부분의 딥러닝 연산은 그렇게 높은 정밀도를 요구하지 않음.
      • 오히려 학습 중 발생하는 gradient noise나 dropout 등의 regularization으로 인해 FP64는 과도한 연산 낭비가 될 수 있음.
    2. 하드웨어 지원이 떨어짐
      • 대부분의 GPU(NVIDIA RTX 시리즈, A100 등)는 FP32, FP16에는 Tensor Core를 지원하지만, FP64는 느린 연산 장치에 매핑됨.
      • 예: A100의 경우 FP32는 19.5 TFLOPS, FP64는 9.7 TFLOPS (절반 수준)
    3. 모델 저장 및 전송 비용 증가
      • 모델 크기가 2배가 되면 저장 공간, 네트워크 전송 비용도 2배

    ✅ FP32가 여전히 표준인 이유

    • 충분한 정밀도: 대부분의 CNN, Transformer 계열 모델에서 32bit 정밀도면 학습 안정성과 정확도 모두 확보 가능
    • 최적의 트레이드오프: 연산 성능, 메모리 사용, 정밀도 사이에서 균형 잡힌 선택
    • 프레임워크 최적화: TensorFlow, PyTorch 모두 FP32에 최적화되어 있으며, 대부분의 pre-trained 모델도 FP32로 제공

    💡 Mixed Precision이 떠오르는 이유

    현대 딥러닝에서는 오히려 mixed precision(예: float16 연산 + float32 저장)이 더 주목받고 있습니다.

    • 연산은 빠른 FP16,
    • 가중치 저장은 안정적인 FP32
    • 이를 통해 성능과 안정성을 모두 확보할 수 있습니다.

    TensorFlow에서는 다음과 같이 설정합니다:

    pythonCopyEditfrom tensorflow.keras import mixed_precision
    mixed_precision.set_global_policy('mixed_float16')
    

    🧾 마무리: 실무에서의 추천

    상황추천 Precision
    일반적인 CNN, TransformerFP32 또는 Mixed Precision
    메모리 부족, 빠른 실험 필요Mixed Precision (float16 + float32)
    과학 계산, 수치 해석FP64
    회귀 문제에서 소수점 정밀도가 핵심일 때FP32 (혹은 FP64, 상황에 따라)

    🔍 요약

    딥러닝에서 FP64는 정밀도는 높지만 실전에서 이득은 크지 않다.
    오히려 학습 속도 저하, 메모리 증가, 하드웨어 비호환성 같은 비용이 발생합니다.
    따라서 대부분의 경우, FP32 또는 mixed precision이 현실적인 선택입니다.