Ollama 실전 · 글 8편
Ollama 실전이 글에서 다루는 것연결이 안 됨, 모델이 안 올라감, 답이 느림, 답이 이상함의 네 갈래로 나누어 원인을 찾는 순서와 대응을 정리합니다.
먼저 어느 갈래인지 정합니다
문제가 생기면 다음 넷 중 어디에 해당하는지부터 봅니다. 갈래마다 볼 곳이 다릅니다.
| 갈래 | 증상 |
|---|---|
| 1. 연결이 안 됨 | 프로그램에서 연결 거부, 연결 실패 오류 |
| 2. 모델이 안 올라감 | 모델을 찾을 수 없음, 메모리 부족, 실행 직후 종료 |
| 3. 답이 느림 | 첫 글자가 늦게 나옴, 글자가 천천히 나옴 |
| 4. 답이 이상함 | 영어로 답함, 형식이 제각각, 내용이 틀림 |
공통 점검 세 줄
어느 갈래든 아래 세 가지를 먼저 실행합니다. 대부분은 여기서 원인이 보입니다.
curl http://localhost:11434
ollama ls
ollama ps
- 첫 줄에서
Ollama is running이 나오지 않으면 서버가 꺼진 것입니다. 갈래 1로 갑니다. - 둘째 줄의 목록에 쓰려는 모델 이름이 없으면 받지 않았거나 이름이 다른 것입니다. 갈래 2로 갑니다.
- 셋째 줄은 지금 메모리에 올라온 모델과 그 크기, CPU와 GPU 중 어디에서 도는지를 보여 줍니다. 갈래 3에서 씁니다.
갈래 1. 연결이 안 됨
서버가 꺼져 있는 경우. Ollama 앱을 실행합니다. 작업 표시줄이나 메뉴 막대에 아이콘이 생기는지 봅니다. PC를 켤 때 자동으로 시작되도록 해 두면 다시 겪지 않습니다.
포트가 이미 사용 중이라는 오류. ollama serve를 실행했을 때 11434 포트를 쓸 수 없다는 메시지가 나오는 경우입니다. 대부분은 Ollama 앱이 이미 서버를 띄워 둔 상태입니다. curl http://localhost:11434에 응답이 오면 서버가 이미 있는 것이므로 serve를 또 실행할 필요가 없습니다.
응답이 오지 않는데도 포트 오류가 난다면 다른 프로그램이 그 포트를 쓰고 있을 수 있습니다. Windows에서는 다음으로 확인합니다.
netstat -ano | findstr 11434
맨 오른쪽 숫자가 그 포트를 쓰는 프로그램의 번호(PID)입니다. 작업 관리자의 세부 정보 탭에서 같은 번호를 찾아 무엇인지 확인합니다.
주소를 잘못 적은 경우. 포트 번호의 숫자 하나를 바꿔 적는 실수가 흔합니다. Ollama의 기본 포트는 11434입니다. 코드에 적은 숫자를 다시 봅니다. https가 아니라 http인지도 확인합니다.
브라우저에서 연 HTML 파일만 안 되는 경우. 터미널이나 Python에서는 되는데 HTML 파일에서만 실패하면 브라우저의 보안 규칙(CORS)에 막힌 것입니다. 해결 방법은 HTML 파일 하나로 Ollama 챗봇 만들기에 있습니다.
다른 PC에서 접속이 안 되는 경우. Ollama는 기본으로 자기 PC에서 오는 요청만 받습니다. 다른 PC에서 쓰려면 설정이 필요합니다. 사무실 네트워크에서 한 대의 모델 같이 쓰기를 봅니다.
갈래 2. 모델이 안 올라감
모델을 찾을 수 없다는 오류. 이름이 글자 하나까지 같아야 합니다. ollama ls의 이름을 복사해 코드에 붙여 넣습니다. 태그(콜론 뒤)까지 포함합니다.
메모리가 모자란 경우. 모델을 올리다가 오류가 나거나, PC 전체가 멈춘 듯 느려집니다. 순서대로 해 봅니다.
ollama ps로 이미 올라와 있는 다른 모델이 있는지 봅니다. 있으면ollama stop 모델이름으로 내립니다.- 브라우저 탭과 무거운 프로그램을 닫습니다.
- 한 단계 작은 모델로 바꿉니다. 4B가 안 되면 2B나 1B로 내려갑니다.
num_ctx를 크게 잡아 두었다면 줄입니다. 한 번에 다룰 글의 양을 늘리면 메모리를 더 씁니다.
모델 크기를 고르는 기준은 내 PC 사양으로 돌릴 수 있는 모델 고르기에 있습니다.
디스크가 가득 찬 경우. 내려받다가 실패합니다. ollama ls로 목록을 보고 쓰지 않는 모델을 ollama rm으로 지웁니다.
내려받기가 중간에 끊긴 경우. 같은 ollama pull 명령을 다시 실행하면 이어서 받습니다.
갈래 3. 답이 느림
느린 지점이 어디인지 나눕니다.
| 느린 지점 | 원인 | 대응 |
|---|---|---|
| 첫 질문의 첫 글자만 늦음 | 모델을 디스크에서 메모리로 올리는 시간 | 정상. 미리 짧은 질문을 한 번 보내 올려 둠 |
| 한참 쉬었다 물으면 다시 늦음 | 쓰지 않는 동안 모델이 메모리에서 내려감 | 정상. 작업 전에 한 번 불러 둠 |
| 매번 글자가 천천히 나옴 | CPU로 처리 중이거나 모델이 사양에 비해 큼 | 아래 순서로 조정 |
| 대화가 길어질수록 느려짐 | 매번 대화 전체를 다시 읽음 | 새 대화를 시작 |
글자가 계속 천천히 나올 때의 조정 순서입니다. 강의에서 가장 먼저 권하는 것은 첫째입니다.
- 더 작은 모델로 바꿉니다. 효과가 가장 큽니다.
- 답을 짧게 받습니다. 프롬프트에 “3줄 이내”를 넣고,
num_predict로 최대 길이를 정합니다. - 입력을 줄입니다. 필요한 부분만 넣습니다.
ollama ps로 어디에서 도는지 봅니다. 그래픽카드가 있는데 CPU로 표시되면 모델이 그래픽 메모리에 다 들어가지 않았거나 그 그래픽카드가 지원되지 않는 것입니다. 앞의 경우라면 더 작은 모델이나 더 낮은 양자화 판으로 바꿉니다.- 다른 프로그램을 닫습니다. 메모리와 CPU를 같이 쓰고 있습니다.
- 노트북은 전원을 연결합니다. 배터리로 쓸 때는 성능이 제한되는 경우가 많습니다.
내 PC에서 얼마나 걸리는지 숫자로 재는 방법은 CPU, GPU, 메모리가 하는 일에 있습니다.
엑셀에서 느릴 때
- 수식을 수백 행에 한꺼번에 끌면 엑셀이 그동안 응답하지 않습니다. 나누어 끕니다.
- 다시 계산될 때마다 모델을 또 부릅니다. 결과가 나오면 값으로 붙여 넣어 고정합니다.
- 매크로 안에서 여러 행을 돌린다면
Application.ScreenUpdating = False로 화면 갱신을 끄면 조금 빨라집니다. - 첫 호출의 멈춤은 파일을 열 때 짧은 호출을 한 번 보내 모델을 미리 올려 두면 줄어듭니다.
갈래 4. 답이 이상함
강의 실습에서 정리한 증상별 대응입니다.
| 증상 | 대응 |
|---|---|
| 답이 영어로 나옴 | 시스템 프롬프트에 “반드시 한국어로 답하라”를 넣음 |
| 같은 입력에 답이 매번 다름 | temperature를 0.1~0.3으로 낮추고 seed를 고정 |
| 품질이 낮음 | Modelfile에서 시스템 프롬프트를 구체화하고 temperature 0.3, top_p 0.9로 조정 |
| 범주 밖의 답을 지어냄 | 범주 목록을 주고 “목록에 없는 것은 쓰지 않는다”를 넣음 |
| 답 앞뒤에 설명이 붙음 | “결과만 출력하라”를 넣고, 원하는 출력 예시를 한 줄 보여 줌 |
| 긴 글을 넣으면 지시를 무시함 | 글을 나누어 넣고, 지시를 끝에 한 번 더 적음. 필요하면 num_ctx를 키움 |
| 같은 말을 되풀이함 | repeat_penalty를 조금 올림 |
| 답이 중간에 끊김 | num_predict가 너무 작음. 값을 키움 |
| 한글이 깨져 보임 | 요청과 응답을 모두 UTF-8로 지정 |
| 사실과 다른 내용을 씀 | 근거 자료를 프롬프트에 같이 넣고, 결과는 사람이 확인 |
프롬프트와 설정을 고쳐도 안 되면 그 일이 지금 모델에 비해 어려운 것입니다. 한 단계 큰 모델로 시험해 봅니다. 지시문 작성법은 작은 모델에서 더 중요한 프롬프트 기본기에, 설정값은 Modelfile과 파라미터로 업무용 모델 만들기에 있습니다.
프로그램에서 부를 때 생기는 문제
| 증상 | 원인 | 대응 |
|---|---|---|
| JSON 해석 오류 | 응답이 여러 조각으로 옴 | 요청에 "stream": false를 넣음 |
| 따옴표가 든 글에서만 실패 | 요청 JSON이 깨짐 | 따옴표와 줄바꿈을 이스케이프하는 함수를 거침 |
| 시간 초과 | 첫 호출이 오래 걸림 | 대기 시간을 넉넉히 주고, 미리 한 번 불러 둠 |
| 가끔 한 건씩 실패 | 서버가 잠시 응답하지 않음 | 실패하면 몇 초 뒤 다시 시도하도록 만듦 |
| 다른 PC에서는 모델을 못 찾음 | 모델 이름을 코드에 박아 둠 | 모델 이름을 설정 파일이나 시트에서 읽게 함 |
도움을 요청할 때 적을 것
동료나 AI에게 물을 때 아래를 같이 적으면 답이 빨라집니다.
- 운영체제와 메모리 용량, 그래픽카드 유무
ollama --version의 결과ollama ls와ollama ps의 결과- 실행한 명령이나 코드의 해당 부분
- 오류 메시지 원문. 줄여 쓰지 않고 그대로 붙입니다.
자료나 프롬프트에 든 실제 업무 내용은 빼고 보냅니다.
한 장 요약
curl http://localhost:11434로 서버를 확인합니다.ollama ls로 모델 이름을 확인합니다.ollama ps로 메모리와 처리 위치를 확인합니다.- 느리면 모델을 줄이고, 답을 짧게 받고, 입력을 줄입니다.
- 답이 이상하면 언어, 형식, 범주를 지시문에 적고
temperature를 낮춥니다. - 그래도 안 되면 한 단계 큰 모델로 시험합니다.