왜 결합하나
학습 뒤에는 기반 모델과 어댑터가 따로 남아. 추론할 때마다 (W + A · B) · x를 계산하므로 어댑터가 닿은 모든 층에서 토큰마다 행렬 곱이 하나 더 붙어.
어댑터를 기반 가중치에 한 번 접어 넣으면 W가 학습된 A · B를 이미 포함한 새 모델이 돼. 품질은 분리 상태와 같고 이후 순전파에는 어댑터 비용이 없어 토큰당 계산이 싸져.
mlx_lm.fuse 한 명령이면 돼
기반 모델과 어댑터 폴더를 지정하면 mlx_lm.load로 바로 쓸 새 모델 폴더를 만들어.
대신 바꿔 끼우는 자유를 잃어
결합한 모델에는 어댑터가 구워져 있어 다른 것으로 바꿀 수 없어. SQL, 하이쿠, 요약처럼 작업마다 어댑터가 여럿이라면 따로 두고 필요할 때 불러오는 편이 유연해. 특정 기반과 특정 어댑터가 배포할 한 결과물이라고 결정했을 때만 결합해.
새 매개변수를 더하는 게 아니라 기존 가중치에 보정을 접으므로 디스크 크기는 기반 모델과 거의 같아.
GGUF로도 내보낼 수 있어
mlx_lm.fuse --export-gguf는 결합 모델을 GGUF로 내보내. MLX에서 파인튜닝한 결과를 Apple이 아닌 기계의 llama.cpp나 Ollama로 보내는 가장 깨끗한 길이야. 먼저 결합하고 그다음 내보내.
Hugging Face에 올리기
--upload-repo your-username/repo-name를 쓰면 결합 모델을 Hugging Face 저장소에 올려. 다른 사람이 저장소 ID만으로 mlx_lm.load하게 만들고 싶을 때 써.