🌐 Detecting your location…

স্থানীয়ভাবে এলএলএম কীভাবে সূক্ষ্ম-টিউন করবেন

⏱️3 min read  ·  459 words

How to Fine-Tune LLMs Locally

একটি বড় ভাষা মডেল ফাইন-টিউনিং করার জন্য স্থানীয়ভাবে GPU-এর একটি র্যাক প্রয়োজন। 2026 সালে, কোয়ান্টাইজেশন এবং LoRA-এর মতো প্যারামিটার-দক্ষ পদ্ধতির জন্য ধন্যবাদ, আপনি 12-24GB VRAM সহ একটি একক ভোক্তা GPU-তে 7-8B প্যারামিটার মডেলকে ফাইন-টিউন করতে পারেন — এমনকি ইউনিফাইড মেমরি সহ Apple সিলিকনেও। এই গাইডটি সম্পূর্ণ পাইপলাইনের মধ্য দিয়ে চলে: ডেটা প্রস্তুত করা, LoRA ফাইন-টিউনিং চালানো এবং ফলাফলটিকে এমন একটি মডেলে একত্রিত করা যা আপনি আসলে চালাতে পারেন।

📋 Table of Contents

  1. সূচিপত্র
  2. কেন প্রম্পট করার পরিবর্তে ফাইন-টিউন
  3. হার্ডওয়্যার এবং সফ্টওয়্যার প্রয়োজনীয়তা
  4. একটি প্রশিক্ষণ ডেটাসেট প্রস্তুত করা হচ্ছে
  5. LoRA এর সাথে ফাইন-টিউনিং
  6. ট্রেনিং লুপ চালানো
  7. মডেল একত্রিত এবং রপ্তানি
  8. স্থানীয়ভাবে আপনার ফাইন-টিউনড মডেল চালানো হচ্ছে
  9. এছাড়াও প্রম্পট ফর্ম্যাটিং ধারাবাহিকতা দেখুন। যদি আপনার প্রশিক্ষণের ডেটা একটি নির্দিষ্ট নির্দেশনা টেমপ্লেট ব্যবহার করে, আপনার অনুমান কলগুলিকে অবশ্যই একই টেমপ্লেট ব্যবহার করতে হবে — অনুমানের সময়ে একটি অমিল বিন্যাস নিঃশব্দে আউটপুট গুণমানকে কোনো ত্রুটি নিক্ষেপ না করেই অবনমিত করে।
  10. সংকীর্ণ, সু-সংজ্ঞায়িত কাজের জন্য, 200-500 উচ্চ-মানের উদাহরণ প্রায়ই যথেষ্ট। বিস্তৃত আচরণ পরিবর্তন (টোন, মাল্টি-টাস্ক নির্দেশনা অনুসরণ) হাজার হাজার বিভিন্ন উদাহরণ থেকে উপকৃত হয়।
  11. ফাইন-টিউন করতে প্রস্তুত?

সূচিপত্র

কেন প্রম্পট করার পরিবর্তে ফাইন-টিউন

প্রম্পট ইঞ্জিনিয়ারিং এবং RAG বেশিরভাগ সমস্যার সমাধান করে — প্রথমে সেগুলি চেষ্টা করুন। ফাইন-টিউনিং বাড়তি প্রচেষ্টার মূল্য বিশেষভাবে যখন আপনার মডেলের প্রয়োজন হয় ধারাবাহিকভাবে একটি সংকীর্ণ আউটপুট বিন্যাস অনুসরণ করতে, হাজার হাজার প্রজন্ম জুড়ে একটি নির্দিষ্ট টোন গ্রহণ করতে, অথবা এমন একটি কাজ সম্পাদন করতে যা বেস মডেল অসঙ্গতভাবে পরিচালনা করে এমনকি ভাল প্রম্পট এবং উদাহরণ সহ। এটি প্রতিটি প্রম্পটে পুনরায় ব্যাখ্যা করার পরিবর্তে আচরণকে ওজনের মধ্যে ফেলে দেয়।

হার্ডওয়্যার এবং সফ্টওয়্যার প্রয়োজনীয়তা

4-বিট কোয়ান্টাইজেশন এবং LoRA সহ একটি 7-8B প্যারামিটার বেস মডেলের জন্য, একটি একক GPU-তে 12-16GB VRAM বাস্তবসম্মত। বড় 13-14B মডেলগুলি আপনাকে 24GB কার্ডের দিকে ঠেলে দেয়। মূল স্ট্যাক ইনস্টল করুন:

pip install torch transformers peft bitsandbytes accelerate datasets trl

peft(প্যারামিটার-দক্ষ ফাইন-টিউনিং) LoRA প্রয়োগ করে।bitsandbytes4-বিট কোয়ান্টাইজেশন পরিচালনা করে যাতে বেস মডেল মেমরিতে ফিট হয়।trlভাষা মডেল ফাইন-টিউনিংয়ের জন্য বিশেষভাবে নির্মিত একটি প্রশিক্ষণ লুপ প্রদান করে।

একটি প্রশিক্ষণ ডেটাসেট প্রস্তুত করা হচ্ছে

