콘텐츠로 이동

메모리 예산

Bit-Axon은 MacBook Air M4(16 GB 통합 메모리)를 대상으로 하며, 이 중 약 8 GB가 모델에 사용 가능합니다. 이 페이지는 모든 바이트를 분석합니다.

사용 가능한 메모리

항목 크기 비고
물리적 RAM 16,384 MB MacBook Air M4 16 GB
macOS 시스템 사용량 약 ~2,500 MB macOS 15 + 서비스
기타 앱 약 ~2,000 MB 브라우저, IDE 등
MLX 오버헤드 약 ~500 MB 프레임워크 런타임
Metal GPU 안전 마진 약 ~1,500 MB 스왑 방지 버퍼
모델에 사용 가능 약 ~8,000 MB 이것이 제약 조건

사용 가능한 메모리 극대화

다른 모든 앱을 종료하면 약 ~10 GB를 확보할 수 있지만, 안정적인 작동을 위해 약 ~8 GB가 기준선입니다. 모든 설계 결정은 이 예산을 기준으로 합니다.

정밀도별 가중치 메모리

정밀도 가중치 크기 적합 여부
FP16 약 ~6,400 MB ❌ 불가
Q8 (affine) 약 ~3,200 MB ⚠️ 한계
Q4 (affine, group=64) 약 ~1,760 MB ✅ 기본값
1.58-bit (Ternary) 약 ~640 MB 🔬 실험적

FP16 가중치만으로 6.4 GB를 소모합니다 — 활성화나 KV cache를 고려하기도 전에 거의 전체 예산을 초과합니다. Q4 quantization이 기본 전략입니다. MLX의 nn.QuantizedLinear은 4-bit matmul을 단일 퓨즈된 Metal 커널로 실행하여 FP16 대비 2–3배 속도 향상과 3.6배 적은 메모리를 제공합니다.

Parameter 수 분석

구성 요소 FP16 크기 Q4 크기
embed_tokens 65.5M 131 MB 36 MB
input_proj 5.2M 10.5 MB 2.9 MB
층 1–8: AxonSSMBlock (×8) 약 ~482M 964 MB 265 MB
층 9–16: AxonSWAMoEBlock (×8) 약 ~1,120M 2,240 MB 616 MB
층 17–24: AxonSSMMoEBlock (×8) 약 ~1,200M 2,400 MB 660 MB
output_proj 5.2M 10.5 MB 2.9 MB
lm_head (embed와 공유) 0 0 MB 0 MB
합계 약 ~3.2B 약 ~6,400 MB 약 ~1,760 MB

가중치 공유 절약

embed_tokens.weightlm_head.weight가 동일한 텐서를 공유하여 FP16에서 약 ~64 MB(Q4에서 약 ~18 MB)를 절약합니다.

SSM 상태 메모리 (고정, 층 1–8 및 17–24)

16개 SSM 층은 컨텍스트 길이와 무관하게 고정 크기 은닉 상태를 유지합니다:

  • SSM 상태: 층당 \((1, 7680, 16)\) × 16층 = 약 ~3.7 MB
  • Conv cache: 층당 \((1, 3, 7680)\) × 16층 = 약 ~0.7 MB
  • SSM 상태 합계: 약 ~4.4 MB — 무시할 수 있는 수준

SWA KV cache (층 9–16, 32 헤드, head_dim=80)

8개 SWA 층만 KV cache를 생성합니다. 공식:

\[\text{KV Cache} = 8 \text{ 층} \times 2_{(K+V)} \times 32 \text{ 헤드} \times 80_{d_k} \times \text{seq\_len} \times 2 \text{ 바이트}\]
컨텍스트 KV cache (FP16) KV cache (TurboQuant 3-bit)
1,024 80 MB 약 ~14 MB
4,096 320 MB 약 ~53 MB
16,384 1,280 MB 약 ~213 MB
32,768 2,560 MB 약 ~427 MB
65,536 5,120 MB 약 ~853 MB

TurboQuant 없이 64K 컨텍스트 사용

65,536 토큰에서 FP16 KV cache만으로 약 ~5.1 GB — 사용 가능한 전체 예산을 초과합니다. 64K 컨텍스트에는 TurboQuant가 필수입니다.

총 추론 메모리

