개발 블로그
← 블로그 목록

Ollama로 로컬 LLM 돌려보기 — 맥미니 M1에서의 한계와 가능성


ChatGPT 없이 로컬에서 LLM을 돌릴 수 있다는 걸 알고 나서 한번 해봐야겠다고 생각했습니다. 맥북에서 먼저 해보고, 항상 켜져 있는 맥미니 M1에도 붙여보면 API처럼 쓸 수 있지 않을까 기대했습니다.

Ollama 설치

Homebrew 한 줄로 설치됩니다.

brew install ollama

설치 후 서비스를 시작하면 기본적으로 localhost:11434에 REST API가 열립니다.

ollama serve

또는 백그라운드 서비스로 등록할 수도 있습니다.

brew services start ollama

모델 실행

ollama run 명령어로 모델을 내려받고 바로 대화할 수 있습니다. 첫 실행 시 모델 파일을 다운로드합니다.

ollama run qwen2.5:7b

다운로드가 끝나면 터미널에서 바로 채팅할 수 있고, REST API로도 호출할 수 있습니다.

curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "Spring Boot에서 @Scheduled를 쓸 때 주의할 점은?",
  "stream": false
}'

테스트한 모델들

Qwen 7B (Alibaba)

Alibaba에서 만든 오픈소스 모델입니다. 한국어 이해도가 나쁘지 않고, 코드 관련 질문에도 꽤 쓸 만한 답변을 줬습니다. 7B 모델 기준으로 맥북에서는 응답 속도가 체감할 만큼 빨랐습니다.

ollama run qwen2.5:7b

EXAONE 7B (LG AI Research)

LG에서 공개한 한국어 특화 모델입니다. 한국어 퀄리티는 확실히 더 자연스러웠습니다. 7B 규모치고는 한국어 맥락 파악이 잘 됐고, 개발 관련 한국어 질문에서는 Qwen보다 나은 경우도 있었습니다.

ollama run exaone3.5:7.8b

Kakao Kanana (Kakao)

카카오에서 공개한 한국어 LLM입니다. 역시 한국어 특화라 자연스러운 한국어 응답이 장점입니다. 다만 응답 속도나 모델 크기 측면에서 맥미니에서는 버거운 편이었습니다.

ollama run kanana-s:preview

맥미니 M1 16GB에서의 한계

항상 켜져 있는 맥미니에 Ollama를 올려서 내부 API 서버처럼 쓰면 좋겠다고 생각했는데, 현실은 달랐습니다.

메모리 압박

M1 칩은 CPU와 GPU가 메모리를 공유(Unified Memory)합니다. 7B 모델은 4비트 양자화 기준으로 약 4~5GB의 메모리를 사용합니다. 맥미니 M1 16GB라면 어느 정도 여유가 있어 보이지만, 이미 Docker 컨테이너들이 돌아가고 있는 상태에서는 빡빡해집니다.

# 실행 중인 모델 메모리 사용량 확인
ollama ps

응답 속도 체감 차이

맥북 M 시리즈 최신 칩과 비교하면 M1의 GPU 성능이 낮아서, 7B 모델에서도 토큰 생성 속도가 느립니다. 짧은 답변은 괜찮지만 길게 생성할수록 기다리는 게 눈에 띕니다. 서버에서 API처럼 빠르게 쓰기엔 무리가 있습니다.

발열과 팬 소음

맥미니 M1은 평소에 팬이 거의 안 돌아가는데, LLM 추론 중에는 팬이 확실히 올라옵니다. 24시간 서버 역할을 하는 장비에서 LLM까지 지속 실행하는 건 장기적으로는 부담입니다.

그래도 쓸 만한 케이스

맥미니에서 상시 서비스로 운영하긴 어렵지만, 로컬 LLM 자체는 충분히 실용적인 케이스가 있습니다.

  • 코드 리뷰 보조: 외부로 코드를 보내기 꺼려질 때 로컬에서 돌리면 프라이버시 걱정이 없습니다.
  • 오프라인 환경: 인터넷 없는 환경에서도 동작합니다.
  • 프롬프트 실험: API 비용 없이 다양한 프롬프트를 빠르게 테스트하기 좋습니다.
  • 임베딩 생성: 7B 생성 모델보다 훨씬 가벼운 임베딩 모델(nomic-embed-text 등)은 맥미니에서도 충분히 쓸 만합니다.

Ollama REST API 활용

Spring Boot에서 RestTemplate이나 WebClient로 간단하게 연동할 수 있습니다.

// Ollama generate API 호출 예시
Map<String, Object> body = new HashMap<>();
body.put("model", "qwen2.5:7b");
body.put("prompt", prompt);
body.put("stream", false);

ResponseEntity<Map> response = restTemplate.postForEntity(
    "http://localhost:11434/api/generate",
    body,
    Map.class
);
String answer = (String) response.getBody().get("response");

정리

Ollama는 설치가 간단하고 Apple Silicon에서 GPU 가속이 잘 됩니다. 맥북 최신 모델이라면 7B 모델을 꽤 쾌적하게 쓸 수 있고, 맥미니 M1에서도 가볍게 실험하는 용도로는 충분합니다. 다만 24시간 API 서버로 운영하기엔 메모리 여유와 발열 측면에서 맥미니 M1 16GB의 한계가 있었습니다. 더 활발하게 쓰려면 맥미니 M2 Pro 이상이나 더 많은 메모리가 필요할 것 같습니다.