ब्लॉग पर वापस

Ollama GPU इस्तेमाल नहीं कर रहा? Linux, Windows और WSL में इलाज

16 सितंबर 2026

TL;DR

Model लोड होने के दौरान ollama ps चलाएँ: PROCESSOR column सच बता देता है। 100% GPU का मतलब GPU ठीक है, पढ़ना यहीं रोक सकते हैं। 40%/60% CPU/GPU जैसा split मतलब model VRAM में समाया नहीं — छोटा quant लें। 100% CPU का मतलब Ollama को कोई इस्तेमाल लायक़ GPU नहीं मिला: आमतौर पर पुराना driver, ग़ायब group membership (Linux पर AMD), कहीं pin हुआ OLLAMA_LLM_LIBRARY, या बिना GPU access के बना container। वही वजह ठीक करें जिसका नाम logs लेते हैं; मामला पाँच ही है।

कैसे जाँचें कि Ollama सचमुच GPU इस्तेमाल कर रहा है?

दो कमांड, कोई अंदाज़ाबाज़ी नहीं।

# एक टर्मिनल में: model लोड करें
ollama run llama3.2 "hello"

# दूसरे में: देखें कहाँ चल रहा है
ollama ps
NAME            ID          SIZE     PROCESSOR        UNTIL
llama3.2:latest a80c4de17cd9 3.3 GB   100% GPU         4 minutes from now

PROCESSOR column की तीन अवस्थाएँ हैं:

  • 100% GPU — हर layer GPU पर उतर गई। काम तमाम।
  • 48%/52% CPU/GPU — आधा-अधूरा offload। GPU काम कर रही है, पर model और context का बोझ VRAM में नहीं समाया। नीचे VRAM वाला सेक्शन देखें।
  • 100% CPU — inference CPU पर चल रहा है। या तो GPU पकड़ में नहीं आई या जान-बूझकर बंद की गई है।

फिर server log पढ़ें — startup पर Ollama को असल में क्या हार्डवेयर मिला, वही नाम लेकर बताती है:

journalctl -u ollama --no-pager | grep -i "inference compute"

सेहतमंद NVIDIA machine पर ऐसी लाइन चाहिए:

inference compute id=GPU-xxxx library=CUDA compute=8.9 driver=12.4 name=NVIDIA GeForce RTX 4070

लाइन है ही नहीं, या वह CPU-only fallback का संदेश लिए ख़त्म होती है — समझिए समस्या हाथ लग गई। इस पोस्ट का बाक़ी हिस्सा उन्हीं पाँच वजहों का है, सबसे संभावित पहले।

Ollama “no compatible GPU discovered” क्यों कहता है?

NVIDIA पर आमतौर पर असली मुलज़िम driver होता है, CUDA नहीं। Ollama अपनी CUDA runtime libraries साथ लाता है, इसलिए CUDA toolkit इंस्टॉल होना ज़रूरी नहीं — पर साथ वाला runtime उससे बात करने लायक़ नया driver माँगता है। nvidia-smi चल जाना सबूत नहीं; वह सिर्फ़ यह दिखाता है कि driver मौजूद है, यह नहीं कि वह काफ़ी नया है।

nvidia-smi --query-gpu=driver_version --format=csv,noheader

अगर version सालों पुराना है, तो अपडेट करके reboot करें:

# Debian/Ubuntu परिवार
sudo apt install nvidia-driver-570
# Arch परिवार
sudo pacman -S nvidia

Driver अपडेट के बाद Ollama सर्विस रीस्टार्ट करें ताकि वह devices दोबारा पहचाने — detection startup पर एक बार होती है, हर request पर नहीं:

sudo systemctl restart ollama

अगर log अब आपकी GPU को library=CUDA के साथ छापता है, काम ख़त्म। अगर अब भी अना कानी है, तो देखें कि OLLAMA_LLM_LIBRARY कहीं सेट तो नहीं — “अपडेट के बाद” वाला सेक्शन देखें।

