เมื่อไม่นานมานี้ มีความจำเป็นต้องมีบริการแชทบอทส่วนตัวเป็นทางเลือกแทน ChatGPT ของ OpenAI อย่างสมบูรณ์ ฉันจึงตัดสินใจติดตั้งบริการนี้ที่บ้านและให้ทุกคนในบ้านเข้าถึงได้ ร่วมกับเครื่องพิมพ์เครือข่ายและ NAS (OpenMediaVault) ของฉัน
ในอดีต ฉันเคยแนะนำให้ผู้คนใช้ซีรีส์ Llama สำหรับงานภาษาอังกฤษและซีรีส์ Qwen สำหรับงานภาษาจีน ไม่มีโมเดลโอเพนซอร์สที่แข็งแกร่งเพียงพอสำหรับงานหลายภาษาเมื่อเปรียบเทียบกับโมเดลที่เป็นกรรมสิทธิ์ (GPT/Claude)
อย่างไรก็ตาม อย่างที่ทราบกันดีว่า สิ่งต่างๆ เปลี่ยนแปลงไปในช่วงนี้ ฉันใช้ DeepSeek-V2 เป็นครั้งคราวทุกครั้งที่ฉันเบื่อ Qwen2.5 และตามหลัง DeepSeek V2.5 และ V3 เนื่องจากขาดฮาร์ดแวร์ แต่ DeepSeek ไม่ทำให้ฉันผิดหวัง R1 มีประสิทธิภาพน่าประทับใจมากและให้ผลตอบแทนเพียง 1.5 พันล้าน!
ซึ่งหมายความว่าเราสามารถรันได้แม้บน CPU ที่มีประสบการณ์การใช้งานค่อนข้างมาก เนื่องจากหลายคนมี GPU สำหรับการเล่นเกม ความเร็วจึงไม่ใช่ปัญหา การให้ LLM ในพื้นที่ประมวลผลเอกสารและรูปภาพที่อัปโหลดถือเป็นข้อได้เปรียบอย่างมาก เนื่องจาก OpenAI จำกัดการใช้งานนี้สำหรับบัญชีฟรี
แม้ว่า การติดตั้ง Open WebUI พร้อมการรองรับ Ollama แบบรวม จะง่ายมากด้วยคำสั่งบรรทัดเดียวอย่างเป็นทางการ:
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
แต่การทำให้ RAG (การค้นหาเว็บ) ทำงานได้นั้นไม่ใช่เรื่องง่ายสำหรับคนส่วนใหญ่ ดังนั้น ฉันจึงอยากจะหาโซลูชันอื่นที่แปลกใหม่
ตามที่ฉันได้กล่าวไว้ใน โพสต์ล่าสุด Harbor เป็นแหล่งทดสอบที่ยอดเยี่ยมสำหรับการทดลองกับสแต็ก LLM ที่แตกต่างกัน แต่ไม่เพียงแต่จะยอดเยี่ยมสำหรับสิ่งนั้นเท่านั้น แต่ยังเป็นโซลูชันแบบครบวงจรสำหรับการโฮสต์ LLM ในเครื่องด้วยตนเองโดยใช้ RAG ที่ทำงานได้ทันที ดังนั้น มาเริ่มใช้งานตั้งแต่ต้นและข้ามขั้นตอนต่างๆ ได้ตามสบาย เนื่องจากคนส่วนใหญ่ไม่ได้เริ่มจากการติดตั้งระบบปฏิบัติการ
เช่นเดียวกับ ก่อนหน้านี้ ให้ดำเนินการติดตั้งโดยใช้ debian-11.6.0-amd64-netinst.iso
เพิ่ม sudoer usermod -aG sudo username
จากนั้นรีบูต
(ทางเลือก) เพิ่มการสลับเพิ่มเติม
fallocate -l 64G /home/swapfile chmod 600 /home/swapfile mkswap /home/swapfile swapon /home/swapfile
และทำให้ swapfile คงอยู่เป็น nano /etc/fstab
UUID=xxxxx-xxx swap swap defaults,pri=100 0 0 /home/swapfile swap swap defaults,pri=10 0 0
ตรวจสอบด้วย swapon --show
หรือ free -h
ปิดใช้งานไดร์เวอร์ Nouveau
bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" update-initramfs -u update-grub reboot
ติดตั้งสิ่งที่ต้องพึ่งพา
apt install linux-headers-`uname -r` build-essential libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev gcc software-properties-common sudo git python3 python3-venv pip libgl1 git-lfs -y
(ทางเลือก) ดำเนินการถอนการติดตั้งหากจำเป็น
apt-get purge nvidia* apt remove nvidia* apt-get purge cuda* apt remove cuda* rm /etc/apt/sources.list.d/cuda* apt-get autoremove && apt-get autoclean rm -rf /usr/local/cuda*
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-debian11-12-4-local_12.4.1-550.54.15-1_amd64.deb sudo dpkg -i cuda-repo-debian11-12-4-local_12.4.1-550.54.15-1_amd64.debsudo cp /var/cuda-repo-debian11-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo add-apt-repository contrib sudo apt-get update sudo apt-get -y install cuda-toolkit-12-4 sudo apt install libxnvctrl0=550.54.15-1 sudo apt-get install -y cuda-drivers
ติดตั้ง NVIDIA Container Toolkit เนื่องจาก Harbor ใช้ Docker
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
จากนั้น sudo apt-get update
และ sudo apt-get install -y nvidia-container-toolkit
ดำเนินการ cuda หลังการติดตั้ง nano ~/.bashrc
export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
จากนั้น sudo update-initramfs -u
, ldconfig
หรือ source ~/.bashrc
เพื่อใช้การเปลี่ยนแปลง
หลังจากรีบูตแล้ว ให้ยืนยันด้วย nvidia-smi
และ nvcc --version
ติดตั้ง Miniconda (ทางเลือก ไม่เหมาะสำหรับท่าเรือ)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && sudo chmod +x Miniconda3-latest-Linux-x86_64.sh && bash Miniconda3-latest-Linux-x86_64.sh
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ดำเนินการ หลังการติดตั้ง สำหรับ Docker โดยไม่ใช้ sudo
sudo groupadd docker sudo usermod -aG docker $USER newgrp docker docker run hello-world
git clone https://github.com/av/harbor.git && cd harbor ./harbor.sh ln
ตรวจสอบกับ harbor --version
เพิ่มด้วยการรองรับ RAG ให้เป็นค่าเริ่มต้นด้วย harbor defaults add searxng
ใช้ harbor defaults list
เพื่อตรวจสอบ ตอนนี้มีบริการที่ใช้งานอยู่สามรายการ ได้แก่ ollama
, webui
, searxng
รันด้วย harbor up
เพื่อนำบริการเหล่านี้ขึ้นมาใน Docker
ใช้ harbor ps
เป็น docker ps
และ harbor logs
เพื่อดูบันทึกการติดตาม
ขณะนี้ส่วนหน้า open-webui กำลังให้บริการที่ 0.0.0.0:33801
และสามารถเข้าถึงได้จาก http://localhost:33801
หรือไคลเอนต์จาก LAN ด้วยที่อยู่ IP ของเซิร์ฟเวอร์
ตรวจสอบการใช้งาน VRAM ด้วย watch -n 0.3 nvidia-smi
บันทึกการติดตามด้วย harbor up ollama --tail
หรือ harbor logs
คำสั่ง ollama ทั้งหมดสามารถใช้งานได้ เช่น harbor ollama list
ถึงเวลาเข้าถึงจากอุปกรณ์อื่น (เดสก์ท็อป/มือถือ) เพื่อลงทะเบียนบัญชีผู้ดูแลระบบและดาวน์โหลดโมเดลตอนนี้
หลังจากเข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบแล้ว ให้คลิกที่ไอคอนรูปอวาตาร์มุมขวาบน เปิด Admin Panel
จากนั้น Settings
หรือเข้าถึงผ่านทาง `http://ip:33801/admin/settings`
คลิก Models
และที่ด้านขวาบน คลิกที่ Manage Models
ซึ่งมีลักษณะเหมือนปุ่มดาวน์โหลด
ใส่ deepseek-r1
หรือ โมเดลอื่น ๆ ลงในกล่องข้อความด้านล่าง Pull a model from Ollama.com
และคลิกปุ่มดาวน์โหลดทางด้านขวา
หลังจากดาวน์โหลดโมเดลแล้ว อาจต้องรีเฟรช และโมเดลที่ดาวน์โหลดใหม่จะสามารถใช้งานได้ภายใต้เมนูแบบดรอปดาวน์บนหน้า New Chat
(หน้าแรก)
ตอนนี้ไม่เพียงแต่จะรันทางเลือก Chatbot แทน ChatGPT เท่านั้น แต่ยังเป็นทางเลือก API ที่มีฟังก์ชันครบครันแทน OpenAI API อีกด้วย รวมถึงเป็นทางเลือกเครื่องมือค้นหาส่วนตัวแทน Google!
สามารถเข้าถึง webui ได้ภายใน LAN ผ่านทาง: http://ip:33801
สามารถเข้าถึง ollama ได้ภายใน LAN ผ่านทาง: http://ip:33821
สามารถเข้าถึงการค้นหาได้ภายใน LAN ผ่านทาง: http://ip:33811
เรียกใช้ Ollama API กับแอปพลิเคชันใดๆ ที่มีการรวม LLM API:
http://ip:33821/api/ps http://ip:33821/v1/models http://ip:33821/api/generate http://ip:33821/v1/chat/completionsb