ব্লগে ফিরুন

Ollama GPU ব্যবহার করছে না? Linux, Windows ও WSL-এ সমাধান

১৬ সেপ্টেম্বর, ২০২৬

TL;DR

মডেল লোড থাকা অবস্থায় ollama ps চালান: PROCESSOR কলামই সত্য বলে। 100% GPU মানে GPU ঠিকই আছে, পড়া এখানেই শেষ। 40%/60% CPU/GPU-র মতো ভাগ মানে মডেল VRAM-এ ধরেনি — ছোট quant ব্যবহার করুন। 100% CPU মানে Ollama কোনো ব্যবহারযোগ্য GPU পায়নি: সাধারণত পুরনো driver, গ্রুপ মেম্বারশিপ নেই (Linux-এ AMD), pin করা OLLAMA_LLM_LIBRARY, বা GPU access ছাড়া চালু হওয়া কনটেইনার। লগ যে কারণের নাম দেয়, সেটাই ঠিক করুন; মোটামুটি পাঁচটিই আছে।

Ollama আসলেই GPU ব্যবহার করছে কি না যাচাই করবেন কীভাবে?

দুটি কমান্ড, কোনো অনুমান নেই।

# এক টার্মিনালে: একটা মডেল লোড করুন
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 কলামের তিনটি অবস্থা:

  • 100% GPU — সব লেয়ার offload হয়েছে। কাজ শেষ।
  • 48%/52% CPU/GPU — আংশিক offload। GPU কাজ করছে, কিন্তু মডেল প্লাস context VRAM-এ ধরেনি। নিচের VRAM সেকশন দেখুন।
  • 100% CPU — inference CPU-তে। GPU হয় ধরা পড়েনি, নয়তো ইচ্ছাকৃতভাবে নিষ্ক্রিয় করা।

তারপর server log পড়ুন — startup-এ Ollama আসলে কোন হার্ডওয়্যার পেয়েছে, সেটাই সেখানে লেখা:

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

সুস্থ NVIDIA মেশিনে এমন একটা লাইন চাই:

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 library নিয়েই আসে, তাই CUDA toolkit ইনস্টল থাকা জরুরি নয় — কিন্তু bundled runtime-এর সঙ্গে কথা বলতে যথেষ্ট নতুন driver লাগে। nvidia-smi চলছে মানেই প্রমাণ নয়; সে শুধু বোঝায় driver আছে, যথেষ্ট নতুন কি না বোঝায় না।

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

ভার্সন বছরের পুরনো হলে আপডেট করে reboot দিন:

# Debian/Ubuntu পরিবার
sudo apt install nvidia-driver-570
# Arch পরিবার
sudo pacman -S nvidia

driver আপডেটের পর Ollama service restart করুন যাতে সে ডিভাইস আবার শনাক্ত করে — শনাক্তকরণ ঘটে একবারই, startup-এ, প্রতি request-এ নয়:

sudo systemctl restart ollama

লগ এখন library=CUDA সহ আপনার GPU দেখালে কাজ শেষ। এখনো অস্বীকার করলে দেখুন OLLAMA_LLM_LIBRARY কোথাও সেট নেই তো — “আপডেটের পরে” সেকশনটা দেখুন।

Ollama মডেলের কেবল অংশের জন্য GPU ব্যবহার করে কেন?

আংশিক offload হিসাবের ব্যাপার, bug নয়: মডেলের weight প্লাস context window-এর KV cache মিলে VRAM-এ জায়গা করে নিতে হবে। Q4-এ 7B মডেল মোটামুটি 4–5 GB; সঙ্গে 8K context দিলে cache আরও জোগাড় করে। 8 GB কার্ডে কিছু একটা CPU-তেই থাকবে, আর ollama ps ভাগটা দেখায়।

