Ollama liczy na CPU na Windowsie mimo karty NVIDIA
ollama ps pokazuje 100% CPU, a mój RTX stoi bezczynnie
Autor Jakub Rusinowski
Błąd
NAME ID SIZE PROCESSOR UNTIL llama3.1:8b 42182419e950 6.7 GB 100% CPU 4 minutes from now
| Jeśli widzisz | Przyczyną jest | Przejdź do |
|---|---|---|
| Twój sterownik NVIDII jest starszy niż 551.61 | Ollama podaje 551.61 jako minimum na Windowsie i poniżej tej wersji nie użyje GPU | Rozwiązanie 1: zaktualizuj sterownik NVIDII |
ollama ps pokazuje podział, na przykład 40%/60% CPU/GPU | Model jest większy niż twój wolny VRAM, więc część warstw przelała się do RAM-u systemowego | Rozwiązanie 2: dopasuj model do karty — to normalne, nie usterka |
CUDA_VISIBLE_DEVICES jest ustawione w twoim środowisku użytkownika | Błędny albo nieaktualny identyfikator urządzenia ukrywa wszystkie GPU i wymusza liczenie na CPU | Rozwiązanie 3: usuń CUDA_VISIBLE_DEVICES |
Log debugowania nie wymienia żadnej biblioteki CUDA, tylko wpisy cpu | Ollama nie znalazła przy starcie żadnego użytecznego środowiska CUDA | Rozwiązanie 4: przeczytaj w logu linie o wykrywaniu |
| Twoja karta to GTX 745, GT 730 albo podobny układ sprzed Maxwella | Compute capability poniżej 5.0 nie jest obsługiwane i nigdy nie będzie | Rozwiązanie 5: tej karty nie da się zmusić do pracy |
Kiedy się pojawia
Nie ma żadnego błędu i właśnie to czyni ten przypadek trudnym. Ollama startuje, model się ładuje, generowanie działa — tylko dziesięć do trzydziestu razy wolniej, niż powinno, a Menedżer zadań pokazuje kartę graficzną na jakimś zerze procent, podczas gdy wszystkie rdzenie procesora idą na maksa. Nic nie zawiodło, więc nic nie zostało zgłoszone.
- Właśnie zainstalowałeś Ollamę na maszynie, której sterownik GPU przyszedł z obrazem od producenta i nigdy nie był aktualizowany.
- Działało na GPU i przestało, gdy zmieniłeś model, kwantyzację albo długość kontekstu.
- Poszedłeś za poradnikiem, który kazał wyeksportować
CUDA_VISIBLE_DEVICES, i nigdy tego nie cofnąłeś. - Masz laptopa z kartą zintegrowaną i dedykowaną naraz.
- Masz sprawną kartę NVIDIA, z której benchmarki w grach korzystają bez problemu, więc wykluczyłeś GPU — niesłusznie.
Co się właściwie dzieje
Ollama decyduje o rozmieszczeniu każdej warstwy modelu raz, przy ładowaniu, na podstawie tego, co wykryła o twoim sprzęcie przy starcie. Jeśli nie znajdzie użytecznego środowiska CUDA, po cichu przechodzi na liczenie na CPU — bo wnioskowanie na CPU jest poprawną odpowiedzią: wolną, ale poprawną. Na Windowsie to wykrywanie zawodzi z trzech powodów. Twój sterownik może być starszy niż wymagany przez Ollamę: udokumentowane minimum to 551.61 na Windowsie, a dla kart o compute capability między 5.0 a 6.2 — sterownik 570 lub nowszy. Karta może być po prostu za stara — twardym minimum jest compute capability 5.0. Albo zmienna środowiskowa ukrywa GPU przed procesem, zanim ten w ogóle spojrzy. Osobna sprawa: jeśli model razem z cache'em KV jest większy niż wolny VRAM, Ollama umieszcza na karcie tyle, ile się mieści, a resztę na CPU — i wtedy widzisz podział, a nie 100% CPU.
Jak to naprawić
- 1
Zaktualizuj sterownik NVIDII do 551.61 lub nowszego
To pierwsza rzecz do sprawdzenia i najczęstsza przyczyna. Wymagania Ollamy dla Windowsa wskazują 551.61 jako minimum, a karty o compute capability 5.0–6.2 (układy z epoki Maxwella i Pascala, na przykład GTX 1060) potrzebują 570 lub nowszego. Pobierz sterownik ze strony NVIDII albo z GeForce Experience, a nie z Windows Update, który mocno się opóźnia. Zweryfikowane z dokumentacją Ollamy dotyczącą GPU i Windowsa, 1 września 2026.
# PowerShell — what driver do I actually have? nvidia-smi --query-gpu=name,driver_version --format=csvCzy zadziałało?Po instalacji sterownika zrestartuj Ollamę z zasobnika systemowego, załaduj model i uruchom to polecenie. Kolumna Processor powinna teraz pokazywać100% GPU.ollama run llama3.1:8b "hi" ollama ps - 2
Sprawdź, czy model naprawdę mieści się w twoim VRAM-ieNajczęstsze rozwiązanie
Jeśli
ollama pspokazuje podział w rodzaju35%/65% CPU/GPU, a nie płaskie100% CPU, to ze sterownikiem wszystko jest w porządku, a model jest po prostu za duży na wolny VRAM. To normalne zachowanie, nie usterka — Ollama umieściła na karcie tyle, ile mogła. Każda warstwa, która przelała się do RAM-u systemowego, przy każdym tokenie przekracza magistralę PCIe, dlatego dziesięcioprocentowe przelanie potrafi kosztować znacznie więcej niż dziesięć procent prędkości. Trwałym rozwiązaniem jest mniejszy model, niższa kwantyzacja albo krótszy kontekst — a ten rachunek warto zrobić, zanim pobierzesz kolejny plik o wadze 20 GB.Czy zadziałało?Po zmianie modelu albo kontekstuollama pspowinno pokazać100% GPU. Jeśli dalej dzieli, wciąż przekraczasz budżet.ollama psSprawdź, co pasuje do Twojego sprzętuustal, która kwantyzacja twojego modelu zmieści się w wolnym VRAM-ie twojej kartyOtwórz kalkulator VRAM → - 3
Usuń nieaktualne CUDA_VISIBLE_DEVICES
CUDA_VISIBLE_DEVICESwybiera, które karty widzi proces. Ustaw ją na nieistniejący identyfikator — klasykiem jest-1— a proces nie zobaczy żadnego GPU i po cichu policzy na CPU. Ludzie ustawiają to raz przy debugowaniu maszyny z kilkoma kartami i zostawiają w środowisku użytkownika na miesiące. Sprawdź tę zmienną i usuń ją w Ustawienia → System → Informacje → Zaawansowane ustawienia systemu → Zmienne środowiskowe, a nie tylko wyczyść w jednej powłoce — usługa Ollamy czyta środowisko użytkownika, nie twojego terminala.# PowerShell — is it set at all? $env:CUDA_VISIBLE_DEVICES [Environment]::GetEnvironmentVariable("CUDA_VISIBLE_DEVICES", "User") # Remove it for your user account (the value the Ollama app will read) [Environment]::SetEnvironmentVariable("CUDA_VISIBLE_DEVICES", $null, "User")Czy zadziałało?Oba polecenia nie powinny nic wypisać. Zamknij Ollamę z zasobnika i otwórz ją ponownie — aplikacja odczytuje środowisko wyłącznie przy starcie.[Environment]::GetEnvironmentVariable("CUDA_VISIBLE_DEVICES", "User") - 4
Przeczytaj w logu debugowania linie o wykrywaniu
Kiedy pierwsze trzy rozwiązania nie wyjaśniły sprawy, wyjaśni ją log. Ollama pisze do
%LOCALAPPDATA%\Ollama— plikserver.logoraz rotowaneserver-#.log. Przy włączonym logowaniu debugowania wypisuje znalezione biblioteki w linii wyglądającej tak:Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]. Jeśli na tej liście nie ma żadnego wpisucuda_*, Ollama nigdy nie znalazła środowiska CUDA i cała reszta jest tego konsekwencją. Najpierw zamknij aplikację z zasobnika — uruchomienie polecenia debugowania przy działającej aplikacji daje drugą instancję walczącą o ten sam port.# PowerShell — quit Ollama from the system tray FIRST, then: $env:OLLAMA_DEBUG="1" & "ollama app.exe" # In another PowerShell window, watch the log: Get-Content "$env:LOCALAPPDATA\Ollama\server.log" -Tail 50 -WaitCzy zadziałało?Poszukaj w wyjściu listy bibliotek. Wpiscuda_v12albocuda_v11oznacza, że CUDA została znaleziona; lista zawierająca wyłącznie wpisycpu*potwierdza, że nie.Select-String -Path "$env:LOCALAPPDATA\Ollama\server.log" -Pattern "LLM libraries" - 5
Sprawdź, czy karta w ogóle może zadziałać — dolną granicą jest compute capability 5.0
Ollama obsługuje karty NVIDIA o compute capability 5.0 i wyższym. Poniżej nie ma żadnego rozwiązania ani sterownika, który by pomógł: układy Kepler i starsze (seria GTX 700 i większość kart z oznaczeniem GT) nie policzą w Ollamie na GPU, kropka. Lepiej wiedzieć to po pięciu minutach niż po trzech reinstalacjach sterownika. Jeśli twoja karta jest poniżej tej granicy, mały model na CPU to naprawdę używalna opcja — model 1–3B w Q4 do czatu na nowoczesnym procesorze sprawdza się dobrze — i jest to uczciwa odpowiedź, a nie obejście.
# PowerShell — name the card, then look its compute capability up on # NVIDIA's CUDA GPUs page nvidia-smi --query-gpu=name --format=csv,noheader - 6
Przy karcie AMD sprawdzaj backend Vulkan, a nie CUDA
Nic z powyższego nie dotyczy Radeonów. Ollama dostarcza backend Vulkan włączony domyślnie na Windowsie i Linuksie, gdy backend jest zainstalowany, a na Windowsie większość sterowników AMD niesie obsługę Vulkana w pakiecie. To właśnie ta ścieżka zwykle działa na konsumenckich Radeonach — częściej niż ROCm. Wyłączają ją
OLLAMA_VULKAN=0alboGGML_VK_VISIBLE_DEVICES=-1, więc warto sprawdzić, czy żadna nie jest ustawiona; z koleiGGML_VK_VISIBLE_DEVICES=1wybiera kartę dedykowaną na maszynie, która ma też zintegrowaną.# PowerShell — confirm neither Vulkan kill-switch is set for your user [Environment]::GetEnvironmentVariable("OLLAMA_VULKAN", "User") [Environment]::GetEnvironmentVariable("GGML_VK_VISIBLE_DEVICES", "User")
Jeśli nic z tego nie pomogło
Jeśli sterownik jest aktualny, żadna zmienna urządzenia nie jest ustawiona, model się mieści, a log wciąż nie pokazuje biblioteki CUDA, problemem jest samo środowisko CUDA, a nie sposób, w jaki Ollama z niego korzysta. Dwie strony zawężają to dalej, a trzecia jest tą, którą warto przeczytać na laptopie.
- „No CUDA-capable device is detected” — jak to naprawić
- Twój laptop liczy model na karcie zintegrowanej
- Współdzielona pamięć GPU na Windowsie — dlaczego pełznie, zamiast się wysypać
- Linia
Dynamic LLM libraries [...]z%LOCALAPPDATA%\Ollama\server.log - Wynik
ollama -voraznvidia-smi --query-gpu=name,driver_version --format=csv - Dokładny wiersz z
ollama ps, razem z kolumną Processor - Wersja Windowsa (
winver) i informacja, czy pracujesz w WSL2
Powiązane
Najczęściej zadawane pytania
Dlaczego Ollama po prostu nie powie, że zeszła na CPU?
Bo wnioskowanie na CPU to wspierany tryb, a nie awaria. Ollama rozmieszcza warstwy tam, gdzie się mieszczą, i działa; nie ma czego zgłaszać. ollama ps jest przewidzianym sposobem sprawdzenia wyniku — kolumna Processor pokazuje 100% GPU, 100% CPU albo podział między nimi.
Czy podział w rodzaju 30%/70% CPU/GPU oznacza usterkę?
Nie. Oznacza, że model był większy niż twój wolny VRAM, więc Ollama zostawiła na karcie tyle, ile się zmieściło, a resztę umieściła w RAM-ie systemowym. Działa zgodnie z projektem. Jest przy tym znacznie wolniejszy niż pełne załadowanie na GPU, więc potraktuj to jako sygnał, żeby zejść o poziom kwantyzacji albo skrócić kontekst.
Której wersji sterownika NVIDII wymaga Ollama na Windowsie?
Ollama podaje 551.61 lub nowszy dla Windowsa. Karty o compute capability między 5.0 a 6.2 potrzebują sterownika 570 lub nowszego. Ogólne minimum na wszystkich platformach to 550. Cokolwiek poniżej właściwej granicy oznacza liczenie na CPU, niezależnie od tego, jak dobra jest karta.
Zaktualizowałem sterownik i dalej liczy na CPU. Co teraz?
Zamknij Ollamę z zasobnika systemowego i otwórz ją ponownie — aplikacja odczytuje środowisko i przeprowadza wykrywanie GPU wyłącznie przy starcie, więc sterownik zainstalowany przy działającej aplikacji nie zostanie zauważony. Jeśli po czystym restarcie nadal jest na CPU, sprawdź CUDA_VISIBLE_DEVICES, a potem log debugowania.
Czy uruchomienie Ollamy w WSL2 coś tu zmienia?
Tak, i to sporo. WSL2 ma własną warstwę sterowników i nie korzysta bezpośrednio z windowsowej ścieżki CUDA. Jeśli nvidia-smi działa w PowerShellu, ale nie w twojej dystrybucji, właściwa jest strona o WSL, a nie ta.