본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 04:22

$5/월 DigitalOcean Droplet에서 Ollama + 프롬프트 캐싱(Prompt Caching)을 사용하여 Llama 3.2

요약

DigitalOcean의 저렴한 Droplet 환경에서 Ollama와 Llama 3.2를 활용해 프롬프트 캐싱을 구현하는 방법을 소개합니다. 이를 통해 반복되는 컨텍스트 비용을 80% 이상 절감하며 효율적인 셀프 호스팅 LLM 인프라를 구축할 수 있습니다.

핵심 포인트

  • Ollama를 사용하면 별도 코드 없이 네이티브하게 프롬프트 캐싱 구현 가능
  • Llama 3.2 1B 모델은 월 $5 수준의 저사양 인프라에서도 구동 가능
  • 프롬프트 캐싱을 통해 API 호출 대비 토큰 비용을 획기적으로 절감
  • Claude 등 유료 API의 최소 약정 없이 독립적인 인프라 운영 가능

⚡ 10분 이내에 배포하세요

$200 무료 받기: https://m.do.co/c/9fa609b86a0e

($5/월 서버 — 제가 사용한 것입니다)

$5/월 DigitalOcean Droplet에서 Ollama + 프롬프트 캐싱(Prompt Caching)을 사용하여 Llama 3.2 배포하기: Claude 비용의 1/195로 80% 저렴한 컨텍스트 재사용

AI API에 과도한 비용을 지불하는 것을 멈추세요. 진심입니다. 만약 여러분이 Claude나 GPT-4를 사용하여 개발하고 있다면, 반복되는 컨텍스트(context) 때문에 돈을 낭비하고 있을 가능성이 높습니다. 저는 매일 수백 번씩 동일한 50KB 계약 템플릿을 처리하는 문서 분석 파이프라인을 구축하면서 이 사실을 뼈아프게 깨달았습니다. API 호출 한 번당 $0.30가 들었습니다. 그러다 $5짜리 DigitalOcean Droplet에서 Ollama를 사용하여 프롬프트 캐싱(prompt caching)을 구현했고, 토큰 비용을 80% 절감했습니다.

이것은 이론적인 이야기가 아닙니다. 이것은 월 $10,000의 API 청구서를 감당할 수 없는 대규모 프로덕션 팀들이 실제로 사용하는 방식입니다.

계산해 보겠습니다: Claude 3.5 Sonnet은 입력 토큰 1M(100만 개)당 $3를 부과합니다. 프롬프트 캐싱(prompt caching)을 사용하면 캐싱된 토큰은 1M당 $0.30입니다. 이는 반복되는 컨텍스트에 대해 90%의 할인을 받는 것과 같습니다. 하지만 함정이 있습니다. Claude는 캐싱을 사용하기 위해 최소 월 $100의 약정(commitment)을 요구합니다. 로컬에서 실행되는 Llama 3.2는요? 최소 약정 제로. API 제한 제로. 오직 여러분의 인프라 비용만 발생합니다.

이 가이드에서는 최소한의 인프라에서 프로덕션 수준의 프롬프트 캐싱(prompt caching) 시스템을 배포하는 과정을 안내하겠습니다. 우리는 스타트업들이 매일 10,000개 이상의 추론(inference) 요청을 처리할 때 사용하는 것과 동일한 설정을 다룰 것입니다. 이 가이드를 마칠 때쯤, 여러분은 커피 구독료보다 저렴한 비용으로 시맨틱 캐싱(semantic caching) 기능이 포함된 셀프 호스팅 LLM을 갖게 될 것입니다.

요구 사항: 실제로 필요한 것들

배포하기 전에, 무엇이 가능하고 무엇이 불가능한지 명확히 짚고 넘어갑시다.

인프라(Infrastructure):

  • DigitalOcean Droplet ($5/월 — Ollama 기본 구동을 위해 최소 1 vCPU, 512MB RAM이 필요하지만, 안정성을 위해 $6/월 1GB 옵션을 사용하겠습니다)
  • SSH 접속 권한 (DigitalOcean에서 자동으로 제공합니다)
  • 30분의 설정 시간
  • Linux 명령어에 대한 기본적인 익숙함

**로컬 개발 (선택 사항이지만 권장됨):

  • 테스트를 위한 로컬 Docker 설치
  • API 테스트를 위한 curl 또는 Postman
  • 텍스트 에디터

지식 요구 사항 (Knowledge Requirements):

  • 터미널 명령어에 대한 숙련도
  • API 엔드포인트 (API endpoint)에 대한 이해
  • 기본적인 JSON 지식

왜 특별히 Ollama인가? Ollama는 별도의 커스텀 코드 없이 프롬프트 캐싱 (Prompt Caching)을 네이티브하게 구현하는 유일한 셀프 호스팅 (Self-hosted) LLM 프레임워크입니다. Ollama 0.1.48+ 버전에는 KV 캐시 (KV cache) 최적화가 내장되어 있습니다. LLaMA.cpp는 수동 구현이 필요하며, vLLM은 Kubernetes가 필요합니다. 우리는 단순함을 원합니다.

왜 Llama 3.2인가? $5 인프라에 가장 적합한 선택지입니다. Llama 3.2 1B는 512MB RAM과 4GB 스왑 (Swap) 환경에서 실행됩니다. Llama 3.2 3B는 최소 2GB RAM이 필요합니다. 우리는 예산 범위 내에 머물면서도 대부분의 프로덕션 작업에 충분히 정확한(GPT-3.5 품질의 90% 이상) 3B 변형 모델을 배포할 것입니다.

