맥 스튜디오 128GB로 120B 로컬 LLM 돌려봤더니 가장 빠른 건 120B가 아니었다

맥 스튜디오 M4 Max 128GB에서 측정한 4개 로컬 LLM의 Generation 속도 비교 — gemma4:latest 88 tok/s, gemma4:26b 85 tok/s, gpt-oss:120b 47 tok/s, qwen3.6 25 tok/s

ChatGPT Plus로 작업하다 “5시간 뒤에 다시 시도하세요” 메시지 봐본 적 있으시죠?

로컬 LLM 돌려보고 싶긴 한데 어떤 맥 스펙에서 어디까지 되는지 감 안 잡히시죠?

실제 수치로 정리된 벤치마크는 찾기 어렵죠?

맥 스튜디오 M4 Max 128GB를 로컬 LLM 서버로 쓰면서 같은 질문에 부딪혔다. 그래서 이번 달에 열려 있는 로컬 모델 4종을 같은 조건에서 돌려 비교했다. 결론부터 적는다 — 가장 빠른 모델은 120B가 아니었다. 26B Dense 모델이 117B MoE 모델보다 거의 두 배 빨랐다. 이유는? 메모리 접근 패턴.

타이틀이 약속한 반전, 왜 생겼나

gpt-oss:120b는 117B 파라미터짜리 MoE 구조. 총량은 117B지만 토큰 생성 한 번에 활성화되는 건 5.1B 정도. 이론적으로는 작은 모델만큼 빨라야 한다. 현실은 달랐다.

MoE는 토큰마다 활성화되는 “전문가”가 바뀐다. 그래서 모델 전체(65GB)가 메모리에 상주해야 하고, 토큰마다 접근 위치가 비국소적(non-local)으로 흩어진다. 활성 파라미터 5.1B라는 숫자만 보면 훨씬 빨라야 맞다. 실제로 요구되는 메모리 대역폭은 전체 모델 크기에 가깝다는 얘기. 이 비교에서 직접 확인한 결과다.

반면 gemma4:26b는 Dense 모델. 26B가 전부 계산에 참여한다. 파라미터 수 자체는 많지만 메모리 접근이 선형적이라 Apple Silicon의 통합 메모리 대역폭(546GB/s)을 효율적으로 쓸 수 있다. 같은 하드웨어에서 Dense가 MoE를 앞지르는 지점이 여기. 맥에서 로컬 LLM 고를 때 “MoE니까 활성 파라미터 작으면 빠르겠지” 하는 직관이 깨지는 순간.

테스트 환경

하드웨어는 Mac Studio M4 Max, 통합 메모리 128GB, 메모리 대역폭 546GB/s.

런타임은 Ollama 0.20.7 (llama.cpp 기반).

동일 프롬프트 3종 — 짧은 한국어, 짧은 수학, 긴 코드 생성. Cold start(첫 로드)와 Warm(모델 올라간 상태)을 분리 측정.

결과

4-way 비교표. 단위 tokens/second(tok/s). Prompt eval은 프롬프트 입력 처리 속도(초당 토큰 몇 개를 읽어들이는가), Generation은 응답 생성 속도(초당 토큰 몇 개를 출력하는가).

모델 크기(디스크) 활성 파라미터 Cold Load Prompt eval Generation
gpt-oss:120b 65GB 5.1B (MoE) 16.8s 620 tok/s 47 tok/s
gemma4:26b 17GB ~26B (Dense) 5.0s 460 tok/s 85 tok/s
gemma4:latest 9.6GB ~9B (Dense) 3.2s 679 tok/s 88 tok/s
qwen3.6:35b-a3b 38GB ~3B (MoE) 19.1s 140 tok/s 25 tok/s

예상 벗어난 지점 세 개.

첫째, 9.6B gemma4:latest가 88 tok/s로 가장 빠름. 크기 대비 성능이니 예상 범위.

둘째, 26B gemma4:26b가 120B gpt-oss를 거의 두 배 속도로 앞선다. 85 vs 47. 앞서 설명한 MoE 메모리 접근 패턴이 이유.

셋째, qwen3.6:35b-a3b-q8_0가 25 tok/s로 가장 느리다. MoE인데도 왜 느릴까? Q8(8-bit) 양자화 때문이다. gemma4는 Q4 계열, gpt-oss는 MXFP4(4-bit 계열)를 쓰는데 qwen은 Q8. 같은 활성 파라미터여도 메모리 대역폭을 두 배 쓴다. 이번 비교는 기본 Ollama 제공 버전 기준. 기록해둔다. “속도 순위”가 아니라 “같은 조건에서의 처리량” 비교.

실전 관점 추천

용도에 따라 다르다.

빠른 응답이 필요한 일반 채팅·글쓰기 보조에는 gemma4:latest. 9.6B에 88 tok/s, 용량 대비 가장 빠르다.

속도와 품질 균형, 한국어 포함이면 gemma4:26b. 85 tok/s에 17GB. 개인 기기 기준 가장 쓸 만한 선택.

복잡한 추론, 코딩, 긴 사고 과정이 필요하면? gpt-oss:120b. 47 tok/s지만 reasoning(chain-of-thought)을 내장해서 복잡한 문제 품질이 낫다.

qwen3.6:35b-a3b-q8_0는 이번 비교 기준으로 추천에서 제외. Q4 변형이 추후 측정되기 전까지는 gemma 계열이 더 나은 선택이다.

128GB라는 메모리 스펙의 진짜 가치는 “큰 모델을 돌린다”보다 “큰 모델을 돌리면서 다른 일도 동시에 할 수 있다”에 가깝다. gpt-oss:120b를 올려도 40GB 이상 여유가 남고, 긴 컨텍스트까지 꽉 채워도 swap 없이 돈다. 64GB였다면 빠듯했을 영역.

이번 편의 결론

MoE가 Dense보다 무조건 빠르지 않다. 활성 파라미터 크기가 작아도 메모리 접근 패턴이 throughput을 결정한다. 맥 로컬 LLM 고를 때는 MoE/Dense 구조와 양자화 수준 두 축을 같이 봐야 한다.

시리즈 다음 편 — 이 모델을 실전 투입한다

이번 편은 벤치마크만 했다. 원래 목적은 ChatGPT Plus 쿼터가 터졌을 때 맥 스튜디오 로컬 LLM이 받아주게 만드는 것. 다음 편에서는 이 gpt-oss:120b를 실제 에이전트 fallback 체인 끝에 꽂아서, 쿼터가 터지는 순간 로컬로 자동 전환되게 만든 과정을 적는다. 설정 JSON 그대로 공개한다.

댓글

이 블로그의 인기 게시물

[알고리즘] Suffix Tree

[기타IT] php설치

[Digital Signage] Xibo 설치