0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacでローカルLLM完全実践ガイド -Ollama / MLX / Open WebUI でAIをローカル実行-

Posted at

TL;DR(この記事の結論)

  • Ollama: 最も簡単。5分でLLMが動く。初心者はここから
  • MLX: Apple純正。M5チップで最高性能。Python/Swift開発者向け
  • Open WebUI: ChatGPTライクなUIを自前で構築できる
  • 推奨構成: M4 Max 64GB + Ollama + Llama 3.3 70B で最高の体験
  • 環境変数チューニングでメモリ効率が劇的に改善する

1. はじめに: この記事で構築するもの

前回の記事でMPS(Metal Performance Shaders)の理論を学んだあなた。「で、実際どうやって動かすの?」という疑問が湧いているはずだ。

この記事では、Macで大規模言語モデル(LLM)をローカル実行するための具体的な手順を解説する。理論は前編で十分。今回は手を動かしていこう。

ゴール: 記事を読み終えた時点で、あなたのMacでChatGPTライクなAIチャットが完全オフラインで動いている状態を目指す。


2. Ollama: 最速でLLMを動かす(所要時間: 5分)

2.1 Ollamaとは

Ollamaは、ローカルLLM実行の事実上の標準ツールだ。llama.cppをバックエンドに持ち、Apple Silicon(Metal)に完全最適化されている。難しい設定は一切不要。コマンド一発でLLMが動く。

2.2 インストール手順

方法1: 公式インストーラー(推奨)

https://ollama.com/download/mac

方法2: Homebrew

brew install ollama

2.3 最初のモデルを動かす

# Llama 3.2 3Bをダウンロード&実行(約2GB)
ollama run llama3.2

# より高性能なモデル(8GB以上推奨)
ollama run llama3.1:8b

# 70Bクラス(64GB以上推奨)
ollama run llama3.3:70b

これだけ。本当にこれだけでLLMが動く。初回はモデルのダウンロードに数分かかるが、2回目以降は即座に起動する。

2.4 よく使うコマンド

ollama list          # ダウンロード済みモデル一覧
ollama ps            # 実行中のモデル確認
ollama pull qwen2.5  # モデルのダウンロードのみ
ollama rm llama2     # モデル削除
ollama show llama3.1 # モデル情報表示

3. MLX: Apple純正フレームワークで最高性能を引き出す

3.1 MLXとは

MLXはApple Machine Learning Researchが開発したオープンソースフレームワークだ。統一メモリアーキテクチャを最大限活用し、M5チップではNeural Acceleratorにも対応。「Apple Silicon専用設計」だからこそ出せる性能がある。

OllamaがユーザーフレンドリーさでNo.1なら、MLXは「性能」と「柔軟性」でNo.1だ。Python/Swiftから直接制御でき、ファインチューニングも可能。

3.2 インストール手順

# 仮想環境作成(推奨)
python -m venv mlx-env
source mlx-env/bin/activate

# MLX-LMインストール
pip install -U mlx-lm

3.3 基本的な使い方

# 対話モード(チャット)
mlx_lm.chat --model mlx-community/Llama-3.2-3B-Instruct-4bit

# ワンショット生成
mlx_lm.generate --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --prompt "Pythonでクイックソートを実装して"

3.4 Pythonから使う

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Llama-3.2-3B-Instruct-4bit")
response = generate(model, tokenizer, prompt="Hello!", verbose=True)

ポイント: mlx-communityのモデルはMLX用に最適化済み。Hugging Faceから直接ダウンロードされる。


4. Open WebUI: ChatGPTライクなインターフェースを構築

4.1 Open WebUIとは

CLIでの対話も悪くないが、やっぱりChatGPTのようなWebインターフェースが欲しい。Open WebUIはまさにそれを実現するオープンソースプロジェクトだ。

  • ChatGPTライクなUI
  • 会話履歴の保存
  • RAG(検索拡張生成)対応
  • マルチモデル対応
  • 完全オフライン動作

4.2 インストール方法

前提: Ollamaがインストール済みであること

重要: MacではDocker経由でGPUアクセラレーションが使えない。そのため、Ollamaはネイティブインストール、Open WebUIのみDockerで動かすのがベストプラクティス。

方法1: pipでインストール(推奨)

pip install open-webui
open-webui serve

http://localhost:8080 でアクセス可能。

方法2: Docker(Ollama別途起動)

docker run -d -p 3000: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

