Mac에서 Gemma 4를 직접 파인튜닝하기, gemma-tuner-multimodal 성능은 어느 정도일까

Apple Silicon MPS 백엔드로 Gemma 4·3n을 로컬 파인튜닝하는 gemma-tuner-multimodal의 메모리 관리 전략과 M3 Max 학습 벤치마크, 실전 활용 시나리오를 정리한다.

2026-08-14 · 최초 발행 2026-04-17

클라우드 GPU 없이 MacBook이나 Mac Studio에서 직접 멀티모달 AI 모델을 파인튜닝하는 시대가 현실이 됐다. Matt Mireles가 6개월간 개발한 gemma-tuner-multimodal은 Apple Silicon의 Metal Performance Shaders(MPS) 백엔드를 활용해 Gemma 4 및 Gemma 3n 모델을 텍스트·이미지·오디오 세 모달리티 모두에서 로컬 파인튜닝 가능하게 하는 오픈소스 툴킷이다.

E2B부터 E4B까지, 지원 모델 라인업

Google이 2025년 말 공개한 Gemma 4는 텍스트·이미지·오디오를 통합 처리하는 네이티브 멀티모달 아키텍처를 채택한 경량 오픈 모델 패밀리다. E2B(2B 파라미터)와 E4B(4B 파라미터) 두 사이즈로 제공되며, 지시 튜닝(instruct) 버전과 베이스 버전이 Hugging Face에 공개돼 있다.

모델 ID 파라미터 용도
gemma-3n-E2B-it 2B Gemma 3n 기본(기본값)
gemma-3n-E4B-it 4B Gemma 3n 확장
gemma-4-E2B-it 2B Gemma 4 인스트럭트
gemma-4-E4B-it 4B Gemma 4 인스트럭트 대형
gemma-4-E2B 2B Gemma 4 베이스

Gemma 4 계열 모델을 쓰려면 PEFT 호환 의존성 세트인 requirements/requirements-gemma4.txt를 별도 설치해야 하고, Gemma 3n은 기본 의존성만으로 바로 사용할 수 있다.

PCIe 복사가 사라지는 이유

Metal Performance Shaders(MPS)는 Apple의 Metal GPU 프레임워크 위에서 동작하는 고성능 컴퓨팅 레이어다. PyTorch는 torch.device("mps")로 MPS를 백엔드로 쓸 수 있으며, Apple Silicon 칩의 통합 메모리(Unified Memory) 아키텍처를 최대한 활용한다.

학습 데이터PyTorch 모델백엔드 선택CUDA (NVIDIA GPU)MPS (Apple Silicon)CPU (fallback)높은 처리량별도 VRAM 필요통합 메모리 공유CPU↔GPU 데이터 복사불필요느림, 범용성 최대

MPS의 핵심 장점은 CPU와 GPU가 동일한 메모리 풀을 공유한다는 점이다. NVIDIA GPU는 시스템 RAM과 VRAM 사이에 PCIe 버스를 통한 데이터 복사가 필수적이지만, Apple Silicon의 Unified Memory에서는 이 오버헤드가 사라진다. gemma-tuner-multimodal이 내부적으로 MPS를 설정하는 핵심 파라미터는 MPS 지원 시 bfloat16 정밀도를 우선 사용하는 bf16=True, MPS 안정성을 위해 attention을 eager 모드로 강제하는 attn_implementation="eager", 미지원 연산 발생 시 CPU 폴백을 허용하는 PYTORCH_ENABLE_MPS_FALLBACK=1(디버깅 후 해제 권장)이다. MPS 가속은 macOS 12.3 이상, arm64 네이티브 환경(Rosetta 불가)에서만 활성화된다.

텍스트·이미지·오디오, 모달리티별 학습 모드

