주요 포인트
- 로컬 실행에는 양자화된 파일과 컨텍스트 창을 위한 충분한 RAM 또는 VRAM이 필요합니다.
- Ollama는 가장 빠른 시작 방법이며, llama.cpp는 양자화 및 플래그에 대한 더 많은 제어를 제공합니다.
- 둘 다 OpenAI 스타일 서버를 노출하므로 동일한 클라이언트 코드를 로컬 또는 호스팅에 연결할 수 있습니다.
- 호스팅 엔드포인트는 입력 토큰 100만 개당 $0.15, 출력 토큰 100만 개당 $0.50의 비용이 발생하며 설정에 몇 분 정도 소요됩니다.
먼저 결정하세요: 어떤 하드웨어가 있나요?
메모리가 모든 것을 결정합니다. 언어 모델은 매우 큰 수의 집합이며, 생성하는 동안 전체 집합이 빠른 메모리에 위치해야 합니다. 양자화는 이러한 수를 줄입니다. 4비트 양자화된 모델은 매개변수당 약 0.5바이트를 차지하므로, 80억 매개변수 모델은 약 5GB에, 700억 개 모델은 약 40GB에 도달합니다. 양자화 형식에 따라 정확한 크기가 달라지므로 이를 대략적인 수치로 간주하세요.
가중치 외에도 컨텍스트 캐시를 위한 공간이 필요합니다. 이는 프롬프트 길이에 따라 증가하므로, 긴 역할극 기록이나 큰 문서가 짧은 질문보다 더 많은 메모리를 사용합니다. 적당한 컨텍스트에서는 몇 GB의 여유를 두고, 긴 프롬프트를 사용할 경우 더 많은 용량을 계획하세요.
- GPU가 없는 8GB 노트북: 작은 모델만 가능, 출력 속도 느림.
- 16~32GB Apple Silicon Mac: CPU와 GPU가 메모리를 공유하므로 중간 크기 모델이 잘 실행됩니다.
- 12~24GB VRAM의 단일 소비자용 GPU: 중간 크기 모델을 좋은 속도로 실행.
- 그 이상: 여러 GPU 또는 임대된 서버.
방법 1: 몇 가지 명령어로 Ollama 사용
Ollama가 가장 빠른 경로입니다. 양자화된 모델을 다운로드하고 백그라운드 서버를 실행하여 채팅 프롬프트를 제공합니다. 운영 체제에 맞는 공식 사이트에서 설치한 후, 릴리스 간 이름과 크기가 변경될 수 있으므로 Ollama 모델 라이브러리가 현재 나열하는 Dolphin 태그를 확인하세요.
# replace <tag> with a Dolphin tag from the Ollama library
ollama pull <tag>
ollama run <tag>
첫 번째 명령은 파일을 다운로드하며 느린 연결에서는 시간이 오래 걸릴 수 있습니다. 두 번째 명령은 터미널에서 대화식 채팅을 엽니다. Ollama는 기계에서 HTTP API도 제공하며, /v1 아래에 OpenAI 스타일 라우트가 포함되어 있어 다른 프로그램에서 사용할 수 있습니다.
생성이 매우 느린 경우, 모델이 VRAM에 완전히 맞지 않아 일부가 CPU에서 실행되고 있을 수 있습니다. 더 작은 태그 또는 낮은 비트 양자화를 선택하세요.
방법 2: 더 많은 제어를 위한 llama.cpp
llama.cpp는 많은 다른 도구가 구축된 C++ 엔진입니다. 모델의 GGUF 파일을 다운로드한 다음 서버를 시작합니다. 이는 Ollama보다 더 많은 단계가 필요하지만 컨텍스트 길이, GPU에 배치할 레이어 수 및 원하는 양자화를 설정할 수 있습니다.
# after building llama.cpp and downloading a GGUF file
llama-server -m ./model.gguf -c 8192 -ngl 99 --port 8080
여기서 -c는 컨텍스트 길이를 설정하고, -ngl은 GPU로 이동할 레이어 수를 설정하며, --port은 포트를 선택합니다. 버전마다 플래그가 변경되므로 프로젝트 README를 확인하세요. 더 큰 -c는 더 많은 메모리를 사용하므로 필요할 때만 늘리세요.
GUI를 사용하려면 Open WebUI와 같은 프론트 엔드가 두 서버 모두와 통신할 수 있습니다. Open WebUI API 엔드포인트에 대한 노트는 사용자 정의 엔드포인트를 추가하는 방법을 보여줍니다.
코드에서 로컬 서버 호출
두 도구 모두 OpenAI 채팅 형식을 지원하므로 클라이언트를 한 번 작성하고 두 설정으로 대상을 전환할 수 있습니다. 이 스크립트는 두 대상을 나란히 유지합니다. 로컬은 Ollama가 기본적으로 사용하는 포트를 사용합니다. llama.cpp를 8080에서 시작한 경우 변경하세요.
from openai import OpenAI
TARGETS = {
"local": {"base_url": "http://localhost:11434/v1", "key": "not-needed", "model": "your-local-tag"},
"hosted": {"base_url": "https://api.dolphinllm.com/v1", "key": "YOUR_KEY", "model": "uncensored"},
}
t = TARGETS["hosted"]
client = OpenAI(base_url=t["base_url"], api_key=t["key"])
resp = client.chat.completions.create(
model=t["model"],
messages=[{"role": "user", "content": "Summarize what a GGUF file is."}],
)
print(resp.choices[0].message.content)
로컬 서버는 보통 키를 무시하지만 SDK는 비어 있지 않은 문자열을 요구합니다. 로컬 서버의 모델 이름은 로드한 태그나 별칭이며, 호스팅 모델 ID는 항상 uncensored입니다.
방법 3: 설정을 건너뛰고 호스팅 엔드포인트 사용
하드웨어 연산 성능이 낮거나 모든 기기에서 동일한 동작을 원한다면 호스팅된 엔드포인트가 더 간단합니다. 이 서비스는 독립적인 제공업체가 실행하는 하나의 오픈 웨이트 모델을 제공하며, 성인의 합법적인 사용에 대해 콘텐츠 거부 없이 답변하도록 조정되었습니다. 이는 어떤 모델 벤더의 공식 API도 아니며, 다른 모델을 선택할 수 없습니다. 얻는 것은 안정적인 URL, 키, 그리고 토큰 기반 과금입니다.
단계는 짧습니다. Google 또는 이메일과 비밀번호로 가입하고 API 키 페이지를 열어 한 번의 클릭으로 $0.50의 무료 체험 크레딧을 청구하세요. 카드가 필요 없으며 7일 동안 유효하고 사람당 하나만 제한됩니다. 그런 다음 호스팅 대상을 사용하여 위의 Python 스크립트를 실행하세요. curl을 선호하는 경우:
curl https://api.dolphinllm.com/v1/chat/completions -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":false}'
컨텍스트 창은 100,000 토큰이며, 이는 대부분의 노트북이 캐시에 편안하게 담을 수 있는 것보다 많습니다. 프롬프트는 학습에 사용되지 않습니다.
비용과 노력 비교
로컬은 무료처럼 보이지만 그렇지 않습니다. 하드웨어, 전기 및 자신의 시간에 대한 비용을 지불합니다. 호스팅은 요청당 비용이 발생하지만 숫자는 작습니다. 입력 토큰 100만 개당 $0.15, 출력 토큰 100만 개당 $0.50으로, 입력 토큰 3,000개와 출력 토큰 700개로 구성된 채팅 턴의 비용은 다음과 같습니다:
- 입력: 3,000 x $0.15 / 1,000,000 = $0.00045
- 출력: 700 x $0.50 / 1,000,000 = $0.00035
- 총: 턴당 $0.0008, 즉 1,000 턴당 $0.80
월 5,000회 이러한 대화를 보내는 헤비 사용자도 약 $4 정도만 지출합니다. 수백 달러짜리 GPU는 그 정도의 사용량으로 손익 분점까지 몇 년이 걸립니다. 지속적인 대용량 트래픽이 필요하거나, 특정 파인튜닝이 필요하거나, 데이터를 외부로 보낼 수 없는 경우 비교가 달라집니다.
+5%, +10%, +15% 충전 보너스를 포함한 전체 가격 세부 정보는 가격 페이지에 있으며, 문서에는 제한 사항과 매개변수가 포함되어 있습니다.
선택을 위한 간단한 규칙
많은 파인튜닝을 실험하거나 오프라인에서 작업하거나 모든 프롬프트를 자체 디스크에 보관하려면 로컬에서 실행하세요. 다른 사람들이 사용할 서비스를 구축 중이거나, 하드웨어 사양이 낮거나, 메모리 관리 없이 100,000토큰의 긴 컨텍스트 창이 필요하면 호스팅된 엔드포인트를 사용하세요. 많은 개발자는 둘 다 사용합니다: 개인적인 실험용 로컬 모델과 항상 가동되어야 하는 서비스에 대한 호스팅 엔드포인트. 클라이언트 코드가 동일하므로 전환 비용은 한 줄입니다.

