맥에서 로컬 LLM 돌리기 — M4·M5 통합 메모리는 얼마나 필요할까

CanRun · 2026년 9월 30일 업데이트

맥은 CPU와 GPU가 같은 메모리를 나눠 쓰는 통합 메모리 구조입니다. CanRun 계산으로는 GPU가 그중 약 70%를 쓸 수 있습니다. 그래서 16GB M4에서도 Llama 3.1 8B와 Gemma 3 12B를 Q4_K_M으로 GPU에 모두 올릴 수 있습니다. gpt-oss-20b는 24GB 구성부터 들어갑니다. gpt-oss-120b는 64GB 맥에도 들어가지 않습니다. M4·M5 계열이라면 GPU가 40코어인 128GB M4 Max나 M5 Max가 있어야 합니다. 모델이 들어가는지는 메모리 용량이, 얼마나 빨리 돌아가는지는 칩의 메모리 대역폭이 정합니다.

통합 메모리 중 GPU가 쓸 수 있는 몫

맥에는 그래픽카드처럼 따로 달린 VRAM이 없습니다. CPU와 GPU가 통합 메모리를 나눠 씁니다. CanRun은 그중 약 70%를 GPU가 쓸 수 있다고 보고, 나머지는 macOS와 다른 앱 몫으로 남겨 계산합니다. 애플 Metal 문서에는 GPU가 쓸 수 있는 메모리 한도(recommendedMaxWorkingSetSize)가 나옵니다. 문서는 이 값을 ‘GPU가 성능에 영향 없이 할당할 수 있는 메모리의 근삿값’이라고 설명합니다. CanRun의 70%는 이 한도를 비율 하나로 어림한 값입니다. 용량별로 몇 GB인지는 이 절 끝 표의 ‘GPU 사용 가능량’ 열에서 볼 수 있습니다.

예를 들어 16GB M4에 Qwen3 14B를 Q4_K_M으로 올려 보겠습니다. Q4_K_M은 크기와 품질의 균형을 맞춘 GGUF 양자화 등급입니다. 필요한 메모리는 가중치에 KV 캐시와 연산 버퍼를 더한 값입니다. KV 캐시는 지금까지의 대화를 담아 두는 메모리이고, 연산 버퍼는 계산에 쓰는 작업 공간입니다. 8k 컨텍스트에서 KV 캐시를 f16(양자화하지 않은 16비트)으로 두면 모두 10.9GB가 필요합니다. CanRun이 보는 GPU 몫은 16GB의 약 70%라서 여유가 1GB도 안 됩니다. 아슬아슬하게 들어가니 ollama ps로 확인해 보는 것이 좋습니다. 들어가기는 하지만 속도가 느려서, 8k 기준으로는 겨우 돌아갑니다.

아래 막대는 Apple M4에서 Qwen3 14B를 돌릴 때 메모리가 어떻게 나뉘는지 보여 줍니다. 제목에는 칩 이름만 나오지만 16GB 구성을 기준으로 한 값입니다. ‘GPU가 못 쓰는 영역’은 macOS와 다른 앱에 남겨 두는 나머지 약 30%입니다.

메모리 사용 내역: Apple M4에서 Qwen3 14B (Q4_K_M)

가중치·KV 캐시·연산 버퍼는 모델이 쓰고, OS 예약은 화면 출력 드라이버가 씁니다.
통합 메모리
가중치
9.0GB
KV 캐시
1.3GB
연산 버퍼
0.6GB
여유
0.3GB
GPU가 못 쓰는 영역
4.8GB

16GB 맥이라고 14B급 모델이 다 들어가지는 않습니다. Phi-4(14.7B)는 Q4_K_M, 8k 컨텍스트에서 11.3GB가 필요해 16GB M4의 GPU 몫을 넘습니다. CanRun은 맥에서 모델 일부만 GPU에 올리는 경우를 계산하지 않습니다. 그래서 이 조합은 CPU 전용으로 계산되고, 이론 추정으로 겨우 돌아가는 수준입니다. 실제 Ollama는 모델의 층을 나눠 GPU와 CPU에 올릴 수 있으니, ollama ps의 PROCESSOR 열로 확인합니다. 참고로 Phi-4의 모델 페이지와 조합 페이지는 CPU 전용으로 계산한 필요 메모리에서 연산 버퍼를 빼고 표시합니다. 그래서 필요 메모리가 GPU 몫보다 작아 보입니다.

