아날로그 시대 — “수”를 전기로 표현하려던 시절
- 시대: 1940~50년대 초반
- 방법: 전압이나 전류 크기 자체가 “수”
- 문제: 잡음이 조금만 섞여도 값이 달라짐
- → “연속값(analog)”은 정확하지 않다.
➡ 인간이 생각함:
“전압을 아예 0과 1로 나누면 어때?”
→ 노이즈에 강하고 단순한 디지털 표현의 시작.
고정소수점 (Fixed-Point)
- 시대: 1950–1960
- 개념:
- 일정한 자릿수를 정해놓고 소수점 위치를 “고정”시킨 수.
- 예: 00011010 = 26 → 2.6 으로 소수점 위치를 인간이 미리 약속.
- 장점: 빠르고 간단.
- 단점: 표현 가능한 범위가 작고, 큰/작은 수 둘 다 다루기 어려움.
➡ 과학 계산, 통계용으로 부족.
부동소수점 (Floating-Point)
- 시대: 1970~1980
- 대표: IEEE 754 표준
- 개념:→ 소수점이 “떠다닌다(floating)” → 매우 큰 수, 작은 수를 모두 표현 가능.
-
float = 부호(1bit) + 지수(exponent) + 가수(mantissa)
- 대표 포맷:
- float32 (fp32)
- float64 (fp64)
➡ 과학계·그래픽·AI 초기 연구의 근본 단위로 자리 잡음.
효율 전쟁의 시작 — 16bit (Half Precision)
- 시대: 2010년대 중반 (NVIDIA Pascal, Volta 세대)
- 배경:
- GPU로 딥러닝을 학습시키기 시작하면서 “정밀도는 충분하지만 메모리가 부족함”.
- 대부분의 딥러닝 가중치는 소수점 몇 자리만 중요하다는 걸 알게 됨.
- 등장:
- fp16 (IEEE half precision)
- bfloat16 (brain float16) → 구글 TPU에서 개발, exponent 범위를 더 넓힘.
- 효과:
- 학습 속도 2배, 메모리 절반으로 감소
- 정확도 거의 유지
➡ “정밀도 줄여도 모델은 괜찮다”는 첫 실험적 성공.
양자화 (Quantization)
- 시대: 2018~2022
- 아이디어:
- “16비트도 많다. 추론할 때는 8비트, 4비트로 줄이자.”
- int8 quantization:
- 학습된 float 가중치를 8bit 정수로 근사.
- 속도 ↑, 메모리 ↓
- 문제:
- 정수 스케일링으로 인한 표현 손실 (특히 activation에서 심함)
- “정밀도 저하” → “모델 성능 하락”
QLoRA의 등장 — nf4 (Normalized Float 4)
- 시대: 2023 (Berkeley, Hugging Face 공동 연구)
- 핵심 아이디어:
- “4비트로 줄이되, 단순 int4가 아니라
float 성질을 흉내내는 정규화된 부동소수점(nf4)을 쓰자.” - nf4 특징:
- 4비트지만 단순 정수 아님.
- 0을 중심으로 한 정규 분포 가정.
- 가중치를 미리 z-score로 정규화한 후 4bit에 압축.
- 계산 직전엔 다시 bfloat16으로 복원.
- 결과:
- 기존 16비트 대비 메모리 4배 절약,
- 성능은 거의 동일 (1% 이하 차이).
➡ QLoRA = “Quantized Low-Rank Adapter”
→ 4bit로 저장 + LoRA로만 학습 → VRAM 24GB짜리 GPU로도 Llama-7B 미세튜닝 가능.
미래 — Dynamic Precision / 2bit quant / Mixed FP8
- 현재(2024~)
- NVIDIA Hopper 아키텍처에서 FP8 지원
- 일부 연구는 3bit, 2bit quantization 실험 중
- 학습 중 자동으로 “필요한 구간만 고정밀도”로 바꾸는 dynamic precision 기법 연구
➡ 최종 목표:
“필요할 때만 정밀하고, 나머지는 최소한으로 저장/계산”
→ 인간 뇌의 에너지 효율에 근접한 AI 하드웨어.
📜 요약 타임라인
시대표현 방식비트수핵심 아이디어대표 용도
| 1950s | 고정소수점 | 8~16 | 소수점 위치 고정 | 초기 컴퓨터 |
| 1970s | 부동소수점 (float32/64) | 32–64 | 큰 범위 표현 | 과학 계산, 그래픽 |
| 2010s | 반정밀도 (fp16, bf16) | 16 | 메모리 절약 | 딥러닝 학습 |
| 2018+ | 정수 양자화 (int8) | 8 | 추론 가속 | 경량화 모델 |
| 2023 | nf4 (QLoRA) | 4 | 정규화된 float 근사 | 대형 LLM SFT |
| 미래 | FP8, 2bit, dynamic | 8↓ | 구간별 정밀도 적응 | 초고효율 AI 하드웨어 |
'cs' 카테고리의 다른 글
| 메모리의 주소 공간 - 물리 주소와 논리 주소 (0) | 2024.08.11 |
|---|---|
| 소스코드와 명령어 (0) | 2024.08.10 |
| 컴퓨터 구조의 큰 그림 (0) | 2024.08.10 |