Junkie Work

access: 264491

Dockerを使ってローカルなLLMをインストール


Dockerを使ってローカルなLLMをインストールします。LLMは、NVIDIAのGPUを使って動作させることができます。今回は、OllamaのLLaMA3.1:8Bモデルを使って、Open-WebUIで動作させます。

前準備

dockerをインストール

NVIDIA Container Toolkitをインストール

動作場所の作成

Dockerで動作させるための場所を作成します。今回は、~/localai/llm というディレクトリを作成して、そこにファイルを置くことにします。

$ mkdir -p ~/localai/llm

Docker composeファイル

Docker composeファイルを作成します。今回は、~/localai/llm/docker-compose.yml というファイルを作成して、以下の内容を記述します。

 services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama-llama
    restart: always
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
      - ./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: ghcr.io/open-webui/open-webui:main
    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
    depends_on:
      - ollama

volumes:
  ollama_data:
  open_webui_data:

起動時にLLMを取得するスクリプトを用意

起動時にLLMを取得するスクリプトを用意します。今回は、~/localai/llm/entrypoint.sh というファイルを作成して、以下の内容を記述します。

 #!/bin/bash

ollama serve &

echo "Waiting for Ollama server to start..."
until ollama list > /dev/null 2>&1; do
    sleep 1
done
echo "Ollama server is ready!"

MODEL_NAME="llama3.1:8b"
if ! ollama list | grep -q "$MODEL_NAME"; then
    echo "Model $MODEL_NAME not found. Downloading..."
    ollama pull "$MODEL_NAME"
    echo "Download completed!"
else
    echo "Model $MODEL_NAME is already available."
fi

wait

起動

$ cd ~/localai/llm
$ sudo docker compose up -d

動作確認

ブラウザで http://localhost:3000 にアクセスして、Open-WebUIが表示されることを確認します。