ঘাটতি মেটানোর তিন পথ, সস্তাটা আগে:

  1. ছোট quant। Q8 থেকে Q4-এ নামলে weight-এর মাপ অর্ধেক, quality-র খরচ সামান্য। লেনদেনটা গুছিয়ে আছে GGUF quantization levels explained-এ।
  2. ছোট context। cache-এর মাপ মূলত num_ctx-এর হাতে। 8 GB কার্ডে 32K context মানে বেশিরভাগ লেয়ার CPU-তে।
  3. কম GPU লেয়ার। num_gpu অপশন সর্বোচ্চ কয়টি লেয়ার offload হবে তার সীমা টানে। লেয়ার সংখ্যার নিচে সেট করলে ভাগ হওয়া নিশ্চিত — Modelfile বা API call-এ কেউ সেট করে থাকলে বাদ দিন।

উল্টো ফাঁদটাও দেখুন: 100% GPU দেখানো GPU প্রত্যাশার চেয়ে ধীর চললে সে হয়তো system RAM-এ swap করছে। ollama ps-এর SIZE আপনার আসল VRAM-এর সঙ্গে মিলিয়ে দেখুন।

Ollama আমার AMD GPU ব্যবহার করছে না কেন?

Linux-এ AMD-র তিনটি জিনিস লাগে, আর তিনটিই যাচাইযোগ্য:

1. বিল্ডে ROCm সাপোর্ট। অফিসিয়াল Linux ইনস্টল স্ক্রিপ্ট ROCm বিল্ডসহ আসে। server কী শনাক্ত করেছে নিশ্চিত করুন:

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

2. গ্রুপ মেম্বারশিপ। ROCm runtime-এর /dev/kfd/dev/dri-তে প্রবেশ দরকার, অর্থাৎ rendervideo গ্রুপ:

sudo usermod -aG render,video $USER
# লগ আউট করে আবার ঢুকুন, তারপর:
sudo systemctl restart ollama

এই একটা গিরিয়ে যাওয়া গ্রুপই প্রতিটি ফোরামের সবচেয়ে সাধারণ “Ollama not using GPU on Ubuntu” পোস্ট, আর driver রিইনস্টল করেও রয়ে যায়, কারণ সমস্যা কখনোই driver ছিল না।

3. সমর্থিত GPU — নয়তো একটা override। অসমর্থিত RDNA2 কনজিউমার কার্ড (gfx1031, gfx1032) শনাক্তকরণে ব্যর্থ হয়, ROCm stack সুস্থ থাকলেও। প্রচলিত workaround হলো সামঞ্জস্যপূর্ণ টার্গেটের ছদ্মবেশ:

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

তারপর sudo systemctl restart ollama। এটা অসমর্থিত কিন্তু ব্যাপকভাবে ব্যবহৃত একটা override; গোলমাল করলে বাদ দিন, আবার অফিসিয়াল সমর্থনের জায়গায় ফিরে যাবেন। autodetection-এর সঙ্গে মারামারির বদলে backend-এ পূর্ণ নিয়ন্ত্রণ চাইলে, মূল পার্থক্যটা আছে llama.cpp vs Ollama-তে।

Windows-এ AMD সাপোর্ট সরু — ইনস্টল ভাঙা সিদ্ধান্তে পৌঁছানোর আগে Ollama-র supported-GPU তালিকায় আপনার কার্ড মিলিয়ে নিন।

আপডেটের পর Ollama GPU ব্যবহার বন্ধ করল কেন?

আপডেট তিনটির একটি বদলে দেয়, সম্ভাবনার এই ক্রমে:

  1. Pin করা backend library। OLLAMA_LLM_LIBRARY নির্দিষ্ট একটা runner চাপিয়ে দেয় (cuda_v11, rocm, এমনকি cpu)। এটা ডিবাগিংয়ের জন্য, নিঃশব্দে autodetection-কে ওরিয়ে বসে, আর কারণ ভুলে যাওয়ার অনেক পরেও shell profile আর service ফাইলে বসে থাকে। খুঁজে বের করে বাদ দিন:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA
  1. Driver runtime-এর পেছনে পড়ে গেছে। Ollama আপগ্রেড নতুন CUDA runtime নিয়ে আসে; আপনার driver নড়ে না যতক্ষণ না আপনি নড়ান। সমাধান ওপরের driver সেকশনেরটাই।
  2. Service-টা কনটেইনার আর flag হারিয়ে গেছে। GPU flag ছাড়া নতুন করে বানানো কনটেইনার CPU-only কনটেইনার। NVIDIA-র জন্য invocation:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

