上級 11 分llama.cpp

llama.cpp をコンパイルする Metal

端的な回答

Apple Silicon搭載のMacでは、llama.cppを3つのコマンドでコンパイルでき、Metalはデフォルトで有効になっています。リポジトリをクローンし、cmake -B build、続いてcmake --build build --config Releaseを実行してください。GPUツールキットのインストールは不要です。Homebrewを使えば、コンパイルせずにインストールすることもできます。llama-cliとllama-serverのバイナリは、MシリーズチップのGPUで計算を実行します。実行できるモデルのサイズを決めるのは、純粋な計算性能よりもユニファイドメモリです。

llama.cpp は Ollama と LM Studio の基盤となる推論エンジンで、Macでネイティブに動作します。このガイドでは、Metalを使ってインストールまたはコンパイルする方法、GGUFモデルを実行する方法、APIとして提供する方法、macOSのGPUメモリ上限を引き上げる方法、M1からM5までのチップについて公開されているベンチマークを正しく読み取る方法を紹介します。

著者 Mohamed Meguedmi·更新 2026-09-30·macOS 14+ でテスト済み

#Macで使うllama.cpp:Metalがもたらすメリット

macOSでは、Appleのグラフィックスおよび計算APIであるMetalを介してGPUを利用し、llama.cppもこれを直接活用します。プロジェクトのREADMEには、Apple Siliconが主要な対応プラットフォームとして扱われ、ARM NEON、Accelerate、Metalによって最適化されていると明記されています。つまり、デフォルトの設定でコンパイルするだけで、追加オプションなしにGPUを使うエンジンが生成されます。また、ユニファイドメモリによりCPUとGPUの間でデータを転送する必要がなく、モデルはメモリ上に1つだけ保持されます。したがって、Macで制約となるのは、このメモリの容量と帯域幅です。

→
GPU側でのインストールは不要
数ギガバイトのツールキットを必要とするCUDAとは異なり、MetalはmacOSに標準で含まれています。AppleのコンパイルツールとCMakeがあれば十分です。

#前提条件

ローカルAIキット

お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 生涯アップデート
Apple Silicon搭載のMac
M1からM5までがこのガイドの対象です。Intelプロセッサ搭載のMacはほとんどメリットを得られません。
Appleのコンパイルツール
xcode-select --install で Command Line Tools をインストールしてください。
CMake と Git
Homebrew から利用可能:brew install cmake git
モデル用のメモリ
当サイトでの目安は、コンテキスト分を除いて、Q4の8Bモデルが約5GB、14Bが約9GB、32Bが19〜20GBです。
コンパイルツール
xcode-select --install
brew install cmake git

#コンパイルなしでインストール:Homebrew

特別なコンパイルオプションが必要なければ、Homebrewを使うのが最も速い方法です。llama.cppのインストールドキュメントによると、Homebrewのformulaは、プロジェクトの新しいバージョンが公開されるたびに自動更新されます。Metalに対応した同じ実行ファイルを、そのまま使える状態で入手できます。

Homebrewでインストール
brew install llama.cpp

リポジトリの最新版を使いたい場合、ブランチを試したい場合、またはコンパイルオプションを変更したい場合は、自分でコンパイルしてください。それ以外ならHomebrewで十分です。コンパイルにかかる時間を省け、更新はbrew upgradeで行えます。

#1. Metalを使用してコンパイル

コンパイル(Metalがデフォルトで有効)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

cmake -B build
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

ビルドのドキュメントには明記されています。macOSではMetalがデフォルトで有効になり、計算はGPU上で実行されます。追加するオプションはありません。Georgi Gerganovのアカウントにあった旧リポジトリ名からは、現在プロジェクトが置かれているggml-org組織へリダイレクトされます。バイナリはbuild/binに生成され、ターミナル用のllama-cliやAPI用のllama-serverなどが含まれます。

i
MetalとMPSは異なるものです
MPS(Metal Performance Shaders)は、PyTorchが使用するレイヤーです。llama.cppはMPSに依存していません。llama.cppのMetalバックエンドは量子化モデルの推論向けに実装されており、これが、Mac上でPyTorchを介するソリューションより高速である主な理由です。

