문제 해결

문제 해결 (Troubleshooting)

Ollama에서 겪는 문제를 해결하는 방법

Ollama가 기대만큼 동작하지 않을 때가 있어요. 무슨 일이 있었는지 파악하는 가장 좋은 방법 중 하나가 로그를 살펴보는 것입니다. Mac에서는 다음 명령으로 로그를 찾을 수 있어요.

cat ~/.ollama/logs/server.log

Linux에서 systemd를 쓴다면 이 명령으로 로그를 확인합니다.

journalctl -u ollama --no-pager --follow --pager-end

컨테이너에서 Ollama를 실행하면 로그는 컨테이너의 stdout/stderr로 나갑니다.

docker logs <container-name>

(컨테이너 이름은 docker ps로 확인하세요)

터미널에서 ollama serve를 직접 실행한다면 로그는 그 터미널에 남습니다.

Windows에서 Ollama를 실행하면 위치가 몇 곳으로 나뉩니다. 탐색기에서 <cmd>+R을 누르고 다음을 입력하면 볼 수 있어요.

  • explorer %LOCALAPPDATA%\Ollama — 로그 확인용. 가장 최근 서버 로그는 server.log, 이전 로그는 server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama — 바이너리 탐색(설치 프로그램이 사용자 PATH에 추가함)
  • explorer %HOMEPATH%\.ollama — 모델과 설정이 저장된 곳
  • explorer %TEMP% — 하나 이상의 ollama* 디렉토리에 임시 실행 파일이 저장됨

문제 해결에 도움이 될 추가 디버그 로깅을 켜려면, 먼저 트레이 메뉴에서 실행 중인 앱을 종료한 뒤 powershell 터미널에서 다음을 실행하세요.

$env:OLLAMA_DEBUG="1"
& "ollama app.exe"

로그 해석에 도움이 필요하면 Discord에 참여해 보세요.

LLM 라이브러리

Ollama는 서로 다른 GPU와 CPU 벡터 기능을 위해 컴파일된 여러 LLM 라이브러리를 포함합니다. Ollama는 시스템의 기능에 따라 가장 좋은 것을 자동 선택해요. 이 자동 감지에 문제가 있거나 다른 문제(예: GPU 크래시)를 겪는다면 특정 LLM 라이브러리를 강제로 지정해 우회할 수 있습니다. cpu_avx2가 가장 좋은 성능을 내고, 그다음 cpu_avx, 가장 느리지만 호환성이 가장 좋은 건 cpu예요. macOS의 Rosetta 에뮬레이션은 cpu 라이브러리로 동작합니다.

서버 로그에서 다음과 비슷한 메시지가 보일 텐데, 릴리스마다 조금씩 다릅니다.

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

실험적 LLM 라이브러리 오버라이드

OLLAMA_LLM_LIBRARY를 사용 가능한 LLM 라이브러리 중 하나로 설정하면 자동 감지를 건너뛸 수 있어요. 예를 들어 CUDA 카드가 있는데 AVX2 벡터 지원의 CPU LLM 라이브러리를 강제로 쓰고 싶다면:

OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

내 CPU의 기능은 다음으로 확인할 수 있습니다.

cat /proc/cpuinfo| grep flags | head -1

Linux에서 이전 버전이나 프리릴리스 설치하기

Linux에서 문제를 겪고 이전 버전을 설치하고 싶거나, 공식 출시 전에 프리릴리스를 시험해 보고 싶다면 설치 스크립트에 버전을 지정할 수 있어요.

curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh

Linux tmp noexec

시스템이 Ollama의 임시 실행 파일을 저장하는 위치에 "noexec" 플래그가 설정돼 있다면, OLLAMA_TMPDIR을 ollama가 실행되는 사용자가 쓸 수 있는 위치로 지정해 대체 경로를 정할 수 있어요. 예: OLLAMA_TMPDIR=/usr/share/ollama/

Linux docker

Docker 컨테이너에서 Ollama가 처음에 GPU로 잘 동작하다가 한동안 지나서 CPU 실행으로 바뀌고, 서버 로그에 GPU 발견 실패 오류가 찍히는 경우가 있어요. 이건 Docker에서 systemd cgroup 관리가 켜져 있어 생기는 문제로, 호스트의 /etc/docker/daemon.json을 편집해 docker 구성에 "exec-opts": ["native.cgroupdriver=cgroupfs"]를 추가하면 해결됩니다.

NVIDIA GPU 발견

Ollama는 시작할 때 시스템에 있는 GPU를 조사해 호환성과 가용 VRAM을 판단합니다. 때로 이 발견 과정이 GPU를 찾지 못할 수 있어요. 일반적으로 최신 드라이버를 쓰는 게 가장 좋은 결과를 줍니다.

Linux NVIDIA 문제 해결

