← Kembali ke Lab

MPS backend out of memory: angka "max allowed" di semua ukuran Mac

pytorchapple-siliconmemoryguide

Error PyTorch di Mac memuat satu angka yang sering dicari orang. Ini berasal dari Mac 16 GB (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.

Dalam catatan saya sebelumnya, saya mengukur asalnya di Mac 48 GB saya. max allowed adalah PYTORCH_MPS_HIGH_WATERMARK_RATIO, nilai bawaannya 1.7, dikalikan set kerja GPU yang direkomendasikan macOS, yang dikembalikan oleh torch.mps.recommended_max_memory(). Satu mesin tidak bisa memberi tahu angka itu di mesin lain, jadi saya membacanya dari error orang lain.

Dari mana angka-angka ini berasal

Pada 24 Oktober saya mencari issue GitHub yang mengutip error dengan nilai max allowed. Saya menemukan 250 issue dan pull request, 167 di antaranya berisi angka dalam teks. Sebagian besar nilai masuk ke beberapa kelompok, dan jika pelapor menyebut memori Mac mereka, kelompok itu sesuai dengan ukurannya. Dibagi 1.7, setiap nilai menghasilkan set kerja yang diberikan macOS kepada GPU di mesin tersebut.

memori Macmax allowed, GiBset kerja GPU, GiBporsi memorilaporanterlihat
8 GB9.075.3367 %272023 – 2026
16 GB18.1310.6767 %182023 – 2026
24 GB27.2016.0067 %9Jan 2025 – Jan 2026
24 GB30.1917.7674 %3Des 2025 – Sep 2026
32 GB36.2721.3367 %62024 – 2025
36 GB45.9027.0075 %32024 – 2026
48 GB63.6537.4478 %4, ditambah milik sayaSep – Okt 2026
64 GB81.6048.0075 %7Des 2023 – Apr 2025
64 GB88.1351.8481 %6Mar – Okt 2026
128 GB163.2096.0075 %42024 – 2025
128 GB182.78107.5284 %2Des 2025 – Jan 2026

Porsi memori yang diberikan macOS kepada GPU, berdasarkan ukuran Mac: dua pertiga hingga 32 GB dan tiga perempat di atasnya pada laporan sampai akhir 2025; 74 %, 78 %, 81 %, dan 84 % pada Mac 24 GB, 48 GB, 64 GB, dan 128 GB dalam laporan sejak akhir 2025

Versi PyTorch lama memberi label angka-angka ini sebagai GB, dan versi baru sebagai GiB. Keduanya adalah satuan biner: 1.7 × dua pertiga × 16 GiB tepat menjadi 18.13.

Apa yang berubah

Sampai akhir 2025, polanya tampak sederhana. macOS memberi GPU dua pertiga memori pada Mac hingga 32 GB dan tiga perempat pada ukuran di atasnya. Laporan sejak akhir 2025 menunjukkan porsi yang lebih besar pada Mac 24 GB, 64 GB, dan 128 GB. Ketiga laporan 64 GB yang menyebut sistemnya semuanya memakai macOS 26. Nilai 8 dan 16 GB tidak berubah. Mac 48 GB saya sendiri menjalankan macOS 26.5.2 dan mengembalikan 37.44 GiB, 78 %.

Ada dua batasan pada temuan ini: setiap baris baru hanya didukung dua hingga enam laporan, dan dari sana saya tidak bisa mengetahui apakah perbedaannya dibuat oleh macOS atau chip.

Artinya saat Anda melihat error ini

Pada rasio bawaan, batasnya melampaui memori fisik pada setiap baris tabel: 1.7 × dua pertiga adalah 113 % memori, dan 1.7 × 84 % adalah 143 %. Saat sebuah job mencapai max allowed, job itu sudah melakukan swap selama beberapa waktu. Ini sesuai dengan pengukuran saya: di Mac saya, swap mulai terjadi antara 33.5 dan 36 GB footprint, jauh di bawah batas 63.65 GiB. Saran di akhir error, rasio 0.0, menghapus batasnya, sehingga job dapat melakukan swap lebih jauh.

Jika Anda lebih memilih error yang bersih daripada Mac yang melakukan swap, atur batas di bawah memori Anda, misalnya rasio 1.0, yang merupakan set kerja itu sendiri. Atur juga rasio low: pada PyTorch 2.14, rasio high di bawah 1.4 yang diatur sendiri akan gagal dengan "invalid low watermark ratio 1.4".

PYTORCH_MPS_HIGH_WATERMARK_RATIO=1.0 PYTORCH_MPS_LOW_WATERMARK_RATIO=0.8 python your_script.py

Untuk melihat set kerja Mac Anda sendiri:

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

Angka yang tidak sesuai

Sekitar sepertiga laporan menunjukkan batas lain, seperti 1.70 GiB, 3.40 GiB, 6.77 GiB, atau 3.00 GiB. Itu bukan nilai bawaan Mac. Aplikasi atau pengguna menetapkan rasio atau batasnya sendiri: satu alat video membatasi MPS pada 3 GiB bahkan di Mac 128 GB. Sebanyak 20 laporan lain berada di 7.93, dan saya tidak dapat mengaitkan nilai itu dengan satu ukuran Mac. Jika angka Anda jauh di bawah tabel, periksa pengaturan alat tersebut sebelum menyalahkan Mac.

Sumber

Dua laporan untuk setiap baris. Daftar lengkap berisi 167 ada di file data.