때때로 Ollama가 예상대로 작동하지 않을 수 있습니다. 어떤 문제가 발생했는지 파악하는 가장 좋은 방법 중 하나는 로그를 확인하는 것입니다. Mac에서 다음 명령어를 실행하여 로그를 확인할 수 있습니다:
shell
cat ~/.ollama/logs/server.logsystemd가 설치된 Linux 시스템에서는 다음 명령어로 로그를 확인할 수 있습니다:
shell
journalctl -u ollama --no-pager --follow --pager-endOllama를 컨테이너에서 실행할 경우 로그는 컨테이너의 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 -1Linux에서 이전 버전 또는 프리릴리스 버전 설치하기
Linux에서 문제가 발생하여 이전 버전을 설치하거나 공식 릴리스 전에 프리릴리스 버전을 시도하려는 경우 설치 스크립트에 설치할 버전을 지정할 수 있습니다.
shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 shLinux 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 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 검색 중 추가 정보가 보고됩니다.- amdgpu 또는 kfd 드라이버의 오류를 dmesg에서 확인하세요:
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에 모델을 로드할 때 의미 없는 응답이 발생하는 경우 다음 가이드를 참조하세요.
Windows 터미널 오류
Windows 10 이전 버전(예: 21H1)에는 표준 터미널 프로그램이 제어 문자를 올바르게 표시하지 않는 버그가 있는 것으로 알려져 있습니다. 이로 인해 ←[?25h←[?25l과 같은 긴 문자열이 표시되거나 때때로 The parameter is incorrect 오류가 발생할 수 있습니다. 이 문제를 해결하려면 Windows 10 22H1 이상으로 업데이트하세요.