Start / Poradniki / Rozwiązywanie problemów / Apple
macOS
Autor: Jakub Rusinowski · Ostatnia aktualizacja: 22 czerwca 2026
Edukator AI i prowadzący warsztaty z wdrażania lokalnych modeli LLM
ggml_metal_init: failed to allocate buffer
Na Macu z M1, M2, M3 albo M4 model albo działa wolno i Monitor aktywności nie pokazuje żadnej pracy GPU, albo kończy się błędem alokacji bufora Metala. Spodziewałeś się, że robotę weźmie na siebie układ graficzny Apple — a on jej nie bierze albo spróbował i zabrakło mu miejsca.
Apple Silicon dzieli jedną pulę pamięci zunifikowanej między CPU i GPU, a llama.cpp i Ollama korzystają z backendu Metal, żeby liczyć na układzie graficznym. Zawodzą dwie rzeczy. Albo Metal w ogóle nie jest aktywny — bo build x86 działa pod Rosettą albo ustawiono zero warstw na GPU — i wtedy wszystko spada na procesor. Albo Metal *jest* aktywny, ale model razem z kontekstem przekracza tę część pamięci zunifikowanej, którą macOS zechce oddać układowi graficznemu, i alokacja bufora się nie udaje. Tak czy inaczej sprowadza się to do rozmiaru: duże modele tłoczą się we wspólnej puli pamięci.
Na Macu twój „VRAM” to część całkowitej pamięci zunifikowanej, a macOS nie odda GPU wszystkiego. Mac z 8 GB wygodnie uciągnie modele 3B–7B w Q4; 16 GB otwiera drogę do większych; 32 GB i więcej radzi sobie z tymi naprawdę dużymi. Dopasowanie modelu do pamięci to właśnie to, co powstrzymuje alokacje Metala przed niepowodzeniem. Sprawdź, co udźwignie twój konkretny Mac, zanim cokolwiek pobierzesz.
Intelowy build llama.cpp działający pod Rosettą nie użyje Metala — policzy wszystko na CPU. Sprawdź, czy twój plik wykonywalny jest natywnym arm64. Jeśli kompilowałeś ze źródeł, zbuduj go z włączonym Metalem.
# should print "arm64", not "x86_64"
file $(which ollama)
uname -mMając build z Metalem, zrzuć na układ graficzny wszystkie warstwy. W llama.cpp służy do tego -ngl ustawione wysoko (albo na -1). Ollama włącza Metal automatycznie, więc jeśli mimo to liczy na CPU, podejrzewaj instalację x86 pod Rosettą.
./llama-cli -m model.gguf -ngl 999Jeśli Metal jest aktywny, a mimo to dostajesz błąd alokacji, przeważa szalę najprawdopodobniej cache KV dla długiego kontekstu. Zmniejsz długość kontekstu i spróbuj ponownie.
Nie. Apple Silicon korzysta z pamięci zunifikowanej, wspólnej dla CPU i GPU. Twój faktyczny „VRAM” to część całego RAM-u, a macOS część rezerwuje dla systemu — Mac z 16 GB nie odda modelowi wszystkich 16 GB.
W trakcie generowania otwórz Monitor aktywności → Okno → Historia GPU (albo uruchom sudo powermetrics --samplers gpu_power). Realna aktywność układu graficznego oznacza, że Metal jest aktywny; płaska linia — że wszystko liczy się na CPU.
Prawie zawsze chodzi o wielkość pamięci zunifikowanej. Mac z 32 albo 64 GB pomieści modele, które po prostu nie wchodzą na maszynę z 8 czy 16 GB. Dobieraj model do swojej pamięci, nie do cudzej.