task #923
未完了0%
説明
Docker¶
まずドッカーを整備する
LLMは、AMDGPU(Rocm)がDockerと相性悪いらしいので、ネイティブにインストールするが、
それ以外は、Dockerに入れる。
まずは下記を入れる
open-webui→WEBUI化
searxng→インターネット検索を可能にする
prometheus→サーバー監視
grafana→サーバー監視
LLMサーバー化
systemdサービス化
sudo vi /etc/systemd/system/llama-server.service
[Unit]
Description=llama.cpp Server
After=network.target
[Service]
Type=simple
User=user
WorkingDirectory=/home/abe/llama.cpp
Environment=HIP_VISIBLE_DEVICES=1
ExecStart=/home/abe/llama.cpp/build/bin/llama-server
-m /home/abe/models/gemma-4-26b-a4b-q5KM.gguf
-ngl 23
-fa on
-c 32768
-ctk q8_0
-ctv q8_0
--host 0.0.0.0
--port 8080
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
有効化
sudo systemctl daemon-reload
sudo systemctl enable llama-server
sudo systemctl start llama-server
状態確認
systemctl status llama-server
依存パッケージ
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
③ Docker公式GPGキー追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
④ リポジトリ追加
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
⑤ Docker本体インストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
⑥ 動作確認
sudo docker run hello-world
2. sudoなしで使えるようにする(重要)
LLMサーバ用途では必須です
sudo usermod -aG docker $USER
newgrp docker
確認:
docker ps
3. GPU(ROCm)対応の準備
あなたの構成は:
RX 7900 GRE(gfx1100)
RX 6700 XT(gfx1031)
なので Docker では ROCm runtimeコンテナを使います。
まずホスト側確認:
ls /dev/kfd
ls /dev/dri
これが見えていればOKです。
- ROCm対応Dockerテスト
テストコンテナ:
docker run --rm -it
--device=/dev/kfd
--device=/dev/dri
--group-add video
--ipc=host
rocm/rocm-terminal
中で:
rocminfo
OpenWebUI
docker stop open-webui
docker rm open-webui
docker run -d -p 3000:8080
--add-host=host.docker.internal:host-gateway
-e OPENAI_API_BASE_URL=http://docker.internal
-e OPENAI_API_KEY=dummy
-e AIOHTTP_CLIENT_TIMEOUT=120
-v open-webui:/app/backend/data
--name open-webui
--restart always
ghcr.io/open-webui/open-webui:main
サーバIP:3000で接続確認
およびチャット動作確認
SearXNG¶
vi $HOME/searxng/settings.yml
use_default_settings: true
server:
port: 8081
bind_address: "0.0.0.0"
secret_key: "e6c38d4f8522b16a7b87bfda23e3ea4e0f5ad92d542ebde0ef235024923b9ac3"
limiter: false
search:
safe_search: 0
autocomplete: ""
formats:
- html
- json
suspended_time_reset_interval: 10 # ペナルティの判定間隔を短くする
max_suspended_time: 30 # 最大でも30秒でペナルティを解除する
engines:
-
name: google
engine: google
shortcut: go
disabled: true # Googleを完全に無効化 -
name: duckduckgo
engine: duckduckgo
shortcut: ddg
disabled: false # DuckDuckGoをメインに設定
コンテナ作成
docker run -d
--network host
-e SEARXNG_PORT=8081
-e SEARXNG_BIND_ADDRESS=0.0.0.0
-v $HOME/searxng:/etc/searxng:rw
--name searxng
--restart always
searxng/searxng:latest
openwebuiで、SearxngのクエリURLを下記に設定
http://host.docker.internal:8081/search?q=&format=json