Skip to content

บางครั้ง Ollama อาจไม่ทำงานตามที่คาดไว้ หนึ่งในวิธีที่ดีที่สุดเพื่อทราบสาเหตุที่เกิดขึ้นคือการตรวจสอบบันทึกระบบ (logs) ค้นหาบันทึกระบบบน Mac โดยการรันคำสั่ง:

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

บนระบบ Linux ที่ใช้ systemd สามารถค้นหาบันทึกระบบด้วยคำสั่งนี้:

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

เมื่อคุณรัน Ollama ใน container บันทึกระบบจะถูกส่งไปยัง stdout/stderr ใน container:

shell
docker logs <container-name>

(ใช้คำสั่ง docker ps เพื่อค้นหาชื่อ container)

หากคุณรัน ollama serve ด้วยตนเองใน terminal บันทึกระบบจะแสดงใน terminal นั้นเอง

เมื่อคุณรัน Ollama บน Windows มีตำแหน่งเก็บบันทึกหลายแห่ง คุณสามารถดูได้ในหน้าต่าง explorer โดยกด <cmd>+R แล้วพิมพ์คำสั่งต่อไปนี้:

  • explorer %LOCALAPPDATA%\Ollama เพื่อดูบันทึกระบบ บันทึกเซิร์ฟเวอร์ล่าสุดจะอยู่ใน server.log และบันทึกที่เก่ากว่านี้จะอยู่ใน server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama เพื่อเรียกดูไฟล์ไบนารี (ตัวติดตั้งจะเพิ่มเส้นทางนี้ไปยัง PATH ของผู้ใช้)
  • explorer %HOMEPATH%\.ollama เพื่อเรียกดูตำแหน่งที่เก็บโมเดลและการตั้งค่า
  • explorer %TEMP% ซึ่งเป็นตำแหน่งที่เก็บไฟล์เรียกใช้ชั่วคราวในหนึ่งหรือหลายไดเรกทอรี ollama*

เพื่อเปิดใช้งานบันทึกดีบักเพิ่มเติมเพื่อช่วยแก้ไขปัญหา ก่อนอื่น ออกจากแอปที่กำลังรันจากเมนู tray แล้วใน terminal powershell

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

เข้าร่วม Discord เพื่อขอความช่วยเหลือในการอ่านบันทึกระบบ

ไลบรารี LLM ​

Ollama มีไลบรารี LLM หลายตัวที่ถูกคอมไพล์สำหรับ GPU ต่างๆ และฟีเจอร์เวกเตอร์ CPU ต่างกัน Ollama จะพยายามเลือกไลบรารีที่ดีที่สุดตามความสามารถของระบบของคุณ หากการตรวจจับอัตโนมัตินี้มีปัญหา หรือคุณพบปัญหาอื่นๆ (เช่น การค้างของ GPU) คุณสามารถแก้ไขปัญหานี้ได้โดยบังคับใช้ไลบรารี LLM เฉพาะ cpu_avx2 จะให้ประสิทธิภาพดีที่สุด ตามด้วย cpu_avx และช้าที่สุดแต่เข้ากันได้กับระบบมากที่สุดคือ cpu การจำลอง Rosetta บน MacOS จะทำงานกับไลบรารี cpu

ในบันทึกเซิร์ฟเวอร์ คุณจะเห็นข้อความที่คล้ายกับนี้ (แตกต่างกันไปตามเวอร์ชันที่ปล่อย):

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

การแทนที่ไลบรารี LLM ทดลองใช้

คุณสามารถตั้งค่า OLLAMA_LLM_LIBRARY เป็นไลบรารี LLM ใดๆ ที่มีให้ใช้เพื่อข้ามการตรวจจับอัตโนมัติ เช่น หากคุณมีการ์ด CUDA แต่ต้องการบังคับใช้ไลบรารี LLM CPU ที่รองรับเวกเตอร์ AVX2 ให้ใช้คำสั่ง:

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

ตัวแปร noexec ของ tmp บน Linux ​

หากระบบของคุณถูกตั้งค่าด้วยฟлаг "noexec" ที่ Ollama เก็บไฟล์เรียกใช้ชั่วคราว คุณสามารถระบุตำแหน่งอื่นได้โดยตั้งค่า OLLAMA_TMPDIR เป็นตำแหน่งที่ผู้ใช้ที่รัน ollama สามารถเขียนข้อมูลได้ เช่น OLLAMA_TMPDIR=/usr/share/ollama/

Docker บน Linux ​

หาก Ollama ทำงานบน GPU ใน container docker ตั้งแต่แรก แต่เปลี่ยนไปรันบน CPU หลังจากผ่านช่วงเวลาหนึ่งพร้อมกับข้อผิดพลาดในบันทึกเซิร์ฟเวอร์ที่รายงานการค้นหา GPU ล้มเหลว ปัญหานี้สามารถแก้ไขได้โดยปิดการจัดการ cgroup ของ systemd ใน Docker แก้ไขไฟล์ /etc/docker/daemon.json บนโฮสต์และเพิ่ม "exec-opts": ["native.cgroupdriver=cgroupfs"] ไปยังการตั้งค่า docker