macOS가 실제로 정해 둔 기본 한도는 메모리 용량에 따라 다릅니다. llama.cpp 토론 #2182에 올라온 코드를 보면, 32GB 이하 맥은 약 3분의 1을 GPU가 쓰지 못하게 남겨 둡니다. 그보다 큰 맥은 약 4분의 1을 남깁니다. 또 애플이 16GB라고 적는 메모리는 이진 단위라서, CanRun이 쓰는 십진 GB로 바꾸면 약 7% 더 큽니다. 이 두 가지를 따지면, 70% 하나로 어림한 CanRun 수치는 32GB 이하 구성에서 실제 기본 한도와 거의 같거나 조금 작습니다. 36GB 이상 구성에서는 실제보다 작게 잡힐 수 있습니다.

같은 토론에는 이 한도를 올리는 방법도 나옵니다. macOS 터미널에서 sudo sysctl iogpu.wired_limit_mb=N을 실행하면 되고, N은 MB 단위입니다. 이 설정은 재시동하면 원래대로 돌아가므로, 계속 쓰려면 /etc/sysctl.conf에 넣어 둡니다. macOS에 남기는 메모리가 너무 적으면 스왑이 심해진다는 경고도 함께 있습니다. CanRun의 표와 판정은 언제나 기본 한도를 기준으로 합니다.

맥의 메모리 용량은 그래픽카드 VRAM과 숫자 그대로 비교할 수 없습니다. 16GB 맥에서 GPU가 쓸 수 있는 양은 아래 표의 16GB 행에 있습니다. 이 값은 Windows에서 RTX 3060 12GB가 쓸 수 있는 11.4GB와 비슷합니다.

아래 표는 메모리 구성별 대역폭과 GPU 사용 가능량을 보여 줍니다. 8k 컨텍스트·f16 KV 기준으로 카탈로그 모델이 판정별로 몇 개인지도 함께 나옵니다. 개수는 데이터가 갱신되면 바뀌니 표에서 확인합니다. 모델별 판정은 Apple M4 같은 칩 페이지에 있습니다. 내 맥의 칩과 메모리는 Apple 메뉴의 ‘이 Mac에 관하여’에서 볼 수 있습니다.

등록된 모델 29종이 구성마다 판정별로 몇 개씩인지 보여 줍니다(8k 컨텍스트, f16 KV 캐시 기준).
하드웨어메모리대역폭GPU 사용 가능량쾌적원활겨우 가능불가
Apple M416GB120 GB/s11.2GB27416
Apple M424GB120 GB/s16.8GB29810
Apple M432GB120 GB/s22.4GB21197
Apple M516GB154 GB/s11.2GB28316
Apple M524GB154 GB/s16.8GB210710
Apple M532GB154 GB/s22.4GB21296
Apple M4 Pro24GB273 GB/s16.8GB10559
Apple M4 Pro48GB273 GB/s33.6GB13745
Apple M4 Pro64GB273 GB/s44.8GB13754
Apple M5 Pro24GB307 GB/s16.8GB11459
Apple M5 Pro48GB307 GB/s33.6GB14735
Apple M5 Pro64GB307 GB/s44.8GB14744
Apple M4 Max (40-core GPU)48GB546 GB/s33.6GB18605
Apple M4 Max (40-core GPU)64GB546 GB/s44.8GB18614
Apple M4 Max (40-core GPU)128GB546 GB/s89.6GB20711
Apple M5 Max (40-core GPU)48GB614 GB/s33.6GB20405
Apple M5 Max (40-core GPU)64GB614 GB/s44.8GB20414
Apple M5 Max (40-core GPU)128GB614 GB/s89.6GB23501

어떤 맥에서 어떤 모델이 돌아가나

아래 표는 이 글에서 다루는 여섯 모델을 8k 컨텍스트, f16 KV 캐시로 돌릴 때 필요한 메모리입니다. 합계를 앞 표의 ‘GPU 사용 가능량’ 열과 비교해 보면 어느 맥에 들어가는지 알 수 있습니다.

8k 컨텍스트에서 모델에 필요한 메모리(기본 양자화 파일 + f16 KV 캐시 + 연산 버퍼)
모델파라미터기본 양자화 파일8k KV 캐시8k 합계
Llama 3.1 8B8.03BQ4_K_M · 4.9GB1.1GB6.6GB
Gemma 3 12B12.2BQ4_K_M · 7.3GB0.5GB8.4GB
Qwen3 14B14.8BQ4_K_M · 9.0GB1.3GB10.9GB
gpt-oss-20b20.9B (활성 3.6B)MXFP4 · 12.1GB0.2GB12.9GB
Qwen3 30B-A3B (2507)30.5B (활성 3.3B)Q4_K_M · 18.6GB0.8GB19.9GB
gpt-oss-120b116.8B (활성 5.1B)MXFP4 · 63.4GB0.3GB64.3GB