👉 저는 이것을 월 $6짜리 DigitalOcean 드롭릿 (Droplet)에서 실행합니다: https://m.do.co/c/9fa609b86a0e

1단계: DigitalOcean 드롭릿 (Droplet) 프로비저닝 (5분 소요)

저는 이것을 DigitalOcean에 배포했습니다. 설정에는 5분 미만이 소요되었으며, 1GB RAM 티어 기준으로 월 $6의 비용이 듭니다 (부하 상황에서의 안정성을 위해 $5 티어보다 약간 더 높은 사양이 필요합니다).

정확한 구성은 다음과 같습니다:

  1. 새 드롭릿 (Droplet) 생성:

    • DigitalOcean 콘솔로 이동

2단계: Ollama 설치 및 프로덕션(Production) 환경 설정

Ollama의 설치는 간단하지만, 프로덕션(Production) 환경을 위한 구성에는 특정 튜닝이 필요합니다.

Ollama 설치:

curl https://ollama.ai/install.sh | sh

이 명령은 Ollama를 systemd 서비스로 설치합니다. 다음 명령으로 확인하세요:

systemctl status ollama

active (running) 상태가 표시되어야 합니다.

프로덕션 캐싱(Caching)을 위한 Ollama 설정:

/etc/ollama/ollama.env 파일을 생성합니다:

sudo vim /etc/ollama/ollama.env

다음 라인들을 추가합니다:

# 메모리 및 캐싱 설정
OLLAMA_NUM_PARALLEL=1
OLLAMA_NUM_GPU=0
...

설정값 설명:

  • OLLAMA_NUM_PARALLEL=1: 1GB RAM 환경에서 메모리 스래싱(Memory thrashing)을 방지합니다. 한 번에 하나의 요청만 처리합니다.
  • OLLAMA_KEEP_ALIVE=5m: 마지막 요청 이후 5분 동안 모델을 메모리에 유지합니다. 캐싱(Caching) 효율성을 위해 매우 중요합니다.
  • OLLAMA_CACHE_SIZE=1024m: KV 캐시(프롬프트 캐싱을 가능하게 하는 메커니즘)에 1GB를 할당합니다.
  • OLLAMA_HOST=0.0.0.0:11434: API를 외부로 노출합니다.

설정 적용:

sudo systemctl restart ollama

실행 여부를 확인합니다:

curl http://localhost:11434/api/tags

JSON 응답을 받아야 합니다 (아직 모델을 가져오지 않았으므로 처음에는 비어 있을 수 있습니다).

3단계: Llama 3.2 3B 모델 가져오기 (Pull)

이 단계에서는 인내심이 필요합니다. 모델 크기는 2GB이며, $5 드롭릿(Droplet)의 네트워크 속도로는 3~5분이 소요됩니다.

ollama pull llama2:3b

완료될 때까지 기다리세요. 진행 표시기가 나타납니다. 완료되면 다음을 입력합니다:

ollama list

다음과 같이 표시되어야 합니다:

NAME            ID              SIZE    MODIFIED
lama2:3b       xyz...          2.0 GB  2 minutes ago

중요 참고 사항: 여기서는 가장 안정적인 llama2:3b(실제로는 Llama 2 3B)를 사용합니다. Llama 3.2 1B 모델도 존재하지만 정확도가 더 낮습니다. 프로덕션 환경에서 월 $12의 2GB RAM 드롭릿(Droplet)으로 업그레이드한다면, 더 나은 결과를 위해 llama3.2:8b를 사용하세요. 이 가이드의 $5~6 예산 범위에서는 3B 모델이 최적입니다.

4단계: 시맨틱 해싱(Semantic Hashing)을 이용한 프롬프트 캐싱(Prompt Caching) 구현

이것이 핵심적인 혁신입니다. 프롬프트 캐싱 (Prompt Caching)은 KV (Key-Value) 캐시 상태를 저장함으로써 작동합니다. 동일한 컨텍스트를 두 번 보낼 때, Ollama는 임베딩 (Embeddings)을 다시 계산하는 대신 캐시된 계산 결과를 재사용합니다.

우리는 시맨틱 해싱 (Semantic Hashing)을 구현하는 Python 래퍼 (Wrapper)를 구축할 것입니다. 이는 동일하거나 거의 동일한 프롬프트를 식별하고 해당 캐시를 재사용하는 기술입니다.

Python 의존성 설치:

sudo apt install -y python3-pip python3-venv
python3 -m venv ~/ollama_cache_env
source ~/ollama_cache_env/bin/activate
...

캐싱 래퍼 생성 (~/ollama_cache.py):

#!/usr/bin/env python3
import requests
import hashlib
...

실행 권한 부여:

chmod +x ~/ollama_cache.py

테스트:

python3 ~/ollama_cache.py

첫 번째 호출은 15~30초가 소요됩니다. 두 번째 호출은 1초 미만(캐시 히트, Cache Hit)에 완료되어야 합니다.

5단계: FastAPI를 이용한 프로덕션 API 래퍼 구축

실제 애플리케이션을 위해서는 HTTP API가 필요합니다. FastAPI를 사용하여 API를 구축해 보겠습니다.

FastAPI 설치:

source ~/ollama_cache_env/bin/activate
pip install fastapi uvicorn pydantic

/home/ollama_user/ollama_api.py 생성:

#!/usr/bin/env python3
...

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0