Ollama model का सिर्फ़ कुछ हिस्सा ही GPU पर क्यों चलाता है?

Partial offload गणित है, बग नहीं: model weights और आपके context window के KV cache को मिलकर VRAM में समाना होता है। Q4 पर 7B model लगभग 4–5 GB का होता है; 8K context देंगे तो cache और घुलेगा। 8 GB कार्ड पर कुछ न कुछ CPU पर रहने को मजबूर है, और ollama ps वही split दिखाता है।

खाई बंद करने के तीन रास्ते, सबसे सस्ता पहले:

  1. छोटा quant। Q8 से Q4 पर जाने से weights का आकार आधा हो जाता है, क़ीमत पर हल्की चोट लगती है। Trade-offs का पूरा हिसाब GGUF quantization levels explained में है।
  2. छोटा context। num_ctx cache के आकार पर राज करता है। 8 GB कार्ड पर 32K context मतलब ज़्यादातर layers CPU पर ही रहेंगी।
  3. कम GPU layers। num_gpu विकल्प तय करता है कि कितनी layers offload होंगी। Layer count से नीचे रखने पर split तय है — अगर किसी ने Modelfile या API call में यह सेट किया हो, तो हटा दें।

उलटा जाल भी देख लें: कोई GPU 100% GPU दिखाए पर उम्मीद से धीमी चले, तो हो सकता है वह system RAM पर आगे-पीछे कर रही हो। ollama ps का SIZE अपनी असली VRAM से टकराकर देखें।

Ollama मेरी AMD GPU का इस्तेमाल क्यों नहीं कर रहा?

Linux पर AMD को तीन चीज़ें चाहिए, और तीनों की जाँच हो सकती है:

1. बिल्ड में ROCm समर्थन। आधिकारिक Linux install script ROCm बिल्ड साथ लाता है। जो server ने पकड़ा, वही देख लें:

journalctl -u ollama --no-pager | grep -iE "rocm|inference compute"

2. Group membership। ROCm runtime को /dev/kfd और /dev/dri की पहुँच चाहिए, यानी render और video groups:

sudo usermod -aG render,video $USER
# लॉग आउट कर फिर लॉग इन करें, फिर:
sudo systemctl restart ollama

यह एक छूटा group ही हर फ़ोरम पर “Ollama not using GPU on Ubuntu” वाली सबसे आम पोस्ट की वजह है, और driver दोबारा इंस्टॉल करने पर भी बचा रहता है — क्योंकि समस्या कभी driver थी ही नहीं।

3. समर्थित GPU — या एक override। Unsupported RDNA2 consumer cards (gfx1031, gfx1032) पूरी चलती ROCm stack के साथ भी detection में फेल हो जाती हैं। स्टैंडर्ड workaround है एक compatible target का दावा करना:

