BigData

Local LLM 성능 향상을 위해 알야아할 ollama 환경 변수

IT오이시이 2026. 6. 9. 11:20
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
반응형