728x90

Local LLM 성능 향상을 위해 알야아할 ollama 환경 변수
Local LLM 성능 튜닝 - ollama
"VRAM 공간을 최대한 쥐어짜내어(KV 캐시 양자화 + FlashAttention), 동시 요청을 부드럽게 처리하고(Parallel=4), 지연 시간 없이 상시 대기(-1)" 하도록 구성된 최적의 밸런스 셋팅 하는 환경 변수를 알아 봅니다.
ollama 파라미터별 상세 메커니즘 분석
1. OLLAMA_KV_CACHE_TYPE="q8_0" (KV 캐시 양자화)
- 개념: LLM은 대화를 나눌 때 이전 문맥(Key/Value)을 기억하기 위해 VRAM에 'KV 캐시'를 쌓아둡니다. 기본값(f16)은 이 캐시를 고정밀도로 저장하여 문맥이 길어질수록(예: 8k, 16k 이상) 캐시 크기가 모델 자체 크기만큼 커집니다.
- 개선 체감: 이를 8비트(q8_0)로 압축하면 정확도 손실은 1% 미만으로 유지하면서 캐시가 차지하는 VRAM 공간을 정확히 절반으로 줄여줍니다. VRAM이 부족해 속도가 극도로 느려지는 'CPU 팅김(Fallback)' 현상을 막아주는 일등 공신입니다.
2. OLLAMA_FLASH_ATTENTION=1 (플래시 어텐션 활성화)
- 개념: AI 모델이 문맥을 분석할 때 쓰이는 어텐션(Attention) 연산의 메모리 읽기/쓰기 단계를 획기적으로 줄여주는 하드웨어 가속 알고리즘입니다. (NVIDIA CUDA 및 Apple Silicon 지원)
- 개선 체감: 질문과 답변의 길이가 길어질수록 텍스트 생성 속도(Tokens per second)가 눈에 띄게 빨라집니다. 특히 상단의 q8_0 캐시 설정과 조합되었을 때 장문 추론에서 시너지 효과가 매우 큽니다.
3. OLLAMA_NUM_PARALLEL=2, 4 (병렬 요청 수 제한)
- 개념: 동시에 몇 개의 대화(API 요청)를 처리할지 결정합니다. 기본적으로 Ollama는 VRAM 여유에 따라 자동으로 조절하지만, 4로 명시하면 멀티클라이언트 환경이나 웹 UI를 여러 창 띄워놓고 쓸 때 멈춤 현상이 줄어듭니다.
- 동시 처리 요청 수 (RAM 용량에 따라 조정) VRAM 16GB → 1~2, VRAM 32GB → 2~4
- ⚠️ 주의점: 동시 처리 수가 늘어나는 만큼 OLLAMA_NUM_PARALLEL × 컨텍스트 길이 형태로 VRAM을 추가 소비합니다. 혼자서만 사용하는 환경이고 VRAM이 타이트하다면 오히려 1로 설정하는 것이 모델을 GPU에 완전히 올리는 데 유리할 수 있습니다.
4. OLLAMA_KEEP_ALIVE=-1 (메모리 영구 상주)
- 개념: Ollama는 사용이 끝나면 5분 뒤 자동으로 모델을 메모리에서 해제합니다. 이를 -1로 두면 서버가 켜져 있는 한 항상 메모리에 상주합니다.
- 개선 체감: 간헐적으로 LLM을 호출할 때, 호출할 때마다 모델을 하드디스크/SSD에서 VRAM으로 올리는 딜레이(지연 시간)가 사라지므로 상시 빠른 반응 속도를 얻을 수 있습니다.
| LLM 성능 및 자원 개선 환경 변수 | |||
|---|---|---|---|
| 파라미터명 | 기본값 | 설정값 | 성능 및 자원 개선 비교 |
| OLLAMA_KV_CACHE_TYPE | f16 | q8_0 | VRAM 사용량 절반(50%) 감소 컨텍스트 길이가 길어질 때 메모리 부족(OOM) 현상을 방지하며, 최대 컨텍스트 길이를 약 1.5배~2배 확장 가능 (답변 품질 저하는 체감하기 어려움). |
| OLLAMA_FLASH_ATTENTION | 0 (비활성화) | 1 (활성화) | 문맥이 길어질수록(Long-Context) 연산 속도가 최대 20~40% 향상. 메모리 접근을 효율화하여 추가적인 VRAM 절약 효과 제공. |
| OLLAMA_NUM_PARALLEL | 시스템 스펙에 따라 1~4 자동 할당 | 4 | 동시 처리 처리량(Throughput) 대폭 향상. 4개의 요청이 동시에 들어와도 대기 없이 병렬 처리 가능. (단, 요청 수에 비례해 VRAM 소모량이 선형적으로 증가) |
| OLLAMA_KEEP_ALIVE | 5m (5분) | -1 (무제한) | 처음 한 번 모델을 로드한 이후에는 메모리에서 내리지 않으므로, 다음 요청 시 모델 재로드 대기 시간(수 초~수십 초)이 0초로 단축됨. |
| OLLAMA_HOST | 127.0.0.1:11434 | 0.0.0.0:11434 | (성능 외 설정) 외부 IP를 통한 원격 접속 허용. |
Windows Ollama 기동 스크립
@echo off
rem ====================================================================
rem Ollama 환경 변수 설정 및 서버 재시작 스크립트
rem ====================================================================
rem 1. 호스트 및 모델 저장 경로 설정 (외부 접속 허용 및 드라이브 변경)
setx OLLAMA_HOST "0.0.0.0:11434"
setx OLLAMA_MODELS "C:\DevData\ollama\models"
set OLLAMA_HOST=0.0.0.0:11434
set OLLAMA_MODELS=C:\DevData\ollama\models
rem 2. KV 캐시 양자화 (메모리 감소, 컨텍스트 확장)
setx OLLAMA_KV_CACHE_TYPE "q8_0"
set OLLAMA_KV_CACHE_TYPE=q8_0
rem 3. FlashAttention 활성화 (속도 향상 및 장기 컨텍스트 추론 성능 업)
setx OLLAMA_FLASH_ATTENTION "1"
set OLLAMA_FLASH_ATTENTION=1
rem 4. 동시 요청 처리 수 설정
setx OLLAMA_NUM_PARALLEL "4"
set OLLAMA_NUM_PARALLEL=4
rem 5. 모델을 메모리에 영구 상주 (-1: 언로드 안 함, 기본값은 5m)
setx OLLAMA_KEEP_ALIVE "-1"
set OLLAMA_KEEP_ALIVE=-1
rem --------------------------------------------------------------------
rem 설정 확인 출력
rem --------------------------------------------------------------------
echo ====================================================================
echo 적용된 Ollama 환경 변수 상태:
echo OLLAMA_HOST: %OLLAMA_HOST%
echo OLLAMA_MODELS: %OLLAMA_MODELS%
echo ====================================================================
echo.
echo [안내] 기존에 실행 중인 Ollama 서버를 종료합니다. (진행하려면 아무 키나 누르세요)
pause
rem 실행 중인 Ollama 프로세스 강제 종료
taskkill /f /im ollama.exe 2>nul
echo.
echo [안내] 새로운 설정으로 Ollama 서버를 시작합니다.
echo.
rem Ollama 서버 실행
ollama serve
pause
Linux Ollama 구동 스크립트
#!/bin/bash
# ====================================================================
# Ollama 환경 변수 설정 및 서버 재시작 스크립트 (Linux용)
# ====================================================================
# 1. 호스트 및 모델 저장 경로 설정 (외부 접속 허용 및 Linux 경로 매핑)
export OLLAMA_HOST="0.0.0.0:11434" [3, 2]
# Windows의 C:\DevData\ollama\models 경로를 Linux 환경에 맞춰 수정합니다.
# 사용자 홈 디렉토리 내부나 임의의 마운트 경로로 지정할 수 있습니다.
export OLLAMA_MODELS="$HOME/DevData/ollama/models"
# 2. KV 캐시 양자화 (메모리 감소, 컨텍스트 확장)
export OLLAMA_KV_CACHE_TYPE="q8_0"
# 3. FlashAttention 활성화 (속도 향상 및 장기 컨텍스트 추론 성능 업)
export OLLAMA_FLASH_ATTENTION="1"
# 4. 동시 요청 처리 수 설정
# (주의: RTX 4060 8GB VRAM 환경에서는 동시 처리 시 메모리 부족(OOM)이 발생할 수 있으므로,
# 불안정할 경우 이 값을 1로 낮추는 것을 권장합니다.) [3, 5]
export OLLAMA_NUM_PARALLEL="4"
# 5. 모델을 메모리에 영구 상주 (-1: 언로드 안 함, 기본값은 5m)
export OLLAMA_KEEP_ALIVE="-1"
# --------------------------------------------------------------------
# 설정 확인 출력
# --------------------------------------------------------------------
echo "===================================================================="
echo " 적용된 Ollama 환경 변수 상태:"
echo " OLLAMA_HOST: $OLLAMA_HOST"
echo " OLLAMA_MODELS: $OLLAMA_MODELS"
echo " OLLAMA_KV_CACHE_TYPE: $OLLAMA_KV_CACHE_TYPE"
echo " OLLAMA_FLASH_ATTENTION: $OLLAMA_FLASH_ATTENTION"
echo " OLLAMA_NUM_PARALLEL: $OLLAMA_NUM_PARALLEL"
echo " OLLAMA_KEEP_ALIVE: $OLLAMA_KEEP_ALIVE"
echo "===================================================================="
echo ""
# 사용자 입력 대기 (Windows의 pause 대체)
read -p "[안내] 기존에 실행 중인 Ollama 서버를 종료합니다. (계속하려면 Enter를 누르세요)"
# 실행 중인 Ollama 프로세스 강제 종료
pkill -f ollama 2>/dev/null
echo ""
echo "[안내] 새로운 설정으로 Ollama 서버를 시작합니다."
echo ""
# Ollama 서버 실행
ollama serve
728x90
반응형
'BigData' 카테고리의 다른 글
| ☀️양자화 모델 -노트북용 LLM 추천(26.04) (0) | 2026.04.28 |
|---|---|
| (AI모델) 임베딩 전용 모델과 생성 모델 차이 (0) | 2026.04.15 |
| (AI의 성장 일기) 인공지능, 어디까지 왔을까? (0) | 2026.04.09 |
| 신사업의 성장법칙 - 앤스로픽(Anthropic) 중심으로 (0) | 2026.04.01 |
| 앤스로픽(Anthropic)의 AI전략 (1) | 2026.04.01 |
| AI플랫폼이 세상의 문명을 바꾸고 있다. (0) | 2026.04.01 |
| Local LLM구축 - Ollama에서 Llama3 수동 설치 및 맞춤형 모델 사용 (0) | 2026.02.14 |