4.3 初期設定

  1. ブラウザで http://localhost:3000 (または8080)にアクセス
  2. 管理者アカウントを作成(最初のユーザーが自動的に管理者になる)
  3. 左上のモデル選択から使いたいモデルを選択
  4. チャット開始

5. 環境最適化: パフォーマンスを最大化する

5.1 Ollama環境変数

Apple Siliconの統一メモリを最大限活用するため、以下の環境変数を設定しよう。

# ~/.zshrc に追加
export OLLAMA_NUM_PARALLEL=4          # 並列リクエスト数
export OLLAMA_MAX_LOADED_MODELS=2     # 同時ロードモデル数
export OLLAMA_FLASH_ATTENTION=1       # Flash Attention有効化
export OLLAMA_KV_CACHE_TYPE=q8_0      # KVキャッシュ量子化

Flash Attention: コンテキスト長が増えてもメモリ使用量の増加を抑える技術。有効化必須。

KVキャッシュ量子化: q8_0で約半分のメモリ使用量に。品質低下は最小限。

5.2 macOS固有の設定

# 環境変数をlaunchctlで永続化
launchctl setenv OLLAMA_FLASH_ATTENTION "1"
launchctl setenv OLLAMA_KV_CACHE_TYPE "q8_0"

# 設定確認
launchctl getenv OLLAMA_FLASH_ATTENTION

5.3 パフォーマンスモニタリング

# GPUメモリ使用状況確認
ollama ps

# システム全体のメモリ使用状況
vm_stat

# 温度監視(サーマルスロットリング防止)
sudo powermetrics --samplers smc -n 1 | grep -i temp

6. 用途別おすすめモデル2025

用途 モデル 必要メモリ コマンド
軽量チャット Llama 3.2 3B 8GB+ ollama run llama3.2
汎用高品質 Llama 3.1 8B 16GB+ ollama run llama3.1:8b
コーディング Qwen2.5-Coder 7B 16GB+ ollama run qwen2.5-coder
多言語対応 Qwen2.5 7B 16GB+ ollama run qwen2.5
推論特化 DeepSeek-R1 8B 16GB+ ollama run deepseek-r1:8b
最高性能 Llama 3.3 70B 64GB+ ollama run llama3.3:70b
画像認識 LLaVA 1.6 16GB+ ollama run llava

量子化フォーマットの選び方:

  • Q4_K_M: 最も一般的。品質と速度のバランス良し
  • Q8_0: 高品質だがメモリ消費大
  • Q4_0: 最速・最軽量だが品質やや落ちる

7. トラブルシューティング

7.1 よくある問題と解決策

問題: モデルが遅い/メモリ不足

# より軽量な量子化モデルを使用
ollama pull llama3.1:8b-q4_0  # Q4_K_Mの代わりにQ4_0

# コンテキスト長を短くする
export OLLAMA_CONTEXT_LENGTH=2048

問題: Ollamaが起動しない

# サービス停止 → キャッシュクリア → 再起動
brew services stop ollama
rm -rf ~/.ollama/cache
brew services start ollama

問題: Open WebUIがOllamaに接続できない

# Ollamaを外部アクセス可能にする
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"

# Ollamaアプリを再起動後、接続確認
curl http://localhost:11434

問題: GPU(Metal)が使われていない

# ollama psでPROCESSOR列を確認
ollama ps
# 出力例: 100% GPU なら正常、CPU表示なら問題あり

7.2 ログの確認方法

# Ollamaログ確認
tail -f ~/.ollama/logs/server.log

8. Ollama vs MLX: どちらを選ぶべきか

観点 Ollama MLX
セットアップ 超簡単(1コマンド) やや手間(Python環境必要)
性能 高い(llama.cpp) 最高(M5 Neural Accelerator対応)
カスタマイズ性 制限あり 自由自在(Python/Swift)
ファインチューニング 非対応 LoRA対応
モデル形式 GGUF safetensors/MLX形式
おすすめユーザー 初心者〜中級者 開発者・研究者

結論: まずOllamaで始めて、物足りなくなったらMLXへ。両方併用も全然アリ。


9. まとめ: 次のステップ

ここまでで、MacでローカルLLMを動かす基盤は整った。次に挑戦すべきことを挙げておく。

  1. RAGシステム構築: 自分のドキュメントを読み込ませて質問応答
  2. ファインチューニング: MLXでLoRAを使った独自モデル作成
  3. マルチモーダル: LLaVAで画像認識、Whisperで音声認識

ローカルLLMの世界へようこそ。プライバシーを守りながら、最先端のAIを手元で動かす。これこそMacユーザーの特権だ。


参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?