A Technologist who Cares about People
The code in this story is for educational purposes. The readers are solely responsible for whatever they build with it.
最近、OpenAI の ChatGPT の完全な代替として、プライベート チャットボット サービスが必要になっています。そこで、自宅に 1 つ実装し、ネットワーク プリンターとNAS (OpenMediaVault)と一緒に家族全員がアクセスできるようにすることにしました。
以前、私は英語のタスクには Llama シリーズ、中国語のタスクには Qwen シリーズの使用を推奨していました。独自のモデル (GPT/Claude) と比較して、多言語タスクに十分対応できるオープンソース モデルはありませんでした。
しかし、皆さんご存知のとおり、最近は状況が変わりました。私は Qwen2.5 に飽きるたびに DeepSeek-V2 を時々使用していましたが、ハードウェア不足のため DeepSeek V2.5 と V3 に遅れをとっていました。しかし、DeepSeek は期待を裏切りませんでした。R1 のパフォーマンスは素晴らしく、容量はわずか 1.5B です。
つまり、かなりのユーザー エクスペリエンスがあれば、CPU でも実行できます。多くの人がゲーム用に GPU を持っているため、速度は問題になりません。OpenAI では無料アカウントでの使用を制限しているため、アップロードされたドキュメントや画像をローカル LLM で処理できるのは大きな利点です。
バンドルされた Ollama サポートを備えた Open WebUI のインストールは、公式の 1 行コマンドを使用すると非常に簡単です。
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 (Web 検索) を機能させることはほとんどの人にとって簡単ではないので、すぐに使えるソリューションを見つけたいと思います。
前回の投稿で述べたように、Harbor はさまざまな LLM スタックを試すための優れたテストベッドです。しかし、それだけではありません。RAG がすぐに使える、ローカル LLM をセルフホストするためのオールインワン ソリューションでもあります。それでは、最初から実装してみましょう。ほとんどの人は OS のインストールから始めないので、手順を自由にスキップしてください。
以前と同じように、 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
ハーバーはdockerベースなので、 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 をインストールします (オプション、harbor 用ではありません)
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 なしで docker のインストール後を実行する
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
3 つのサービスがアクティブになっています。
harbor up
を実行して、docker でこれらのサービスを起動します。
docker ps
としてharbor ps
を使用し、 harbor logs
使用して tailing ログを確認します。
現在、open-webui フロントエンドは0.0.0.0:33801
で提供されており、 http://localhost:33801
またはサーバーの IP アドレスを持つ LAN のクライアントからアクセスできます。
watch -n 0.3 nvidia-smi
で VRAM の使用状況を監視する
harbor up ollama --tail
またはharbor logs
でログを監視します。
harbor ollama list
などのすべてのollamaコマンドが使用可能です。
他のデバイス (デスクトップ/モバイル) からアクセスして管理者アカウントを登録し、モデルをダウンロードしましょう。
管理者アカウントでログインした後、右上のアバター アイコンをクリックし、 Admin Panel
開いてSettings
選択するか、単に `http://ip:33801/admin/settings. からアクセスします。
Models
をクリックし、右上のダウンロード ボタンのようなManage Models
をクリックします。
下のテキストボックスにdeepseek-r1
またはその他のモデルを入力しPull a model from Ollama.com
、右側のダウンロード ボタンをクリックします。
モデルをダウンロードした後、更新が必要になる場合があります。新しくダウンロードしたモデルはNew Chat
(ホーム) ページのドロップダウン メニューで使用できるようになります。
現在、ChatGPT に代わるチャットボットだけでなく、OpenAI API に代わる完全に機能する API や、Google に代わるプライベート検索エンジンも実行されています。
webui は LAN 内でhttp://ip:33801
経由でアクセスできます。
ollama は LAN 内でhttp://ip:33821
経由でアクセスできます。
searxng は LAN 内でhttp://ip:33811
経由でアクセスできます。
LLM API 統合を備えた任意のアプリケーションでOllama API を呼び出します。
http://ip:33821/api/ps http://ip:33821/v1/models http://ip:33821/api/generate http://ip:33821/v1/chat/completionsb
数行のコードで自宅でDeepseek(または他のAIモデル)を実行 | HackerNoon