Mac M1/M2でQwen3 32Bを動かす:メモリと設定 MLX
Qwen3 32Bの公式MLX 4ビット版は18.4 GBのRAMに収まりますが、それに加えて使用するコンテキスト分のメモリも必要です。スワップなしで快適に使うには、少なくとも24〜32 GBの統合メモリを見込んでください。標準のM1またはM2を搭載したMac(8 GBまたは16 GB)では足りず、Pro、Max、またはUltraチップが必要です。
Qwen3 32Bは328億パラメータの密なモデルで、ネイティブのコンテキスト長は32,768トークン、YaRNを使えば131,072トークンまで拡張できます。Macでは、単に「読み込めるか」だけでなく、「実際の空きメモリはどれだけあり、どの量子化方式とコンテキスト長を使うか」が問題になります。このガイドでは、最もメモリの少ない構成では実際には対応していないことを踏まえ、Mac M1またはM2について検証可能な数値を詳しく説明します。
#実際に必要な統合メモリ
まず確認すべきなのは、パラメータ数ではなく、量子化したモデルの容量です。mlx-communityが公開したMLX 4ビット版は、ディスク上でも読み込み時のメモリ上でも18.4 GBを占めます。Macのユニファイドメモリは、システム、起動中のアプリケーション、モデルで共有されます。RAMの総容量が18.4 GBしかなければ、システムにも会話のコンテキストにも余裕がありません。
公式の Qwen には、この重みの背後にあるアーキテクチャが記載されています。64層、クエリには64ヘッド、キーとバリューには8ヘッドのグループクエリアテンション(GQA)です。具体的には、KVヘッド数が少ないということは、等ヘッド数の通常のマルチヘッドアテンションと比較して、コンテキストのトークンあたりのKVキャッシュがよりコンパクトになることを意味します。これは、328億パラメータのデンスモデルが、モデルの重み自体が利用可能なRAMに収まることを条件に、Macのユニファイドメモリ上で実用的に動作する理由の一つです。
| 構成 | 実現可能性 | 注記 |
|---|---|---|
| 16 GBのユニファイドメモリ | 非現実的 | モデルだけで(4ビット量子化で 18.4 GB)、すでに RAM の総容量を超えています。 |
| 24 GBのユニファイドメモリ | 可能(コンテキスト長を短く設定) | システムと KV キャッシュに使えるメモリの余裕が少ないため、一時的な利用にとどめてください。 |
| 32GBのユニファイドメモリ | 快適 | 中程度のコンテキスト処理に十分な余裕があり、頻繁なスワップは発生しません。 |
| 64GB以上 | 余裕あり | 長いコンテキストを利用でき、他のアプリケーションも開いたままにしておけます。 |
#32BモデルにはどのM1/M2チップが適していますか?
あなたのMacでローカルAIを最大限に活用:ユニファイドメモリ、MLXとGGUFの比較、お使いのチップに合ったモデル、Apple Silicon向けに調整済みのOllamaとLM Studio。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 30日間返金対応
MacBook AirまたはProのM1またはM2「基本構成」は、8GBまたは16GBの統合メモリで販売されています。これはQwen3 32Bには不十分です。4ビットでも同様です。システムとコンテキストを考慮しても余裕を持たせるためには、少なくとも32GBの統合メモリで構成されたM1 Pro/Max/UltraまたはM2 Pro/Max/Ultraチップを選ぶ必要があります。これはGPUの計算能力の問題ではなく、購入後に増設できない、マシンに物理的に存在するメモリの量の問題です。
#MLXかllama.cpp/Ollamaか
MLXは、Apple Siliconのユニファイドメモリアーキテクチャを活用するために開発されたフレームワークです。llama.cpp(およびそれを基盤とするOllama)も引き続き有力な代替手段で、GGUF量子化のエコシステムがより広く、すでに他のマシンでOllamaを使っている人には導入しやすいという利点があります。特にQwen3 32Bでは、mlx-communityコミュニティの公式MLX 4ビット版は、サイズ(18.4 GB)の面で同等のGGUF量子化版と直接比較できます。そのため、選択を左右するのは主に、すでに使い慣れているツールであり、実行できるかどうかの違いではありません。
- MLXを選択
- すでにPython/Hugging Faceのエコシステムを利用していて、Apple Siliconのアーキテクチャに最も近い形でモデルを変換したい場合。
- Ollama/llama.cpp を選択
- 単一のコマンド、標準的なローカルサーバー、PC/Linuxと同じツールとの互換性を求める場合。
#MLXでインストールする手順
- 01使用可能なメモリを確認アクティビティモニタの「メモリ」タブで、何かを起動する前に、マシンの公称RAM総容量だけでなく、実際に空いているメモリ量を記録する。
- 02mlx-lmをインストールバージョンの競合を避けるため、Pythonパッケージmlx-lmをグローバル環境ではなく専用の環境にインストールする。
- 034ビット版をダウンロード読み込み時のメモリ使用量を抑えるため、量子化されていないバージョンではなくmlx-community/Qwen3-32B-4bitを取得する。
- 04まずコンテキスト長を短くして起動するまず短いコンテキスト(4,000〜8,000トークン)で始め、モデルが読み込まれて応答することを確認してから、実際のメモリ残量に応じてコンテキストを徐々に増やす。
#macOS用GPUメモリ設定(非公式)
Apple Siliconでは、macOSがデフォルトでユニファイドメモリの一部をGPUからアクセスできない領域として確保しています。Metalが提示する推奨作業領域のサイズは、RAM全体の約75%です。技術的には、iogpu.wired_limit_mbというシステム設定でこの上限を引き上げることができます。ただし、Appleが公式に文書化している設定ではありません。技術コミュニティで知られている非サポートの手法であり、今後のmacOSアップデートで仕様が変わったり、機能しなくなったりする可能性があります。
値の単位はメガバイトで、物理メモリの容量を下回る必要があります。総RAM容量からmacOS用の6〜8 GBを差し引いてください。上の例は32 GBのMacを想定しています(26,624 MB、つまりGPU用に26 GB)。64 GBのMacでは、57,344 MBにすると同じ余裕を残せます。出回っている122,880 MBという設定例は128 GBのマシンを想定したものです。これを32 GBのM1またはM2にそのままコピーすると、搭載メモリの容量を超えてしまいます。
#思考モード:間接的なメモリコスト
Qwen3-32Bには、最終回答の前に内部的な推論を生成する「推論モード」と、直接回答するモードを切り替える仕組みがあります。使用するツールに応じて、enable_thinkingパラメータ、または/thinkと/no_thinkのタグで切り替えます。メモリ容量の限界に近いマシンでは、推論モードは間接的ながら実際に影響を及ぼします。最終回答の前に生成される推論トークンは1つずつ現在の会話のコンテキストに追加され、それに伴って増大するKVキャッシュにも加わるためです。メモリが24〜32 GBのMacでは、簡単な質問に対して推論モードを無効にすることで、コンテキストの増大を抑え、長時間のセッションでメモリがいっぱいになるリスクを減らせます。
#スワップエラーとメモリ逼迫の兆候
メモリ不足の最も明確な兆候は、明示的なエラーメッセージではなく、急激な動作の遅さです。macOSがSSDへのスワップ書き込みを始めるため、モデルだけでなくシステム全体が遅くなります。最初の応答を待つ前に、アクティビティモニタで、モデルの読み込み中にメモリプレッシャーの表示がオレンジ色や赤色に変わっていないか確認してください。
- 読み込み時にメモリプレッシャーがオレンジ色または赤色になる
- 指定するコンテキストのサイズを小さくするか、利用可能なら、より軽量な量子化に切り替える。
- モデルは読み込まれますが、最初の応答には数分かかります
- スワップが発生している兆候です。再実行する前に、メモリを多く消費するアプリケーションを閉じる。
- 読み込みがすぐに失敗する
- 量子化を考慮しても、このサイズのモデルにはマシンのユニファイドメモリの総容量がおそらく不足しています。
コマンドラインでvm_stat(スワップされたページ数を示す「Pageouts」)やmemory_pressure -Qを使うと、アクティビティモニタの視覚的な指標だけを見るよりも正確に診断できます。処理の遅さがメモリ不足によるものなのか、それとも別のボトルネック(ディスクの空き容量不足、長時間の使用によるサーマルスロットリング)によるものなのかを確認するのに役立ちます。モデルの生成中にPageoutsの数が増えることは、コンテキストも含めた現在の構成に対してユニファイドメモリが不足していることを示す、最も信頼できる兆候です。
#長文コンテキスト:メモリの実際のコスト
Qwen3-32Bの標準コンテキストは32,768トークンで、YaRNによって131,072トークンまで拡張できますが、その分のメモリ消費は避けられません。実際に使われるコンテキストの各トークンがKVキャッシュに追加され、会話が続くにつれてキャッシュは大きくなります。メモリ容量に余裕のないマシン(24~32GB)では、コンテキストを控えめなサイズ(8,000~16,000トークン)にすることで、安全のための余裕を残せます。131,072トークンへの拡張は、モデルをロードした後も十分な余裕が残る、64GB以上のユニファイドメモリを備えたマシンに限って使うこと。
#モードに応じた推奨設定
メモリが限られたマシンでは、サンプリングパラメータの選び方が動作に影響します。設定が適切でないと、回答が不必要に長くなり、それに伴ってコンテキストやKVキャッシュも大きくなることがあります。Qwenは有効なモードごとに異なる設定を公開しています。他のモデルの汎用的なデフォルト値をそのまま使うのではなく、これらの設定をMLXクライアントまたはOllamaの生成パラメータに明示的に指定してください。
| パラメータ | 思考モード(enable_thinking=True) | 直接モード(enable_thinking=False) |
|---|---|---|
| Temperature | 0,6 | 0,7 |
| Top P | 0,95 | 0,8 |
| Top K | 20 | 20 |
| Min P | 0 | 0 |
Qwenはまた、複雑なリクエストの大半について、最大32,768トークンの出力長を確保することを推奨しています。繰り返しが発生する場合は、presence_penaltyを0〜2の範囲で調整して抑えることも推奨しています。ただし、値が高すぎると、回答に複数の言語が混在する可能性があります。メモリに余裕のないMacでは、これほど大きな最大出力長は理論上の設定にとどめるべきです。実際には、質問に答えられた時点で生成を止めれば、KVキャッシュが無駄に増えるのを防げます。
- Mac上のMLXとllama.cpp:数値で比較
- 利用可能なRAM容量に応じてモデルを選ぶ
- ローカルにLLMをインストールする手順
- KV キャッシュの量子化により、長コンテキストでのメモリ使用を削減
- 出典:Qwen3-32Bの公式モデルカード(Hugging Face)
- 出典:mlx-communityの公式4ビットMLX版
- 出典:iogpu.wired_limit_mb の設定(Apple 公式ではありません)
M1チップを搭載した8GBメモリのMacは、Qwen3 32Bを実行できますか?+
Qwen3 32BをMacで使う場合、MLXかOllamaのどちらが適していますか?+
iogpu.wired_limit_mb の設定は安全ですか?+
32GBメモリのマシンでどの程度のコンテキストを使用すべきですか?+
Qwen3-32B向けの生成設定はどのようなものでしょうか?+
思考モードがより多くのメモリを消費するのはなぜですか?+
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。