Đôi khi Ollama có thể hoạt động không như mong đợi. Một trong những cách tốt nhất để tìm hiểu chuyện gì đã xảy ra là xem nhật ký (logs). Để tìm nhật ký trên Mac, hãy chạy lệnh:
shell
cat ~/.ollama/logs/server.logTrên các hệ thống Linux sử dụng systemd, bạn có thể tìm nhật ký bằng lệnh:
shell
journalctl -u ollama --no-pager --follow --pager-endKhi bạn chạy Ollama trong một container, nhật ký sẽ được ghi ra stdout/stderr trong container:
shell
docker logs <container-name>(Sử dụng docker ps để tìm tên container)
Nếu bạn chạy thủ công ollama serve trong một terminal, nhật ký sẽ hiển thị trên chính terminal đó.
Khi bạn chạy Ollama trên Windows, có một số vị trí lưu nhật ký khác nhau. Bạn có thể xem chúng trong cửa sổ explorer bằng cách nhấn <cmd>+R và nhập:
explorer %LOCALAPPDATA%\Ollamađể xem nhật ký. Nhật ký server gần nhất sẽ nằm trongserver.log, còn các nhật ký cũ hơn sẽ nằm trongserver-#.logexplorer %LOCALAPPDATA%\Programs\Ollamađể duyệt các tệp nhị phân (Trình cài đặt sẽ thêm đường dẫn này vào PATH của người dùng)explorer %HOMEPATH%\.ollamađể duyệt nơi lưu trữ các mô hình và cấu hìnhexplorer %TEMP%là nơi lưu trữ các tệp thực thi tạm thời trong một hoặc nhiều thư mụcollama*
Để bật ghi nhật ký gỡ lỗi bổ sung giúp khắc phục sự cố, trước tiên Thoát ứng dụng đang chạy từ menu khay hệ thống sau đó trong một terminal powershell
powershell
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"Tham gia Discord để được hỗ trợ diễn giải nhật ký.
Các thư viện LLM
Ollama bao gồm nhiều thư viện LLM được biên dịch cho các GPU khác nhau và tính năng vector của CPU. Ollama sẽ cố gắng chọn thư viện tốt nhất dựa trên khả năng của hệ thống của bạn. Nếu tính năng tự động phát hiện này gặp sự cố, hoặc bạn gặp phải các vấn đề khác (ví dụ: GPU bị sập), bạn có thể khắc phục bằng cách buộc sử dụng một thư viện LLM cụ thể. cpu_avx2 sẽ có hiệu năng tốt nhất, theo sau là cpu_avx, và thư viện chậm nhất nhưng tương thích rộng nhất là cpu. Tính năng giả lập Rosetta trên MacOS sẽ hoạt động với thư viện cpu.
Trong nhật ký server, bạn sẽ thấy một thông báo trông giống như sau (thay đổi tùy theo từng phiên bản phát hành):
Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]Ghi đè thư viện LLM thử nghiệm
Bạn có thể đặt biến môi trường OLLAMA_LLM_LIBRARY thành bất kỳ thư viện LLM khả dụng nào để bỏ qua tính năng tự động phát hiện, ví dụ nếu bạn có card CUDA nhưng muốn buộc sử dụng thư viện LLM CPU có hỗ trợ vector AVX2, hãy sử dụng:
shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serveBạn có thể xem các tính năng mà CPU của mình hỗ trợ bằng lệnh sau.
shell
cat /proc/cpuinfo| grep flags | head -1Cài đặt các phiên bản cũ hoặc phiên bản pre-release trên Linux
Nếu bạn gặp sự cố trên Linux và muốn cài đặt phiên bản cũ hơn, hoặc muốn thử phiên bản pre-release trước khi nó được phát hành chính thức, bạn có thể chỉ định cho script cài đặt phiên bản nào cần cài.
shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 shTùy chọn noexec cho thư mục tmp trên Linux
Nếu hệ thống của bạn được cấu hình với cờ "noexec" ở vị trí Ollama lưu trữ các tệp thực thi tạm thời, bạn có thể chỉ định vị trí thay thế bằng cách đặt biến môi trường OLLAMA_TMPDIR thành một vị trí mà người dùng chạy ollama có quyền ghi. Ví dụ OLLAMA_TMPDIR=/usr/share/ollama/
Docker trên Linux
Nếu ban đầu Ollama hoạt động trên GPU trong container docker, nhưng sau đó chuyển sang chạy trên CPU sau một khoảng thời gian nhất định, kèm theo lỗi báo cáo lỗi phát hiện GPU trong nhật ký server, vấn đề này có thể được khắc phục bằng cách tắt quản lý cgroup systemd trong Docker. Chỉnh sửa tệp /etc/docker/daemon.json trên máy chủ và thêm "exec-opts": ["native.cgroupdriver=cgroupfs"] vào cấu hình docker.
Phát hiện GPU NVIDIA
Khi Ollama khởi động, nó sẽ kiểm kê các GPU có trong hệ thống để xác định khả năng tương thích và lượng VRAM khả dụng. Đôi khi quá trình phát hiện này có thể không tìm thấy GPU của bạn. Nhìn chung, việc chạy driver mới nhất sẽ mang lại kết quả tốt nhất.
Khắc phục sự cố GPU NVIDIA trên Linux
Nếu bạn sử dụng container để chạy Ollama, hãy đảm bảo bạn đã thiết lập runtime của container trước như được mô tả trong docker
Đôi khi Ollama có thể gặp khó khăn khi khởi tạo GPU. Khi bạn kiểm tra nhật ký server, lỗi này có thể xuất hiện dưới dạng các mã lỗi khác nhau, ví dụ như "3" (chưa được khởi tạo), "46" (thiết bị không khả dụng), "100" (không có thiết bị), "999" (không xác định), hoặc các mã khác. Các kỹ thuật khắc phục sự cố sau có thể giúp giải quyết vấn đề:
- Nếu bạn đang sử dụng container, runtime của container có hoạt động không? Hãy thử chạy
docker run --gpus all ubuntu nvidia-smi- nếu lệnh này không hoạt động, Ollama sẽ không thể nhìn thấy GPU NVIDIA của bạn. - Driver uvm đã được tải chưa?
sudo nvidia-modprobe -u - Hãy thử tải lại driver nvidia_uvm - chạy
sudo rmmod nvidia_uvmsau đósudo modprobe nvidia_uvm - Hãy thử khởi động lại máy
- Đảm bảo bạn đang chạy driver nvidia mới nhất
Nếu không có cách nào ở trên giải quyết được vấn đề, hãy thu thập thêm thông tin và gửi báo cáo sự cố:
- Đặt biến
CUDA_ERROR_LEVEL=50và thử lại để nhận thêm nhật ký chẩn đoán - Kiểm tra dmesg để tìm các lỗi bằng lệnh
sudo dmesg | grep -i nvrmvàsudo dmesg | grep -i nvidia
Phát hiện GPU AMD
Trên Linux, quyền truy cập GPU AMD thường yêu cầu là thành viên của nhóm video và/hoặc render để truy cập thiết bị /dev/kfd. Nếu quyền truy cập không được cấu hình đúng, Ollama sẽ phát hiện điều này và báo lỗi trong nhật ký server.
Khi chạy trong container, trên một số bản phân phối Linux và runtime container, tiến trình ollama có thể không thể truy cập GPU. Sử dụng lệnh ls -lnd /dev/kfd /dev/dri /dev/dri/* trên hệ thống máy chủ để xác định ID nhóm dạng số trên hệ thống của bạn, và truyền các đối số --group-add ... bổ sung cho container để nó có thể truy cập các thiết bị cần thiết. Ví dụ, trong kết quả đầu ra sau crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 cột ID nhóm là 44
Nếu bạn gặp sự cố khiến Ollama không thể phát hiện hoặc sử dụng GPU của bạn để suy luận, các bước sau có thể giúp xác định nguyên nhân lỗi.
AMD_LOG_LEVEL=3Bật mức ghi nhật ký thông tin trong các thư viện AMD HIP/ROCm. Điều này có thể giúp hiển thị các mã lỗi chi tiết hơn, giúp khắc phục sự cố dễ dàng hơnOLLAMA_DEBUG=1Trong quá trình phát hiện GPU, thông tin bổ sung sẽ được báo cáo- Kiểm tra dmesg để tìm các lỗi từ driver amdgpu hoặc kfd bằng lệnh
sudo dmesg | grep -i amdgpuvàsudo dmesg | grep -i kfd
Lỗi không khớp phiên bản driver AMD
Nếu GPU AMD của bạn không được phát hiện trên Linux và nhật ký server chứa các thông báo như:
msg="failure during GPU discovery" ... error="failed to finish discovery before timeout"
msg="bootstrap discovery took" duration=30s ...Điều này thường có nghĩa là driver GPU AMD của hệ thống quá cũ. Ollama đóng gói các thư viện ROCm 7 cho Linux, yêu cầu driver kernel ROCm 7 tương thích. Nếu hệ thống đang chạy driver cũ hơn (ROCm 6.x hoặc sớm hơn), quá trình khởi tạo GPU sẽ bị treo trong quá trình phát hiện thiết bị, cuối cùng bị hết thời gian chờ, khiến Ollama phải quay lại sử dụng CPU.
Để khắc phục, hãy nâng cấp lên driver ROCm v7 bằng tiện ích amdgpu-install từ tài liệu ROCm của AMD. Sau khi nâng cấp, hãy khởi động lại máy và khởi động lại Ollama.
Nhiều GPU AMD
Nếu bạn nhận được phản hồi vô nghĩa khi tải mô hình trên nhiều GPU AMD trên Linux, hãy tham khảo hướng dẫn sau.
Lỗi terminal trên Windows
Các phiên bản Windows 10 cũ hơn (ví dụ: 21H1) có lỗi đã biết là chương trình terminal tiêu chuẩn không hiển thị đúng các ký tự điều khiển. Điều này có thể dẫn đến việc hiển thị một chuỗi ký tự dài như ←[?25h←[?25l, đôi khi kèm theo lỗi The parameter is incorrect. Để khắc phục vấn đề này, vui lòng cập nhật lên Win 10 22H1 hoặc phiên bản mới hơn.