13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] AI 성능

  • [AI] 로컬 LLM 성능 최적화: Ollama와 Claude Sonnet 비교 및 최신 동향

    [AI] 로컬 LLM 성능 최적화: Ollama와 Claude Sonnet 비교 및 최신 동향

    로컬 LLM, 왜 이렇게까지? 클라우드와 온프레미스의 갈림길에서

    안녕하세요, 13년차의 서버실 주인장입니다. 요즘 LLM(Large Language Model, 대규모 언어 모델) 얘기가 정말 많잖아요? 저도 인프라 엔지니어이다 보니, 이 기술이 불러올 변화에 늘 촉각을 곤두세우고 있습니다. 그런데 클라우드에서 API(Application Programming Interface)를 호출해서 쓰는 LLM 서비스들, 솔직히 비용이 만만치 않더라고요. 그리고 민감한 데이터를 다룰 때는 프라이버시 문제도 신경 쓰이고요.

    그래서 저처럼 홈랩을 운영하는 인프라 덕후들은 늘 고민합니다. ‘이 비싼 거, 내가 직접 돌릴 수는 없을까?’ 이 질문에서부터 저의 로컬 LLM 삽질이 시작됐습니다. 특히 최근 각광받는 Ollama(올라마)를 활용해서 로컬 LLM 환경을 구축하고, 제가 평소에 자주 쓰는 Claude Sonnet(클로드 소네트)과 성능을 비교해 보면서 어떤 점이 좋고 아쉬웠는지 솔직하게 이야기해보려고 합니다. NPU(Neural Processing Unit, 신경망 처리 장치) 활용이 얼마나 중요한지도 함께 다뤄볼게요. 혹시 여러분도 이런 고민 해보신 적 있으신가요? 제 경험이 작은 도움이 되기를 바랍니다. 이 모든 과정은 효율적인 엣지 AI 및 퍼스널 AI 환경 구축을 위한 여정입니다.

    Ollama 기반 로컬 LLM과 Claude Sonnet 클라우드 LLM 아키텍처 비교 다이어그램

    로컬 LLM과 클라우드 LLM의 대략적인 아키텍처 비교 다이어그램입니다. 로컬 환경에서 Ollama를 통해 모델을 실행하는 모습과 클라우드 API를 호출하는 구조를 시각적으로 보여줍니다.

    Ollama, 로컬 LLM의 든든한 동반자

    Ollama가 무엇이냐고요? 쉽게 말해, 로컬 환경에서 다양한 LLM을 쉽게 설치하고 실행할 수 있도록 도와주는 오픈소스 프레임워크입니다. 마치 Docker(도커)로 컨테이너 이미지를 다루듯이, Ollama를 사용하면 Llama 3(라마 3), Phi-3(파이-3), Mistral(미스트랄) 같은 최신 모델들을 명령줄 한 줄로 다운로드하고 바로 실행할 수 있어요. 처음엔 ‘이게 뭔가 싶었는데, 써보니까 진짜 편하더라고요! 이는 진정한 온프레미스 AI, 엣지 AI 환경을 구축하는 핵심적인 단계입니다.

    Ollama의 가장 큰 장점은 바로 하드웨어 가속을 적극적으로 활용한다는 점입니다. 특히 요즘 나오는 CPU(Central Processing Unit, 중앙 처리 장치)에 내장된 NPU나, 강력한 외장 GPU(Graphics Processing Unit, 그래픽 처리 장치)를 활용해서 LLM 추론(inference) 성능을 비약적으로 끌어올릴 수 있거든요. 클라우드 LLM, 예를 들어 Claude Sonnet 같은 서비스는 모든 컴퓨팅 자원을 클라우드 제공자가 관리해줘서 편리하지만, Ollama는 내 손으로 직접 자원을 최적화할 수 있다는 매력이 있죠. 이는 AI 비용 최적화에도 큰 도움이 됩니다.

    홈랩에 Ollama 설치하고 로컬 LLM 돌려보기

    자, 그럼 이제 제 홈랩에 Ollama를 설치하고 LLM을 한번 돌려볼까요? 저는 주로 Docker를 많이 쓰지만, Ollama는 바이너리 설치도 아주 쉽습니다. 여기서는 macOS(맥OS) 기준으로 설명해볼게요.

    1. Ollama 설치:
      터미널에서 다음 명령어를 실행하면 끝입니다. 맥용 앱이나 리눅스/윈도우 설치 가이드도 공식 홈페이지에 잘 나와 있어요.

      curl -fsSL https://ollama.com/install.sh | sh

      ✅ 설치가 완료되면, ollama --version 명령어로 제대로 설치되었는지 확인할 수 있습니다.

    2. 모델 다운로드 및 실행:
      Ollama는 다양한 모델을 제공합니다. 저는 가볍게 시작하기 위해 llama3 모델을 선택했어요. (또는 phi3 같은 경량 모델도 좋습니다.)

      ollama run llama3

      이 명령어를 입력하면 llama3 모델이 자동으로 다운로드되고 바로 채팅 세션이 시작됩니다. 정말 간단하죠? 처음엔 모델 다운로드하는 데 시간이 좀 걸릴 수 있습니다.

    3. Modelfile을 통한 커스터마이징 맛보기:
      Ollama는 Modelfile이라는 걸 이용해서 모델을 커스터마이징할 수 있어요. 예를 들어, 시스템 프롬프트(System Prompt)를 미리 설정해두거나, 특정 파라미터(Parameter)를 조절할 수 있습니다. 저는 모델이 항상 친절하게 답변하도록 설정해봤어요.

      # Modelfile 생성
      FROM llama3
      SYSTEM You are a friendly, helpful, and concise assistant.
      
      # Modelfile로 새 모델 생성
      ollama create my-friendly-llama -f ./Modelfile
      
      # 새 모델 실행
      ollama run my-friendly-llama

      💡 팁: FROM llama3:8b-instruct-q4_0처럼 특정 양자화(quantization)된 모델을 지정해서 더 작은 용량, 더 빠른 속도를 얻을 수도 있습니다. 이에 대해서는 뒤에서 더 자세히 이야기할게요.

    💡 팁: Ollama는 REST API를 제공하여 다른 애플리케이션과 쉽게 연동할 수 있습니다. ollama serve 명령으로 서버를 실행한 후, 다양한 언어의 라이브러리(예: LangChain, LiteLLM)를 통해 접근해보세요.

    Ollama로 Llama 2 모델을 실행하여 터미널에서 대화하는 화면

    Ollama를 통해 Llama 2 모델을 실행하고 대화하는 터미널 화면입니다. 모델이 성공적으로 로드되고 답변을 생성하는 모습을 보여줍니다.

    NPU/GPU 활용, 성능의 핵심

    로컬 LLM 성능에서 가장 중요한 요소는 바로 하드웨어 가속입니다. 특히 NPU나 GPU가 있고 없고에 따라 체감 성능이 하늘과 땅 차이거든요. 제 맥북 프로 M1 Max에서 Ollama를 돌려보니, 내장된 뉴럴 엔진(Neural Engine, NPU) 덕분에 생각보다 빠른 응답 속도를 보여줬습니다. Ollama는 자동으로 시스템의 NPU나 GPU를 감지해서 활용하려고 노력합니다.

    예를 들어, NVIDIA(엔비디아) GPU가 있는 시스템이라면 CUDA(쿠다)를 통해 GPU를, Apple Silicon(애플 실리콘) 맥이라면 Metal(메탈) API를 통해 뉴럴 엔진을 활용하는 식이죠. 이런 하드웨어 가속이 없다면, 모든 연산이 CPU에서만 이루어져서 LLM 추론이 매우 느려질 수밖에 없습니다. GPU 추론 가속은 로컬 LLM의 핵심입니다. ⚠️ 만약 NPU나 GPU가 없는 구형 시스템이라면, 로컬 LLM 활용에 제약이 많을 수 있다는 점을 꼭 기억해야 합니다.

    삽질의 시간: 메모리 부족과 느린 응답 속도

    솔직히 처음부터 모든 게 순조로웠던 건 아닙니다. 제가 처음엔 맥북 에어 M1으로 llama3:70b 같은 큰 모델을 돌려보려고 했었거든요. 🤦‍♂️ 결과는 처참했습니다. 메모리(RAM)가 16GB(기가바이트)밖에 안 되는데 70B(700억 개 파라미터) 모델을 돌리려니, 모델 로딩부터 한세월이고, 겨우 실행해도 응답 속도가 너무 느려서 사실상 사용하기 어려웠어요. 계속 스와핑(Swapping)이 일어나면서 디스크만 죽어라 읽어대는 소리가 들리더라고요.

    이때 깨달았습니다. 로컬 LLM은 하드웨어 스펙, 특히 메모리와 NPU/GPU의 성능에 크게 좌우된다는 것을요.

    해결책은 몇 가지가 있었습니다.

    • 더 작은 모델 선택: Llama 3 8B(80억 개 파라미터)나 Phi-3 3.8B 같은 모델들은 비교적 적은 메모리로도 충분히 돌릴 수 있습니다.
    • 양자화(Quantization)된 모델 활용: 모델을 8비트(bit)나 4비트 등으로 양자화하면, 모델의 크기를 줄이고 메모리 사용량을 절감할 수 있습니다. 물론 약간의 성능 저하는 있을 수 있지만, 체감상 큰 차이가 없는 경우가 많아 로컬 환경에서는 아주 유용합니다. Ollama는 기본적으로 여러 양자화된 버전을 제공하며, 이는 GGUF(GPT-Generated Unified Format) 포맷을 기반으로 합니다. (예: llama3:8b-instruct-q4_0)
    • 더 좋은 하드웨어: 결국 이게 가장 확실한 해결책입니다. 제가 M1 Max로 바꾸고 나서는 훨씬 쾌적하게 로컬 LLM을 돌릴 수 있게 되었죠.

    Claude Sonnet과 Ollama, 무엇이 달랐나?

    자, 이제 클라우드 LLM의 대표주자인 Claude Sonnet과 Ollama를 비교해볼 차례입니다. 제가 직접 사용해보면서 느낀 점들을 정리해봤어요.

    구분 Ollama (로컬 LLM) Claude Sonnet (클라우드 LLM)
    성능 (체감)
    • 하드웨어 스펙에 따라 편차 큼 (NPU/GPU 필수)
    • 일반적으로 클라우드 대비 느림 (특히 대형 모델)
    • 네트워크 지연 없음
    • 압도적인 성능과 속도 (대용량 입력/출력에 강점)
    • 안정적인 응답 시간
    • 네트워크 지연 존재
    비용
    • 초기 하드웨어 투자 비용 발생
    • 이후 전기세 정도의 운영 비용
    • 무료 모델 사용 가능
    • 토큰(Token) 사용량에 비례한 비용 발생
    • 대량 사용 시 비용 부담 큼
    데이터 프라이버시
    • 데이터가 로컬 환경에만 저장, 외부 유출 위험 없음
    • 매우 높은 프라이버시 보장
    • 클라우드 제공자에게 데이터 전송
    • 보안 정책에 따라 다르지만, 로컬만큼은 아님
    사용 편의성
    • 설치 및 환경 설정 필요 (초기 장벽)
    • API 연동 등 개발 필요
    • 별도 설치 없이 바로 사용 가능 (웹 UI, API)
    • 높은 접근성
    모델 다양성/최신성
    • 다양한 오픈소스 모델 (Llama 3, Phi-3 등 최신 모델 포함), GGUF 포맷 지원
    • 최신, 고성능 상용 모델 제공 (Claude 3.5 Sonnet 등 지속 업데이트)
    • 빠른 업데이트 및 기능 추가

    Ollama를 이용한 로컬 LLM 환경과 Claude Sonnet API를 이용한 클라우드 LLM 환경의 성능, 비용, 프라이버시 등을 비교 분석한 표입니다.

    Claude Sonnet은 역시 압도적인 편의성과 성능을 자랑합니다. 복잡한 요청이나 긴 문서 요약 같은 작업은 클라우드 LLM이 훨씬 빠르고 정확하더라고요. 하지만 Ollama는 비용적인 측면에서, 그리고 무엇보다 데이터 프라이버시 측면에서 강력한 장점을 가집니다. 제 개인적인 데이터나 회사 기밀 데이터를 다룰 때는 Ollama가 훨씬 안심이 되거든요.

    13년차 엔지니어의 선택: 상황에 따른 현명한 활용

    결론적으로, Ollama와 Claude Sonnet 중 무엇이 더 좋다고 단정하기는 어렵습니다. 둘 다 각자의 쓰임새가 명확하게 존재하더라고요. 13년차 인프라 엔지니어로서 제가 내린 결론은 이렇습니다.

    • Ollama (로컬 LLM): 개인적인 학습 및 실험, 민감한 개인/회사 데이터를 다루는 프라이빗 환경, 인터넷 연결이 불안정한 환경, 모델의 내부 동작을 깊이 있게 이해하고 커스터마이징하고 싶을 때 아주 유용합니다. 비용 절감 효과도 무시할 수 없고요.
    • Claude Sonnet (클라우드 LLM): 높은 성능과 안정성이 필요한 상업 서비스, 대규모 사용자 트래픽 처리, 최신 정보를 기반으로 한 빠른 응답이 필요할 때, 그리고 초기 인프라 구축 비용을 줄이고 싶을 때 최적의 선택입니다.

    저는 이제 두 가지 방법을 병행해서 사용하고 있습니다. 간단한 테스트나 개인적인 아이디어 구상에는 Ollama를, 실제 프로덕션(Production)에 적용하거나 복잡하고 긴급한 업무에는 Claude Sonnet을 활용하는 식이죠. 이렇게 유연하게 접근하니 훨씬 효율적이더라고요. 삽질 끝에 드디어 저만의 LLM 활용 노하우를 찾은 것 같아 뿌듯합니다! 🎉

    Ollama 생태계의 진화: 더욱 강력해진 기능들

    최근 2개월간 Ollama 생태계는 더욱 빠르게 진화하고 있습니다. 단순한 로컬 모델 실행을 넘어, 더욱 다양한 활용 시나리오를 지원하며 로컬 LLM 최적화의 가능성을 넓히고 있습니다.

    • 최신 모델 지원 강화: Llama 3, Phi-3와 같은 최신 소형 및 중형 모델들이 빠르게 Ollama 라이브러리에 추가되어, 적은 자원으로도 뛰어난 성능을 경험할 수 있게 되었습니다. 특히 GGUF 포맷의 최적화로 메모리 효율성이 더욱 향상되었습니다.
    • 확장된 API 연동: Ollama는 OpenAI API와 호환되는 엔드포인트를 제공하여, LangChain, LiteLLM 등 기존 LLM 개발 프레임워크와의 연동이 더욱 쉬워졌습니다. 이를 통해 로컬 환경에서도 복잡한 AI 에이전트나 로컬 RAG(Retrieval Augmented Generation) 시스템을 구축하기 용이해졌습니다.
    • 커뮤니티 기반 UI 및 도구: 공식 CLI 외에도 다양한 커뮤니티 개발자들이 Ollama Web UI, 데스크톱 애플리케이션 등 사용자 친화적인 인터페이스를 제공하여 로컬 LLM 접근성을 높이고 있습니다.
    • 모델 병합(Model Merging) 기능: 여러 모델의 장점을 결합하여 새로운 모델을 생성하는 모델 병합 기능이 실험적으로 도입되어, 사용자 맞춤형 모델을 만들 수 있는 길이 열렸습니다.

    이러한 변화들은 Ollama가 단순한 로컬 LLM 런타임을 넘어, 강력한 퍼스널 AI 및 온프레미스 AI 개발 플랫폼으로 자리매김하고 있음을 보여줍니다. 이제 로컬 환경에서도 클라우드 못지않은 유연성과 기능을 기대할 수 있게 되었습니다.

    다음 글에서는 Ollama를 활용해서 나만의 데이터를 학습시키는 모델 미세조정(Fine-tuning)이나, 외부 데이터베이스(Database)와 연동하는 RAG(Retrieval Augmented Generation) 기법에 대해 더 깊이 있게 다뤄볼 예정입니다. 기대해주세요!

    🔄 마지막 업데이트: 2026년 09월

    로컬 LLM과 클라우드 LLM의 최적 활용 시나리오를 요약한 인포그래픽

    로컬 LLM(Ollama)과 클라우드 LLM(Claude Sonnet)의 강점을 바탕으로 각각의 최적 활용 시나리오를 요약한 인포그래픽입니다.