← ラボに戻る

MPS backend out of memory:Mac の容量ごとの「max allowed」の数値

pytorchapple-siliconmemoryguide

Mac で出る PyTorch のエラーには、皆が検索する数字が一つあります。これは 16 GB の Mac で出たものです(AudioLDM2 #20)。

RuntimeError: MPS backend out of memory (MPS allocated: 18.02 GB, other allocations: 107.10 MB, max allowed: 18.13 GB). Tried to allocate 4.50 MB on private pool.

以前のノートでは、私の 48 GB の Mac でこの数字がどこから来るかを計測しました。max allowed は既定値が 1.7 の PYTORCH_MPS_HIGH_WATERMARK_RATIO に、macOS が推奨する GPU のワーキングセット、つまり torch.mps.recommended_max_memory() が返す値を掛けたものです。一台だけでは他の Mac でその数字がいくつなのかは分からないので、ほかの人のエラーから読み取りました。

数字の出どころ

十月 24 日に、「max allowed」の値を含むエラーを引用した GitHub の issue を検索しました。250 件の issue と pull request が見つかり、そのうち 167 件には本文に数字がありました。値の大半はいくつかのグループに分かれ、報告者が Mac のメモリを記している場合、そのグループは容量と対応しています。各値を 1.7 で割ると、そのマシンで macOS が GPU に与えたワーキングセットになります。

Mac のメモリmax allowed、GiBGPU のワーキングセット、GiBメモリに占める割合報告数確認された時期
8 GB9.075.3367 %272023 – 2026
16 GB18.1310.6767 %182023 – 2026
24 GB27.2016.0067 %9一月 2025 – 一月 2026
24 GB30.1917.7674 %3十二月 2025 – 九月 2026
32 GB36.2721.3367 %62024 – 2025
36 GB45.9027.0075 %32024 – 2026
48 GB63.6537.4478 %自分の分を含めて 4九月 – 十月 2026
64 GB81.6048.0075 %7十二月 2023 – 四月 2025
64 GB88.1351.8481 %6三月 – 十月 2026
128 GB163.2096.0075 %42024 – 2025
128 GB182.78107.5284 %2十二月 2025 – 一月 2026

Mac の容量ごとに macOS が GPU に与えるメモリの割合:32 GB までは三分の二、超えると四分の三が 2025 年後半までの報告での値。2025 年後半以降の報告では、24、48、64、128 GB の Mac で 74、78、81、84 %

古い PyTorch のバージョンではこれらの数字を「GB」、新しいものでは「GiB」と表示します。どちらもバイナリ単位です。1.7 × 三分の二 × 16 GiB はちょうど 18.13 です。

何が変わったか

2025 年後半までは、規則は単純に見えます。macOS は 32 GB 以下の Mac では GPU にメモリの三分の二を、より大きい Mac では四分の三を与えていました。2025 年後半以降の報告では、24、64、128 GB の Mac で割合が大きくなっています。システム名が書かれた 64 GB の三件の報告はいずれも macOS 26 です。8 GB と 16 GB の値は変わっていません。私の 48 GB の Mac は macOS 26.5.2 で、37.44 GiB、78 % を返します。

この結果には二つの限界があります。新しい行はそれぞれ二件から六件の報告に基づくこと、また差が macOS によるものかチップによるものかはここからは分からないことです。

エラーを見たときの意味

既定の比率では、表のすべての行で上限は物理メモリを超えます。1.7 × 三分の二はメモリの 113 %、1.7 × 84 % は 143 % です。ジョブが max allowed に達するころには、すでにしばらくスワップしています。これは私の計測とも一致します。私の Mac では footprint が 33.5 GB から 36 GB の間でスワップが始まり、63.65 GiB の上限よりずっと下でした。エラー末尾の助言にある 0.0 の比率は上限をなくすため、ジョブはさらにスワップできます。

スワップする Mac ではなく、きれいなエラーがほしいなら、たとえば比率を 1.0 にして、上限をメモリより低く設定してください。これはワーキングセットそのものです。low の比率も一緒に設定します。PyTorch 2.14 では、1.4 未満の high の比率だけを設定すると、「invalid low watermark ratio 1.4」で失敗します。

PYTORCH_MPS_HIGH_WATERMARK_RATIO=1.0 PYTORCH_MPS_LOW_WATERMARK_RATIO=0.8 python your_script.py

自分の Mac のワーキングセットを確認するには、次を実行します。

import torch
print(torch.mps.recommended_max_memory() / 2**30, "GiB")

当てはまらない数字

報告のおよそ三分の一は、1.70、3.40、6.77、3.00 GiB のような別の上限を示しています。これらは Mac の既定値ではありません。アプリかユーザーが独自の比率または上限を設定しています。ある動画ツールは 128 GB の Mac でも MPS を 3 GiB に制限しています。別の 20 件の報告は 7.93 で、私はこの値を特定の Mac 容量と結び付けられませんでした。あなたの数字が表より大幅に低いなら、Mac を疑う前にツールの設定を見てください。

出典

各行につき二つの報告を挙げます。167 件すべての一覧はデータファイルにあります。