ব্লগে ফিরুন

GGUF মডেল লোকালি চালান: Ollama, llama.cpp ও vLLM

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

.gguf ফাইল নামিয়ে ভাবছেন এবার চালাবেন যেভাবে? দ্রুততম পথ: ollama run hf.co/<repo>:Q4_K_M — Ollama সরাসরি Hugging Face থেকে GGUF টেনে নিয়ে সার্ভ করে। GGUF হলো এক-ফাইলের মডেল ফরম্যাট, যা llama.cpp এনেছিল আর আজ প্রতিটি local-LLM টুল বোঝে — তাই একই ফাইল চলে Ollama, llama.cpp, LM Studio, Jan-এ, আর (শর্তসাপেক্ষে) vLLM-এও। এই গাইডে প্রতিটি রানারের জন্য কপি-পেস্ট কমান্ড, নিজের VRAM অনুযায়ী সঠিক quant বাছাই, আর বাস্তবে যে লোড-error গুলোতে পড়বেন তা-ই আছে।

GGUF ফাইল আসলে কী?

GGUF (GGML Universal File) হলো quantised ভাষা মডেলের কন্টেইনার ফরম্যাট। এক ফাইলেই weights, tokenizer আর মডেলের মেটাডেটা — আর কিছু নামাতে হয় না, কনফিগ-সুপ নেই। ভেতরের weights quantised: 16-বিট ফ্লোট থেকে 4-বিট (বা তার নিচের) ইন্টিজারে চাপা — এজন্যই ফুল প্রিসিশনে ~18 GB চাওয়া 9B মডেল Q4 ফাইলে ~5.5 GB-তে নেমে আসে আর চলে গেমিং GPU-তে, এমনকি CPU-তেও।

GGUF ফাইলের নামে দুটো জিনিস দেখা হয়:

  1. বেস মডেলgemma-3-4b-it-GGUF মানে ফাইন-টিউন করা Gemma 3 4B, GGUF-এ এক্সপোর্ট করা।
  2. quant ট্যাগQ4_K_M, Q8_0, IQ4_XS ও সঙ্গীরা বলে দেয় weights কতটা জোরে চাপা পড়েছে। বাছাই নিচে।

Ollama কি GGUF মডেল চালাতে পারে?

হ্যাঁ — GGUF Ollama-র স্থানীয় ফরম্যাট, আর 2024 থেকে Hugging Face থেকে ফাইল ছুঁয়েও দেখা ছাড়াই টেনে নেওয়া যায়:

# Hugging Face থেকে সরাসরি GGUF quant পুল করে চ্যাট করুন
ollama run hf.co/bartowski/gemma-2-9b-it-GGUF:Q4_K_M

# কোলনের পরের quant ট্যাগ রিপোর ভেতরের ফাইলটা বেছে নেয়
ollama run hf.co/ggml-org/gemma-3-4b-it-GGUF:Q8_0

নিজেই .gguf ফাইল নামিয়ে রেখেছেন? Modelfile দিয়ে ফাইলটার দিকে ধরান:

# Modelfile — এক লাইনই যথেষ্ট
FROM ./gemma-2-9b-it-Q4_K_M.gguf
ollama create gemma9b -f Modelfile
ollama run gemma9b

Ollama GPU অফলোড নিজেই ঠিক করে আর পোর্ট 11434-এ OpenAI-কম্প্যাটিবল API দেয়, তাই ওই API বোঝা যেকোনো টুল মডেলটা ব্যবহার করতে পারে। লেনদেনের দাম নিয়ন্ত্রণ: কত লেয়ার GPU-তে যাবে, সেটা আপনি বাছবেন না।

llama.cpp-তে GGUF ফাইল কীভাবে চালাব?

GGUF-এর উৎসই llama.cpp — ফরম্যাটটা এর জন্যই বানানো — তাই সমর্থন সবচেয়ে গভীর ও টাটকা। llama-server বাইনারি চ্যাট UI আর OpenAI-কম্প্যাটিবল এন্ডপয়েন্ট দুটোই দেয়:

