Skip to content

때때로 Ollama가 예상대로 작동하지 않을 수 있습니다. 어떤 문제가 발생했는지 파악하는 가장 좋은 방법 중 하나는 로그를 확인하는 것입니다. Mac에서 다음 명령어를 실행하여 로그를 확인할 수 있습니다:

shell
cat ~/.ollama/logs/server.log

systemd가 설치된 Linux 시스템에서는 다음 명령어로 로그를 확인할 수 있습니다:

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

Ollama를 컨테이너에서 실행할 경우 로그는 컨테이너의 stdout/stderr로 출력됩니다:

shell
docker logs <container-name>

(컨테이너 이름을 확인하려면 docker ps를 사용하세요)

터미널에서 직접 ollama serve를 실행하는 경우 로그는 해당 터미널에 출력됩니다.

Ollama를 Windows에서 실행할 경우 로그가 저장되는 위치가 여러 곳입니다. <cmd>+R을 눌러 실행 창을 열고 다음 경로를 입력하여 탐색기에서 확인할 수 있습니다:

  • explorer %LOCALAPPDATA%\Ollama: 로그를 확인하려면 이 경로를 입력하세요. 가장 최근 서버 로그는 server.log에, 이전 로그는 server-#.log에 저장됩니다.
  • explorer %LOCALAPPDATA%\Programs\Ollama: 바이너리 파일을 탐색하려면 이 경로를 입력하세요(설치 프로그램이 사용자 PATH에 이 경로를 추가합니다).
  • explorer %HOMEPATH%\.ollama: 모델과 설정 파일이 저장된 위치를 탐색하려면 이 경로를 입력하세요.
  • explorer %TEMP%: 임시 실행 파일이 하나 이상의 ollama* 디렉토리에 저장된 위치입니다.

문제 해결을 위해 추가 디버그 로깅을 활성화하려면 먼저 트레이 메뉴에서 실행 중인 앱을 종료한 다음 PowerShell 터미널에서 다음을 실행하세요:

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 라이브러리를 강제로 사용하려면 다음을 사용하세요:

shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

다음 명령어로 CPU가 지원하는 기능을 확인할 수 있습니다.

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

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

Linux에서 문제가 발생하여 이전 버전을 설치하거나 공식 릴리스 전에 프리릴리스 버전을 시도하려는 경우 설치 스크립트에 설치할 버전을 지정할 수 있습니다.

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

Linux tmp noexec

Ollama가 임시 실행 파일을 저장하는 위치에 "noexec" 플래그가 설정된 경우, Ollama가 실행되는 사용자가 쓰기 권한이 있는 위치로 OLLAMA_TMPDIR 환경 변수를 설정하여 대체 위치를 지정할 수 있습니다. 예: 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 목록을 수집합니다. 때때로 이 검색 과정에서 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 nvrmsudo 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 검색 중 추가 정보가 보고됩니다.
  • amdgpu 또는 kfd 드라이버의 오류를 dmesg에서 확인하세요: sudo dmesg | grep -i amdgpusudo 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에 모델을 로드할 때 의미 없는 응답이 발생하는 경우 다음 가이드를 참조하세요.

Windows 터미널 오류

Windows 10 이전 버전(예: 21H1)에는 표준 터미널 프로그램이 제어 문자를 올바르게 표시하지 않는 버그가 있는 것으로 알려져 있습니다. 이로 인해 ←[?25h←[?25l과 같은 긴 문자열이 표시되거나 때때로 The parameter is incorrect 오류가 발생할 수 있습니다. 이 문제를 해결하려면 Windows 10 22H1 이상으로 업데이트하세요.