macOS에서 로컬 코딩 에이전트 설정하는 방법 — Gemma 4 + MTP로 72 tok/s 달성하기
2026년 6월, 인터넷 장애가 잦은 환경에서도 끊김 없이 동작하는 로컬 코딩 에이전트 구성이 화제다. Apple Silicon Mac에서 llama.cpp Metal 가속과 Gemma 4 26B-A4B GGUF 모델, MTP draft model, Pi 터미널 코딩 에이전트를 조합하면 OpenAI 호환 로컬 서버를 72.2 tok/s로 띄울 수 있다. 본문은 M1 Max 64GB, macOS 15.7.7 환경에서 직접 검증한 구성과 튜닝 결과를 정리한다.

로컬 코딩 에이전트 구성 목표와 환경
로컬 실행을 시도한 직접적인 계기는 인터넷 장애가 몇 번 발생해 클라우드 코딩 에이전트를 사용할 수 없었던 상황이다. 원하는 조건은 세 가지로 정리된다. Mac에서 실제로 쓸 만큼 빠를 것, OpenAI 호환 API로 다른 도구에서도 호출 가능할 것, 스크린샷이나 이미지를 다시 입력으로 줄 수 있을 것. 최종 구성은 llama.cpp, Gemma 4 26B-A4B GGUF, Q8 MTP draft model, Gemma 4 multimodal projector, Pi 에이전트로 이뤄졌다. 테스트 환경은 Apple M1 Max 64GB 통합 메모리, macOS 15.7.7이다. 메인 모델은 unsloth-gemma-4-26B-A4B-it-GGUF의 Q4_K_XL 양자화 파일이며, MTP 헤드와 멀티모달 프로젝터를 함께 두면 폴더는 약 17GB에 달한다.
기본 실행과 MTP draft model로 24% 가속
메인 모델을 llama.cpp와 Metal 가속으로 직접 실행하는 단계가 출발점이다. llama-cli에 모델 경로, -ngl 999, -fa on, -c 4096, -n 128을 지정해 호출한다. 프롬프트 처리 속도는 298.0 tok/s, 생성 속도는 58.2 tok/s였다. 58 tok/s는 사용 가능한 수준이지만 코딩 에이전트 작업에서는 도구 호출이 잦아 더 빠른 속도가 필요하다. 의존성은 Homebrew로 cmake, git, tmux, python@3.11을 설치하고, ~/Developer/ML-Models/Gemma4/repos 아래에 ggml-org/llama.cpp 저장소를 클론한다. 빌드 명령은 cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=ON -DGGML_ACCELERATE=ON이며, 이후 cmake --build build --config Release -j로 릴리스 바이너리를 만든다.
MTP draft model을 더하면 생성 속도가 24% 올라간다. Gemma 4에는 MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf 형태의 draft model이 함께 제공된다. llama.cpp는 --model-draft, --spec-type draft-mtp, --spec-draft-n-max 옵션으로 투기적 디코딩을 지원한다. 값 1은 68.4 tok/s, 값 2는 72.0 tok/s, 값 3은 72.2 tok/s로 가장 빨랐다. 값 4는 70.7 tok/s, 값 5는 63.7 tok/s, 값 6은 61.2 tok/s로 느려졌다. M1 Max 환경에서는 3이 최적이며, 2도 충분히 가까운 결과를 낸다. Unsloth 문서는 값 2를 시작점으로 권장하지만, 하드웨어별로 직접 테스트해 가장 빠른 값을 고르는 게 효과적이다.
MLX 비교와 이미지 지원 추가
Mac 가속의 대안으로 mlx-lm 기반 모델도 측정했다. llama.cpp Metal + MTP는 72.2 tok/s, llama.cpp Metal 단독은 58.2 tok/s를 기록했다. MLX-LM은 Unsloth UD MLX 4-bit에서 45.8 tok/s, mlx-community 4-bit에서 43.9 tok/s, OptiQ 4-bit에서 38.1 tok/s에 그쳤다. 이 환경에서는 llama.cpp가 MLX보다 빨랐고, MTP를 적용한 llama.cpp가 가장 합리적인 선택이었다.