2つの便利なオプションがあります。ドキュメントによると、-DGGML_METAL=OFF を指定するとコンパイル時に Metal が無効化され、Metal でコンパイルされたバイナリは --n-gpu-layers 0 を使用して CPU での実行に強制できます。速度を比較する際に便利です。

#2. 最初のモデルを起動する

新しいエンジンはモデルを自動でダウンロードできます。-hf オプションは Hugging Face リポジトリ名を指定し、量子化はサフィックスで指定します。サフィックスがなければ、デフォルトで Q4_K_M が使用されます。既にダウンロード済みのファイルについては、-m でファイルのパスを指定してください。

モデルをダウンロードして実行
./build/bin/llama-cli -hf UTILISATEUR/MODELE-GGUF:Q4_K_M
ローカルファイルを起動
./build/bin/llama-cli -m ~/modeles/mon-modele-Q4_K_M.gguf

GPU に配置するレイヤー数は -ngl で設定します。デフォルト値は auto で、ユニファイドメモリを搭載した Mac に適しています。すべてのレイヤーを読み込むには、-ngl all と指定することもできます。Ollama のフォルダ内でモデルのパスを探さないでください。モデルファイルは内部形式で保存されており、そのまま利用できる GGUF ファイルではありません。

#llama-serverでOpenAI互換APIを提供する

llama-serverは、チャット、応答、埋め込み向けにOpenAI APIと互換性のあるルートを提供します。デフォルトでは127.0.0.1のポート8080で接続を待ち受けるため、ご自身のMacからしかアクセスできません。ネットワークからアクセスできるようにするには、--hostを明示的に指定する必要があります。その場合は、アクセスを保護することが適切です。

ローカルAPIを開始
./build/bin/llama-server -m ~/modeles/mon-modele-Q4_K_M.gguf --port 8080

#4. macOS の GPU メモリ制限

Apple Siliconでは、macOSがGPUに利用させるのはユニファイドメモリの一部だけです。その範囲を超えるモデルは、メモリの総容量が十分でも、読み込みを拒否されるか、一部の処理がCPUに回ります。エンジンは起動時に実際の値を表示します。llama-cliまたはllama-serverのログで、ggml_metal_init: recommendedMaxWorkingSetSizeという行を探してください。

sysctl iogpu.wired_limit_mbコマンドで、この上限を引き上げられます。値はメガバイト単位で指定します。たとえば60 GBなら61 440です。llama.cppリポジトリの貢献者は、この設定は永続化されないため、起動のたびにコマンドを実行し直す必要があると注意を促しています。また、100%まで引き上げることは勧めていません。システムにはGPUが確保している領域以外にもメモリが必要で、十分に残しておかないと正常に動作しなくなるためです。

上限を引き上げる(永続化されません)
# 56 Go pour le GPU sur un Mac de 64 Go (56 x 1024 = 57344)
sudo sysctl iogpu.wired_limit_mb=57344

# Relancez ensuite le modèle et relisez recommendedMaxWorkingSetSize
!
macOS 用に余裕を確保してください
システム用に少なくとも数ギガバイトは残してください。上限を高く設定しすぎると、動作が遅くなったりフリーズしたりして、再起動が必要になります。設定を恒久的に適用するには、起動時に毎回適用し直す必要があります。たとえば、起動時に実行されるデーモンを使う方法があります。標準では、設定を永続化する機能はありません。

#統合メモリに応じたモデルの選定

ユニファイドメモリはmacOS、使用中のアプリ、モデルの間で共有され、GPUに割り当てられるのはその一部だけです。当サイトの目安では、Q4の8Bモデルの重みは約5 GB、14Bは約9 GB、32Bは約19〜20 GBです。これにコンテキストキャッシュの容量が加わります。表は余裕を見込んだ概算です。基準となるのは、エンジンが表示する recommendedMaxWorkingSetSize の値です。

