Ollama EXAONE CPU 홈서버 최적화 가이드
작성일: 2026-05-20
이 문서는 AMD Ryzen 7 5825U CPU와 DDR4 32GB RAM 환경의 홈서버에서 Ollama만 사용해 exaone3.5:2.4b 모델을 가볍게 운영하기 위한 설정 가이드임.
목표는 Open WebUI 같은 별도 웹 UI를 거치지 않고, Ollama 자체 API와 CLI를 기준으로 EXAONE 3.5 2.4B를 빠르고 단순하게 사용하는 것임.
기준 환경은 아래와 같음.
- GPU 없음
- AMD Ryzen 7 5825U
- DDR4 RAM 32GB
- Ollama는 호스트에서 systemd 서비스로 실행
- 사용자는 1명 또는 아주 소수
- 여러 모델을 동시에 로드하지 않음
- 기본 채팅은
balanced, 빠른 응답은fast, 긴 문서 작업은doc프로필로 분리함
참고 문서:
- Ollama Modelfile Reference: https://docs.ollama.com/modelfile
- Ollama FAQ: https://docs.ollama.com/faq
- EXAONE 3.5 Ollama: https://ollama.com/library/exaone3.5
1. 최종 적용값 요약
최종적으로 아래 구성을 목표로 함.
원본 모델
exaone3.5:2.4b
생성할 Ollama 프로필
sleepzz-exaone3.5:2.4b-balanced
sleepzz-exaone3.5:2.4b-fast
sleepzz-exaone3.5:2.4b-doc
Ollama 서비스 환경 변수
OLLAMA_NUM_PARALLEL=1
OLLAMA_MAX_LOADED_MODELS=1
OLLAMA_KEEP_ALIVE=24h
OLLAMA_MAX_QUEUE=2
OLLAMA_NO_CLOUD=1
기본 balanced Modelfile
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 4096
핵심은 생성 스타일 파라미터를 과하게 넣지 않는 것임.
아래 값들은 기본 최적화값에서 제외함.
PARAMETER num_predict
PARAMETER temperature
PARAMETER top_p
PARAMETER repeat_penalty
이 값들은 속도 최적화라기보다 답변 길이와 스타일을 제어하는 값에 가까움. 단순 질문에서 이전보다 느려졌다면 우선 num_thread와 num_ctx만 남긴 상태를 기준점으로 잡는 것이 좋음.
2. EXAONE 3.5 2.4B 모델 받기
먼저 Ollama에서 EXAONE 3.5 2.4B 모델을 받음.
ollama pull exaone3.5:2.4b
다운로드가 끝나면 모델 목록을 확인함.
ollama list
목록에 아래 모델이 보이면 정상임.
exaone3.5:2.4b
EXAONE 3.5 2.4B는 한국어와 영어를 모두 고려한 instruction 모델이고, Ollama 기준 크기가 약 1.6GB라 GPU 없는 홈서버에서 쓰기 좋은 편임.
3. Ollama 서비스 최적화
Ollama 서버가 CPU와 RAM을 과하게 쓰지 않도록 systemd override를 설정함.
3-1. Ollama 서비스 override 열기
sudo systemctl edit ollama.service
에디터가 열리면 아래 내용을 넣음.
[Service]
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_KEEP_ALIVE=24h"
Environment="OLLAMA_MAX_QUEUE=2"
Environment="OLLAMA_NO_CLOUD=1"
저장 후 종료함.
3-2. 서비스 재시작
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama
status 결과에서 active (running)이면 정상임.
3-3. 설정값 설명
OLLAMA_NUM_PARALLEL=1
동시에 처리하는 요청 수를 1개로 제한함. 5825U 같은 CPU-only 환경에서는 병렬 요청을 늘리면 전체 처리량보다 개별 응답 지연이 더 크게 느껴질 수 있음.
OLLAMA_MAX_LOADED_MODELS=1
동시에 메모리에 올리는 모델 수를 1개로 제한함. 여러 모델을 동시에 유지하지 않고 EXAONE 하나만 기본 모델로 쓰기 위한 설정임.
OLLAMA_KEEP_ALIVE=24h
모델을 메모리에 24시간 유지함. 첫 질문마다 모델을 다시 로딩하는 지연을 줄일 수 있음.
OLLAMA_MAX_QUEUE=2
요청 대기열을 짧게 제한함. 혼자 쓰는 서버에서 요청이 많이 쌓여 오래 버벅이는 상황을 줄이기 위한 설정임.
OLLAMA_NO_CLOUD=1
로컬 Ollama만 사용할 목적이면 cloud 기능을 끄고 구성을 단순하게 유지함.
3-4. 전역 context length를 넣지 않는 이유
이 문서에서는 Ollama 서비스 환경 변수에 OLLAMA_CONTEXT_LENGTH를 넣지 않음.
컨텍스트 길이는 각 프로필의 Modelfile에서 num_ctx로 관리함.
이렇게 하면 fast, balanced, doc 프로필을 목적별로 분리하기 쉽고, 전역 설정과 모델별 설정이 충돌할 가능성도 줄어듦.
4. balanced 프로필 만들기
balanced는 평소 기본으로 사용할 프로필임.
응답 속도와 문맥 길이 사이의 균형을 잡기 위해 num_thread 8, num_ctx 4096만 지정함.
4-1. 작업 디렉터리 만들기
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-balanced
cd ~/ollama-profiles/sleepzz-exaone35-24b-balanced
4-2. Modelfile 작성
현재 디렉터리에 Modelfile을 만들고 아래 내용을 넣음.
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 4096
4-3. 모델 생성
ollama create sleepzz-exaone3.5:2.4b-balanced -f Modelfile
4-4. 생성 확인
ollama list
목록에 아래 모델이 보이면 성공임.
sleepzz-exaone3.5:2.4b-balanced
간단히 실행해봄.
ollama run sleepzz-exaone3.5:2.4b-balanced
5. fast 프로필 만들기
fast는 짧은 질문과 빠른 응답을 우선하는 프로필임.
balanced보다 컨텍스트를 줄여 단순 질문에서 더 가볍게 동작하도록 함.
5-1. 작업 디렉터리 만들기
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-fast
cd ~/ollama-profiles/sleepzz-exaone35-24b-fast
5-2. Modelfile 작성
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 2048
5-3. 모델 생성
ollama create sleepzz-exaone3.5:2.4b-fast -f Modelfile
이 모델은 아래 상황에서 사용함.
- 짧은 질문 위주로 사용할 때
- 단순 계산이나 짧은 설명을 바로 받고 싶을 때
- 답변 품질보다 응답 시작 속도가 중요할 때
서버가 응답 중 전체적으로 둔해지면 num_thread를 6으로 낮춘 별도 fast 프로필을 테스트할 수 있음.
FROM exaone3.5:2.4b
PARAMETER num_thread 6
PARAMETER num_ctx 2048
6. doc 프로필 만들기
doc는 긴 문서를 넣어 요약하거나 정리하는 경우에만 사용하는 프로필임.
컨텍스트가 길수록 CPU 부하와 응답 지연이 커질 수 있으므로, 평소 기본값으로는 쓰지 않음.
6-1. 작업 디렉터리 만들기
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-doc
cd ~/ollama-profiles/sleepzz-exaone35-24b-doc
6-2. Modelfile 작성
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 8192
6-3. 모델 생성
ollama create sleepzz-exaone3.5:2.4b-doc -f Modelfile
doc 프로필은 긴 입력이 필요할 때만 선택함.
평소에는 balanced나 fast를 사용함.
7. 파라미터 선택 기준
7-1. num_thread
5825U는 8코어 16스레드 CPU임.
기본값은 물리 코어 수에 맞춰 8을 사용함.
서버가 응답 중 전체적으로 둔해지면 6으로 낮춤.
기본: 8
더 가볍게: 6
7-2. num_ctx
일반 채팅은 4096이면 충분함.
더 빠른 응답이 필요하면 2048로 낮추고, 긴 문서를 다룰 때만 8192 프로필을 사용함.
fast: 2048
balanced: 4096
doc: 8192
7-3. 생성 스타일 파라미터를 기본값에서 빼는 이유
아래 값들은 이 문서의 기본 프로필에 넣지 않음.
PARAMETER num_predict
PARAMETER temperature
PARAMETER top_p
PARAMETER repeat_penalty
이 값들은 나중에 답변 길이와 스타일을 조정하고 싶을 때 추가해도 됨.
다만 처음부터 넣으면 이전에 빠르게 느껴졌던 기본 동작과 달라질 수 있으므로, CPU 홈서버 최적화 기준점에서는 제외함.
속도 테스트는 먼저 num_thread와 num_ctx만 넣은 상태에서 진행함.
8. 적용 후 검증
8-1. Ollama 서비스 상태 확인
systemctl status ollama
서비스가 active (running)이면 정상임.
8-2. 모델 목록 확인
ollama list
아래 모델 중 만든 모델이 보이면 정상임.
sleepzz-exaone3.5:2.4b-fast
sleepzz-exaone3.5:2.4b-balanced
sleepzz-exaone3.5:2.4b-doc
8-3. 현재 로드된 모델 확인
ollama ps
PROCESSOR가 100% CPU로 보이면 GPU 없이 CPU에서 실행 중인 상태임.
8-4. 단순 응답 테스트
time ollama run sleepzz-exaone3.5:2.4b-balanced "47+25는?"
예상 응답은 아래처럼 짧아야 함.
72
단순 질문이 느리면 fast 프로필과 비교함.
time ollama run sleepzz-exaone3.5:2.4b-fast "47+25는?"
8-5. 한국어 응답 테스트
time ollama run sleepzz-exaone3.5:2.4b-balanced "홈서버에서 CPU만으로 LLM을 돌릴 때 주의할 점을 5줄로 정리해줘."
응답 시작이 느리면 num_ctx를 낮춤.
서버 전체가 둔해지면 num_thread를 낮춤.
9. 튜닝 기준
처음부터 많은 값을 바꾸지 말고 아래 값만 비교함.
9-1. 기본 비교 조합
num_thread 8 + num_ctx 2048
num_thread 8 + num_ctx 4096
num_thread 6 + num_ctx 2048
num_thread 6 + num_ctx 4096
9-2. 응답 시작이 느릴 때
num_ctx 4096 -> 2048
9-3. 서버 전체가 둔해질 때
num_thread 8 -> 6
9-4. 답변이 너무 길 때
먼저 프롬프트에서 짧게 답하라고 지시함.
그래도 너무 길면 그때 num_predict를 추가함.
PARAMETER num_predict 256
9-5. 답변 스타일이 불안정할 때
필요할 때만 아래 값을 추가해 테스트함.
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.05
이 값들은 속도 최적화용 기본값이 아니라 답변 스타일 조정값으로 취급함.
10. RAM 자원 회수
모델을 메모리에서 내리고 싶으면 현재 로드된 모델을 확인함.
ollama ps
balanced 모델을 내릴 때:
ollama stop sleepzz-exaone3.5:2.4b-balanced
fast 모델을 내릴 때:
ollama stop sleepzz-exaone3.5:2.4b-fast
doc 모델을 내릴 때:
ollama stop sleepzz-exaone3.5:2.4b-doc
11. Ollama가 CPU를 계속 먹거나 멈춘 경우
먼저 정상적인 모델 정지를 시도함.
ollama ps
ollama stop sleepzz-exaone3.5:2.4b-balanced
그래도 멈추지 않으면 Ollama 서비스를 재시작함.
sudo systemctl restart ollama
정상 재시작으로 해결되지 않고 프로세스가 비정상적으로 버틸 때만 강제 종료를 고려함.
sudo pkill -9 ollama
sudo systemctl restart ollama
강제 종료는 마지막 수단으로만 사용함.
12. 그대로 따라 하는 적용 순서
처음 적용한다면 아래 순서대로 진행함.
- EXAONE 3.5 2.4B 모델을 받음.
ollama pull exaone3.5:2.4b
- Ollama service override를 엶.
sudo systemctl edit ollama.service
- 아래 환경 변수를 넣음.
[Service]
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_MAX_LOADED_MODELS=1"
Environment="OLLAMA_KEEP_ALIVE=24h"
Environment="OLLAMA_MAX_QUEUE=2"
Environment="OLLAMA_NO_CLOUD=1"
- Ollama 서비스를 재시작함.
sudo systemctl daemon-reload
sudo systemctl restart ollama
- balanced 프로필 작업 디렉터리를 만듦.
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-balanced
cd ~/ollama-profiles/sleepzz-exaone35-24b-balanced
- 아래 내용으로
Modelfile을 작성함.
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 4096
- balanced 모델을 생성함.
ollama create sleepzz-exaone3.5:2.4b-balanced -f Modelfile
- fast 프로필을 추가함.
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-fast
cd ~/ollama-profiles/sleepzz-exaone35-24b-fast
Modelfile:
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 2048
모델 생성:
ollama create sleepzz-exaone3.5:2.4b-fast -f Modelfile
- 필요할 때만 doc 프로필을 추가함.
mkdir -p ~/ollama-profiles/sleepzz-exaone35-24b-doc
cd ~/ollama-profiles/sleepzz-exaone35-24b-doc
Modelfile:
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 8192
모델 생성:
ollama create sleepzz-exaone3.5:2.4b-doc -f Modelfile
- 단순 질문으로 속도를 확인함.
time ollama run sleepzz-exaone3.5:2.4b-fast "11+11은?"
time ollama run sleepzz-exaone3.5:2.4b-balanced "11+11은?"
13. 이 문서 기준 최종 추천값
최종 추천값은 아래와 같음.
기본 원본 모델:
exaone3.5:2.4b
기본 사용 모델:
sleepzz-exaone3.5:2.4b-balanced
빠른 응답 모델:
sleepzz-exaone3.5:2.4b-fast
긴 문서용 모델:
sleepzz-exaone3.5:2.4b-doc
Ollama 서비스:
OLLAMA_NUM_PARALLEL=1
OLLAMA_MAX_LOADED_MODELS=1
OLLAMA_KEEP_ALIVE=24h
OLLAMA_MAX_QUEUE=2
OLLAMA_NO_CLOUD=1
balanced Modelfile:
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 4096
fast Modelfile:
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 2048
doc Modelfile:
FROM exaone3.5:2.4b
PARAMETER num_thread 8
PARAMETER num_ctx 8192
더 가볍게 쓰고 싶으면 아래처럼 낮춤.
num_thread 8 -> 6
num_ctx 4096 -> 2048
답변 길이와 스타일은 필요할 때만 추가 파라미터로 조정함.