macOS에서 로컬 코딩 에이전트 세팅하기 (llama.cpp + MTP + Pi)
How to setup a local coding agent on macOS
TL;DR Highlight
Gemma 4에 MTP 초안 모델을 붙였더니 M1 Max에서 58→72 tok/s로 빨라졌다
Who Should Read
인터넷이 끊겨도 쓸 수 있는 로컬 코딩 에이전트를 64GB 안팎의 Mac에 구축하고 싶은 개발자
Core Mechanics
- MTP 붙이니 생성 속도 24%↑
- Gemma 4 26B-A4B Q4 단독은 58.2 tok/s, Q8 MTP 초안 모델을 붙이면 72.2 tok/s다(M1 Max 64GB, llama.cpp Metal 기준).
- 프롬프트 처리 속도는 298.0 대 295.6 tok/s로 거의 같았다.
- draft 토큰 수는 3이 최적이었다
- --spec-draft-n-max를 1~6으로 돌려 보니 3이 72.2, 2가 72.0 tok/s였다.
- 5는 63.7, 6은 61.2 tok/s로 오히려 느려졌다.
- MLX보다 llama.cpp가 빨랐다
- 같은 Gemma 4 기준 llama.cpp+MTP 72.2, llama.cpp 58.2, MLX-LM 최고 45.8 tok/s다.
- 저자는 Mac 전용 MLX가 가장 빠를 줄 알았다고 쓴다.
- 이미지 입력은 mmproj와 Pi 설정 둘 다 필요하다
- llama-server에 --mmproj mmproj-BF16.gguf를 넘겨야 멀티모달이 켜진다.
- Pi의 models.json에서 input을 ["text","image"]로 해야 이미지를 보낸다.
- projector를 로드해도 생성 속도는 71.4 대 72.2 tok/s로 느려지지 않았다.
- Qwen3.6 35B-A3B는 코딩은 낫지만 느리다
- 저자가 찾아본 벤치마크 기준 Qwen이 코딩 에이전트로 더 낫다고 한다.
- 속도는 Qwen3.6이 55 tok/s, Gemma 4가 72 tok/s다.
- 최종 스택은 서버 하나에 Pi를 붙인 구조다
- llama-server가 127.0.0.1:8080의 OpenAI 호환 /v1 엔드포인트를 연다.
- Pi는 ~/.pi/agent/models.json의 로컬 provider로 여기에 연결한다.
Community Reactions
- MTP 속도 측정이 짧다는 지적
- 128토큰 생성으로는 부족하다는 의견이 있다.
- 초반 출력일수록 초안 토큰 수락률이 높아 속도 향상이 부풀려질 수 있다는 경험담이다.
- llama.cpp에 인자를 자동으로 훑는 벤치 도구가 있다고 한다.
- MTP가 항상 이득은 아니라는 경험
- M1 Max에서 QAT 모델에 MTP를 붙여도 속도 이득이 크지 않았다는 경험이 있다.
- Gemma 4 MTP 헤드가 Opencode에서 마크업을 깨뜨리고 stop 토큰을 놓친 적이 있어 그쪽에서는 MTP를 껐다는 경험이다.
- 설치를 더 쉽게 하는 방법
- llama.cpp의 -hf 옵션과 LLAMA_CACHE로 huggingface-cli 없이 모델을 받을 수 있다는 의견이 있다.
- oMLX나 LM Studio로 몇 분 만에 서버를 띄웠다는 경험이 있다.
- 다른 모델 사례
- M4 Max 128GB에서 DeepSeek V4 Flash(ds4)가 생성 약 24 tok/s, prefill 약 200 tok/s였고, 간단한 작업의 오케스트레이터로 쓸 만했다는 경험이다.
- 속도만 얘기하고 답변 품질은 말하지 않는다는 비판도 있었다.
How to Apply
- llama.cpp를 빌드하고 MTP 없이 기준 속도부터 재기
- brew install cmake git tmux 후 -DGGML_METAL=ON으로 llama.cpp를 빌드하라.
- llama-cli로 같은 프롬프트를 돌려 tok/s 기준값을 먼저 적어 두라.
- MTP 초안 모델 붙이고 draft 값 스윕하기
- --model-draft와 --spec-type draft-mtp를 추가하라.
- --spec-draft-n-max를 1~6으로 바꿔 가며 내 기기에서 가장 빠른 값을 찾아라.
- llama-server를 띄워 기존 도구에 연결하기
- llama-server를 127.0.0.1:8080으로 띄우고 curl로 /v1/models를 확인하라.
- OpenAI 호환 클라이언트나 Pi의 models.json의 baseUrl에 이 주소를 넣어라.
- 스크린샷 입력이 필요하면 mmproj와 input 설정 추가하기
- --mmproj mmproj-BF16.gguf를 서버에 추가하라.
- models.json의 input에 "image"를 넣고 pi --offline --list-models로 images가 yes인지 확인하라.
Try It
# 셸(macOS 터미널)에 붙여넣기: llama.cpp 빌드 후 MTP 서버 실행 (원문 명령 기반)
brew install cmake git tmux python@3.11
git clone https://github.com/ggml-org/llama.cpp repos/llama.cpp
cd repos/llama.cpp && cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_METAL=ON -DGGML_ACCELERATE=ON && cmake --build build --config Release -j && cd ../..
pip install -U huggingface_hub hf_xet
huggingface-cli download unsloth/gemma-4-26B-A4B-it-GGUF gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf mmproj-BF16.gguf MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf --local-dir models/unsloth-gemma-4-26B-A4B-it-GGUF
D=models/unsloth-gemma-4-26B-A4B-it-GGUF
repos/llama.cpp/build/bin/llama-server -m $D/gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf --model-draft $D/MTP/gemma-4-26B-A4B-it-Q8_0-MTP.gguf --mmproj $D/mmproj-BF16.gguf --spec-type draft-mtp --spec-draft-n-max 3 -ngl 999 -fa on -c 65536 --parallel 1 --host 127.0.0.1 --port 8080Terminology
관련 논문
Cerebras가 조 단위 파라미터 모델을 웨이퍼 여러 장에 올리는 방법
Kimi K3(3T)를 웨이퍼 59장 파이프라인에 올려 초당 1000~2000+ 토큰을 낸다
AI 이미지 생성 실전 가이드: diffusion부터 에이전트 연동까지
이미지 API를 직접 써 보니 캔버스 단위 과금과 카메라 묘사 프롬프트가 핵심이었다
DeepInfer: DeepSeek 모델용 고성능 대규모 추론 프레임워크 공개
DeepSeek가 프로덕션 추론 엔진 DeepInfer를 Apache-2.0으로 공개했다
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
DeepSeek, 미 연방 민간 기관에서 금지된다: DHS 명령과 개발자 반응
DHS 명령으로 DeepSeek이 미 연방 민간 기관 IT 시스템에서 금지됐다
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30
LLM 프록시를 직접 안 돌리면 무슨 일이 벌어지는지 어떻게 아나
자체 LLM 프록시를 세웠더니 키·모델·캐시 미스를 직접 볼 수 있다
Related Resources
- https://ikyle.me/blog/2026/how-to-setup-a-local-coding-agent-on-macos
- https://github.com/ggml-org/llama.cpp
- https://github.com/earendil-works/pi
- https://unsloth.ai/docs/models/mtp
- https://unsloth.ai/docs/models/gemma-4
- https://unsloth.ai/docs/models/qwen3.6
- https://github.com/jundot/omlx
- https://github.com/antirez/ds4
- https://blog.alexewerlof.com/p/local-llms-for-agentic-coding