1s.xyz / LLM周辺用語 教科書 23 / 25

第23章. ローカルLLMを触る最短ルート

この章の目的

この章では、手元のPCでLLMを動かすための最も手軽で迅速な方法を習得します。複雑な設定や専門知識を最小限に抑え、実際にLLMと対話できる状態を目指します。

この章で覚えるべきこと

  • ローカルLLM環境構築の最も簡単な選択肢とその手順
  • Ollamaを使ったモデルのダウンロードと実行方法
  • Open WebUIを使ったチャットインターフェースの利用方法
  • ローカルLLMの基本的な使い方と注意点

導入

「LLMを自分で動かしてみたいけど、何から始めればいいのか分からない」「難しそうで手が出せない」と感じている方も多いのではないでしょうか。第1章から第22章まで、LLMに関する様々な技術や概念を学んできました。しかし、実際に手を動かしてみるのが一番の近道です。

この章では、これまでの知識は一旦脇に置き、とにかく「動かす」ことに焦点を当てます。最も手軽で、かつ多くの人が利用しているツールである「Ollama」と「Open WebUI」を組み合わせることで、あなたのPCでLLMが動く感動を体験しましょう。

基本概念

ローカルLLMとは

ひとことで言うと: 自分のPC上で動作する大規模言語モデル。 何のカテゴリか: LLMの実行環境。 何に使うのか: インターネット接続なしでの利用、プライバシー保護、カスタマイズ、開発。 代表例: llama.cpp、Ollama、LM Studio、vLLMなど。 よく混同される用語: クラウドLLM(ChatGPT, Geminiなど)。 初心者向け注意点: ローカルで動かすにはPCのスペック(特にRAMとGPU)が重要です。

ローカルLLMは、インターネット経由で外部のサーバーに接続することなく、手元のPCの計算資源を使ってLLMを動作させる環境を指します。これにより、データが外部に送信される心配がなく、プライバシーが保護されるという大きなメリットがあります。また、インターネット接続がない場所でも利用できるため、オフライン環境での作業にも適しています。

Ollamaとは

ひとことで言うと: ローカルLLMを簡単に動かすためのフレームワーク。 何のカテゴリか: LLM推論ランタイム、モデル管理ツール。 何に使うのか: モデルのダウンロード、実行、API提供。 代表例: ollama run llama2ollama pull mistral。 よく混同される用語: llama.cpp(Ollamaはllama.cppを内部で利用していることが多い)、LM Studio(同様の機能を持つGUIツール)。 初心者向け注意点: OllamaはCLI(コマンドラインインターフェース)が基本ですが、Web UIと組み合わせることでより使いやすくなります。

Ollamaは、ローカルLLMの導入障壁を大幅に下げるツールです。複雑な依存関係の解決やビルド作業なしに、コマンド一つで様々なモデルをダウンロードし、実行できます。内部的には、第7章で解説したllama.cppなどの効率的な推論エンジンを利用しており、GGUF形式のモデルを最適化して実行します。

Open WebUIとは

ひとことで言うと: Ollamaで動いているLLMとチャットするためのWebインターフェース。 何のカテゴリか: LLMチャットUI、フロントエンド。 何に使うのか: ブラウザ経由でLLMと対話、プロンプト管理、モデル切り替え。 代表例: ChatGPTのWeb UIのようなもの。 よく混同される用語: Ollama(Open WebUIはOllamaのフロントエンドとして機能する)。 初心者向け注意点: Open WebUIはOllamaがインストールされているPC上で動作させるのが一般的です。

Open WebUIは、Ollamaで起動したLLMとChatGPTのようにブラウザ上で対話できるユーザーインターフェースです。Ollama単体ではコマンドラインでの対話が主になりますが、Open WebUIを導入することで、より直感的で使いやすいチャット体験が得られます。プロンプトの履歴管理や、複数のモデルを切り替えて利用する機能なども提供されます。

ローカルLLMの利点と課題

graph TD
    subgraph "ローカルLLMの利点"
        A[プライバシー保護]
        B[オフライン利用]
        C[コスト削減]
        D[カスタマイズ性]
        E[開発の自由度]
    end

    subgraph "ローカルLLMの課題"
        F[PCスペック要求]
        G[初期設定の手間]
        H[モデル選択の知識]
        I[パフォーマンス制約]
    end

    A --> J(ユーザーメリット)
    B --> J
    C --> J
    D --> J
    E --> J

    F --> K(導入障壁)
    G --> K
    H --> K
    I --> K

    J -- 解決策 --> L(Ollama + Open WebUI)
    K -- 軽減策 --> L

図23.1: ローカルLLMの利点と課題、およびOllama+Open WebUIの位置づけ この図は、ローカルLLMが提供する主要な利点と、導入・運用における課題を整理しています。OllamaとOpen WebUIの組み合わせは、これらの課題を軽減し、ユーザーがローカルLLMのメリットを享受しやすくするための効果的な解決策として機能します。

具体例