সংকীর্ণ কাজের জন্য ভলিউমের চেয়ে ফরম্যাট বেশি গুরুত্বপূর্ণ — 200-500টি উচ্চ-মানের উদাহরণ প্রায়ই 5,000 গোলমালকে ছাড়িয়ে যায়। JSONL হিসাবে একটি সাধারণ নির্দেশ বিন্যাস ব্যবহার করুন:

{"instruction": "Summarize this support ticket in one sentence.", "input": "Customer reports login failures since the 2.3 update...", "output": "User cannot log in after updating to version 2.3."}
{"instruction": "Summarize this support ticket in one sentence.", "input": "Payment declined for annual plan renewal...", "output": "Annual plan renewal payment was declined."}

সাথে এটি লোড করুনdatasetsলাইব্রেরি:

from datasets import load_dataset

dataset = load_dataset("json", data_files="train.jsonl", split="train")

def format_example(example):
    return {
        "text": f"### Instruction:\n{example['instruction']}\n\n### Input:\n{example['input']}\n\n### Response:\n{example['output']}"
    }

dataset = dataset.map(format_example)

LoRA এর সাথে ফাইন-টিউনিং

LoRA বেস মডেলের ওজন হিমায়িত করে এবং এর পরিবর্তে মনোযোগ স্তরগুলিতে ইনজেকশন করা ছোট নিম্ন-র্যাঙ্ক অ্যাডাপ্টার ম্যাট্রিক্সকে প্রশিক্ষণ দেয়। এটি প্রশিক্ষনযোগ্য প্যারামিটারগুলিকে বিলিয়ন থেকে মিলিয়নে কমিয়ে দেয়, যে কারণে এটি ভোক্তা হার্ডওয়্যারে ফিট করে:

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
import torch

model_name = "meta-llama/Meta-Llama-3-8B"

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=bnb_config, device_map="auto")

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

এই শেষ লাইনটি সাধারণত “প্রশিক্ষণযোগ্য প্যারামস: মোটের 0.06%” এর মতো কিছু প্রিন্ট করে — কেন এটি একটি একক GPU-তে ফিট করে যেখানে সম্পূর্ণ ফাইন-টিউনিং হবে না তার একটি নির্দিষ্ট অনুস্মারক।

ট্রেনিং লুপ চালানো

trlএরSFTTrainerআলিঙ্গন মুখের মোড়ানোTrainerনির্দেশনা টিউনিংয়ের জন্য সংবেদনশীল ডিফল্ট সহ:

from trl import SFTTrainer, SFTConfig

training_args = SFTConfig(
    output_dir="./lora-output",
    per_device_train_batch_size=2,
    gradient_accumulation_steps=4,
    num_train_epochs=3,
    learning_rate=2e-4,
    logging_steps=10,
    save_strategy="epoch",
    bf16=True,
)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=training_args,
    dataset_text_field="text",
)

trainer.train()

গ্রেডিয়েন্ট সঞ্চয়ন আপনাকে ওজন আপডেট করার আগে বেশ কয়েকটি ছোট ব্যাচের উপর গ্রেডিয়েন্ট জমা করে আপনার VRAM এর চেয়ে বড় ব্যাচের আকার অনুকরণ করতে দেয় — সেটper_device_train_batch_sizeমেমরি যতটা সম্ভব, তারপর বাড়ানgradient_accumulation_stepsএকটি কার্যকর ব্যাচ আকার 8-16 পৌঁছানোর জন্য.

মডেল একত্রিত এবং রপ্তানি

প্রশিক্ষণের পরে, LoRA অ্যাডাপ্টারের ওজনগুলিকে বেস মডেলে মার্জ করুন একটি স্বতন্ত্র চেকপয়েন্টের জন্য যা আপনি বিতরণ বা রূপান্তর করতে পারেন:

from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
merged_model = PeftModel.from_pretrained(base_model, "./lora-output/checkpoint-final")
merged_model = merged_model.merge_and_unload()

merged_model.save_pretrained("./merged-model")
tokenizer.save_pretrained("./merged-model")

স্থানীয়ভাবে আপনার ফাইন-টিউনড মডেল চালানো হচ্ছে

|||| এর সাথে দ্রুত স্থানীয় অনুমানের জন্য মার্জ করা মডেলটিকে GGUF ফর্ম্যাটে রূপান্তর করুন৷ বা ওল্লামা:llama.cpp📋 কপি

python convert_hf_to_gguf.py ./merged-model --outfile my-model.gguf --outtype q4_k_m

ollama create my-model -f Modelfile
ollama run my-model

কমন পিটফলসq4_k_mছোট ডেটাসেটগুলিতে ওভারফিটিং হল সবচেয়ে সাধারণ ব্যর্থতা — যদি আপনার ক্ষতি একটি যুগের মধ্যে শূন্যের কাছাকাছি চলে যায়, তাহলে আপনি সম্ভবত সাধারণীকরণের পরিবর্তে মুখস্থ করছেন এবং বৈধতা ক্ষতিকে প্রশিক্ষণের ক্ষতি থেকে আলাদাভাবে দেখা উচিত। শেখার হার হল দ্বিতীয় সর্বাধিক সাধারণ সমস্যা: 2e-4 বেশিরভাগ 7-8B LoRA সেটআপের জন্য কাজ করে, কিন্তু ছোট ডেটাসেটে বেশি যাওয়া প্রশিক্ষণকে দ্রুত অস্থির করে তোলে।