Mac のメモリ容量別の目安(Q4 量子化の重みのみ、コンテキスト分は除く)
Macのメモリ妥当なモデル注記
8 GB3B(2 GB)8Bモデルは実行できますが、macOS用に残るメモリの余裕が少なすぎます。
16 GB8B(5GB)、中程度のコンテキスト長デフォルトのGPU制限は十分です
24から32GB14B(9 GB)、あるいは8BをQ8でQ4量子化した32Bモデルには、GPUのメモリ上限を引き上げる必要があります
48から64GB32B(19~20 GB)を長いコンテキストで使用エンジンがモデルの読み込みを拒否する場合は、GPU の上限を引き上げる
96 GB 以上70B(約40 GB)およびMoEモデルダウンロード前に recommendedMaxWorkingSetSize を確認してください

これらは安全側に見積もった概算であり、実測値ではありません。長いコンテキスト、追加のモデル、リソースを多く消費するアプリケーションのいずれかがあるだけで、状況は変わります。メモリ専用のガイドで、計算方法を詳しく説明しています。

#5. 重要となるオプション

llama-cli および llama-server のオプション (llama-cli の公式 README)
オプション役割デフォルト値
-ngl, --n-gpu-layersVRAMに配置するレイヤー数(数値、auto、またはall)auto
-fa, --flash-attnFlash Attention:on、off、autoauto
-ctk、-ctvキーと値に使用するKVキャッシュの型(f16、q8_0、q4_0…)f16
-hfダウンロードするHugging Faceリポジトリ(量子化は任意)サフィックスを省略した場合はQ4_K_M
-cコンテキストのサイズ(トークン単位)モデルによって異なります

Flash Attentionはデフォルトで自動モードになっているため、ほとんどの場合、手動で有効にする必要はありません。Flash Attentionが有効であれば、-ctkと-ctvでKVキャッシュを量子化できます。q8_0ではf16と比べてキャッシュのメモリ使用量がほぼ半分になりますが、その代わりに精度がわずかに低下するため、ご自身の用途で確認することをお勧めします。専用ガイドでこのトレードオフを詳しく説明しています。

#6. チップ別の性能:公開ベンチマークが測定していること

QuelLLMはこれらのマシンの性能を測定していません。参考となるのは、llama.cppリポジトリ内の「Performance of llama.cpp on Apple Silicon M-series」のディスカッションです。ここで各貢献者はLLaMA 7B Q4_0を同じテストで実行しています。以下の表はその一部を示しており、各測定のllama.cppバージョンも記載されています。M1からM4までのデータは同じバージョンで、M5のデータはそれより新しいバージョンです。

LLaMA 7B Q4_0 での生成(tg)およびプロンプト(pp)のトークン/秒
チップ(GPUコア数)帯域幅Prompt生成理論的上限の割合
M2 Pro (19)200 GB/s341,1938,8674 %
M3 Pro (18)150 GB/s341,6730,7478 %
M4 Pro (20)273 GB/s439,7850,7471 %
M5 Pro (20)307 GB/s1 620,6466,3382 %
M4 Max (40)546 GB/s885,6883,0658 %

理論上限は、帯域幅をモデルのデータサイズ(3.56GiB、つまり3.82GB)で割った値です。Proチップはこの上限の71〜82%に達しますが、Maxチップはわずか58%にとどまります。ある水準を超えると、メモリだけが制約ではなくなり、より高い帯域幅にお金を払っても、仕様表から期待するほどの効果は得られません。

ここから3つのことが分かります。生成速度はメモリ帯域幅に左右されます。M3 Proはチップの世代が新しいにもかかわらず、帯域幅が150 GB/sのため、200 GB/sのM2 Proより遅くなります。帯域幅がはるかに大きいMaxチップが優位です。また、プロンプトの読み取り速度はM5で飛躍的に向上しました。GPUコア数が同じM4 Proの439.78トークン/秒に対し、M5 Proは1,620.64トークン/秒で、3.7倍です。この差は長い文書やRAGでは重要ですが、チャットでは影響がずっと小さくなります。

