task #923
masaya_abe さんが約2ヶ月前に更新
## 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=abe 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 18 23 \ -fa on \ -c 262144 32768 \ -ctk q4_0 q8_0 \ -ctv q4_0 q8_0 \ --host 0.0.0.0 \ --port 8080 \ --parallel 1 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です。 4. 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 webuiで使えるようにして、web検索機能を使えるようにする docker rm open-webui vi ~/docker/docker-compose.yml ``` services: docker run -d -p 3000:8080 \ openwebui: image: --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 container_name: openwebui restart: unless-stopped ports: - "3000:8080" environment: - OPENAI_API_BASE_URL=http://host.docker.internal:8080/v1 - OPENAI_API_KEY=dummy extra_hosts: - "host.docker.internal:host-gateway" volumes: - openwebui:/app/backend/data searxng: image: searxng/searxng:latest container_name: searxng restart: unless-stopped ports: - "8081:8080" volumes: - ./searxng:/etc/searxng volumes: openwebui: サーバIP:3000で接続確認 ``` およびチャット動作確認 ### SearXNG vi ~docker/searxng/settings.yml ``` $HOME/searxng/settings.yml use_default_settings: true server: port: 8081 bind_address: "0.0.0.0" secret_key: "tr68o2qlQWY8uybEGGMcZcsEFSqYqQ" "e6c38d4f8522b16a7b87bfda23e3ea4e0f5ad92d542ebde0ef235024923b9ac3" limiter: false # image_proxy: true # bind_address: "0.0.0.0:8080" search: safe_search: 0 autocomplete: "" formats: - html - json suspended_time_reset_interval: 10 # ペナルティの判定間隔を短くする safe_search: 0 max_suspended_time: 30 # 最大でも30秒でペナルティを解除する limiter: engines: false ui: static_use_hash: true engines: - name: duckduckgo google engine: duckduckgo google shortcut: ddg go disabled: true # Googleを完全に無効化 - name: wikipedia duckduckgo engine: wikipedia duckduckgo shortcut: wp - name: bing ddg engine: bing shortcut: bi disabled: false # DuckDuckGoをメインに設定 コンテナ作成 ``` docker compose up 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 ### webUIで設定 openwebuiで、SearxngのクエリURLを下記に設定 ウェブ検索を有効化 検索クエリを下記に設定 http://searxng:8080/search?q=<query>&format=json http://host.docker.internal:8081/search?q=<query>&format=json