AMD কনটেইনারে সমতুল্যটা হলো device passthrough প্লাস গ্রুপ যোগ:

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 ডিভাইসটা আছে কি না নিশ্চিত হোন:

wsl --update   # PowerShell থেকে
ls /dev/dxg    # WSL-এর ভেতরে — GPU ব্যবহারে থাকতেই হবে

/dev/dxg থাকলে আর হালনাগাদ Windows driver থাকলে WSL2-এর Ollama নেটিভ ইনস্টলের মতোই GPU-তে offload করে। মাঝের ধাপটাই বাদ দিতে চাইলে, Ollama-র Windows বিল্ড নেটিভ চলে আর WSL ছাড়াই GPU দেখে।

Ollama-র কি আদৌ GPU দরকার?

না — CPU-only চলন কার্যত একই, শুধু ধীর, আর দ্রুত CPU-তে ছোট মডেলের জন্য সম্পূর্ণ ব্যবহারযোগ্য। Apple Silicon-এ প্রশ্নটাই মিলিয়ে যায়: Metal স্বয়ংক্রিয়ভাবে unified memory ব্যবহার করে, একমাত্র সীমা হলো মডেলকে কতটুকু RAM ভাগ করে দিতে রাজি।

পাঁচ মিনিটের চেকলিস্ট

লক্ষণসম্ভাব্য কারণসমাধান
ollama ps-এ 100% CPU, NVIDIA কার্ড আছেBundled CUDA-র জন্য driver বেশি পুরনোDriver আপডেট, reboot, service restart
100% CPU, Linux-এ AMDrender/video গ্রুপ নেইusermod -aG render,video, আবার লগইন
100% CPU, অসমর্থিত AMD কার্ডROCm gfx টার্গেট প্রত্যাখ্যান করেHSA_OVERRIDE_GFX_VERSION=10.3.0
40%/60% CPU/GPU ভাগমডেল + context VRAM ছাড়িয়ে যায়ছোট quant বা ছোট num_ctx
গতকাল GPU, আজ CPUPin করা OLLAMA_LLM_LIBRARY বা পুরনো driverEnv var খুঁজে বাদ দিন; driver আপডেট
নেটিভ চলনে GPU, Docker-এ CPUকনটেইনার GPU flag ছাড়া চালু--gpus=all (বা AMD ডিভাইস) দিয়ে নতুন করে বানান

এই ক্রমে দেখুন: অবস্থার জন্য ollama ps, শনাক্তকরণ তালিকার জন্য server log, তারপর টেবিল। দশবারের নয়বার লগের লাইনটাই আগেই বলে দিয়েছে আপনি কোন সারিতে দাঁড়িয়ে।

— mrsaynothing

— mrsaynothing

AI, Linux ও self-hosting নিয়ে ফিল্ড নোটস।

পোস্টটি নিয়ে dev.to-তে আলোচনা করুন dev.to ↗

পরের হাউ-টু ইমেইলে পান

প্রতি পোস্টে একটি ইমেইল। সমাধান করুন, এগিয়ে যান।

self-hosted · কোনো তৃতীয় পক্ষ নেই · এক ক্লিকে আনসাবস্ক্রাইব

এটা কী?

Git Revert vs Reset: কোনটি আপনার history বাঁচায়?

লেখাগুলো ভালো লাগছে? এমন জিনিস বানানোই আমার পেশা। আমাকে নিন