텍스트 파인튜닝은 가장 기본적인 모달리티로 두 서브모드를 지원한다 — prompt_column(입력)과 text_column(응답)을 분리해 응답 부분만 손실 계산에 포함하는 Instruction 모드, text_column 단일 컬럼으로 전체 시퀀스를 학습하는 Completion 모드다. CSV 파일에 prompt, text 컬럼을 구성하면 즉시 학습을 시작할 수 있다.

이미지+텍스트 파인튜닝은 이미지 경로(image_path)와 텍스트를 묶어 학습하며, 이미지+고정 인스트럭션으로 캡션 생성을 학습하는 Caption 모드와 이미지+질문으로 답변을 학습하는 VQA 모드가 있다. 이미지 토큰 예산(image_token_budget)은 70, 140, 280, 560, 1120 중 하나를 선택해야 하며 값이 클수록 이미지 해상도 정보를 더 많이 인코딩하되 메모리 소비가 늘어난다.

오디오+텍스트 파인튜닝은 Whisper 스타일의 ASR 또는 도메인 특화 오디오 적응 학습을 지원하며, 16kHz 모노 WAV 파일이 입력 요구사항이고 로컬 CSV 또는 Google Cloud Storage·BigQuery 스트리밍을 지원한다(GCS 연동 시 pip install .[gcp] 추가 설치 필요). 이 프로젝트의 탄생 배경 자체가 오디오 파인튜닝이었다 — 개발자 Matt Mireles는 15,000시간 분량의 오디오 데이터셋을 로컬 스토리지에 복사하지 않고 Google Cloud Storage에서 스트리밍하며 M2 Ultra Mac Studio에서 직접 학습하는 방법을 고안하다가 이 툴킷을 제작했다.

데이터 준비CSV / GCS / BigQuerygemma-macos-tunerprepare전처리된 데이터셋data/datasets//gemma-macos-tunerfinetune모델 라우팅Gemma 3n 파인튜닝gemma_tuner/models/gemma/finetune.pyGemma 4 파인튜닝+requirements-gemma4.txtLoRA 어댑터output//adapter_model/gemma-macos-tuner export병합 모델HuggingFace SafeTensorsgemma-macos-tunerevaluate

학습 결과물은 output/{id}-{profile}/ 하위에 체크포인트·메트릭·LoRA 어댑터가 분리 저장된다. export 단계에서 LoRA 가중치를 베이스 모델에 병합해 독립 실행 가능한 SafeTensors 파일로 출력한다.

1,630만 개 파라미터로 31B 모델을 적응시키다

PEFT(Parameter-Efficient Fine-Tuning)의 대표 기법인 LoRA는 전체 모델 가중치를 동결하고 각 레이어에 저랭크(low-rank) 행렬 쌍을 삽입해 학습한다.

구분 전체 파인튜닝 LoRA 파인튜닝
학습 파라미터 전체 (수십억 개) 소수 (수천만 개)
메모리 요구량 매우 높음 대폭 절감
학습 속도 느림 빠름
적용 예 (31B 모델) 62GB+ ~16GB (4비트 양자화)

실제 31B 모델을 MLX로 파인튜닝한 사례에서 16개 레이어에 LoRA를 적용하면 전체의 0.053%에 해당하는 1,630만 개 파라미터만 학습하면서 유효한 도메인 적응이 가능했다. gemma-tuner-multimodal도 동일한 원리로 Gemma E2B/E4B 모델을 소비자급 하드웨어에서 학습 가능하게 한다.

OOM이 나면 무엇부터 줄여야 하나

Apple Silicon의 통합 메모리는 CPU와 GPU가 공유하므로, 파인튜닝 중 메모리 부족(OOM) 오류가 빈번하게 발생한다. 실제 개발자도 64GB RAM M2 Ultra Mac Studio에서 긴 시퀀스 학습 시 메모리 문제를 자주 겪었다고 밝혔다.

OOM 발생대응 방법시퀀스 길이 단축max_seq_length 감소배치 크기 축소batch_size=1이미지 토큰 예산 감소image_token_budget 축소4비트 양자화QLoRA 적용Gemma E2B 선택 작은 모델 사용메모리 안정화

