Działa, ale źleWindowsOstatnia aktualizacja 1 września 2026

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
Który to przypadek?
Jeśli widziszPrzyczyną jestPrzejdź do
Twój sterownik NVIDII jest starszy niż 551.61Ollama podaje 551.61 jako minimum na Windowsie i poniżej tej wersji nie użyje GPURozwiązanie 1: zaktualizuj sterownik NVIDII
ollama ps pokazuje podział, na przykład 40%/60% CPU/GPUModel jest większy niż twój wolny VRAM, więc część warstw przelała się do RAM-u systemowegoRozwiązanie 2: dopasuj model do karty — to normalne, nie usterka
CUDA_VISIBLE_DEVICES jest ustawione w twoim środowisku użytkownikaBłędny albo nieaktualny identyfikator urządzenia ukrywa wszystkie GPU i wymusza liczenie na CPURozwiązanie 3: usuń CUDA_VISIBLE_DEVICES
Log debugowania nie wymienia żadnej biblioteki CUDA, tylko wpisy cpuOllama nie znalazła przy starcie żadnego użytecznego środowiska CUDARozwiązanie 4: przeczytaj w logu linie o wykrywaniu
Twoja karta to GTX 745, GT 730 albo podobny układ sprzed MaxwellaCompute capability poniżej 5.0 nie jest obsługiwane i nigdy nie będzieRozwią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. 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
    # PowerShell — what driver do I actually have?
    nvidia-smi --query-gpu=name,driver_version --format=csv
    Czy 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.
    PowerShell
    ollama run llama3.1:8b "hi"
    ollama ps
  2. 2

    Sprawdź, czy model naprawdę mieści się w twoim VRAM-ieNajczęstsze rozwiązanie

    Jeśli ollama ps pokazuje podział w rodzaju 35%/65% CPU/GPU, a nie płaskie 100% 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 kontekstu ollama ps powinno pokazać 100% GPU. Jeśli dalej dzieli, wciąż przekraczasz budżet.
    PowerShell
    ollama ps
    Sprawdź, co pasuje do Twojego sprzętuustal, która kwantyzacja twojego modelu zmieści się w wolnym VRAM-ie twojej kartyOtwórz kalkulator VRAM →
  3. 3

    Usuń nieaktualne CUDA_VISIBLE_DEVICES

    CUDA_VISIBLE_DEVICES wybiera, 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
    # 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.
    PowerShell
    [Environment]::GetEnvironmentVariable("CUDA_VISIBLE_DEVICES", "User")
  4. 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 — plik server.log oraz rotowane server-#.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 wpisu cuda_*, 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
    # 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 -Wait
    Czy zadziałało?Poszukaj w wyjściu listy bibliotek. Wpis cuda_v12 albo cuda_v11 oznacza, że CUDA została znaleziona; lista zawierająca wyłącznie wpisy cpu* potwierdza, że nie.
    PowerShell
    Select-String -Path "$env:LOCALAPPDATA\Ollama\server.log" -Pattern "LLM libraries"
  5. 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
    # 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. 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=0 albo GGML_VK_VISIBLE_DEVICES=-1, więc warto sprawdzić, czy żadna nie jest ustawiona; z kolei GGML_VK_VISIBLE_DEVICES=1 wybiera kartę dedykowaną na maszynie, która ma też zintegrowaną.

    PowerShell
    # 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.

Dołącz to, zgłaszając problem
  • Linia Dynamic LLM libraries [...] z %LOCALAPPDATA%\Ollama\server.log
  • Wynik ollama -v oraz nvidia-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.