그래픽카드는 OS가 VRAM 일부를 따로 씁니다(Windows에서 화면 출력을 맡은 GPU라면 약 0.6GB). 맥은 기본 설정에서 GPU가 통합 메모리의 약 70%를 씁니다.

아래 판정표에서 맥의 각 칸은 그 칩에서 가장 좋은 판정이 나오는 구성 중 메모리가 가장 작은 것을 기준으로 합니다. 어느 구성에서도 돌릴 수 없는 모델은 가장 큰 구성을 기준으로 합니다. 칸 아래의 ‘…GB 구성’ 줄이 그 용량입니다. 행 머리에는 그 칩으로 고를 수 있는 메모리 구성이 모두 적혀 있고, 판정은 8k 컨텍스트·f16 KV 기준입니다.

8k 컨텍스트·f16 KV 캐시 기준 판정입니다. PC는 시스템 RAM 32GB(DDR5)와 Windows를, 맥은 칸에 적은 통합 메모리 용량을 기준으로 합니다. 속도는 오차 범위와 신뢰 라벨을 붙인 추정치입니다.
하드웨어Llama 3.1 8BGemma 3 12BQwen3 14Bgpt-oss-20bQwen3 30B-A3B (2507)gpt-oss-120b
Apple M416/24/32GB
원활
추정 12.0 tok/s9.6–14.4보정된 추정 ±20%
16GB 구성상세
원활
추정 9.2 tok/s7.3–11.0보정된 추정 ±20%
16GB 구성상세
겨우 가능
추정 7.0 tok/s5.6–8.4보정된 추정 ±20%
16GB 구성상세
원활
추정 15.7 tok/s12.6–18.9보정된 추정 ±20%
24GB 구성상세
원활
추정 12.8 tok/s10.2–15.4보정된 추정 ±20%
32GB 구성상세
불가—32GB 구성상세
Apple M4 Pro24/48/64GB
쾌적
추정 27.3 tok/s21.9–32.8보정된 추정 ±20%
24GB 구성상세
쾌적
추정 20.9 tok/s16.7–25.1보정된 추정 ±20%
24GB 구성상세
원활
추정 15.8 tok/s12.7–19.0보정된 추정 ±20%
24GB 구성상세
쾌적
추정 35.8 tok/s28.6–43.0보정된 추정 ±20%
24GB 구성상세
쾌적
추정 29.1 tok/s23.3–34.9보정된 추정 ±20%
48GB 구성상세
불가—64GB 구성상세
Apple M4 Max (40-core GPU)48/64/128GB
쾌적
추정 54.7 tok/s43.7–65.6보정된 추정 ±20%
48GB 구성
쾌적
추정 41.8 tok/s33.4–50.2보정된 추정 ±20%
48GB 구성
쾌적
추정 31.7 tok/s25.3–38.0보정된 추정 ±20%
48GB 구성
쾌적
92.4 tok/s8k 추정 71.6 tok/s (57.3–85.9, 보정된 추정 ±20%)실측 1건 (2k 컨텍스트)
48GB 구성
쾌적
추정 58.2 tok/s46.6–69.9보정된 추정 ±20%
48GB 구성
쾌적
추정 53.4 tok/s42.7–64.0보정된 추정 ±20%
128GB 구성
Apple M5 Pro24/48/64GB
쾌적
추정 30.7 tok/s24.6–36.9보정된 추정 ±20%
24GB 구성
쾌적
추정 23.5 tok/s18.8–28.2보정된 추정 ±20%
24GB 구성
원활
추정 17.8 tok/s14.2–21.4보정된 추정 ±20%
24GB 구성
쾌적
추정 40.3 tok/s32.2–48.3보정된 추정 ±20%
24GB 구성
쾌적
추정 32.7 tok/s26.2–39.3보정된 추정 ±20%
48GB 구성
불가—64GB 구성

16GB M4에서는 Llama 3.1 8B와 Gemma 3 12B가 모두 원활하게 돌아갑니다. Qwen3 14B는 여유가 1GB도 안 되게 아슬아슬하게 들어가고, 속도가 느려 겨우 돌아갑니다. 한국 모델 Kanana 1.5 8B도 16GB M4에서 원활하게 돌아갑니다. EXAONE 등 다른 한국 모델의 판정은 ‘한국 오픈 LLM 정리 — EXAONE·Kanana·HyperCLOVA X·Solar 구동 사양’에서 볼 수 있습니다.

