Ollama, Open-WebUIのセットアップ

概要

ここでは、AIインフラの導入、GPU設定、DockerおよびLLM(Large Language Model)のセットアップ方法について、具体的な手順と技術的な解説を提供します。

LLM をローカルで実行する理由

LLM をローカルで実行する理由は、次のようなメリットがあるためです。

  • コスト効率: OpenAI の GPT-4、Google Gemini などのプロバイダーが提供する大規模な言語モデルを使用している場合、コス トがかかります。 MVP のプロトタイピングや開発には多額のコストはかからないかもしれませんが、最終的には継続的に使用するた めにクレジット カードを登録する必要があります。
  • 安全: プライベートな文書や機密文書を扱う企業や組織にとって、LLM をローカルで実行することは状況を大きく変える可能性があります。データを安全な環境から流出させる必要がないため、機密情報を含むタスクに最適です。
  • オフライン アクセス: ローカル LLM はインターネット接続なしで動作できます。これは、接続が不十分な地域やインターネット アクセスが制限されている状況で有益です。
  • 低遅延: ローカル モデルでは、リモート サーバーにリクエストを送信したり、リモート サーバーからの応答を受信したりす る必要がないため、応答時間が短縮されます。
  • カスタマイズと微調整: ローカル展開により、特定のユースケースまたはドメインに合わせてモデルを簡単にカスタマイズおよび微調整できます。
  • 規制遵守: 厳格なデータ規制がある業界では、ローカル LLM がデータを制御された環境内に保管することでコンプライアンス の確保を支援できます。

GPUメモリキャパシティの計算とドライバ設定

動作要件等の確認

  • GPUメモリの計算Calculate GPU memory capacity

    • どのLLMを選定するかによって必要となるGPUメモリが変動します。ニーズに合わせて最適なGPU環境を提案します。
  • CUDAのセットアップSetup GPU driver (CUDA)

    • GPU対応AIモデルのパフォーマンスを最大化するために、CUDAのインストールと設定を行います。
  • 安定した通信環境:LLM(大規模言語モデル)のダウンロードには、大きなデータ通信量が必要となります。10-100GB程度のデータダウンロードを要するため、必要に応じてあらかじめ準備を行ってください。

DockerとWSLの準備

  • DockerインストールDocker公式サイト

    • 環境に最適なDockerの設定を行い、AIモデルを効率的に管理、運用できるようにします。
  • WSL設定の確認

    • .wslconfigに以下のパラメータを追加して、WSL2のネットワークを最適化します。これにより、Dockerコンテナとの通信が円滑になります。

      [wsl2]
      networkingMode=mirrored

    設定を確認するには、次のようにテキストエディターで開きましょう。

    code (wslpath "$(wslvar USERPROFILE)\.wslconfig")

    詳細な設定方法については、WSLの高度な設定をご参照ください。

  • DockerコンテナがWSL2内で接続できない問題のトラブルシューティングについてはこちら

Ollamaのセットアップ

Ollamaのインストールとサーバー起動

  • Ollamaインストール

    # Install Ollama using script
    curl -fsSL https://ollama.com/install.sh | sh
     
    # Or install with Homebrew
    brew install ollama
    # ollama serve
  • モデルの選定と実行

    ollama list
    set model llama3.2:latest
    # set model hermes3:latest # Uncensored 
     
    # ollama install $model # You can skip
    ollama pull $model # Start interaction
     
    # サンプルプロンプトで動作確認
    ollama run $model "AI導入における効果的な戦略を教えてください"
  • HTTPリクエストを使ったAPI実行

    curl -X POST http://localhost:11434/api/generate -d '{
      "model": "$model",
      "prompt": "AIのトレンドに関する説明"
    }'

Open Web UIのセットアップ

Open Web UI は、OllamaをベースにLocalLLMをブラウザ上で実行するソフトウェアです。履歴の保持や、Markdownレンダリングなど、機能上の豊富なメリットがあります。

Open Web UIのDockerによるインストール

  • GPU対応のセットアップ: Dockerを使用してGPU対応のOpen Web UIをインストールします。

    docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway \
    -v open-webui:/app/backend/data --name open-web-ui --restart always \
    ghcr.io/open-webui/open-webui:cuda
  • Web UIの起動: ブラウザでUIにアクセスするには以下のコマンドを使用します。

    docker run -d -p 3000:3000 openwebui/ollama

カスタムモデルの設定

  • LM Studioで導入したモデルの変換

    set model_dir '/mnt/f/.cache/lm-studio/models'
    cd $model_dir
     
    set model_path (fd -t f --exec basename {} .gguf | fzf)
    set model (basename $model_path)
     
    mkdir -p ~/.ollama/user_custom
    echo "FROM $model_path" > ~/.ollama/user_custom/$model
     
    ollama create $model -f $model_path

その他の設定と最適化

Intel CPU向け高速化設定(IPEX-LLM)

  • Intel CPUでのLLMパフォーマンス最適化IPEX-LLMの詳細 | Intel CPUでLLMを高速に動作させるための方法はこちらを参照してください。

文書スキャンディレクトリの設定

  • スキャン用ディレクトリの指定:ドキュメントのスキャンディレクトリの設定や、Web検索機能、タスクモデルの設定も含め、ユーザーの用途に応じた設定が可能です。

    set DOCS_DIR /data/docs

Web検索機能の有効化とTTS(Text-to-Speech)設定

  • Web検索を有効にする:音声合成(TTS)や音声認識(STT)の設定も可能です。

    WEBUI_URL=https://localhost:3000/?models=<model_id>&q=%s

    検索結果をWeb UIで確認できるようにします。

Ref.:

  1. GitHub - chidiwilliams/buzz
  2. GitHub - lobehub/lobe-chat

カスタムモデルの使用(GGUF)

  • モデルのデータ形式の変換: GGUF形式のモデルをOllamaで使用するには、以下の手順でモデルをカスタマイズします。Huggingface.coや、LM Studioで導入したモデルが該当します。

    # モデルの検索と設定
    set model_dir '/mnt/f/.cache/lm-studio/models'
    cd $model_dir
    set model_path ( fd -t f --exec basename {} .gguf | fzf )
    set model (basename $model_path)
     
    # モデルインデックスディレクトリの作成
    set index_path ~/.ollama/user_custom
    mkdir -p $index_path
     
    # カスタム設定ファイルの作成
    echo "FROM $model_path" > $index_path/$model
     
    # GGUFからOllamaモデルを作成
    ollama create $model -f $model_path

トラブルシューティング

  1. Error: llama runner process has terminated: signal: aborted (core dumped) · Issue #4912 · ollama/ollama · GitHub

再度インストールスクリプトを実行して、更新しましょう。 ただし、標準設定の場合、インストールしたモデルも上書きされる点に注意しましょう。

  • 更新
    # Install Ollama using script
    curl -fsSL https://ollama.com/install.sh | sh

アンインストール手順

  • Open Web UIを完全に削除

    # Remove all containers, images, and volumes
    docker system prune -a --volumes

参考

  1. github.com/ollama/ollama
  2. WSLとDockerの詳細設定ガイド