# Hugging Face থেকে সরাসরি নামায় (আপনার মেশিনের মেলা GGUF বেছে নেয়)
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080

# অথবা হাতে থাকা ফাইল চালান, সম্পূর্ণ GPU অফলোডে
llama-server -m ./gemma-2-9b-it-Q4_K_M.gguf -ngl 99 --port 8080

-ngl 99 মানে 99 লেয়ার GPU-তে; VRAM যত নেবে তার নিচে নামান, বাকি থাকবে CPU-তে। এই আংশিক-অফলোড ডায়ালটাই llama.cpp-র আসল শক্তি — 9B মডেল 6 GB কার্ডেও 48 লেয়ারের 20টা অফলোড করে ভালোভাবে চলে, শুধু ধীরে। সার্ভার নয়, এক-বারের প্রম্পট চাইলে একই -m ফ্ল্যাগসহ llama-server-এর জায়গায় llama-cli

LM Studio হলো সেই একই ইঞ্জিন, ডেস্কটপ GUI-র পর্দার আড়ালে: .gguf ফাইল তার models ফোল্ডারে ফেলে দিন (বা অ্যাপের ভেতরেই Hugging Face খোঁজুন), লোডে ক্লিক করুন। টুলিং-পছন্দটা নিজেই হলে Ollama vs LM Studio তুলনা দেখে নিন — মডেলের নিচে কোনটা বসবেন।

কোন GGUF quantisation নামাবেন?

ডিফল্ট উত্তর: Q4_K_M। এটাই কমিউনিটির সুইট স্পট — সাইজের প্রায় এক-চতুর্থাংশে ফুল-প্রিসিশন কোয়ালিটির এক-দুই শতাংশের মধ্যে। সিঁড়িটা, বড় থেকে ছোট:

  • Q8_0 — প্রায় লসলেস; VRAM প্রতি weight-এ 8.5 বিট টেনে নিয়েও না বুঝলে এটা নিন।
  • Q6_K / Q5_K_M — সাইজে এক ধাপ কম, 30B+ মডেলে তখনও চমৎকার।
  • Q4_K_M — ডিফল্ট। 7–14B মডেলে প্রতি-GB কোয়ালিটি এখানেই চূড়ায়।
  • IQ4_XS / Q3_K_M — বড় মডেলকে ছোট কার্ডে চাপার সময়; কোয়ালিটি হারাটা বোঝা যেতে শুরু করে।
  • Q2_K ও নিচে — শেষ ভরসা; মাঝপথেই মডেল আবগচ্ছা বলে যেতে শুরু করে।

আঁটানোর হাতে-গড়া নিয়ম: ফাইলের সাইজ GB-তে প্লাস ~1–2 GB context-ওভারহেড — এ পুরোটা VRAM-এ আঁটতে হবে। 9B মডেলের 4.7 GB Q4_K_M আট GB কার্ডে আরামে বসে। ভয়ংকর quant-এ বড় মডেলের চেয়ে ভালো quant-এ ছোট মডেল — Q8-এর 4B সাধারণত Q2-এর 9B-কে হারায়।

GGUF vs Safetensors: কোন ফরম্যাট লাগবে?

Safetensors হলো unquantised আর্কাইভ ফরম্যাট — ট্রেনিং, ফাইন-টিউনিং আর transformers, ComfyUI-র মতো টুলের জন্য ফুল-প্রিসিশন weights। GGUF হলো quantised, চালানোর উপযোগী ফরম্যাট — নিজের হার্ডওয়্যারে ইনফারেন্সের জন্য। GGUF ফাইন-টিউন করা যায় না, আর safetensors ফাইল আগে convert না করে Ollama বা llama.cpp-তে চালানো যায় না (llama.cpp-র convert_hf_to_gguf.py স্ক্রিপ্টটা এজন্যই)। নিয়ম: ট্রেনিং বা ইমেজ পাইপলাইন → safetensors; লোকাল চ্যাট ও সার্ভিং → GGUF। আপনার সার্চ “gguf vs safetensors” দিয়ে শুরু হয়ে থাকলে, এই ভাগটাই পুরো উত্তর।

