MacシリコンでローカルLLMを爆速化!PyTorchからOllamaへの乗り換え記録
M4 Mac miniでローカルLLMを動かしたいけど遅すぎて使い物にならない!と悩んでいた私が、PyTorchからOllamaへ切り替えたことで一気に快適になった話をまとめます。
背景:PyTorchのパフォーマンスに限界を感じた
M4チップのMac miniを開発機にして、ローカルでLLM(大規模言語モデル)を動かそうと考えたのがきっかけです。最初は、transformers
ライブラリ+PyTorchを用いてモデルをローカル推論していました。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "google/gemma3-4b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")
inputs = tokenizer("こんにちは", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
このコード自体は動作するのですが、とにかく重い! CPUベースの処理になるため、数十トークンの生成に1分以上かかることもザラでした。
原因:PyTorchはNVIDIA GPUを前提としている
PyTorchはNVIDIA製のGPU(CUDA)を活用することで高速な推論が可能になりますが、Macシリコン(Apple Silicon)はCUDA非対応です。Metalバックエンドを使えばMPS(Metal Performance Shaders)でGPU推論も可能ですが、まだまだサポートや安定性に課題があります。
そのため、MacシリコンにおけるPyTorchのLLM推論は遅いというのが現実でした。
解決策:Ollamaに乗り換えたら劇的に改善!
そこで見つけたのが、Ollamaというツール。これは、AppleシリコンのGPU向けに最適化されたローカルLLM推論環境です。
Ollamaの特徴 AppleシリコンのGPUを最大限に活用
モデルの自動ダウンロード・管理
ollama run llama3のような簡単なCLIコマンドで起動可能
高速&低メモリ消費で、まさにMac mini向き!
導入方法(インストール)
bash
brew install ollama
または、公式サイト(https://ollama.com)からインストーラを入手してもOKです。
使用方法
bash
ollama run gemma3:4b
この一行で、モデルをローカルで起動し、対話可能なプロンプトが立ち上がります。内部ではMetalベースでGPU推論が行われており、体感で3倍以上のスピード向上が得られました。
bash
pip install ollama
でインストールして、Pythonプログラムに組み込むことも可能です。
例えば上のPytorchのコードと同様のコードは
import ollama
question = "こんにちは"
response = ollama.chat(
model="gemma3:4b",
messages=[
{ "role": "system",
"content": "あなたは優秀な日本語のアシスタントです。指示に忠実に回答してください。"},
{ "role": "user",
"content": question }],
options={ "temperature": 0, "num_predict": 50 })
answer = response["message"]["content"]
print(answer)
このように書けます。
結論:Mac mini × Ollamaは最強のローカルLLM環境!
PyTorchではどうしても重かったローカルLLMが、Ollamaのおかげで実用レベルに。特に以下のような方には強くおすすめします。
-
Macシリコン搭載のMacを使っている
-
プライバシーを重視し、クラウドを使わずにLLMを使いたい
-
手軽に高速なローカル推論環境を整えたい
MacでPyTorchの遅さに悩んでいる方は、ぜひ一度Ollamaを試してみてください!