Bỏ qua tới nội dung chính
Quay lại tin tức

Lỗi tràn bộ nhớ trên MPS backend: Mức giới hạn "tối đa cho phép" đối với từng cấu hình máy Mac

Dev.to Machine Learning· Rodion Kazennov· 24/10/2026opensource

Thông báo lỗi PyTorch trên máy tính Mac chứa một con số thường được nhiều người tìm kiếm. Dưới đây là trường hợp ghi nhận từ một thiết bị Mac dung lượng 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. Trong một ghi chú trước đó, nguồn gốc của thông số này đã được phân tích trên thiết bị Mac dung lượng 48 GB. Chỉ số "max allowed" (mức tối đa cho phép) là kết quả của biến PYTORCH_MPS_HIGH_WATERMARK_RATIO (mặc định là 1,7) nhân với dung lượng tập bộ nhớ làm việc của GPU do macOS khuyến nghị, được trả về từ hàm torch.mps.recommended_max_memory(). Một thiết bị không thể hiển thị con số này của các máy khác, do đó thông số này được tổng hợp từ dữ liệu của những người dùng khác

Thông báo lỗi PyTorch trên máy tính Mac hiển thị một thông số thường được người dùng tra cứu. Dưới đây là ví dụ ghi nhận từ một thiết bị 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. Trong một ghi chép trước đây, tác giả đã tiến hành đo kiểm nguồn gốc thông số này trên dòng máy Mac 48 GB. Giá trị "max allowed" (mức tối đa cho phép) là tích số giữa PYTORCH_MPS_HIGH_WATERMARK_RATIO (mặc định là 1,7) và tập làm việc (working set) của GPU do macOS khuyến nghị, được trả về qua hàm `torch.mps.recommended_max_memory()`. Do một thiết bị đơn lẻ không thể phản ánh thông số trên các cấu hình khác, số liệu được tổng hợp từ báo cáo lỗi của cộng đồng người dùng. Nguồn gốc các số liệu Vào ngày 24/10, tác giả rà soát trên GitHub các báo cáo lỗi và yêu cầu hợp nhất có trích dẫn thông báo trên kèm giá trị "max allowed". Kết quả thu được 250 trường hợp, trong đó 167 trường hợp nêu số liệu cụ thể trong nội dung. Phần lớn các giá trị tập trung vào một số nhóm nhất định; ở các trường hợp người báo cáo ghi rõ dung lượng bộ nhớ của thiết bị, các nhóm này hoàn toàn tương ứng với từng mức dung lượng. Khi chia cho 1,7, mỗi giá trị tương ứng với tập làm việc mà macOS phân bổ cho GPU trên thiết bị đó. Bộ nhớ Mac Mức tối đa cho phép, GiB Tập làm việc GPU, GiB Tỷ lệ bộ nhớ Số báo cáo Thời gian ghi nhận 8 GB 9,07 5,33 67% 27 2023 – 2026 16 GB 18.13 10,67 67% 18 2023 – 2026 24 GB 27,20 16,00 67% 9 Tháng 1/2025 – Tháng 1/2026 24 GB 30,19 17,76 74% 3 Tháng 12/2025 – Tháng 9/2026 32 GB 36,27 21,33 67% 6 2024 – 2025 36 GB 45,90 27,00 75% 3 2024 – 2026 48 GB 63,65 37,44 78% 4, cùng thiết bị thử nghiệm Tháng 9 – Tháng 10/2026 64 GB 81,60 48,00 75% 7 Tháng 12/2023 – Tháng 4/2025 64 GB 88,13 51,84 81% 6 Tháng 3 – Tháng 10/2026 128 GB 163,20 96,00 75% 4 2024 – 2025 128 GB 182,78 107,52 84% 2 Tháng 12/2025 – Tháng 1/2026 Các phiên bản PyTorch cũ ghi nhận đơn vị này là "GB", trong khi các phiên bản mới hơn dùng "GiB". Cả hai đều biểu thị đơn vị nhị phân: 1,7 × hai phần ba × 16 GiB tương đương chính xác 18,13 GiB. Những thay đổi được ghi nhận Cho đến cuối năm 2025, quy tắc phân bổ diễn ra tương đối nhất quán. macOS cấp cho GPU hai phần ba bộ nhớ trên các dòng Mac có dung lượng tối đa 32 GB và ba phần tư đối với các mức dung lượng cao hơn. Các báo cáo từ cuối năm 2025 trở đi cho thấy tỷ lệ này tăng lên trên các dòng Mac 24 GB, 64 GB và 128 GB. Ba báo cáo trên dòng máy 64 GB có nêu rõ hệ điều hành đều ghi nhận phiên bản macOS 26. Các giá trị trên dòng 8 GB và 16 GB không thay đổi. Thiết bị thử nghiệm 48 GB chạy macOS 26.5.2 trả về kết quả 37,44 GiB, tương đương 78%. Dữ liệu này có hai điểm giới hạn: các nhóm số liệu mới hơn chỉ dựa trên từ hai đến sáu báo cáo cho mỗi loại, đồng thời chưa đủ cơ sở để xác định sự khác biệt xuất phát từ phiên bản macOS hay do kiến trúc vi xử lý. Ý nghĩa của thông báo lỗi Ở tỷ lệ mặc định, ngưỡng giới hạn đều vượt dung lượng bộ nhớ vật lý trên mọi cấu hình trong bảng: 1,7 × hai phần ba tương đương 113% bộ nhớ, và 1,7 × 84% tương đương 143%. Do đó, trước thời điểm tiến trình chạm ngưỡng "max allowed", hệ thống đã phải thực hiện hoán đổi bộ nhớ (swap) trong một khoảng thời gian. Điều này trùng khớp với kết quả đo kiểm thực tế: trên thiết bị thử nghiệm, tiến trình hoán đổi bộ nhớ bắt đầu diễn ra khi mức dung lượng chiếm dụng đạt từ 33,5 đến 36 GB, thấp hơn nhiều so với ngưỡng 63,65 GiB. Khuyến nghị ở cuối thông báo lỗi về việc đặt tỷ lệ về mức 0,0 nhằm mục đích gỡ bỏ giới hạn, cho phép tiến trình tiếp tục hoán đổi bộ nhớ sâu hơn. Để hệ thống ngắt tiến trình và báo lỗi rõ ràng thay vì rơi vào tình trạng hoán đổi bộ nhớ, người dùng có thể thiết lập giới hạn thấp hơn bộ nhớ vật lý, ví dụ đặt tỷ lệ ở mức 1,0 (chính là giá trị working set). Tỷ lệ sàn (low ratio) cũng cần được điều chỉnh đồng thời: trên PyTorch 2.14, nếu chỉ đặt riêng tỷ lệ trần (high ratio) dưới 1,4, hệ thống sẽ báo lỗi "invalid low watermark ratio 1.4". PYTORCH_MPS_HIGH_WATERMARK_RATIO=1.0 PYTORCH_MPS_LOW_WATERMARK_RATIO=0.8 python your_script.py Để kiểm tra tập làm việc của thiết bị: import torch print(torch.mps.recommended_max_memory() / 2**30, "GiB") Các trường hợp số liệu ngoại lệ Khoảng một phần ba số báo cáo ghi nhận các mức giới hạn khác, như 1,70 GiB; 3,40 GiB; 6,77 GiB hoặc 3,00 GiB. Đây không phải là thông số mặc định của máy Mac. Ứng dụng hoặc người dùng đã tự thiết lập tỷ lệ hoặc mức trần riêng: một công cụ xử lý video đã giới hạn MPS ở mức 3 GiB ngay cả trên dòng máy Mac 128 GB. Khoảng 20 báo cáo khác ghi nhận mức 7,93 và chưa thể xác định giá trị này tương ứng với kích thước bộ nhớ Mac cụ thể nào. Trường hợp số liệu thu được thấp hơn nhiều so với bảng thống kê, cần kiểm tra lại các thiết lập của công cụ trước khi kết luận nguyên nhân do máy Mac. Nguồn dữ liệu Mỗi dòng tương ứng với hai báo cáo. Danh sách đầy đủ gồm 167 báo cáo được lưu trong tệp dữ liệu. 8 GB, 9,07: noScribe #84, pytorch #105839 16 GB, 18,13: pinokio #941, AudioLDM2 #20 24 GB, 27,20: pytorch #145374, qwen3-optimizer-study #13 24 GB, 30,19: ml-bokeh #3, ComfyUI #17264 (tỷ lệ 1,0, tương đương 17,76) 32 GB, 36,27: ComfyUI-LivePortraitKJ #82, instructlab #2568 36 GB, 45,90: ACE-Step-1.5 #282 48 GB, 63,65: trellis2-mlx #1, ask-physics #24 64 GB, 81,60: bobo-fun #8, ComfyUI-CogVideoXWrapper #312 64 GB, 88,13: EtherReel-releases #7, ComfyUI #17309 128 GB, 163,20: ComfyUI #9308, lm-evaluation-harness #1835 128 GB, 182,78: ComfyUI #11584, ComfyUI-WanVideoWrapper #1856

Nguồn tin: Dev.to Machine Learning — Tác giả: Rodion Kazennov. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.