728x90

맥미니에서 LLM이 어려운 이유
LLM 리소스 특성
| 모델 | 필요 메모리 |
|---|---|
| qwen:7B | 약 4~8GB |
| gemma:7B | 약 4~8GB |
| qwen:14B | 10~16GB |
| llama3:8B | 6~10GB |
👉 문제
- 맥미니 8GB / 16GB → 부족
macOS 메모리 흐름
- RAM 사용
- Memory Compression
- Swap 사용
👉 LLM은
- 메모리 압축 효과 낮음
- swap 사용 시 속도 매우 느림
Swap 관점 전략
전략 1: swap “활용”이 아니라 “버티기 용도”
👉 목표
- swap = fallback
- RAM = 실제 실행
전략 2: swap 모니터링 필수
vm_stat 1
sysctl vm.swapusage
전략 3: swap 발생 시 판단 기준
| 상태 | 대응 |
|---|---|
| swap < 1GB | 정상 |
| swap 증가 지속 | 모델 과도 |
| swap + CPU 100% | 다운그레이드 필요 |
LLM 운영 구조 설계
👉 “무료 + 로컬 + 안정성”
구성 아키텍처
[사용자]
↓
[CLI / API]
↓
[Ollama]
↓
[Quantized Model]
↓
[macOS Memory + swap]
Ollama 설치 (Mac Mini)
brew install ollama
또는 공식
curl -fsSL https://ollama.com/install.sh | sh
실행
ollama serve
추천 모델 (맥미니 기준)
1. 가장 안정
ollama pull qwen:4b
2. 균형형
ollama pull gemma:7b
3. 성능형 (메모리 충분 시)
ollama pull llama3:8b
중요: Quantization
👉 Ollama는 자동으로 Q4/Q5 사용
👉 효과
- 메모리 ↓
- 성능 약간 ↓
메모리 최적화 핵심
1. context 줄이기
OLLAMA_NUM_CTX=2048 ollama run qwen:4b
2. thread 제한
OLLAMA_NUM_THREAD=4 ollama run qwen:4b
3. GPU (M1/M2) 활용
자동 Metal 사용됨
Swap 고려한 운영 전략
권장 구조
| 항목 | 설정 |
|---|---|
| 모델 | 4B ~ 7B |
| context | 2048 |
| 동시 실행 | 1개 |
| swap | 최소 |
위험 구조
- 14B 이상 모델
- 다중 모델 실행
- context 8k 이상
👉 swap 폭발 + 시스템 멈춤
실제 운영 체크 포인트
1. 실시간 모니터링
top -o mem
memory_pressure
2. swap 감지
sysctl vm.swapusage
3. 모델 종료
ollama ps
ollama stop <model>
보안 관점
LLM + swap 조합은 데이터 유출 가능성 존재
- 입력 데이터 (API key, 내부정보)
- swapfile 저장 가능
FileVault 필수
fdesetup enable
민감 데이터 금지 정책
- 내부 계정 정보 입력 금지
- 고객 데이터 입력 금지
3. 로그 관리
~/.ollama/logs/
실전 운영 시나리오
개인 AI 환경
- 코드 생성
- 문서 요약
- 번역
👉 qwen:4b 추천
내부 업무 자동화
- 로그 분석
- 스크립트 생성
👉 gemma:7b 추천
보안 활용
- 로그 이상 탐지
- 명령어 생성
고급 튜닝 (중요)
모델 캐시 위치
~/.ollama/models
디스크 용량 관리
du -sh ~/.ollama
불필요 모델 삭제
ollama rm qwen:14b
“무료 AI 환경” 완성 구조
Mac Mini
├── Ollama
├── qwen / gemma 모델
├── CLI / API
└── 로컬 AI 환경
장점
- 비용 0
- 데이터 외부 유출 없음
- 완전 로컬
한계
- 성능 제한
- 메모리 의존
- swap 시 느림
300x250
M1/M2 기반 Mac에서 LLM 성능은 Metal(GPU) 활용 방식에 따라 체감이 크게 달라집니다.
단순 “GPU 사용됨” 수준이 아니라 메모리 구조 + 실행 파이프라인 최적화까지 같이 봐야 합니다.
핵심 구조 이해 (M1/M2 + Metal)
Apple Silicon 특징
👉 기존 x86 + GPU 구조와 완전히 다름
| 항목 | 특징 |
|---|---|
| CPU/GPU | 동일 SoC |
| 메모리 | Unified Memory |
| GPU API | Metal |
| VRAM | 없음 (RAM 공유) |
핵심 의미
👉 LLM 실행 시
- CPU ↔ GPU 메모리 복사 없음
- 하지만 → RAM 경쟁 발생
Ollama + Metal 동작 구조
[LLM Model]
↓
[llama.cpp 기반 엔진]
↓
[Metal Backend]
↓
[Apple GPU]
자동 활성화 조건
👉 기본적으로 자동 활성화됨
ollama run qwen:4b
👉 Activity Monitor → GPU History 확인
Metal 사용 여부 확인
log stream --predicate 'process == "ollama"' --info
확인 키워드
metalgpu layers
또는
OLLAMA_DEBUG=1 ollama run qwen:4b
핵심 튜닝 포인트
GPU Layer 조정 (가장 중요)
👉 GPU로 올릴 레이어 수
OLLAMA_NUM_GPU=1 ollama run qwen:4b
또는 내부적으로 자동
중요한 개념
| GPU layer 많음 | GPU 사용 ↑ / RAM 압박 ↑ |
|---|---|
| GPU layer 적음 | CPU fallback |
👉 최적값은
- RAM 상황에 따라 다름
Context Size (성능 핵심)
OLLAMA_NUM_CTX=2048 ollama run qwen:4b
영향
| ctx | 영향 |
|---|---|
| 2048 | 안정 |
| 4096 | 메모리 증가 |
| 8192 | swap 위험 |
👉 추천
- 8GB RAM → 1024~2048
- 16GB RAM → 2048~4096
Thread 튜닝 (CPU 병행)
OLLAMA_NUM_THREAD=4 ollama run qwen:4b
👉 기준
| 코어 | thread |
|---|---|
| M1 | 4~6 |
| M2 | 6~8 |
모델 선택이 성능 80% 결정
추천 모델
| 모델 | 특징 |
|---|---|
| qwen:4b | 빠름 |
| gemma:2b | 매우 빠름 |
| gemma:7b | 균형 |
| llama3:8b | 품질 ↑ |
👉 핵심
❌ 큰 모델 + Metal = 무조건 빠른 것 아님
성능 저하 원인
swap 발생
sysctl vm.swapusage
👉 swap > 1GB → 성능 급락
context 과도
👉 토큰 많아질수록
- GPU memory pressure 증가
다중 모델 실행
ollama ps
👉 동시에 2개 이상 → 성능 반토막
실전 최적 조합 (추천 세팅)
Mac Mini 8GB
OLLAMA_NUM_CTX=1024 \
OLLAMA_NUM_THREAD=4 \
ollama run qwen:4b
Mac Mini 16GB
OLLAMA_NUM_CTX=2048 \
OLLAMA_NUM_THREAD=6 \
ollama run gemma:7b
Mac Mini 32GB
OLLAMA_NUM_CTX=4096 \
OLLAMA_NUM_THREAD=8 \
ollama run llama3:8b
성능 측정 방법
토큰 속도 측정
time ollama run qwen:4b
GPU 사용률
sudo powermetrics --samplers gpu_power
시스템 상태
top -o cpu
아키텍처 최적화 전략
이상적인 구조
[Mac Mini]
├── Ollama
├── Small LLM (4B~7B)
├── Low context
└── Single process
비추천 구조
Multiple LLM
High context
Swap 의존728x90
그리드형(광고전용)
댓글