컨테이너로 Ollama를 실행한다면 docker에 설명된 대로 컨테이너 런타임을 먼저 설정했는지 확인하세요.

때로 Ollama가 GPU 초기화에 어려움을 겪을 수 있어요. 서버 로그를 보면 "3"(초기화 안 됨), "46"(장치 사용 불가), "100"(장치 없음), "999"(알 수 없음) 같은 다양한 오류 코드로 나타납니다. 아래 문제 해결 방법이 도움이 될 수 있어요.

  • 컨테이너를 쓴다면 컨테이너 런타임이 동작하는지 확인하세요. docker run --gpus all ubuntu nvidia-smi를 실행해 보고, 이게 동작하지 않으면 Ollama도 NVIDIA GPU를 볼 수 없습니다.
  • uvm 드라이버가 로드됐는지 확인합니다. sudo nvidia-modprobe -u
  • nvidia_uvm 드라이버를 다시 로드해 보세요. sudo rmmod nvidia_uvm 다음 sudo modprobe nvidia_uvm
  • 재부팅을 시도해 보세요.
  • 최신 nvidia 드라이버를 쓰고 있는지 확인하세요.

그것으로 해결되지 않으면 추가 정보를 모아 이슈를 등록합니다.

  • CUDA_ERROR_LEVEL=50을 설정하고 다시 시도해 진단 로그를 더 봅니다.
  • dmesg에서 오류를 확인합니다. sudo dmesg | grep -i nvrm 그리고 sudo dmesg | grep -i nvidia

AMD GPU 발견

Linux에서 AMD GPU에 접근하려면 보통 /dev/kfd 장치에 접근하기 위해 video 및/또는 render 그룹 멤버십이 필요해요. 권한이 제대로 설정되지 않으면 Ollama가 이를 감지하고 서버 로그에 오류를 보고합니다.

컨테이너에서 실행할 때, 일부 Linux 배포판과 컨테이너 런타임에서는 ollama 프로세스가 GPU에 접근하지 못할 수 있어요. 호스트 시스템에서 ls -lnd /dev/kfd /dev/dri /dev/dri/*를 실행해 시스템의 숫자 그룹 ID를 확인하고, 컨테이너에 필요한 --group-add ... 인자를 추가해 필요한 장치에 접근할 수 있게 하세요. 예를 들어 crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 출력에서 그룹 ID 열은 44입니다.

Ollama가 GPU를 올바르게 발견하거나 추론에 사용하지 못하는 문제를 겪고 있다면, 다음과 같이 실패를 격리하는 데 도움이 될 수 있어요.

  • AMD_LOG_LEVEL=3 — AMD HIP/ROCm 라이브러리에서 정보 로그 레벨을 켭니다. 문제 해결에 도움이 되는 더 상세한 오류 코드를 볼 수 있어요.
  • OLLAMA_DEBUG=1 — GPU 발견 중 추가 정보가 보고됩니다.
  • dmesg에서 amdgpu 또는 kfd 드라이버 오류를 확인합니다. sudo dmesg | grep -i amdgpu 그리고 sudo dmesg | grep -i kfd

AMD 드라이버 버전 불일치

Linux에서 AMD GPU가 감지되지 않고 서버 로그에 다음과 같은 메시지가 있다면:

msg="failure during GPU discovery" ... error="failed to finish discovery before timeout"
msg="bootstrap discovery took" duration=30s ...

이건 보통 시스템의 AMD GPU 드라이버가 너무 오래된 경우예요. Ollama는 호환되는 ROCm 7 커널 드라이버가 필요한 ROCm 7 Linux 라이브러리를 번들로 제공합니다. 시스템이 더 오래된 드라이버(ROCm 6.x 이하)를 실행하고 있다면 장치 발견 중 GPU 초기화가 멈췄다가 결국 타임아웃되어 Ollama가 CPU로 폴백해요.

해결하려면 AMD의 ROCm 문서에 나온 amdgpu-install 유틸리티로 ROCm v7 드라이버로 업그레이드하세요. 업그레이드 후 재부팅하고 Ollama를 다시 시작합니다.

AMD GPU 여러 개

Linux에서 모델이 여러 AMD GPU에 걸쳐 로드될 때 알아볼 수 없는 응답(gibberish)이 나오면 다음 가이드를 참고하세요.

Windows 터미널 오류

오래된 Windows 10 버전(예: 21H1)은 표준 터미널 프로그램이 제어 문자를 제대로 표시하지 못하는 버그가 있는 것으로 알려져 있어요. 이로 인해 ←[?25h←[?25l 같은 긴 문자열이 표시되고, 때로는 The parameter is incorrect 오류가 나기도 합니다. 이 문제를 해결하려면 Win 10 22H1 이상으로 업데이트하세요.

더 알아보기 (Learn more)

출처: 공식문서 - Troubleshooting