Останнім часом виникла потреба в службі приватного чат-бота як повної альтернативи ChatGPT OpenAI. Тож я вирішив запровадити його вдома та зробити його доступним для всіх членів моєї родини разом із моїм мережевим принтером і NAS (OpenMediaVault) .
У минулому я рекомендував людям використовувати серію Llama для завдань з англійської мови та серію Qwen для завдань з китайської мови. Не було моделі з відкритим вихідним кодом, яка б була достатньо сильною в багатомовних завданнях порівняно з пропрієтарними (GPT/Claude).
Однак, як ми всі знаємо, нещодавно все змінилося. Я час від часу використовував DeepSeek-V2 щоразу, коли втомлювався з Qwen2.5, і відставав із DeepSeek V2.5 та V3 через брак обладнання. Але DeepSeek мене не підвів, R1 працює настільки вражаюче та забезпечує лише 1,5 B!
Це означає, що ми можемо запускати його навіть на процесорі з деяким значним досвідом користувача. Оскільки багато людей мають графічні процесори для ігор, швидкість не є проблемою. Змусити локальних 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
і зробіть файл підкачки постійним 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, оскільки порт базується на докерах
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
Виконайте постінсталяцію для докера без 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
, щоб відкрити ці служби в докері
Використовуйте harbor ps
як docker ps
і harbor logs
для перегляду хвостових журналів
Тепер інтерфейс open-webui працює за 0.0.0.0:33801
і до нього можна отримати доступ із http://localhost:33801
або клієнти з локальної мережі за допомогою 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
(домашній).
Тепер він не лише використовує чат-бот, альтернативний ChatGPT, але й повнофункціональний API, альтернативний OpenAI API, а також приватну пошукову систему, альтернативну Google!
webui доступний у локальній мережі через: http://ip:33801
ollama доступний у локальній мережі через: http://ip:33821
searxng доступний у локальній мережі через: 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