Mチップが搭載されていない古いiMac(2017, Intel Mac)でもLocal LLM(AI)は動くのか!?
やってみたくなったので試してみました。
まぁ結論としてはもちろん動くし、使えます。いや使えるというのはちと・・・語弊がある?
OllamaのインストールからローカルでAIモデルを動かすまで、その一通りの流れを備忘録として記事化。
Local LLMを動かすにはApple Mチップ(Apple Silicon)が良い?
Apple独自のアーキテクチャがAI処理と非常に相性が良いらしい。
通常、CPUとGPU(グラフィック)のメモリは分けて搭載されているが、近年のMacはこれらが一体になった「ユニファイドメモリ」を採用。
これにより、搭載されているメモリのほぼ全てをAIモデルの読み込みに使えるため、大容量のモデルを快適に動作させることができる。
そしてLLMを動かすにはGPUの性能が重要。
Apple Mチップはチップ内に強力なGPUを内蔵しており、これが高速処理を可能にする、のだとか。
と、ここまで書いておいてなんですが、そんなこたぁどうでも良い。
だって手元にあるのは、貧弱なグラフィックボードを搭載し、Mチップを搭載していないIntel Mac(iMac2017)なのだから!それで動かした結果どうなのかという検証なのだから!
・・・。
負け惜しみはさておき、必要なものを見ていきます。
ローカルLLMを動かすために必要なツール
AIモデルファイルは例えるなら「脳」。
脳だけでは何もできません。動かすための「入れ物(実行環境)」が必要。それが Ollama などのツールです。
モデルファイルが「ゲームのディスク」、実行環境が「ゲーム機」と言ったらわかりやすいのかもしれない。イメージ的に。
そして今回使う Ollama は、
- モデルを管理し
- ダウンロードし
- 実行し
- APIとして提供する
それらが簡単に行えるツールの一つです。
Ollamaをインストール
モデルファイルは Ollama からダウンロード、実行することができるので、
まずは Ollama をセッティングし、その後いろんなモデルを試すことになります。
Homebrew版を使います。
Homebrewをあらかじめインストールしておいてください。-> https://brew.sh/ja/
ターミナルから
brew install ollama
% brew install ollama ✔︎ JSON API formula.jws.json Downloaded 32.0MB/ 32.0MB ==> Fetching downloads for: ollama ✔︎ Bottle Manifest ollama (0.23.2) Downloaded 13.9KB/ 13.9KB ✔︎ Bottle ollama (0.23.2) Downloaded 15.0MB/ 15.0MB ==> Pouring ollama--0.23.2.sonoma.bottle.tar.gz ==> Caveats To start ollama now and restart at login: brew services start ollama Or, if you don't want/need a background service you can just run: OLLAMA_FLASH_ATTENTION="1" OLLAMA_KV_CACHE_TYPE="q8_0" /usr/local/opt/ollama/bin/ollama serve ==> Summary 🍺 /usr/local/Cellar/ollama/0.23.2: 9 files, 40.5MB
Ollamaがインストールされました。
Ollamaを起動
インストールしたOllamaを起動します。
バックグラウンドで常時起動させておきたいなら下記のように入力しデーモンとして起動します。
ターミナルから
brew services start ollama
でも常に動かしておく必要は自分にはないので、使いたい時に起動します。
ollama serve
あるいはインストール時のログにあったように
OLLAMA_FLASH_ATTENTION="1" OLLAMA_KV_CACHE_TYPE="q8_0" ollama serve
と打ち込みます。
- OLLAMA_FLASH_ATTENTION=”1″
Flash Attention という高速化技術を有効にするための環境変数
主にGPU向けに最適化された技術なのでCPU環境ではおまじない程度 - OLLAMA_KV_CACHE_TYPE=”q8_0″
キャッシュを量子化(圧縮)することでメモリ消費量を抑える
※環境変数については公式FAQを参照のこと。
モデルファイルをダウンロードして実行する
さて、今のターミナルウインドウはそのままに、新しいウインドウを開きます。
「Gemma 3:4b-it-qat」というAIモデルを試してみます。
- 圧倒的な日本語の自然さ: 文脈の理解がスムーズ
- Intel Macでも動く軽さ: 4b(約40億パラメータ)なので、専用GPUがないiMac 2017でも実用的な速度で返ってくる(※環境による)
- QAT(量子化)の恩恵:
qat版は精度を維持しつつメモリ消費を抑えているため、Intel Macの限られたリソースに最適
ターミナルから
ollama run gemma3:4b-it-qat
ollama pull gemma3:4b-it-qat で取得だけもできますが、
ollama run gemma3:4b-it-qat とすると実行する際にまだDLしていなければ取得して実行してくれます。
% ollama run gemma3:4b-it-qat
pulling manifest
pulling 529850705c08: 100% 4.0 GB
pulling 5be6630b666f: 100% 359 B
pulling 3116c5225075: 100% 77 B
pulling 34ec2fc9f116: 100% 413 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)
動きました。
>>> Send a message となっているところに質問を書けば会話が始まります。
簡単ですね。素晴らしい。
会話を終えるには ctrl + d
ollama serveしたターミナルでは ctrl + c で終了します。
終了せずに間違ってターミナルを閉じてしまった場合は改めてターミナルを開き、pkill ollama か、
アクティビティモニタを起動して ollama のプロセスを終了させます。
ちなみにモデルは ollama の公式サイトから探せます。
AIのカスタマイズ、Modelfileの作成
そのまま ollama run しても動きますが、より使いやすく、反応の仕方や性格付けをするためにModelfileを作成します。
手順
適当なディレクトリに Modelfile(拡張子なし)というファイルを作成します。
ただそれだと後から分かりづらいので Modelfile.gemma3-creative のように名前をつけると良いかも。
こうすることで複数のModelfileを一箇所において管理できます。
以下の内容を書き込みます。
# ベースとなるモデルを指定
FROM gemma3:4b-it-qat
# パラメータ設定(創造性と正確性のバランス)
PARAMETER temperature 1.0
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
# システムプロンプト(ここで日本語の振る舞いを固定する)
SYSTEM """
あなたは日本語で自然に会話するアシスタントです。
必ず日本語で、わかりやすく説明してください。
機械翻訳のような不自然な表現は避けてください。
"""
パラメータはOllamaのModelfileリファレンスで確認できます。
まずは temperature をいじるのが一番変化を実感しやすいです。プログラミングや事実確認なら 0.1〜0.3、小説執筆やアイデア出しなら 1.0以上 を試してみてください。
カスタムモデルとして登録
ターミナルでModelfileがある場所に移動し、カスタムモデル(例:gemma3-creative)として登録します。
# カスタムモデルの作成 -f で作成したModelfileを指定
ollama create gemma3-creative -f Modelfile.gemma3-creative
# 実行
ollama run gemma3-creative
削除したい時は
# モデルのリスト表示
ollama list
# 削除したい時は
ollama rm gemma3-creative
実際に動かしてみた速度感(トークン/s)
実際に動かしてみた感じが伝わるようGIFにしてみました。伝わるかな?
Thinking modeというAIが考えている内容(推論)を見ることができて大変興味深いのですが、回答が出てくるまでがもんのすごい遅いので・・・飽きます。最初は楽しいんだけどね。
オフにすることもできるし、そうすると回答までの時間が若干短縮されたように思えたけど遅いことには変わりなし。
ただモデルが悪いのではなく、遅い環境なのが問題なのでそこはお間違い無く。
--verbose オプションをつけて起動すると終了時にスタッツが見れます。まとめ
ごくごく簡単に iMac2017 でローカルLLMを動かす説明をしてみました。
速度はお世辞にも快適とは言えません。レスポンスを待つ時間は覚悟が必要です。ただ、ローカルで動く・データが外に出ない・APIコストがかからない という点は大きなメリットです。
なにより素人でも少しいじればAIをローカルで動かせるってすごいよね。
でも実は Ollama の中で動いている llama.cpp を自分の環境に合わせてビルドし、直接使うことによって速度を上げることができるのです。
正直使い道も何もあったもんじゃないなと思っていたのに試してみてビックリ。
2倍くらいは早くなったので、すこしは光明が見えてきたかも?
そのあたりは次の記事で。




コメント