কোন GGUF রানার ব্যবহার করবেন?

রানারসবচেয়ে ভালো যেখানেইনস্টলGPU অফলোডOpenAI-কম্প্যাটিবল API
Ollamaএকবার সাজিয়ে ভুলে থাকাcurl one-linerঅটোমেটিকআছে (:11434/v1)
llama.cppসর্বোচ্চ নিয়ন্ত্রণ, টাটকা ফিচারবিল্ড বা প্যাকেজ ম্যানেজারম্যানুয়াল -ngl ডায়ালআছে (llama-server)
LM Studioডেস্কটপ GUI, মডেল ঘোরাঘুরিঅ্যাপ ডাউনলোডঅটোমেটিকআছে (লোকাল সার্ভার)
vLLMব্যাচড মাল্টি-ইউজার সার্ভিংpip install vllmঅটোমেটিকআছে (স্থানীয়)

Ollama বাছুন যদি চান বুটে চালু হয়ে চোখের আড়ালেই চলে — আমার হোমল্যাব-এ নেটওয়ার্কের সবাইকে মডেল সার্ভ করে এটাই। llama.cpp বাছুন যখন ফিচারটা মুক্তির দিনেই লাগবে (নতুন আর্কিটেকচার ওখানেই আসে আগে) বা লেয়ার-লেভেল মেমরি নিয়ন্ত্রণ চান। GUI চাইলে LM Studio। vLLM কেবল তখন, যখন এক মডেলকে অনেক concurrent ব্যবহারকারীকে সার্ভ করতে হবে — এর GGUF সমর্থন চলে, কিন্তু স্থানীয় ফরম্যাটের পাশে দ্বিতীয় শ্রেণির।

GGUF মডেল লোডই হচ্ছে না কেন?

বেশিরভাগ কেস ঢেকে দেওয়া চারটা error:

  1. unknown model architecture — GGUF-টা এমন আর্কিটেকচারে বানানো, যা আপনার রানটাইমের পরে এসেছে (নতুন MoE আর ভিশন মডেল নিত্যই আসে)। Ollama আপডেট করুন বা llama.cpp নতুন করে বিল্ড করুন; অন্য কোনো সমাধান নেই।
  2. লোডের সময় out of memory — quant আপনার VRAM প্লাস context-এর জন্য বড়। এক ধাপ নামান (Q4_K_MQ3_K_M), -ngl কমান, বা -c 4096 দিয়ে context ছোট করুন।
  3. Download truncated / corrupt — GGUF লোড magic-number বা মেটাডেটা error দেয়। আবার নামান, Hugging Face পাতায় দেওয়া SHA256-এর সাথে মেলান।
  4. ollama run ./model.gguf অস্বীকার করে — স্বাভাবিক: Ollama-র run ফাইল-পাথ নয়, মডেল নাম নেয়। ওপরে দেখানো Modelfile পথটা ব্যবহার করুন।

শেষ একটা দিক: লোকাল GGUF এন্ডপয়েন্ট এজেন্টিক কোডিং টুলের সাথে দারুণ জোড়া — OpenAI-কম্প্যাটিবল ক্লায়েন্টকে এদিকে ধরান, কমপ্লিশনের দাম হয় কেবল বিদ্যুৎ। এই গাইডের প্লাম্বিং ঠিক হলে কোন মডেল সেই আসনের যোগ্য, তা পরীক্ষা করেছে কোডিংয়ের সেরা লোকাল LLM

— mrsaynothing

— mrsaynothing

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

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

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

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

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

এটা কী?

Git Sync Fork With Upstream: 3টি নিরাপদ পদ্ধতি

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