การค้นหา GPU NVIDIA ​

เมื่อ Ollama เริ่มทำงาน มันจะตรวจสอบ GPU ที่มีอยู่ในระบบเพื่อระบุความเข้ากันได้และปริมาณ VRAM ที่มีอยู่ บางครั้งการค้นหานี้อาจล้มเหลวในการพบ GPU ของคุณ โดยทั่วไปการรันไดรฟเวอร์ล่าสุดจะให้ผลลัพธ์ที่ดีที่สุด

การแก้ไขปัญหา NVIDIA บน Linux ​

หากคุณใช้ container เพื่อรัน Ollama ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า container runtime ไว้ล่วงหน้าตามที่ระบุใน docker

บางครั้ง Ollama อาจมีปัญหาในการเริ่มต้น GPU เมื่อคุณตรวจสอบบันทึกเซิร์ฟเวอร์ ปัญหานี้อาจแสดงเป็นรหัสข้อผิดพลาดต่างๆ เช่น "3" (ยังไม่เริ่มต้น), "46" (อุปกรณ์ไม่พร้อมใช้งาน), "100" (ไม่มีอุปกรณ์), "999" (ไม่ทราบสาเหตุ) หรืออื่นๆ วิธีแก้ไขปัญหาต่อไปนี้อาจช่วยให้คุณแก้ไขปัญหาได้

  • หากคุณใช้ container container runtime ทำงานอยู่หรือไม่? ลองรัน docker run --gpus all ubuntu nvidia-smi - หากคำสั่งนี้ไม่ทำงาน Ollama จะไม่สามารถเห็น GPU NVIDIA ของคุณได้
  • ไดรฟเวอร์ 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

การค้นหา GPU AMD ​

บน Linux การเข้าถึง GPU AMD โดยปกติต้องการการเป็นสมาชิกของกลุ่ม video และ/หรือ render เพื่อเข้าถึงอุปกรณ์ /dev/kfd หากการตั้งค่าสิทธิ์ไม่ถูกต้อง Ollama จะตรวจพบปัญหานี้และรายงานข้อผิดพลาดในบันทึกเซิร์ฟเวอร์

เมื่อรันใน container บนบางการกระจาย Linux และ container runtime โปรเซส ollama อาจไม่สามารถเข้าถึง GPU ได้ ใช้คำสั่ง ls -lnd /dev/kfd /dev/dri /dev/dri/* บนระบบโฮสต์เพื่อระบุ ID กลุ่มที่เป็น ตัวเลข ของระบบของคุณ และส่งอาร์กิวเมนต์ --group-add ... เพิ่มเติมไปยัง container เพื่อให้สามารถเข้าถึงอุปกรณ์ที่ต้องการ เช่น ในเอาต์พุตต่อไปนี้ crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 คอลัมน์ group ID คือ 44

หากคุณพบปัญหาในการให้ Ollama ค้นหา GPU ได้อย่างถูกต้องหรือใช้ 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 ​

หาก GPU AMD ของคุณไม่ถูกตรวจพบบน Linux และบันทึกเซิร์ฟเวอร์มีข้อความคล้ายกับนี้:

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

สิ่งนี้โดยปกติหมายความว่าไดรฟเวอร์ GPU AMD ของระบบเก่ามากเกินไป Ollama รวมไลบรารี ROCm 7 สำหรับ Linux ซึ่งต้องการไดรฟเวอร์เคอร์เนล ROCm 7 ที่เข้ากันได้ หากระบบกำลังรันไดรฟเวอร์รุ่นเก่า (ROCm 6.x หรือรุ่นก่อนหน้า) การเริ่มต้น GPU จะค้างระหว่างการค้นหาอุปกรณ์และหมดเวลาต่อมา ทำให้ Ollama กลับไปใช้ CPU

เพื่อแก้ไขปัญหานี้ อัปเกรดเป็นไดรฟเวอร์ ROCm v7 โดยใช้เครื่องมือ amdgpu-install จาก เอกสาร ROCm ของ AMD หลังจากอัปเกรดแล้ว รีบูตระบบและเริ่มรัน Ollama ใหม่

GPU AMD หลายตัว ​

หากคุณได้รับข้อความตอบกลับที่อ่านไม่รู้เรื่องเมื่อโหลดโมเดลข้าม GPU AMD หลายตัวบน Linux ดูคำแนะนำต่อไปนี้

ข้อผิดพลาดของ Terminal บน Windows ​

เวอร์ชันเก่าของ Windows 10 (เช่น 21H1) มีบั๊กที่ทราบกันอยู่ซึ่งโปรแกรม terminal มาตรฐานไม่แสดงอักขระควบคุมอย่างถูกต้อง สิ่งนี้อาจทำให้เกิดสตริงอักขระยาวๆ เช่น ←[?25h←[?25l แสดงขึ้น บางครั้งเกิดข้อผิดพลาดว่า The parameter is incorrect เพื่อแก้ไขปัญหานี้ กรุณาอัปเดตเป็น Win 10 22H1 หรือรุ่นใหม่กว่า