এছাড়াও প্রম্পট ফর্ম্যাটিং ধারাবাহিকতা দেখুন। যদি আপনার প্রশিক্ষণের ডেটা একটি নির্দিষ্ট নির্দেশনা টেমপ্লেট ব্যবহার করে, আপনার অনুমান কলগুলিকে অবশ্যই একই টেমপ্লেট ব্যবহার করতে হবে — অনুমানের সময়ে একটি অমিল বিন্যাস নিঃশব্দে আউটপুট গুণমানকে কোনো ত্রুটি নিক্ষেপ না করেই অবনমিত করে।

দক্ষতার সাথে চলমান মডেলগুলি সম্পর্কে আরও জানতে একবার সূক্ষ্ম-টিউন করা হলে, আমাদের

হোম ল্যাব এবং DevOps গাইড

স্ব-হোস্টিং পরিকাঠামো কভার করে, এবং আপনি যদি আপনার মডেলের চারপাশে একটি API তৈরি করেন, আমাদের দেখুনFastAPI REST টিউটোরিয়াল.FAQআমার আসলে কত ডেটা দরকার?

সংকীর্ণ, সু-সংজ্ঞায়িত কাজের জন্য, 200-500 উচ্চ-মানের উদাহরণ প্রায়ই যথেষ্ট। বিস্তৃত আচরণ পরিবর্তন (টোন, মাল্টি-টাস্ক নির্দেশনা অনুসরণ) হাজার হাজার বিভিন্ন উদাহরণ থেকে উপকৃত হয়।

আমি কি একটি ম্যাকবুকে ফাইন-টিউন করতে পারি?
For narrow, well-defined tasks, 200-500 high-quality examples is often enough. Broader behavior changes (tone, multi-task instruction following) benefit from thousands of diverse examples.

Can I fine-tune on a MacBook?
হ্যাঁ, Apple সিলিকনে MLX বা llama.cpp-এর প্রশিক্ষণ সমর্থন ব্যবহার করে৷ ইউনিফাইড মেমরি মানে একটি 32-64GB ম্যাকবুক 7-8B LoRA ফাইন-টিউনিং পরিচালনা করতে পারে, যদিও একটি ডেডিকেটেড NVIDIA GPU এর চেয়ে ধীর।

LoRA এবং QLoRA এর মধ্যে পার্থক্য কি?
QLoRA LoRA-এর উপরে হিমায়িত বেস মডেলের 4-বিট কোয়ান্টাইজেশন যোগ করে, ন্যূনতম মানের ক্ষতির সাথে মেমরির প্রয়োজনীয়তা আরও কমিয়ে দেয় — এটিই 8B মডেলকে 12-16GB GPU-তে প্রশিক্ষণযোগ্য করে তোলে।

আমার কি ফাইন-টিউন করা দরকার, নাকি আরএজি কাজ করবে?
যদি সমস্যা হয় “মডেলটি এই তথ্যটি জানে না”, তাহলে RAG ব্যবহার করুন। যদি সমস্যা হয় “মডেলটি তথ্য জানে কিন্তু আমার প্রয়োজন অনুসারে ফর্ম্যাট বা আচরণ করবে না,” ফাইন-টিউনিং হল আরও ভাল টুল।

LoRA ফাইন-টিউনিং কতক্ষণ সময় নেয়?
একটি একক ভোক্তা GPU-তে 500টি উদাহরণ এবং 3টি যুগের জন্য, অনুক্রমের দৈর্ঘ্য এবং GPU ক্লাসের উপর নির্ভর করে 20 মিনিট থেকে কয়েক ঘণ্টার মধ্যে যে কোনো জায়গায় আশা করুন।

ফাইন-টিউন করতে প্রস্তুত?

স্কেল আপ করার আগে একটি একক সংকীর্ণ কাজের জন্য 200-300 উদাহরণের একটি ছোট, পরিষ্কার ডেটাসেট দিয়ে শুরু করুন। উপরের পাইপলাইন — LoRA অ্যাডাপ্টার, SFTTrainer, মার্জ, GGUF রপ্তানি — একই আকৃতি যা প্রোডাকশন ফাইন-টিউনের জন্য ব্যবহৃত হয়, ঠিক এমন একটি স্কেলে যা আপনার সম্ভবত ইতিমধ্যেই মালিকানাধীন হার্ডওয়্যারে ফিট করে।

টিপি
TechPulse টিম
1 আগস্ট, 2026 প্রকাশিত হয়েছে


MD Rafikul Islam

Written by

MD Rafikul Islam is a software developer and the editor of TechPulse. He writes about developer tooling, hardware, and the practical decisions that come up in day-to-day engineering work — which laptop to buy, which framework to commit to, why a build broke at 2am. He tests the tools he writes about and says plainly when something is not worth the money. Corrections and corrections requests are welcome at rony.yf25@gmail.com.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা