ব্লগে ফিরুন

কেউ RAM নিয়ে কথা বলে না। লোকাল LLM ব্যর্থতার মূল কারণ RAM।

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

লোকাল LLM নিয়ে যেকোনো থ্রেডে ঢুকুন, ঝগড়া চলবে GPU নিয়ে। VRAM বেঞ্চমার্ক, 24 GB-এর কার্ড, CUDA বনাম ROCm, 3060 কি এখনও জনতার কার্ড। অথচ যে সংখ্যা সত্যিই ঠিক করে আপনার মডেল চলবে কি না, সে বসে আছে অন্য স্লটে — না কোনো বেঞ্চমার্ক, না কোনো মার্কেটিং: মেশিনে কতটুকু RAM আছে।

VRAM স্বপ্ন বিক্রি করে। RAM ঠিক করে মডেল আদৌ চলবে কি না — আর চললে কতটুকু কনটেক্সট বেঁচে থাকবে।

এই পোস্ট লেখার সময় সামনের মেশিনেই যাচাই করলাম: Ryzen ডেস্কটপ, 32 GB RAM, 12 GB VRAM-এর GeForce RTX 3060। llama3.1:8b নামালাম — ডাউনলোড পেজ বলছে 4.9 GB। দেখুন সে আসলে কতটুকু সংরক্ষণ করল:

টেস্ট মেশিনের টার্মিনাল ক্যাপচার: ollama ps দেখাচ্ছে llama3.1:8b 32,000-টোকেন কনটেক্সটে 100% GPU-তে 7.0 GB সংরক্ষণ করেছে, nvidia-smi দেখাচ্ছে 12,288 MiB-এর মধ্যে 7,963 MiB ব্যবহৃত, আর free -h দেখাচ্ছে 31 GiB RAM

পুরো যুক্তিটা এই এক স্ক্রিনে। «4.9 GB-এর মডেল» প্রথম প্রম্পটের উত্তর দেওয়ার আগেই 7.0 GB সংরক্ষণ করে ফেলল — 43%-এর একটা কনটেক্সট কর — আর VRAM-এর 12,288 MiB-এর মধ্যে 7,963 MiB দখল করে রাখল। ওয়েট কখনোই বাজেট ছিল না। বাজেট ছিল কনটেক্সট।

বাড়তি গিগাবাইটগুলো আসে কোথা থেকে

llama.cpp-এর মেমরি নোট সেই হিসাব ব্যাখ্যা করে, যেটা ডাউনলোড পেজ বাদ দেয়: মোট মেমরি = মডেলের ওয়েট + KV ক্যাশ + কম্পিউট বাফার। শুধু প্রথম পদটাই ধ্রুবক। KV ক্যাশ কনটেক্সটের দৈর্ঘ্যের সঙ্গে রৈখিকভাবে বাড়ে, কম্পিউট বাফার ব্যাচের সঙ্গে। Ollama তো llama.cpp-কেই মুড়ে রাখে, তাই একই সূত্র খাটে — এ কারণেই 32,000-টোকেন উইন্ডোতে ollama ps 4.9 GB-এর ট্যাগের জন্য 7.0 GB দেখাল, আর পুরোটাই GPU-তে থেকে গেল।

কোয়ান্টাইজড মডেল কোনো সমঝোতা নয়। এটা স্বীকার করা যে মেমরিই শুরু থেকে আসল বাজেট ছিল।

GGUF কোয়ান্টাইজেশন সিঁড়ি কেন আছে, এটাও তার কারণ। Q4 কোনো ধর্ম নয়; Q4 হলো মেমরির হিসাবটাকে মানুষের হাতের নাগালের হার্ডওয়্যারের ভেতরে নামিয়ে আনার উপায়। আর তাই দুটো «অভিন্ন» 8B সেটআপ কখনো এক রকম আচরণ করে না: একই মডেল, আলাদা কনটেক্সট দৈর্ঘ্য, আলাদা মেশিন।

কেউ কেনার আগে যে টেবিলটা পূরণ করে না

তিন শ্রেণির মডেল, দুই ধরনের মেমরি, 12 GB-এর কার্ড আর 32 GB RAM — হাজারো ডেভেলপারের কাছে যে কনফিগারেশন সত্যিই আছে:

মডেল শ্রেণি (Q4)ডাউনলোডলোড + 32k ctx12 GB VRAM-এ32 GB RAM-এ
7–8B (llama3.1:8b)4.9 GB7.0 GB (মাপা)100% GPU, ~8 GiB ব্যবহৃতটেরই পাওয়া যায় না
13–14B (qwen2.5:14b)9.0 GB~12 GBঅফলোড শুরুনাগালের মধ্যে
27–32B (gemma3:27b)17 GB~20 GB বা বেশিCPU ওয়েট টেনে নেয়চলার একমাত্র কারণ

শেষের দুই সারি আবার পড়ুন। শুধু VRAM-এ, বাস্তব কনটেক্সটে 14B মানেই ভাগ করা অফলোড, আর 27B অসম্ভব। 32 GB RAM-এ দুটোই শুধু ধীর। এই পার্থক্য — অসম্ভব আর ধীর হওয়ার মাঝের পার্থক্য — ই VRAM আর RAM-এর পুরো ব্যবহারিক পার্থক্য। VRAM-এ ধরলে দ্রুত। RAM-এ ধরলে চলে। কোথাও না ধরলে আপনি NVMe-তে সোয়াপ করছেন আর সময় অর্থ হারায়।

অফলোড যায় PCIe দিয়ে, আর Ollama-র FAQ খরচটা সোজাসুজি বলে দেয়: GPU-তে না ধরা লেয়ার CPU-তে চলে, আর GPU-র ভাগ কমতেই থ্রুপুট ভেঙে পড়ে। কেউ এই ট্রেড-অফ জেনেশুনে বেছে নেয় না। ওটা নীরবে আসে, লেয়ারের পর লেয়ার, আর উপসর্গ শুধু এই — «লোকাল মডেল মাত্রাছাড়া প্রশংসিত হচ্ছে»।

সৎ হিসাবখাতা

এই লেখা চলাকালে কী ভাঙল বা অবাক করল, ক্রমানুসারে:

  1. 43%-এর সংখ্যাটাই। ভেবেছিলাম 8B মডেল «মোটামুটি ফাইলের আকারটুকু» জায়গা নেবে। 4.9 GB ডাউনলোডের বিপরীতে 7.0 GB সংরক্ষণ করল। আমাকে অবাক করলে হুবহু একই অবাক হবেন যারা ps-এর বদলে স্পেকশিট পড়েন।
  2. স্ক্রিনশট সেশন। প্রথম ক্যাপচার ভুল উইন্ডো ধরেছিল। দ্বিতীয়টা সফল — সেটাই ওপরেরটা। প্রমাণ মানে কর্মপ্রবাহ, কোনো ভাব নয়; আর pull → ক্যাপচার → ollama rm চক্র ডিস্ককে সৎ রাখে।
  3. যা ভাঙেনি: GPU কখনোই উপচে পড়েনি। 12 GB-তে 32k কনটেক্সটের 8B সত্যিই আরামদায়ক। কার্ড ভালো আছে। ভুলভাল ক্যালিব্রেশন আছে কার্ডকে ঘিরে আলোচনায়।

এর মানে এই নয় যে GPU অপ্রাসঙ্গিক — ক্যাপচারের 100% GPU লাইনটাই কারণ জেনারেশন ঝড়ের গতিতে লেগেছিল। মানে শুধু এই: GPU দ্বিতীয় প্রশ্ন। Ollama না llama.cpp বাছাইটা করতে হয় পরে, যখন জেনে ফেলেছেন কী ধরে — আগে নয়।

মনে রাখার মতো নিয়ম

দরকারি RAM = মডেল ফাইল + আপনার বাস্তব কনটেক্সটের জন্য KV ক্যাশ + কম্পিউটার হয়ে থাকার 4 GB। Q4-এ 7–8B-র জন্য 16 GB আরামদায়ক। 14B–32B-র ক্ষেত্রে 32 GB বিলাসিতা থেকে মূল প্রয়োজন হয়ে যায়। VRAM কিনুন আপনার ব্যবহৃত কনটেক্সটে চাওয়া গতির জন্য; RAM কিনুন এমন সবকিছুর জন্য যা আপনি কখনো না কখনো লোড করবেন।

ollama ps-এ একবার চোখ রাখুন, স্পেকশিটের ধর্ম নিঃশব্দে শেষ।

তাহলে, দুটো প্রশ্ন। পরের মেশিন জোড়ার সময় আপনি VRAM কেনেন সেই বেঞ্চমার্কের জন্য যা পোস্ট করবেন — নাকি RAM কেনেন সেই মডেলের জন্য যা সত্যিই চালাবেন? আর সত্যি কথা: রাত দুটোয় নামানো মডেলের ক’টা নাস্তার আগেই মুছে ফেলেছেন? আমি আজ মুছেছি, লেখার মাঝপথে। কমেন্টে জানান আমি একা নই — আর আপনার মেশিন RAM/VRAM রেখার কোন পাশে দাঁড়িয়ে।

FAQ

লোকাল LLM চালাতে কত RAM দরকার?

মডেল ফাইলের আকার + কনটেক্সট + আপনার ডেস্কটপের নিজের হিস্সা। Q4-এ 7–8B মডেলের জন্য 16 GB আরামদায়ক; 14–32B-কে ডেমো থেকে প্রতিদিনের টুলে বদলে দেওয়া জিনিসটা হলো 32 GB।

লোকাল LLM-এর জন্য VRAM না RAM—কোনটি বেশি গুরুত্বপূর্ণ?

সবকিছু VRAM-এ ধরে গেলে গতি ঠিক করে VRAM। মডেল আদৌ চলবে কি না আর কতটুকু কনটেক্সট বেঁচে থাকবে, তা ঠিক করে RAM। মাঝখানের PCIe অফলোড সেই ধীর অঞ্চল, যেটা কেউই পছন্দ করে না।

লোড হওয়ার পর মডেল ডাউনলোডের আকারের চেয়ে বেশি মেমরি নেয় কেন?

KV ক্যাশ ও কম্পিউট বাফার কনটেক্সটের দৈর্ঘ্যের সঙ্গে বাড়ে। llama.cpp-এর মেমরি নোটে হিসাবটা আছে: ওয়েট + KV ক্যাশ + কম্পিউট বাফার — আর ডাউনলোড পেজে প্রথম সংখ্যাটাই শুধু থাকে।

— mrsaynothing

— mrsaynothing

মতামত শিপ হওয়ার আগে লোড-টেস্ট হয়। বেশিরভাগ সময়।

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

পরের যুক্তি ইমেইলে পান

প্রতি পোস্টে একটি ইমেইল। সম্মত হোন বা খুঁত ধরুন।

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

এটা কী?

SSH Permission Denied (publickey): আসল সমাধান

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