정밀도 4K 컨텍스트 16K 컨텍스트 32K 컨텍스트 64K 컨텍스트
FP16 (TQ 없음) 약 ~7,233 MB 약 ~8,393 MB 약 ~9,673 MB 약 ~12,233 MB
Q4 (TQ 없음) 약 ~2,593 MB 약 ~3,353 MB 약 ~4,633 MB 약 ~7,193 MB
Q4 + TurboQuant 3-bit 약 ~2,326 MB 약 ~2,486 MB 약 ~2,700 MB 약 ~3,126 MB

핵심 결론:

  • Q4만으로 약 16K 컨텍스트까지 8 GB 이내 적합
  • Q4 + TurboQuant는 전체 64K 컨텍스트에서 8 GB 이내 적합, 약 ~5 GB 여유
  • ❌ FP16 추론은 4K 이상의 모든 컨텍스트 길이에서 8 GB 초과

QLoRA 학습 메모리

전체 파인튜닝(FP16 가중치 + 기울기 + Adam 옵티마이저)은 약 ~38.4 GB가 필요 — 16 GB에서는 물리적으로 불가능합니다. QLoRA(Q4 동결 기반 + LoRA 어댑터)는 학습을 다음과 같이 압축합니다:

구성 요소 크기 비고
기본 가중치 Q4 (동결) 약 ~1,760 MB 기울기 불필요
LoRA parameters (rank=16, 약 ~0.5%) 약 ~32 MB 학습 가능
LoRA 기울기 (FP16) 약 ~32 MB
LoRA Adam 옵티마이저 (\(m\), \(v\), FP32) 약 ~256 MB
활성화 (체크포인트, \(B=1\), \(T=2048\)) 약 ~500–1,000 MB 기울기 체크포인팅 활성화
SWA KV cache (\(T=2048\)) 약 ~160 MB
MLX 오버헤드 약 ~500 MB
합계 약 ~3,240–3,740 MB 8 GB 이내 적합 ✅

열 관리

팬 없는 MacBook Air M4는 모든 열을 수동으로 방출합니다. Bit-Axon은 macOS powermetrics를 통해 SoC 온도를 모니터링하는 열 인식 학습 스케줄러를 사용합니다:

CoolingScheduler

온도 동작 근거
< 75°C 정상 속도 스로틀링 불필요
75–85°C LoRA rank 반감 동일 메모리 사용량, 연산 감소
85–95°C 스텝당 0.5초 일시정지 강제 냉각 기간
> 95°C 학습 일시정지 냉각 후 체크포인트에서 재개

ThermalPolicy

class ThermalPolicy:
    PAUSE_TEMP = 85    # °C — 마이크로 일시정지 삽입
    STOP_TEMP = 95     # °C — 학습 완전 중단
    RESUME_TEMP = 75   # °C — 정상 작업 재개
    CHECK_INTERVAL = 1 # 온도 확인 간격 (초)

MoE 열 이점

MoE 희소성은 열 부하를 직접적으로 감소시킵니다:

  • 3.2B parameters 중 토큰당 약 ~1.4B만 활성화 (약 ~44%)
  • 칩의 연산 장치 중 56%가 각 순전파에서 유휴 상태로 유지
  • 열 발생 측면에서 약 1.4B 밀집 모델을 실행하는 것과 거의 동일
  • 팬 없는 MacBook Air에서 지속적인 학습이 가능할 가능성이 높음

컨텍스트 길이 전략

시나리오 컨텍스트 권장 구성 총 메모리
챗봇 4K Q4 약 ~2.5 GB
코드 생성 8K Q4 약 ~2.8 GB
문서 요약 16K Q4 약 ~3.3 GB
PDF 분석 32K Q4 + TurboQuant 권장 약 ~2.7 GB
전체 64K 64K Q4 + TurboQuant 필수 약 ~3.1 GB

가중치 공유 절약

embed_tokens:  (32000, 2048) = 65.5M params
lm_head:       (32000, 2048) = 65.5M params  ← 동일 텐서
                                ─────────────
절약:                       65.5M params = 약 ~131 MB (FP16) / 약 ~36 MB (Q4)

embed_tokens.weight = lm_head.weight로 공유함으로써, 모델은 임베딩 행렬의 중복 복사본 저장을 피합니다. 이는 Q4에서 약 ~36 MB가 8 GB 한계를 향해 중요한 역할을 하는 경우에 특히 가치가 있습니다.

← 아키텍처로 돌아가기