gpt-oss-20b를 돌리려면 24GB 구성이 필요합니다. 기본 배포 형식인 MXFP4 파일만 해도 12.1GB라서 16GB 맥의 GPU 몫(16GB의 약 70%)보다 큽니다. KV 캐시와 연산 버퍼까지 더한 8k 기준 합계는 12.9GB입니다. 그래서 CanRun은 Apple M4에서 gpt-oss-20b를 24GB 구성으로 계산합니다. 24GB 구성에서 M4는 원활하게 돌아가고, M4 Pro와 M5 Pro는 쾌적하게 돌아갑니다. 모델 카드에 있는 ‘16GB 메모리 안에서 돈다’는 설명은 모델이 16GB를 전부 쓸 수 있을 때의 이야기입니다.

Qwen3 30B-A3B (2507)은 토큰마다 전문가 일부만 쓰는 MoE 모델입니다. 전체 파라미터와 활성 파라미터 수는 위 표에 있습니다. 이 모델은 19.9GB가 필요합니다. M4는 32GB 구성에서 원활하게 돌아가고, M4 Pro와 M5 Pro는 48GB 구성에서 쾌적하게 돌아갑니다. 24GB 구성에서는 GPU 몫을 넘습니다. CanRun은 맥에서 부분 오프로드를 계산하지 않으므로 이때는 곧바로 CPU 전용으로 계산합니다. CPU 전용 계산은 이론 추정이라, 판정이 가장 좋아도 겨우 돌아가는 수준에 그칩니다. 판정표가 Apple M4 Pro에서 Qwen3 30B-A3B (2507)을 48GB 구성으로 보여 주는 것도 이 때문입니다. 24GB 구성의 결과는 M4 Pro 칩 페이지에서 볼 수 있습니다.

gpt-oss-120b는 64.3GB가 필요합니다. 64GB 맥에서 GPU가 쓸 수 있는 메모리는 44.8GB뿐입니다. 그래서 Apple M4 Pro에서 gpt-oss-120b는 64GB 구성으로도 돌릴 수 없습니다. M5 Pro와 64GB M4 Max도 마찬가지입니다. 128GB M4 Max(40코어 GPU)에서는 GPU가 89.6GB를 쓸 수 있습니다. 모델 전체가 GPU에 올라가 쾌적하게 돌아갑니다.

48GB M4 Max(40코어 GPU)에서는 나머지 다섯 모델이 모두 쾌적하게 돌아갑니다. 24GB M4 Pro와 24GB M5 Pro는 GPU가 쓸 수 있는 메모리가 같아서 들어가는 모델도 같습니다. 용량이 같으면 칩이 바뀌어도 속도와 판정만 달라집니다.

판정표에 없는 구성과 모델은 Apple M4 Pro, Apple M5 Pro, Apple M4 Max (40-core GPU) 페이지에서 볼 수 있습니다. Apple M5 Max (40-core GPU)도 128GB 구성이면 gpt-oss-120b가 쾌적하게 돌아갑니다.

속도는 메모리 대역폭이 정한다

