가중치마다 양자화 민감도가 달라
Transformer의 모든 가중치가 정밀도 손실에 똑같이 반응하지는 않아. 임베딩 층, 어휘로 다시 투영하는 LM head, 어텐션 출력 투영은 보통 피드포워드 MLP 가중치보다 민감해. 전부 4비트로 줄이는 건 단순하지만, 민감한 층만 높은 정밀도로 남기고 나머지를 낮추면 비슷한 평균 비트 수로 품질 손실을 줄일 수 있어.
그게 혼합 정밀도 양자화야. mlx-lm은 --quant-predicate로 미리 정한 방식을 제공해.
제공되는 방식
mixed_2_6— 대부분은 2비트, 민감한 층은 6비트야. 가장 작지만 품질 손실도 눈에 띄어.mixed_3_4— 대부분은 3비트, 민감한 층은 4비트야. 전체 Q4보다 작으면서 품질 경쟁력이 있어.mixed_3_6— 대부분은 3비트, 민감한 층은 6비트야. 공격적으로 줄이되 중요한 층에 여유를 줘.mixed_4_6— 대부분은 기본 Q4인 4비트, 민감한 층은 6비트야. 더 안전한 Q4에 가장 가까워.
mixed_X_Y에서 X는 대부분 층의 비트 수, Y는 민감한 층의 비트 수야. 어느 층을 올릴지는 mlx-lm의 predicate registry에 정해져 있어.
묶음 크기는 별개로 정해
--q-group-size는 혼합 정밀도와 독립된 선택이야. 32는 파일을 키우고 품질을 얻으며, 128은 품질을 조금 내주고 파일을 줄여. 64가 합리적인 중간값이야. 혼합 정밀도에서는 보통 64로 두고 비트 선택 규칙이 층을 구분하게 해.
혼합 정밀도를 꺼낼 때
- 메모리 천장에 닿았을 때 — 전체 Q4보다 조금 큰 모델을 넣으려면
mixed_3_4나mixed_2_6으로 평균 비트 수를 더 낮출 수 있어. - 특정 작업에서 Q4 품질이 부족할 때 — Q8까지 가지 않고 일부 정확도를 되찾으려면
mixed_4_6이 자연스러운 다음 단계야. - 많은 기계에 배포할 때 — 모델 하나의 작은 절약도 기계 수만큼 쌓여.
사용자 한 명짜리 노트북 배포는 전체 Q4면 대개 충분해. 혼합 정밀도는 측정으로 필요가 드러났을 때 꺼내는 조절값이지 기본 출발점이 아니야.