sudo systemctl edit ollama
[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"

फिर sudo systemctl restart ollama। यह बिना आधिकारिक समर्थन वाला पर बड़े पैमाने पर इस्तेमाल होने वाला override है; शरारत करे तो हटा दें, आधिकारिक समर्थन की सीमा में वापस पहुँच जाएँगे। अगर autodetection से लड़ने की बजाय backends पर पूरा क़ब्ज़ा चाहिए, तो यही मूल फ़र्क़ llama.cpp vs Ollama में कवर है।

Windows पर AMD समर्थन सँकरा है — इंस्टॉल बिगड़ा हुआ मानने से पहले Ollama की supported-GPU सूची में अपना कार्ड देख लें।

अपडेट के बाद Ollama ने GPU इस्तेमाल करना क्यों छोड़ दिया?

अपडेट तीन में से एक चीज़ बदलते हैं, संभावना के इसी क्रम में:

  1. Pin हुई backend library। OLLAMA_LLM_LIBRARY एक ख़ास runner थोप देता है (cuda_v11, rocm, या कभी cpu भी)। यह debugging के लिए बना है, autodetection चुपचाप टाल देता है, और वजह भुला देने के बहुत बाद तक shell profiles और service files में टिका रहता है। ढूँढें और हटाएँ:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA
  1. Driver runtime से पीछे रह गया। Ollama के अपग्रेड नए CUDA runtime साथ लाते हैं; आपका driver तब तक नहीं हिलता जब तक आप न हिलाएँ। इलाज वही जो ऊपर driver वाले सेक्शन में है।
  2. सर्विस container है और flags ग़ायब हैं। GPU flags के बिना दोबारा बना container CPU-only container है। NVIDIA वाली invocation यह है:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

AMD containers के लिए समतुल्य तरीक़ा है device passthrough और groups जोड़ना:

docker run -d --device=/dev/kfd --device=/dev/dri 
  --group-add video --group-add render 
  -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

ना --gpus=all, ना GPU — Docker की दया की कोई वजह नहीं है।

क्या Ollama WSL2 में चलता है?

हाँ, सही जगह सही driver के साथ: Windows वाला NVIDIA driver इंस्टॉल करें, distro के भीतर कोई Linux driver कभी नहीं — WSL के अंदर का driver CUDA passthrough ठीक करने की बजाय तोड़ देता है। फिर WSL ख़ुद अपडेट करें और passthrough device की मौजूदगी देख लें:

wsl --update   # PowerShell से
ls /dev/dxg    # WSL के अंदर — GPU इस्तेमाल के लिए मौजूद होना ही चाहिए

/dev/dxg मौजूद और Windows driver चालू, दोनों हों तो WSL2 में Ollama native install की तरह GPU पर उतरता है। अगर यह बिचौलिया ही न चाहिए, तो Ollama का Windows build natively चलता है और बिना WSL ही GPU देख लेता है।

क्या Ollama को GPU की ज़रूरत ही है?

नहीं — CPU-only चाल काम के लिहाज़ से एक सी है, बस धीमी, और तेज़ CPU पर छोटे models के लिए पूरी ठीक-ठाक चल भी जाती है। Apple Silicon पर तो सवाल ही घुल जाता है: Metal unified memory अपने आप इस्तेमाल करता है, और एकमात्र सीमा है कि आप model के साथ कितनी RAM बाँटने को तैयार हैं।

पाँच मिनट की चेकलिस्ट

लक्षणसंभावित वजहइलाज
ollama ps में 100% CPU, NVIDIA card मौजूदDriver, bundled CUDA के लिए बहुत पुरानाDriver अपडेट, reboot, सर्विस रीस्टार्ट
100% CPU, Linux पर AMDrender/video group ग़ायबusermod -aG render,video, फिर लॉगिन
100% CPU, unsupported AMD cardROCm, gfx target को ठुकराता हैHSA_OVERRIDE_GFX_VERSION=10.3.0
40%/60% CPU/GPU splitModel + context, VRAM से बड़ेछोटा quant या छोटा num_ctx
कल GPU था, आज CPUPinned OLLAMA_LLM_LIBRARY या पुराना driverEnv var ढूँढकर हटाएँ; driver अपडेट करें
Native runs में GPU, Docker में CPUContainer GPU flags के बिना बना--gpus=all (या AMD devices) से दोबारा बनाएँ

इसी क्रम में जाँचें: हालत के लिए ollama ps, detection की सूची के लिए server logs, फिर यह तालिका। दस में से नौ बार log की लाइन पहले ही बता चुकी होती है कि आप किस पंक्ति में खड़े हैं।

— mrsaynothing

Get the next one by email

One email per post. No spam, no algorithms.

self-hosted · no third parties · one-click unsubscribe

what is this?

Git Revert vs Reset: आपका history कौन बचाता है?

लेख पसंद आए? मैं पेशेवर रूप से ऐसे ही काम करता हूँ। मुझे हायर करें