1.58비트 터너리 양자화로 30B LLM을 맥북에서 돌리기: 0점에서 89.4%까지 복원한 기록

26 minutes ago 1

NVIDIA Nemotron 3.5 Lightning 30B(A3B)의 가중치를 -1, 0, +1 세 값으로만 표현하는 1.58비트 터너리 양자화로 약 60GB → 약 10GB까지 줄이고, 24GB 이상 맥북에서 돌릴 수 있게 한 기록 사전학습을 다시 하지 않는 PTQ 방식. 결과 모델은 Hugging Face에 MLX 프리뷰 체크포인트로 공개 30B 모델은 4비트로 줄여도 가중치만 16GB 안팎이라, 런타임 메모리와 KV 캐시까지 더하면 16GB 기기에는 올라가지 않고 24GB 맥북에서도 빠듯함 BF16 모델을 그대로 터너리로 바꾸면 GSM8K·HumanEval 0.00점, IFEval-ko 10.36점 on/off-policy distillation + STE로 2에폭 만에 GSM8K 87.57까지 회복. 3에폭에서는 오히려 85.90으로 하락 임계값 근처 가중치 약 5.9%만 학습하는 경계 마스킹으로 같은 3에폭에서 88.32 최종적으로 생성형 벤치마크 7종 평균 원본 93.80 대비 83.82, 원본의 89.4% 1.58비트 양자화란 세 값을 구분하는 데 필요한 이론적 최소 비트 수가 log₂3 ≈ 1.585라서 1.58비트라고 부름 값 하나가 담는 정보량이지 디스크 파일 크기가 아님. 실제 파일에는 스케일 값이 함께 저장돼 파라미터당 비트 수는 이보다 큼 만드는 경로는 두 가지 QAT: BitNet b1.58처럼 처음부터 가중치를 터너리로 고정한 채 사전학습 PTQ: 학습이 끝난 BF16 체크포인트를 사후에 터너리로 변환 사전학습을 다시 하지 않고 기존 모델을 그대로 쓸 수 있어 PTQ를 택함 터너리 변환 절차 정해야 하는 것은 두 가지: 어느 크기 이하를 0으로 볼지(임계값 τ), 남은 가중치를 어떤 크기로 되돌릴지(스케일 s) 그룹별 평균 절댓값 α를 구하고 τ = α/2로 코드(-1, 0, +1)를 정한 뒤, 0이 아닌 가중치의 평균 절댓값을 s로 써서 복원 가중치 8개 예시 그룹: α 0.39, τ 0.195, s 0.58 → 8개 중 3개가 0 0이 너무 적으면 작은 값까지 ±1로 커져 복원 오차가 늘고, 너무 많으면 남는 정보가 줄어 표현력이 떨어짐 그대로 쓰면 0점이 되는 이유 가중치마다 반올림 오차가 생기고(예: 0.90 → 복원 후 0.58), 이 오차가 층을 거치며 누적됨 토큰을 하나씩 생성해 채점하는 생성형 벤치마크에서는 정답을 거의 맞히지 못하는 결과로 나타남 2비트 이하 극단적 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