ここでは、OllamaとOpen WebUIを使ってローカルLLMを動かす具体的な手順を説明します。

ステップ1: Ollamaのインストール

  1. Ollamaのダウンロード: Ollamaの公式サイト(https://ollama.com/)にアクセスします。 お使いのOS(Windows, macOS, Linux)に対応したインストーラーをダウンロードします。

  2. インストール: ダウンロードしたインストーラーを実行し、指示に従ってインストールを進めます。ほとんどの場合、デフォルト設定で問題ありません。 Windowsの場合、ollama-setup.exeのようなファイルを実行します。 macOSの場合、Ollama.dmgを開き、アプリケーションフォルダにドラッグ&ドロップします。 Linuxの場合、ターミナルで以下のコマンドを実行します。

    curl -fsSL https://ollama.com/install.sh | sh
  3. インストール確認: ターミナル(コマンドプロンプト)を開き、以下のコマンドを実行します。

    ollama --version

    バージョン情報が表示されれば、Ollamaのインストールは成功です。

ステップ2: モデルのダウンロードと実行

  1. モデルの選択: Ollamaのモデルライブラリ(https://ollama.com/library)から、試したいモデルを選びます。最初は比較的小さなモデル(例: llama2, mistral, gemmaなど)から始めるのがおすすめです。 ここでは例としてllama2を使用します。

  2. モデルのダウンロード: ターミナルで以下のコマンドを実行します。

    ollama pull llama2

    これにより、llama2モデルがダウンロードされます。モデルのサイズによっては数分から数十分かかる場合があります。

  3. モデルの実行と対話: ダウンロードが完了したら、以下のコマンドでモデルを起動し、対話を開始できます。

    ollama run llama2

    プロンプトが表示されたら、質問を入力してみましょう。

    >>> How are you?
    I am an AI assistant, so I don't have feelings or emotions. But I'm ready to help you with any questions or tasks you have!
    >>>

    対話を終了するには、Ctrl + Dを押します。

ステップ3: Open WebUIのインストールと設定

Open WebUIは、Ollamaが動作している環境にDockerを使ってインストールするのが最も簡単です。Dockerがインストールされていない場合は、先にDocker Desktop(https://www.docker.com/products/docker-desktop/)をインストールしてください。

  1. Open WebUIの起動: ターミナルで以下のコマンドを実行します。

    docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

    このコマンドは、Open WebUIをDockerコンテナとして起動し、ポート8080でアクセスできるようにします。

  2. Open WebUIへのアクセス: Webブラウザを開き、以下のURLにアクセスします。

    http://localhost:8080/

    初回アクセス時には、ユーザー登録画面が表示されます。任意のユーザー名とパスワードを設定してアカウントを作成します。

  3. モデルの選択とチャット: ログイン後、Open WebUIのインターフェースが表示されます。 左下の「Models」またはチャット画面上部のドロップダウンから、Ollamaでダウンロードしたモデル(例: llama2)を選択します。 これで、ChatGPTのようにブラウザ上でLLMと対話できるようになります。

Mermaid図によるOllama + Open WebUIの構成

graph TD
    A[ユーザー] --> B(Webブラウザ)
    B --> C{Open WebUI}
    C --> D[Ollama]
    D --> E["ローカルモデルファイル (GGUF)"]
    D -- 内部で利用 --> F[llama.cpp]

    subgraph "ユーザーPC"
        C
        D
        E
        F
    end

    subgraph "インターネット"
            G
            Ollamaモデルライブラリ
    end

図23.2: OllamaとOpen WebUIの連携構成 この図は、ユーザーがWebブラウザを通じてOpen WebUIにアクセスし、Open WebUIがOllamaと連携してローカルのモデルファイル(GGUF形式)をllama.cppなどの推論エンジンで実行する流れを示しています。モデルのダウンロードはOllamaがインターネット上のライブラリから行います。

ローカルLLMのパフォーマンス指標

ローカルLLMのパフォーマンスは、主に以下の要素で評価されます。

  1. 推論速度 (Tokens/sec): 1秒あたりに生成できるトークン数。
  2. メモリ使用量 (GB): モデルをロードするために必要なRAMまたはVRAMの量。

これらの指標は、モデルのサイズ ($S$)、量子化ビット数 ($Q_b$)、およびハードウェアの性能 ($H_p$) に依存します。

$$ \text{Tokens/sec} \propto \frac{H_p}{S \times Q_b} $$ $$ \text{Memory Usage} \propto S \times Q_b $$

ここで、$S$ はモデルのパラメータ数(例: 7B, 13B)、$Q_b$ は量子化ビット数(例: 4bit, 8bit)です。一般的に、モデルサイズが大きく、量子化ビット数が高いほど、メモリ使用量が増え、推論速度は低下します。適切なモデル選択と量子化は、ローカル環境での快適な利用に不可欠です。

よく混同される用語との比較

特徴 Ollama LM Studio ChatGPT (OpenAI)
種類 ローカルLLM実行フレームワーク ローカルLLM実行GUIツール クラウドベースのLLMサービス
インターフェース CLI (コマンドライン) が基本、API提供 GUI (グラフィカルユーザーインターフェース) Web UI、API
モデル管理 ollama pullでダウンロード、管理 GUIでモデルを検索・ダウンロード、管理 OpenAIが提供するモデルのみ
プライバシー 高い(データが外部に出ない) 高い(データが外部に出ない) 利用規約による(データ学習利用の有無など)
必要スペック 中〜高(モデルによる) 中〜高(モデルによる) 不要(サーバー側で処理)
主な用途 開発、自動化、Web UIとの連携 手軽な試用、個人利用 一般的な利用、高度なタスク、商用利用
学習コスト 低〜中(CLIに慣れていれば低)

表23.1: Ollama、LM Studio、ChatGPTの比較

OllamaとLM StudioはどちらもローカルLLMを動かすためのツールですが、Ollamaはコマンドラインベースでより柔軟な利用が可能であり、Open WebUIのような外部UIと連携しやすい特徴があります。一方、LM Studioは単体でGUIを提供するため、より手軽に試したい場合に適しています。ChatGPTのようなクラウドサービスは、手元のPCスペックを気にせず利用できる反面、プライバシーやカスタマイズの自由度でローカルLLMに劣ります。

実務での位置づけ

この章で紹介したOllamaとOpen WebUIの組み合わせは、実務においても非常に有用です。

  1. プロトタイピングと開発: 新しいLLMアプリケーションを開発する際、まずはローカル環境で迅速にプロトタイプを作成できます。APIキーの管理や課金を気にせず、自由にモデルを試行錯誤できるため、開発サイクルを高速化できます。

  2. プライバシーが重要な業務: 機密情報や個人情報を含むデータを扱う場合、クラウドサービスにデータを送信することはできません。ローカルLLMであれば、データが外部に出ることなく、セキュアな環境でLLMを利用できます。

  3. オフライン環境での利用: インターネット接続が不安定な場所や、セキュリティポリシー上インターネット接続が制限される環境でも、ローカルLLMは問題なく動作します。

  4. コスト削減: クラウドLLMのAPI利用には費用がかかりますが、ローカルLLMは一度環境を構築すれば、追加の利用料はかかりません(電気代は除く)。

  5. カスタマイズとファインチューニングの基盤: ローカルでモデルを動かせることは、将来的にモデルのファインチューニング(第13章参照)や、独自のデータセットでの継続事前学習(第12章参照)を行う上での第一歩となります。

ローカルLLM導入の意思決定フロー

flowchart TD
    A[LLM利用の目的は?] --> B{"プライバシー/セキュリティは重要?"}
    B -- はい --> C{オフライン利用は必要?}
    B -- いいえ --> D{手元のPCスペックは十分?}

    C -- はい --> E[ローカルLLMが最適]
    C -- いいえ --> D

    D -- はい --> E
    D -- いいえ --> F[クラウドLLMを検討]

    E --> G[Ollama + Open WebUIを推奨]
    F --> H[ChatGPT/Gemini APIなどを検討]

    G --> I[モデル選択とダウンロード]
    I --> J[チャット開始]
    H --> K[APIキー取得と利用]
    K --> J

図23.3: ローカルLLM導入の意思決定フロー このフローチャートは、LLMを導入する際の意思決定プロセスを示しています。プライバシー要件、オフライン利用の必要性、PCスペックなどを考慮し、ローカルLLMかクラウドLLMかを選択します。ローカルLLMを選択した場合、OllamaとOpen WebUIの組み合わせが推奨されるルートとなります。

まとめ

3行まとめ

  1. Ollamaは、ローカルLLMを簡単にダウンロード・実行できるフレームワークです。
  2. Open WebUIは、Ollamaで動くLLMとブラウザで対話できる便利なチャットUIです。
  3. この組み合わせにより、手元のPCで手軽にLLMを動かし、プライバシー保護や開発の自由度を高めることができます。

混同しやすい用語

  • Ollamallama.cpp: Ollamaはllama.cppを内部で利用する「フレームワーク」であり、llama.cppは「推論エンジン」です。
  • OllamaLM Studio: どちらもローカルLLMツールですが、OllamaはCLI中心、LM StudioはGUI中心です。
  • ローカルLLMクラウドLLM: ローカルLLMは手元のPCで動作し、クラウドLLMはインターネット経由で外部サーバーを利用します。

次に読むべき章

  • 第7章: llama.cppとは何か: Ollamaの内部で利用されている技術について深く理解したい場合。
  • 第8章: Ollama / LM Studio / Open WebUI / Jan など: 他のローカルLLMツールとの比較や詳細を知りたい場合。
  • 第10章: 量子化(Quantization): ローカルLLMのモデルサイズや実行速度に大きく影響する技術について学びたい場合。
  • 第19章: RAG / embedding / vector DB: ローカルLLMを使ってより高度なアプリケーションを構築する第一歩として。