access: 267606
Dockerを使ってローカルなLLMをインストールします。LLMは、NVIDIAのGPUを使って動作させることができます。今回は、OllamaのLlama 3.1 8Bモデルを使って、Open WebUIで動作させます。
Dockerで動作させるための場所を作成します。今回は、~/localai/llm というディレクトリを作成して、そこにファイルを置くことにします。
Docker Composeファイルを作成します。今回は、~/localai/llm/docker-compose.yml というファイルを作成して、以下の内容を記述します。
Open WebUIと、OllamaのLlama 3.1 8Bモデルを使用します。
Open WebUIには、外部ツールやWeb検索などの機能があります。今回は通常のチャットだけを利用するため、環境変数でプラグイン、ツール、Web検索などを無効化します。
外部からアクセスできないローカル環境での利用を想定しているため、WEBUI_AUTH=Falseに設定し、Open WebUIの認証を無効化します。
起動時にLLMを取得するスクリプトを用意します。今回は、~/localai/llm/entrypoint.sh というファイルを作成して、以下の内容を記述します。
モデルをダウンロードしたあと、同じモデル名でカスタムモデルを生成してデフォルトの設定を上書きします。
モデルの設定を記述するファイルを作成します。今回は、~/localai/llm/Modelfileというファイルを作成して、以下の内容を記述します。
ブラウザで http://localhost:3000 にアクセスして、Open WebUIが表示されることを確認します。
前準備
動作場所の作成
$ mkdir -p ~/localai/llm
Docker Composeファイル
services:
ollama:
image: ollama/ollama:latest
container_name: ollama-llama
restart: always
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
- ./Modelfile:/models/Modelfile
- ./entrypoint.sh:/entrypoint.sh
entrypoint: ["/bin/bash", "/entrypoint.sh"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
- OLLAMA_HOST=0.0.0.0
- OLLAMA_FLASH_ATTENTION=true
open-webui:
image: openwebui/open-webui:latest
container_name: open-webui
restart: always
ports:
- "3000:8080"
volumes:
- open_webui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_AUTH=False
- ENABLE_PLUGINS=False
- ENABLE_TOOLS=False
- ENABLE_FUNCTIONS=False
- ENABLE_TOOL_SERVERS=False
- ENABLE_WEB_SEARCH=False
- ENABLE_RAG_WEB_SEARCH=False
- DEFAULT_MODEL_METADATA={"capabilities":{"builtin_tools":false}}
depends_on:
- ollama
volumes:
ollama_data:
open_webui_data:
起動時にLLMを取得するスクリプトを用意
#!/bin/bash
MODEL_NAME="llama3.1:8b"
ollama serve &
echo "Waiting for Ollama server to start..."
until ollama list > /dev/null 2>&1; do
sleep 1
done
if ! ollama list | grep -q "^${MODEL_NAME}[[:space:]]"; then
echo "Model $MODEL_NAME not found. Downloading..."
if ! ollama pull "$MODEL_NAME"; then
echo "Failed to download model: $MODEL_NAME" >&2
exit 1
fi
echo "Download completed!"
else
echo "Model $MODEL_NAME is already available."
fi
echo "Creating custom model $MODEL_NAME..."
if ! ollama create "$MODEL_NAME" -f /models/Modelfile; then
echo "Failed to create model: $MODEL_NAME" >&2
exit 1
fi
echo "Ollama setup completed. Ready!"
wait
モデル設定ファイルを用意
FROM llama3.1:8b
PARAMETER num_ctx 16384
SYSTEM """
You are a helpful assistant. You must always respond in natural Japanese.
CRITICAL INSTRUCTIONS:
- Do NOT use any tools, functions, or plugins under any circumstances.
- Do NOT output JSON objects, tool calls, or function call syntax (such as create_task).
- Always provide direct text responses in Japanese.
"""
起動
$ cd ~/localai/llm
$ sudo docker compose up -d
動作確認