💡 本記事は、すべて人間が手書きしました。
まとめ
- 設定したい値の確認
launchctl getenv OLLAMA_FLASH_ATTENTION launchctl getenv OLLAMA_KV_CACHE_TYPE ~/LaunchAgents/com.oki2a24.ollama-env.plistを置き、PC起動時にその内容が実行されるようにする。- 内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.oki2a24.ollama-env</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>-c</string> <string> launchctl setenv OLLAMA_FLASH_ATTENTION 1 launchctl setenv OLLAMA_KV_CACHE_TYPE q8_0 # Uncomment for troubleshooting: # echo "$(date) Environment variables set" >> /tmp/ollama-launchagent.log </string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> - LaunchAgents の確認方法など
# Lint plutil -lint ~/dotfiles/LaunchAgents/com.oki2a24.ollama-env.plist # 登録する launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.oki2a24.ollama-env.plist # 解除する launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.oki2a24.ollama-env.plist - Pull Request feat: Ollama の起動時環境変数を LaunchAgent で設定 by oki2a24 · Pull Request #17 · oki2a24/dotfiles
そもそも。 OLLAMA_FLASH_ATTENTION, OLLAMA_KV_CACHE_TYPE ってなんだ?
たまたま ローカル LLM パフォーマンスガイド(llama.cpp / Ollama / LM Studio)|zephel01 を読み、やってみようと思いました。
ChatGPT に聞いた答えを記します。
OLLAMA_FLASH_ATTENTION
結論から言うと、**Flash Attention は「LLMの頭脳が賢くなる機能」ではなく、「Attention計算をより効率よく実行するアルゴリズム」**です。
つまり、
- 推論品質はほぼ変わらない
- 速度が上がる
- VRAM使用量が減る(特に長文で効果大)
という性質があります。元の論文でも「近似計算ではなく、同じ結果をより効率的に計算する」という位置付けです。
[2205.14135] FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
何か犠牲になる?
基本的にはほぼありません。
ただし注意点があります。
① GPUが対応していないと使えない 対応GPUでなければ通常のAttentionになります。
② 一部モデルでは未対応 ③ まれにバグ
OLLAMA_KV_CACHE_TYPE
公式ドキュメントでも、Flash Attentionと組み合わせてKVキャッシュを q8_0 にすると、KVキャッシュのメモリ使用量を約半分に削減でき、品質への影響は通常ほとんどありませんと案内されています。
ollama/docs/faq.mdx at main · ollama/ollama
そもそも。 LaunchAgents が必要な理由
launchctl setenv OLLAMA_FLASH_ATTENTION 1
launchctl setenv OLLAMA_KV_CACHE_TYPE q8_0
を実行しても、 Mac 再起動後には無効になるため。
補足。 LaunchAgents では open -a Ollama 不要
Mac 起動後、上部メニューにアルパカアイコン 🦙 が表示されていたので、 Mac 起動した時に Ollama も自動的に起動しているのだろうな、と思い込んでいました。なので、 LaunchAgents にて 1. 環境変数を設定する。 2. Ollama を起動する。、ということをしようと予定していました。
しかし、違ったようです。 Mac 起動後、上部メニューにアルパカアイコン 🦙 が表示されるけれども、それだけです。その後、 open -a Ollama を実行すると Ollama の画面が表示されます。別に Mac 起動後に Ollama 画面を起動したいわけではないので、不要です。
起動シーケンスは実際には次のようになっています。
ログイン
↓
LaunchAgent(あなたが作成)
↓
launchctl setenv ...
↓
終了
その後、
macOS
↓
Ollama のバックグラウンド機能
↓
ollama serve (生成AIエージェントアプリ Claude Code とか起動時に実行)
という流れになっていると思います。
補足。手順の中で使うと便利なコマンド
# システムやユーザーセッション全体に設定された環境変数を削除
launchctl unsetenv OLLAMA_FLASH_ATTENTION
launchctl unsetenv OLLAMA_KV_CACHE_TYPE
おわりに
gemma4:26b-a4b-it-qat を主に使っています。
今まで、物理メモリ 32 GB 中、 30 GB 以上を利用、スワップも発生していました。同時に Safari は利用できるけども、動作は厳しい感じがするし、発熱するしファンも回るし、バッテリー減りも早い、という問題を感じていました。
そして、今回の設定後はというと、 28, 29 GB くらいに減少した感じです、スワップはゼロ。今のところ生成AIの回答に目立った劣化も感じられないので、しばらくこのままとしようと思います。
以上です。
