OpenClaw (구 Moltbot, 구 Clawdbot) 리뷰(6) : Ollama 연동 가이드 - 로컬 LLM Ollama로 무료 AI 비서 만들기
- -
안녕하세요! 갓대희 입니다.
이번 글에서는 OpenClaw를 API 비용을 $0으로 만드는 로컬 LLM 방법을 다루려고 한다.
OpenClaw의 Native Ollama Integration을 활용해 완전한 로컬 환경에서 AI 비서를 굴려보자.
최대한 모든 내용을 검토해보려고 하는데, 혹여 잘못된 정보가 있다면 꼭 남겨주시면 최대한 빠르게 반영할 수 있도록 하겠습니다. 감사합니다!! :-)

이 글의 정보는 2026년 2월 2일 기준입니다. Ollama, z.ai 및 OpenClaw의 버전에 따라 세부 동작이 달라질 수 있으므로, 최신 정보는 공식 문서에서 확인하시기 바랍니다.
OpenClaw는 Ollama를 Native로 지원하여 로컬 LLM을 API처럼 사용할 수 있다.
Zero Cost: Ollama + 오픈소스 모델 = API 비용 $0
추천 모델: Llama 4 (최신 SOTA), Qwen 3 Coder (코딩), Llama 3.2 Vision (이미지)
하이브리드: 간단한 작업은 로컬, 복잡한 작업은 클라우드로 라우팅
보너스: z.ai GLM-4.5-flash 무료 티어로 클라우드 백업 구축
최소 사양: RAM 16GB+, GPU 8GB+ VRAM 권장 (8B 모델 기준)
목차
- 왜 로컬 LLM인가?
- Ollama 소개 및 설치
- 모델 선택 가이드 (Llama vs Qwen 비교, 양자화 선택)
- OpenClaw + Ollama 연동
- 자동 모델 디스커버리
- 하이브리드 전략: 로컬 + 클라우드
- 성능 최적화 (Flash Attention, 병렬 처리, 멀티 GPU)
- 실전 시나리오
- 하드웨어 요구사항
- 트러블슈팅
- (연동 시도중): z.ai (GLM) 클라우드 연동
1. 왜 로컬 LLM인가?
클라우드 API (Claude, GPT-5.2)는 강력하지만, 자율 에이전트에서 사용하면 비용이 기하급수적으로 증가한다.
OpenClaw와 같은 자율 에이전트는 여러 단계의 추론을 수행하므로 토큰 소비량이 높다.
커뮤니티에서 2일간 $300 이상을 소비한 사례가 보고되었다.
(참고: @tobi_bsf X(Twitter))
1.1 로컬 LLM의 장점
| 항목 | 클라우드 API | 로컬 LLM (Ollama) |
|---|---|---|
| 비용 | 토큰당 과금 (누적) | $0 (전기세만) |
| 프라이버시 | 데이터 외부 전송 | 완전 로컬 처리 |
| 지연시간 | 네트워크 RTT 포함 | 네트워크 없음 (GPU 의존) |
| 가용성 | 서버 장애/Rate Limit | 24/7 오프라인 가능 |
| 성능 | 최고 수준 | 하드웨어에 따라 다름 |
간단한 작업은 로컬 LLM으로 처리하고, 복잡한 추론이 필요한 작업만 클라우드로 보내면
비용을 대폭 절감하면서도 성능을 유지할 수 있다. 이것이 하이브리드 전략이다.
2. Ollama 소개 및 설치
Ollama는 로컬에서 LLM을 쉽게 실행할 수 있게 해주는 도구다.
Docker처럼 모델을 pull하고 run하는 방식으로, 복잡한 설정 없이 바로 사용할 수 있다.
2.1 설치 방법
# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh
# 또는 Homebrew (macOS)
brew install ollama
# Windows
# https://ollama.com/download 에서 설치 파일 다운로드
# Docker (서버/클라우드 환경)
docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# Docker - CPU 전용 (GPU 없는 환경)
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Docker 컨테이너가 실행 중이면 호스트에서 다음 명령어로 모델을 실행할 수 있다:docker exec -it ollama ollama run llama3.3
또는 API를 통해 직접 호출:curl http://localhost:11434/api/generate -d '{"model": "llama3.3", "prompt": "Hello"}'
2.2 기본 사용법
# Ollama 서버 시작 (백그라운드)
ollama serve
# 모델 다운로드
ollama pull llama3.3
# 모델 실행 (대화 모드)
ollama run llama3.3
# 설치된 모델 목록
ollama list
# 모델 삭제
ollama rm llama3.3
Ollama는 기본적으로 http://localhost:11434에서 OpenAI 호환 API를 제공한다.
OpenClaw는 이 API를 통해 로컬 모델과 통신한다.
3. 모델 선택 가이드
Ollama에서 사용할 수 있는 모델은 다양하다. 용도에 맞는 모델을 선택하자.
3.1 추천 모델
| 모델 | 크기 | 특징 | 추천 용도 |
|---|---|---|---|
| llama4 | ??B / ??B | Meta의 최신 멀티모달 모델 (2025.04 출시) | 최신 범용 추천 |
| llama3.3 | 70B (43GB) | Meta의 최신 오픈 모델, 128K 컨텍스트 | 범용 추천 |
| llama3.2 | 3B (2.0GB) 1B (1.3GB) |
경량 모델, 128K 컨텍스트 (기본: 3B) | 간단한 작업, 저사양 PC |
| qwen3-coder | 8B (4.9GB) 32B (20GB) |
Alibaba의 최신 코딩 모델, 40% 더 빠른 생성 속도 | 코딩 작업 (SOTA) |
| deepseek-r1 | 8B (5.2GB) 32B (20GB) |
추론 특화, 128K 컨텍스트, Thinking Mode | 복잡한 추론 |
| mistral | 7B (4.1GB) | 빠르고 효율적, 32K 컨텍스트 | 빠른 응답 필요시 |
| phi3 | 3.8B (2.2GB) 14B (7.9GB) |
Microsoft 소형 모델, 128K 컨텍스트 (Mini/Medium) | 저~중간 사양 PC |
모델별 응답 차이 예시
질문: "Python으로 피보나치 수열 10개 출력하는 코드 작성해줘"
# llama3.2 (3B) - 간결하고 빠른 응답
def fib(n):
a, b = 0, 1
for _ in range(n):
print(a)
a, b = b, a + b
fib(10)
# qwen3-coder (8B) - 타입 힌트와 docstring 포함
def fibonacci(n: int) -> list[int]:
"""Generate first n Fibonacci numbers."""
result = []
a, b = 0, 1
for _ in range(n):
result.append(a)
a, b = b, a + b
return result
print(fibonacci(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
실제 응답은 동일한 모델이라도 매번 다를 수 있습니다.
3.2 모델 다운로드
# 범용 (최신 SOTA) - Llama 4 (Release April 2025)
ollama pull llama4 # 기본 모델
ollama pull llama4:large # 대형 모델
# 이미지 인식 (Vision) - 11B (약 7GB), 90B (약 50GB)
ollama pull llama3.2-vision # 11B (기본)
# 안전 장치 (Moderation) - 1B (초경량)
ollama pull llama-guard3 # 입력/출력 필터링용
# 코딩 특화 (Qwen 3) - 기본 8B (4.9GB), 32B는 명시적으로 지정 (20GB)
ollama pull qwen3-coder # 8B (기본)
ollama pull qwen3-coder:32b # 32B (고성능, HumanEval 92%+)
# 추론 특화 - 기본 8B (5.2GB), 32B는 명시적으로 지정 (20GB)
ollama pull deepseek-r1 # 8B (기본)
ollama pull deepseek-r1:32b # 32B (고성능)
# 여러 모델을 용도별로 설치해두면 상황에 맞게 전환 가능
DeepSeek-R1은 추론 과정(Chain-of-Thought)을 <thinking> 태그로 출력하는 "Thinking Mode"를 지원한다.
CLI에서 비활성화 (3가지 방법):ollama run deepseek-r1 실행 후 대화 중 /set nothink 입력ollama run deepseek-r1 --think=false "질문" (명령줄에서)ollama run deepseek-r1 --hidethinking "질문" (thinking은 유지하되 출력만 숨김)
API에서 비활성화:{ "model": "deepseek-r1", "think": false, ... } 옵션 사용
빠른 응답이 필요한 경우 thinking을 비활성화하면 지연 시간이 크게 줄어든다.
(출처: Ollama Blog - Thinking)
일반적으로 7B 모델 ≈ 5-7GB VRAM, 32B 모델 ≈ 20-24GB VRAM이 필요하다. (Q4_K_M 양자화 기준)
VRAM이 부족하면 CPU로 일부가 오프로드되어 속도가 느려진다.
3.3 모델 비교: Llama 3.3 vs Qwen 3
커뮤니티에서 가장 많이 비교되는 두 모델이다. 용도에 따라 선택하자.
| 항목 | Llama 3.3 70B | Qwen 3 32B |
|---|---|---|
| 코딩 | HumanEval, MBPP 강점 | 코딩 SOTA (동급 최고) |
| 수학 | 양호 | MATH 벤치마크 압도적 |
| 명령어 수행 | IFEval 강점 | 매우 우수 |
| 다국어 | 8개 언어 (영/독/불/이/포/힌/스/태) | 119개 언어 지원 (한국어 포함) |
| 효율성 | 무거움 (70B) | 40% 더 빠른 레이턴시 |
| JSON 처리 | 양호 | 구조화 데이터 강점 |
| 컨텍스트 윈도우 | 128K 토큰 | 128K 토큰 |
(참고: Meta Llama 4 출시 노트)
최고 성능: Llama 4 (최신 아키텍처, 멀티모달 네이티브)
코딩 작업: Qwen 3 Coder (여전히 코딩 영역에선 강세)
이미지 처리: Llama 3.2 Vision (이미지 캡셔닝, 분석)
안전성: Llama Guard 3 (서비스 배포 시 필수)
3.4 양자화 선택 가이드
양자화(Quantization)는 모델 정밀도를 낮춰 VRAM 사용량을 줄이는 기법이다. 커뮤니티에서 권장하는 양자화 수준:
| 양자화 | VRAM 절감 | 품질 | 권장 상황 |
|---|---|---|---|
| Q8_0 | ~50% | 최상급 (FP16과 거의 동일) | VRAM 여유시 |
| Q4_K_M | ~75% | 우수 (품질/성능 최적 균형) | 대부분의 사용자 권장 |
| Q4_0 | ~75% | 양호 | Q4_K_M 없을 때 |
| Q3_K_M | ~80% | 저하 눈에 띔 | 매우 제한된 VRAM |
(참고: Best Ollama Models 2025)
양자화별 응답 품질 비교 예시
동일 질문: "재귀 함수의 장단점을 설명해줘"
# Q8_0 (고품질) - 상세하고 구조화된 응답
재귀 함수의 장점:
1. 코드 가독성: 복잡한 문제를 직관적으로 표현
2. 분할 정복: 큰 문제를 작은 하위 문제로 분해
3. 트리/그래프 순회에 자연스러움
단점:
1. 스택 오버플로우 위험 (깊은 재귀)
2. 메모리 사용량 증가 (호출 스택)
3. 반복문 대비 성능 저하 가능
# Q4_0 (경량) - 핵심만 간결하게
장점: 코드가 간결하고 이해하기 쉬움
단점: 메모리를 많이 쓰고 느릴 수 있음
# Q3_K_M (최소) - 품질 저하 눈에 띔
재귀는 함수가 자기를 호출하는 것입니다.
장점은 코드가 짧고 단점은 느립니다.
실제 품질 차이는 모델과 질문 유형에 따라 다를 수 있습니다. Q4_K_M은 대부분의 작업에서 Q8과 유사한 품질을 제공합니다.
4. OpenClaw + Ollama 연동
OpenClaw는 Ollama를 Native로 지원한다. 별도의 플러그인 설치 없이 설정만으로 연동된다.
4.1 기본 연동 (환경 변수)
# ~/.zshrc 또는 ~/.bashrc에 추가
export OLLAMA_API_KEY="ollama-local"
# 적용
source ~/.zshrc
4.2 CLI로 설정
# Ollama 프로바이더 활성화
openclaw config set models.providers.ollama.apiKey "ollama-local"
# 기본 모델 설정
openclaw config set agents.defaults.model.primary "ollama/llama3.3"
# 설정 확인
openclaw config get models
4.3 설정 파일 직접 수정
// ~/.openclaw/openclaw.json (설정 파일 경로는 레거시 유지)
{
// 기본 모델 설정
"agents": {
"defaults": {
"model": { "primary": "ollama/llama3.3" }
}
},
// 프로바이더 설정 (자동 발견을 사용하지 않을 경우에만 명시)
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
}
}
자동 발견 (권장): OLLAMA_API_KEY 환경 변수만 설정하면 OpenClaw가 Ollama 모델을 자동 감지
명시적 설정: models.providers.ollama를 정의하면 자동 발견이 비활성화되며 수동 등록 필요
(출처: OpenClaw 공식 문서 - Ollama)
4.4 연동 확인
# Ollama 서버 상태 확인
curl http://localhost:11434/api/tags
# OpenClaw에서 테스트
openclaw agent --model ollama/llama3.3 --message "Hello, world!"
# 정상적으로 응답이 오면 연동 성공
5. 자동 모델 디스커버리
OpenClaw는 Ollama에 설치된 모델을 자동으로 감지한다.
5.1 사용 가능한 모델 확인
# OpenClaw에서 사용 가능한 모델 목록
openclaw models list
예상 출력 예시
Available Models:
────────────────────────────────────────
Provider: anthropic (cloud)
• claude-sonnet-4-5-20250929 [200K context]
• claude-opus-4-5-20251101 [200K context]
Provider: ollama (local) ← http://localhost:11434
• llama3.3 [70B, 128K context, tools: ✓]
• qwen3-coder:32b [32B, 128K context, tools: ✓]
• deepseek-r1:32b [32B, 128K context, tools: ✓]
Default: ollama/llama3.3
────────────────────────────────────────
실제 출력 형식은 OpenClaw 버전에 따라 다를 수 있습니다.
5.2 세션별 모델 지정
# 특정 모델로 대화 시작
openclaw agent --model ollama/qwen3-coder:32b
# 메시지에서 모델 전환 (대화 중)
# /model ollama/llama3.3
OpenClaw에서 Ollama 모델을 지정할 때는 ollama/<모델명> 형식을 사용한다.
예: ollama/llama3.3, ollama/qwen3-coder:32b
6. 하이브리드 전략: 로컬 + 클라우드
모든 작업을 로컬 LLM으로 처리하면 비용은 $0이지만, 복잡한 작업에서 성능이 떨어질 수 있다.
하이브리드 전략은 작업 유형에 따라 적절한 모델을 선택하는 방식이다.
6.1 라우팅 전략
| 작업 유형 | 추천 모델 | 이유 |
|---|---|---|
| 간단한 질문, 번역 | ollama/llama3.2 | 빠르고 비용 $0 |
| 코드 작성, 리팩토링 | ollama/qwen3-coder:32b | 코딩 특화, 비용 $0 |
| 복잡한 분석, 문서 작성 | ollama/llama3.3 | 고성능 로컬, 비용 $0 |
| 매우 복잡한 추론, 장문 생성 | claude-sonnet-4.5 | 최고 성능 필요시에만 |
6.2 자동 라우팅 설정
// ~/.openclaw/openclaw.json
{
// 기본 모델 설정: 로컬 LLM 우선
"agents": {
"defaults": {
"model": { "primary": "ollama/llama3.3" }
}
},
// 프로바이더 설정
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
},
"anthropic": {
"apiKey": "${ANTHROPIC_API_KEY}" // 복잡한 작업용 백업
}
}
}
}
현재 OpenClaw는 자동 작업 라우팅을 기본 지원하지 않습니다.
복잡한 작업 시에는 /model claude-sonnet-4.5 명령으로 수동 전환하거나,
아래 섹션의 채널별 모델 전환 기능을 활용하세요.
하이브리드 전략을 사용하면 80-90%의 요청을 로컬에서 처리할 수 있다.
결과적으로 API 비용을 월 $100+ → $10 미만으로 줄이는 것이 가능하다.
6.3 수동 모델 전환
# Telegram/Discord 등에서 메시지로 모델 전환
/model ollama/llama3.3 # 로컬 모델로 전환
/model claude-sonnet-4.5 # 클라우드 모델로 전환
# 현재 모델 확인
/model
7. 성능 최적화
7.1 GPU 활용 최적화
OLLAMA_NUM_GPU는 GPU에서 처리할 레이어 수를 지정한다. 기본적으로 Ollama가 자동 감지하지만, 수동 조절이 필요할 때 사용한다.
# GPU 레이어 수 지정
# 기본: Ollama가 VRAM에 맞게 자동 설정
# 값이 클수록 GPU 사용량 증가, 속도 향상
OLLAMA_NUM_GPU=99 ollama serve # 가능한 한 모든 레이어를 GPU에
OLLAMA_NUM_GPU=0 ollama serve # CPU만 사용 (GPU 비활성화)
# 특정 GPU 사용 (멀티 GPU 환경)
CUDA_VISIBLE_DEVICES=0 ollama serve
# Modelfile에서 설정하는 방법
# PARAMETER num_gpu 25 # 정확히 25개 레이어만 GPU에
OLLAMA_NUM_GPU는 공식 FAQ에 명시되어 있지 않지만, GitHub Issue와 커뮤니티에서 널리 사용되는 환경 변수이다.
API 호출 시 options.num_gpu 또는 Modelfile의 PARAMETER num_gpu로도 설정 가능하다.
(참고: Ollama GitHub Issue #1855)
7.2 컨텍스트 크기 조절
# Modelfile로 컨텍스트 크기 조절
# ~/custom-llama/Modelfile
FROM llama3.3
PARAMETER num_ctx 8192 # 기본값보다 크게 설정 (VRAM 여유시)
# 커스텀 모델 생성
ollama create llama3.3-8k -f ~/custom-llama/Modelfile
📝 컨텍스트 크기 확인 및 테스트
# 기본 모델 설정 확인
$ ollama show llama3.3 --modelfile | grep num_ctx
PARAMETER num_ctx 4096
# 커스텀 모델 생성 후 확인
$ ollama show llama3.3-8k --modelfile | grep num_ctx
PARAMETER num_ctx 8192
# 긴 문서 요약 테스트
$ cat long_document.txt | ollama run llama3.3-8k "이 문서를 3줄로 요약해줘"
# API로 컨텍스트 크기 동적 지정 (Modelfile 수정 없이)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.3",
"prompt": "...",
"options": { "num_ctx": 8192 }
}'
7.3 메모리 최적화
OLLAMA_KEEP_ALIVE는 모델이 메모리에 유지되는 시간을 설정한다. 기본값은 5분(5m)이다.
# 모델 언로드 시간 조절
# 기본값: 5m (5분 후 자동 언로드)
OLLAMA_KEEP_ALIVE=30m ollama serve # 30분 유지
OLLAMA_KEEP_ALIVE=-1 ollama serve # 영구 유지 (절대 언로드 안 함)
OLLAMA_KEEP_ALIVE=0 ollama serve # 즉시 언로드
# 환경 변수로 영구 설정
export OLLAMA_KEEP_ALIVE=30m
(출처: Ollama FAQ)
모델이 언로드된 상태에서 첫 요청 시 모델을 다시 로드하는 데 시간이 걸린다.OLLAMA_KEEP_ALIVE=-1로 설정하면 모델이 영구적으로 메모리에 유지되어 응답이 빨라진다.
Docker에서는 docker run -e OLLAMA_KEEP_ALIVE=-1 ...로 설정한다.
7.4 Flash Attention & KV Cache 양자화
커뮤니티에서 가장 많이 공유되는 고급 최적화 기법이다. Flash Attention은 메모리 효율성과 속도를 크게 향상시킨다.
# Flash Attention 활성화
# 메모리 효율성 향상 + 속도 개선 (특히 긴 컨텍스트에서 효과적)
export OLLAMA_FLASH_ATTENTION=1
# KV Cache 양자화 (Flash Attention 필요)
# q8_0: 메모리 약 50% 절감, 품질 거의 유지 (권장)
# q4_0: 메모리 약 75% 절감, 약간의 품질 저하 가능
export OLLAMA_KV_CACHE_TYPE="q8_0"
# 두 설정 함께 사용 (컨텍스트 길이 약 2배 확장 가능)
OLLAMA_FLASH_ATTENTION=1 OLLAMA_KV_CACHE_TYPE="q8_0" ollama serve
# macOS에서 영구 설정
launchctl setenv OLLAMA_FLASH_ATTENTION 1
launchctl setenv OLLAMA_KV_CACHE_TYPE "q8_0"
(참고: Ollama KV Cache Optimization, KV Context Quantisation Guide)
일부 모델(임베딩 모델, 비전/멀티모달 모델)은 KV 양자화에 민감할 수 있다.
문제가 발생하면 OLLAMA_KV_CACHE_TYPE=f16으로 설정하거나 환경 변수를 제거하면 된다.
Flash Attention + KV Cache 양자화 효과 (참고용)
| 설정 | VRAM (32K ctx) | 최대 컨텍스트 |
|---|---|---|
| 기본 (FA 비활성) | ~48GB | ~16K |
| FA + KV q8_0 | ~32GB | ~32K |
| FA + KV q4_0 | ~24GB | ~64K |
위 수치는 llama3.3 70B (Q4_K_M) 기준 추정치이며, 실제 결과는 하드웨어와 모델에 따라 다릅니다.
7.5 병렬 요청 처리
Ollama 0.2.0부터 병렬 요청 처리가 정식 지원된다. 여러 요청을 동시에 처리하려면 다음 설정을 사용한다.
# 모델당 병렬 요청 수 (기본: 메모리에 따라 1 또는 4 자동 선택)
export OLLAMA_NUM_PARALLEL=4
# 동시에 로드할 수 있는 최대 모델 수 (기본: GPU 수 × 3)
export OLLAMA_MAX_LOADED_MODELS=4
# 요청 큐 크기 (기본: 512)
export OLLAMA_MAX_QUEUE=512
# 실행 예시
OLLAMA_NUM_PARALLEL=4 OLLAMA_MAX_LOADED_MODELS=4 ollama serve
(참고: How Ollama Handles Parallel Requests, Ollama FAQ)
병렬 처리 성능 테스트 예시
# 동시 요청 10개 테스트 스크립트
# test_parallel.sh
#!/bin/bash
MODEL="llama3.2"
PROMPT="What is 2+2?"
echo "Testing OLLAMA_NUM_PARALLEL settings..."
for PARALLEL in 1 2 4; do
echo "=== NUM_PARALLEL=$PARALLEL ==="
OLLAMA_NUM_PARALLEL=$PARALLEL ollama serve &
sleep 3
START=$(date +%s.%N)
for i in {1..10}; do
curl -s http://localhost:11434/api/generate \
-d "{\"model\":\"$MODEL\",\"prompt\":\"$PROMPT\"}" &
done
wait
END=$(date +%s.%N)
echo "Total time: $(echo "$END - $START" | bc)s"
pkill ollama
sleep 2
done
예상 결과 (llama3.2, RTX 4090):
| NUM_PARALLEL | 10개 요청 처리 시간 | 처리량 |
|---|---|---|
| 1 (순차) | ~20초 | 0.5 req/s |
| 2 | ~12초 | 0.8 req/s |
| 4 | ~6초 | 1.6 req/s |
실제 성능은 모델 크기, VRAM, 프롬프트 길이에 따라 다릅니다.
7.6 멀티 GPU 활용
멀티 GPU 환경에서 처리량을 최대화하는 두 가지 전략이 있다.
| 전략 | 설명 | 장점 |
|---|---|---|
| 단일 모델 분산 | 하나의 큰 모델을 여러 GPU에 분산 | 70B+ 대형 모델 실행 가능 |
| GPU별 인스턴스 | GPU마다 독립적인 Ollama 인스턴스 실행 | 처리량 2배 (로드 밸런싱) |
# 전략 2: GPU별 인스턴스 (처리량 극대화)
# GPU 0 전용 인스턴스 (포트 11434)
CUDA_VISIBLE_DEVICES=0 ollama serve &
# GPU 1 전용 인스턴스 (포트 11435)
OLLAMA_HOST=127.0.0.1:11435 CUDA_VISIBLE_DEVICES=1 ollama serve &
# Docker 환경에서
docker run -d --gpus '"device=0"' -p 11434:11434 --name ollama1 ollama/ollama
docker run -d --gpus '"device=1"' -p 11435:11434 --name ollama2 ollama/ollama
# Nginx 로드 밸런서로 두 인스턴스 연결하면
# 요청을 번갈아 처리하여 처리량이 2배가 된다
(참고: How to Scale Ollama with Two or More GPUs)
Nginx 로드 밸런서 설정 예시
두 개의 Ollama 인스턴스(포트 11434, 11435)를 번갈아 사용하여 처리량을 2배로 늘리는 실제 설정:
# /etc/nginx/conf.d/ollama-lb.conf
upstream ollama_cluster {
# Round-robin 방식으로 요청 분산
server 127.0.0.1:11434 weight=1; # GPU 0 인스턴스
server 127.0.0.1:11435 weight=1; # GPU 1 인스턴스
# 연결 유지로 성능 향상
keepalive 32;
}
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://ollama_cluster;
proxy_http_version 1.1;
proxy_set_header Connection "";
# 스트리밍 응답을 위한 설정
proxy_buffering off;
proxy_cache off;
# 타임아웃 설정 (대형 모델 응답 대기)
proxy_read_timeout 300s;
proxy_connect_timeout 10s;
}
}
# 설정 테스트 및 적용
sudo nginx -t # 문법 검사
sudo systemctl reload nginx # 설정 적용
# OpenClaw에서 로드 밸런서 사용
// ~/.openclaw/openclaw.json
{
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:8080/v1", // Nginx 포트
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
}
}
# 테스트: 연속 요청이 두 GPU에 분산되는지 확인
for i in {1..4}; do
curl -s http://localhost:8080/api/tags | jq '.models[0].name'
sleep 0.1
done
| 부하 분산 방식 | 설정 | 적합한 상황 |
|---|---|---|
| Round-robin (기본) | weight=1 |
동일 GPU 환경 |
| 가중치 기반 | weight=2 vs weight=1 |
GPU 성능 차이가 있을 때 |
| 최소 연결 | least_conn; |
요청 처리 시간 변동이 클 때 |
8. 실전 시나리오
8.1 시나리오 1: 완전 오프라인 비서
인터넷 없이도 작동하는 개인 AI 비서 구축.
// ~/.openclaw/openclaw.json (완전 로컬)
{
"agents": {
"defaults": {
"model": { "primary": "ollama/llama3.3" }
}
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
},
"channels": {
"imessage": {
"enabled": true // iMessage는 로컬 네트워크로 작동
}
}
}
- 장점: 완전한 프라이버시, 비용 $0, 오프라인 작동
- 단점: 성능 제한, 웹 검색 불가
- 적합: 민감한 데이터 처리, 폐쇄망 환경
8.2 시나리오 2: 개발자용 코딩 비서
코딩 작업에 특화된 설정.
// ~/.openclaw/openclaw.json (코딩 특화)
{
"agents": {
"defaults": {
"model": { "primary": "ollama/qwen2.5-coder:32b" }
}
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
},
"anthropic": { "apiKey": "${ANTHROPIC_API_KEY}" }
}
}
}
- 일상 코딩: Qwen 2.5 Coder로 로컬 처리 → $0
- 복잡한 아키텍처 설계: Claude로 라우팅 → 필요할 때만 과금
- 예상 비용: 월 $5-10 (90% 로컬 처리시)
8.3 시나리오 3: 24/7 자동화 에이전트
Heartbeat와 Cron Job을 로컬 LLM으로 처리.
// ~/.openclaw/openclaw.json (자동화 특화)
{
"agents": {
"defaults": {
"model": { "primary": "ollama/llama3.2" } // 경량 모델로 빠른 처리
}
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
},
"heartbeat": {
"every": "30m",
"target": "last"
}
}
heartbeat는 기본 모델(agents.defaults.model.primary)을 사용합니다. 경량 모델을 기본값으로 설정하면 자동화 비용도 $0입니다.
- 장점: 24시간 가동해도 API 비용 $0
- 적합: 모닝 브리핑, 이메일 요약, 정기 리포트
- 주의: 복잡한 분석은 클라우드로 라우팅 권장
8.4 실제 활용 예제
로컬 LLM으로 처리하기 좋은 실제 업무 예시들이다.
코드 리뷰 요청 (Telegram → Qwen Coder)
나: 이 함수 리뷰해줘
def calculate_total(items):
total = 0
for item in items:
total = total + item['price'] * item['qty']
return total
봇: 코드 리뷰 결과입니다:
1. sum()과 제너레이터 표현식으로 간결하게 작성 가능
2. 타입 힌트 추가 권장
3. 키 에러 방지를 위한 get() 메서드 사용 고려
개선된 코드:
def calculate_total(items: list[dict]) -> float:
return sum(item.get('price', 0) * item.get('qty', 0) for item in items)
Git 커밋 메시지 생성 (CLI → Llama 3.2)
나: git diff 보고 커밋 메시지 작성해줘
봇: 변경사항을 분석했습니다.
추천 커밋 메시지:
feat(auth): add JWT token refresh mechanism
- Implement automatic token refresh before expiration
- Add refresh token storage in secure httpOnly cookie
- Update auth middleware to handle token rotation
문서 요약 (Discord → Llama 3.3)
나: [긴 기술 문서 붙여넣기]
3줄로 요약해줘
봇: 요약:
1. 새로운 API v2는 GraphQL 기반으로 전환됨
2. 기존 REST API는 2026년 12월까지 지원
3. 마이그레이션 가이드는 공식 문서의 /migration 섹션 참조
적합: 코드 리뷰, 번역, 요약, 간단한 질문 응답, 텍스트 변환, 커밋 메시지 생성
클라우드 권장: 복잡한 아키텍처 설계, 긴 문맥의 창의적 글쓰기, 최신 정보 필요한 작업
9. 하드웨어 요구사항
9.1 모델별 VRAM 요구량
| 모델 크기 | VRAM (FP16) | VRAM (Q4) | 권장 GPU |
|---|---|---|---|
| 3B (llama3.2) | 6GB | 2GB | GTX 1060 이상 |
| 7B (mistral) | 14GB | 5-7GB | RTX 3060 8GB 이상 |
| 14B (phi3) | 28GB | 8-10GB | RTX 3080/4070 이상 |
| 32B (qwen2.5-coder) | 64GB | 20-24GB | RTX 4090 / A6000 |
| 70B (llama3.3) | 140GB | 40-48GB+ | 2x RTX 4090 (48GB) / A100 |
위 수치는 추정치입니다. Ollama는 기본적으로 Q4_K_M 양자화를 사용하며, 이는 FP16 대비 약 75% VRAM을 절감합니다.
컨텍스트 길이가 길어지면 KV 캐시로 인해 추가 VRAM이 필요합니다.
(출처: Ollama VRAM Requirements Guide)
9.2 예산별 추천 구성
| 예산 | 구성 | 추천 모델 |
|---|---|---|
| 저예산 기존 PC 활용 |
GTX 1060 6GB / 램 16GB | llama3.2 (3B), mistral (7B Q4) |
| 중예산 게이밍 PC |
RTX 4070 12GB / 램 32GB | llama3.2, phi3 (14B), mistral |
| 고예산 AI 워크스테이션 |
RTX 4090 24GB / 램 64GB | qwen2.5-coder (32B), deepseek-r1 (32B) |
| Apple Silicon M2 Pro/Max/Ultra |
통합 메모리 32-128GB | llama3.3 (70B), 거의 모든 모델 |
Apple Silicon (M1/M2/M3)은 통합 메모리 아키텍처로 GPU와 CPU가 메모리를 공유한다.
64GB 이상의 통합 메모리를 가진 Mac에서는 70B 모델도 원활하게 실행할 수 있다.
10. 트러블슈팅
10.1 Ollama 서버 연결 실패
# 증상: Connection refused
# 1. Ollama 서버 실행 상태 확인
pgrep -f ollama
# 2. 서버 시작
ollama serve
# 3. 포트 확인
curl http://localhost:11434/api/tags
# 4. 방화벽 확인 (Linux)
sudo ufw allow 11434/tcp
10.2 모델 로딩 느림 (Cold Start)
# 증상: 첫 번째 요청이 30초 이상 걸림
# 해결: 모델 keep-alive 시간 늘리기
export OLLAMA_KEEP_ALIVE=1h
# 또는 systemd 서비스에 추가
# /etc/systemd/system/ollama.service
[Service]
Environment="OLLAMA_KEEP_ALIVE=1h"
10.3 VRAM 부족
# 증상: CUDA out of memory
# 1. 더 작은 모델 사용
ollama pull llama3.2 # 3B 모델
# 2. 더 작은 양자화 버전 사용
ollama pull llama3.3:70b-instruct-q4_K_M # 4bit 양자화 (43GB → 약 40GB)
# 3. GPU 레이어 수 줄이기
OLLAMA_NUM_GPU=20 ollama serve # 일부만 GPU에서 처리
10.4 OpenClaw에서 모델 인식 안됨
# 증상: openclaw models list에서 Ollama 모델이 안 보임
# 1. Ollama API 키 설정 확인
openclaw config get models.providers.ollama
# 2. 설정 재적용
openclaw config set models.providers.ollama.apiKey "ollama-local"
# 3. Gateway 재시작
openclaw gateway restart
11. z.ai (GLM) 클라우드 연동
로컬 LLM과 함께 중국의 대표 AI 서비스인 z.ai (구 Zhipu AI)를 연동하면 더욱 유연한 하이브리드 전략을 구성할 수 있다.
특히 GLM-4.5-flash 무료 티어를 활용하면 비용 부담 없이 클라우드 백업을 구축할 수 있다.
- GLM-4.5-flash: 무료 티어 제공 (128K 컨텍스트)
- GLM-4.7: 최신 플래그십, 추론 능력 강화 (200K 컨텍스트)
- 다국어 지원: 한국어, 중국어, 영어 등 우수한 다국어 성능
- OpenAI 호환: OpenAI API 형식으로 쉽게 연동
z.ai와 관련되어서는 다음 내용도 참고하면 조금 더 자세히 작성해 두었다.
Open Code 리뷰(4) : OpenCode(oh-my-opencode)에 Z.ai GLM 연동하기(with claude code Z.aiGLM연동)
11.1 z.ai 소개
z.ai (구 Zhipu AI, 智谱AI)는 중국의 선도적인 AI 기업으로, 2026년 1월 홍콩증시에 상장했다.
GLM(General Language Model) 시리즈로 유명하며, 추론, 코딩, 에이전트 기능을 통합한 모델을 제공한다.
| 모델 | 컨텍스트 | 특징 | 가격 |
|---|---|---|---|
| GLM-4.7 | 200K | 최신 플래그십, 추론 + 코딩 + 에이전트 통합 | 유료 |
| GLM-4.6 | 200K | 표준 티어, 안정적인 성능 | 유료 |
| GLM-4.5-flash | 128K | 빠른 응답, 일반 작업용 | 무료 티어 |
| GLM-4.5V | 128K | 비전(이미지) 지원 | 유료 |
(출처: z.ai Model API, LiteLLM Z.AI Docs)
11.2 API 키 발급
- z.ai 접속 후 회원가입 (국제 사용자는 z.ai, 중국 내 사용자는 open.bigmodel.cn)
- 로그인 후 API Keys 메뉴 접속 (
/manage-apikey/apikey-list) - Create API Key 클릭하여 새 키 생성
- 생성된 키를 안전하게 저장
국제 사용자: https://api.z.ai/api/paas/v4
중국 내 사용자: https://open.bigmodel.cn/api/paas/v4
OpenClaw 설정 시 국제 엔드포인트를 사용하면 된다.
11.3 OpenClaw 연동 (방법 1: 직접 연동)
z.ai는 OpenAI 호환 API를 제공하므로, OpenClaw의 커스텀 프로바이더로 직접 연동할 수 있다.
# 환경 변수 설정
export ZAI_API_KEY="your-zai-api-key-here"
# 적용
source ~/.zshrc
// ~/.openclaw/openclaw.json
{
"models": {
"mode": "merge", // 기존 프로바이더 유지하면서 추가
"providers": {
"zai": {
"baseUrl": "https://api.z.ai/api/paas/v4",
"apiKey": "${ZAI_API_KEY}",
"api": "openai-completions"
},
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions"
}
}
},
"agents": {
"defaults": {
"model": { "primary": "ollama/llama3.3" } // 기본은 로컬
}
}
}
"api": "openai-completions" 설정이 필수다.
이 설정이 없으면 "No API provider registered for api: undefined" 에러가 발생한다.
11.4 OpenClaw 연동 (방법 2: LiteLLM 프록시)
LiteLLM을 프록시로 사용하면 더 유연하게 여러 프로바이더를 관리할 수 있다.
# LiteLLM 설치
pip install litellm
# 환경 변수 설정
export ZAI_API_KEY="your-zai-api-key-here"
# ~/litellm-config.yaml
model_list:
# z.ai GLM 모델
- model_name: glm-4.7
litellm_params:
model: zai/glm-4.7
api_key: os.environ/ZAI_API_KEY
drop_params: true # OpenClaw 호환성을 위해 필수
- model_name: glm-4.5-flash
litellm_params:
model: zai/glm-4.5-flash
api_key: os.environ/ZAI_API_KEY
drop_params: true
# Ollama 로컬 모델도 함께 관리
- model_name: llama3.3
litellm_params:
model: ollama/llama3.3
api_base: http://localhost:11434
# LiteLLM 프록시 서버 시작
litellm --config ~/litellm-config.yaml --port 4000
# 테스트
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "glm-4.5-flash", "messages": [{"role": "user", "content": "안녕하세요"}]}'
// ~/.openclaw/openclaw.json (LiteLLM 프록시 사용)
{
"models": {
"providers": {
"litellm": {
"baseUrl": "http://localhost:4000/v1",
"apiKey": "sk-1234", // LiteLLM 기본 키 또는 설정한 키
"api": "openai-completions"
}
}
},
"agents": {
"defaults": {
"model": { "primary": "litellm/llama3.3" }
}
}
}
drop_params: true 설정으로 OpenClaw가 보내는 store 등 미지원 파라미터를 자동 제거
통합 관리: z.ai, Ollama, OpenRouter 등 여러 프로바이더를 하나의 엔드포인트로
비용 절감: 캐싱 및 토큰 최적화로 40-60% 비용 절감 가능
11.5 z.ai + Ollama 하이브리드 전략
로컬 Ollama와 z.ai 클라우드를 함께 사용하면 비용과 성능의 최적 균형을 맞출 수 있다.
| 작업 유형 | 추천 모델 | 비용 | 이유 |
|---|---|---|---|
| 간단한 질문, 번역 | ollama/llama3.2 | $0 | 로컬에서 빠르게 처리 |
| 코드 작성 | ollama/qwen3-coder | $0 | 코딩 특화 로컬 모델 |
| 한국어/중국어 작업 | zai/glm-4.5-flash | $0 (무료 티어) | 다국어 성능 우수 |
| 복잡한 추론, 긴 컨텍스트 | zai/glm-4.7 | 유료 | 200K 컨텍스트, 고급 추론 |
| 최고 성능 필요시 | claude-sonnet-4.5 | 유료 | 최상위 성능 |
비용 시뮬레이션 (월간 1,000회 요청 기준)
| 전략 | 구성 | 예상 비용 |
|---|---|---|
| 클라우드 Only | Claude 100% | ~$50-100+ |
| Ollama Only | 로컬 100% | $0 (전기세만) |
| 하이브리드 (권장) | Ollama 70% + GLM-flash 20% + Claude 10% | $5-10 |
실제 비용은 사용량과 프롬프트 길이에 따라 다릅니다.
11.6 모델 전환 사용
# Telegram/Discord 등에서 모델 전환
/model ollama/llama3.3 # 로컬 (기본)
/model zai/glm-4.5-flash # z.ai 무료 티어
/model zai/glm-4.7 # z.ai 고성능
# 현재 모델 확인
/model
GLM-4.x 모델은 기본적으로 Thinking Mode가 활성화되어 있다.
비활성화하려면 agents.defaults.models["zai/glm-4.7"].params.thinking을 설정하거나,
API 호출 시 "thinking": false 파라미터를 추가한다.
11.7 z.ai 트러블슈팅
# 증상: "No API provider registered for api: undefined"
# 해결: api 설정 추가
{
"providers": {
"zai": {
"api": "openai-completions" // 이 설정이 필수!
}
}
}
# 증상: 401 Unauthorized
# 해결: API 키 확인
echo $ZAI_API_KEY # 환경 변수 확인
# z.ai 대시보드에서 키 재발급
# 증상: 연결 타임아웃 (중국 외 지역)
# 해결: 국제 엔드포인트 사용 확인
# baseUrl: "https://api.z.ai/api/paas/v4" (O)
# baseUrl: "https://open.bigmodel.cn/..." (중국 내 전용)
마무리
이번 글에서는 OpenClaw와 Ollama를 연동하여 API 비용 $0으로 AI 비서를 운영하는 방법을 다뤘다.
- Ollama: 로컬에서 LLM을 쉽게 실행할 수 있는 도구
- Zero Cost: Ollama + 오픈소스 모델 = API 비용 $0
- 하이브리드 전략: 간단한 작업은 로컬, 복잡한 작업은 클라우드
- 추천 모델: llama3.3 (범용), qwen2.5-coder (코딩), deepseek-r1 (추론)
- z.ai (GLM): 무료 티어(GLM-4.5-flash)로 클라우드 백업 구축 가능
- 하드웨어: 7B 모델 기준 8GB+ VRAM 권장
다음 Part 7에서는 24/7 Server Deployment를 다룰 예정이다.
Docker와 Systemd를 활용해 OpenClaw를 잠들지 않는 에이전트로 배포하는 방법을 알아보자.
참고 자료
공식 문서
모델 정보
z.ai (GLM)
하드웨어 가이드
커뮤니티 & 성능 최적화
'AI > OpenClaw(구 Moltbotbot, Clawdbot)' 카테고리의 다른 글
당신이 좋아할만한 콘텐츠
-
OpenClaw (구 Moltbot, 구 Clawdbot) 리뷰(7) : OpenClaw 24시간 가동하기 - 잠들지 않는 나만의 자비스 만들기()홈랩부터 클라우드(VPS)까지 2026.02.02
-
OpenClaw (구 Moltbot, 구 Clawdbot) 리뷰(5) : Memory 시스템 살펴보기 - OpenClaw는 어떻게 대화를 기억할까? 2026.02.02
-
OpenClaw (구 Moltbot, 구 Clawdbot) 리뷰(4) : Moltbot 브라우저 자동화 - AI가 직접 웹을 서핑하는 방법 (Browser Automation 설정, 활용) 2026.02.01
-
OpenClaw (구 Moltbot, 구 Clawdbot) 리뷰(3) : OpenClaw Skills 설치 방법(opencode, ohmyopencode 등), 추천 스킬 & 워크플로우 알아보기 2026.01.30
소중한 공감 감사합니다