i
これらの数字をどう読み取るか
測定値は異なる貢献者によって提供されており、llama.cppのバージョンやmacOSのバージョンも異なります。これらはチップを比較するための目安を示すものであり、お使いの機器に対する保証ではありません。80億から90億パラメータのモデルをQ4で実行する場合、7Bモデルよりも重いため、速度はやや遅くなります。

Macが遅いと結論づける前に、同じモデルをまず-ngl 0で、次にデフォルト値で実行し直して比較する習慣を付けるとよいでしょう。両者の差から、そのマシンでGPUが実際にどれだけ寄与しているかが分かり、計算が確かにMetal経由で行われていることも確認できます。使用したllama.cppのバージョンも記録してください。Metalの最適化は急速に進んでおり、古いバイナリは最近のバージョンより大幅に遅い場合があります。

#トラブルシューティング:よくあるエラー

Macでよく見られる症状
症状考えられる原因解決の手がかり
生成速度が非常に低く、CPU使用率が100%モデルがCPU側に読み込まれている-nglを確認し、起動ログを読む
GPUのメモリ割り当てエラーGPUに割り当てられたRAMよりも大きなモデルiogpu.wired_limit_mbの値を引き上げる、モデルを小さくする、またはコンテキストを短くする
Macの動作が遅くなる、またはフリーズするGPU に割り当てるメモリの上限が高すぎて、macOS 用の余裕がないiogpu.wired_limit_mb の値を下げます
コンパイルが失敗しますAppleの開発ツールがない、またはCMakeが古すぎるxcode-select --install その後 brew upgrade cmake
モデルが見つかりませんHugging Face のリポジトリパスまたは名前が誤っています既知のリポジトリで -hf をテストするか、絶対パスで -m を使用する
FAQ
MacでMetalを使用するにはllama.cppをコンパイルする必要がありますか?+
いいえ。macOSでのコンパイルではMetalがデフォルトで有効になり、Homebrewではbrew install llama.cppでビルド済みの実行ファイルを入手できます。自分でコンパイルするのは、リポジトリの最新版を使いたい場合、特定のブランチを試したい場合、または特別なオプションが必要な場合に限ってください。どちらの方法でも、llama-cliとllama-serverという同じツールが得られます。
llama.cppがMacでGPUを用いているか確認する方法は?+
llama-cliまたはllama-serverの起動時にログを確認してください。Metalの初期化とrecommendedMaxWorkingSetSizeの値が示されます。CPUがフル稼働しているのに処理速度が非常に低い場合は、モデルがCPUに読み込まれていることを示しています。その場合は、デフォルト値がautoの-ngl設定を確認してください。
Apple Silicon搭載MacでGPUにより多くのメモリを割り当てるには、どうすればよいですか?+
sudo sysctl iogpu.wired_limit_mb=VALEURで設定します。VALEURにはメガバイト単位の値を指定します。この設定は永続的ではないため、起動するたびに設定し直す必要があります。RAMの100%を割り当てようとしないでください。macOSはシステムのほかの処理にもメモリを必要とします。ログ内のrecommendedMaxWorkingSetSizeを再確認して、新しい値を確認してください。
Macではllama.cppとOllamaのどちらを選ぶべきですか?+
Ollamaはllama.cppを基盤としており、インストール、ダウンロード、APIの利用を簡素化しています。最新のオプション、パラメータの細かな制御、またはllama-serverが必要な場合は、llama.cppを直接利用してください。Macについては、MLXとllama.cppの比較ガイドで、もう一つのエンジンの選択肢も詳しく説明しています。使い始めるには、OllamaまたはLM Studioで十分です。
M4 Pro搭載のMacでllama.cppを使うと、どの程度の速度が期待できますか?+
llama.cppの公開ベンチマークでは、GPUが20コアのM4 ProでQ4_0のLLaMA 7Bを動かした場合、生成速度は50.74トークン/秒、プロンプト処理速度は439.78トークン/秒です。より大きなモデルでは速度が下がります。これらの数値は、llama.cppのバージョン、メモリ、macOSによって変わります。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。