Pi에서 스크린샷을 첨부하려면 모델 입력이 텍스트 전용이면 안 된다. 원래 로컬 모델 항목의 "input": ["text"] 설정은 Pi가 이미지 도구 출력을 모델에 전달하지 못하게 막는다. llama.cpp 서버는 멀티모달 입출력을 위해 mmproj-BF16.gguf 형태의 프로젝터를 요구한다. --mmproj로 projector를 로드하면 텍스트 생성 속도 저하 없이 비전 입출력이 활성화된다. projector 없이 실행한 테스트는 프롬프트 120.3 tok/s, 생성 71.4 tok/s였고, mmproj를 로드한 최종 실행은 프롬프트 297.4 tok/s, 생성 72.2 tok/s로 추론 처리량 차이는 거의 없었다. 스크린샷 첨부, UI 디스크립션, 차트 해석 같은 작업이 Pi 워크플로우에서 자연스럽게 동작한다.
로컬 서버 시작과 Pi 연결
서버는 llama-server로 띄우며 메인 모델, MTP draft, 멀티모달 프로젝트를 모두 지정한다. 주요 옵션은 --spec-type draft-mtp, --spec-draft-n-max 3, -ngl 999, -fa on, -c 65536, --parallel 1이다. 서버는 --host 127.0.0.1 --port 8080으로 실행되고 OpenAI 호환 엔드포인트는 http://127.0.0.1:8080/v1이 된다. start_server.sh 래퍼는 tmux 세션에서 서버를 실행하고 로그를 남기며, curl http://127.0.0.1:8080/v1/models로 동작 여부를 확인한다. 모델 파일은 huggingface-cli download로 Gemma 4 메인 모델, mmproj, MTP draft model을 받아 models/unsloth-gemma-4-26B-A4B-it-GGUF/ 폴더에 둔다.
Pi는 ~/.pi/agent/models.json의 gemma4-local 제공자에서 baseUrl을 http://127.0.0.1:8080/v1로 가리킨다. input은 ["text", "image"]여야 하며, 컨텍스트 윈도는 65536, 최대 토큰은 8192로 설정한다. 비대화형 실행은 pi -p --provider gemma4-local --model gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf "..." 형태이고, 스크린샷 입력은 pi -p @"/path/to/screenshot.png" "..." 형태로 사용한다. pi --offline --list-models gemma로 이미지 지원이 yes로 표시되는지 확인한다.
Qwen3.6 35B-A3B 대안과 운영 가드레일
Qwen3.6 35B-A3B는 Gemma 4 26B-A4B의 대안으로 자주 거론된다. 벤치마크 기준 코딩 에이전트 성능은 Qwen이 더 낫다는 평가가 많지만, M1 Max 환경에서 측정된 속도는 55 tok/s에 그쳤다. 72 tok/s 대비 17 tok/s 차이는 도구 호출이 잦은 코딩 에이전트에서 무시하기 어렵다. Qwen 서버는 같은 llama-server를 --port 8081로 실행하고, Pi 설정의 qwen36-local 제공자에서 http://127.0.0.1:8081/v1을 가리킨다. 속도를 우선한다면 Gemma 4 26B-A4B + MTP, 코딩 능력을 우선한다면 Qwen3.6 35B-A3B를 선택하는 게 합리적이다.
운영 메모: 128토큰 단위 벤치마크는 너무 짧아 실제 도구 호출 워크로드의 체감을 충분히 보여주지 못한다는 HN 의견이 있다. 실사용 시 1000토큰 이상의 시스템 프롬프트와 함께 측정해 보는 걸 권장한다. 64GB M1 Max에서 MTP draft model 3을 적용한 llama.cpp Metal 조합이 72.2 tok/s로 가장 빨랐고, 멀티모달 projector를 함께 로드해도 텍스트 생성 속도 저하는 없었다. Gemma 4 + MTP 조합은 인터넷 없는 환경에서도 60W 수준의 전력으로 동작하는 자체 구동 로컬 LLM 워크플로우의 첫 번째 안정적인 구성이라 할 수 있다. 2026년 6월 기준, 로컬 추론의 핵심은 모델의 절대 점수가 아니라 대기 시간 없이 끝까지 도는 응답성이다.
'AI 뉴스' 카테고리의 다른 글
| 모두가 모든 일에 AI를 쓰는 것은 아니다 — 2026년 미국 사용 데이터로 본 진실 (0) | 2026.06.15 |
|---|---|
| 소프트웨어는 죽는 게 아니라 진화 중이다 — SaaS 종말론 4가지 주장과 AI 스택 4계층 (1) | 2026.06.15 |
| Anthropic Fable·Mythos 해외 차단 — Amazon CEO의 신호 한 통이 촉발한 AI 수출통제 (0) | 2026.06.15 |
| Fable 5·Mythos 5 차단 — 미국 정부 수출통제가 AI 시장에 던진 그림자 (0) | 2026.06.15 |
| 악성코드에 LLM 거부 문구 심기 — AI 보안 스캐너를 무력화하는 프롬프트 인젝션 공격 (0) | 2026.06.15 |