개요

외부 AI API(OpenAI, Anthropic 등)에 코드나 문서를 보내지 않고 직접 서버에서 LLM을 돌리고 싶을 때가 있다. 사내 코드나 민감한 문서를 다뤄야 하거나, API 사용량 걱정 없이 반복적으로 실험하고 싶거나, 네트워크가 불안정한 환경에서도 동작해야 하는 경우다. 다만 로컬 LLM은 상용 API 대비 모델 품질과 추론 속도에서 분명한 한계가 있어서, “완전히 대체"보다는 “용도에 맞게 병행"하는 접근이 현실적이다. 이 블로그는 아래 순서로 구성을 다룬다.

구축 순서

  1. 로컬 LLM 서버 자체를 세운다 (기반 인프라, 먼저 이것부터) → Ollama 설치와 로컬 LLM 서버 구축 방법
  2. 서버 위에서 평소 쓰던 도구(Claude Code)를 로컬 모델로 연결한다 → Claude Code를 Ollama 로컬 LLM으로 사용하는 방법 (Ollama가 먼저 떠 있어야 함)

로컬 LLM을 고려하는 이유

  • 데이터 프라이버시 — 사내 코드, 개인정보가 포함된 문서를 외부 API로 보내지 않아도 된다.
  • 비용 — 반복적으로 대량 실험을 돌려도 API 과금이 없다. 전기료와 하드웨어 감가상각만 고려하면 된다.
  • 네트워크 독립성 — 인터넷 연결이 불안정하거나 아예 없는 환경에서도 동작한다.
  • Rate limit 없음 — 상용 API의 분당·일당 요청 제한에 걸릴 걱정이 없다.

현실적인 한계

GPU 없는 환경(예: Oracle Cloud Always Free A1 ARM 인스턴스)에서는 추론 속도가 상용 API보다 눈에 띄게 느리고, 돌릴 수 있는 모델 크기도 제한적이다. 7B급 모델은 CPU로도 그럭저럭 돌아가지만, 코드 생성 품질은 최신 상용 모델에 크게 못 미친다. 즉 로컬 LLM은 “느리고 조금 아쉬운 답변을 감수하더라도 데이터를 밖으로 내보내고 싶지 않은” 상황에 맞는 선택지이지, 무조건적인 상용 API 대체재는 아니다.

모델 크기와 양자화 고르는 법

같은 모델이라도 파라미터 수와 양자화(quantization) 수준에 따라 필요한 메모리와 속도가 크게 달라진다.

  • 7B급 — 8GB 메모리 안팎의 서버에서도 Q4 양자화로 돌아간다. 간단한 요약·분류·짧은 코드 스니펫 정도에 적합하다.
  • 13B~14B급 — 16GB 안팎이 필요하다. 7B보다 맥락 이해력이 나아지지만 여전히 복잡한 멀티파일 리팩터링 같은 작업에는 한계가 있다.
  • 30B 이상 — CPU 추론으로는 응답 속도가 실용적이지 않은 경우가 많아, GPU 없는 환경이라면 굳이 시도할 이유가 크지 않다.
  • 양자화 수준(Q4/Q5/Q8) — 숫자가 낮을수록 메모리를 덜 쓰지만 답변 품질이 조금씩 떨어진다. Q4가 가장 흔한 절충안이다.

결국 “내 서버 메모리로 어디까지 돌릴 수 있는가"가 모델 품질보다 먼저 정해지는 제약 조건이 된다.

Ollama — 로컬 LLM 서버의 시작점

Linux 서버에 Ollama를 설치하고 외부 접속을 허용하는 방법, HTTP API 호출 예제, 그리고 Oracle Cloud A1 ARM 같은 제한된 스펙에서 어떤 모델을 골라야 하는지까지 정리했다. GPU 없는 환경의 현실적인 한계도 함께 다룬다. Ollama는 모델 다운로드·실행·API 서빙을 하나의 CLI로 처리해주기 때문에, llama.cpp를 직접 빌드하는 것보다 시작 장벽이 훨씬 낮다.

Ollama 설치와 로컬 LLM 서버 구축 방법

Claude Code + Ollama — 익숙한 도구를 로컬 모델로

Claude Code를 Anthropic API 대신 로컬 Ollama 모델에 연결하는 방법이다. Claude 호환 API, 환경변수 설정, 모델 선택, 필요 시 LiteLLM 프록시까지 정리했다. 이미 익숙한 CLI 워크플로를 그대로 쓰면서 백엔드만 로컬 모델로 바꾸는 방식이라, 새로운 도구를 배울 필요 없이 데이터 프라이버시만 확보하고 싶을 때 적합하다.

Claude Code를 Ollama 로컬 LLM으로 사용하는 방법

앞으로 다룰 것

LiteLLM 같은 프록시로 여러 로컬·상용 모델을 하나의 엔드포인트로 라우팅하는 방법이나, 로컬 문서를 검색해 답변에 활용하는 RAG 연동은 아직 다루지 않았다. 로컬 인프라가 어느 정도 자리잡으면 이어서 정리할 예정이다.