모델은 토큰을 하나 만들 때마다 활성 가중치와 지금까지 쌓인 KV 캐시를 메모리에서 읽어야 합니다. 그래서 CanRun은 생성 속도를 ‘효율 계수 × 메모리 대역폭 ÷ 토큰당 읽는 양’으로 추정합니다. llama.cpp의 애플 실리콘 성능 토론(#4167)에 모인 공개 측정 결과도 같은 경향을 보입니다. 칩별 메모리 대역폭은 다음과 같습니다.

M4 Pro의 대역폭은 M4의 두 배가 넘고, 40코어 GPU M4 Max는 다시 M4 Pro의 두 배입니다. 같은 모델이라도 대역폭이 큰 칩에서는 판정이 오르기도 합니다. Apple M4 Pro에서 Llama 3.1 8B는 쾌적하게 돌아가지만, 같은 모델이 M4에서는 원활하게 돌아가는 데 그칩니다. Qwen3 14B도 M4에서는 겨우 돌아가지만, 대역폭이 더 큰 기본 M5에서는 같은 16GB로도 원활하게 돌아갑니다.

반면 모델이 GPU에 모두 올라가기만 하면, CanRun 계산에서 메모리 용량은 속도를 바꾸지 않습니다. 같은 칩이라면 메모리 구성이 달라도 속도 추정이 같습니다. 판정표의 네 칩에서 여섯 모델로 확인한 결과입니다. 애플도 M4 Pro의 대역폭을 메모리 용량과 상관없이 한 가지로 적습니다.

예외는 GPU 코어 수가 두 가지인 Max 칩입니다. Apple M4 Max (32-core GPU)는 410 GB/s, Apple M4 Max (40-core GPU)는 546 GB/s입니다. Apple M5 Max (32-core GPU)는 460 GB/s, Apple M5 Max (40-core GPU)는 614 GB/s입니다. 애플 사양표를 보면 36GB 구성은 32코어판에만 있습니다. 이 글의 표는 40코어판을 기준으로 합니다.

메모리에 들어간다고 다 빠른 것도 아닙니다. 48GB M4 Pro에서 MoE 모델인 Qwen3 30B-A3B (2507)은 쾌적하게 돌아갑니다. 반면 필요 메모리가 비슷한 dense 모델 Qwen3 32B(22.5GB)는 GPU에 전부 올라가는데도 겨우 돌아갑니다. dense 모델은 토큰마다 가중치 전체를 읽지만, MoE는 활성 전문가의 가중치만 읽어서 메모리에서 읽는 양이 훨씬 적습니다. M4 Pro에서 MoE인 gpt-oss-20b는 dense인 Qwen3 14B보다 파일이 큽니다. 게다가 리즈닝 모델이라 판정 기준을 1.5배 엄격하게 적용하는데도 쾌적하게 돌아갑니다. 같은 칩에서 Qwen3 14B는 원활하게 돌아가는 데 그칩니다. 다만 MoE라도 GPU 몫을 넘으면 CanRun은 CPU 전용으로 계산합니다. 그래서 24GB M4 Pro에서는 Qwen3 30B-A3B (2507)의 판정이 내려갑니다.

새 세대라고 판정이 늘 오르는 것도, 늘 같은 것도 아닙니다. 판정표의 여섯 모델은 M5 Pro와 M4 Pro에서 판정이 같습니다. 그런데 48GB 구성의 Qwen3 32B는 M4 Pro에서는 겨우 돌아가지만, M5 Pro에서는 원활하게 돌아갑니다. M4와 M5의 세대 차이는 모델마다 따로 확인해야 합니다.

긴 프롬프트를 읽어 들이는 속도(프롬프트 처리 속도)는 대역폭보다 연산 성능에 좌우됩니다. 이 값은 조합 페이지에만 대략적인 추정(±40%)으로 나옵니다.

맥에서 컨텍스트 길이 정하기

컨텍스트가 길어지면 KV 캐시가 커지고, 이 메모리도 가중치와 같은 GPU 몫에서 나갑니다. 맥은 VRAM과 시스템 RAM이 따로 있지 않습니다. 그래서 CanRun 계산에서는 GPU 몫을 넘으면 CPU 전용으로 돌리는 수밖에 없습니다.

아래 표는 Apple M4에서 Llama 3.1 8B를 컨텍스트 길이와 KV 캐시 종류별로 계산한 결과입니다. 16GB 구성을 기준으로 했고, 8k·f16일 때 합계는 6.6GB입니다. 표 제목에는 칩 이름만 나옵니다.

Apple M4에서 Llama 3.1 8B (Q4_K_M): 컨텍스트 길이·KV 캐시 종류별 메모리와 판정
컨텍스트KV f16KV q8_0KV q4_0
4k
6.0GB원활
추정 13.2 tok/s10.6–15.8보정된 추정 ±20%
5.7GB원활
추정 13.8 tok/s11.1–16.6보정된 추정 ±20%
5.6GB원활
추정 14.2 tok/s11.4–17.0보정된 추정 ±20%
8k
6.6GB원활
추정 12.0 tok/s9.6–14.4보정된 추정 ±20%
6.1GB원활
추정 13.1 tok/s10.5–15.7보정된 추정 ±20%
5.8GB원활
추정 13.8 tok/s11.0–16.5보정된 추정 ±20%
16k
7.7GB원활
추정 10.2 tok/s8.2–12.2보정된 추정 ±20%
6.7GB원활
추정 11.9 tok/s9.5–14.2보정된 추정 ±20%
6.2GB원활
추정 13.0 tok/s10.4–15.6보정된 추정 ±20%
32k
10.0GB겨우 가능
추정 7.8 tok/s6.3–9.4보정된 추정 ±20%
8.0GB원활
추정 10.0 tok/s8.0–12.0보정된 추정 ±20%
6.9GB원활
추정 11.7 tok/s9.4–14.1보정된 추정 ±20%
64k
14.6GB미탑재
10.6GB겨우 가능
추정 7.6 tok/s6.1–9.1보정된 추정 ±20%
8.5GB원활
추정 9.8 tok/s7.8–11.7보정된 추정 ±20%
128k
23.8GB미탑재
15.8GB미탑재
9.8GB겨우 가능
추정 4.3 tok/s3.0–5.5이론 추정 ±30%

S = 쾌적 · A = 원활 · B = 겨우 가능 · F = 불가

  • 8k와 16k는 f16 KV로도 GPU에 들어갑니다. 8k에서는 원활하게 돌아가고, 16k도 표에서 판정이 같습니다.
  • 32k·f16은 10.0GB로 GPU 몫 안에 들어갑니다. 하지만 토큰마다 KV 캐시 전체를 읽느라 표에서 판정이 한 단계 내려갑니다. KV 캐시를 q8_0으로 두면 표에서 8k와 같은 판정이 나옵니다.
  • 64k·f16에서는 KV 캐시만 8.6GB로 늘어납니다. 가중치와 합치면 GPU 몫은 물론 CPU 전용 한도도 넘어서, 표에 ‘미탑재’로 나옵니다. KV 캐시를 q8_0(합계 10.6GB)이나 q4_0으로 두면 GPU에 들어갑니다.
  • 128k에서는 KV 캐시를 q4_0으로 둘 때만 CPU 전용으로 돌릴 수 있고, 속도는 이론 추정(±30%)입니다. 조합 페이지에서 128k·q4_0을 고르면 명령도 -ngl 0으로 바뀝니다. CPU 전용으로 계산한 필요 메모리는 연산 버퍼를 빼고 표시합니다. 그래서 GPU 몫보다 작아 보여도 버퍼를 더하면 넘습니다.

컨텍스트가 길어질 때 늘어나는 메모리는 모델마다 다릅니다. 32k 컨텍스트, f16 KV에서 Llama 3.1 8B의 KV 캐시는 4.3GB입니다. gpt-oss-20b는 일부 층이 최근 토큰 일정 개수만 보는 슬라이딩 윈도 방식입니다. 이런 층은 KV 캐시가 일정 길이 이상 늘지 않아서, 전체 KV 캐시가 0.8GB에 그칩니다. 원리는 ‘KV 캐시와 컨텍스트 길이 — 컨텍스트를 늘리면 VRAM이 얼마나 더 필요할까’에서 설명합니다.

메모리가 모자라면 KV 캐시를 양자화하는 방법도 있습니다. Ollama는 서버를 띄울 때 OLLAMA_KV_CACHE_TYPE(f16·q8_0·q4_0)을 지정하고 플래시 어텐션을 켜야만 KV 캐시를 양자화합니다. 이 설정은 그 서버가 돌리는 모든 모델에 적용됩니다 (Ollama 문서, 2026-09-29 확인). 맥에서 Ollama 앱을 쓴다면 launchctl setenv OLLAMA_FLASH_ATTENTION 1과 launchctl setenv OLLAMA_KV_CACHE_TYPE q8_0을 실행한 뒤 앱을 다시 시작하면 됩니다. CanRun은 KV 캐시를 q8_0으로 두면 f16의 약 54%, q4_0으로 두면 약 29%로 계산합니다. 조합 페이지에서 KV 캐시를 q8_0으로 고르면 llama.cpp 명령의 -fa on 뒤에 --cache-type-k q8_0 --cache-type-v q8_0이 붙습니다.

맥에서 컨텍스트 길이를 바꾸는 방법은 다음과 같습니다. 명령은 모두 macOS 터미널에서 실행합니다.

  • Ollama 앱: 설정(Settings)의 컨텍스트 길이 슬라이더를 옮깁니다.
  • 환경 변수(Ollama 앱): launchctl setenv OLLAMA_CONTEXT_LENGTH 16384를 실행하고 Ollama 앱을 다시 시작합니다. Ollama FAQ에 따르면 맥 앱은 launchctl setenv로 정한 환경 변수를 시작할 때 읽습니다. 맥을 재시동하면 이 설정이 사라지므로 그때마다 다시 실행해야 합니다.
  • 터미널에서 한 번만 시험해 보기: 앱을 끄고 OLLAMA_CONTEXT_LENGTH=16384 ollama serve로 서버를 직접 띄웁니다.
  • llama.cpp: llama-server -hf bartowski/Meta-Llama-3.1-8B-Instruct-GGUF:Q4_K_M -c 16384 -ngl all -fa on처럼 -c 옵션으로 정합니다. llama.cpp 빌드 문서에 따르면 macOS 빌드는 애플 GPU 가속인 Metal이 기본으로 켜져 있습니다.

길이를 정하지 않으면 Ollama가 기본값을 고릅니다. Ollama는 감지한 GPU 메모리가 24GiB 미만이면 4k, 24~48GiB면 32k, 48GiB 이상이면 256k 토큰을 기본 컨텍스트 길이로 씁니다 (Ollama 문서, 2026-09-29 확인). 맥의 통합 메모리가 이 중 어느 구간으로 잡히는지는 CanRun이 확인하지 못했습니다. ollama ps의 CONTEXT 열에서 실제 길이를, PROCESSOR 열에서 100% GPU인지를 확인합니다. 설정 방법 전반은 ‘Ollama가 느리거나 앞 내용을 잊을 때 — 컨텍스트 기본값’에서 다룹니다.

더 읽을거리:

칩 페이지에서는 메모리 구성마다 모든 모델의 판정을 볼 수 있습니다.

이 숫자는 얼마나 확실한가

메모리 수치는 실제 GGUF 파일 크기에, 모델 설정(config)으로 구한 KV 캐시와 연산 버퍼 식을 더해 공식으로 계산합니다. 그래서 오차 범위를 붙이지 않습니다. 다만 GPU 몫 70%는 macOS 기본 한도를 비율 하나로 어림한 값입니다. 첫 절에서 설명한 대로 실제 기본값은 용량에 따라 다릅니다. 그래서 36GB 이상 구성에서는 CanRun 수치가 실제보다 작게 잡힐 수 있습니다.

속도는 추정치이고, 신뢰 라벨과 오차 범위를 함께 붙입니다. 맥에서 모델을 GPU에 전부 올리는 조합 가운데 공개 벤치마크 결과가 없는 것에는 ‘보정된 추정 ±20%’를 붙입니다. ±12%는 NVIDIA·AMD 그래픽카드의 dense 모델에만 씁니다. 맥에서 CPU 전용으로 돌리는 조합은 실제로 잰 속도와 맞춰 본 적이 없어서 ‘이론 추정 ±30%’를 붙입니다.

CanRun은 애플의 기본·Pro·Max 칩에 같은 효율 계수를 씁니다. 그래서 추정 속도가 대역폭에 비례해 오릅니다. 그런데 llama.cpp 토론 #4167의 공개 측정은 다릅니다. M4 Pro에서 40코어 GPU M4 Max로 대역폭이 두 배가 돼도, 생성 속도는 두 배에 뚜렷이 못 미칩니다. 그러니 Max 칩의 추정치는 오차 범위의 아래쪽까지 염두에 두고 읽는 것이 좋습니다. gpt-oss-20b·gpt-oss-120b 같은 리즈닝 모델은 답하기 전에 생각하는 데 토큰을 더 씁니다. 그래서 판정 기준을 1.5배 엄격하게 적용합니다.

CanRun 계산에 넣지 않는 것도 있습니다.

  • MLX 형식 모델은 계산하지 않습니다. MLX는 애플이 만든 머신러닝 프레임워크입니다. CanRun의 추정은 GGUF 파일을 기준으로 하고, llama.cpp 결과로 보정했습니다.
  • 함께 열어 둔 다른 앱이 쓰는 메모리는 따로 계산하지 않습니다.
  • 노트북의 발열과 전력 제한은 오차 범위 안에서만 감안합니다.
  • iogpu.wired_limit_mb로 올린 한도는 반영하지 않습니다.
  • 모델이나 요청 여러 개를 동시에 돌리는 경우도 계산하지 않습니다.

내 맥에서 모델이 실제로 어떻게 올라갔는지는 ollama ps로 확인합니다. SIZE 열에서 차지한 메모리를, PROCESSOR 열에서 100% GPU인지를, CONTEXT 열에서 컨텍스트 길이를 볼 수 있습니다. llama.cpp라면 모델을 불러올 때 나오는 로그를 봅니다. 칩별 결과는 Apple M4·Apple M4 Pro 같은 칩 페이지에 있습니다. 그래픽카드와 비교한 내용은 ‘로컬 LLM 사양 — VRAM 8~32GB로 돌릴 수 있는 모델 (2026)’에서 볼 수 있습니다.

이 글에서 말하는 판정은 모두 8k 컨텍스트·f16 KV 기준입니다. 판정별 조건은 아래 표와 같습니다.

판정 읽는 법

쾌적
GPU에 전부 올라가고 20 tok/s 이상
원활
GPU에 전부 올라가고 8~20 tok/s, MoE 전문가를 시스템 RAM에 두고 20 tok/s 이상, 또는 GPU에 90% 이상 올라가고 8 tok/s 이상
겨우 가능
2~8 tok/s, CPU 전용, GPU에 90% 미만, 또는 MoE 전문가를 RAM에 두고 20 tok/s 미만
불가
메모리에 안 들어가거나 2 tok/s 미만

자주 묻는 질문

통합 메모리 16GB로 로컬 LLM을 돌릴 수 있나요?

CanRun 계산으로는 8B~12B 모델을 Q4_K_M으로 돌릴 수 있습니다. Llama 3.1 8B와 Gemma 3 12B는 16GB M4의 GPU에 모두 올라가 원활하게 돌아갑니다. 14B급은 모델에 따라 갈립니다. Qwen3 14B는 8k에서 10.9GB가 필요해 16GB의 약 70% 안에 아슬아슬하게 들어가지만, M4에서는 겨우 돌아갑니다. Phi-4는 GPU 몫을 넘습니다. ollama ps에서 100% GPU로 나오는지 확인해 보는 것이 좋습니다. gpt-oss-20b는 파일만 해도 12.1GB라서 16GB 맥의 GPU 몫에 들어가지 않습니다. 모델 카드의 ‘16GB 메모리 안에서’라는 말은 모델이 16GB를 전부 쓸 수 있다는 전제입니다. 컨텍스트를 늘리면 여유가 더 줄어드니 위의 컨텍스트 표를 함께 봅니다.

GPU가 통합 메모리를 70%보다 더 쓰게 할 수 있나요?

네, 올릴 수 있습니다. llama.cpp 토론 #2182에 따르면 macOS 터미널에서 sudo sysctl iogpu.wired_limit_mb=N을 실행하면 됩니다. N은 MB 단위이고, 재시동하면 원래대로 돌아갑니다. 계속 쓰려면 /etc/sysctl.conf에 넣어 둡니다. macOS에 남기는 메모리가 너무 적으면 스왑이 심해진다는 경고가 있습니다. 그러니 조금씩 올리고 다른 앱은 닫아 두는 것이 좋습니다. CanRun의 표는 기본 한도를 기준으로 하므로, 한도를 올린 뒤에는 ollama ps로 직접 확인해야 합니다. 참고로 macOS 기본 한도도 용량에 따라 다릅니다. 32GB 이하 맥은 약 3분의 2를, 그보다 큰 맥은 약 4분의 3을 GPU가 쓸 수 있습니다. 그래서 CanRun 표는 실제 기본 한도와 거의 같거나 그보다 작게 잡혀 있습니다.

통합 메모리가 크면 모델이 더 빨리 도나요?

모델이 이미 GPU에 모두 올라간다면, 메모리가 커져도 빨라지지 않습니다. CanRun 계산에서 풀 GPU 속도는 칩의 메모리 대역폭이 정합니다. 같은 칩이라면 모델이 GPU에 다 들어가는 메모리 구성끼리는 속도 추정이 같습니다. 메모리가 크면 달라지는 것은 들어가는 모델과 컨텍스트 길이입니다. 예를 들어 Qwen3 30B-A3B (2507)은 48GB M4 Pro에서는 GPU에 모두 올라가 쾌적하게 돌아갑니다. 하지만 24GB에서는 CPU 전용으로 계산돼 겨우 돌아가는 수준에 그칩니다. 예외는 GPU 32코어판과 40코어판의 대역폭이 다른 M4 Max와 M5 Max입니다. M4 Max는 32코어판이 410 GB/s, 40코어판이 546 GB/s입니다. 애플 사양표를 보면 36GB 구성은 32코어판에만 있습니다.

맥의 통합 메모리는 그래픽카드 VRAM과 어떻게 다른가요?

GPU가 쓸 수 있는 몫과 고를 수 있는 최대 용량이 다릅니다. CanRun 계산으로는 맥의 GPU가 통합 메모리의 약 70%만 쓰고, 모델이 넘치면 나눠 둘 곳이 없습니다. 대신 고를 수 있는 최대 메모리 용량은 그래픽카드 VRAM보다 훨씬 큽니다. 16GB 맥이 모델에 내줄 수 있는 메모리는 Windows에서 RTX 3060 12GB가 쓸 수 있는 11.4GB와 비슷합니다. PC라면 CanRun은 넘친 부분을 그래픽카드와 시스템 RAM에 나눠 두는 경우(부분 오프로드, MoE 전문가 RAM 배치)를 계산합니다. 맥에서는 곧바로 CPU 전용으로 계산하고, 이론 추정이라 판정도 겨우 돌아가는 수준을 넘지 않습니다. 실제로 어떻게 올라갔는지는 ollama ps로 확인합니다. 반면 128GB M4 Max(40코어 GPU)는 gpt-oss-120b를 GPU에 모두 올려 쾌적하게 돌릴 수 있습니다. CanRun 카탈로그에서 가장 큰 그래픽카드는 32GB입니다. 큰 모델을 돌리려면 그 모델의 필요 메모리를 보고 통합 메모리 용량을 고르는 것이 좋습니다.

출처

이 페이지의 속도는 오차 범위와 신뢰 라벨을 붙인 추정치이거나, 출처를 밝힌 공개 벤치마크 결과입니다. 판정은 표마다 적어 둔 구성을 기준으로 합니다.