권장 RAM 용량별 가이드는 16GB에서는 Gemma E2B·짧은 시퀀스·텍스트 전용, 32GB에서는 Gemma E2B/E4B·이미지/오디오 포함·image_token_budget 140 이하, 64GB 이상에서는 Gemma E4B 전 모달리티·image_token_budget 560 이상이 가능하다.

몇 줄이면 끝나는 설치

# 1. 저장소 클론
git clone https://github.com/mattmireles/gemma-tuner-multimodal
cd gemma-tuner-multimodal

# 2. 가상환경 생성 (Python 3.10+ 필수)
python -m venv venv
source venv/bin/activate

# 3. 기본 의존성 설치
pip install -e .

# Gemma 4 사용 시 추가 설치
pip install -r requirements/requirements-gemma4.txt

# GCS/BigQuery 연동 시
pip install -e ".[gcp]"

# 4. 마법사로 시작
gemma-macos-tuner wizard

CLI 명령은 대화형 설정 가이드를 실행하는 wizard, 데이터 전처리·검증을 하는 prepare <dataset-profile>, 학습을 실행하는 finetune <profile>(모델명에 "gemma" 포함 시 자동 라우팅), LoRA 병합·SafeTensors 내보내기를 하는 export <run-dir>, 파인튜닝 모델을 평가하는 evaluate <profile-or-run> 다섯 가지다.

M3 Max로 31B 모델을 2.5시간에 학습시킨 기록

31B 규모 Gemma 4 모델을 M3 Max(128GB 통합 메모리)에서 MLX로 파인튜닝한 실험 결과(FlowHunt, 2026)는 다음과 같다.

구분 수치
학습 에포크 3
배치 크기 1
학습률 1e-4
총 학습 시간 약 2.5시간
초기 Validation Loss 6.614
최종 Validation Loss 1.224
fp16 추론 속도 207초/건
4비트 양자화 추론 속도 80초/건
AWS A10G GPU 비교 약 15초/건

로컬 Mac 추론 속도는 클라우드 GPU 대비 5~14배 느리지만, 데이터 프라이버시 보장과 반복 실험 비용 절감이라는 명확한 이점이 존재한다.

의료 영상부터 사내 콜센터까지

의료 영상, 제조 불량 검사, 위성 이미지 분석 등 민감한 데이터를 외부 클라우드 API로 전송할 수 없는 환경에서는 이미지+텍스트 VQA 모드로 커스텀 비전 모델을 구축할 수 있다. 콜센터 녹취, 의료 상담 음성 등 보안이 중요한 오디오 데이터는 GCS 스트리밍과 결합해 Whisper 스타일 도메인 적응 모델을 학습할 수 있다. CSV 형식의 사내 Q&A 데이터를 instruction 모드로 학습시켜 기업 특화 언어 스타일·전문 용어에 적응한 개인화 챗봇 파인튜닝도 가능하다.

HN 117포인트가 말해주는 수요

2026년 4월 7일 Hacker News Show HN에 공개된 이 프로젝트는 117 포인트와 15개 댓글을 기록했으며, 관련 소셜 게시물은 163 좋아요·184 북마크를 받았다. "클라우드 없는 멀티모달 파인튜닝"이라는 개념에 대한 실질적인 수요가 있음을 보여주는 지표다.

Apple Silicon Mac은 이미 추론(inference) 플랫폼으로 널리 자리잡았지만, gemma-tuner-multimodal은 이를 파인튜닝(training) 플랫폼으로 확장시키는 시도다. 통합 메모리 아키텍처, MPS 백엔드 성숙, LoRA의 경량화 기법이 결합되면서 소비자 하드웨어에서의 멀티모달 학습이 현실적인 선택지가 됐다.

Sources

GemmaTunerAppleSiliconLoRA파인튜닝로컬AI학습MPS백엔드